Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создадим АнтиФлуд на Команды и Чат.

Статус
В этой теме нельзя размещать новые ответы.

CrazyMan454646466

Начинающий
Пользователь
Регистрация
1 Окт 2013
Сообщения
84
Лучшие ответы
0
Репутация
34
Всем привет! В этом уроке я расскажу, как без лишних заморочек создать предельно простой
антифлуд с разделением на несколько команд или чатов.


Итак начнем..

1.В начале мода создадим дефайн:

PHP:
#define MAX_CMDS 100 //команд с антифлудом (ставим свое, можно с запасом)
2.Теперь Создадим глобальную переменную для всех игроков:

PHP:
new AntiFlood[MAX_PLAYERS][MAX_CMDS];
3.Объявим паблик, который будет выполняться раз в секунду:

PHP:
forward EverySec(); //ко всем forward'ам
4.В конец мода:

PHP:
 public EverySec() 
        {
        for(new playerid; playerid<MAX_PLAYERS; playerid++) //перебираем всех игроков
        { 
        if(!IsPlayerConnected(playerid)) continue; //Если игрок не на сервере пропускаем интерацию
        for(new cmdid; cmdid<MAX_CMDS; cmdid++) if(AntiFlood[playerid][cmdid]>0) AntiFlood[playerid][cmdid]--; //Уменьшаем время для всех чатов
        }
        return 1;
        }
5.Теперь в public OnGameModeInit():

PHP:
SetTimer("EverySec", 1000, true);
6.И в конец мода добавим сток для проверки на флуд:

PHP:
 stock FloodCheck(playerid,cmdid,time,message[]) 
        {
        if(AntiFlood[playerid][cmdid]>0) //Если время больше 0- отправляем сообщение
        {
        SendClientMessage(playerid,-1,message); 
        return 1; 
        }
        AntiFlood[playerid][cmdid]=time; //Если все нормально- выставляем время до следующего использования
        return 0; 
        }
7. А теперь добавим обнуление переменных при отключении
в паблик OnPlayerDisconnect(playerid, reason) кладем следующий код:


PHP:
for(new cmdid; cmdid<MAX_CMDS; cmdid++) if(AntiFlood[playerid][cmdid]>0) AntiFlood[playerid][cmdid]=0;
На этом урок закончен. Всем спасибо.
Автор: Humphrey
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу