- Регистрация
- 1 Окт 2013
- Сообщения
- 84
- Лучшие ответы
- 0
- Репутация
- 34
Всем привет! В этом уроке я расскажу, как без лишних заморочек создать предельно простой
антифлуд с разделением на несколько команд или чатов.
Итак начнем..
1.В начале мода создадим дефайн:
2.Теперь Создадим глобальную переменную для всех игроков:
3.Объявим паблик, который будет выполняться раз в секунду:
4.В конец мода:
5.Теперь в public OnGameModeInit():
6.И в конец мода добавим сток для проверки на флуд:
7. А теперь добавим обнуление переменных при отключении
в паблик OnPlayerDisconnect(playerid, reason) кладем следующий код:
На этом урок закончен. Всем спасибо.
Автор: Humphrey
антифлуд с разделением на несколько команд или чатов.
Итак начнем..
1.В начале мода создадим дефайн:
PHP:
#define MAX_CMDS 100 //команд с антифлудом (ставим свое, можно с запасом)
PHP:
new AntiFlood[MAX_PLAYERS][MAX_CMDS];
PHP:
forward EverySec(); //ко всем forward'ам
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;
}
PHP:
SetTimer("EverySec", 1000, true);
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;
}
в паблик OnPlayerDisconnect(playerid, reason) кладем следующий код:
PHP:
for(new cmdid; cmdid<MAX_CMDS; cmdid++) if(AntiFlood[playerid][cmdid]>0) AntiFlood[playerid][cmdid]=0;
Автор: Humphrey