Перейти к содержимому

Инвентарь, экипировка, бустеры и гаджеты

bs_inventory/config/config_inventory.lua, Inventory.Settings:

gridWidth = 8,
gridHeight = 5,
hotbarSlots = 5,
openKey = 'I',
tradeDistance = 3.0,
dropLifetime = 1800, -- seconds a dropped bag stays
pickupRange = 1.8,
corpseLifetime = 900,
overweightSlowdown = 0.75,

Предметы занимают место на сетке (w x h) и имеют вес. Хотбар это клавиши 1-5.

Предметы лежат в bs_inventory/config/config_items.lua, Items.Definitions. При старте они синхронизируются в таблицу bs_item_definitions, чтобы база и конфиг не расходились. Настоящий пример из файла:

medkit = { label = 'Medkit', category = 'medical', weight = 1.2, w = 2, h = 2, stack = 3,
usable = true, value = 120, data = { heal = 75, revive = true } },

Что кладётся в data, зависит от категории. Несколько, которые пригодятся:

  • heal, hunger, thirst - расходуемые
  • weapon = 'WEAPON_X' - предмет это оружие (bs_guard также проверяет, что оно у тебя действительно есть)
  • drug = ... - обрабатывается bs_drugs, см. Наркотики
  • handled = true - инвентарь не расходует его при использовании, это делает другой ресурс
  • defaultMeta = {...} - метаданные, которые получает новый предмет, если никто их не задал (батарея дрона использует это)

Рецепты лежат в том же файле (craft_medkit и т.д.). Рецепт с factionBase = true крафтится только в радиусе активного флага твоей фракции.

Иконки: инвентарь использует линейные иконки из bs_ui/html/js/icons.js. Новый предмет без иконки просто покажет общую.

С миграции 021 одежда это внешний вид, а не предметы. То, что ты носишь, задаётся у NPC гардероба (bs_traders) и сохраняется вместе с персонажем. Только рюкзак и бронежилет остались предметами со слотами экипировки, потому что влияют на игровой процесс (вместимость, защита). Это config_clothing.lua.

Лут контейнеров (мусорные баки, машины, шкафчики) лежит в bs_interactions/config/config_containers.lua. Таблицы лута зомби в bs_economy/config/config_economy.lua. Global.lootMultiplier и Global.lootRollsMultiplier в F1 масштабируют лут контейнеров, не трогая таблицы.

Две отдельные системы со своими слотами.

Бустеры (bs_boosters)Гаджеты (bs_gadgets)
Чтоличные баффы, применяются мгновенното, что ставят или пилотируют
Слоты / клавиши3, клавиши 6 / 7 / 82, клавиши 9 / 0
Категория предметаboostergadget
Конфигbs_boosters/config/config_boosters.luabs_gadgets/config/config_gadgets.lua

Клавиши это key mappings FiveM, игроки могут переназначить их в Настройки > Привязки клавиш > FiveM. Навыки фракции booster_cd / booster_cd2 сокращают оба кулдауна.

Бустеры: Adrenaline (спринт, бесконечная выносливость), Focus (меньше отдачи и раскачки), Painkiller drip (лечение со временем), Fortify (игнорирует часть каждого укуса зомби). Все заканчиваются, когда ты падаешь.

Гаджеты:

  • Scout drone - управляется WASD, Пробел/Ctrl, Shift ускоряет, E отмечает точку для твоего отряда. Есть батарея (Gadgets.Batteries: малая 60 с, средняя 120 с, большая 240 с полёта). Заряжается, стоя в работающей машине, или по E рядом с работающей машиной или генератором (Gadgets.Charge).
  • Mini turret - стреляет только по ходячим, никогда по игрокам. Одна на игрока. Каждый выстрел проверяет сервер.
  • Medic beacon - лечит тебя и сокомандников в радиусе.
  • Decoy - бумбокс, который шумит и привлекает ходячих. Его можно расстрелять.
  • Riot shield - пока отложен (Gadgets.Types.booster_shield.enabled = false), prop ещё не отображается на руке.

Идентификаторы предметов по-прежнему booster_drone, booster_turret, booster_medic, booster_decoy, чтобы старые сохранения работали. Не переименовывай их.

Выдавать предметы для тестов можно из F10 > ITEMS (есть вкладки BOOSTERS и GADGETS) или из кода через exports.bs_inventory:GiveItem(src, item, amount, metadata).