Problem(error/warning): Iz nekog rezlog, detektuje airbreak kada sam na nogama, normalno hodam/trcim a cheat nije upaljen. Detektiranje je ugaseno u (OnPlayerSpawn, OnPlayerEnter/ExitVehicle, OnPlayerStateChange) kako nebi došlo do false positive.
Dio skripte:
Recite mi, gdje je problem i dali je detekcija dobra i postoji li joÅ¡ koj naÄin. Hvala
forward OnPlayerUpdateEx();
public OnPlayerUpdateEx()
{
for (new playerid, g = GetPlayerPoolSize(); playerid <= g; playerid++)
{
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID && !IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSpecialAction(playerid) != 2 && GetPlayerState(playerid) != PLAYER_STATE_SPAWNED)
{
if(!GetPVarInt(playerid, "NoAB"))
{
switch(GetPlayerAnimationIndex(playerid))
{
case 958, 959, 961, 962, 965, 971, 1126, 1130, 1132, 1134, 1156, 1208:
{
SetPVarInt(playerid, "NoAB", 1);
continue;
}
}
if
(
(floatabs(pos[0] - GetPVarFloat(playerid, "OldPosX"))) > DYS || (floatabs(GetPVarFloat(playerid, "OldPosX") - pos[0])) > DYS ||
(floatabs(pos[1] - GetPVarFloat(playerid, "OldPosY"))) > DYS || (floatabs(GetPVarFloat(playerid, "OldPosY") - pos[1])) > DYS ||
(floatabs(pos[2] - GetPVarFloat(playerid, "OldPosZ"))) > DYS/2 || (floatabs(GetPVarFloat(playerid, "OldPosZ") - pos[2])) > DYS/2
)
switch(PENALTY)
{
case 0: BanEx(playerid, "Airbreak");
case 1: Kick(playerid);
case 2:
{
new str[90];
format(str, sizeof str, "* Postoji mogucnost da %s (ID: %d) koristi airbreak/fly hack, GetName(playerid), playerid);
SendMessageToAdmins(str);
}
}
}
SetPVarInt(playerid, "NoAB", 0);
}
SetPVarFloat(playerid, "OldPosX", pos[0]);
SetPVarFloat(playerid, "OldPosY", pos[1]);
SetPVarFloat(playerid, "OldPosZ", pos[2]);
}
return 1;
}
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //