e2e56883eb
- Добавлен TeleportToTeamSpawn (info_player_terrorist/counterterrorist) - ТТшник в 1vAll телепортируется на T-спавн (было: CS_RespawnPlayer оставлял живого игрока на CT-спавне) - После 1vAll команды восстанавливаются физически через Timer_FinalTeamRestore
151 lines
12 KiB
Markdown
151 lines
12 KiB
Markdown
# ArcaneGame Custom Rounds Core
|
||
|
||
Плагин кастомных раундов для CS:GO серверов на SourceMod. Администраторы выбирают режим на следующий раунд через меню — и весь сервер играет в изменённых условиях.
|
||
|
||
## Функции
|
||
|
||
- 11 режимов кастомных раундов:
|
||
- **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** — у всех игроков минимальное здоровье
|
||
- **1 vs All** (от 15 игроков) — 1 ТТшник против всех CT. У ТТшника 5000 HP, 500 брони, +25% скорости, $16000 на покупку любого оружия. CT — XM1014 + 4 гранаты (HE, флеш, смок, инсентари). Админ выбирает игрока вручную или рандомно.
|
||
- Полное сохранение и восстановление инвентаря после кастомного раунда (основное оружие + патроны, запасное + патроны, нож, **все гранаты**, **броня**, **шлем**, **дефузер**)
|
||
- Блокировка покупок во время режима
|
||
- Блокировка зума для 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 раундов |
|
||
| Без флага | Нет доступа | — |
|
||
|
||
## Уведомление о начале режима
|
||
|
||
Когда стартует кастомный раунд, всем игрокам показывается **PrintHintText** — большое уведомление в правом нижнем углу экрана со звуком. Содержит название режима и краткое описание.
|
||
|
||
Управляется ConVar `sm_cr_show_motd 1/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.3.2` — Автор: deidara.dev
|
||
|
||
### Changelog
|
||
|
||
- **1.3.2**
|
||
- Фикс: ТТшник в режиме 1 vs All теперь гарантированно телепортируется на T-спавн (раньше `CS_RespawnPlayer` в CSGO мог оставить уже-живого игрока на CT-спавне, что ломало возможность покупки)
|
||
- Фикс: после окончания 1vAll команды восстанавливаются физически — добавлен `Timer_FinalTeamRestore`, который телепортирует игроков на спавны их исходных команд
|
||
- Добавлен хелпер `TeleportToTeamSpawn` (использует `info_player_terrorist` / `info_player_counterterrorist` энтити)
|
||
- **1.3.1**
|
||
- Фикс компиляции: `CSRoundEnd_RoundDraw` → `CSRoundEnd_Draw` (правильное имя константы в `cstrike.inc`)
|
||
- **1.3.0**
|
||
- Добавлен режим **1 vs All** (требуется 15+ активных игроков):
|
||
- 1 ТТшник против всех CT
|
||
- Админ выбирает игрока вручную через подменю или рандомно
|
||
- У ТТшника: 5000 HP, 500 брони, +25% скорости, $16000 (свободная покупка)
|
||
- У CT: XM1014 + HE + флеш + смок + incgrenade, покупка отключена
|
||
- Если ТТшник умрёт — CT побеждают (стандартная логика CSGO)
|
||
- Если ТТшник вышел — раунд завершается ничьёй (`CS_TerminateRound`), оружие восстанавливается
|
||
- После раунда команды восстанавливаются в исходные (CT возвращаются к T если были T до 1vAll)
|
||
- Если игроков стало <15 в момент старта — режим автоматически отменяется с уведомлением в чат
|
||
- **1.2.4**
|
||
- Убраны `ShowMOTDPanel` и `PrintCenterText` (на CSGO/MyArena не показывались стабильно)
|
||
- Оставлен только `PrintHintText` — он работает у всех игроков
|
||
- Удалён мёртвый код: `GetRoundUrlSlug`, `CR_MOTD_BASE_URL`, `Timer_RepeatOverlay`
|
||
- **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 режимами
|