Max_Hank
Умник
Всем привет! Вот вам античит на AirBreak. У меня все работает. Итак приступим.
Ко всем new:
В enum pInfo добавим:
Теперь в OnPlayerRequestClass:
Затем в OnPlayerSpawn (в самое начало):
В OnGameModeInit добавляем таймер проверки:
Добавим функции в конец мода:
Добавим вот такой дефайн:
Функция выявления читера:
Далее функция, которая позволяет отправлять админам сообщения. pAdmin - это ЛВЛ админа. Редактируем под себя!
Ну вот и все. Сильно не бейте. От +сиков не откажусь. Всего вам доброго друзья. Выявите ошибку, пишите сюда, делал на скоряк, мож что-то забыл
Ко всем new:
PHP:
new TimeLogged[MAX_PLAYERS];
new PlayerLogged[MAX_PLAYERS];
PHP:
Float: pPos_x,
Float: pPos_y,
Float: pPos_z
PHP:
SetPVarInt(playerid, "AntiBreik", 500);
TimeLogged[playerid] = 0;
PHP:
SetPVarInt(playerid, "AntiBreik", 3);
PlayerLogged[playerid] = true;
TimeLogged[playerid] = -1;
PHP:
SetTimer("onCheckAirBrk", 1000, 1); // проверка каждую секунду
PHP:
stock t_SetPlayerPos( playerid, Float:x, Float:y, Float:z )
{
SetPlayerPos( playerid, x, y, z );
PlayerInfo[ playerid ][ pPos_x ] = x;
PlayerInfo[ playerid ][ pPos_y ] = y;
PlayerInfo[ playerid ][ pPos_z ] = z;
SetPVarInt(playerid, "AntiBreik", 3);
return true;
}
PHP:
#define SetPlayerPos t_SetPlayerPos
PHP:
stock onCheckAirBrk( playerid )
{
if( IsPlayerConnected( playerid ) )
{
new Float:currentPos[ 3 ],
Float:distance;
GetPlayerPos( playerid, currentPos[ 0 ], currentPos[ 1 ], currentPos[ 2 ] );
distance = floatround( GetPlayerDistanceFromPoint( playerid, PlayerInfo[ playerid ][ pPos_x ], PlayerInfo[ playerid ][ pPos_y ], PlayerInfo[ playerid ][ pPos_z] ) );
if(GetPVarInt(playerid, "AntiBreik") == 0 && GetPVarInt(playerid, "AFK_Time") < 2) // проверка на АФК, редактируйте по себя
{
if(distance < 100 && distance > 70)
{
format(string, 256, "[!WARNING!] Игрок %s (ID: %i) подозревается в читерстве (Аирбрайк или ТП)", sendername(playerid), playerid);
SendAdminMessage(COLOR_LIGHTRED, string); //Предупреждаем админов.
}
}
PlayerInfo[ playerid ][ pPos_x ] = currentPos[ 0 ];
PlayerInfo[ playerid ][ pPos_y ] = currentPos[ 1 ];
PlayerInfo[ playerid ][ pPos_z ] = currentPos[ 2 ];
}
}
PHP:
stock SendAdminMessage(color, str[])
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i) || PlayerLogged[i] == 0) continue;
if(PlayerInfo[i][pAdmin] > 0 && SendAdmin[i]) SendClientMessage(i, color, str);
}
return true;
}
