Aller au contenu

Ajouter des objets et des traders

Les objets vivent dans bs_inventory/config/config_items.lua, dans Items.Definitions. Au démarrage ils sont synchronisés dans bs_item_definitions, donc tu n’édites que le fichier.

my_tin = { label = 'Tinned Peaches', category = 'food', weight = 0.4, w = 1, h = 1, stack = 5,
usable = true, value = 14, data = { hunger = 25, thirst = 5 } },
  • w / h est la taille dans la grille, stack le maximum par slot, value la valeur catalogue autour de laquelle les traders sont équilibrés.
  • data dépend de la catégorie : heal, hunger, thirst pour les consommables, weapon = 'WEAPON_X' pour les armes, handled = true quand une autre resource le consomme.
  • Les icônes viennent de bs_ui/html/js/icons.js. Sans icône, on en met une générique, ça marche quand même.
  • Tu veux le traduire ? Le label peut recevoir une clé dans bs_inventory/locales/<lang>.lua, voir Langues.

Redémarre bs_inventory quand c’est calme (les inventaires des gens se rechargent). Plus de détails sur la page Inventaire et, côté code, dans Objets et inventaire.

Pour le tester, donne-le-toi depuis F10 > ITEMS, ou par le code :

exports.bs_inventory:GiveItem(src, 'my_tin', 3)

Les recettes sont dans le même fichier. Une recette avec factionBase = true ne se fabrique que dans le rayon du drapeau de ta faction.

Les traders sont dans bs_traders/config/config_traders.lua, Traders.Traders. Chacun est placé par rapport à une zone sûre :

trader_sandy = {
label = 'Camp Trader', role = 'trader', clothing = true,
zone = 'sandy_camp', offset = vector3(-6.0, 4.0, 0.0), heading = 30.0,
model = 'a_m_m_farmer_01', scenario = 'WORLD_HUMAN_STAND_IMPATIENT',
buys = { { item = 'scrap_metal', price = 3 } },
sells = { { item = 'my_tin', price = 20, stock = 30 } },
},
  • buys est ce que le trader paie aux joueurs, sells ce que les joueurs peuvent acheter, stock le limite.
  • Le fichier fourni garde les sells à environ 1,4 à 1,5 fois la value de l’objet et les buys en dessous. Garde ça, sinon l’économie casse vite.
  • role = 'quest' avec missions = { ... } fait un donneur de jobs, les missions sont dans Traders.Missions.
  • Global.traderPriceMultiplier dans F1 met à l’échelle tous les prix d’achat.

Redémarre bs_traders pour appliquer. Si tu as changé une zone sûre, la page carte du site est dessinée à la main à partir de ces fichiers, donc elle ne suit pas toute seule.