Configuration
L'ensemble des réglages se trouve dans les fichiers config/. Les valeurs globales servent de valeurs par défaut : chaque arène peut les surcharger individuellement depuis le constructeur d'arènes.
Framework & inventaire
Le framework se choisit avec une unique option. La ressource adapte ensuite automatiquement les notifications, l'inventaire, les devises et la détection des administrateurs.
Config.Framework = "vorp" -- "vorp" | "rsg" | "auto"
Config.Inventory = "auto" -- "vorp" | "ox" | "rsg" | "auto""vorp"— serveur VORP (vorp_core)."rsg"— serveur RSG, de style QB-RedM (rsg-core)."auto"— détecte le framework démarré au lancement (RSG est prioritaire s'il est présent, sinon VORP).
Comportements adaptés selon le framework
| Aspect | VORP | RSG |
|---|---|---|
| Core | vorp_core | rsg-core |
| Notifications | tips natifs VORP | ox_lib |
| Inventaire par défaut | vorp_inventory | ox_inventory |
| Détection administrateur | groupe admin | permission admin / god, ou ace |
| Devises disponibles | cash, or, rol | cash, bank, crypto |
Inventaire découplé
Config.Inventory est volontairement séparé du framework, pour couvrir les serveurs mixtes (par exemple un serveur VORP utilisant ox_inventory).
| Valeur | Effet |
|---|---|
"vorp" | vorp_inventory |
"ox" | ox_inventory |
"rsg" | inventaire natif rsg-inventory |
"auto" | VORP → vorp_inventory, RSG → ox_inventory |
Devises : RSG ne dispose pas d'or natif. Si une devise « or » est configurée, elle est traitée comme du cash sur RSG. Voir Paris pour le réglage
currency.
Accès & carte
| Option | Effet |
|---|---|
Config.requiredJob | Métiers autorisés à utiliser l'arène. Vide = tout le monde. |
Config.blipsName | Nom du blip affiché sur la carte. |
Config.blipsArena | Sprite du blip. |
Config.requiredJob = {} -- ex. { "police", "boxeur" }
Config.blipsName = "Arene de combat"
Config.blipsArena = "blip_ambient_bounty_hunter"Récompenses
Multiplicateur de gain appliqué selon la difficulté de l'adversaire vaincu (Joueur vs PNJ).
Config.Rewards = {
weak = 0.25,
average = 0.5,
strong = 1,
legend = 2,
}Combattants
-- Roster solo (Joueur vs PNJ) : nom affiché, modèle, points de vie, niveau
Config.adversaires = {
{ label = "Le champion", modele = "CS_WELSHFIGHTER", health = 1500, level = "legend" },
{ label = "Le chétif", modele = "cs_sunworshipper", health = 100, level = "weak" },
-- ...
}
-- Combattants utilisés en PNJ vs PNJ et Royal Rumble
Config.adversairesPNJ = {
{ label = "Le champion", modele = "CS_WELSHFIGHTER" },
-- ...
}Config.adversaires— roster des adversaires solo. Le champlevel(weak/average/strong/legend) détermine le comportement de combat.Config.adversairesPNJ— combattants des modes PNJ vs PNJ et Royal Rumble.Config.levelCombat— comportement de l'IA par niveau (précision, agressivité, portée, capacité). Ajuster un niveau rend les adversaires plus ou moins coriaces.
Paris
Config.Betting = {
enabled = true,
allowManagerBet = false, -- un gestionnaire peut parier sur sa propre arène (test)
currency = 0, -- 0 = cash | 1 = or | 2 = rol (or -> cash sur RSG)
minBet = 1,
maxBet = 500, -- mise max par joueur et par combat
rakePercent = 5, -- commission de la maison (%)
refundOnCancel = true, -- rembourse si le combat est annulé
refundIfNoWinnerBets = false, -- aucun pari sur le vainqueur : false = la maison garde, true = remboursement
interactionDistance = 2.5, -- distance d'interaction avec le bookmaker
bookmakerPedModel = "cs_jeb",
allowedModes = {
player = false, -- Joueur vs PNJ
npc = true, -- PNJ vs PNJ
rumble = true, -- Royal Rumble
pvp = true, -- Duel
tournament = true, -- Match de tournoi
},
}Chaque arène peut surcharger enabled, minBet, maxBet, rakePercent et allowedModes.
Tablette de gestion
Config.Tablet = {
enabled = true,
openMode = "item", -- "command" | "item"
command = "boxing", -- commande chat (si openMode == "command")
openItem = "boxing_tablet", -- item d'inventaire (si openMode == "item")
requiredJob = {}, -- métiers autorisés (vide = Config.requiredJob, puis tout le monde)
locale = "fr", -- langue de la tablette : "fr" | "en"
useClipboardAnim = true, -- joue l'animation d'écriture pendant l'ouverture
}Constructeur d'arènes
Config.Builder = {
enabled = true,
command = "arena_builder",
adminGroups = { "admin" }, -- groupes autorisés (VORP)
entryPedModels = { -- modèles proposés pour le PNJ d'accueil
{ label = "Chasseur de primes", modele = "blip_ambient_bounty_hunter" },
{ label = "Bagarreur", modele = "mp_u_m_m_saloonbrawler_01" },
-- ...
},
}Sur VORP, l'accès est accordé aux groupes listés dans adminGroups. Sur RSG, il repose sur la permission ace josk_arena.builder (voir Installation).
Émotes
Config.kitEmote = { "KIT_EMOTE_TAUNT_BEST_SHOT_1", "KIT_EMOTE_ACTION_FLEX_1" } -- mise en scène / preview
Config.kitEmoteFinish = { "KIT_EMOTE_REACTION_APPLAUSE_1", "KIT_EMOTE_TAUNT_WAR_CRY_1" } -- victoireAjouter ou retirer des entrées librement.
Discord (optionnel)
Config.Discord = {
enabled = true,
webhook = "https://discord.com/api/webhooks/...",
}Annonces des événements RP (paris, contrats, tournois, écuries). Mettre enabled = false désactive l'ensemble.
Réglages serveur
Définis dans server/server_config.lua (jamais transmis aux clients) :
ServerConfig.Announce = {
tournamentChampions = true, -- annonce enrichie à la fin d'un tournoi
bigPayoutThreshold = 1000, -- annonce si la cagnotte payée dépasse ce seuil (0 = désactivé)
}
ServerConfig.Contracts = {
itemName = "josk_item_contract", -- item « contrat papier »
issueOnSign = true, -- remet l'item à la signature
}Voir Installation pour les items à créer.