Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

4 страниц V  « 2 3 4

Spam & Mat Control 0.4 (fix d-s.ru fix winzh1 от 16.03.2014)

, Закачик плагина: intercs. Автор: Freedo.m. Фикс версия: vipPredator
Статус пользователя intercs
сообщение 16.3.2014, 17:15
Сообщение #41


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Spam & Mat Control
Обновлённая версия: 0.3 (fix d-s.ru fix winzh1 от 16.03.2014)

Закачик плагина: intercs.
Автор: Freedo.m Контакты:
Авторство и последователи фикс-версий

Сcылка на заказы от intercs, где можно отследить ход заказов и ссылку на готовые заказы: https://c-s.net.ua/forum/topic52524s0.html

Список изменений, исправлений от 16.03.2014 = v0.2 new (fix version d-s от vipPredator):
1) Добавлена возможность блокировки русских ников и русских слов на серверах с доступным русским языком (пример, билд 6027).
2) Исправлен баг, где тебе сервер менял ник на [Anti-spam/mat]CMEHU_HUK и если ты перезаходит после этого, то могло выкинуть с сервера на основании Reliable channel overflowed.
3) Плагин теперь не конфликтует с некоторыми различными плагинами.

Список изменений, исправлений от 16.03.2014 = v0.3 (fix winzh1 от 16.03.2014):
1) Добавлена функция напоминания о том, что у вас заблокирован чат на время, если вам сервер на данный момент заблокировал чат и вы что-то пытаетесь написать:
[Анти-спам/мат] У Вас автоблок чата на __ сек. Ждите, Вы сами виноваты!

СТОП! СЕйчас еще будет обновление!

Отредактировал: intercs, - 16.3.2014, 17:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 16.3.2014, 17:24
Сообщение #42


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Плагин умеет блокировать или скрывать повторяющиеся сообщения? Спам типа
olololo
olololo
olololo
olololo
olololo
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 16.3.2014, 17:32
Сообщение #43


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(gudaus @ 16.3.2014, 19:24) *
Плагин умеет блокировать или скрывать повторяющиеся сообщения? Спам типа
olololo
olololo
olololo
olololo
olololo


Вроде, нет, а смысл. Чет не помню, вспомнию/уточню и дам точный ответ.
Поясни, вдруг можно для обновления прислушаться к данным суждениям?

Ответ от аналитика плагина с форума, цитирую: "Мне кажется, что это лишняя нагрузка от такой проверки, задача плагина не показывать спам и маты."
Я с ним солидарен, ведь есть плагин стандартный noflood.amx, который обязан быть выше всех плагинов, работающих с чатом, т.к. обнаружена была уязвимость с выкидыванием админов.
Ссылка на тему: https://c-s.net.ua/forum/index.php?showtopic=60444

Spam & Mat Control
Обновлённая версия: 0.4 (fix d-s.ru fix winzh1 от 16.03.2014)

Закачик плагина: intercs.
Автор: Freedo.m Контакты:
Авторство и последователи фикс-версий

Сcылка на заказы от intercs, где можно отследить ход заказов и ссылку на готовые заказы: https://c-s.net.ua/forum/topic52524s0.html

Список изменений, исправлений от 16.03.2014 = v0.2 new (fix version d-s от vipPredator):
1) Добавлена возможность блокировки русских ников и русских слов на серверах с доступным русским языком (пример, билд 6027).
2) Исправлен баг, где тебе сервер менял ник на [Anti-spam/mat]CMEHU_HUK и если ты перезаходит после этого, то могло выкинуть с сервера на основании Reliable channel overflowed.
3) Плагин теперь не конфликтует с некоторыми различными плагинами.
Список изменений, исправлений от 16.03.2014 = v0.3 (fix winzh1 от 16.03.2014):
1) Добавлена функция напоминания о том, что у вас заблокирован чат на время, если вам сервер на данный момент заблокировал чат и вы что-то пытаетесь написать:
[Анти-спам/мат] У Вас автоблок чата на __ сек. Ждите, Вы сами виноваты!
Прикрепленное изображение
Список изменений, исправлений от 16.03.2014 = v0.4 (fix winzh1 от 16.03.2014):
1) Добавлена проверка на регистр ника. Т.е. проверка на заглавные и маленькие буквы. Т.е., если Вы укажите в block_name.ini ник с маленькой букв(ы) "dyrak" или "дурак", а на сервер заходит "Dyrak" или "ДуРаК", то теперь ник также сменится на [Anti-spam/mat]CMEHU_HUK и обхода не будет. Раньше плагин не отличал заглавных букв и маленьких, указанных ников в block_name.ini и можно было обойти плагин.

Отредактировал: intercs, - 16.3.2014, 17:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 16.3.2014, 17:40
Сообщение #44


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Смысл - блок спама и просто тупых повторяющихся мессаг. Чёрный лист + блок Ip и доменов не всё фильтрует.
Иногда идёт спам вида заходи сюда айпи 46.4321.213.4 : 2 4 6 3 2
Автоматика не возьмёт, если админа нет - загадит чат.
Подобное есть в ksg(мой вариант), ufps antiadvertisement, No Reclama Advanced.
Первое спам-сообщение пропускается, дальше - всё, 100% не увидишь. Плагин запоминает N последних сообщений и скрывает повторы.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 16.3.2014, 17:44
Сообщение #45


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(gudaus @ 16.3.2014, 19:40) *
Смысл - блок спама и просто тупых повторяющихся мессаг. Чёрный лист + блок Ip и доменов не всё фильтрует.
Иногда идёт спам вида заходи сюда айпи 46.4321.213.4 : 2 4 6 3 2
Автоматика не возьмёт, если админа нет - загадит чат.
Подобное есть в ksg(мой вариант), ufps antiadvertisement, No Reclama Advanced.
Первое спам-сообщение пропускается, дальше - всё, 100% не увидишь. Плагин запоминает N последних сообщений и скрывает повторы.


Согласен. Поэтому не зря сделали примечание:
Цитата
Плагин не чистит заражённый рекламой конфиг игроку, т.к. подумали с исполнителем, что не хорошо чистить конфиг игроку даже с его согласия, ведь если можно просто на 2 минуты заблокировать ему чат без всяких киков.
Плагин не гарантирует идеальную работу с теми, кто будет пытаться обхитрить и искать уловки в виде: go game all na server _ r_u, т.к. с такими хитрецами бесполезно бороться и лучше их кикать и банить в ручную, т.к. если человек по натуре зараза, то нет смысла его перевоспитывать.
Также не стоит добавлять очень много одних и тех же слов (пример: eb_n, eb_nat) в block_name.ini и в block_msg.ini, чтобы не нагружать сервер тем, чтобы плагин сканировал все эти лишние бесмысленные словосочетания в момент написания запрещенного слова злоумышленником.


Впринципе можно подумать об этом с целью обновления. Но данные плагины поидее расчитаны на минимальный функционал, а данное запоминание ходят слухи по деревне, что это снова лишние проверки и нагрузки, которые уходят в память на запоминание.
Хз, надо подождать, что скажут об этих нагрузках из-за такого запоминания гуру скриптинга...

Отредактировал: intercs, - 16.3.2014, 17:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя primm
сообщение 2.4.2014, 19:16
Сообщение #46


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

Не плохо было бы добавить в плагин функцию кика игроков с плохим ником. А то на сервере по несколько человек бегает под одним ником и почему то большинство из них лагеры.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Wh1zy
сообщение 2.4.2014, 23:06
Сообщение #47


Стаж: 12 лет

Сообщений: 133
Благодарностей: 21
Полезность: < 0

Цитата(intercs @ 17.3.2014, 4:16) *
1) Добавлена возможность блокировки русских ников и русских слов на серверах с доступным русским языком (пример, билд 6027).


У меня почему то на сервере дальше могут маты на русском писать..

Ещё бы хорошо добавить имунитет для админов.

Отредактировал: Wh1zy, - 2.4.2014, 23:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 3.4.2014, 2:41
Сообщение #48


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(Wh1zy @ 3.4.2014, 4:06) *
У меня почему то на сервере дальше могут маты на русском писать..

Ещё бы хорошо добавить имунитет для админов.

Файл block_msg.ini в кодировке UTF8?
Дайте IP сервера в личку и приложите туда же файл block_msg.ini


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя NanoBIOS
сообщение 3.4.2014, 11:54
Сообщение #49
Стаж: 15 лет

Сообщений: 41
Благодарностей: 3
Полезность: 57

У меня из-за него сервак падает по два раза за день
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 3.4.2014, 12:09
Сообщение #50
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Функция не может проверить регистр слов, которые отсылают новые стим клиенты(наверное, если использовать клиент с каким-нибудь языковым патчем будет такая же история, но я не уверен)

По этому, получается, что "стоп" и "СТОП" - разные слова.

