All the options live in shared/config.lua, each with a short comment. Membership tiers are in data/membership.lua. The other files in data/ hold the positions of machines, tables, rooms and NPCs measured for the casino map; leave them as they are.
Most gameplay options can also be changed live from /casinoadmin. A value saved in the panel is stored in the database and takes precedence over the file. Reset on a field of the panel goes back to the value in shared/config.lua.
General
| Option | Type | Default | What it does |
|---|---|---|---|
debug | boolean | false | true prints diagnostics to the console. The cuxial_casino_debug convar set to 1 does the same. |
ui.accent | string (hex) | configurable | Main accent colour of the interface. |
ui.accent2 | string (hex) | configurable | Secondary accent colour. |
ui.cashierSide | string | 'right' | Side of the screen where the cashier panel opens: 'left' or 'right'. |
ui.currency | table | { symbol = '$', locale = 'es-ES' } | Currency symbol and number format of the amounts in the interface. |
hud.enabled | boolean | true | true shows the chip total on screen while inside the casino. |
Casino area · area
| Option | Type | Default | What it does |
|---|---|---|---|
polygon | boolean | true | true uses the measured outline of the casino floor. false uses the circle below. |
margin | number | 1.0 | Metres of tolerance around the outline. |
coords, radius | vector3, number | casino centre, 50.0 | Fallback circle when polygon is false. |
Cashier · cashier
| Option | Type | Default | What it does |
|---|---|---|---|
minAmount, maxAmount | number | 10, 500000 | Minimum and maximum of each buy, cash-out or change. |
accounts | string[] | { 'cash', 'bank' } | Accounts players pay with and are paid into. |
commission | number | 0.02 | Commission when cashing out chips. 0.02 is 2 %, rounded up. |
daily.buy, daily.sell | number | 25000, 25000 | Daily buy and cash-out caps per character without a membership. |
staff.enabled | boolean | true | true lets a cashier on duty take over a window. false keeps the NPC at every window. |
staff.requestMs | number | 20000 | Milliseconds the cashier has to accept a request. |
staff.queueMax | number | 6 | Requests waiting per window. |
staff.autoOpen | boolean | true | true opens the request panel for the cashier when one arrives. |
staff.pay.fixed | number | 15 | Fixed commission per accepted operation. |
staff.pay.rate | table | see file | Share of the amount per operation type: buy, sell, exchange, redeem, membership, card. |
staff.pay.maxPerOp | number | 500 | Cap of the cashier commission per operation. |
Casino fund · fund
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | true moves every purchase, cash-out, prize and commission through the fund. |
society | string | 'casino' | Society account used as the fund. See Installation. |
requireBalance | boolean | true | true refuses a cash-out, voucher or prize the fund cannot cover. false pays anyway, leaves the fund at 0 and records the shortfall in the ledger and the console. |
Memberships · membership and data/membership.lua
| Option | Type | Default | What it does |
|---|---|---|---|
requireCard | boolean | false | true requires carrying the card for the membership to count. false only needs the membership stored on the character. |
duplicatePrice | number | 500 | Price of a replacement card at the cashier. |
renewWindowDays | number | 3 | Days before expiry from which the same tier can be renewed. 0 only after it expires. |
creditRate | number | 1.0 | Share of the remaining days' value discounted or refunded when changing tier. 1.0 is all of it. |
Each tier in data/membership.lua:
| Field | What it does |
|---|---|
id | silver, gold or diamond. |
price, days | Price and length of a period. |
color | Colour of the tier in the interface. |
daily.buy, daily.sell | Daily buy and cash-out caps for members of the tier. |
vip | true gives access to the VIP rooms and tables, and lets the member invite guests. |
freeDrinks | true gives bar.freePerHour free drinks per hour. |
welcomeDrink | true gives one welcome drink per visit from the Gold Room waitress. |
Prize vouchers · tickets
| Option | Type | Default | What it does |
|---|---|---|---|
payout | string | 'cash' | How a voucher is paid at the cashier: 'cash' or 'bank' (from the fund), or 'chips'. |
maxAmount | number | 100000000 | Maximum amount of a voucher. |
Slot machines · slots
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false stops every machine. |
disabledThemes | string[] | {} | Themes whose machines do not accept spins: vinewood, frutas, galanoir, vespucci, codigo3, barrio, patron, sandy, diamantes, cayo, golpe, muelle, ovni, littleseoul. |
keys | table | 1, 2, SPACE, F, C | Default keys: betOne, betMax, spin, lever, camera. |
allowPromo | boolean | true | true accepts promotional chips. |
ticketThreshold | number | 25000 | Prizes from this amount are paid with a voucher. Jackpots always are. |
maxWin | number or false | false | Absolute cap per spin. false keeps only the cap of each game. |
jackpot.contribution | number | 0.01 | Share of each bet that goes to the theme's jackpot. |
jackpot.seed | number | 25000 | Amount a jackpot starts from after it is won. |
jackpot.cap | number | 250000 | Maximum a jackpot can reach. |
sounds | boolean | true | true plays the machine sounds for nearby players. |
screen.audio.enabled | boolean | true | true plays the screen's music and effects for the seated player. |
screen.audio.volume, screen.audio.music | number | 0.6, 0.35 | General and music volume, from 0 to 1. |
camera.enabled | boolean | true | true uses the slot cameras while seated. |
camera.preset | string | 'arriba' | Framing of the screen view: 'arriba' (from above the head), 'frontal_cerca' or 'frontal_lejos'. |
Blackjack · blackjack
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the blackjack tables. |
tables.normal, tables.vip | table | 60–5000, 500–50000 | Minimum and maximum bet. VIP tables require a Gold or Diamond membership, or an invitation. |
rules.decks | number | 6 | Decks in the shoe. |
rules.penetration | number | 0.75 | Share of the shoe played before reshuffling. |
rules.standSoft17 | boolean | true | true makes the dealer stand on soft 17. |
rules.blackjackPays | number | 1.5 | Blackjack payout: 1.5 is 3:2. |
rules.doubleAfterSplit | boolean | true | true allows doubling after a split. |
rules.maxSplits | number | 1 | Splits per hand. |
timing.betMs, timing.turnMs | number | 20000, 15000 | Milliseconds to bet from the first chip, and per turn. |
allowPromo | boolean | true | true accepts promotional chips. |
ticketThreshold | number or false | false | Returns from this amount are paid with a voucher. false uses the slot threshold. |
keys | table | RETURN, SPACE, D, S, B, C | hit, stand, double, split, chips, camera. |
camera.view | string | 'seat' | Camera on sitting down: 'seat', 'dealer', 'top' or false. |
luxCards | table | { normal = false, vip = true } | Luxury deck per table type. |
speech, sounds | boolean | true | Dealer voice and table sounds. |
Roulette · roulette
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the roulette tables. |
tables.normal, tables.vip | table | see file | min and max per spot and round total per player and round. |
rules.chipStep | number | 10 | Bets go in multiples of this amount. |
rules.maxSpots | number | 30 | Different spots a player can bet on per round. |
timing.betMs | number | 25000 | Milliseconds of betting from the first bet. |
timing.spinMs | number | 10000 | Milliseconds until the dealer launches the ball, with bets still open. |
allowPromo | boolean | true | true accepts promotional chips. |
ticketThreshold | number or false | false | As in blackjack. |
history | number | 100 | Numbers each table remembers for the history and the hot and cold numbers. |
keys | table | B, C | chips, camera. |
camera.view, camera.spinView | string | 'felt', 'wheel' | Camera on sitting down ('felt', 'wide', 'wheel' or false) and while the ball spins (false keeps the current one). |
hover | boolean | true | true marks on the felt the numbers covered by the spot under the cursor. |
speech, sounds | boolean | true | Dealer voice and table sounds. |
Three Card Poker · threecard
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the tables. |
tables.normal, tables.gold, tables.vip | table | see file | Ante min/max and Pair Plus plusMin/plusMax. Gold Room and VIP tables require a Gold or Diamond membership, or an invitation. |
rules.qualify | number | 12 | Lowest dealer hand that qualifies. 12 is queen high. |
rules.plusNeedsAnte | boolean | true | true only allows Pair Plus together with an ante. |
rules.anteBonus | table | straight 1, trips 4, straightflush 5 | Ante bonus, paid to 1. |
rules.pairPlus | table | pair 1 … straightflush 40 | Pair Plus pay table, paid to 1. |
timing.betMs, timing.decideMs | number | 20000, 20000 | Milliseconds to bet and to decide. |
allowPromo | boolean | true | true accepts promotional chips. |
ticketThreshold | number or false | false | As in blackjack. |
keys | table | RETURN, X, SPACE, B, C | play, fold, look, chips, camera. |
camera.view | string | 'seat' | 'seat', 'wide', 'dealer', 'top' or false. |
autoLook | boolean | false | true picks up the cards when the decision starts. false waits for the look key. |
Texas Hold'em · poker
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the poker table. |
blinds, buyIn | table | 50/100, 2000–50000 | Blinds and buy-in of tables without a profile. A rebuy never goes over the maximum. |
stakes | table | high | Profiles with their own blinds and buy-in. The Gold Room table uses high. |
step | number | 10 | Every amount goes in multiples of this. |
minPlayers | number | 2 | Players with chips needed to deal. |
rake.percent, rake.cap | number | 5, 5000 | House share of each pot and cap per hand. |
rake.noFlopNoDrop | boolean | true | true takes no rake when the hand ends before the flop. |
timing.actMs | number | 20000 | Milliseconds per turn. |
timeBank | table | 30000, refill 5000 every 10 hands | Extra time per player. |
sitOut.timeouts, sitOut.kickMs | number | 2, 600000 | Timeouts in a row before sitting out, and milliseconds sitting out before being stood up and paid. |
postNew | boolean | true | true makes a player who joins mid-game or comes back post a big blind. |
allowPromo | boolean | false | Poker only takes normal chips. |
audit.minPot | number | 10000 | Hands with a pot from this amount are recorded in the ledger with every action. |
keys | table | X, SPACE, RETURN, H, B, C | fold, call, raise, look, chips, camera. |
autoLook | boolean | true | true picks up the cards when they are dealt. |
Lucky wheel · wheel
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false stops the wheel. |
cooldownHours | number | 24 | Hours between free spins per character. |
weights | table | see file | Weight of each prize. Probability = weight ÷ sum of weights. With the defaults the car is 1 in 500. |
cashAccount | string | 'cash' | Account cash prizes go to, paid from the fund. |
vip.days, vip.tier | number, string | 7, 'silver' | Days added to the current membership; a player without one gets this tier. |
mystery | table[] | see file | Mystery prizes by weight: item, chips, cash or vip. |
car.enabled | boolean | true | true gives the car prize. |
car.model | string | 'neon' | Model of the car, also shown on the podium. |
car.garage | string | example | Garage the car is stored in. Use a garage name that exists on your server. |
car.fallback | table | { kind = 'cash', amount = 50000 } | Prize given if the car cannot be delivered. |
podium.enabled | boolean | true | true shows the car turning on the podium. |
keys | table | E, BACK | spin, leave. |
lights, sounds | boolean | true | Wheel lights and sounds. |
Inside Track · horses
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the betting room. |
odds.margin | number | 0.05 | House edge. 0.05 returns 95 %. |
single.min, single.max | number | 100, 10000 | Bet limits of the single race. |
main.min, main.max | number | 100, 50000 | Bet limits of the main event. |
main.everyMin | number | 15 | Minutes between main events, on the clock. |
main.betMs | number | 300000 | Milliseconds bets stay open before the start. |
ticketThreshold | number or false | false | As in blackjack. |
allowPromo | boolean | true | true accepts promotional chips. |
speech, sounds | boolean | true | Commentator and sounds. |
Casino job · job
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false turns off clocking in and every post. |
name | string | 'casino' | Name of the job in your framework. |
posts | table | security 1, bartender 2, cashier 3, dealer 4 | Minimum grade of each post. |
perms.expel | number | 1 | Grade to escort out and expel. |
perms.ban | number | 1 | Grade to ban up to banHours.short hours. |
perms.banLong | number | 5 | Grade to ban up to banHours.long hours or permanently, and to lift bans. |
perms.manage | number | 5 | Grade to take the penthouse lift without a card and to use the boss office. |
perms.tableControl | number | 5 | Grade to close bets early when dealer.closePerm is 'tableControl'. |
banHours | table | { short = 24, long = 720, permanent = true } | Ban caps of ban and banLong. permanent lets banLong ban without an end. |
dealerRate | number | 0.005 | Dealer commission on what is bet at their table. |
payAccount | string | 'bank' | Account commissions and tips are paid into. |
hourlyCap | number | 6000 | Maximum an employee earns per hour in commissions and tips. -1 removes the cap, 0 pays nothing. |
locker | table | { slots = 30, weight = 60000 } | Size of the personal locker. |
Expelling, banning, closing bets and the lift without a card also require being on duty. The boss office does not.
Player dealers · dealer
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false keeps the NPC dealer at every table. |
games | table | blackjack, roulette, threecard true | Games a player dealer can take. |
closePerm | string or false | false | Permission from job.perms needed to close bets early. false lets any dealer running the table do it. |
rouletteCloseMs | number | 5000 | Milliseconds until the roulette launches the ball after closing early. |
notifyCommission | boolean | true | true notifies the dealer of each commission. |
keys | table | G, X | close, leave. |
tip.enabled | boolean | true | true lets players tip the dealer in chips. |
tip.amounts | number[] | { 10, 50, 100, 500 } | Tip buttons. |
tip.min, tip.max | number | 10, 5000 | Tip limits. |
Bar · bar
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false closes the bar. |
drinks | table | see file | Per drink: price in money, chips price, drinks it adds and free (whether it counts for the free drinks of the membership). |
beerItem | string | 'casino_beer' | Item the player takes away when ordering a beer. |
maxDrinks | number | 9 | With more drinks than this, nothing is served. |
champagneMax | number | 4 | From this many drinks, no champagne. |
accounts | string[] | { 'chips', 'cash', 'bank' } | Payment methods of the menu. |
allowPromo | boolean | false | true accepts promotional chips at the bar. |
freePerHour | number | 6 | Free drinks per hour for tiers with freeDrinks. |
queueMax, orderTtlMs | number | 12, 180000 | Orders waiting for a player bartender, and milliseconds before an unprepared order is cancelled. |
staffShare | number | 0.2 | Share of the price the bartender earns, multiplied by the minigame result. |
Drunkenness · drunk
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false makes drinks have no effect and never block playing. |
maxDrinks | number | 15 | Maximum drinks that add up. |
secondsPerDrink | number | 60 | Seconds of drunkenness each drink adds. |
playLimit | number | 9 | With more drinks than this, no sitting down to play and no cashier. |
effects.timecycleFrom, effects.shakeFrom | number | 2, 2 | Drinks from which the drunk filter and the camera shake start. |
effects.walkFrom | number | 3 | Drinks from which the drunk walk starts. |
effects.shakeMax | number | 1.0 | Maximum camera shake. |
items.enabled | boolean | true | true makes ox_inventory items with status = { drunk = X } use this system anywhere on the map. |
items.perDrink | number | 10 | drunk points that equal one drink. Negative values remove drinks. |
items.maxPerChange | number | 40 | Maximum points one item can add or remove. |
passOut.enabled | boolean | false | true makes a player pass out at passOutAt drinks and wake up somewhere else, picked by the weights in wake. |
passOutAt | number | 10 | Drinks to pass out, with passOut.enabled. |
deathBag | string | 'isDead' | Player state bag that marks a dead or downed player. Change it to the one your medical script uses. |
VIP rooms · vip
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false turns off VIP invitations. |
guests | table | { gold = 1, diamond = 3 } | Guests at once per tier. |
guestHours | number | 3 | Hours an invitation lasts. |
endWhenHostLeaves | boolean | true | true ends the invitation when the host leaves the casino. |
inviteDistance | number | 3.0 | Maximum distance to invite. |
bossGrade | number | 5 | Minimum grade to enter the boss office. |
diamondStaffPerm | string | 'manage' | Permission from job.perms that lets employees on duty into the penthouse. |
adminBypass | boolean | false | true lets staff with the admin permission into every area. |
Security · security
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false removes the security options. |
post | string | 'security' | Post that sees the security options on players. |
distance | number | 3.0 | Maximum distance to the target. |
presets | number[] | { 1, 6, 24, 72, 168, 720 } | Ban lengths offered, in hours, filtered by the grade's cap. |
reasonMin, reasonMax | number | 3, 120 | Length of the ban reason. |
throwout.enabled | boolean | true | true plays the bouncer scene at the main door when expelling or banning. false makes the player walk out. |
adminBypass | boolean | true | true lets staff with the admin permission expel and ban without clocking in and without limits. |
Penthouse lift · lift
| Option | Type | Default | What it does |
|---|---|---|---|
enabled | boolean | true | false turns off the lift. |
staffPerm | string | 'manage' | Permission from job.perms that rides without a card. |
key | string | 'E' | Key to use the lift panel. |
holdMs | number | 5000 | Milliseconds the doors stay open on arrival. |
Boss office · office and bossApp
| Option | Type | Default | What it does |
|---|---|---|---|
office.enabled | boolean | true | false turns off the office interactions. |
office.perm | string | 'manage' | Permission from job.perms that uses the office, besides staff. |
office.screen | table or false | office monitor | Screen of Cuxial Screens opened by Computer. false keeps only the animation. |
office.whisky.drinks | number | 1 | Drinks the office whisky adds. |
bossApp.enabled | boolean | true | false removes the management app. |
bossApp.fund | table | { accounts = { 'bank', 'cash' }, max = 5000000 } | Accounts and maximum per deposit or withdrawal. |
bossApp.pay | table | { max = 50000, dailyCap = 150000, account = 'bank' } | Maximum per manual payment, casino daily cap (-1 no cap, 0 no payments) and the account the employee is paid into. |
bossApp.hire | table | { nearby = 8.0, offerSec = 20 } | Distance for the nearby list and seconds a job offer lasts. |
bossApp.bans | table | { maxHours = 720, permanent = true } | Ban cap of the boss. |
bossApp.members.maxDays | number | 90 | Maximum days the boss can give or add to a membership. |
Admin panel · admin
| Option | Type | Default | What it does |
|---|---|---|---|
permission | string | 'admin' | Permission checked through Cuxial Bridge for the panel. |
commands.admin | table | { name = 'casinoadmin', restricted = 'group.admin' } | Command name and the ACE group required. |
alerts.fundLow | number | 250000 | Fund balance below which the summary shows an alert. |
alerts.rtpDrift | number | 0.05 | Deviation of the real return from the target that raises an alert. |
alerts.minWagered | number | 100000 | Amount wagered before the real return is shown. |
alerts.bansHours | number | 24 | Hours of recent bans shown in the alerts. |
pageSize | number | 25 | Rows per page in lists and logs. |
reason | table | { min = 3, max = 160 } | Length of the reason required for sensitive changes. |
Hints, NPCs and ambience
| Option | Type | Default | What it does |
|---|---|---|---|
tips.enabled | boolean | true | true shows the first-visit hints on the right of the screen. |
tips.position | string | 'bottom' | 'bottom' (bottom right) or 'center' (right, above the chip total). |
tips.once | string or false | 'character' | Do not repeat a seen hint: 'character', 'session' or false. |
tips.dismissKey | string | 'DELETE' | Key that dismisses the visible hint. |
tips.sound | boolean | true | Soft chime when a hint appears. |
staffnpc.enabled | boolean | true | false removes every staff and client NPC. |
staffnpc.reception, guards, chief, waitress, clients, goldWaitress | boolean | true | Receptionist, guards, head of security, floor waitress, groups of standing clients and Gold Room waitress. |
staffnpc.tips | boolean | true | true shows the hints on each character's first visit. |
staffnpc.clientsMax | number | 12 | Maximum standing clients. |
staffnpc.goldService.drink | string | 'champ_silver' | Drink served by the Gold Room waitress. |
npcSlots.enabled | boolean | true | true seats NPCs at the bar and at some slot machines. They get up when a player wants the machine. |
ambience.enabled | boolean | true | true plays the casino ambience on entering. |
ambience.walla | boolean | true | Background crowd and machines. |
ambience.video.enabled | boolean | true | Video wall with the casino playlist. |
ambience.pa.enabled | boolean | true | Public address announcements every pa.intervalMs (30 minutes) and on arrival after pa.welcomeMs. |
lounge.enabled | boolean | true | true lets players sit on the sofas and armchairs of the floor and the penthouse. |
Advanced tuning
The blocks presence, batch, limits, walkout, seat, target, zones and the distances, timings, cameras and sync radii inside each game are tuned for the casino map and for performance. Each one is commented in the file. Change them only if you know what you need.
Common changes
-- Higher table limits
blackjack = {
tables = {
normal = { min = 100, max = 10000 },
vip = { min = 1000, max = 100000, membership = true },
},
},
-- No cash-out commission and higher daily caps without membership
cashier = {
commission = 0,
daily = { buy = 50000, sell = 50000 },
},
-- Another car on the lucky wheel
wheel = {
car = { enabled = true, model = 'adder', garage = 'your_garage', fallback = { kind = 'cash', amount = 50000 }, props = false },
},Edit only the keys you need inside the existing blocks; do not replace whole blocks with these examples.
