И так, я искал рабочие античиты на ТП и на AirBreak, но увы, нормальных не нашел.
Потом разобрался в их работе и решил сделать свой, но проще.
Кикает при этом отлично, срабатывает постоянно.
Анти ТП на машине, анти ТП на средние и большие расстояния пешком, анти AirBreak.
В начало мода вставляем это:
PHP код:
new detecter[MAX_PLAYERS];
stock SetPos(playerid,Float:x,Float:y,Float:z)
{
detecter[playerid] = 3;
SetPVarFloat(playerid, "OldPosX", x);
SetPVarFloat(playerid, "OldPosY", y);
SetPVarFloat(playerid, "OldPosZ", z);
return SetPlayerPos(playerid,x,y,z);
}
#define SetPlayerPos SetPos
Это вставляем в OnGameModeInit:
PHP код:
SetTimer("DetectAB",1000,1);
В OnPlayerSpawn вставляем, в начало:
PHP код:
detecter[playerid] = 10;
SetPVarInt(playerid,"Logged",1);
Это вставляем в конец мода:
PHP код:
stock DetectAB()
{
new Float:pos[3];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || GetPVarInt(playerid,"Logged") != 1) continue;
GetPlayerPos(i, pos[0], pos[1], pos[2]);
detecter[i]-=1;
if(detecter[i] < 1)
{
if(GetPlayerState(i) == PLAYER_STATE_ONFOOT)
{
if(!IsPlayerInRangeOfPoint(i,25.0,GetPVarFloat(i, "OldPosX"),GetPVarFloat(i, "OldPosY"),GetPVarFloat(i, "OldPosZ"))) return Kick(i);
}
else if(GetPlayerState(i) == PLAYER_STATE_DRIVER || GetPlayerState(i) == PLAYER_STATE_PASSENGER)
{
if(!IsPlayerInRangeOfPoint(i,130.0,GetPVarFloat(i, "OldPosX"),GetPVarFloat(i, "OldPosY"),GetPVarFloat(i, "OldPosZ"))) return Kick(i);
}
detecter[i] = 0;
}
SetPVarFloat(i, "OldPosX", pos[0]);
SetPVarFloat(i, "OldPosY", pos[1]);
SetPVarFloat(i, "OldPosZ", pos[2]);
}
return 1;
}
Пешком тестировалось - все отлично! Ложных киков не обнаружено! За СХ тоже будет кикать в машине.
Если вдруг АЧ напрасно кикает в машине, то нужно удалить строчки из функции DetectAB():
PHP код:
else if(GetPlayerState(i) == PLAYER_STATE_DRIVER || GetPlayerState(i) == PLAYER_STATE_PASSENGER)
{
if(!IsPlayerInRangeOfPoint(i,130.0,GetPVarFloat(i, "OldPosX"),GetPVarFloat(i, "OldPosY"),GetPVarFloat(i, "OldPosZ"))) return Kick(i);
}
Строго прошу не судить, делал АЧ для себя, поскольку работает хорошо - решил поделиться.