Custom Weapons

Ядро плагина Custom Weapons 2.0.0

Поддерживаемые игры
  1. CS: Source (OrangeBox)
  2. CS: Source (v34)
Это система для замены моделей оружия на сервере Counter-Strike: Source. Система состоит из ядра и модулей расширения.

Туда входит:
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. Установка​

  1. Скомпилируйте плагин custom_weapons.sp в custom_weapons.smx
  2. Поместите custom_weapons.smx в папку
    C-подобный:
    addons/sourcemod/plugins/
  3. Поместите файл переводов custom_weapons.phrases.txt в папку
    C-подобный:
    addons/sourcemod/translations/
  4. Создайте конфигурационный файл custom_weapons.txt в папке
    C-подобный:
    addons/sourcemod/configs/
  5. Перезагрузите сервер или выполните команду
    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. Установка
  1. Скомпилируйте sm_gloves.sp в sm_gloves.smx
  2. Поместите sm_gloves.smx в папку
    C-подобный:
    addons/sourcemod/plugins/
  3. Создайте конфигурационный файл gloves.ini в папке
    C-подобный:
    addons/sourcemod/configs/
  4. Перезагрузите сервер

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. Установка
  1. Скомпилируйте sm_personal_skin.sp в sm_personal_skin.smx
  2. Поместите sm_personal_skin.smx в папку
    C-подобный:
    addons/sourcemod/plugins/
  3. Убедитесь, что ядро custom_weapons загружено
  4. Перезагрузите сервер

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 — флаги доступа к системе (пусто = для всех)
    Пример:
    C-подобный:
    sm_custom_weapons_admin_flags "abc"
    — доступ для админов с флагами a, b или c

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. Создание собственного модуля​

Для создания модуля расширения:

  1. Включите необходимые файлы:
    C-подобный:
    #include <custom_weapons>
        #include <cw_stocks>
  2. Зарегистрируйте модуль в OnPluginStart:
    C-подобный:
    if (!CW_IsCoreLoaded())
        {
            SetFailState("Custom Weapons core is not loaded!");
        }
    
        CW_RegisterModule("my_module_name");
  3. Используйте форварды ядра для интеграции:
    C-подобный:
    public void CWWeapon_Switch(int client, int weapon, int &predicted_viewmodel, int old_seq, int &new_seq, bool switched_from, bool &custom_change)
        {
            // Ваш код
        }
  4. Используйте нативы ядра для получения информации:
    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.
Автор
DENZEL519
Скачивания
44
Просмотры
335
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя DENZEL519

Сверху Снизу