# 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** — предыдущая версия