Отредактировал: TarikYuzkiv, - 3.4.2014, 12:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 3.4.2014, 13:20
Сообщение #51
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

для стринг все просто, есть перевод слов с капса автоматом в низкий регистр strtolower, либо containi которому пофиг на размер букв


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 3.4.2014, 20:56
Сообщение #52
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Все эти функции не работают с UTF-8, в топике intercs подробнее этот вопрос рассматривался.
Насколько я понимаю, в плагине позже это было учтено, и перевод регистра выполняется своими силами.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mikasa
сообщение 3.4.2014, 22:30
Сообщение #53
Стаж: 12 лет

Сообщений: 612
Благодарностей: 260
Полезность: 0

Меценат Меценат

Эм. Чуть поменял некоторые вещи в исходники и какие-то магические чудеса начались..

За любое сообщение в чат, пишет, что чат заблокирован, а в итоге в чат могу писать.

Скрытый текст
Код
#include <amxmodx>
#include <fakemeta>
#include <regex>

#define TIME_GAG_CHAT 120.0            // Длительность блокировки.
#define CHANGE_NAME "Change Name"   // Имя которое будет присваивается игроку.

#pragma semicolon 1

#define MAX_PLAYERS 32
#define MSG_SAY_TEXT 76
#define MSG_SEND_AUDIO 100

#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

new Array:g_aWhileList, g_iSizeWhileList;
new Array:g_aBlockName, g_iSizeBlockName;
new Array:g_aBlockChat, g_iSizeBlockChat;

new Regex:g_iPattern, iError;
new g_iBitClientAccess, g_iBitClientConnected, g_iWarning[MAX_PLAYERS + 1];

new const __UPPER_CASE[][] = { "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я" };
new const __LOWER_CASE[][] = { "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я" };

new const __CHARS_CASE = sizeof __UPPER_CASE;

new const PREFIX[] = "Chat Control";

public plugin_init()
{
    register_plugin("Chat Control", "0.4", "Freedo.m");
    register_clcmd("say", "HookMessage");
    register_clcmd("say_team", "HookMessage");
    register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Pre", 0);
    g_aWhileList = ArrayCreate(32);
    g_aBlockName = ArrayCreate(32);
    g_aBlockChat = ArrayCreate(32);
    new szError[32];
    g_iPattern = regex_compile("(?:\w{2,}\.[A-z]{2,4}\b|(?:\d+\W+){3})", iError, szError, charsmax(szError), "i");
    if(g_iPattern != REGEX_OK) log_amx("Regex error: %s (%d)", szError, iError);
}

public plugin_cfg()
{
    new szDirName[64], szFileName[128];
    get_localinfo("amxx_configsdir", szDirName, charsmax(szDirName));
    formatex(szFileName, charsmax(szFileName), "%s/chat_control/while_list.ini", szDirName);
    switch(file_exists(szFileName))
    {
        case 0: log_amx("File ^"%s^" not found", szFileName);
        case 1: ReadFile(szFileName, g_aWhileList);
    }
    formatex(szFileName, charsmax(szFileName), "%s/chat_control/block_name.ini", szDirName);
    switch(file_exists(szFileName))
    {
        case 0: log_amx("File ^"%s^" not found", szFileName);
        case 1: ReadFile(szFileName, g_aBlockName);
    }
    formatex(szFileName, charsmax(szFileName), "%s/chat_control/block_msg.ini", szDirName);
    switch(file_exists(szFileName))
    {
        case 0: log_amx("File ^"%s^" not found", szFileName);
        case 1: ReadFile(szFileName, g_aBlockChat);
    }
    g_iSizeWhileList = ArraySize(g_aWhileList);
    g_iSizeBlockName = ArraySize(g_aBlockName);
    g_iSizeBlockChat = ArraySize(g_aBlockChat);
}

ReadFile(szFileName[], Array:iData)
{
    new szBuffer[32], szFile = fopen(szFileName, "rt");
    while(!feof(szFile))
    {
        fgets(szFile, szBuffer, charsmax(szBuffer));
        trim(szBuffer);
        if(!szBuffer[0] || szBuffer[0] == '/' && szBuffer[1] == '/') continue;
        ArrayPushString(iData, szBuffer);
    }
    fclose(szFile);
}

public client_putinserver(id)
{
    BIT_ADD(g_iBitClientConnected, id);
    set_task(5.0, "client_access_add", id);
}

public client_access_add(id)
    BIT_ADD(g_iBitClientAccess, id);
    
