Aller au contenu

Inventaire, équipement, boosters et gadgets

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,

Les items occupent de la place dans la grille (w x h) et ont un poids. La barre rapide, ce sont les touches 1-5.

Les items sont dans bs_inventory/config/config_items.lua, Items.Definitions. Au démarrage ils sont synchronisés dans la table bs_item_definitions pour que la base et la config ne dérivent pas. Un vrai exemple du fichier :

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

Ce qui va dans data dépend de la catégorie. Quelques-uns que tu utiliseras :

  • heal, hunger, thirst - consommables
  • weapon = 'WEAPON_X' - l’item est une arme (bs_guard vérifie aussi que tu l’as vraiment)
  • drug = ... - géré par bs_drugs, voir Drogues
  • handled = true - l’inventaire ne le consomme pas à l’usage, une autre resource s’en charge
  • defaultMeta = {...} - metadata qu’un nouvel item reçoit quand personne ne lui en donne (la batterie du drone s’en sert)

Les recettes sont dans le même fichier (craft_medkit etc.). Une recette avec factionBase = true ne se craft que dans le rayon du drapeau actif de ta propre faction.

Icônes : l’inventaire utilise les icônes en trait de bs_ui/html/js/icons.js. Un nouvel item sans icône en affiche simplement une générique.

Depuis la migration 021, les vêtements sont de l’apparence, pas des items. Ce que tu portes se règle chez le PNJ de la garde-robe (bs_traders) et est sauvegardé avec le personnage. Seuls le sac à dos et le gilet pare-balles sont encore des items avec des emplacements d’équipement, parce qu’ils ont un effet sur le gameplay (capacité, protection). C’est config_clothing.lua.

Le loot des conteneurs (poubelles, voitures, armoires) est dans bs_interactions/config/config_containers.lua. Les tables de loot des zombies sont dans bs_economy/config/config_economy.lua. Global.lootMultiplier et Global.lootRollsMultiplier dans F1 modulent le loot des conteneurs sans toucher aux tables.

Deux systèmes distincts avec leurs propres emplacements.

Boosters (bs_boosters)Gadgets (bs_gadgets)
Quoibuffs personnels, à usage instantanéchoses qu’on pose ou qu’on pilote
Emplacements / touches3, touches 6 / 7 / 82, touches 9 / 0
Catégorie d’itemboostergadget
Configbs_boosters/config/config_boosters.luabs_gadgets/config/config_gadgets.lua

Les touches sont des key mappings FiveM, les joueurs peuvent les reconfigurer dans Paramètres > Raccourcis clavier > FiveM. Les compétences de faction booster_cd / booster_cd2 réduisent les deux délais.

Boosters : Adrenaline (sprint, endurance infinie), Focus (moins de recul et de tremblement), Painkiller drip (soin dans le temps), Fortify (ignore une partie de chaque morsure de zombie). Tous s’arrêtent quand tu tombes.

Gadgets :

  • Scout drone - se pilote avec WASD, Espace/Ctrl, Shift accélère, E marque un endroit pour ton escouade. A une batterie (Gadgets.Batteries : petite 60 s, moyenne 120 s, grande 240 s de vol). Se recharge posé dans un véhicule en marche, ou avec E près d’un véhicule en marche ou d’un générateur (Gadgets.Charge).
  • Mini turret - ne tire que sur les rôdeurs, jamais sur les joueurs. Une par joueur. Chaque tir est vérifié par le serveur.
  • Medic beacon - te soigne, toi et ton escouade, dans le rayon.
  • Decoy - une boombox qui fait du bruit et attire les rôdeurs. On peut lui tirer dessus.
  • Riot shield - mis de côté pour l’instant (Gadgets.Types.booster_shield.enabled = false), le prop n’apparaît pas encore sur le bras.

Les ids d’items restent booster_drone, booster_turret, booster_medic, booster_decoy pour que les anciennes sauvegardes fonctionnent. Ne les renomme pas.

Donne des items pour tester depuis F10 > ITEMS (il y a un onglet BOOSTERS et GADGETS), ou depuis le code avec exports.bs_inventory:GiveItem(src, item, amount, metadata).