Перейти к содержанию
Авторизация  
Vladimir_Kulkov

Вывод ID читеров

Рекомендуемые сообщения

Vladimir_Kulkov

Отвечу здесь, но в следующий раз задавай вопрос в теме (а ещё лучше, перед этим немного полистать страницы обсуждений, там иногда полезная инфа по решению проблем попадается).

 

1. Как сделать так, чтобы выводило id's читеров в ППЧ вместо кика

forward OnCheatDetected(playerid, ip_address[], type, code);
public OnCheatDetected(playerid, ip_address[], type, code)
{
    if(type) BlockIpAddress(ip_address, 0); //Среагировал на IP (например за попытку брута ркона) - блочим его
    else //Среагировал на ID игрока
    {
        switch(code) //Какой чит?
        {
            case 5: return 1; //Телепорт незанятых авто (античит в любом случае вернёт её на прежнее место, наказание лучше не делать)
            case 11: //Починка транспорта, лучше вернуть ему старое хп (если не применит его - сработает уже анти-ноп)
            {
                new vehid = GetPlayerVehicleID(playerid), Float:vhealth;
                AntiCheatGetVehicleHealth(vehid, vhealth);
                SetVehicleHealth(vehid, vhealth);
                return 1;
            }
            case 14: //Деньги
            {
                //Возвращаем старую сумму
                new a = AntiCheatGetMoney(playerid);
                ResetPlayerMoney(playerid);
                GivePlayerMoney(playerid, a);
                return 1; //Иное наказание также нам не нужно
            }
            case 32: return ClearAnimations(playerid, 1); //CarJack, выкидываем игрока из авто
            case 40: SendClientMessage(playerid, -1, MAX_CONNECTS_MSG); //Песочница (вход 2-х и более человек с одного IP), прощаемся
            case 41: SendClientMessage(playerid, -1, UNKNOWN_CLIENT_MSG); //Версия клиента игрока не определена, прощаемся с ним
            case 43..47: //Крашеры
            {
                Kick(playerid); //КРАЙНЕ рекомендуется кикать без задержки, иначе ОНО успеет крашнуть игроков
                return 1;
            }
            default: //Здесь все остальные читы
            {
                AddCheater(playerid); //Добавляем в панель читеров (можно также отправить сообщение всем админам)
                return 1;
            }
        }
        new pPing = GetPlayerPing(playerid) + 150;
        SetTimerEx("ac_KickTimer", (pPing > 500 ? 500 : pPing), false, "i", playerid); //Кик за 40 и 41 код, ac_KickTimer есть в античите и успешно сработает
    }
    return 1;
}  

2. Как поставить проверку на админку

Можно добавить её в OnCheatDetected сразу после первого условия (в "else"), что-то вроде:

if(PlayerInfo[playerid][pAdmin] > 0) return 1;  

но лучше, по моему, отключить нужные защиты игроку, чтобы они даже не проверяли его.

Т.к. каждый мод разный, ищи у себя место, где происходит получение админки (например загрузка из бд/файлов). Далее ставь проверку, получил ли админку игрок, что-то вроде:

if(PlayerInfo[playerid][pAdmin] > 0)
{
}  

И внутрь этой проверки уже добавляй отключение античитов, используя "EnableAntiCheatForPlayer", где первый аргумент это ид игрока, второй - ид античита, третий же, это флаг включить/выключить (1 и 0 соответственно).

Для отключения нескольких античитов подряд (на примере всех), можно сделать через цикл:

for(new i = 52; i != -1; --i) EnableAntiCheatForPlayer(playerid, i, 0);  

И да, если вдруг нужно, дефолтные анти-читы, то-есть вшитые в мод.

Советую их удалить или закомментировать хотя-бы потому, что они лишь будут работать паралельно с подключенным и лишь давать лишнюю нагрузку.

 

Автор: Неизвестно, взял с интернета

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.