public client_disconnect(id)
{
    g_iWarning[id] = 0;
    BIT_SUB(g_iBitClientAccess, id);
    BIT_SUB(g_iBitClientConnected, id);
    if(task_exists(id)) remove_task(id);
}

public ClientUserInfoChanged_Pre(id, szBuffer)
{
    static szNewName[32], szOldName[32];
    if(BIT_VALID(g_iBitClientConnected, id)) get_user_name(id, szOldName, charsmax(szOldName));
    else szOldName = CHANGE_NAME;
    engfunc(EngFunc_InfoKeyValue, szBuffer, "name", szNewName, charsmax(szNewName));
    if(CheckWhite(szNewName)) return FMRES_IGNORED;
    new iMatch = regex_match_c(szNewName, g_iPattern, iError);
    if(iMatch > 0 || CheckName(szNewName))
    {
        engfunc(EngFunc_SetClientKeyValue, id, szBuffer, "name", szOldName);
        return FMRES_SUPERCEDE;
    }
    return FMRES_IGNORED;
}

bool:CheckName(szBuffer[])
{
    static szBlockLine[32];
    for(new i; i < g_iSizeBlockName; i++)
    {
        ArrayGetString(g_aBlockName, i, szBlockLine, charsmax(szBlockLine));
        if(strfind(utf_strtolower(szBuffer), utf_strtolower(szBlockLine)) != -1) return true;
    }
    return false;
}

public HookMessage(id)
{
    if(BIT_NOT_VALID(g_iBitClientAccess, id))
    {
        PrintChat(id, "!y[!g%s!y] Вам заблокирован чат на !t%i !yсек.", PREFIX, floatround(TIME_GAG_CHAT));
        return PLUGIN_HANDLED;
    }
    static szMessage[192];
    read_args(szMessage, charsmax(szMessage));
    remove_quotes(szMessage);
    strtolower(szMessage);
    if(CheckWhite(szMessage)) return PLUGIN_CONTINUE;
    static iMatch; iMatch = regex_match_c(szMessage, g_iPattern, iError);
    if(iMatch > 0 || CheckMessage(szMessage))
    {
        if(++g_iWarning[id] < 3)
        {
            SendAudio(id, "events/tutor_msg.wav");
            PrintChat(id, "!y[!g%s!y] Сервер предупреждает вас о запрете спама/мата: !t%i!y/!t3", PREFIX, g_iWarning[id]);
        }
        else
        {
            BIT_SUB(g_iBitClientAccess, id);
            SendAudio(id, "events/friend_died.wav");
            PrintChat(id, "!y[!g%s!y] Сервер заблокировал вам чат на !t%i !yсек.", PREFIX, floatround(TIME_GAG_CHAT));
            set_task(TIME_GAG_CHAT, "GagExpired", id);
        }
        return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

bool:CheckMessage(szBuffer[])
{
    static szBlockLine[32];
    for(new i; i < g_iSizeBlockChat; i++)
    {
        ArrayGetString(g_aBlockChat, i, szBlockLine, charsmax(szBlockLine));
        if(strfind(utf_strtolower(szBuffer), utf_strtolower(szBlockLine)) != -1) return true;
    }
    return false;
}

bool:CheckWhite(szBuffer[])
{
    static szBlockLine[32];
    for(new i; i < g_iSizeWhileList; i++)
    {
        ArrayGetString(g_aWhileList, i, szBlockLine, charsmax(szBlockLine));
        if(contain(szBuffer, szBlockLine) != -1) return true;
    }
    return false;
}

public GagExpired(id)
{
    BIT_ADD(g_iBitClientAccess, id);
    g_iWarning[id] = 0;
    SendAudio(id, "events/task_complete.wav");
    PrintChat(id, "!y[!g%s!y] Чат разблокирован. Мат и спам !tзапрещён!", PREFIX);
}

public plugin_end()
{
    regex_free(g_iPattern);
}

stock SendAudio(id, szDirSound[])
{
    message_begin(MSG_ONE_UNRELIABLE, MSG_SEND_AUDIO, _, id);
    write_byte(id);
    write_string(szDirSound);
    write_short(100);
    message_end();
}

stock PrintChat(const id, const szMessage[], any:...)
{
    if(!is_user_connected(id)) return;
    new szBuffer[190];
    vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
    write_byte(id);
    write_string(szBuffer);
    message_end();
}

stock utf_strtolower( const arg[] )
{
    new utf_string[192];
    copy(utf_string, 191, arg);
    
    for(new i; i < __CHARS_CASE; ++i)
    {
        replace_utf_char(utf_string, __UPPER_CASE[i], __LOWER_CASE[i]);
    }
    strtolower(utf_string);
    return(utf_string);
}

stock replace_utf_char(arg[], char_find[], char_replace[])
{
    if(strlen(char_find) != strlen(char_replace)) return;
    new pos, len = strlen(char_replace);
    while((pos = strfind(arg, char_find)) != -1)
    {
        for(new i = pos; i < pos + len; ++i)
        {
            arg[i] = char_replace[i-pos];
        }
    }
    return;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 3.4.2014, 22:58
Сообщение #54
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(csnet @ 3.4.2014, 15:20) *
для стринг все просто, есть перевод слов с капса автоматом в низкий регистр strtolower, либо containi которому пофиг на размер букв

Они как раз таки не работают...)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 3.4.2014, 23:25
Сообщение #55
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

я против русского чата) вообще


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 12.4.2014, 16:06
Сообщение #56


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(csnet @ 4.4.2014, 1:25) *
я против русского чата) вообще


