# Система за блокиране на CodeStrike
**Цялостна система за забрани за Counter-Strike 1.6 с реална база данни, модерно меню, интеграция с Discord и над 100 настройки.**
Тя напълно замества системата за блокиране, вградена в AMX Mod X. Вместо блокировки, записани в текстов файл на един-единствен сървър, получавате пълноценна база данни, пълна история за всеки играч, изчистено меню в играта и известия в реално време в Discord.
---
## Какво прави
Когато забранен играч се опита да се присъедини, системата го идентифицира по SteamID и IP адрес, го изгонва и извежда в конзолата му информация за причината за забраната, колко време остава до края ѝ и как да подаде жалба. Целият този текст се пише от вас — нищо от него не е заложено в плъгина.
Когато администратор блокира някого, всички потребители на сървъра виждат това в чата и на екрана; блокирането се записва в базата данни, в лог файла и във вашия канал в Discord с пълните подробности.
Когато се присъедини играч, който вече е бил блокиран, вашите администратори получават предупреждение в чата. Така знаете, че този човек е бил наказан и преди, още преди да е направил нещо.
---
## Основни характеристики
### База данни
* **SQLite по подразбиране** — работи веднага, без сървър за бази данни, без да се налага да се настройва нищо
* **MySQL** — един ред в конфигурационния файл е достатъчен, за да се превключи
* Една база данни MySQL може да обслужва няколко сървъра, така че **забрана, наложена на един от тях, важи за всички**
* Всяка заявка се изпълнява в отделен поток — базата данни никога не блокира сървъра ви, дори и при бавна връзка
* Индексирано по SteamID, IP, име и статус, така че търсенето остава бързо дори при десетки хиляди забрани
### Забрани
* Блокиране по **SteamID**, **IP** и, по избор, по **псевдоним**
* **Временни и постоянни** забрани
* Гъвкав формат на времето: `30`, `30m`, `2h`, `3d`, `1w`, или `0`за постоянни
* **Офлайн забрани** по SteamID или IP, без играчът да е на сървъра
* Готов списък с причини, поради които сами редактирате, както и възможност администраторът да въведе свои собствени
* Причината може да има собствена продължителност, така че при избора ѝ се пропуска стъпката с продължителността и се преминава директно към потвърждението
* Изтеклите забрани се маркират автоматично
### Меню
* Започва с `amx_banmenu`
* Блокиране в три стъпки: играч → причина → продължителност → екран за потвърждение с обобщение
* Активен списък със забранени потребители, пълна история и търсене по SteamID, IP или част от името
* Отменете забраната от менюто или изтрийте напълно записите за забраната — това са две отделни действия, така че вие решавате дали играчът да запази историята си
* Обозначени с цветове: действащите забрани са в червено, отменените – в сиво, а продължителността променя цвета си в зависимост от тежестта на наказанието
### Discord
* Правилно отбелязване на всяко блокиране и отблокиране
* Показва играча, SteamID, IP адреса, администратора, причината, продължителността, датата на изтичане и ID-то на забраната
* Всяко поле може да бъде скрито поотделно
* Цветовете, заглавията, долният колонтитул, името на бота и аватарът могат да се настройват
* IP адресът може да бъде скрит (`85.11.44.xxx`), ако предпочитате да не го разкривате в Discord
### История на забраните
* Пълна история за всеки играч, която се запазва дори след отмяната на забраната
* Администраторите, които държат избрания от вас флаг, получават съобщение в чата, когато играч с предишни забрани се присъедини
* **Предупреждение за заобикаляне на забрана** — когато някой се присъедини с нов SteamID от IP адрес, към който е наложена активна забрана, вашите администратори биват уведомени. Никой не бива забраняван поради това, така че споделената връзка никога не коства мястото на невинен играч
* Търсене по SteamID, IP или име – от менюто или от конзолата
* `amx_banstats` показва общите данни, наложените забрани през последните 7 дни и кои администратори налагат най-много наказания
### HUD и звук
* Съобщение на екрана при блокиране и отблокиране
* Класически HUD или DHUD – изборът е ваш
* Цветовете, позицията, ефектите и времевите настройки се определят изцяло от конфигурацията
* Звук при блокиране и отблокиране, който се чува от целия сървър (по подразбиране нищо не е зададено)
### Дневници
* Банер за стартиране в конзолата на сървъра, показващ активната конфигурация и текущите броячи за забрани
* Отделен файл с лог, чието име съдържа датата
* Всяко блокиране, отблокиране и изчистване на списъци се записва — кой, кого, кога, за колко време и защо
---
## Команди
| Команда | Какво прави |
|---|---|
| `amx_banmenu` | Отваря главното меню |
| `amx_unbanmenu` | Отваря директно списъка с активните забрани |
| `amx_ban <име\|#userid\|STEAM_ID\|IP> <time>[причина]` | Блокира играч |
| `amx_unban <STEAM_ID\|IP\|#banid\|име> [причина]` | Отменя забраната |
| `amx_bans` | Показва списък с активните забрани в конзолата |
| `amx_banhistory <STEAM_ID\|IP\|име>` | Пълната история на един играч |
| `amx_banstats` | Общ брой на забраните и администраторите, наложили най-много забрани |
| `amx_bans_reload` | Презарежда настройките, без да се променя картата |
| `amx_clearbans <active\|всички> ПОТВЪРДИ` | Изчиства целия списък |
Освен това тя поема управлението `amx_banip`и на `amx_addban`, така че нищо не се връща към стандартната система за забрана на AMX Mod X.
Всяка команда разполага със собствен флаг, който може да се конфигурира.
---
## Защита срещу грешки
Плъгинът е написан така, че грешка от страна на администратора или повредена конфигурация да не могат да причинят щети.
* **Имунитет** — играчите, притежаващи знаме по ваш избор, не могат да бъдат изключени, освен от администратор с по-високо знаме
* **Временни ограничения** — да се определи максималната продължителност на блокирането, което може да наложи обикновен администратор, а постоянните блокирания да се запазят само за собственика
* **Необходимо е потвърждение** — `amx_clearbans`изисква изрично потвърждение`CONFIRM`, а при изтриването на отделен запис от менюто първо се задава въпрос. И двете действия разполагат със собствен флаг, така че нищо не се изтрива случайно
* **Без SQL-инжектиране** — псевдонимите и причините се филтрират, преди изобщо да стигнат до заявката
* **Повредена конфигурация не води до никакви проблеми** — всяка стойност се проверява при зареждането и се привежда в безопасен диапазон
---
## Изисквания
* AMX Mod X **1.9 или по-нова версия** — създадена и тествана на версия 1.10
* Модулът **SQLite** или **MySQL** (SQLite се доставя със стандартната инсталация)
* Модулът **EasyHttp** — само ако искате известия от Discord
Плъгинът се предоставя **в компилиран вид и с пълния изходен код**.
---
## Инсталиране
1. Качи в`codestrike_bans.amxx` `addons/amxmodx/plugins/`
2. Добавете го към **горепосоченото**`plugins.ini` и`admincmd.amxx` `plmenu.amxx`
3. Рестартирайте сървъра
И двата конфигурационни файла се създават автоматично при първото стартиране в `addons/amxmodx/configs/CodeStrikePlugins/`. Няма нужда да се създава база данни, нито да се импортира таблица — SQLite се справя с всичко това самостоятелно.
---
## Конфигурация
Всичко се управлява чрез два файла, без да се пипа нито един ред код:
**`codestrike_bans.ini`** — 110 настройки, разпределени в 14 раздела: достъп и флагове, база данни, проверки за обединяване, история, Discord, логове, меню, HUD, звуци, съобщения в чата, списъкът с причини и списъкът с продължителности.
**`codestrike_bans_info.ini`** — всичко, което вижда блокираният играч: текстът в конзолата, текстът в прозореца за изгонване и инструкциите за подаване на жалба.
Текстовете поддържат заместващи символи, които се попълват автоматично:
```
%name% %steamid% %ip% %reason% %admin% %length%
%expire% %timeleft% %banid% %date% %server% %bancount% %banname%
```
Всяка промяна се прилага с `amx_bans_reload`, без да се променя картата.
---
## Накратко
| | |
|---|---|
| Версия | 1.0 |
| Автор | illusion @ CodeStrike |
| База данни | SQLite или MySQL |
| Настройки | 110 опции, разпределени в 2 ini файла |
| Код | 5450+ реда, компилира се без нито едно предупреждение |
| Език | Всеки видим текст се намира в ini файловете и може да бъде преведен |
---
*Всеки текст, който плъгинът показва, се редактира от настройките. Никога не се налага да пипате кода, за да го преведете или да го приспособите към вашия сървър.*