Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

camilost - zdjęcie

camilost

Rejestracja: 08.01.2009
Aktualnie: Nieaktywny
Poza forum Ostatnio: 12.09.2017 15:03
-----

#116768 Sprawdzanie liczby klamer w funkcjach

Napisane przez mgr inż. Pavulon w 06.03.2010 14:50

Bracket Counter by Pavulon 4 amxx.pl

Jest to mały programik napisany w Delphi 7 mający na celu sprawdzenie czy dana funkcja (public lub stock) posiada taką samą liczbę klamer otwierających "{" co zamykających "}". W przypadku gdy liczby te są różne wyświetla stosowną informację w której funkcji klamry się nie zgadzają.

Dołączona grafika


Znane błędy:
Program nie radzi sobie z dyrektywami preprocesora #if constant expression, #elseif, #else, #endif
Ma problemy jeżeli dyrektywy zaczynają się poza funkcjami

Załączone pliki


  • +
  • -
  • 29


#725696 MENU - Wyswietlanie nazwy broni. for, parse czy jak?

Napisane przez Master Yoga w 03.05.2016 11:12


for(new a; a < sizeof(AllWeapon); i++)

Spójrz na tą linię. Już wiesz czemu ci Crash'owało ?


  • +
  • -
  • 1


#725632 MENU - Wyswietlanie nazwy broni. for, parse czy jak?

Napisane przez Master Yoga w 02.05.2016 08:47

No tutaj masz po prostu operację na stringach.
Przy zapisie dajesz pętlę + konkatenacje.
Przy odczycie użyj jakiejś funkcji rozdzielającej string na 2 części przy pierwszym występowaniu danego znaku ( z tego co pamiętam to w Pawnie powinna być taka funkcja jak strtok <-- sprawdź w dokumentacji ).
Ustalmy że pierwsza część będzie nazywała sie A a druga B. Część A a zamieniasz na zmienn typu int ( tutaj pomoże ci funkcji str_to_num ). A zapomniałem wczesniej dodać byś stworzył sobie jakąś zmienną pomocniczą. Część B przypisz bądź skopiuj do tablicy pomocniczej. Oczywiście wszystko ma się odbywać w pętli.

New szLine[100];

New pomocnicza = szLine;

For( New i = 0; i < zakres; i++)
{
Nie pamiętam argumentów funkcji, więc zademonstruje ci tylko jej działanie, na skaldnie nie zwracaj uwagi :)


New szA[50],szB[100]
Strtok(pomocnicza,szA,49,szB,49,'#')

UsingWeapon[ID][i] = str_to_num(szA)

Copy(pomocnicza, charsmax(szB),szB) lub pomocnicza = szB przy czym pawn nie pozwoli ci przypisać wartości tych zmiennych gdy wielkość obu zmiennych będzie się różnić.
}

Do roboty :)
  • +
  • -
  • 1


#725612 MENU - Wyswietlanie nazwy broni. for, parse czy jak?

Napisane przez Master Yoga w 01.05.2016 17:56

Raz używasz SelectedWeapon jako zmienna typu integer a kolejny już jako string.
  • +
  • -
  • 1


#725607 MENU - Wyswietlanie nazwy broni. for, parse czy jak?

Napisane przez Master Yoga w 01.05.2016 16:14

Jakieś propozycje?

Dynamiczne tablice
  • +
  • -
  • 1


#725610 MENU - Wyswietlanie nazwy broni. for, parse czy jak?

Napisane przez Master Yoga w 01.05.2016 17:40

Amxx oferuje ci funkcję zwracająca wielkość tablicy dynamicznej, dzięki czemu łatwo możesz określić ilość powtórzeń.
Pobierz sobie cała linię z pliku.
Funkcja parse umożliwia ci pobranie arg z tekstu, czyli jeśli zrobisz to tak:
Parse(szLine, szID,2,szName, 29)
Otrzymasz
szID = "28"
szName "Outlaw"

Nazwę modelu dodajesz do tablicy.

A co do zastosowania pętli.
Użyj funkcji o której wspomniałem wczesniej.
Zmienna licznikowa pozwoli ci odnieść sie do kolejnych elementów tablicy.
Pobraną wartość dodajesz do menu i gotowe :)
  • +
  • -
  • 1


