[Include] Anti CarAirSlap
#1

Привет всем! Многие знают про такой чит как CarAirSlap. Если кто не знает, он кидает соседний автомобиль путем быстрого перемещения в него. (При этом состояние игрока не меняется и OnPlayerStateChange не вызывается)
Насколько я знаю такого анти-чита в паблике нет. Представляю вам свой античит на этот хак.

Дальнейшая поддержка античита прекращена

Автор: 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;  // Устанавливаем "старое" состояние игрока
Если будут ложные срабатывания и т.д. сообщайте, буду исправлять.
Reply
#2

GetPVarInt в public OnPlayerUpdate?
Уже говорилось о том что пивары медленные при записи и считывании.
И сувать их в пакетник тем более не оптимальный вариант.
НО для того чтобы показать суть, достаточно.

Цифры 2 надо заменивать на существующие всем известные константы: PLAYER_STATE_DRIVER
Reply
#3

Quote:
Originally Posted by DANGER1979
Посмотреть сообщение
GetPVarInt в public OnPlayerUpdate?
Уже говорилось о том что пивары медленные при записи и считывании.
И сувать их в пакетник тем более не оптимальный вариант.
НО для того чтобы показать суть, достаточно.

Цифры 2 надо заменивать на существующие всем известные константы: PLAYER_STATE_DRIVER
Исправил. Обновил релиз до v1.1
Reply
#4

pawn Код:
public OnPlayerUpdate(playerid) {
    static oldData[MAX_PLAYES][2];
    new newstate = GetPlayerState(playerid); // Получаем состояние игрока
    if(newstate == PLAYER_STATE_DRIVER) // Если игрок сидит на водительском месте то...
    {
        new newveh = GetPlayerVehicleID(playerid); // Получаем ID транспортного средства в котором сидит игрок
        if(oldData[playerid][0] == PLAYER_STATE_DRIVER && oldData[playerid][1] != INVALID_VEHICLE_ID && newveh != oldData[playerid][1]) // Если игрок раньше сидел на водительском месте и игрок сменил автомобиль то...
        {
            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;  // Устанавливаем "старое" состояние игрока
    return 1;
}
Reply
#5

Релиз обновлен до версии 1.2
Код от Степшки будет целесообразней.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)