14.07.2012, 15:15
(
Последний раз редактировалось GameMan; 06.09.2013 в 16:23.
Причина: Поддержка прекращена
)
Привет всем! Многие знают про такой чит как CarAirSlap. Если кто не знает, он кидает соседний автомобиль путем быстрого перемещения в него. (При этом состояние игрока не меняется и OnPlayerStateChange не вызывается)
Насколько я знаю такого анти-чита в паблике нет. Представляю вам свой античит на этот хак.
Дальнейшая поддержка античита прекращена
Автор: GameMan (MeowCola)
История версий:
Версия 1.0 - релиз
Версия 1.1 - PVar's были заменены на обычные переменные
Версия 1.2 - Оптимизирован код (Спасибо Степашке
)
Версия 1.2.1 - Улучшена защита (Теперь анти-чит срабатывает если игрок использовал чит сидя на пассажирском месте)
Установка:
в OnPlayerUpdate
Если будут ложные срабатывания и т.д. сообщайте, буду исправлять.
Насколько я знаю такого анти-чита в паблике нет. Представляю вам свой античит на этот хак.
Дальнейшая поддержка античита прекращена
Автор: GameMan (MeowCola)
История версий:
Версия 1.0 - релиз
Версия 1.1 - PVar's были заменены на обычные переменные
Версия 1.2 - Оптимизирован код (Спасибо Степашке

Версия 1.2.1 - Улучшена защита (Теперь анти-чит срабатывает если игрок использовал чит сидя на пассажирском месте)
Установка:
в OnPlayerUpdate
pawn Код:
static oldData[MAX_PLAYERS][2];
new newstate = GetPlayerState(playerid); // Получаем состояние игрока
if(newstate == PLAYER_STATE_DRIVER)
{
new newveh = GetPlayerVehicleID(playerid); // Получаем ID транспортного средства в котором сидит игрок
if((oldData[playerid][0] == PLAYER_STATE_DRIVER || oldData[playerid][0] == PLAYER_STATE_PASSENGER) && oldData[playerid][1] != INVALID_VEHICLE_ID && newveh != oldData[playerid][1])
{
SetVehicleVelocity(newveh, 0.0, 0.0, 0.0); // Останавливаем подкинутый автомобиль
new str[100]; // Создаем переменные
GetPlayerName(playerid, str, sizeof(str)); // Получаем ник игрока
format(str, sizeof(str), "Игрок {ffffaa}%s(%d){ffffff} был кикнут за использование читов", str, playerid);
SendClientMessageToAll(0xffffffff, str); // Отправляем всем игрокам сообщение в чат
Kick(playerid); // Кикаем игрока
oldData[playerid] = {PLAYER_STATE_NONE, INVALID_VEHICLE_ID};
return 1;
}
oldData[playerid][1] = newveh; // Устанавливаем "старый" ID транспортного средства
}
else
{
oldData[playerid][1] = INVALID_VEHICLE_ID;
}
oldData[playerid][0] = newstate; // Устанавливаем "старое" состояние игрока