Настройки игроков
UserSettings.json — это персональные настройки игрока в LuxelSetManager. Они хранят выбранные пресеты, владение предустановленными пресетами, сроки владения и техническое состояние некоторых систем, например использованные заряды точек спавна.
Где хранится файл
Для каждого игрока создаётся отдельная папка по SteamID64:
profiles\RZXC\LuxelSetManager\Users\<SteamID>\UserSettings.jsonНапример:
profiles\RZXC\LuxelSetManager\Users\76561199190066861\UserSettings.jsonЕсли файла нет, сервер создаст его автоматически при первом обращении к настройкам игрока.
Важное про кэширование
Настройки игроков кэшируются на сервере в памяти.
Это значит, что файл UserSettings.json нельзя просто отредактировать на работающем сервере и ожидать, что изменения сразу применятся.
Сервер уже держит объект игрока в кэше и при следующем сохранении может перезаписать Ваш ручной файл старыми данными из памяти.
Безопасные варианты:
остановить сервер, изменить файл, затем запустить сервер;
использовать API-папку
profiles\RZXC\LuxelSetManager\API;использовать прямые функции API или OpenAPI из серверного кода.
Основная структура
Пример сокращённого UserSettings.json:
{
"SteamID": "76561199190066861",
"UsedMainWeaponID": "AKM",
"UsedSecondaryWeaponID": "0_EMPTY_SECONDARY",
"UsedPistolWeaponID": "MakarovIJ70",
"UsedKnifeWeaponID": "CombatKnife",
"UsedEquipmentID": "PolicemanOrel",
"UsedSpawnPointID": "Balota",
"UsedSurvivorClassname": "SurvivorM_Boris",
"OwnedWeaponsIDs_ExpiringDate": {},
"OwnedEquipmentsIDs_ExpiringDate": {},
"OwnedSpawnPointsIDs_ExpiringDate": {},
"OwnedWeapons": [
{
"PresetID": "AKM",
"ExpiringDate": "FOREVER"
}
],
"OwnedEquipments": [
{
"PresetID": "PolicemanOrel",
"ExpiringDate": "29.08.2026 18:30"
}
],
"OwnedSpawnPoints": [
{
"PresetID": "Balota",
"ExpiringDate": "FOREVER"
}
],
"UsedSpawnPoints": []
}SteamID
Настройка: SteamID
Тип: string
SteamID64 игрока, которому принадлежат настройки.
"SteamID": "76561199190066861"При загрузке через API это обязательное поле. Если оно пустое, файл будет отправлен в BadRequests.
Выбранные пресеты
Выбранные пресеты определяют, что игрок сейчас выбрал в меню и что будет использоваться при следующем спавне.
Используются поля:
UsedMainWeaponID— выбранное основное оружие;UsedSecondaryWeaponID— выбранное дополнительное оружие;UsedPistolWeaponID— выбранный пистолет;UsedKnifeWeaponID— выбранное холодное оружие;UsedEquipmentID— выбранная экипировка;UsedSpawnPointID— выбранная точка спавна;UsedSurvivorClassname— выбранный персонаж.
Пример:
"UsedMainWeaponID": "AKM",
"UsedEquipmentID": "PolicemanOrel",
"UsedSpawnPointID": "Balota",
"UsedSurvivorClassname": "SurvivorM_Boris"Владение пресетами
Предустановленные пресеты выдаются через массивы владения:
OwnedWeapons— доступные игроку предустановленные оружия;OwnedEquipments— доступные игроку предустановленные экипировки;OwnedSpawnPoints— доступные игроку предустановленные точки спавна.
Каждый элемент массива состоит из двух полей:
PresetID— ID пресета;ExpiringDate— срок действия.
Пример:
"OwnedWeapons": [
{
"PresetID": "AK101_Black_Silenced",
"ExpiringDate": "29.08.2026 18:30"
},
{
"PresetID": "AKM",
"ExpiringDate": "FOREVER"
}
]ExpiringDate
Настройка: ExpiringDate
Тип: string
Срок действия владения пресетом.
Поддерживаются два основных варианта:
"ExpiringDate": "FOREVER""ExpiringDate": "29.08.2026 18:30"FOREVER означает владение навсегда.
Дата указывается в формате:
ДД.ММ.ГГГГ ЧЧ:ММ$ALL_PRESETS$
$ALL_PRESETS$ — специальный ID, который выдаёт игроку доступ ко всем предустановленным пресетам определённого типа.
Он работает отдельно для каждой категории:
"OwnedWeapons": [
{
"PresetID": "$ALL_PRESETS$",
"ExpiringDate": "FOREVER"
}
]"OwnedEquipments": [
{
"PresetID": "$ALL_PRESETS$",
"ExpiringDate": "29.08.2026 18:30"
}
]"OwnedSpawnPoints": [
{
"PresetID": "$ALL_PRESETS$",
"ExpiringDate": "FOREVER"
}
]Если у игрока есть и конкретный пресет, и $ALL_PRESETS$, мод использует самый долгий срок доступа.
Например:
$ALL_PRESETS$действует до20.08.2026 12:00;конкретный пресет
AKMдействует до25.08.2026 12:00;для
AKMбудет считаться более поздний срок.
UsedSpawnPoints
UsedSpawnPoints — технический массив, который хранит использованные заряды точек спавна.
Он нужен для системы UsesLimit и UseCooldown у пресетов точек спавна.
Структура элемента:
{
"PresetID": "Balota",
"UsedDates": [
"29.08.2026 18:30:15"
]
}UsedDates — это даты фактического использования зарядов. Пока cooldown не истёк, дата считается активной и занимает один заряд. Когда cooldown истекает, мод удаляет эту дату. Если у пресета больше не осталось активных дат, запись из UsedSpawnPoints может быть удалена полностью.
Обновление через API-папку
Для безопасного обновления UserSettings на работающем сервере используйте API-папку:
profiles\RZXC\LuxelSetManager\APIСкопируйте
UserSettings.jsonнужного игрока в любое безопасное место и отредактируйте новый файл как Вам необходимо. Не переименовывайте его (либо назовите его так, чтобы в названии былUserSettings, например:UserSettings_New.json).
Перекиньте отредактированный файл в папку по пути
profiles\RZXC\LuxelSetManager\APIФайл в ту же секунду удалится и прочитается сервером. В случае успеха применятся и сохранятся новые настройки.
Внутри файла должен быть полноценный JSON настроек игрока с заполненным SteamID.
После обработки сервер:
прочитает файл как
LXSM_UserSettings;проверит, что JSON валидный;
проверит, что
SteamIDне пустой;подготовит массивы;
восстановит серверные ссылки на выбранные пресеты по ID;
положит настройки игрока в кэш;
сохранит их в
Users\<SteamID>\UserSettings.json;уведомит клиента, если у игрока открыто меню;
переместит исходный request-файл в архив.
Успешные и плохие запросы
Если файл успешно обработан, он будет перемещён в:
profiles\RZXC\LuxelSetManager\API\ExecutedRequests\<текущая дата>Имя архивного файла будет приведено к формату:
UserSettings_<SteamID>_<текущая дата и время>.jsonЕсли JSON прочитать не удалось или SteamID пустой, файл будет перемещён в:
profiles\RZXC\LuxelSetManager\API\BadRequests\<текущая дата>С тем же принципом имени:
UserSettings_<SteamID>_<текущая дата и время>.jsonПример полного API-обновления
Файл:
profiles\RZXC\LuxelSetManager\API\UserSettings.jsonСодержимое:
{
"SteamID": "76561199190066861",
"UsedMainWeaponID": "AKM",
"UsedSecondaryWeaponID": "0_EMPTY_SECONDARY",
"UsedPistolWeaponID": "MakarovIJ70",
"UsedKnifeWeaponID": "CombatKnife",
"UsedEquipmentID": "PolicemanOrel",
"UsedSpawnPointID": "Balota",
"UsedSurvivorClassname": "SurvivorM_Boris",
"OwnedWeaponsIDs_ExpiringDate": {},
"OwnedEquipmentsIDs_ExpiringDate": {},
"OwnedSpawnPointsIDs_ExpiringDate": {},
"OwnedWeapons": [
{
"PresetID": "AKM",
"ExpiringDate": "FOREVER"
},
{
"PresetID": "$ALL_PRESETS$",
"ExpiringDate": "29.08.2026 18:30"
}
],
"OwnedEquipments": [
{
"PresetID": "PolicemanOrel",
"ExpiringDate": "FOREVER"
}
],
"OwnedSpawnPoints": [
{
"PresetID": "Balota",
"ExpiringDate": "FOREVER"
}
],
"UsedSpawnPoints": []
}Рекомендация для интеграций
Для выдачи и удаления отдельных пресетов лучше использовать обычные API-команды или ServerOpenAPI, а не перезаписывать весь UserSettings.
Перезапись полного UserSettings полезна, когда нужно:
перенести игрока из другой системы;
импортировать настройки после ручного редактирования;
восстановить файл из бэкапа;
синхронизировать внешнюю админ-панель с модом;
массово изменить выбранные пресеты и владение одним запросом.