# Sistemul de suspendare CodeStrike
**Un sistem complet de banare pentru Counter-Strike 1.6, cu o bază de date reală, un meniu modern, integrare cu Discord și peste 100 de setări.**
Acesta înlocuiește complet sistemul de blocări integrat în AMX Mod X. În loc de blocări salvate într-un fișier text pe un singur server, beneficiezi de o bază de date adecvată, un istoric complet pentru fiecare jucător, un meniu simplificat în joc și notificări în timp real pe Discord.
---
## Ce face
Atunci când un jucător blocat încearcă să se alăture jocului, sistemul îl identifică pe baza SteamID-ului și a adresei IP, îl exclude din joc și afișează în consola sa motivul blocării, cât timp mai are de așteptat și cum poate contesta decizia. Tot textul respectiv este redactat de tine — nimic nu este predefinit în plugin.
Când un administrator blochează pe cineva, toți utilizatorii serverului văd acest lucru în chat și pe ecran, iar blocarea este înregistrată în baza de date, într-un fișier jurnal și în canalul tău de pe Discord, împreună cu toate detaliile.
Când un jucător care are deja interdicții se alătură jocului, administratorii voștri primesc un avertisment în chat. Știți că această persoană a fost sancționată anterior, înainte ca ea să facă ceva.
---
## Caracteristici principale
### Baza de date
* **SQLite în mod implicit** — funcționează imediat, fără server de baze de date, nu trebuie configurat nimic
* **MySQL** — o singură linie în fișierul de configurare este suficientă pentru a comuta între ele
* O singură bază de date MySQL poate deservi mai multe servere, astfel încât **o restricție aplicată unuia dintre ele se aplică tuturor**
* Fiecare interogare este procesată în mod threaded — baza de date nu blochează niciodată serverul, nici măcar în cazul unei conexiuni lente
* Indexat după SteamID, adresă IP, nume și stare, astfel încât căutările să rămână rapide chiar și cu zeci de mii de interdicții
### Interdicții
* Blocare după **SteamID**, **adresă IP** și, opțional, după **pseudonim**
* Interdicții **temporare și permanente**
* Format flexibil de afișare a orei: `30`, `30m`, `2h`, `3d`, `1w`, sau `0`pentru programul permanent
* **Blocări offline** pe baza SteamID-ului sau a adresei IP, fără ca jucătorul să se afle pe server
* O listă gata pregătită cu motivele pentru care îți editezi singur textul, plus opțiunea ca un administrator să-și introducă propriile motive
* Un motiv poate avea propria durată, astfel încât selectarea acestuia omite etapa de durată și trece direct la confirmare
* Interdicțiile expirate sunt marcate automat
### Meniu
* Începe cu `amx_banmenu`
* Suspendarea în trei pași: jucător → motiv → durată → un ecran de confirmare cu rezumatul
* Lista de blocări active, istoricul complet și căutare după SteamID, adresă IP sau o parte dintr-un nume
* Anulează blocarea din meniu sau șterge complet înregistrarea blocării — două acțiuni distincte, așa că tu decizi dacă jucătorul își păstrează istoricul
* Codificare pe culori: interdicțiile active sunt marcate cu roșu, cele ridicate cu gri, iar durata își schimbă culoarea în funcție de gravitatea sancțiunii
### Discord
* O notificare corespunzătoare la fiecare blocare și deblocare
* Afișează jucătorul, SteamID-ul, adresa IP, administratorul, motivul, durata, data de expirare și ID-ul interdicției
* Fiecare câmp poate fi ascuns separat
* Culorile, titlurile, subsolul, numele botului și avatarul sunt toate configurabile
* Adresa IP poate fi ascunsă (`85.11.44.xxx`) dacă preferi să nu o afișezi pe Discord
### Istoric interdicții
* Un istoric complet pentru fiecare jucător, păstrat chiar și după ridicarea suspendării
* Administratorii care dețin un steag la alegerea ta sunt anunțați în chat atunci când un jucător care a fost suspendat anterior se alătură jocului
* **Avertisment privind eludarea interdicției** — atunci când cineva se alătură folosind un SteamID nou de pe o adresă IP care face obiectul unei interdicții active, administratorii voștri sunt informați. Nimeni nu este interzis din această cauză, așa că o conexiune partajată nu îi va costa niciodată unui jucător nevinovat locul său în joc
* Căutare după SteamID, adresă IP sau nume, din meniu sau din consolă
* `amx_banstats` prezintă totalurile, suspendările din ultimele 7 zile și care sunt administratorii care aplică cele mai multe sancțiuni
### HUD și sunet
* Un mesaj afișat pe ecran privind interzicerea și ridicarea interzicerii
* HUD clasic sau DHUD, alegerea îți aparține
* Culorile, poziția, efectele și intervalele de timp sunt toate specificate în fișierul de configurare
* Un sunet de blocare și deblocare auzit de întregul server (nu este setat nimic în mod implicit)
### Jurnale
* Un banner de pornire în consola serverului care afișează configurația activă și contorul actual de blocări
* Un fișier jurnal separat, al cărui nume conține data
* Fiecare blocare, deblocare și ștergere a listei este înregistrată — cine, pe cine, când, pentru cât timp și de ce
---
## Comenzi
| Comandă | Ce face |
|---|---|
| `amx_banmenu` | Deschide meniul principal |
| `amx_unbanmenu` | Deschide direct lista de blocări active |
| `amx_ban <nume\|#userid\|STEAM_ID\|IP> <time>[motiv]` | Exclude un jucător |
| `amx_unban <STEAM_ID\|IP\|#banid\|nume> [motiv]` | Ridică o interdicție |
| `amx_bans` | Afișează lista interdicțiilor active în consolă |
| `amx_banhistory <STEAM_ID\|IP\|nume>` | Istoricul complet al unui jucător |
| `amx_banstats` | Numărul total de interdicții și administratorii care au emis cele mai multe interdicții |
| `amx_bans_reload` | Reîncarcă setările fără a schimba harta |
| `amx_clearbans <active\|toate> CONFIRM` | Șterge întreaga listă |
De asemenea, preia și`amx_banip` `amx_addban`, astfel încât nimic nu revine la sistemul standard de interdicții AMX Mod X.
Fiecare comandă dispune de propriul indicator configurabil.
---
## Protecție împotriva greșelilor
Pluginul este conceput astfel încât o eroare a administratorului sau o configurație defectuoasă să nu poată provoca daune.
* **Imunitate** — jucătorii care dețin un steag la alegerea ta nu pot fi excluși, cu excepția cazului în care această măsură este luată de un administrator cu un steag de rang superior
* **Limite de timp** — stabiliți o durată maximă pentru care un administrator obișnuit poate aplica o suspendare și rezervați suspendările permanente exclusiv proprietarului
* **Este necesară confirmarea** — se solicită`amx_clearbans` o confirmare explicită`CONFIRM`, iar ștergerea unui singur înregistrare din meniu necesită mai întâi o confirmare. Ambele au propriul indicator, astfel încât nimic nu este șters din greșeală
* **Fără injecții SQL** — pseudonimele și motivele sunt filtrate înainte de a ajunge în interogare
* **O configurație incorectă nu provoacă nicio problemă** — fiecare valoare este verificată la încărcare și readusă într-un interval sigur
---
## Cerințe
* AMX Mod X **1.9 sau o versiune mai recentă** — compilat și testat pe versiunea 1.10
* Modulul **SQLite** sau **MySQL** (SQLite este inclus în instalarea standard)
* Modulul **EasyHttp** — doar dacă doriți notificările de pe Discord
Pluginul este livrat deja **compilat și împreună cu codul sursă complet**.
---
## Instalare
1. Încărcați `codestrike_bans.amxx`în `addons/amxmodx/plugins/`
2. Adaugă-l la **cele** de mai **sus**`plugins.ini` `admincmd.amxx`și `plmenu.amxx`
3. Reporniți serverul
Ambele fișiere de configurare se creează automat la prima rulare în `addons/amxmodx/configs/CodeStrikePlugins/`. Nu este necesară crearea unei baze de date și nici importarea vreunui tabel — SQLite se ocupă de toate acestea în mod automat.
---
## Configurare
Totul este controlat de două fișiere, fără a modifica nici măcar o singură linie de cod:
**`codestrike_bans.ini`** — 110 setări împărțite în 14 secțiuni: acces și indicatori, baza de date, verificări ale îmbinărilor, istoric, Discord, jurnale, meniu, HUD, sunete, mesaje de chat, lista motivelor și lista duratelor.
**`codestrike_bans_info.ini`** — tot ceea ce vede jucătorul exclus: textul afișat în consolă, textul din fereastra de excludere și instrucțiunile privind modul de contestare.
Textele acceptă marcatori de poziție care se completează automat:
```
%name% %steamid% %ip% %reason% %admin% %length%
%expire% %timeleft% %banid% %date% %server% %bancount% %banname%
```
Orice modificare este aplicată cu `amx_bans_reload`, fără a modifica harta.
---
## Pe scurt
| | |
|---|---|
| Versiune | 1.0 |
| Autor | illusion @ CodeStrike |
| Baza de date | SQLite sau MySQL |
| Setări | 110 opțiuni în 2 fișiere ini |
| Cod | Peste 5450 de linii, se compilează fără niciun avertisment |
| Limba | Fiecare șir vizibil se află în fișierele ini și poate fi tradus |
---
*Fiecare fragment de text afișat de plugin se editează din fișierul de configurare. Nu este nevoie să modificați codul pentru a-l traduce sau a-l adapta la serverul dumneavoastră.*