#723666 [ROZWIĄZANE] HAMSANDWICH - Ham_Spawn nie wykonuje funkcji

Napisane przez grankee w 28.03.2016 14:49

daj do wglądu

meta plugins albo meta list  //juz nie pamietam ktora dziala

amx_plugins (status tego pluginu, który nie dziala)


  • +
  • -
  • 1


#723745 [ROZWIĄZANE] HAMSANDWICH - Ham_Spawn nie wykonuje funkcji

Napisane przez grankee w 29.03.2016 03:40

client_print( id , print_chat , "Spawned %d" , id );

zamień na

client_print( 0 , print_chat , "Spawned %d" , id );

rozumiem, że wszystko inne na czacie widzisz?

 

 

Ta zamiana jest celem sprawdzenia, czy błąd nie leży po stronie czatu a nie hama.

dodaj tez oprocz chatu log_amx

 

 

Nie wiem czy to możliwe, ale moze ktorys z pluginów wyzej na liscie handluje spawn przez co blokuje docieranie informacji do Twojego pluginu, ale spawn i tak następuje, bo nie da się go zatrzymać.

 

Umieść ten plugin na samej górze w plugin.ini i zobacz czy dalej będzie to samo.


  • +
  • -
  • 1


#723752 [ROZWIĄZANE] HAMSANDWICH - Ham_Spawn nie wykonuje funkcji

Napisane przez Puchate w 29.03.2016 08:55

Zaktualizuj moduł hamsandwitcha i jego plik konfiguracyjny do wersji pasującej do Twojego engine hlds.


  • +
  • -
  • 1


#722957 float przycięcie do 2 miejsc po przecinku

Napisane przez grankee w 18.03.2016 03:34

camilost powiem Ci cos waznego, jesli chodzi o programowanie. Jestem  jednym z ludzi, którzy napsuli sobie hektolitry krwi, żeby się czegoś nauczyć i spędziłem wieki na googlach i trułem d*pę wielu osobom, żeby mi pomogli. Jesterm akurat z tych, co wolą pytać niż używać pseudoporadników, z których w większości przypadków mało wynika.

Mój 'problem' (czyli to co napsuło mi nerwów) z nauką polega na tym, że nie potrafię zaakceptować pojęcia "bo tak już jest i zapamiętaj", ja muszę zrozumieć. Dążenie do zrozumienia w matematyce, informatyce, fizyce i ogólnie naukach ścisłych to klucz do sukcesu. Jednak nie o mnie ten topic więc przejdę do sedna.

 

1.Jeśli czegoś nie wiesz to pytaj, od tego jest to forum. -to akurat zrobiłeś.

2.jeśli nie rozumiesz odpowiedzi, albo nie rozumiesz czemu tak a nie inaczej to pytaj dalej.

3.powtarzaj punkt 2 aż do rozwiązania problemu.

 

Nie denerwuj się tylko dlatego, że udzielona odpowiedź jest niezrozumiała dla Ciebie. Osoba odpowiadająca na Twój problem nie wie na ile Twoja wiedza pozwala Ci zrozumieć temat, dlatego ważne jest powtarzanie punktu 2.


PS. Przetestuj powyższe funkcję i wtedy sobie jeździj po innych...

 

Nie dostrzegam 'jeżdżenia' po Tobie.


...bo niczym nie pomogłeś.


0.50 to (teoretycznie, bo w praktyce nie) 0.5000000000 więc po co chcesz to zaokrąglać do porównywania?
Jeżeli masz błędy związane z porównywaniem liczb to dotknął Cię problem przechowywania liczb zmiennoprzecinkowych.

Myślę, że te informacje były bardzo pomocne, a przez Ciebie zignorowane. Seba to akurat gość, który wie co mówi i siedzi w tym nie od wczoraj. Wiele razy mi pomagał parę lat temu. Zrelaksuj się, weź kilka wdechów i podejdź do tematu ze świadomością, że go nie rozumiesz, ale bardzo chcesz zrozumieć. Pozdrawiam.

 

 

PS. żeby nie było, że offtopa robię.

 

