# SISTEMUL ILLUSION SQL GAG v1.2
**Autor:** illusion @ CodeStrike.STORE
**Plugin:** AMX Mod X pentru Counter-Strike 1.6
---
## 🎯 PREZENTARE GENERALĂ
Sistem avansat de restricționare bazat pe MySQL, cu protecție puternică împotriva eludării, performanță ridicată pe serverele încărcate și control complet asupra configurării.
---
## ✨ CARACTERISTICI
- **Tipuri de gaguri**: chat, voce sau ambele
- **Durată flexibilă**: gaguri pe bază de minute sau permanente
- **Motive personalizate**: complet configurabile prin fișierul INI, plus motive personalizate introduse direct în joc
- **Filtru de cuvinte neadecvate**: Blocare automată a cuvintelor interzise (detectare a cuvintelor întregi), cu opțiune de ocolire pentru administrator
- **Sistem de înregistrare**: jurnale detaliate ale tuturor evenimentelor de tip „gag”
- **Anti-Bypass**: Gag-urile sunt asociate pe baza SteamID-ului **și** a adresei IP – reconectarea sau schimbarea numelui nu ajută
- **Nu este compatibil cu Steam**: ID-urile partajate, cum ar fi `STEAM_ID_LAN`/ , `VALVE_ID_LAN`sunt asociate doar pe baza adresei IP, astfel încât jucătorii care nu folosesc Steam nu pot partaja niciodată același gag
- **Sincronizare pe runde**: Detectează automat modificările aduse gag-urilor (adăugare/editare/ștergere) din baza de date (de exemplu, de pe un site web)
- **Interfață de comandă directă**: Blocare rapidă cu `amx_gag`– este necesar doar numele jucătorului
- **Consola serverului / Suport RCON**: Toate comenzile de administrare funcționează atât din consola serverului, cât și prin RCON
- **Notificări HUD**: Afișarea în timp real a stării dispozitivului de blocare a sunetului, cu cronometru de numărătoare inversă
- **Efecte sonore**: Sunete configurabile pentru evenimente comice
- **Meniuri profesionale**: Interfață de administrare colorată
- **Imunitatea administratorului**: Sistem de protecție bazat pe semnalizare
- **Pedepse progresive**: Recidiviștii primesc automat călușuri mai lungi
- **Suport pentru alfabetul chirilic / UTF-8**: Numele și motivele din orice limbă sunt stocate corect
---
## 📋 CERINȚE
- AMX Mod X **1.9 sau o versiune mai recentă**
- **ReAPI**
- **CromChat**
- Modulul **MySQL** este activat (`mysql`în`modules.ini`)
- Baza de date MySQL / MariaDB
---
## 🚀 INSTALARE
1. Încărcați `ILLUSION_GagSystem.amxx`în `addons/amxmodx/plugins/`
2. Adaugă `ILLUSION_GagSystem.amxx`la `plugins.ini`
3. Încărcați fișierele audio în (`sound/gagsystem/``mute.wav`, `unmute.wav`) – sau lăsați câmpurile pentru căile de acces la fișiere goale în fișierul de configurare
4. Creați o bază de date MySQL
5. Porniți serverul o singură dată – acesta se`configs/gagsystem.ini` creează automat
6. Editați `configs/gagsystem.ini`utilizând setările bazei de date
7. Reporniți serverul
Tabelele bazei de date sunt create automat.
### ⬆️ Actualizare de la versiunea 1.1
1. **Faceți mai întâi o copie de rezervă a bazei de date** – tabelele existente sunt convertite automat în UTF-8
2. Înlocuiți fișierul`.amxx`
3. Opțional: adăugați noua opțiune`BYPASS_ACCESS` la (`[Bad Words]`vezi mai jos). Dacă lipsește, valoarea implicită este `ADMIN_SLAY`
4. Opțional: eliminați `VOICE_BLOCKING_DELAY`din `[Tasks]`– nu mai este folosit
Configurația dvs. actuală continuă să funcționeze – nu sunt necesare alte modificări.
---
## ⚙️ CONFIGURARE
Se generează automat cu`gagsystem.ini` secțiuni:
- **Baza de date**: setări de conectare la MySQL
- **Meniu**: Personalizarea interfeței
- **Chat**: Prefix pentru mesajele de chat
- **Motive**: Lista motivelor de tip „gag”
- **Times**: Opțiuni de durată
- **Tipuri de chat**: Chat/Voce/Ambele opțiuni
- **HUD**: Poziția și momentul afișării mesajelor HUD
- **Sarcini**: Stabilirea termenelor pentru verificarea antecedentelor
- **Acces**: Niveluri de permisiuni de administrator
- **Cuvinte neadecvate**: Filtru automat de cenzurare
- **Limite**: Numărul maxim de motive/de ori/de cuvinte neadecvate care pot fi încărcate
- **Jurnale**: Configurația înregistrării evenimentelor (`LOGS_ENABLED = 1`, `LOGS_FILE = gagsystem.log`)
- **Sunete**: Efecte audio
- **Verificări**: Sincronizarea bazei de date pe runde
- **Progresiv**: Multiplicator pentru recidiviști
- **Numărătoare inversă**: cronometru HUD pentru jucătorii cu gura legată
### Filtru pentru cuvinte neadecvate
```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` acceptă un nume de opțiune (`ADMIN_SLAY`, `ADMIN_KICK`, ...) sau litere de opțiune (de exemplu, `e`).
### Pedeapsa progresivă
```ini
[Progressive]
ENABLED = 1
MULTIPLIER = 1.5
MAX_MULTIPLIER = 5
```
Fiecare gag anterior multiplică durata cu `MULTIPLIER`, până la ori`MAX_MULTIPLIER` față de durata inițială.
Exemplu: o restricție de 10 minute devine de 15 minute la a doua restricție, de 23 de minute la a treia... până la 50 de minute. Restricțiile permanente nu sunt afectate.
---
## 🎮 COMENZI
### Comenzi de administrare
- `amx_gagmenu` – Deschide meniul interactiv de glume (doar în joc)
- `amx_gag <user> [minutes] [reason] [type]` – Comandă directă de blocare a cuvintelor
- Este necesar doar numele jucătorului. Valori implicite: **30 de minute**, motiv **„Nespecificat”**, tip **Chat + Voce**
- Motivul poate conține spații fără ghilimele
- **Exemple**:
```
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
```
- **Procesul-verbal**: `0`= permanent
- **Tipuri** (ultimul argument):
- `0` = Numai chat
- `1` = Numai voce
- `2` = Chat + Voce
- `amx_ungag <player>` – Îi scoate călușul unui jucător
- `amx_gaginfo <player>` – Afișează detalii privind o sancțiune aplicată unui jucător (SteamID, IP, tip, administrator, motiv, timp rămas)
- `amx_gaglist` – Afișează toate gagurile active din baza de date
- `amx_cleangags` – Îndepărtează toate călușurile
Toate comenzile de administrare funcționează și din **consola** **serverului** și din **RCON**.
### Comenzi pentru jucători
- `/gagstatus` sau `/mygag`– Afișează starea gag-ului și timpul rămas
---
## 🛡️ SECURITATE
- **Identificare dublă**: SteamID + corelare IP – reconectarea nu anulează restricția de comunicare
- **Protecție împotriva utilizatorilor care nu folosesc Steam**: ID-urile LAN nu sunt niciodată folosite pentru potrivirea jucătorilor, astfel încât aceștia nu pot fi blocați din greșeală
- **Interogări SQL asincrone**: procesele de filtrare și verificări se execută în fundal – serverul nu se blochează, chiar și în cazul unei baze de date la distanță
- **Protecție împotriva atacurilor de tip „SQL injection**”: Toate datele introduse de utilizator sunt codificate
- **Protecție împotriva exploatării**: Meniul și introducerea motivelor personalizate sunt accesibile doar administratorilor; toate datele introduse sunt validate
- **Sincronizare pe runde**: Sincronizează automat toate modificările privind gag-urile din baza de date
- **Detectare automată**: Detectează gag-urile noi, modificate sau eliminate
- **Actualizări în timp real**: sincronizează automat motivul, ora și tipul
- **Nu este necesară reconectarea**: modificările se aplică automat în runda următoare
---
## 📝 FORMATUL JURNALULUI
```
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
```
---
## 🆕 ULTIMA ACTUALIZARE (v1.2)
### 🐞 Remedierea erorilor
- S-a remediat o problemă de securitate care le permitea jucătorilor obișnuiți să acceseze meniul ascuns
- Jucătorii cu gura astupată pot vedea acum toate mesajele din chat (mesajele din plugin trimise către ei erau blocate)
- Microfonul este acum restabilit corespunzător atunci când expiră o restricție de tip „Chat + Voce”
- Jucătorii care nu folosesc Steam (`STEAM_ID_LAN`, `VALVE_ID_LAN`) nu mai au aceeași glumă
- Pedeapsa progresivă funcționează acum cu adevărat (înainte nu a dus niciodată la prelungirea duratei)
- Acum, glumele permanente au întotdeauna prioritate față de cele temporare
- Gag-urile nu mai pot fi aplicate jucătorului greșit dacă cineva se reconectează pe același slot
- Valorile nevalide în `amx_gag`(de exemplu, `abc`exprimate în minute) nu mai duc la o restricție permanentă
- Dacă doi administratori îi aplică aceluiași jucător o sancțiune de tip „gagging” în același timp, motivele lor nu se suprapun
- `GAG_TIME = 0` în filtrul de cuvinte neadecvate, această opțiune înseamnă acum „permanent” (înainte expira instantaneu)
- Comenzile din consola serverului nu mai transmit rezultatele către toți jucătorii
- HUD-ul pentru călușul permanent afișează acum tipul real al călușului
- S-au remediat blocările cauzate de tipuri de gag-uri nevalide din baza de date sau din fișierul de configurare
### 🚀 Funcții noi
- `amx_gag` acum se solicită doar numele jucătorului – minutele, motivul și tipul sunt opționale
- Motivele din `amx_gag`pot conține spații fără ghilimele
- Toate comenzile de administrare afișează acum răspunsul în consolă (și funcționează atât din consola serverului, cât și din RCON)
- Opțiune`BYPASS_ACCESS` adăugată – administratorii care au această opțiune activată ocolesc filtrul de cuvinte neadecvate
- Suport complet pentru caractere chirilice și UTF-8 pentru nume și motive
- Tabel cu istoricul măsurilor de restricție pentru pedepsirea progresivă
### ⚙️ Optimizări
- **1 interogare a bazei de date pe rundă, în loc de până la 64** (sincronizarea rundei pentru toți jucătorii simultan)
- Gagging-ul nu mai blochează serverul în timpul așteptării bazei de date
- `amx_gaglist` nu mai blochează serverul atunci când este utilizat în joc
- Au fost adăugați indexuri în baza de date pentru căutări rapide (create automat)
- Fișierul de configurare este citit o singură dată, nu o dată pentru fiecare setare
- Protecție anti-spam pentru mesajul „ești redus la tăcere”
- Reconectare automată la baza de date în cazul pierderii conexiunii
- S-au eliminat sarcinile inutile și codul inactiv
---
## 🕘 ACTUALIZARE ANTERIOARĂ (v1.1)
### 🐞 Remedierea unor erori
- S-a remediat detectarea indicatorului de administrator (imunitate)
- S-au remediat blocările serverului cauzate de interogările SQL (acum asincrone)
- S-a remediat problema pedepselor duplicate la reconectare
- S-a remediat filtrul de cuvinte necorespunzătoare (acum se potrivesc doar cuvintele întregi)
- Au fost remediate vulnerabilitățile legate de injectarea de cod SQL
- S-au remediat problemele legate de meniul de administrare apărute în cazul unui număr mare de jucători
- S-a remediat problema fiabilității stocării sancțiunilor în baza de date
- S-a eliminat codul inutil/învechit
### 🚀 Funcții noi
- A fost adăugat sistemul de imunitate pentru administratori (bazat pe steaguri)
- S-a adăugat un cronometru pentru pedepse progresive
- S-a adăugat comanda pentru jucător`/gagstatus`
- S-a adăugat comanda de administrator`amx_gaginfo`
- S-a adăugat un cronometru HUD pentru jucătorii cu gura legată
- Sistem de configurare îmbunătățit (mai multe opțiuni, configurare mai ușoară)
---
## 📞 CONTACT
illusion @ CodeStrike.STORE