Всем привет. Если вы ещё не поняли, что такое Auto +C и/или Rapid Fire, то для начала стоит просмотреть два видео:
Создадим глобальный массив (т.е. ко всем new), для подсчёта количества выстрелов за последнее время:
Данный код добавляем в OnPlayerWeaponShot (здесь и проверяются все выстрелы, сделанные игроком):PHP код:
new player_shot_count[MAX_PLAYERS char];
Теперь добавляем самое главное в античит, это проверка, нажал ли игрок на клавишу 'C', после того как производил выстрел. Если игрок не нажимает на данную клавишу за определённое количество времени, то он попадается.PHP код:
switch(weaponid)
{
case 23, 24, 25, 34 :
{
new server_tick = GetTickCount();
if(server_tick - GetPVarInt(playerid, "player_last_shot_tick") < 300 // Последний выстрел игрока из оружия
&& server_tick - GetPVarInt(playerid, "player_last_c_key") > 1000 // Последнее нажатие клавиши 'С'
&& ++player_shot_count{playerid} > 2 // Количество выстрелов за некоторое время
&& !IsPlayerInAnyVehicle(playerid)) // Игрок не находится в транспорте ( выстрелы с оружия "Desert Eagle" достаточно быстрые, если игрок стреляет с пассажирского места из транспорта )
{
new str[75];
GetPlayerName(playerid, str, sizeof(str));
format(str, 75, "[AntiCheat] %s (%i) вероятно использует Auto +C / Rapid Fire.", str, playerid);
player_shot_count{playerid} = 0;
for (new i = GetPlayerPoolSize() + 1; i-- != 0;)
if(IsPlayerConnected(i) && IsPlayerAdmin(i))
SendClientMessage(i, -1, str);
}
SetPVarInt(playerid, "player_last_shot_tick", server_tick); // Перехватываем время, последнего выстрела игрока из оружия
}
}
Этот код добавляем в OnPlayerKeyStateChange:
Вот и всё, удачного скриптинга!PHP код:
if((newkeys & 2) != 0) // Если нажата хотя бы 1 клавиша, и/или это клавиша: 'C'
SetPVarInt(playerid, "player_last_c_key", GetTickCount()); // Перехватываем время последнего нажатия этой клавиши
Автор: L0ndl3m
Специально для: Pro-Pawn.Ru
Копирование данной статьи без разрешения автора запрещено!