Поддерживаемые игры
  1. CS: Source (OrangeBox)
  2. CS: Source (v34)
  3. CS: GO
  4. Team Fortress 2
  5. DOD: Source
  6. L4D 1 & 2
  7. Half-Life 2: Deathmatch
  8. Synergy
  9. Codename Cure
  10. Black Mesa
  11. CS 2
[ANY] REGEX Word Filter v2.7.1 — Продвинутый фильтр слов с поддержкой кириллицы

Описание

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

Основные возможности:
• Полная поддержка кириллицы — регистронезависимый поиск работает корректно для русских букв (а-я, А-Я, ё/Ё)
• Нормализация Latin → Cyrillic — автоматическое преобразование латинских букв в кириллицу
• Транслитерация — распознавание комбинаций sh→ш, ch→ч, zh→ж, ya→я, yu→ю и др.
• Цифры как буквы — 4→ч, 3→з, 0→о, 6→б и др.
• Защита от обхода разделителями — "п-р-и-в-е-т", "п.р.и.в.е.т", "п_р_и_в_е_т" будут отфильтрованы
• Удаление странного Unicode — греческие буквы, fullwidth символы и прочие двойники удаляются
• Очистка мусорных символов — эмодзи, юникод-арт, Lenny faces автоматически удаляются из сообщений
• Гибкая настройка действий — замена на ***, блокировка сообщения, предупреждение, выполнение команды
• Система лимитов — после N нарушений можно кикнуть/забанить/заглушить
• Система прощения — счётчик нарушений уменьшается со временем
• Whitelist — исключения для легальных слов (например, "рубли" не фильтруется)
• Иммунитет по флагам — администраторы могут быть освобождены от фильтра
• Отдельные конфиги для карт — regexrestrict_de_dust2.cfg
• API для других плагинов — интеграция с кастомными чатами (Discord relay и др.)

Очистка мусора (regexfilter_cleanjunk):
• Мусора <50% — символы удаляются, сообщение отправляется
• Мусора >50% — сообщение блокируется
• Нет букв после очистки — сообщение блокируется

Конфигурация
Файл: addons/sourcemod/configs/regexrestrict.cfg

C-подобный:
"Censor"
{
    // Whitelist — слова-исключения (проверяются ДО фильтров)
    "whitelist"     "'рубл' 'CASELESS'"
    "whitelist"     "'спидр' 'CASELESS'"
    "whitelist"     "'небо' 'CASELESS'"

    "bad_words"
    {
        // Паттерны для поиска (поддерживает regex или простой текст в кавычках)
        "chatpattern"   "'плохоеслово' 'CASELESS'"
        "chatpattern"   "'оскорбление' 'CASELESS'"
        "chatpattern"   "\b[a-zA-Z0-9]+\.[a-z]{2,3}\b"  // домены (реклама)
  
        // Действия при срабатывании
        "replace"       "***"                    // замена на текст
        "warn"          "Соблюдайте правила чата!"  // предупреждение игроку
  
        // Опционально: выполнить команду
        // "action"      "sm_mute #%u 5"         // %u=userid, %i=index, %n=name
  
        // Опционально: полная блокировка сообщения
        // "block"       "1"
    }

    "spam_protection"
    {
        "chatpattern"   "'спам' 'CASELESS'"
  
        "warn"          "Не спамьте!"
        "replace"       "[спам]"
  
        // Система лимитов
        "limit"         "3"                      // после 3 нарушений — punish
        "forgive"       "60"                     // -1 нарушение каждые 60 секунд
        "punish"        "sm_kick #%u Спам в чате"  // наказание при превышении лимита
  
        // Иммунитет для админов
        "immunity"      "a"                      // флаг для иммунитета
    }
}

Формат паттернов
• Простой текст: 'слово' 'CASELESS' — ищет "слово" без учёта регистра
• Regex: \b[0-9]{10}\b — стандартный regex (например, номера телефонов)

Флаги паттернов
• CASELESS — регистронезависимый поиск (рекомендуется для кириллицы)
• UTF8 — поддержка UTF-8 (добавляется автоматически для кириллицы)
• MULTILINE — многострочный режим
• DOTALL — точка соответствует переносу строки
• UNGREEDY — нежадный режим

Флаги можно комбинировать: 'паттерн' 'CASELESS|MULTILINE'
Важно: Не используйте [кириллица] в character class — это ломает CASELESS.
Вместо [ао] используйте (а|о)

API для разработчиков
C-подобный:
// Обработать сообщение через фильтр
// Возвращает: 1 = изменено, 0 = без изменений, -1 = заблокировано
native int REGEXFilter_ProcessMessage(int client, char[] text, int maxlen);

// Добавить паттерн в whitelist
native int REGEXFilter_AddWhitelist(const char[] pattern, int maxlen);

