OnPlayerUpdate
Deskripcija
Ovaj callback je pozvan svaki put kada klijent/igrač ažurira server sa svojim statusom. Često se koristi za kreiranje custom callbackova za ažuriranja klijenta koje server ne prati, kao npr. health ili armor ažuriranja ili odabir oružja igrača.
| Ime | Deskripcija |
|---|---|
| playerid | ID igrača koji šalje paket ažuriranja. |
Returns
0 - Ažuriranje od ovog igrača neće biti replicirano drugim klijentima.
1 - Označava da će ovo ažuriranje biti obrađeno normalno i poslano ostalim igračima.
Uvijek je pozvan prvo u filterskripti.
Primjeri
public OnPlayerUpdate(playerid)
{
new iCurWeap = GetPlayerWeapon(playerid); // return-uje igračevo trenutno oružje
if (iCurWeap != GetPVarInt(playerid, "iCurrentWeapon")) // ako je promijenio oružje nakon posljednjeg ažuriranja
{
// pozovimo callback OnPlayerChangeWeapon
OnPlayerChangeWeapon(playerid, GetPVarInt(playerid, "iCurrentWeapon"), iCurWeap);
SetPVarInt(playerid, "iCurrentWeapon", iCurWeap);//Ažuriraj trenutni weapon
}
return 1; // pošalji ažuriranje drugim igračima
}
stock OnPlayerChangeWeapon(playerid, oldweapon, newweapon)
{
new s[128],
oWeapon[24],
nWeapon[24];
GetWeaponName(oldweapon, oWeapon, sizeof(oWeapon));
GetWeaponName(newweapon, nWeapon, sizeof(nWeapon));
format(s, sizeof(s), "promijenio si oružje sa %s u %s!", oWeapon, nWeapon);
SendClientMessage(playerid, 0xFFFFFFFF, s);
}
public OnPlayerUpdate(playerid)
{
new Float:fHealth;
GetPlayerHealth(playerid, fHealth);
if (fHealth != GetPVarFloat(playerid, "faPlayerHealth"))
{
// Zdravlje igrača se promijenilo od zadnjeg ažuriranja -> servera, pa je očito da je to stvar ažurirano.
// Dalje provjeravamo je li izgubio ili stekao zdravlje, anti-health cheat? ;)
if (fHealth > GetPVarFloat(playerid, "faPlayerHealth"))
{
/* Dobio je healthe! Cheating? Ovdje napišite svoje skripte da biste shvatili kako je igrač stekao zdravlje! */
}
else
{
/* izgubio health! */
}
SetPVarFloat(playerid, "faPlayerHealth", fHealth);
}
}
Zabilješke
Ovaj callback pozvat će i NPC.
Ovaj callback je pozvan, otprilike, 30 puta po sekundi, po igraču; koristite ga samo kada znate za šta znači (ili mnogo bitnije, za šta NE znači).Učestalost pozivanja ovog povratnog poziva za svakog igrača varira, ovisno o tome što igrač radi. Vožnja ili pucanje izazvat će puno više ažuriranja nego u praznom hodu.