Не было времени досканально потестить, так, что в итоге с блокировкой русского мата?

Вопросы:
1) Ходят слухи, что русский мат проходит у некоторых, да?
2) Может кто-то влепить функцию, чтоб повторяющиеся сообщения, длинной символов дефайна ____ после 1 сообщения блокировались, как предлогал gudaus?

Чтоб и правда избежать такого, как, к примеру выставил блокировать повторяющиеся сообщения длиной от 10 символов:
Плагины на(тут будет уже от 10 символов и пробелы тоже учитываются) заказ I C Q 2 55 - 5654 - 4 6 2

При этом должны учитываться как английские, так и русские буквы + также пробел между буквами тоже являлся символом...

Хотя вроде в стандартном antiflood.amxx можно выставить блокировку уже после 1-го повторяющегося сообщения уменьшив время, да или уменьшение времени в стандартном плагине это немного не то?
amx_flood_time=register_cvar("amx_flood_time", "0.75")

Скрытый текст
Код
/* AMX Mod X
*   Anti Flood Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve,
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/

#include <amxmodx>

new Float:g_Flooding[33] = {0.0, ...}
new g_Flood[33] = {0, ...}

new amx_flood_time;

public plugin_init()
{
    register_plugin("Anti Flood", AMXX_VERSION_STR, "AMXX Dev Team")
    register_dictionary("antiflood.txt")
    register_clcmd("say", "chkFlood")
    register_clcmd("say_team", "chkFlood")
    amx_flood_time=register_cvar("amx_flood_time", "0.75")
}

public chkFlood(id)
{
    new Float:maxChat = get_pcvar_float(amx_flood_time)

    if (maxChat)
    {
        new Float:nexTime = get_gametime()
        
        if (g_Flooding[id] > nexTime)
        {
            if (g_Flood[id] >= 3)
            {
                client_print(id, print_notify, "** %L **", id, "STOP_FLOOD")
                g_Flooding[id] = nexTime + maxChat + 3.0
                return PLUGIN_HANDLED
            }
            g_Flood[id]++
        }
        else if (g_Flood[id])
        {
            g_Flood[id]--
        }
        
        g_Flooding[id] = nexTime + maxChat
    }

    return PLUGIN_CONTINUE
}


Отредактировал: intercs, - 12.4.2014, 16:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nranis
сообщение 10.8.2014, 8:26
Сообщение #57
Стаж: 12 лет

Сообщений: 37
Благодарностей: 3
Полезность: 63

проверьте.
допустим у игрока ник "cepewa`a", он воспримется как мат или типа того и установится ник Анти-мат
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nranis
сообщение 11.8.2014, 4:02
Сообщение #58
Стаж: 12 лет

Сообщений: 37
Благодарностей: 3
Полезность: 63

Цитата(nranis @ 10.8.2014, 12:26) *
проверьте.
допустим у игрока ник "cepewa`a", он воспримется как мат или типа того и установится ник Анти-мат

или просто его добавить в whitelist?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя coolman
сообщение 16.2.2016, 15:24
Сообщение #59


Стаж: 19 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

мат прошел, как убрать всякие символы типо тире и звездочек из сообщения?

Отредактировал: eLisha, - 16.2.2016, 15:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ilnarrr
сообщение 17.2.2016, 8:34
Сообщение #60
Стаж: 13 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

intercs,
Полностью согласен medal.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
4 страниц V  « 2 3 4
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: