Configuration
Most of the store lives in the database and is edited in-game. config.lua holds the starting defaults for a fresh install plus the structural, sensitive settings that are deliberately not exposed in-game.
What stays file-only
Common defaults
Config.Language = 'en' -- 'en' | 'es'
Config.Command = 'donate'
Config.Keybind = 'F10' -- '' = command only
Config.AcePermission = 'orb.donations'
Config.AdminGroups = { 'admin', 'god', 'superadmin' }
Config.Purchase = {
defaultGarage = 'pillboxgarage',
customPlatePrice = 20,
weaponAsItem = true, -- false on ESX to use its native weapon API
moneyAccount = 'bank', -- 'bank' | 'cash'
plate = { minChars = 2, maxChars = 8 },
phone = { minChars = 6, maxChars = 10 },
cooldown = 1500, -- ms between purchases, per player
}
Config.UI = { screenBlur = true, hideHud = true }Config.UI.hideHudhides the native HUD and minimap while the store is open. NUI HUDs (ps-hud, ox_hud, phones) need their own API — wire those intoConfig.OnOpen/Config.OnClose.
Theming
html/config_ui.js holds every colour and font — edit, restart, done (no build step). Config.Rarities sets the tier colours; the ids are what products store, so add or recolour tiers rather than renaming them. Admins can also re-theme live from the Branding & theme tab, including auto-theming from an uploaded logo.
Localization
locales/en.lua and locales/es.lua, selected with Config.Language. The same table feeds both the Lua side and the entire NUI, including the admin panel. Copy a file to add your own language; any missing key falls back to English. Product names are not here — admins type them in the panel.
Escrow
Left editable for buyers: config.lua, locales/, html/config_ui.js and the framework bridge/ (how a car reaches the garage, an item/weapon the inventory, a plate the vehicle DB, a phone number the phone, and money the account). The purchase, pricing and credit logic stays protected.