Salta ai contenuti

Helper di applicazione della configurazione

@bs_config/shared/apply.lua è ciò che fa arrivare le modifiche di F1 alla tua risorsa.

Ultimo script condiviso, dopo i tuoi file di configurazione:

shared_scripts { 'config/config.lua' }
-- ...
shared_script '@bs_config/shared/apply.lua'
  • All’avvio e a ogni modifica, il server invia un payload { _global = {...}, <resource> = { ['Path.To.key'] = value } } tramite bs_config:apply.
  • L’helper prende la parte per la tua risorsa e modifica sul posto le tue tabelle globali: MyRes.Settings.reward = 75.
  • Tocca solo le chiavi che esistono già con lo stesso tipo. Non inventa mai configurazione.
  • Quando un override viene rimosso rimette il valore originale.
  • Dopo ogni applicazione attiva bs_config:changed:<resource>, così puoi reagire:
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')

Export: Get(key, default), GetPayload(), GetActiveProfile(), su entrambi i lati.

Modificare la tabella basta quando il tuo codice legge la tabella ogni volta:

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

Non basta quando la copi in una variabile locale al caricamento:

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

bs_config rileva quel pattern (local x = Cfg.key al livello superiore) e segna l’impostazione come “riavvio”. Preferisci leggere la tabella.

Aggiungi righe a bs_config/shared/schema.lua. L’id è <resource>:<path>, con tipo, min/max/step, categoria, descrizione e il flag live. Il valore predefinito è letto dal tuo file a runtime, il valore fb nello schema è solo un ripiego. Aggiungi solo chiavi che esistono davvero nella tua configurazione.