Configuration
All settings live in the config/ files. The global values act as defaults: each arena can override them individually from the arena builder.
Framework & inventory
The framework is chosen with a single option. The resource then automatically adapts notifications, inventory, currencies and admin detection.
Config.Framework = "vorp" -- "vorp" | "rsg" | "auto"
Config.Inventory = "auto" -- "vorp" | "ox" | "rsg" | "auto""vorp"— VORP server (vorp_core)."rsg"— RSG server, QB-RedM style (rsg-core)."auto"— detects the running framework at launch (RSG takes priority if present, otherwise VORP).
Behaviours adapted per framework
| Aspect | VORP | RSG |
|---|---|---|
| Core | vorp_core | rsg-core |
| Notifications | native VORP tips | ox_lib |
| Default inventory | vorp_inventory | ox_inventory |
| Admin detection | admin group | admin / god permission, or ace |
| Available currencies | cash, gold, rol | cash, bank, crypto |
Decoupled inventory
Config.Inventory is intentionally separated from the framework, to cover mixed servers (e.g. a VORP server using ox_inventory).
| Value | Effect |
|---|---|
"vorp" | vorp_inventory |
"ox" | ox_inventory |
"rsg" | native rsg-inventory |
"auto" | VORP → vorp_inventory, RSG → ox_inventory |
Currencies: RSG has no native gold. If a "gold" currency is configured, it is treated as cash on RSG. See Betting for the
currencysetting.
Access & map
| Option | Effect |
|---|---|
Config.requiredJob | Jobs allowed to use the arena. Empty = everyone. |
Config.blipsName | Blip name shown on the map. |
Config.blipsArena | Blip sprite. |
Config.requiredJob = {} -- e.g. { "police", "boxer" }
Config.blipsName = "Arene de combat"
Config.blipsArena = "blip_ambient_bounty_hunter"Rewards
Payout multiplier applied based on the difficulty of the defeated opponent (Player vs NPC).
Config.Rewards = {
weak = 0.25,
average = 0.5,
strong = 1,
legend = 2,
}Fighters
-- Solo roster (Player vs NPC): displayed name, model, HP, level
Config.adversaires = {
{ label = "Le champion", modele = "CS_WELSHFIGHTER", health = 1500, level = "legend" },
{ label = "Le chétif", modele = "cs_sunworshipper", health = 100, level = "weak" },
-- ...
}
-- Fighters used in NPC vs NPC and Royal Rumble
Config.adversairesPNJ = {
{ label = "Le champion", modele = "CS_WELSHFIGHTER" },
-- ...
}Config.adversaires— the solo opponent roster. Thelevelfield (weak/average/strong/legend) determines combat behaviour.Config.adversairesPNJ— fighters for the NPC vs NPC and Royal Rumble modes.Config.levelCombat— AI behaviour per level (accuracy, aggression, range, ability). Adjusting a level makes opponents tougher or easier.
Betting
Config.Betting = {
enabled = true,
allowManagerBet = false, -- a manager can bet on their own arena (testing)
currency = 0, -- 0 = cash | 1 = gold | 2 = rol (gold -> cash on RSG)
minBet = 1,
maxBet = 500, -- max bet per player per fight
rakePercent = 5, -- house cut (%)
refundOnCancel = true, -- refund if the fight is cancelled
refundIfNoWinnerBets = false, -- no bet on the winner: false = house keeps, true = refund
interactionDistance = 2.5, -- interaction distance with the bookmaker
bookmakerPedModel = "cs_jeb",
allowedModes = {
player = false, -- Player vs NPC
npc = true, -- NPC vs NPC
rumble = true, -- Royal Rumble
pvp = true, -- Duel
tournament = true, -- Tournament match
},
}Each arena can override enabled, minBet, maxBet, rakePercent and allowedModes.
Management tablet
Config.Tablet = {
enabled = true,
openMode = "item", -- "command" | "item"
command = "boxing", -- chat command (if openMode == "command")
openItem = "boxing_tablet", -- inventory item (if openMode == "item")
requiredJob = {}, -- allowed jobs (empty = Config.requiredJob, then everyone)
locale = "fr", -- tablet language: "fr" | "en"
useClipboardAnim = true, -- play the writing animation while open
}Arena builder
Config.Builder = {
enabled = true,
command = "arena_builder",
adminGroups = { "admin" }, -- allowed groups (VORP)
entryPedModels = { -- models offered for the welcome NPC
{ label = "Bounty hunter", modele = "blip_ambient_bounty_hunter" },
{ label = "Brawler", modele = "mp_u_m_m_saloonbrawler_01" },
-- ...
},
}On VORP, access is granted to the groups listed in adminGroups. On RSG, it relies on the josk_arena.builder ace permission (see Installation).
Emotes
Config.kitEmote = { "KIT_EMOTE_TAUNT_BEST_SHOT_1", "KIT_EMOTE_ACTION_FLEX_1" } -- staging / preview
Config.kitEmoteFinish = { "KIT_EMOTE_REACTION_APPLAUSE_1", "KIT_EMOTE_TAUNT_WAR_CRY_1" } -- victoryAdd or remove entries freely.
Discord (optional)
Config.Discord = {
enabled = true,
webhook = "https://discord.com/api/webhooks/...",
}Announcements for RP events (bets, contracts, tournaments, stables). Setting enabled = false disables everything.
Server settings
Defined in server/server_config.lua (never sent to clients):
ServerConfig.Announce = {
tournamentChampions = true, -- enriched announcement when a tournament ends
bigPayoutThreshold = 1000, -- announcement if the paid pool exceeds this threshold (0 = off)
}
ServerConfig.Contracts = {
itemName = "josk_item_contract", -- "paper contract" item
issueOnSign = true, -- hand out the item on signing
}See Installation for the items to create.