Files
custom-rounds/README.md
T
deidara 13958f1e33 v1.2.3: PrintHintText + PrintCenterText вместо ShowHudText (для CSGO)
ShowHudText в CSGO не работает (это HL2-функция).
Используем PrintHintText (угол со звуком) + PrintCenterText (центр)
с повторами на 2/4/6 сек таймерами.
2026-05-01 17:54:25 +03:00

138 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ArcaneGame Custom Rounds Core
Плагин кастомных раундов для CS:GO серверов на SourceMod. Администраторы выбирают режим на следующий раунд через меню — и весь сервер играет в изменённых условиях.
## Функции
- 10 режимов кастомных раундов:
- **AWP Only** — только AWP + нож
- **AWP NoScope** — AWP без прицела (zoom заблокирован)
- **Scout Only** — только SSG-08 + нож
- **Scout NoScope** — Scout без прицела
- **Deagle Only** — только Deagle + нож
- **Deagle HS Only** — только Deagle, **в тело — 0 урона, только хедшоты**
- **HE Only** — только гранаты HE с бесконечным боезапасом
- **Ножевой раунд** — только ножи
- **Низкая гравитация** — гравитация уменьшена (настраивается)
- **1 HP** — у всех игроков минимальное здоровье
- Полное сохранение и восстановление инвентаря после кастомного раунда (основное оружие + патроны, запасное + патроны, нож, **все гранаты**, **броня**, **шлем**, **дефузер**)
- Блокировка покупок во время режима
- Блокировка зума для NoScope-режимов (через CommandListener + OnPlayerRunCmd)
- Показ **MOTD-картинки** во freezetime в начале кастомного раунда (HTTP-страница, авто-закрытие через 12с)
- Кулдаун **5 раундов** для обычных админов между запусками. Группы DEIDARA / TESTER и флаг `z` (Root) обходят кулдаун
- Логирование действий админов (выбор/отмена режима) в `addons/sourcemod/logs/custom_rounds.log`
- Защита от спама: один и тот же режим нельзя поставить в очередь дважды подряд
- Интеграция AG Coins (награда за победу / убийства / хедшоты / выживание)
- Объявления в чат о текущем и следующем режиме
## Зависимости
- [SourceMod](https://www.sourcemod.net/) 1.10+
- `agcoins_bridge` — библиотека AG Coin (входит в систему ArcaneGame)
## Установка
1. Скомпилировать `scripting/ArcaneGame_CustomRounds_Core.sp`
2. Положить `.smx` в `addons/sourcemod/plugins/`
3. Убедиться, что `agcoins_bridge` загружен на сервере
4. Перезапустить сервер — конфиг создастся автоматически в `cfg/sourcemod/ArcaneGame_CustomRounds_Core.cfg`
## Команды
| Команда | Доступ | Описание |
|---|---|---|
| `!cr` / `sm_cr` | Группы DEIDARA / TESTER или по флагу | Открыть меню кастомных раундов |
| `!cr_status` / `sm_cr_status` | Любой админ с доступом к меню | Показать текущий/следующий режим и кулдаун |
## ConVars
| ConVar | По умолчанию | Описание |
|---|---|---|
| `sm_cr_access_flag` | `b` | Флаг доступа для sm_cr (fallback) |
| `sm_cr_access_use_overrides` | `1` | Разрешить доступ через admin_overrides.cfg |
| `sm_cr_coins_enable` | `1` | Включить AG Coin награды |
| `sm_cr_coins_win` | `0` | Монеты за победу в кастомном раунде |
| `sm_cr_coins_kill` | `0` | Монеты за убийство |
| `sm_cr_coins_headshot` | `0` | Монеты за хедшот |
| `sm_cr_coins_survive` | `0` | Монеты за выживание победителю |
| `sm_cr_lowgravity_value` | `0.40` | Значение гравитации (Low Gravity) |
| `sm_cr_onehp_value` | `1` | Здоровье игроков в режиме 1 HP |
| `sm_cr_announce` | `1` | Показывать объявления в чат |
| `sm_cr_show_motd` | `1` | Показывать картинку режима во freezetime |
| `sm_cr_cooldown_rounds` | `5` | Кулдаун в раундах для обычных админов (DEIDARA/TESTER/z обходят) |
## Уровни доступа
| Уровень | Кулдаун | Возможности |
|---|---|---|
| Группа **DEIDARA** | Нет | Все режимы, все запуски |
| Группа **TESTER** | Нет | Все режимы, все запуски |
| Флаг `z` (Root) | Нет | Все режимы, все запуски |
| Любой другой админ с флагом `sm_cr_access_flag` | **5 раундов** | Все режимы, но запуск раз в 5 раундов |
| Без флага | Нет доступа | — |
## MOTD-картинка во freezetime
Когда стартует кастомный раунд, всем игрокам отображается HTML-страница на время freezetime+несколько секунд. Страница хостится по адресу:
```
http://37.228.88.57/cr/<slug>.html
```
Slug-ы: `awp`, `awp-noscope`, `scout`, `scout-noscope`, `deagle`, `deagle-hs`, `he`, `knife`, `lowgrav`, `onehp`.
По умолчанию страницы — стилизованные баннеры с заголовком режима. Чтобы заменить на реальные изображения — отредактируйте `<тег img>` в HTML на сервере по пути `/srv/cr-images/cr/<slug>.html`. URL картинок плагин дёргает динамически по slug-у, так что менять плагин не нужно.
Отключить показ полностью — `sm_cr_show_motd 0`.
## Логирование
Все запуски и отмены кастомных раундов пишутся в:
```
addons/sourcemod/logs/custom_rounds.log
```
Формат:
```
[YYYY-MM-DD HH:MM:SS] [FULL|REG] АдминИмя (STEAM_X:Y:Z) -> ВЫБРАЛ/ОТМЕНИЛ режим: <название> [раунд N]
```
Где:
- `FULL` — DEIDARA / TESTER / Root (без кулдауна)
- `REG` — обычный админ (с кулдауном)
## Версия
`1.2.3` — Автор: deidara.dev
### Changelog
- **1.2.3**
- Замена `ShowHudText` (для HL2, не работал в CSGO) на надёжные `PrintHintText` + `PrintCenterText`
- Уведомление о кастомном раунде показывается всем игрокам тремя способами одновременно: MOTD-картинка, hint-text в углу со звуком, большой центральный текст
- Центральный текст повторяется таймерами на 2/4/6 секундах чтобы держать сообщение видимым на протяжении всего freezetime
- **1.2.2**
- Фикс лога: переход с `LogToFileEx(absolute_path)` на `OpenFile("addons/sourcemod/logs/custom_rounds.log", "a")`. На MyArena `LogToFileEx` с absolute путём от `BuildPath` молча не создавал файл.
- Фикс MOTD: используется стандартный `ShowMOTDPanel` (правильно сериализует KeyValues с типом как строкой)
- Добавлен **гарантированный HUD-overlay** с названием и описанием режима в центре экрана (~6 секунд), показывается всегда независимо от клиентского `cl_disablehtmlmotd`
- **1.2.1**
- Фикс: жёсткая проверка прав в `HasCustomRoundsAccess` — теперь обязательно требуется хотя бы один админ-флаг (раньше при пустом флаге в `admin_overrides.cfg sm_cr` мог пропускать обычных игроков)
- Защитные re-check вызовы в `MenuHandler_Main`, `QueueCustomRound`, `CancelPendingRound` — даже если меню каким-то образом окажется у игрока без прав, действия не выполнятся
- Добавлен `IsFakeClient` в проверку (боты заблокированы)
- Дополнительный `LogMessage` в стандартный SM-лог при логировании действий — для надёжности на shared-хостингах
- **1.2.0**
- Добавлены режимы: **Scout NoScope**, **Deagle Only**, **Deagle HS Only** (только хедшоты)
- Полное сохранение/восстановление инвентаря: гранаты, броня, шлем, дефузер, патроны
- Фикс: при заходе нового игрока на освободившийся слот не выдаётся чужой инвентарь
- Фикс: убрано двойное применение режима в начале раунда
- Фикс: `m_iFOV` восстанавливается в 90 (а не 0)
- Фикс: удалён мёртвый код `GiveDefaultCombatLoadout`
- **MOTD-картинка** во freezetime при старте кастомного раунда
- **Логирование** действий в `custom_rounds.log` (с тегом FULL/REG)
- **Кулдаун 5 раундов** для обычных админов (DEIDARA/TESTER/Root обходят)
- Защита от спама очереди: один и тот же режим нельзя поставить дважды
- Команда `sm_cr_status`
- Унифицирован стиль API (методмапы вместо `GetConVarBool`)
- **1.1.0** — Базовая версия с 7 режимами