LuxelSetManager

Просмотры: 56
  • ŔØ₲ŲĒᏃ᙭Ċ 🌌™ 🅳🆅🆁🅺 Разработчик

Пресеты оружия

Расположение пресетов

Дефолтные пресеты оружия нужно располагать по типам оружия:

profiles\RZXC\LuxelSetManager\Defaults\Weapons\Main
profiles\RZXC\LuxelSetManager\Defaults\Weapons\Secondary
profiles\RZXC\LuxelSetManager\Defaults\Weapons\Pistol
profiles\RZXC\LuxelSetManager\Defaults\Weapons\Knife

Предустановленные пресеты оружия нужно располагать по таким же типам:

profiles\RZXC\LuxelSetManager\Predefined\Weapons\Main
profiles\RZXC\LuxelSetManager\Predefined\Weapons\Secondary
profiles\RZXC\LuxelSetManager\Predefined\Weapons\Pistol
profiles\RZXC\LuxelSetManager\Predefined\Weapons\Knife

Типы оружия

Тип оружия определяется папкой, в которой лежит JSON-файл.

Main — основное оружие.

Secondary — дополнительное оружие.

Pistol — пистолет.

Knife — холодное оружие или оружие ближнего боя.


ID пресета

ID пресета берётся из названия .json файла без расширения.

Например, файл:

AKM_Silenced.json

получит ID:

AKM_Silenced

Функциональные пресеты

Среди дефолтных пресетов есть специальные пустые пресеты. Они нужны для того, чтобы игрок мог выбрать отсутствие конкретного типа оружия.

Среди них:

  • 0_EMPTY_MAIN.json — игрок заспавнится без основного оружия.

  • 0_EMPTY_SECONDARY.json — игрок заспавнится без дополнительного оружия.

  • 0_EMPTY_PISTOL.json — игрок заспавнится без пистолета.

  • 0_EMPTY_KNIFE.json — игрок заспавнится без холодного оружия.


Как работает выдача оружия

Пресет оружия создаёт само оружие, затем рекурсивно создаёт вложения из Attachments, после этого обрабатывает Magazines.

Первый валидный элемент массива Magazines используется для зарядки оружия. Если это магазин, он будет вставлен в оружие. Если это патроны, оружие будет заряжено через внутренний магазин или патронник.

Остальное количество из Amount будет выдано игроку в инвентарь.


Настройки пресетов оружия

PresetName

Настройка: PresetName

Описание: Основное название пресета, которое отображается в меню.

Тип: string

Использование:

"PresetName": "$$$"

SkinName

Настройка: SkinName

Описание: Дополнительное название или подпись пресета.

Тип: string

Использование:

"SkinName": "С глушителем"

RarityID

Настройка: RarityID

Описание: ID предустановленной редкости, которая будет применяться к пресету.

Редкость должна быть заранее зарегистрирована в настройке Rarities. Через неё пресет получает название редкости, цвет свечения и позицию при сортировке в меню.

Тип: string

Использование:

"RarityID": "RARE"

RarityName

Настройка: RarityName

Описание: Редкость пресета.

Тип: string

Использование:

"RarityName": "LEGENDARY"

PresetColorRGB

Настройка: PresetColorRGB

Описание: RGB-цвет пресета.

Тип: array<int>

Использование:

"PresetColorRGB": [
    253,
    26,
    255
]

WeaponClassName

Настройка: WeaponClassName

Описание: Класснейм оружия, которое будет создано при спавне.

Тип: string

Использование:

"WeaponClassName": "AKM"

Attachments

Настройка: Attachments

Описание: Массив вложений, которые будут созданы на оружии.

Тип: array<WeaponAttachment>

Использование:

"Attachments": [
    {
        "Classname": "AK_PlasticBttstck_Black"
    },
    {
        "Classname": "KobraOptic",
        "Attachments": [
            {
                "Classname": "Battery9V"
            }
        ]
    }
]

Attachments[].Classname

Настройка: Attachments[].Classname

Описание: Класснейм фиксированного вложения, которое должно быть создано.

Тип: string

Использование:

"Classname": "UniversalLight"

Attachments[].RandomItemClassnames

Настройка: Attachments[].RandomItemClassnames

Описание: Массив класснеймов, из которых система случайно выберет одно вложение.

Тип: array<string>

Использование:

"RandomItemClassnames": [
    "KobraOptic",
    "ReflexOptic",
    "M68Optic"
]

Attachments[].Attachments

Настройка: Attachments[].Attachments

Описание: Вложения для вложения.

Тип: array<WeaponAttachment>

Использование:

{
    "Classname": "UniversalLight",
    "Attachments": [
        {
            "Classname": "Battery9V"
        }
    ]
}

Magazines

Настройка: Magazines

Описание: Массив магазинов или патронов, которые будут использоваться для зарядки оружия и выдачи дополнительных магазинов в инвентарь.

Тип: array<WeaponMagazineInfo>

Использование:

"Magazines": [
    {
        "Classname": "Mag_AKM_30Rnd",
        "BulletClassname": "Bullet_762x39",
        "Amount": 12
    }
]

Magazines[].Classname

Настройка: Magazines[].Classname

Описание: Класснейм магазина или патронов.

Тип: string

Использование для оружия с магазином:

"Classname": "Mag_AKM_30Rnd"

Использование для оружия без отдельного магазина:

"Classname": "Ammo_308Win"

Magazines[].BulletClassname

Настройка: Magazines[].BulletClassname

Описание: Тип патронов, которыми нужно зарядить магазин или оружие.

Тип: string

Использование:

"BulletClassname": "Bullet_762x39"

Magazines[].Amount

Настройка: Magazines[].Amount

Описание: Общее количество магазинов или пачек патронов, которое будет использовано для этого элемента.

Тип: int

Использование:

"Amount": 12

Пример пресета с магазином

{
    "PresetName": "$$$",
    "SkinName": "С глушителем",
    "RarityName": "LEGENDARY",
    "PresetColorRGB": [
        253,
        26,
        255
    ],
    "WeaponClassName": "AKM",
    "Attachments": [
        {
            "Classname": "AK_PlasticBttstck_Black"
        },
        {
            "Classname": "AK_RailHndgrd_Black"
        },
        {
            "Classname": "UniversalLight",
            "Attachments": [
                {
                    "Classname": "Battery9V"
                }
            ]
        },
        {
            "Classname": "KobraOptic",
            "Attachments": [
                {
                    "Classname": "Battery9V"
                }
            ]
        }
    ],
    "Magazines": [
        {
            "Classname": "Mag_AKM_30Rnd",
            "BulletClassname": "Bullet_762x39",
            "Amount": 12
        }
    ]
}

Пример пресета для оружия со внутренним магазином (болтовок)

{
    "PresetName": "$$$",
    "WeaponClassName": "B95",
    "Attachments": [
        {
            "Classname": "HuntingOptic"
        }
    ],
    "Magazines": [
        {
            "Classname": "Ammo_308Win",
            "Amount": 12
        }
    ]
}

Пример пустого пресета

{
    "PresetName": "#LXSM_EMPTY_WEAPON",
    "SkinName": "#LXSM_EMPTY_WEAPON_MAIN"
}