İçeriğe geç

Yapılandırma uygulama yardımcısı

@bs_config/shared/apply.lua, F1 değişikliklerinin kaynağınıza ulaşmasını sağlar.

Son paylaşılan betik, yapılandırma dosyalarınızdan sonra:

shared_scripts { 'config/config.lua' }
-- ...
shared_script '@bs_config/shared/apply.lua'
  • Başlangıçta ve her değişiklikte sunucu, bs_config:apply ile { _global = {...}, <resource> = { ['Path.To.key'] = value } } yükünü gönderir.
  • Yardımcı sizin kaynağınızın payını alır ve global tablolarınızı yerinde yamalar: MyRes.Settings.reward = 75.
  • Yalnızca zaten var olan ve aynı türde olan anahtarlara dokunur. Asla yapılandırma uydurmaz.
  • Bir geçersiz kılma kaldırıldığında özgün değeri geri koyar.
  • Her uygulamadan sonra bs_config:changed:<resource> tetikler, böylece tepki verebilirsiniz:
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’lar: Get(key, default), GetPayload(), GetActiveProfile(), her iki tarafta.

Kodunuz tabloyu her seferinde okuyorsa tabloyu yamalamak yeterlidir:

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

Yüklemede yerel değişkene kopyalıyorsanız yeterli değildir:

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

bs_config bu kalıbı (en üst düzey local x = Cfg.key) algılar ve ayarı “yeniden başlatma” olarak işaretler. Tabloyu okumayı tercih edin.

bs_config/shared/schema.lua dosyasına satırlar ekleyin. Kimlik <resource>:<path>’tir; tür, min/max/step, kategori, açıklama ve live bayrağı ile. Varsayılan çalışma anında dosyanızdan okunur, şemadaki fb değeri yalnızca yedektir. Yalnızca yapılandırmanızda gerçekten var olan anahtarları ekleyin.