// Удалить паттерн из whitelist (не реализовано)
native int REGEXFilter_RemoveWhitelist(const char[] pattern, int maxlen);

Пример интеграции:

C-подобный:
#define REGEXFILTER_LIBRARY "regexfilter"

bool g_bRegexFilterAvailable = false;
native int REGEXFilter_ProcessMessage(int client, char[] text, int maxlen);

public void OnAllPluginsLoaded()
{
    g_bRegexFilterAvailable = LibraryExists(REGEXFILTER_LIBRARY);
}

void ProcessChat(int client, char[] message, int maxlen)
{
    if (g_bRegexFilterAvailable)
    {
        int result = REGEXFilter_ProcessMessage(client, message, maxlen);
        if (result == -1 || strlen(message) == 0)
        {
            // Сообщение заблокировано
            return;
        }
    }
    // Используем отфильтрованное сообщение...
}

Важно!
• Файл конфигурации ОБЯЗАТЕЛЬНО должен быть в кодировке UTF-8 без BOM
• Для коротких паттернов (3 буквы) рекомендуется добавлять whitelist для легальных слов
• Плагин не загрузится, если конфиг-файл отсутствует
• Совместим с Discord-relay плагинами (Source-Chat-Relay и др.)

Changelog
v2.7.1
• Добавлена очистка мусорных символов (эмодзи, юникод-арт, Lenny faces)
• Добавлен ConVar regexfilter_cleanjunk
• Блокировка сообщений с >50% мусора
• Блокировка сообщений без букв после очистки
• API: REGEXFilter_ProcessMessage теперь возвращает -1 при блокировке
• Интеграция очистки в API для внешних плагинов
• Документация API на русском языке
• Комментарии в коде переведены на русский

v2.6
• Добавлена функция IsSeparator() для корректной замены текста с разделителями
• Исправлена замена слов типа "п-л-о-х-о-е-с-л-о-в-о" → "***"
• Агрессивная фильтрация — сохраняются только латиница, кириллица и цифры
• Все остальные символы (точки, дефисы, Unicode-мусор) удаляются
• Добавлена поддержка Unicode-двойников (греческие буквы, fullwidth символы)
• Расширен список символов-заменителей ($→с, !→и, 1→и)
• Удаление разделителей: точки, дефисы, подчёркивания, звёздочки и др.
• "Л.О.Х" и "с-л-о-в-о" теперь корректно фильтруются
• Добавлена транслитерация: sh→ш, ch→ч, zh→ж, ya→я, yu→ю, yo→ё и др.
• Поддержка цифр как букв: 4→ч, 3→з, 0→о, 6→б
• Добавлена нормализация Latin → Cyrillic
• Слова на латинице преобразуются в кириллицу для сопоставления
• Полностью переписан для SM 1.10+ (newdecls)
• Исправлена работа CASELESS с кириллицей
• Добавлена защита от обхода пробелами
• Добавлена система whitelist
• Добавлен API для внешних плагинов
• Добавлена команда sm_regexreload
• Добавлена поддержка late-load
• Исправлена совместимость с chat-relay плагинами
• Исправлены утечки памяти при перезагрузке

Благодарности

• Оригинальный автор: Twilight Suzuka
• Переработка v2.0: Lappland_Saluzzo
• Нормализация и антибайпас v2.1-2.7.1: Lappland_Saluzzo & Claude Opus 4.5 (Anthropic)

Примечание: Готовый конфиг с паттернами для русского языка прилагается к плагину в обсуждении.
Требования
Требования:
• SourceMod 1.10+
• Regex Extension (встроен в SM)
Переменные
КомандаФлагОписание
sm_regextest <текст>ROOTПроверить текст на совпадение с паттернами
sm_regexreloadROOTПерезагрузить конфигурацию без рестарта
Команды
ПеременнаяПо умолчаниюОписание
regexfilter_enable1Включить/выключить фильтр
regexfilter_cleanjunk1Очистка мусорных символов (эмодзи, юникод-арт)
Установка
Установка:
1. Скопируйте sm_regexfilter.smx в addons/sourcemod/plugins/
2. Скопируйте regexrestrict.cfg в addons/sourcemod/configs/
3. Перезапустите сервер или введите sm plugins load sm_regexfilter
  • Мне нравится
Реакции: Synd1qate
Автор
Lappland_Saluzzo
Скачивания
33
Просмотры
282
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Lappland_Saluzzo

Последние обновления

  1. [RF] Обновление 2.7.1

    REGEX Word Filter v2.7.1 Новый функционал Добавлена очистка мусорных символов из сообщений...
  2. [RF] Добавлены детекты обхода через латиницу

    - Исправлено API. - Добавлен детект латиницы. - Микро-исправления.
Сверху Снизу