d933484514
ИСПРАВЛЕНИЯ: - Полное сохранение/восстановление инвентаря (гранаты, шлем, дефузер, патроны в клипе и резерве — раньше всё это терялось) - RefillWeaponAmmo расширен на 25+ оружий - Убран двойной reset state в Event_RoundStart НОВЫЙ ФУНКЦИОНАЛ: - Случайное оружие в weapon menu - sm_duel_forceend — админ может принудительно завершить дуэль - Файловый лог addons/sourcemod/logs/arcane_duels.log - Статистика per-игрок (wins/losses/draws/rage-quits/total XP) в addons/sourcemod/data/arcane_duels_stats.cfg - Команды игрока: !duelstats и !duel_top - Rage-quit penalty: XP штраф + +1 поражение в статистике - Звуковые эффекты на окончании дуэли (победа/поражение) - ConVar agd_duel_block_external для интеграции с custom-rounds и другими плагинами КОСМЕТИКА: - Жёлтый префикс [DUELS] (был красный) - Author = deidara.dev
125 lines
7.9 KiB
Markdown
125 lines
7.9 KiB
Markdown
# ArcaneGameDUELS Core
|
|
|
|
Система дуэлей 1v1 для CS:GO серверов на SourceMod. Поддерживает арену, зону ограничения, выбор оружия, модификаторы, статистику и интеграцию с системой XP (lvl_ranks).
|
|
|
|
## Функции
|
|
|
|
- Дуэли **1v1** между любыми двумя игроками (автозапуск при 1v1 на сервере с >2 игроками)
|
|
- **Арена**: фиксированные точки спавна из конфига `ArcaneGameDUELS_Arena.cfg`
|
|
- **Зона ограничения**: дуэлянты не могут покинуть арену (настраиваемый padding)
|
|
- Выбор оружия: Knife / Deagle / AK-47 / M4A4 / M4A1-S / AWP / Scout + **случайное оружие**
|
|
- Модификаторы: обычный / Headshot Only
|
|
- **Полное сохранение и восстановление инвентаря** после дуэли (оружие, патроны в магазине и резерве, гранаты, броня, шлем, дефузер, деньги)
|
|
- Таймер дуэли с ограничением по времени
|
|
- Интеграция XP через **lvl_ranks** (награда за победу + штраф за rage-quit)
|
|
- **Forwards** для других плагинов: `AGD_OnDuelStarted`, `AGD_OnDuelFinished`, `AGD_OnDuelDraw`
|
|
- Beacon-индикатор (звук + частицы) вокруг дуэлянтов
|
|
- **Звуковые эффекты**: победителю — фанфара, проигравшему — death-камера
|
|
- **Файловый лог** всех дуэлей в `addons/sourcemod/logs/arcane_duels.log`
|
|
- **Статистика per-игрок** (wins / losses / draws / rage-quits / total XP) в файл `addons/sourcemod/data/arcane_duels_stats.cfg`
|
|
- Команды `!duelstats` и `!duel_top` — статистика и топ-10 игроков
|
|
- Админ-команда `!duel_forceend` для принудительной остановки дуэли
|
|
- ConVar `agd_duel_block_external` — другие плагины могут временно блокировать авто-дуэли (например, во время кастомного раунда)
|
|
|
|
## Зависимости
|
|
|
|
- [SourceMod](https://www.sourcemod.net/) 1.10+
|
|
- [SDKHooks](https://wiki.alliedmods.net/SDK_Hooks) (входит в SourceMod)
|
|
- [lvl_ranks](https://github.com/levans95/lvl_ranks) — для начисления XP
|
|
|
|
## Установка
|
|
|
|
1. Скомпилировать `scripting/ArcaneGameDUELS_Core.sp`
|
|
2. Положить `.smx` в `addons/sourcemod/plugins/`
|
|
3. Положить `cfg/sourcemod/ArcaneGameDUELS_Arena.cfg` в `cfg/sourcemod/` на сервере
|
|
4. Перезапустить сервер или загрузить плагин: `sm plugins load ArcaneGameDUELS_Core`
|
|
|
|
## Конфиг арены
|
|
|
|
Путь: `cfg/sourcemod/ArcaneGameDUELS_Arena.cfg` (ключ-значения через KeyValues, на каждую карту своя секция).
|
|
|
|
## Команды игрока
|
|
|
|
| Команда | Описание |
|
|
|---|---|
|
|
| `!duel` / `sm_duel` | Информация о системе дуэлей |
|
|
| `!duelstats` / `sm_duelstats` | Личная статистика (победы/поражения/винрейт) |
|
|
| `!duel_top` / `sm_duel_top` | Топ-10 игроков по победам |
|
|
|
|
## Команды админа (флаг `z` / ROOT)
|
|
|
|
| Команда | Описание |
|
|
|---|---|
|
|
| `sm_duel_setspawn1` / `sm_duel_setspawn2` | Сохранить точку спавна #1/#2 |
|
|
| `sm_duel_setzone1` / `sm_duel_setzone2` | Углы зоны ограничения |
|
|
| `sm_duel_savearena` | Сохранить арену для текущей карты |
|
|
| `sm_duel_reloadarena` | Перезагрузить конфиг арены |
|
|
| `sm_duel_arena_info` | Показать данные арены |
|
|
| `sm_duel_showzone` | Показать визуально зону |
|
|
| `sm_duel_debugsolo` | Соло-дебаг (без 2-го игрока) |
|
|
| `sm_duel_forceend` | Принудительно завершить активную дуэль |
|
|
|
|
## ConVars
|
|
|
|
| ConVar | По умолчанию | Описание |
|
|
|---|---|---|
|
|
| `agd_core_enable` | `1` | Включить дуэли |
|
|
| `agd_use_arena` | `1` | Использовать арену |
|
|
| `agd_duel_beacon` | `1` | Включить beacon |
|
|
| `agd_duel_prepare_time` | `10` | Время подготовки (сек) |
|
|
| `agd_duel_post_unfreeze_invuln` | `2.0` | Неуязвимость после анфриза |
|
|
| `agd_duel_win_money` | `1500` | Деньги за победу |
|
|
| `agd_duel_win_xp` | `100` | XP за победу |
|
|
| `agd_duel_time_limit` | `30` | Лимит дуэли (сек, 0 = нет) |
|
|
| `agd_weapon_allow_*` | `1` | Разрешить оружие (knife/deagle/ak47/m4a1/m4a1s/awp/scout) |
|
|
| `agd_duel_bypass_restrict_flags` | `1` | Дать ROOT-флаг во время дуэли (обход других плагинов) |
|
|
| `agd_zone_*` | разные | Параметры зоны ограничения |
|
|
| `agd_debug_allow_solo` | `1` | Разрешить sm_duel_debugsolo |
|
|
| `agd_duel_block_external` | `0` | **Внешняя блокировка** (другой плагин может выставить в `1`) |
|
|
| `agd_duel_ragequit_xp_penalty` | `50` | Штраф XP за выход во время дуэли |
|
|
| `agd_duel_stats_enable` | `1` | Сохранять статистику в файл |
|
|
| `agd_duel_log_enable` | `1` | Логировать дуэли в файл |
|
|
|
|
## Forwards / Natives
|
|
|
|
```sourcepawn
|
|
forward void AGD_OnDuelStarted(int player1, int player2);
|
|
forward void AGD_OnDuelFinished(int winner, int loser, int winnerXP, int loserXP);
|
|
forward void AGD_OnDuelDraw(int player1, int player2);
|
|
|
|
native bool AGD_IsDuelActive();
|
|
native bool AGD_IsBettingOpen();
|
|
native bool AGD_GetDuelPlayers(int &p1, int &p2);
|
|
native int AGD_GetDuelParticipantXP(int client);
|
|
native int AGD_GetWinnerMoneyReward();
|
|
native bool AGD_IsArenaReady();
|
|
native bool AGD_IsClientInDuel(int client);
|
|
```
|
|
|
|
## Файлы данных
|
|
|
|
- **Статистика:** `addons/sourcemod/data/arcane_duels_stats.cfg` (KeyValues per Steam ID)
|
|
- **Лог:** `addons/sourcemod/logs/arcane_duels.log` (текстовый, формат `[YYYY-MM-DD HH:MM:SS] EVENT: detail`)
|
|
|
|
## Версия
|
|
|
|
`1.6.0` — Автор: deidara.dev
|
|
|
|
### Changelog
|
|
|
|
- **1.6.0**
|
|
- Жёлтый префикс `[DUELS]` (был красный)
|
|
- **Полное** сохранение/восстановление инвентаря: гранаты, шлем, дефузер, патроны в клипе и резерве
|
|
- `RefillWeaponAmmo` теперь знает 25+ оружий (все винтовки, SMG, дробовики, пистолеты, снайперки)
|
|
- Добавлен пункт «Случайное оружие» в weapon menu
|
|
- Новая админ-команда `sm_duel_forceend` — принудительно остановить любую активную/готовящуюся дуэль
|
|
- **Файловый лог** дуэлей `addons/sourcemod/logs/arcane_duels.log`
|
|
- **Статистика** per-игрок: wins/losses/draws/rage-quits + персистенция через `addons/sourcemod/data/arcane_duels_stats.cfg`
|
|
- Команды `!duelstats` (личная стата) и `!duel_top` (топ-10 по победам)
|
|
- **Rage-quit penalty**: XP-штраф (по cvar) и +1 поражение/rage-quit в стате
|
|
- **Звуковые эффекты**: победителю — фанфара, проигравшему — death-камера
|
|
- ConVar `agd_duel_block_external` — внешние плагины могут временно блокировать авто-дуэли
|
|
- Убран двойной reset state в Event_RoundStart
|
|
- Author = `deidara.dev` (был `OpenAI / havno`)
|
|
- **1.5.3** — предыдущая версия
|