Configuration
All configuration lives in config.lua. Below are the values you'll most likely touch — defaults shown.
Pre-Production Checklist
Three switches the server warns about on boot if left wrong:
lua
Config.DevCommands = false -- calibration commands off in production
Config.TestMode = { enabled = false, balance = 1000000 }
Config.Machines = { ... } -- place / populate your machinesGlobals
lua
Config.Framework = 'auto' -- 'auto' | 'qbx' | 'qb' | 'esx'
Config.Locale = 'en' -- 'es' | 'en' | 'pt' | 'fr' | 'ar' (Arabic = RTL)
Config.Debug = falseBets & RTP
lua
Config.MinBet = 10
Config.MaxBet = 500
Config.BuyBonusCost = 100 -- × bet
Config.AnteMult = 1.25
Config.RTP = 0.96 -- valid range [0.80, 0.99]; paytables auto-calibrate
Config.MaxWinPerSpin = 4600000 -- hard cap per spin (scales with MaxBet)
Config.RateMax = 40 -- rate limit: 40 spins…
Config.RateWindow = 5 -- …per 5 seconds, per player
Config.LogHistory = trueCurrency & Account
lua
Config.Account = 'cash' -- 'cash' | 'bank' (use 'bank' to avoid per-spin toasts on QBox+ox_inventory)
Config.Currency = {
mode = 'money', -- 'money' | 'chips'
chipsItem = 'casino_chip',
moneyLabel = '$',
chipsLabel = 'fichas',
}Progressive Jackpot
lua
Config.Jackpot = {
enabled = true,
contributionPct = 0.01, -- 1% of bets, taken FROM the RTP (return unchanged)
scaleWithBet = true,
tiers = {
mini = { seed = 1000, chance = 1/8000 },
minor = { seed = 5000, chance = 1/40000 },
major = { seed = 25000, chance = 1/200000 },
grand = { seed = 100000, chance = 1/1000000 },
},
}Safety Systems (off by default)
lua
Config.Limits = { enabled = false, dailyLoss = 0, dailyWin = 0, dailySpins = 0, dailyWagered = 0 }
Config.Bank = { enabled = false, lossThreshold = 500000, action = 'warn' } -- 'warn' | 'reduce_rtp' | 'close'
Config.BigWin = { enabled = true, multiplier = 100, minAmount = 50000, announceGlobal = false }Admin & Discord
lua
Config.Admin = {
useAce = true,
acePermission = 'orb_slots.admin',
autoGrantGroups = { 'group.admin', 'group.superadmin', 'group.owner', 'group.god' },
command = 'slotcreator',
}
Config.Webhooks = {
enabled = false,
default = '',
byKind = { bigwin = '', jackpot = '', admin = '', rollback_failed = '', anomaly = '', bank = '' },
}
Config.Leaderboard = { enabled = true, size = 10, command = 'slotsleaderboard' }The RTP is authoritative: whatever paytable a game uses, the server adjusts the losing weight so the machine returns exactly `Config.RTP`. Jackpot contribution comes out of that return, so enabling the jackpot never changes the house edge.