Skip to main content
All general settings live in shared/config.lua. Secrets (the Tebex secret key) live in server/sv_config.lua — see Premium pass.
shared/config.lua is a shared_script, so it also runs on every client. Never put your Tebex secret or any private key in it. Use server/sv_config.lua for secrets.

Core options

OptionWhat it doesDefault
Config.FrameworkYour framework: 'qbx', 'qb', or 'esx''qbx'
Config.ImagePathWhere the UI loads reward icons from (the reward image is appended to this). Defaults to ox_inventory item images so item rewards show their real icon.'nui://ox_inventory/web/images/'
Config.OpenCommandCommand players use to open the UI'battlepass'
Config.OpenKeyDefault keybind to open the UI. Players can rebind in Settings → Key Bindings. Set to '' to disable.'F7'
Config.LogoImage URL for the top-left logo (any link, e.g. a Fivemanage upload). '' falls back to a plain accent icon.A sample banner URL
Config.LevelUpPriceFlat cash price for the Upgrade Level button, which instantly advances the player one level. Set to 0 to make levelling free.25000
Config.DefaultGarageQB/QBX garage that vehicle rewards are delivered to'pillboxgarage'
Config.DefaultGarage (ESX)Used the same way — the garage vehicle rewards are delivered to'pillboxgarage'
Config.SaveIntervalMilliseconds between batched saves of dirty player data. Passive progress (playtime/quests/XP) is buffered and written on this interval; money-affecting actions always save immediately.10000
Config.DebugSet to true to print internal debug messages to consolefalse
The README refers to a “cost per XP” with the name Config.EXP_PRICE. In the actual source the price control is Config.LevelUpPrice — a flat cash price for the Upgrade Level button. There is no Config.EXP_PRICE key.

Admin command names

The admin command names are configurable under Config.Commands. These are restricted to the group.admin ace — see Commands.
KeyCommandPurpose
Config.Commands.addXp/addxpGrant a player XP
Config.Commands.setPremium/setpremiumToggle a player’s premium
Config.Commands.extendPremium/extendpremiumExtend premium duration
Config.Commands.adminMenu/bpadminOpen the in-game rewards editor

Premium expiration

These control whether and when premium expires. The full premium flow is covered on the Premium pass page.
OptionWhat it doesDefault
Config.EnablePremiumExpirationfalse means premium never expires once grantedtrue
Config.PremiumExpirationType'duration' = X days from activation, 'fixed' = a specific day of each month'duration'
Config.PremiumExpirationDayIn 'duration' mode: number of days. In 'fixed' mode: day-of-month (1-28) it expires on.1
Config.ResetXpOnExpirationtrue wipes the player’s XP / level / claimed rewards when premium expiresfalse

Tebex / redemption

Config.Tebex chooses how premium is redeemed.
OptionWhat it doesDefault
Config.Tebex.Enabledtrue validates real Tebex transactions; false validates single-use codes from nex_battlepass_codestrue
Config.Tebex.RequireCompleteOnly accept payments whose status is Complete/paidtrue
Config.Tebex.PackageIdsOptional allow-list of Tebex package IDs that grant premium. {} accepts any package.{7352503}
See Premium pass for the full setup, including where the Tebex secret comes from.

Theme

The UI is fully black and white. accentColor is the single colour that replaces every “white” highlight in the interface — progress bars, glows, level markers, buttons, icons, the season title. Change it to re-skin the entire UI; leave it #FFFFFF for a pure monochrome look.
Config.Theme = {
    accentColor = '#ffffff', -- main accent, default white. e.g. '#00E0FF', '#FF3B3B', '#7C5CFF'
    accentShade = '#ffffff', -- a dimmer shade of the accent, used for gradient depth

    -- Advanced (optional): leave out to auto-derive from the accent above.
    -- secondaryColor = '#FFFFFF',
    -- textGradient   = 'linear-gradient(180deg, #FFFFFF 0%, #9CA3AF 100%)',
    -- buttonGradient = 'linear-gradient(90deg, #FFFFFF 0%, #9CA3AF 100%)',
}
OptionWhat it doesDefault
Config.Theme.accentColorThe single accent colour that themes the whole UI'#ffffff'
Config.Theme.accentShadeA dimmer shade of the accent, used for gradient depth'#ffffff'
Config.Theme.secondaryColorOptional manual override (commented out by default)Auto-derived
Config.Theme.textGradientOptional manual CSS text gradientAuto-derived
Config.Theme.buttonGradientOptional manual CSS button gradientAuto-derived

Quest reset times

Daily quests reset at a chosen hour; weekly quests reset on a chosen day.
OptionWhat it doesDefault
Config.DailyResetHourHour (0-23) daily quests reset at. 0 = midnight.0
Config.WeeklyResetDayDay weekly quests reset on. 1 = Monday … 7 = Sunday.1
See Quests for how quests are defined and tracked.

Anti-spam

Config.AntiSpam sets the minimum milliseconds between repeated client actions. These are loose floods guards, not hard limits.
KeyWhat it limitsDefault
Config.AntiSpam.questProgressms between updateQuestProgress calls per quest id100
Config.AntiSpam.builtinQuestms between built-in quest progress calls per type (allows rapid kills)50
Config.AntiSpam.claimRewardms between claim-reward UI clicks300
Config.AntiSpam.buyLevelms between Upgrade Level clicks500
Config.AntiSpam.redeemPassms between redeem-pass UI clicks1500

Languages and locales

Translations live in the locales/ folder as simple JSON files. The resource ships with en.json and es.json. The active language is set with Config.Locale, which lives in shared/config_locale.lua (not shared/config.lua). Its value must match a file in locales/. English is always loaded as the fallback.
-- shared/config_locale.lua
Config.Locale = 'en' -- 'en', 'es', etc. (must match a file in locales/)
To change any on-screen text, edit locales/en.json. To add a language, copy a file (for example locales/fr.json), translate the values, and set Config.Locale = 'fr'.