#Mickey_Mouse
Ученик
Здравствуйте уважаемые форумчане. Заметил что иногда люди ищут Anti-Cheat от AirBrk. А он почти в 80% случаях он идет только в комплекте со сборниками читов.
Ну вот вам Anti-Cheat AirBreak:
Ко всем define :
Ко всем new :
Ко всем forward :
В в public OnPlayerConnect(playerid) :
В public OnPlayerDisconnect(playerid) :
Cоздаём паблик :
В конец мода :
Ну вот вам Anti-Cheat AirBreak:
Ко всем define :
PHP:
#define DYS 30
#define DYS_A 140
PHP:
new PosTimer[MAX_PLAYERS];
PHP:
forward OnPlayerUpdateEx();
PHP:
PosTimer[playerid] = SetTimerEx("OnPlayerUpdateEx", 3000, true, "d", playerid);//поставил 3 сек если меньше то античит будет проверять и при проверке может кикнуть даже если зашли в дом
PHP:
KillTimer(PosTimer[playerid]);
PHP:
public OnPlayerUpdateEx()
{
for(new i, g = GetMaxPlayers(); i < g; i++)
{
new Float:pos[3];
GetPlayerPos(i, pos[0], pos[1], pos[2]);
new veh = GetPlayerVehicleID(i);
if(GetPlayerSurfingVehicleID(i) == INVALID_VEHICLE_ID && GetPlayerState(i) != PLAYER_STATE_SPAWNED)
{
if(!GetPVarInt(i, "NoAB"))
{
switch(GetPlayerAnimationIndex(i))
{
case 958, 959, 961, 962, 965, 971, 1126, 1130, 1132, 1134, 1156, 1208:
{
SetPVarInt(i, "NoAB", 1);
continue;
}
}
if(IsPlayerInAnyVehicle(i) || IsPlayerInVehicle(i, veh) && GetPlayerState(i) == 2)
{
if((floatabs(pos[0] - GetPVarFloat(i, "OldPosX"))) > DYS_A || (floatabs(GetPVarFloat(i, "OldPosX") - pos[0])) > DYS_A ||
(floatabs(pos[1] - GetPVarFloat(i, "OldPosY"))) > DYS_A || (floatabs(GetPVarFloat(i, "OldPosY") - pos[1])) > DYS_A ||
(floatabs(pos[2] - GetPVarFloat(i, "OldPosZ"))) > DYS_A/2 || (floatabs(GetPVarFloat(i, "OldPosZ") - pos[2])) > DYS_A/2)
{
GetPlayerName(i,sendername,sizeof(sendername));
format(logus, 80, "%s был кикнут. Причина: AirBreak/Телепорт",sendername);
SendClientMessageToAll(COLOR_LIGHTRED, logus);
Kick(i);
log("Kick", logus);
}
}
else
{
if((floatabs(pos[0] - GetPVarFloat(i, "OldPosX"))) > DYS || (floatabs(GetPVarFloat(i, "OldPosX") - pos[0])) > DYS ||
(floatabs(pos[1] - GetPVarFloat(i, "OldPosY"))) > DYS || (floatabs(GetPVarFloat(i, "OldPosY") - pos[1])) > DYS ||
(floatabs(pos[2] - GetPVarFloat(i, "OldPosZ"))) > DYS/2 || (floatabs(GetPVarFloat(i, "OldPosZ") - pos[2])) > DYS/2)
{
GetPlayerName(i,sendername,sizeof(sendername));
format(logus, 80, "%s был кикнут. Причина: AirBreak/Телепорт",sendername);
SendClientMessageToAll(COLOR_LIGHTRED, logus);
Kick(i);
log("Kick", logus);
}
}
}
SetPVarInt(i, "NoAB", 0);
}
SetPVarFloat(i, "OldPosX", pos[0]);
SetPVarFloat(i, "OldPosY", pos[1]);
SetPVarFloat(i, "OldPosZ", pos[2]);
}
return true;
}
PHP:
stock SetPos(playerid,Float:x,Float:y,Float:z)
{
SetPVarInt(playerid, "NoAB", 1);
SetPVarFloat(playerid, "OldPosX", x);
SetPVarFloat(playerid, "OldPosY", y);
SetPVarFloat(playerid, "OldPosZ", z);
return SetPlayerPos(playerid,x,y,z);
}
Последнее редактирование:
