- Resource was created using AI
- Yes, partly
Вдохновлялся модулем от -r8. Не судите строго 
- Игровое меню в CS2 — команда !report открывает выбор игрока и причины через нативное меню Pisex. Команда !reports показывает игроку историю его жалоб. Игровой плагин поставляется в комплекте, написан на C++ под MetaMod.
- Веб-интерфейс админа — список репортов с фильтрами по статусу и серверу, длинное polling (новые репорты появляются без перезагрузки страницы), детальная карточка с 3-колоночным layout: причина, цель с K/D и аватаром, история чата перед репортом, история наказаний игрока, шаблоны вердиктов.
- Полный жизненный цикл репорта: взять в работу (репорт «лочится» за админом, другие видят кто рассматривает) → выдать предупреждение → закрыть с вердиктом из шаблонов либо своей формулировкой.
- Per-server permissions. Автоматический синк админов из as_admins_servers (Pisex AdminSystem). Каждый админ видит репорты и получает уведомления только с тех серверов, где он действительно админит. Поддержка manual-add с выбором серверов через чекбоксы.
- История наказаний игрока прямо в карточке репорта — баны, voice mute, chat mute, silence из as_punishments с автоматическим определением статуса (активно / истёк / снят / навсегда). Fallback на SourceBans если AdminSystem не подключён.
- Discord-интеграция: per-server вебхуки, embed-сообщения с цветовой плашкой статуса и кнопкой «Открыть на сайте». При смене статуса репорта Discord-сообщение обновляется (не плодятся дубли).
- Push-уведомления Neo3 для админов с фильтрацией по серверу.
- Cron-автоматизация:
- Авто-закрытие старых open-репортов по TTL.
- Деактивация истёкших предупреждений.
- Авто-закрытие репортов на игроков которых уже забанили.
- Refresh кэша админов из as_admins.
- Дизайн в едином стиле LR WEB NEO — использует только переменные темы, адаптируется ко всем цветовым схемам Neo3 (dark / light / любая кастомная). Mobile-friendly. Никаких глитчей при смене темы.
- Локализация: RU / EN / UA из коробки, 220+ ключей перевода.
- Settings админ-панель с 6 вкладками: Основные / Серверы / Доступы (делегаты с edit-mode) / Админы / Шаблоны вердиктов (drag-n-drop) / Логи (35+ типов событий с цветовыми pill'ами).
- Audit-лог всех действий — кто взял репорт, кто закрыл, кто выдал варн, кто менял настройки. Доступен в Settings → Логи.
- Безопасность — CSRF-защита, отдельные API-ключи per-server, маскирование Discord URL'ов в логах, защита от self-lockout для site-owner'а.
- Requirements
- LR WEB NEO v3
- AdminSystem
- Плагин cs2-reportsystem-metamod (входит в комплект)
- Install
Инструкция в архиве с модулем и плагином
- FAQ
- В: У меня нет AdminSystem (Pisex). Модуль будет работать?
О: Да. Модуль работает без AdminSystem — просто добавляйте админов вручную через Settings → Админы → «Добавить админа». Без AdminSystem не будет автосинка и истории наказаний из as_punishments, но всё остальное (приём репортов, рассмотрение, Discord, cron) работает полностью.
В: Как игрок репортит на сервере?
О: Командой !report в игровом чате. Откроется меню «выбери игрока» (только подключенные, без админов с иммунитетом) → меню «причина» (7 пресетов или своя формулировка через чат). Меню реализовано через Pisex IUtilsApi — нативное CS2-меню без внешних зависимостей.
В: Можно настроить, чтобы админы видели репорты только со своих серверов?
О: Да, это работает по умолчанию. При синхронизации с AdminSystem каждому админу автоматически устанавливается список серверов из as_admins_servers (если в AdminSystem прописано server_id = -1 = все серверы — у нас тоже все). При manual-add есть чекбоксы серверов: «ничего не выбрано» = все, выбран один = только он. Уведомления о новых репортах фильтруются точно так же — только с разрешённых серверов.
В: Что произойдёт, если игрока, на которого был репорт, забанит другой админ?
О: Если включен ban_auto_close, через ban_close_delay_h часов крон-задача автоматически закроет открытый репорт со статусом «Игрок забанен». Это предотвращает дубли работы — два админа не будут рассматривать одну и ту же жалобу.
В: Discord-уведомления приходят при изменении статуса?
О: Да, исходное сообщение обновляется через PATCH (не плодятся дубли). Если кто-то вручную удалил сообщение в Discord — обработчик 404 не падает, репорт остаётся в БД, просто без зеркала в Discord.
В: Можно ли изменить шаблоны вердиктов?
О: Да, через Settings → Шаблоны вердиктов. CRUD с drag-n-drop сортировкой, активацией/деактивацией. По умолчанию идёт 6 шаблонов: «Нарушитель был наказан», «Выдано предупреждение», «Игрок вышел с сервера», «Читов не найдено», «Некорректная жалоба», «Мало доказательств».
В: Какая нагрузка на сервер от polling'а?
О: Минимальная. Long polling запускается только когда админ открыл список репортов (раз в refresh_sec секунд, default 30). Один запрос = один проиндексированный SELECT с COUNT'ом. На сотне открытых страниц одновременно — около 3 RPS, нагрузка незаметна.
В: Что делать после обновления модуля?
О: 1) Удалить storage/cache/sessions/translator.json (новые ключи переводов). 2) Удалить storage/cache/sessions/modules_initialization.php (если меняется схема БД). 3) Сбросить OPcache через /reports/?ops=opcache_reset&secret=.... 4) Cache-bust в браузере (Ctrl+Shift+R).
В: Поддерживаются другие админ-плагины кроме AdminSystem?
О: На текущий момент — AdminSystem (Pisex), SourceBans, legacy as_bans. IksAdmin / IksAdminNew можно подключить точечно (BansLookup-сервис принимает новые источники). По запросу.
В: Можно ли отключить Discord и работать только через сайт?
О: Да. Просто оставьте поле «Discord webhook» пустым у сервера в Settings → Серверы. Уведомления админам всё равно будут приходить через push-систему Neo3 (колокольчик в шапке).
В: Как быть с приватностью игроков (IP в БД)?
О: IP цели сохраняется в lvl_web_reports_reports.target_ip, но не отображается в публичном UI. Доступ к IP — только у site-owner'а через прямой запрос к БД. Для GDPR-compliant использования рекомендуется настроить retention-политику (удаление старых репортов через X дней) либо хешировать IP перед сохранением.
В: Сколько серверов модуль поддерживает?
О: Технически — без ограничений. Тестировалось на 1-10 серверах. На больших сетях (50+ серверов) рекомендуется дать refresh_sec побольше (60-120 сек) и настроить отдельные Discord-каналы по группам серверов.
В: Можно использовать на нескольких сайтах одновременно?
О: Один экземпляр модуля = один сайт = одна БД. Если у вас несколько independent сайтов под разные сервер-группы — нужны отдельные установки модуля.




