Betting
Bets are placed with the arena's bookmaker NPC. The system handles stakes, the house cut (rake) and automatic payout at the end of the fight.
Betting must be enabled (
Config.Betting.enabled) and allowed for the relevant combat mode (allowedModes). Each arena can override these settings — see Configuration.
Player side — placing a bet
- Walk up to the bookmaker ("Betting office").
- Who do you want to bet on? — choose a fighter.
- Enter your stake (between the configured minimum and maximum).
- The bet is placed. The total pool and number of bets are shown.
You can't bet on yourself if you're fighting, nor exceed the maximum stake per fight.
The manager's edge case
By default, a manager cannot bet on an arena they manage — they influence the outcome (opening fights, declaring winners), so no double role.
This safeguard can be lifted per arena from the builder (see builder.md) if the server wants to allow this kind of bet, for example for RP scenarios involving rigged fights / police investigations.
Visible RP cue — when a manager places a bet on their own arena (override on), the bookmaker NPC plays a small piece of theatre: they turn their head toward the manager, tip their hat, then shrug discreetly. An attentive witness (lawmen, another player) may catch the signal and suspect a rigged fight.
Special bet: KO < 1 min
A secondary Yes / No market: "Will there be a KO in under one minute?" Available alongside the main bets (NPC vs NPC and Royal Rumble). It settles at the end of the fight based on its actual duration.
Manager side — managing a fight
At the bookmaker (or via the bet-opening flow), the manager has:
| Action | Effect |
|---|---|
| Open bets | Players can stake. Requires defined fighters. |
| Close bets and start the fight | Locks the stakes and starts the fight. |
| Cancel the fight (refund) | Cancels and refunds the stakes (if refundOnCancel). |
While bets are open, you can return to manage them with the command:
/parisArena locked while a fight is live — when bets are open or locked on an arena, no other fight can be started on it (by anyone, manager included). You have to cancel or settle the current round via
/parisfirst. Safeguard against bugs and abuse: a legitimate fight's pool can never be reset by a new round.
Results & payout
At the end of the fight:
- Winners share the pool, house cut deducted (
rakePercent). - If nobody bet on the winner: depending on
refundIfNoWinnerBets, the house either keeps the pot or the stakes are refunded. - A cancelled fight refunds the stakes (if
refundOnCancel).
The currency used is defined by Config.Betting.currency. Note that RSG has no native gold: a "gold" currency is treated as cash there.
Refunding an already-finished fight
Once a fight is settled, the manager can still void and refund it from the tablet: Bets → History, a "Refund this fight" button appears on the most recent fight. After a two-step confirmation, every stake is returned to the bettors — winners and losers alike —, the paid winnings and the house cut are taken back, and the fight is marked "Fight voided".
Handy to neutralise a disputed result (illegal blow, foul play, refereeing mistake) without anyone losing out.
Good to know:
- Available only on the very last fight of an arena, and as long as no new fight has started on it since.
- Players who are offline at refund time are not credited.
Where the rake goes
The cut taken from each fight (rakePercent) is routed according to Config.Betting.rakeDestination:
| Value | Effect |
|---|---|
"president" (default) | Paid to the arena president: the manager designated in the builder, or the 1st manager otherwise. If they are offline, the cut goes to the manager who opened the bets. |
"custom" | The script pays out nothing itself — you route the cut (stash, company account, bank…) via the event below. |
"sink" | The cut is simply removed from the economy (anti-inflation). |
Designating the president
In the builder, among an arena's assigned managers, one can be marked president: they collect the rake. With no designation, it's the 1st manager in the list.
Routing the rake yourself
Whatever the destination, the server fires an event for every cut collected — this is what you listen to (notably in "custom" mode) to deposit it wherever you want:
AddEventHandler("josk_arena:rakeCollected", function(data)
-- data = { zoneIndex, zonekey, amount, currency, president, winnerLabel, mode }
-- (president and winnerLabel may be nil: arena with no manager / special market)
-- e.g. deposit data.amount into the stash of your choice
end)An export also returns an arena's president at any time:
local presidentCharId = exports.josk_arena:getArenaPresident(zoneIndex)League standings
At the bookmaker, a "League standings" option lets any player view the standings in read-only mode. League management is done from the tablet — see Tournaments & leagues.