Skip to content

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.

lua
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 ​

AspectVORPRSG
Corevorp_corersg-core
Notificationstips natifs VORPox_lib
Inventaire par défautvorp_inventoryox_inventory
Détection administrateurgroupe adminpermission admin / god, ou ace
Devises disponiblescash, or, rolcash, 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).

ValeurEffet
"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 ​

OptionEffet
Config.requiredJobMétiers autorisés à utiliser l'arène. Vide = tout le monde.
Config.blipsNameNom du blip affiché sur la carte.
Config.blipsArenaSprite du blip.
lua
Config.requiredJob = {}                       -- ex. { "police", "boxeur" }
Config.blipsName   = "Fighting Arena"
Config.blipsArena  = "blip_ambient_bounty_hunter"

Récompenses ​

Multiplicateur de gain appliqué selon la difficulté de l'adversaire vaincu (Joueur vs PNJ).

lua
Config.Rewards = {
    weak    = 0.25,
    average = 0.5,
    strong  = 1,
    legend  = 2,
}

Soin avant / après combat ​

Deux options indépendantes contrôlent les remises à PV pleins, à l'entrée et à la sortie du ring.

lua
Config.autoHealAfterCombat  = true
Config.autoHealBeforeCombat = false

Sortie de combat (autoHealAfterCombat) ​

À la fin d'un combat (solo, PvP, Royal Rumble), le joueur récupère automatiquement la totalité de ses points de vie avant de quitter le ring.

  • true (par défaut) — fin propre, le joueur sort avec ses PV pleins.
  • false — RP plus dur : le joueur garde les PV qu'il avait à la fin du combat (il doit aller voir un médecin / consommer un objet pour se soigner).

Entrée en combat (autoHealBeforeCombat) ​

Au début d'un combat PvP ou Royal Rumble, les PV du joueur sont remis au maximum pour l'équité (personne ne commence à 30 % parce qu'il s'est pris une balle plus tôt).

  • true — combat équilibré, mais la plupart des anti-cheats côté serveur signalent toute augmentation de PV côté client comme triche.
  • false (par défaut) — le joueur garde les PV avec lesquels il entre dans l'arène. Recommandé si vous utilisez un anti-cheat (AnyAC, Badger, équivalents). Pour une équité quand même, mettre true ET whitelist josk_arena dans votre anti-cheat.

Combattants ​

lua
-- Roster solo (Joueur vs PNJ) : nom affiché, modèle, points de vie, niveau
Config.adversaires = {
    { label = "The Champion", modele = "CS_WELSHFIGHTER",  health = 1500, level = "legend" },
    { label = "The Runt",     modele = "cs_sunworshipper", health = 100,  level = "weak"   },
    -- ...
}

-- Combattants utilisés en PNJ vs PNJ et Royal Rumble
Config.adversairesPNJ = {
    { label = "The Champion", modele = "CS_WELSHFIGHTER" },
    -- ...
}
  • Config.adversaires — roster des adversaires solo. Le champ level (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.

Modèles bannis (blacklist) ​

Liste des modèles de peds que tu ne veux pas voir en arène. Un modèle banni ne peut pas être ajouté depuis la tablette du constructeur (le champ s'affiche en rouge et la sauvegarde est refusée) et est ignoré s'il figure dans un roster global ou par-arène.

lua
Config.PedBlacklist = {
    "RE_RALLYDISPUTE_MALES_01",
    "RE_RALLYSETUP_MALES_01",
    -- ajoute ici les modèles à interdire
}

Insensible à la casse.

Paris ​

lua
Config.Betting = {
    enabled              = true,
    allowManagerBet      = false,  -- un gestionnaire peut parier sur sa propre arène (RP de combats truqués -- voir docs Paris)
    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, allowedModes et allowManagerBet depuis le constructeur (cf. builder).

Tablette de gestion ​

lua
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           = "en",             -- langue de la tablette : "fr" | "en"
    useClipboardAnim = true,             -- joue l'animation d'écriture pendant l'ouverture
}

Constructeur d'arènes ​

lua
Config.Builder = {
    enabled     = true,
    command     = "arena_builder",
    adminGroups = { "admin" },   -- groupes autorisés (VORP)
    entryPedModels = {           -- modèles proposés pour le PNJ d'accueil
        { label = "Bounty Hunter", modele = "blip_ambient_bounty_hunter" },
        { label = "Brawler",       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 ​

lua
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" } -- victoire

Ajouter ou retirer des entrées librement.

Langue (i18n) ​

Deux langues sont livrées par défaut : anglais (par défaut) et français. Le choix est server-wide ; tous les joueurs voient la même langue.

Basculer entre les langues incluses ​

Le choix se fait dans la config de la tablette :

lua
Config.Tablet = {
    ...
    locale = "en",   -- "fr" | "en"
}

Cette ligne pilote à la fois la tablette et les textes en jeu (notifications, prompts, labels PNJ, embeds Discord). Restart la ressource pour appliquer — pas besoin de rebuild (les deux dictionnaires sont déjà embarqués dans le bundle).

Personnaliser les textes ​

Tous les textes en jeu — notifications, prompts, labels PNJ, embeds Discord — se trouvent dans config/arena_language.lua, qui reste entièrement modifiable. Le fichier contient un dictionnaire par langue, anglais et français : vous pouvez donc reformuler n'importe quelle ligne au ton de votre serveur. Conserver les clés à l'identique, ne modifier que le texte entre guillemets, puis restart la ressource.

lua
FR.victory        = "Victoire !"
FR.bet_menu_title = "Bureau des paris"

Ajouter une nouvelle langue ​

Besoin d'une langue non incluse ? Écrivez-moi sur le Discord de support — la ressource est prévue pour accueillir des dictionnaires supplémentaires, et l'ajout est rapide.

Repli ​

Si une ligne manque dans la langue active, la ressource retombe sur l'anglais plutôt que d'afficher un texte vide : un dictionnaire partiellement reformulé reste donc toujours utilisable.

Réglages serveur ​

Définis dans server/server_config.lua (jamais transmis aux clients — c'est ici que vivent les secrets comme les URLs de webhook).

Discord (optionnel) ​

lua
ServerConfig.Discord = {
    enabled   = true,
    webhook   = "",                  -- "https://discord.com/api/webhooks/<id>/<token>"
    username  = "Arena Master",      -- vide = identité par défaut du webhook
    avatarUrl = "",                  -- vide = avatar par défaut du webhook
}

Annonces des événements RP (paris payés, contrats signés/rompus, tournois terminés, écuries créées/dissoutes, arènes créées/supprimées). Mettre enabled = false ou laisser webhook = "" désactive l'ensemble — aucun appel HTTP, zéro coût.

Contrats d'écurie ​

lua
ServerConfig.Contracts = {
    itemName    = "josk_item_contract", -- item « contrat papier »
    issueOnSign = true,                 -- remet l'item à la signature
}

Voir Installation pour les items à créer.