- Поддерживаемые игры
-
- CS: Source (OrangeBox)
- CS: Source (v34)
Это система для замены моделей оружия на сервере Counter-Strike: Source. Система состоит из ядра и модулей расширения.
Туда входит:
1. Осмотр оружия на F.
2. Использования 1 модели оружия и разные текстуры, так же и с перчатками.
3. Выдача персональных скинов
Отличий от старой версии много.) Но главное это разбивка на ядро + модули, закрытие утечек памяти, всё переведено на новый синтакс. Ну и создание модулей.
и укажите пути к файлам для загрузки клиентами:
3.1.1. Описание
Модуль позволяет игрокам выбирать перчатки для каждого скина оружия. Выбор сохраняется в базе данных.
3.1.2. Установка
3.1.3. Структура конфигурационного файла gloves.ini
3.1.4. Использование
3.1.5. Интеграция с ядром
Модуль использует форвард CW_OnApplyGloves для применения перчаток при смене оружия. Ядро автоматически вызывает этот форвард при:
3.2.1. Описание
Модуль позволяет администраторам выдавать игрокам персональные скины с ограничением по времени. Персональные скины доступны только тем игрокам, которым они были выданы.
3.2.2. Установка
3.2.2. Настройка персональных скинов в custom_weapons.txt
Для создания персонального скина установите параметр personal в 1:
3.2.3. Использование
3.2.4. Нативы
Модуль предоставляет натив для проверки наличия персонального скина:
Ядро автоматически проверяет наличие персонального скина и скрывает его из меню, если у игрока нет доступа.
7.1.1. Настройка базы данных
7.2.1. Параметры
7.2.2. Настройка базы данных
Для получения дополнительной помощи обращайтесь к документации или создавайте сообщение в этой теме форума.
Версия ядра и модулей: 2.0.0
Авторы: DENZEL519&AI, 7pElllHuK (Ало, Ва-Вадик?)
Дата создания: 2026
PS В обсуждении этой темы лежит архив с оружие для того чтобы пощупать ядро и модули.
PSS Огромная благодарность 7pElllHuK в помощи тестирования на v34, исправлениях багов, и многом другом.
Туда входит:
1. Осмотр оружия на F.
2. Использования 1 модели оружия и разные текстуры, так же и с перчатками.
3. Выдача персональных скинов
Отличий от старой версии много.) Но главное это разбивка на ядро + модули, закрытие утечек памяти, всё переведено на новый синтакс. Ну и создание модулей.
FAQ: Система кастомного оружия (Custom Weapons)
Содержание
- 1. Общая информация
- 2. Установка и настройка ядра
- 3. Модули системы
- 4. Конфигурационные файлы
- 5. Команды и меню
- 6. Настройка через консольные переменные
- 7. Базы данных
- 8. Часто задаваемые вопросы
1. Общая информация
1.1. Что такое Custom Weapons?
Custom Weapons — это система для замены моделей оружия на сервере Counter-Strike: Source. Система состоит из ядра и модулей расширения.1.2. Архитектура системы
Система построена по модульному принципу:- Ядро (custom_weapons.sp) — основной плагин, обеспечивающий базовую функциональность замены моделей оружия, осмотр.
- Модули — дополнительные плагины, расширяющие возможности ядра:
- sm_gloves.sp — система выбора перчаток для оружия
- sm_personal_skin.sp — система персональных скинов (выдача администраторами)
1.3. Поддерживаемые игры
- Counter-Strike: Source (v34)
- Counter-Strike: Source OB
2. Установка и настройка ядра
2.1. Установка
- Скомпилируйте плагин custom_weapons.sp в custom_weapons.smx
- Поместите custom_weapons.smx в папку
C-подобный:
addons/sourcemod/plugins/ - Поместите файл переводов custom_weapons.phrases.txt в папку
C-подобный:
addons/sourcemod/translations/ - Создайте конфигурационный файл custom_weapons.txt в папке
C-подобный:
addons/sourcemod/configs/ - Перезагрузите сервер или выполните команду
C-подобный:
sm plugins reload custom_weapons
2.2. Структура конфигурационного файла custom_weapons.txt
Файл использует формат KeyValues. Базовая структура:
C-подобный:
"Weapons"
{
"ak47" // Название оружия (без префикса weapon_)
{
"category" "0" // Категория: 0-Рифлы, 1-SMG, 2-Дробовики, 3-Пистолеты, 4-Холодное, 5-Бомба, 6-Снайперки
"flags" "" // Флаги доступа для оружия (пусто = для всех)
"world_model_index" "123" // Индекс модели в мире (автоматически)
"skin1" // Название скина
{
"view_model" "models/weapons/v_ak47_custom.mdl"
"world_model" "models/weapons/w_ak47_custom.mdl"
"skin_index" "0" // Индекс скина модели
"flag_bits" "0" // Флаги доступа для скина
"personal" "0" // 1 = персональный скин, 0 = обычный
"inspect" "5" // Последовательность анимации осмотра
"flip_view_model" "0" // Перевернуть модель (для левшей)
"muzzle_flash" "1" // Включить вспышку выстрела
"muzzle_scale" "2.0" // Масштаб вспышки
"muzzle_move" "0 0 0" // Смещение вспышки
"Sequences" // Маппинг последовательностей
{
"0" "1"
"1" "2"
}
"ru" "АК-47 Кастом" // Локализация
"en" "AK-47 Custom"
}
}
}
2.3. Создание файла загрузок
Создайте файл custom_weapons_downloads.txt в папке
C-подобный:
addons/sourcemod/configs/
C-подобный:
models/weapons/v_ak47_custom.mdl
models/weapons/w_ak47_custom.mdl
materials/models/weapons/ak47_custom.vmt
materials/models/weapons/ak47_custom.vtf
3. Модули системы
3.1. Модуль перчаток (sm_gloves.sp)
3.1.1. Описание
Модуль позволяет игрокам выбирать перчатки для каждого скина оружия. Выбор сохраняется в базе данных.
3.1.2. Установка
- Скомпилируйте sm_gloves.sp в sm_gloves.smx
- Поместите sm_gloves.smx в папку
C-подобный:
addons/sourcemod/plugins/ - Создайте конфигурационный файл gloves.ini в папке
C-подобный:
addons/sourcemod/configs/ - Перезагрузите сервер
3.1.3. Структура конфигурационного файла gloves.ini
C-подобный:
"Gloves"
{
"glove1" // ID перчатки
{
"name" "Красные перчатки" // Название для меню
"skin" "0" // Индекс скина
"body" "0" // Индекс body
}
"glove2"
{
"name" "Синие перчатки"
"skin" "1"
"body" "0"
}
}
3.1.4. Использование
- Игроки используют команду
для открытия меню выбора перчатокC-подобный:
sm_gloves - Перчатки применяются автоматически при смене оружия
- Выбор сохраняется для каждой комбинации оружие+скин
3.1.5. Интеграция с ядром
Модуль использует форвард CW_OnApplyGloves для применения перчаток при смене оружия. Ядро автоматически вызывает этот форвард при:
- Смене оружия игроком
- Спавне игрока
- Применении скина через меню
3.2. Модуль персональных скинов (sm_personal_skin.sp)
3.2.1. Описание
Модуль позволяет администраторам выдавать игрокам персональные скины с ограничением по времени. Персональные скины доступны только тем игрокам, которым они были выданы.
3.2.2. Установка
- Скомпилируйте sm_personal_skin.sp в sm_personal_skin.smx
- Поместите sm_personal_skin.smx в папку
C-подобный:
addons/sourcemod/plugins/ - Убедитесь, что ядро custom_weapons загружено
- Перезагрузите сервер
3.2.2. Настройка персональных скинов в custom_weapons.txt
Для создания персонального скина установите параметр personal в 1:
C-подобный:
"ak47"
{
"premium_skin"
{
"view_model" "models/weapons/v_ak47_premium.mdl"
"world_model" "models/weapons/w_ak47_premium.mdl"
"skin_index" "5"
"personal" "1" // Персональный скин
"flag_bits" "a" // Опционально: флаги доступа
}
}
3.2.3. Использование
- Администраторы с флагом ROOT используют команду
C-подобный:
sm_personalskin - В меню выбирается игрок, затем оружие, затем скин
- Устанавливается срок действия (навсегда, 1 день, 7 дней, 30 дней, 90 дней)
- Скин автоматически применяется игроку при наличии
3.2.4. Нативы
Модуль предоставляет натив для проверки наличия персонального скина:
C-подобный:
native bool PS_HasPersonalSkin(int client, const char[] weapon, const char[] skin);
Ядро автоматически проверяет наличие персонального скина и скрывает его из меню, если у игрока нет доступа.
4. Конфигурационные файлы
4.1. custom_weapons.txt
Основной конфигурационный файл ядра. Содержит:- Список оружий и их скинов
- Пути к моделям (view_model, world_model)
- Настройки скинов (skin_index, body, sequences)
- Флаги доступа
- Локализации
4.2. gloves.ini
Конфигурационный файл модуля перчаток. Содержит:- Список доступных перчаток
- Названия для меню
- Индексы скинов и body для применения
4.3. custom_weapons_downloads.txt
Файл со списком файлов для загрузки клиентами. Каждая строка — путь к файлу:
C-подобный:
models/weapons/v_ak47.mdl
materials/models/weapons/ak47.vmt
5. Команды и меню
5.1. Команды ядра
- sm_weapon или sm_cw — открывает главное меню выбора оружия
- cw_dev — режим разработчика (только для ROOT админов)
5.2. Команды модулей
- sm_gloves — открывает меню выбора перчаток (требуется держать оружие в руках)
- sm_personalskin — открывает меню выдачи персональных скинов (только ROOT админы)
5.3. Главное меню ядра
Меню содержит:- Категории оружия (Рифлы, SMG, Снайперки, Дробовики, Пистолеты, Холодное, Бомба)
- Переключатель включения/выключения кастомных моделей
- Переключатель открытия меню при спавне
- Переключатель осмотра оружия (F)
- Ссылка на меню перчаток (если модуль загружен)
- Ссылка на меню персональных скинов (для админов)
6. Настройка через консольные переменные
6.1. Основные переменные
- sm_custom_weapons_enable (0/1) — включить/выключить систему кастомных моделей
- sm_custom_weapons_menu_spawn (0/1) — открывать меню при спавне по умолчанию
- sm_custom_weapons_force_menu_spawn (0/1) — принудительно открывать меню при каждом спавне
- sm_custom_weapons_default_disabled (0/1) — отключить модели по умолчанию для новых игроков
- sm_custom_weapons_force_disabled (0/1) — принудительно отключить модели (включение только через меню)
- sm_custom_weapons_menu_close_notice (0/1) — уведомлять игроков о команде открытия меню
6.2. Переменные доступа
- sm_custom_weapons_admin_flags — флаги доступа к системе (пусто = для всех)
Пример:— доступ для админов с флагами a, b или cC-подобный:sm_custom_weapons_admin_flags "abc"
6.3. Переменные путей
- sm_custom_weapons_models_path — путь к файлу конфигурации оружий (по умолчанию: configs/custom_weapons.txt)
- sm_custom_weapons_downloads_path — путь к файлу списка загрузок (по умолчанию: configs/custom_weapons_downloads.txt)
6.4. Переменные функций
- sm_custom_weapons_css_old_style_model_change (0/1) — использовать старый метод смены моделей (для CSS OB, не рекомендуется)
- sm_custom_weapons_stop_animation (0/1) — останавливать анимацию при повторном осмотре
- sm_custom_weapons_disable_flashlight (0/1) — отключить фонарик
7. Базы данных
7.1. База данных модуля перчаток
Модуль sm_gloves создает таблицу cw_gloves:
C-подобный:
CREATE TABLE cw_gloves (
steamid VARCHAR(32) NOT NULL,
weapon VARCHAR(32) NOT NULL,
skin VARCHAR(64) NOT NULL,
glove VARCHAR(64) NOT NULL,
PRIMARY KEY (steamid, weapon, skin)
);
7.1.1. Настройка базы данных
- Модуль пытается подключиться к базе данных "default" (если настроена в databases.cfg)
- Если подключение не удалось, используется SQLite база данных cw_gloves
- База данных создается автоматически при первом запуске
7.2. База данных модуля персональных скинов
Модуль sm_personal_skin создает таблицу cw_personal_skins:
C-подобный:
CREATE TABLE cw_personal_skins (
steamid VARCHAR(32) NOT NULL,
weapon VARCHAR(32) NOT NULL,
skin VARCHAR(64) NOT NULL,
expires INT NOT NULL DEFAULT 0,
PRIMARY KEY (steamid, weapon, skin)
);
7.2.1. Параметры
- steamid — SteamID игрока (Steam2 формат)
- weapon — название оружия (без префикса weapon_)
- skin — название скина
- expires — время истечения (Unix timestamp, 0 = навсегда)
7.2.2. Настройка базы данных
- Модуль использует SQLite базу данных cw_personal_skins
- База данных создается автоматически в папке
C-подобный:
addons/sourcemod/data/sqlite/ - При обновлении модуля выполняется автоматическая миграция структуры таблицы
8. Часто задаваемые вопросы
8.1. Модели не применяются
- Проверьте, что sm_custom_weapons_enable установлен в 1
- Убедитесь, что игрок включил кастомные модели в меню
- Проверьте правильность путей к моделям в конфигурации
- Убедитесь, что модели загружены клиентами (проверьте файл downloads)
8.2. Перчатки не применяются
- Убедитесь, что модуль sm_gloves загружен (
)C-подобный:
sm plugins list - Проверьте, что игрок выбрал перчатки через меню sm_gloves
- Убедитесь, что в конфигурации gloves.ini указаны правильные индексы
- Проверьте, что ядро custom_weapons загружено
8.3. Персональные скины не отображаются
- Убедитесь, что модуль sm_personal_skin загружен
- Проверьте, что скину установлен параметр "personal" "1" в конфигурации
- Убедитесь, что скин был выдан игроку через меню администратора
- Проверьте срок действия скина (если установлен)
8.4. Ошибки при компиляции
- Убедитесь, что установлены все необходимые include файлы:
- sourcemod.inc
- sdktools.inc
- sdkhooks.inc
- clientprefs.inc
- keyvalues.inc
- custom_weapons.inc (для модулей)
- cw_stocks.inc (для модулей)
- Проверьте версию SourceMod (рекомендуется 1.10+)
8.5. Производительность сервера
- Использование старого метода смены моделей (sm_custom_weapons_css_old_style_model_change 1) может снизить производительность
- Рекомендуется использовать стандартный метод (по умолчанию)
- Большое количество скинов в конфигурации может замедлить загрузку карты
8.6. Создание собственного модуля
Для создания модуля расширения:- Включите необходимые файлы:
C-подобный:#include <custom_weapons> #include <cw_stocks> - Зарегистрируйте модуль в OnPluginStart:
C-подобный:if (!CW_IsCoreLoaded()) { SetFailState("Custom Weapons core is not loaded!"); } CW_RegisterModule("my_module_name"); - Используйте форварды ядра для интеграции:
C-подобный:public void CWWeapon_Switch(int client, int weapon, int &predicted_viewmodel, int old_seq, int &new_seq, bool switched_from, bool &custom_change) { // Ваш код } - Используйте нативы ядра для получения информации:
C-подобный:if (CW_IsCurrentlyCustom(client)) { int viewModel = CW_GetCustomModelIndex(client); int skin = CW_GetWeaponSkin(client); }
8.7. Миграция с других систем
- Конфигурационные файлы используют стандартный формат KeyValues
- Модели должны быть в формате .mdl
- Материалы должны быть в формате .vmt и .vtf
- Пути указываются относительно корня игры
Заключение
Система Custom Weapons предоставляет гибкую и расширяемую платформу для кастомизации оружия на сервере. Модульная архитектура позволяет легко добавлять новые функции и интегрировать с другими плагинами.Для получения дополнительной помощи обращайтесь к документации или создавайте сообщение в этой теме форума.
Версия ядра и модулей: 2.0.0
Авторы: DENZEL519&AI, 7pElllHuK (Ало, Ва-Вадик?)
Дата создания: 2026
PS В обсуждении этой темы лежит архив с оружие для того чтобы пощупать ядро и модули.
PSS Огромная благодарность 7pElllHuK в помощи тестирования на v34, исправлениях багов, и многом другом.
- Требования
-
SourceMod (рекомендуется 1.10+)
- Переменные
-
Смотрите в (Полном FAQ)
- Команды
-
Смотрите в (Полном FAQ)
- Установка
-
Раскидать всё по папками. Если не запустится, скомпилируйте ядро и модули под вашу версию sourcemod.