Configuration
HZ-Bets has two config layers:
config/config.lua— structural defaults + things the panel doesn't expose (entry points, NPC coords, the ESPN league list, the-odds-api, the payout cap, the brand and colours).- hz_lib admin panel (
bridge_schema.lua) — live, hot-reloadable gameplay values that override the mirrored defaults. Change them in-game, no restart. Until an admin saves a field, the panel shows and uses the config.lua value.
Stake limits & money
| Setting | Default | Meaning |
|---|---|---|
minBet / maxBet | 100 / 50000 | min & max stake per wager |
maxPerEvent | 1 | max open bets a player holds on one event (relaxed for the multi-pick scorer market) |
maxTotal | 25 | max open bets a player holds across all events |
account | bank | framework money account (bank / cash) |
Odds & house risk
| Setting | Default | Meaning |
|---|---|---|
Config.Odds.DefaultModel | parimutuel | fallback model for hand-made events |
vig | 0.05 | house margin (5%) skimmed off the parimutuel pool |
seedPool | 500 (config.lua) · 1000 (panel default) | virtual per-outcome seed that stabilises early odds (never real money). The config.lua value is the one used, and the one the panel shows, until an admin saves another |
Config.Odds.MinDecimal / MaxDecimal | 1.01 / 20 | floor & ceiling on any locked odd |
Config.Bet.MaxPayoutPerSelection | 1000000 | house-safety cap — max total payout the house will ever owe on one outcome |
MaxPayoutPerSelection is your safety lever: a bet that would push the house's exposure on an outcome past it is refused. Tune it to what your economy can absorb. 0 = no cap (not recommended with live).See Markets & odds for what each model means.
Stuck-event safety net
Config.AutoVoidStuckAfterSec = 24 * 3600 -- 24h
A LOCKED event whose result never arrives (a dead API feed) is automatically voided and every stake refunded once it is this many seconds past its deadline — so wager money is never frozen forever. Set 0 to disable.
Brand themes (no rebuild)
The whole UI colour scheme is driven by three colours sent from the config and applied at runtime — change them and the app recolours with no web rebuild, just a restart hz_bets.
local ThemePresets = {
red = { Accent = '#B01024', AccentHi = '#850919', Gold = '#D8A64E' }, -- Red preset (default)
navy = { Accent = '#152A52', AccentHi = '#0E1C3A', Gold = '#D2A33C' }, -- Navy premium
cyan = { Accent = '#006C9E', AccentHi = '#00557A', Gold = '#E0A92E' }, -- HZ Cyan
}
Config.Theme = ThemePresets.red -- swap to .navy / .cyan, or set custom hex
All three presets are WCAG-AA verified (readable white-on-accent, dark-ink-on-gold). The editable header wordmark uses Config.Brand.
Sources
Each event source is toggled and tuned in Config.Sources. ESPN, OpenLigaDB and RP also have their switches in the panel; the-odds-api is set in config.lua only. See the dedicated Event sources page.
Language
Config.Locale (panel-overridable) selects the UI language: en, fr, es. Locale files live in config/locales/<code>.lua.
