Главная Форум Софт Пользователи FAQ [Правила сайта] Набор персонала [Оплата]
Добро пожаловать на уникальный игровой портал! Здесь Вы сможете найти самые интересные новости из мира игровой индустрии, завести себе новых друзей, общаясь на форуме портала, а также сможете проявить себя в роли журналиста, дизайнера, кодера или продавца!
Авторизация Регистрация
Последние обсуждаемые темы на форуме
Последние комментарии к новостям
Топ-10 форумчан
Анти GM + HP + Броня + Со... 1
PlayerPlaySound 0
GetPlayerPing 0
AddStaticPickup 0
RusToGameWithCapitalizati... 0
Запись в лог русскими бук... 0
CheckPlayerDistanceToVehi... 0
FlipCar(carid) - переверн... 0
Возвращаем скорость транс... 0
CreateExplosion 0
Anons
МаДаРаучиха
99kol99
THE_DANIK
likes
kempel3
читы-это-скилл
xXVeGaXx
Nari2011
VkDuty
Витрина ссылок Купить ссылку (5 р.) »
  • Страница 1 из 1
  • 1
на Auto +C & Rapid Fire
02.05.2016 в 14:32
#1
Новичок
Новичок
Регистрация: 12.07.2014
Сообщения: 1
Репутация: 0
Создадим глобальный массив ( т.е. ко всем new ), для подсчёта количества выстрелов за последнее время:

Код
new player_shot_count[MAX_PLAYERS char];


Данный код добавляем в OnPlayerWeaponShot ( здесь и проверяются все выстрелы, сделанные игроком ):

Код
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); // Перехватываем время, последнего выстрела игрока из оружия
    }


Теперь добавляем самое главное в античит, это проверка, нажал ли игрок на клавишу 'C', после того как производил выстрел. Если игрок не нажимает на данную клавишу за определённое количество времени, то он попадается.

Этот код добавляем в OnPlayerKeyStateChange:

Код
if((newkeys & 2) != 0) // Если нажата хотя бы 1 клавиша, и/или это клавиша: 'C'
    SetPVarInt(playerid, "player_last_c_key", GetTickCount()); // Перехватываем время последнего нажатия этой клавиши


Вот и всё, удачного скриптинга!

  • Страница 1 из 1
  • 1
Поиск:
Яндекс.Метрика
Бесплатный хостинг uCoz