Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: [IF] mariomako poslato Jun 09, 2011, 16:36:16 POSLE PODNE

Naslov: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: [IF] mariomako poslato Jun 09, 2011, 16:36:16 POSLE PODNE
Detaljan opis problema: Na neki komanda sam vidio da koristu if(IsPlayerConnected(playerid))
posle ono if(strcmd,"/komanda", zasto je potrebno da on proveri dali je igrac konektujen, pa ako nije kako bi mogao da napise komandu.
Dio skripte:/
Slike:/
Naslov: Odg: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: System32 poslato Jun 09, 2011, 16:41:42 POSLE PODNE
to je zato sto su pokupili iz GF moda, to ti uopce ne treba :D Samo usporava
Naslov: Odg: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: Slay poslato Jun 09, 2011, 16:51:50 POSLE PODNE
Kao prvo. NEMOJ koristiti IsPlayerConnected jer je obično [cenzura] samo usporava server. Koristi INVALID_PLAYER_ID !

Druga stvar, ne trebaÅ¡ koristiti to na komandama pogotovo ako koristiÅ¡ ZCMD, YCMD ili neki poznati procesor komandi. Razlog zaÅ¡to je to u GF modu je taj Å¡to je GF mod skriptan na 0.2X verziji i nije uopće update-an na  0.3 eto jedan primjer tipične greÅ¡ke u GF modu ili njegovom editu.

U GF-u je blank id = 255 a to u 0.3 NIJE

Blank ID u 0.3 verziji je: 0xFFFF  odnosno 65535
INVALID_PLAYER_ID je predviÄ'en za 0.3 ono Å¡to želim reći je da koristite INVALID_PLAYER_ID i klonit se GF moda i njemu sličnih ;)
Naslov: Odg: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: Dude poslato Jun 09, 2011, 19:27:48 POSLE PODNE
test 1:
INVALID_PLAYER_ID 22325
IsPlayerConnected 23391

test2:
IsPlayerConnected 23590
INVALID_PLAYER_ID 22560



nije IsPlayerConnected nikakva usrana funkcija, ali razlika u brzini je postoji, gore su test rezultati, na 1000000 x 500 iteracija razlika je oko 1 sekunde, sto cak i nije neka velika razlika no postoji... nece u obicnoj upotrebi biti nikakve razlike sta se od to dvoje koristi...

evo ti pastebin testa:
http://pastebin.com/W8EENFLb


al, to nije on niti pitao, nego zasto uopce da koristi tu funkciju... uglavnom potrebno je ponekad provjerit jel konektiran igrac, osobito ako napravis komandu koja treba da nesta da/uradi s drugim igracem, onda je dobro provjerit jel konektiran taj drugi...
Naslov: Odg: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: System32 poslato Jun 09, 2011, 19:30:16 POSLE PODNE
vecinom se to koristi u loopovima to je ono for(new itd. ali zato preporucam foreach :D
Naslov: Odg: [Objasnenje] Zasto koristu if(IsPlayerConnected(playerid))
Poruka od: Slay poslato Jun 09, 2011, 20:23:31 POSLE PODNE
Citat: Dude poslato Jun 09, 2011, 19:27:48 POSLE PODNE
nije IsPlayerConnected nikakva usrana funkcija

Krivo sam se izrazio odnosno malo sam preuveličao. Sve jedno moj savjet i dalje stoji što se tiče INVALID_PLAYER_ID - a
A šta se ti tiče testa, već sam napravio test brzine na to. Samo sam malo preuveličao