Vocк poderia fazer esse anti xiter com settimer(contagens) e loops.
Exemplo:
PHP Code:
public OnGameModeInit()
{
SetTimer("AntiXiter", 2000, true);
return 1;
}
PlayerName(playerid) //usar para obter nomes
{
static Name[MAX_PLAYER_NAME];
GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
return Name;
}
forward AntiXiter();
public AntiXiter()
{
static
string[100],
Float:x,
Float:y,
Float:z
;
foreach(Player, playerid) //for(new playerid = 0; i < MAX_PLAYERS; ++i)
{
if(GetPlayerWeapon(playerid) != WEAPON_PARACHUTE)
{
if(GetPlayerAnimationIndex(playerid) != 974) continue;
if(GetPlayerAnimationIndex(playerid) != 968) continue;
if(GetPlayerAnimationIndex(playerid) != 974) continue;
if(kickado[playerid] == 0)
{
kickado[playerid]++;
format(string, sizeof(string), "[ANTI-CHEAT]: %s foi kickado [Motivo: Skin Bug]", PlayerName(playerid));
SendClientMessageToAll(-1, string);
SetTimerEx("rkick", 500, false, "i", playerid);
print(string);
}
}
else if(GetPlayerWeapon(playerid) != WEAPON_PARACHUTE && !IsPlayerInWater(playerid))
{
if(GetPlayerAnimationIndex(playerid) != 959) continue;
if(GetPlayerAnimationIndex(playerid) != 1539) continue;
GetPlayerPos(playerid, x, y, z);
if(z > 14)
{
if(kickado[playerid] == 0)
{
kickado[playerid]++;
format(string, sizeof(string), "[ANTI-CHEAT]: %s foi kickado [Motivo: Fly]", PlayerName(playerid));
SendClientMessageToAll(-1, string);
SetTimerEx("rkick", 500, false, "i", playerid);
print(string);
}
}
}
}
}
foreach й uma include que vocк usa para loops, ela faz as voltas de acordo com a quantidade de players que estгo online no servidor. Ou seja, bem mais rбpida, diferentemente do loops normal(for) que faz as voltas em todas as slot(valor do MAX_PLAYERS).
ps: Eu fiz algumas auteraзхes em seu cуdigo, pois estava muito mal otimizado!
ps2: Parabйns pelo anti xiter.