Skocz do zawartości
Jaev

Dodanie na nick

Rekomendowane odpowiedzi

Witam mam zapis do frakcji w dini, potrzebuję teraz tylko komendę na dodanie, zrobiłem coś takiego

CMD:dodaj_policjanta(playerid, params[])
	{
	    new Gracz [64];
	    new PlayerName[MAX_PLAYER_NAME];
	    GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
	    format(Gracz,sizeof(Gracz), KONTA ,PlayerName);
	    if(strcmp(PlayerName, "Nick_Szefa", true) == 0)
	    {
	        if(isnull(params) || strlen(params) > MAX_PLAYER_NAME) 
	        return SendClientMessage(playerid, -1, "/dodaj_policjanta [nick]"); 
	        dini_IntSet(Gracz,"Policja", 1);
	    }
	    return 1;
	}

 

Ale oczywiście jestem idiotą i nie działa, pomocy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety nie udzielę ci pomocy przy rozwiązaniu twojego problemu, ale jeżeli chcesz brać się za pawn na poważnie i chcesz zostać dobrym programistą, to dam ci kilka rad:

- nie używaj żadnego systemu plików, używaj sam include file.inc 

- nie używaj żadnego systemu komend bo po co, wiadomo że każdy system komend używa callbacku OnPlayerCommandText (bądź OnPlayerCommand nie pamiętam), jeżeli zrobisz komendę w tym callbacku samodzielnie to kod wykona się szybciej niż za pośrednictwem systemu komend.

new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));

Po co pobierasz nazwę gracza w komendzie? Nazwę gracza pobierz tylko raz w callbacku OnPlayerConnect i przypisz ją do tablicy, następnie używaj jej w komendach.

- no a jak już tak bardzo chcesz używać systemu plików, to lepiej nie używaj dini tylko coś lepszego :D

Nudziło mi się trochę i mam nadzieję że kiedyś dobrze wspomnisz ten post :)

Ps. napisałbym jeszcze żebyś nie uczył się pawn, bo pawn nigdy ci drogi do przyszłości nie otworzy, lecz kiedy ogarniesz pawn, łatwo będą ci przychodzić inne języki ;)

Edytowane przez VEEX

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
23 minut temu, VEEX napisał:

Niestety nie udzielę ci pomocy przy rozwiązaniu twojego problemu

- nie używaj żadnego systemu komend bo po co

- no a jak już tak bardzo chcesz używać systemu komend, to lepiej nie używaj dini tylko coś lepszego :D

 

jak nie chcesz udzielić pomocy to po co się udzielasz?

a co do systemu komend możesz szybciej napisać komendę może szybciej wykonać,

- no a jak już tak bardzo chcesz używać systemu komend, to lepiej nie używaj dini tylko coś lepszego - dini to nie tzn system komend tylko zapis do pliku i odczyt.

za drogim razem zastanów się co piszesz.

@down

Udzielam się bo jest to forum, a forum jest od tego. - tak do udzielania, ale to dział pomocy jak nie chcesz pomóc to w tym dziale nie pisz proste?

Edytowane przez trevor3

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Udzielam się bo jest to forum, a forum jest od tego.

@edit poprawione.

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
4 godziny temu, VEEX napisał:

Niestety nie udzielę ci pomocy przy rozwiązaniu twojego problemu, ale jeżeli chcesz brać się za pawn na poważnie i chcesz zostać dobrym programistą, to dam ci kilka rad:

- nie używaj żadnego systemu plików, używaj sam include file.inc 

- nie używaj żadnego systemu komend bo po co, wiadomo że każdy system komend używa callbacku OnPlayerCommandText (bądź OnPlayerCommand nie pamiętam), jeżeli zrobisz komendę w tym callbacku samodzielnie to kod wykona się szybciej niż za pośrednictwem systemu komend.


new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));

Po co pobierasz nazwę gracza w komendzie? Nazwę gracza pobierz tylko raz w callbacku OnPlayerConnect i przypisz ją do tablicy, następnie używaj jej w komendach.

- no a jak już tak bardzo chcesz używać systemu plików, to lepiej nie używaj dini tylko coś lepszego :D

Nudziło mi się trochę i mam nadzieję że kiedyś dobrze wspomnisz ten post :)

Ps. napisałbym jeszcze żebyś nie uczył się pawn, bo pawn nigdy ci drogi do przyszłości nie otworzy, lecz kiedy ogarniesz pawn, łatwo będą ci przychodzić inne języki ;)

Wywoływanie strcmp "zdalnie" (funkcja strcmp w pawn wywołuje odpowiedni native który dopiero wywołuje realny odpowiednik strcmp i zwraca jego wartość) za każdym razem gdy ktoś wpisze komendę, i prawdopodobnie wywoływanie tego po kilkaset razy gdy ktoś nie używa if else tylko samo if jest dużo gorsze niż tak jak robi to ZCMD przekazanie komendy jako nazwy funkcji publicznej którą serwer sobie znajdzie i wywoła sam.

/* Test Results
 
[20:25:01] ZCMD took 3 ms to execute 10000 commands
[20:25:01] STRCMP took 76 ms to execute 10000 commands
 
[20:25:04] ZCMD took 3 ms to execute 10000 commands
[20:25:04] STRCMP took 76 ms to execute 10000 commands
 
[20:25:04] ZCMD took 3 ms to execute 10000 commands
[20:25:04] STRCMP took 76 ms to execute 10000 commands
 
[20:25:08] ZCMD took 4 ms to execute 10000 commands
[20:25:08] STRCMP took 67 ms to execute 10000 commands
 
*/

(nie moje "benchmarki")

Nie wspominając już o wygodzie jaką daję ZCMD, gdzie można tworzyć komendy gdziekolwiek się chce i w bardzo prosty sposób.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×