Jeśli chcesz do dwóch miejsc po przecinku to pomnóż sobie przez 100 te liczby i zaokrąglij ucinając w ogóle to co jest po przecinku i na takich całkowitych liczbach operuj. Potem do wyświetlania używaj ich jako floatów (podziel te liczby na 100 i wyswietl z zaokrągleniem do dwóch miejsc używając %.2f. Więcej o tym też już ktoś ogarnięty napisał http://amxx.pl/topic...aty-i-ich-wady/


  • +
  • -
  • 1


#722776 float przycięcie do 2 miejsc po przecinku

Napisane przez Asiap w 14.03.2016 06:07

/**
 * Zwraca liczbe float do X miejsc po przecinku.
 *
 * @param fValue      Liczba float
 * @param iDecimals   Liczba miejsc po przecinku
 */
stock FloatDecimals(Float:fValue, iDecimals = 2)
{
	if(!fValue)
	{
		return 0.0;
	}

	new Float:fPower = float(power(10, iDecimals));
	return floatround(fValue * fPower / fPower);
}

lub

/**
 * Zwraca liczbe float do X miejsc po przecinku.
 *
 * @param fValue      Liczba float
 * @param iDecimals   Liczba miejsc po przecinku
 */
stock FloatDecimals(Float:fValue, iDecimals = 2)
{
	if(!fValue)
	{
		return 0.0;
	}

	new Float:fPower = float(power(10, iDecimals));
	return float(floatround(fValue * fPower, floatround_floor)) / fPower;
}

  • +
  • -
  • 1


#722891 float przycięcie do 2 miejsc po przecinku

Napisane przez grankee w 16.03.2016 03:36

Myślę, że musisz dodatkowo opleść we floata

new Float:KillDeaths[33] //globalna
KillDeaths[i] = float(floatdiv(float(stats[0]), float(stats[1])))
KillDeaths[i] = float(FloatDecimals(KillDeaths[i], 2))

ponieważ w momencie przypisania do zmiennej killdeaths nie jest wiadomo, że typ będzie zmiennoprzecinkowy.

 

Teraz możesz spokojnie dać

return 0;

bo i tak masz oplecione we floata to co zwrócisz więc będzie śmigało.


  • +
  • -
  • 1


#722928 float przycięcie do 2 miejsc po przecinku

Napisane przez Puchate w 17.03.2016 11:47


 

 

Ewentualnie, aby po 2 przecinkach były zera. tj. 1.34(0) takie coś, a nie 1.00 jak mam 1.34516112131 (jak działają pow. funkcje).

Tego się nie da zrobić. To jest ten problem z przechowywaniem liczb zmiennoprzecinkowych o którym pisałem wyżej.

Te funkcje niczego nie zaokrąglają, bo nie da się trzymać zaokrąglonych liczb w pamięci. Można je zaokrąglić przy wyświetleniu.

 

1.50 to nic innego jak 1.5000000, lecz przy przechowywaniu ta liczba się "psuje" i zmienia swoją wartość.

Pomnóż te liczby i pozbądź się floatów na rzecz intów przy porównywaniu. Wartości typu float są wartościami przybliżonymi i nie powinno się ich porównywać gdy liczy się precyzja. Float to tylko 4 bajty, a nie mamy dostępu do double.

 

Nikt tutaj się nie spina tylko Ty wciąż nie rozumiesz sposobu zapisywania liczb zmiennoprzecinkowych w pamięci komputera. To nie jest takie łatwe. Podstawy działania komputera się kłaniają. Zamiast się oburzać to wpisz sobie w google np. "zmienna float dokładność" i poczytaj o tym. Przykładowa strona z informacjami.


  • +
  • -
  • 1


#246432 Przepowiednia Rozbrajania Bomby

Napisane przez MrBotals w 06.05.2011 15:37

Zdąrzysz?


Popraw błąd w pluginie, bo poprawnie się pisze Zdążysz
  • +
  • -
  • 2


#235789 IdSMTP (Already Connected) Jaki warunek

Napisane przez SpiewaK w 12.04.2011 09:59

1000 to zapewne 1000ms = 1s
Tak jest w Visual Basic bynajmniej
  • +
  • -
  • 1