# ILLUSION SQL GAG SYSTEM v1.2
**Автор:** illusion @ CodeStrike.STORE
**Плъгин:** AMX Mod X за Counter-Strike 1.6
---
## 🎯 ОБЩ ПРЕГЛЕД
Усъвършенствана система за ограничаване на достъпа, базирана на MySQL, с надеждна защита срещу заобикаляне, висока производителност при претоварени сървъри и пълен контрол върху конфигурацията.
---
## ✨ ХАРАКТЕРИСТИКИ
- **Видове цензура**: чат, глас или и двете
- **Гъвкава продължителност**: заглушители с продължителност в минути или постоянни заглушители
- **Персонализирани причини**: Напълно конфигурируеми чрез INI файл, както и персонализирани причини, въведени в самата игра
- **Филтър за нецензурни думи**: Автоматично цензуриране на забранени думи (разпознаване на цели думи), с опция за заобикаляне от администратора
- **Система за регистриране**: Подробни записи на всички събития, свързани с блокиране
- **Защита срещу заобикаляне**: Запушващите устройства се идентифицират чрез SteamID **и** IP адрес – повторното свързване или промяната на името не помагат
- **Несъвместимо със Steam**: Споделените идентификатори като `STEAM_ID_LAN`/ `VALVE_ID_LAN`се съпоставят единствено по IP адрес, така че играчите, които не използват Steam, никога не споделят един и същ гаг
- **Синхронизация на базата на рундове**: Автоматично открива промени в гаговете (добавяне/редактиране/премахване) от базата данни (например от уебсайт)
- **Интерфейс за директни команди**: Бързо заглушаване с `amx_gag`– изисква се само името на играча
- **Конзола на сървъра / Поддръжка на RCON**: Всички команди за администратори работят както от конзолата на сървъра, така и чрез RCON
- **Уведомления от HUD**: Показване на състоянието на ограничението на говоренето в реално време с таймер за обратно отброяване
- **Звукови ефекти**: Настройваеми звуци за събития, свързани с шеги
- **Професионални менюта**: Цветен административен интерфейс
- **Административна неприкосновеност**: Система за защита чрез отбелязване
- **Прогресивни наказания**: Рецидивистите автоматично получават по-дълги кърпи за уста
- **Поддръжка на кирилица / UTF-8**: Имената и причините на всеки език се съхраняват правилно
---
## 📋 ИЗИСКВАНИЯ
- AMX Mod X **1.9 или по-нова версия**
- **ReAPI**
- **CromChat**
- Модулът **MySQL** е активиран (`mysql`включен`modules.ini`)
- База данни MySQL / MariaDB
---
## 🚀 ИНСТАЛИРАНЕ
1. Качи `ILLUSION_GagSystem.amxx`в `addons/amxmodx/plugins/`
2. Добави към`ILLUSION_GagSystem.amxx` `plugins.ini`
3. Качете звуковите файлове в (`sound/gagsystem/``mute.wav`, `unmute.wav`) – или оставете полетата за пътеките към звуковите файлове празни в конфигурацията
4. Създаване на база данни в MySQL
5. Стартирайте сървъра веднъж – той се`configs/gagsystem.ini` създава автоматично
6. Редактиране `configs/gagsystem.ini`съгласно настройките на вашата база данни
7. Рестартирайте сървъра
Таблиците в базата данни се създават автоматично.
### ⬆️ Актуализация от версия 1.1
1. **Първо направете резервно копие на базата данни** – съществуващите таблици се преобразуват автоматично в UTF-8
2. Заменете `.amxx`файла
3. По избор: добавете новата опция`BYPASS_ACCESS` към `[Bad Words]`(вижте по-долу). Ако липсва, по подразбиране се използва `ADMIN_SLAY`
4. По избор: премахнете `VOICE_BLOCKING_DELAY`от –`[Tasks]` вече не се използва
Настоящата ви конфигурация продължава да работи – не са необходими други промени.
---
## ⚙️ КОНФИГУРАЦИЯ
Автоматично се генерира `gagsystem.ini`със следните раздели:
- **База данни**: Настройки за връзка с MySQL
- **Меню**: Персонализиране на интерфейса
- **Чат**: Префикс на съобщението в чата
- **Причини**: Списък с причини за шеги
- **Times**: Варианти за продължителност
- **Видове чат**: Чат/Глас/И двете опции
- **HUD**: Положение и време на появата на съобщенията на HUD
- **Задачи**: График за извършване на проверки на миналото
- **Достъп**: Нива на администраторски права
- **Нецензурни думи**: Филтър за автоматично блокиране
- **Ограничения**: Максимален брой причини/пъти/нецензурни думи за зареждане
- **Лог файлове**: Конфигурация на регистрирането на събития (`LOGS_ENABLED = 1`, `LOGS_FILE = gagsystem.log`)
- **Звуци**: Аудиоефекти
- **Проверки**: Синхронизиране на базата данни на цикли
- **„Прогресивен**“: Мултипликатор за рецидивисти
- **Обратно броене**: Таймер на HUD за играчи с запушени уста
### Филтър за нецензурни думи
```ini
[Bad Words]
ENABLED = 1
; Gag duration in minutes (0 = permanent)
GAG_TIME = 5
; 0 = Chat, 1 = Voice, 2 = Both
GAG_TYPE = 0
; Admins with this flag are not checked by the filter (leave empty = nobody bypasses)
BYPASS_ACCESS = ADMIN_SLAY
WORD_1 = example
```
`BYPASS_ACCESS` приема имена на опции (`ADMIN_SLAY`, `ADMIN_KICK`, ...) или букви на опции (например `e`).
### Прогресивно наказание
```ini
[Progressive]
ENABLED = 1
MULTIPLIER = 1.5
MAX_MULTIPLIER = 5
```
Всеки предишен „гаг“ удвоява продължителността с `MULTIPLIER`, като максималното увеличение е пъти`MAX_MULTIPLIER` повече от първоначалната.
Пример: 10-минутен гаг се удължава до 15 минути при втория гаг, до 23 минути при третия... и така до 50 минути. Постоянните гагове не се засягат.
---
## 🎮 КОМАНДИ
### Административни команди
- `amx_gagmenu` – Отваря интерактивното меню с шеги (само в играта)
- `amx_gag <user> [minutes] [reason] [type]` – Команда за директно запушване на устата
- Задължително е само името на играча. Настройки по подразбиране: **30 минути**, причина **„Не е посочена“**, тип **„Чат + глас“**
- Причината може да съдържа интервали без кавички
- **Примери**:
```
amx_gag John
amx_gag John 60
amx_gag John 60 spamming in chat
amx_gag John 60 spam 0
amx_gag John 0 advertising 2
```
- **Протокол**: `0`= постоянен
- **Типове** (последният аргумент):
- `0` = Само чат
- `1` = Само глас
- `2` = Чат + Глас
- `amx_ungag <player>` – Премахва кърпата от устата на играча
- `amx_gaginfo <player>` – Показва подробности за блокирането на даден играч (SteamID, IP, тип, администратор, причина, оставащо време)
- `amx_gaglist` – Изброява всички активни шеги от базата данни
- `amx_cleangags` – Премахва всички цензурни ограничения
Всички команди за администриране работят и от **конзолата** **на** **сървъра,** и от **rcon**.
### Команди за играча
- `/gagstatus` или `/mygag`– Показва състоянието на запушването и оставащото време
---
## 🛡️ БЕЗОПАСНОСТ
- **Двойна идентификация**: SteamID + съвпадение на IP адреса – повторното свързване не премахва ограничението за говорене
- **Защита срещу „Non-Steam**“: LAN идентификаторите никога не се използват за съпоставяне, така че играчите не могат да бъдат блокирани по грешка
- **Асинхронни SQL заявки**: обработката и проверките се изпълняват на заден план – сървърът не се блокира, дори при отдалечена база данни
- **Защита срещу SQL-инжектиране**: Всички потребителски данни се обработват чрез екраниране
- **Защита срещу злоупотреби**: Достъпът до менюто и въвеждането на потребителски причини е ограничен само за администратори, като всички въведени данни се проверяват
- **Синхронизация по рундове**: Автоматична синхронизация на всички промени в гаговете от базата данни
- **Автоматично откриване**: Открива нови, редактирани или премахнати скечове
- **Актуализации в реално време**: автоматично синхронизира причината, часа и типа
- **Не се изисква повторно свързване**: промените се прилагат автоматично в следващия рунд
---
## 📝 ФОРМАТ НА ДНЕВНИКА
```
L MM/DD/YYYY - HH:MM:SS: Admin X gagged player Y for Z minutes with reason 'ABC' (Type: Chat)
L MM/DD/YYYY - HH:MM:SS: Admin X permanently gagged player Y with reason 'ABC' (Type: Chat)
L MM/DD/YYYY - HH:MM:SS: Admin X ungagged player Y
L MM/DD/YYYY - HH:MM:SS: Gag expired for player Y (Type: Voice)
L MM/DD/YYYY - HH:MM:SS: SYSTEM automatically gagged player Y for Z minutes (0 = permanent) with reason 'Swearing (badword)' (Type: Both)
L MM/DD/YYYY - HH:MM:SS: Gag validation failed for player Y - gag was manually removed from database
L MM/DD/YYYY - HH:MM:SS: Gag details updated for player Y - Admin: X, Reason: ABC, Type: 0
```
---
## 🆕 НАЙ-НОВАТА АКТУАЛИЗАЦИЯ (версия 1.2)
### 🐞 Поправки на грешки
- Отстранена е проблема със сигурността, който позволяваше на обикновените играчи да отварят менюто „Gag“
- Играчите с запушени уста вече виждат всички съобщения в чата (съобщенията от плъгини, изпратени към тях, се блокираха)
- Микрофонът вече се възстановява правилно, когато изтече ефектът „Чат + Глас“
- Играчите, които не използват Steam (`STEAM_ID_LAN`, `VALVE_ID_LAN`), вече не споделят същия виц
- Прогресивното наказание вече наистина дава резултат (преди това никога не удължаваше продължителността)
- Постоянните шеги вече винаги имат предимство пред временните
- Вече не е възможно да се поставят „гаг“-ове на грешния играч, ако някой се свърже отново в същия слот
- Невалидните стойности в `amx_gag`(например в`abc` минути) вече не водят до трайно ограничаване на изразяването
- Когато двама администратори наложат мълчание на един и същ играч едновременно, причините, които посочват, вече не се заменяват взаимно
- `GAG_TIME = 0` в филтъра за нецензурни думи това вече означава „постоянен“ (преди срокът му изтичаше веднага)
- Командите в конзолата на сървъра вече не излъчват резултатите си към всички играчи
- Постоянният HUD за кърпата вече показва действителния тип на кърпата
- Отстранени са сривовете, причинени от невалидни типове „гаг“ в базата данни или конфигурацията
### 🚀 Нови функции
- `amx_gag` вече се изисква само името на играча – минутите, причината и видът са по избор
- Причините в могат`amx_gag` да съдържат интервали без кавички
- Всички команди за администриране вече показват отговор в конзолата (и работят от конзолата на сървъра / rcon)
- Добавена е `BYPASS_ACCESS`опция – администраторите с този флаг прескачат филтъра за нецензурни думи
- Пълна поддръжка на кирилица / UTF-8 за имена и причини
- Таблица с историята на запушването на устата при прогресивно наказание
### ⚙️ Оптимизации
- **1 заявка към базата данни на рунд вместо до 64** (синхронизация на рунда за всички играчи едновременно)
- Гейгингът вече не блокира сървъра по време на изчакване на базата данни
- `amx_gaglist` вече не блокира сървъра, когато се използва в играта
- Добавени са индекси в базата данни за бързо търсене (създадени автоматично)
- Конфигурационният файл се чете веднъж, а не по веднъж за всяка настройка
- Антиспам за съобщението „you are gagged“
- Автоматично възстановяване на връзката с базата данни при загуба на връзката
- Премахнати са ненужните задачи и мъртвият код
---
## 🕘 ПРЕДХОДНО ОБНОВЕНИЕ (v1.1)
### 🐞 Поправки на грешки
- Поправено откриване на флага за администратор (имунитет)
- Отстранени са блокиранията на сървъра, причинени от SQL заявки (вече са асинхронни)
- Поправени са дублиращите се наказания при повторно свързване
- Поправен е филтърът за нецензурни думи (вече търси само цели думи)
- Отстранени уязвимости, свързани със SQL-инжектиране
- Отстранени са проблемите с административното меню при голям брой играчи
- Поправена надеждността на съхранението на наказанията в базата данни
- Премахнат е ненужният/остарял код
### 🚀 Нови функции
- Добавена е система за имунитет на администраторите (базирана на флагове)
- Добавен е таймер за прогресивно наказание
- Добавена е команда за играч`/gagstatus`
- Добавена е командата `amx_gaginfo`„admin“
- Добавен е таймер в HUD за играчи с запушени уста
- Подобрена система за конфигуриране (повече опции, по-лесна настройка)
---
## 📞 КОНТАКТ
illusion @ CodeStrike.STORE