v1.6.0: полные доработки
ИСПРАВЛЕНИЯ: - Полное сохранение/восстановление инвентаря (гранаты, шлем, дефузер, патроны в клипе и резерве — раньше всё это терялось) - 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
This commit is contained in:
@@ -1,20 +1,25 @@
|
||||
# ArcaneGameDUELS Core
|
||||
|
||||
Система дуэлей 1v1 для CS:GO серверов на SourceMod. Поддерживает арену, зону ограничения, выбор оружия, модификаторы и интеграцию с системой XP (lvl_ranks).
|
||||
Система дуэлей 1v1 для CS:GO серверов на SourceMod. Поддерживает арену, зону ограничения, выбор оружия, модификаторы, статистику и интеграцию с системой XP (lvl_ranks).
|
||||
|
||||
## Функции
|
||||
|
||||
- Дуэли **1v1** между любыми двумя игроками
|
||||
- Автоматический запуск дуэли при обнаружении двух игроков на сервере
|
||||
- Дуэли **1v1** между любыми двумя игроками (автозапуск при 1v1 на сервере с >2 игроками)
|
||||
- **Арена**: фиксированные точки спавна из конфига `ArcaneGameDUELS_Arena.cfg`
|
||||
- **Зона ограничения**: дуэлянты не могут покинуть арену (настраиваемый padding)
|
||||
- Выбор оружия: Deagle, AK-47, M4A4, M4A1-S, AWP, Scout, Knife
|
||||
- Модификаторы: обычный / NoZoom / Headshot Only
|
||||
- Сохранение и восстановление инвентаря и здоровья после дуэли
|
||||
- Выбор оружия: Knife / Deagle / AK-47 / M4A4 / M4A1-S / AWP / Scout + **случайное оружие**
|
||||
- Модификаторы: обычный / Headshot Only
|
||||
- **Полное сохранение и восстановление инвентаря** после дуэли (оружие, патроны в магазине и резерве, гранаты, броня, шлем, дефузер, деньги)
|
||||
- Таймер дуэли с ограничением по времени
|
||||
- Интеграция XP через **lvl_ranks** (награда за победу)
|
||||
- **Forwards** для других плагинов: `OnDuelStarted`, `OnDuelFinished`, `OnDuelDraw`
|
||||
- Интеграция 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` — другие плагины могут временно блокировать авто-дуэли (например, во время кастомного раунда)
|
||||
|
||||
## Зависимости
|
||||
|
||||
@@ -31,52 +36,89 @@
|
||||
|
||||
## Конфиг арены
|
||||
|
||||
Путь: `cfg/sourcemod/ArcaneGameDUELS_Arena.cfg`
|
||||
Путь: `cfg/sourcemod/ArcaneGameDUELS_Arena.cfg` (ключ-значения через KeyValues, на каждую карту своя секция).
|
||||
|
||||
```
|
||||
// Позиция спавна игрока 1
|
||||
sm_duels_arena_spawn1_x "0.0"
|
||||
sm_duels_arena_spawn1_y "0.0"
|
||||
sm_duels_arena_spawn1_z "0.0"
|
||||
sm_duels_arena_spawn1_yaw "0.0"
|
||||
## Команды игрока
|
||||
|
||||
// Позиция спавна игрока 2
|
||||
sm_duels_arena_spawn2_x "200.0"
|
||||
sm_duels_arena_spawn2_y "0.0"
|
||||
sm_duels_arena_spawn2_z "0.0"
|
||||
sm_duels_arena_spawn2_yaw "180.0"
|
||||
```
|
||||
| Команда | Описание |
|
||||
|---|---|
|
||||
| `!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 | По умолчанию | Описание |
|
||||
|---|---|---|
|
||||
| `sm_duels_enable` | `1` | Включить/выключить дуэли |
|
||||
| `sm_duels_use_arena` | `1` | Использовать арену |
|
||||
| `sm_duels_beacon` | `1` | Включить beacon у дуэлянтов |
|
||||
| `sm_duels_prepare_time` | `5` | Время подготовки перед дуэлью (сек) |
|
||||
| `sm_duels_win_xp` | `50` | XP за победу |
|
||||
| `sm_duels_time_limit` | `120` | Лимит времени дуэли (сек) |
|
||||
| `sm_duels_zone_enable` | `1` | Включить зону ограничения |
|
||||
| `sm_duels_zone_grace` | `3.0` | Время предупреждения перед кикбеком (сек) |
|
||||
| `sm_duels_allow_deagle` | `1` | Разрешить Deagle |
|
||||
| `sm_duels_allow_ak47` | `1` | Разрешить AK-47 |
|
||||
| `sm_duels_allow_awp` | `1` | Разрешить AWP |
|
||||
| `sm_duels_debug_solo` | `0` | Debug: одиночный режим (без второго игрока) |
|
||||
| `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 (для других плагинов)
|
||||
## Forwards / Natives
|
||||
|
||||
```sourcepawn
|
||||
// Дуэль началась
|
||||
forward void OnDuelStarted(int player1, int player2);
|
||||
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);
|
||||
|
||||
// Дуэль завершилась
|
||||
forward void OnDuelFinished(int winner, int loser);
|
||||
|
||||
// Дуэль завершилась ничьей
|
||||
forward void 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.5.3` — Автор: OpenAI / havno
|
||||
`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** — предыдущая версия
|
||||
|
||||
Reference in New Issue
Block a user