Dezmont_Mailz
Умник
Извеняюсь за не грамотность имел виду Исправленый и полностью рабочий АНТИЧИТ на AirBreak
ко всем define
ко всем new
ко всем forward
в public OnPlayerConnect(playerid)
в public OnPlayerDisconnect(playerid)
создаём паблик
в конец мода
Стандартную позицию заменяем на SetPos
Что у нас выходит при любых тп при Аирбреке пешком и в машине не важно с какого сидения нас будет кикать SetPlayerPos обязательно заменить на SetPos а или наче будет кикать в этих позициях
Полностью протестировал багов нет!!!!!!!!!
Был баг что Аир легко работал с пасажирского сидения!!!
Немного подправил код
ко всем 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);
}
Стандартную позицию заменяем на SetPos
Что у нас выходит при любых тп при Аирбреке пешком и в машине не важно с какого сидения нас будет кикать SetPlayerPos обязательно заменить на SetPos а или наче будет кикать в этих позициях
Полностью протестировал багов нет!!!!!!!!!
Был баг что Аир легко работал с пасажирского сидения!!!
Немного подправил код
Последнее редактирование:
