Aller au contenu

Helper config apply

@bs_config/shared/apply.lua est ce qui fait arriver les changements F1 jusqu’à votre ressource.

Dernier shared script, après vos fichiers de config :

shared_scripts { 'config/config.lua' }
-- ...
shared_script '@bs_config/shared/apply.lua'
  • Au démarrage et à chaque changement, le serveur envoie un payload { _global = {...}, <resource> = { ['Path.To.key'] = value } } via bs_config:apply.
  • Le helper prend la partie de votre ressource et modifie vos tables globales sur place : MyRes.Settings.reward = 75.
  • Il ne touche que les clés qui existent déjà avec le même type. Il n’invente jamais de config.
  • Quand un override est retiré, il remet la valeur d’origine.
  • Il déclenche bs_config:changed:<resource> après chaque application, pour que vous puissiez réagir :
AddEventHandler('bs_config:changed:' .. GetCurrentResourceName(), function()
rebuildSomething()
end)
local mult = BSConfigGet('Global.xpMultiplier', 1.0) -- globals or your own paths, no export call
-- or from anywhere:
local size = exports.bs_config:Get('bs_factions:Factions.Squad.maxSize')

Exports : Get(key, default), GetPayload(), GetActiveProfile(), des deux côtés.

Modifier la table suffit quand votre code relit la table à chaque fois :

-- live: sees the new value next call
local function reward() return RadioTower.Settings.reward end

Ça ne suffit pas quand vous la copiez dans un local au chargement :

-- cached: F1 changes do nothing until restart
local REWARD = RadioTower.Settings.reward

bs_config détecte ce motif (local x = Cfg.key au niveau supérieur) et marque le réglage comme « redémarrage ». Préférez lire la table.

Ajoutez des lignes à bs_config/shared/schema.lua. L’id est <resource>:<path>, avec type, min/max/step, catégorie, description et le flag live. La valeur par défaut est lue depuis votre fichier à l’exécution ; la valeur fb du schema n’est qu’un repli. N’ajoutez que des clés qui existent vraiment dans votre config.