53d3702c69
Major changes: - Added configs/vip_custom_models_locked.cfg (SteamID64 to model_id) - Command sm_vmodel_reload for hot reload - Removed model selection menu (!vmodel/!models/!agents) - Removed VIP-Core integration (item removed from VIP menu) - Removed ClientPrefs cookies and SQLite (config is single source of truth) Bug fixes: - Fixed null-check bug (error[0] != space instead of null terminator) - Removed DB vs Cookie race condition - Cleaned up buffer null-termination workarounds - author = deidara.dev
114 lines
5.7 KiB
Markdown
114 lines
5.7 KiB
Markdown
# VIP Custom Models
|
||
|
||
Плагин кастомных моделей игроков для CS:GO — модели **назначаются по SteamID64 через конфиг-файл**, без выбора через меню. Идеально для серверов, где админ хочет полностью контролировать кому какую модель давать.
|
||
|
||
## Функции
|
||
|
||
- До **128 кастомных моделей** из конфига `vip_custom_models.ini`
|
||
- Назначение **«SteamID64 → model_id»** через `vip_custom_models_locked.cfg`
|
||
- Автоматическое применение модели при спавне и смене команды
|
||
- Корректное восстановление **стандартных рук** для команды если кастомная модель не назначена или не подходит по команде
|
||
- Команда `sm_vmodel_reload` для перезагрузки конфига без рестарта плагина
|
||
- Умная загрузка файлов модели: `.mdl`, `.vvd`, `.dx90.vtx` и сопутствующие
|
||
- Поддержка блочного и строкового форматов списка `downloads`
|
||
- Ограничение по **команде** (T / CT / ANY) — если игрок не на нужной команде, кастомная модель не применяется (используются дефолтные руки)
|
||
|
||
## Зависимости
|
||
|
||
- [SourceMod](https://www.sourcemod.net/) 1.10+
|
||
|
||
## Установка
|
||
|
||
1. Скомпилировать `scripting/vip_custom_models.sp`
|
||
2. Положить `.smx` в `addons/sourcemod/plugins/`
|
||
3. Положить `configs/vip_custom_models.ini` (список доступных моделей) в `addons/sourcemod/configs/`
|
||
4. Положить `configs/vip_custom_models_locked.cfg` (назначения SteamID → модель) в `addons/sourcemod/configs/`
|
||
5. Загрузить файлы моделей в `models/` на сервере
|
||
6. Перезапустить сервер или загрузить плагин: `sm plugins load vip_custom_models`
|
||
|
||
## Конфиг моделей
|
||
|
||
Путь: `addons/sourcemod/configs/vip_custom_models.ini`
|
||
|
||
```
|
||
"VIP_CustomModels"
|
||
{
|
||
"Models"
|
||
{
|
||
"agent_01"
|
||
{
|
||
"name" "FBI Agent"
|
||
"model" "models/player/custom/fbi_agent.mdl"
|
||
"arms" "models/weapons/ct_arms_fbi_custom.mdl"
|
||
"team" "CT"
|
||
"downloads" "models/player/custom/fbi_agent.mdl;models/player/custom/fbi_agent.vvd"
|
||
}
|
||
"elite_crew"
|
||
{
|
||
"name" "Elite Crew"
|
||
"model" "models/player/custom/elite_crew.mdl"
|
||
"arms" ""
|
||
"team" "T"
|
||
"downloads"
|
||
{
|
||
"1" "models/player/custom/elite_crew.mdl"
|
||
"2" "models/player/custom/elite_crew.vvd"
|
||
"3" "models/player/custom/elite_crew.dx90.vtx"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
| Поле | Описание |
|
||
|---|---|
|
||
| `name` | Отображаемое имя (для логов и админ-вывода) |
|
||
| `model` | Путь к `.mdl` файлу игрока |
|
||
| `arms` | Путь к модели рук (пустая строка = стандартные руки команды) |
|
||
| `team` | `T`, `CT` или `ANY` — на какой команде модель применяется |
|
||
| `downloads` | Файлы для FastDL (через `;` или блок) |
|
||
|
||
## Конфиг назначений (новое в v2.0.0)
|
||
|
||
Путь: `addons/sourcemod/configs/vip_custom_models_locked.cfg`
|
||
|
||
```
|
||
"VIP_LockedModels"
|
||
{
|
||
"76561198012345678" "agent_01"
|
||
"76561198098765432" "elite_crew"
|
||
}
|
||
```
|
||
|
||
Ключ — SteamID64 игрока, значение — id модели (название секции из `vip_custom_models.ini`).
|
||
|
||
После редактирования файла:
|
||
- Перезагрузи плагин: `sm plugins reload vip_custom_models`
|
||
- **ИЛИ** используй админ-команду `sm_vmodel_reload` (флаг `z` / ROOT) — без рестарта, моментально применяется ко всем игрокам в игре
|
||
|
||
## Команды
|
||
|
||
| Команда | Доступ | Описание |
|
||
|---|---|---|
|
||
| `sm_vmodel_reload` | Admin (флаг `z`) | Перезагрузить оба конфига без рестарта плагина |
|
||
|
||
> Меню выбора моделей **удалено** — модели назначаются только через конфиг.
|
||
|
||
## Версия
|
||
|
||
`2.0.0` — Автор: deidara.dev
|
||
|
||
### Changelog
|
||
|
||
- **2.0.0** — Полный refactor: модели назначаются по SteamID64 через конфиг
|
||
- Добавлен `vip_custom_models_locked.cfg` с маппингом SteamID64 → model_id
|
||
- Удалено меню выбора моделей и команды `!vmodel`/`!models`/`!agents`
|
||
- Удалена интеграция с VIP-Core (пункт «Кастомные модели» больше не показывается в VIP-меню)
|
||
- Удалена ClientPrefs-cookies и SQLite-персистенция (конфиг — единственный источник истины)
|
||
- Команда `sm_vmodel_reload` для горячей перезагрузки
|
||
- **Багфиксы из 1.2.0:**
|
||
- Удалён баг с `error[0] != ' '` (был неправильный null-check, спамил в errors_*.log)
|
||
- Удалена race condition между загрузкой DB и cookies (DB+cookie больше не используются)
|
||
- Author = `"deidara.dev"`
|
||
- **1.2.0** — VIP-меню версия (legacy)
|