Guides pour installer, configurer et administrer votre serveur.
Installation
Comment faire une installation propre ?
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Ce guide décrit la procédure complète pour déployer la Base Surge sur votre machine ou hébergeur,
depuis la réception du dossier jusqu'au premier démarrage fonctionnel.
Ce que vous recevez à l'achat
Lors de l'achat de la base, vous recevez la totalité du dossier ressources de la Base Surge,
à l'exception des éléments protégés par notre système de sécurité :
API de sécurité (SurgeShield) : licence liée à votre serveur, vérifiée au démarrage.
Obfuscation Lua : double couche : Luraph + couche secondaire propriétaire Surge Studio sur les scripts sensibles.
Ces protections garantissent l'intégrité de la base et empêchent la redistribution non autorisée.
Vous disposez néanmoins de l'ensemble des ressources nécessaires au fonctionnement complet du serveur.
Le fichier SQL surge.sql est fourni directement dans le dossier ressources.
Le pack de contribution stream est livré séparément (voir section dédiée plus bas).
Étape 1 : Copier les ressources
Décompressez l'archive reçue (dossier resources ou équivalent).
Copiez l'intégralité du contenu dans le dossier resources de votre serveur FiveM
(chemin habituel : FXServer/server-data/resources/ ou via txAdmin).
Vérifiez que la structure contient bien les dossiers [core], [gameplay],
[outils], surge_core et SurgeShield.
Ne modifiez pas les noms de dossiers entre crochets ([core], etc.) : ils sont requis par le server.cfg.
Exemple d'arborescence correcte dans votre dossier resources
Étape 2 : Obtenir et configurer votre clé de licence
Pour démarrer le serveur, une clé de sécurité personnelle est obligatoire. Elle est liée à votre achat
et à votre instance serveur.
Créez une nouvelle base de données (ex. surge, interclassement utf8mb4_general_ci).
Sélectionnez la base, onglet Importer, choisissez surge.sql, puis validez.
Configurez la connexion dans votre server.cfg ou fichier de config oxmysql :
set mysql_connection_string "mysql://root@localhost/surge?charset=utf8mb4"
Option B : MariaDB (production / hébergeur)
Téléchargez MariaDB Server
ou utilisez celui fourni par votre hébergeur.
Créez une base et un utilisateur dédié (évitez root en production).
Importez surge.sql via la ligne de commande ou un client graphique comme
HeidiSQL :
mysql -u utilisateur -p nom_de_la_base < surge.sql
Adaptez ensuite la chaîne de connexion dans votre configuration :
set mysql_connection_string "mysql://utilisateur:motdepasse@localhost:3306/nom_de_la_base?charset=utf8mb4"
Étape 4 : Pack de contribution stream
En complément du dossier ressources principal, un pack de contribution contenant un dossier
stream vous est fourni en dehors de l'archive ressources.
Placez le contenu du pack dans un dossier stream à la racine de votre dossier resources
(ou intégrez-le selon la structure indiquée dans votre livraison).
Assurez-vous que les assets streamés sont bien référencés par vos ressources (fxmanifest avec section files / data_file si applicable).
Avertissement : contenu leak : la majorité des éléments de ce pack de contribution
proviennent de sources non officielles (leaks). En l'utilisant, vous restez entièrement responsable
en cas de sanction de la part de CFX / Rockstar ou de tout autre organisme concernant l'utilisation de contenus leakés.
Surge Studio ne peut être tenu responsable de l'usage que vous faites de ce pack sur votre serveur.
Étape 5 : Premier démarrage
Vérifiez que lk_license et mysql_connection_string sont bien dans le server.cfg.
démarrez le serveur via txAdmin ou votre méthode habituelle.
Contrôlez la console : aucune erreur critique sur SurgeShield, oxmysql et surge_core.
Connectez-vous en jeu et testez les menus (F10 staff, /gestion).
Étape 6 : Grade fondateur
Une fois connecté en jeu, le propriétaire du serveur doit s'attribuer le grade fondateur
pour débloquer l'accès complet à la configuration (/gestion, permissions staff, etc.).
Repérez votre ID Unique en jeu (affiché dans le menu personnel ou en haut du menu F10).
Ouvrez la console serveur (txAdmin, console live FXServer ou terminal du serveur).
Exécutez la commande ci-dessous en remplaçant ID_UNIQUE par votre identifiant :
setgroup ID_UNIQUE fondateur
Sans cette étape, vous resterez au grade user et ne pourrez pas configurer correctement votre serveur
via /gestion ni gérer les permissions staff.
Démarrage serveur sans erreur de licence ni de base de données
Besoin d'aide ? Ouvrez un ticket sur le
Discord Surge Studio
avec vos logs console et une capture de votre server.cfg (masquez les mots de passe).
Administration
Comment configurer ses permissions Discord ?
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité du système de permissions staff par rôles Discord de la Base Surge.
La ressource surge_discord_perms relie votre serveur Discord à FiveM : menu F10, panneau /gestion,
commandes chat, boutique s-menu et scripts externes. Aucun bot Node.js n'est requis.
Les permissions Discord sont prioritaires sur les grades ESX lorsque surge_discord_perms est démarré.
Mapping : /gestion > Serveur > Rôles Discord.
Voir aussi installation, menu F10 et Hub Serveur.
Vue d'ensemble du système
Créez un bot Discord et configurez server.cfg (token + guild ID).
FiveM synchronise les rôles Discord via l'API REST.
Dans /gestion, vous mappez chaque rôle aux permissions Surge.
À la connexion, les rôles du membre sont lus et fusionnés en permissions effectives.
Les ACE command.* sont accordés dynamiquement au joueur.
MySQL via oxmysql, grade ESX fondateur pour la première config.
Staff : compte Discord lié à FiveM (lancement via Discord ou CFX).
Étape 1 : Créer l'application et le bot Discord
Developer Portal > New Application.
Menu Bot > copiez le token (secret).
Activez Server Members Intent (Privileged Gateway Intents).
Sans Server Members Intent : HTTP 403 à la sync membre, aucun staff Discord fonctionnel.
Étape 2 : Inviter le bot
OAuth2 > URL Generator : scope bot.
Permission minimale : View Channels.
Invitez le bot sur votre serveur Discord.
Étape 3 : Récupérer le Guild ID
Mode développeur Discord activé.
Clic droit sur le serveur > Copier l'identifiant du serveur.
C'est la valeur de surge_discord_guild_id.
Étape 4 : Configurer le server.cfg
ensure surge_discord_perms
add_ace resource.surge_discord_perms command.add_ace allow
add_ace resource.surge_discord_perms command.remove_ace allow
set surge_discord_bot_token "VOTRE_TOKEN_BOT"
set surge_discord_guild_id "ID_DU_SERVEUR_DISCORD"
set surge_discord_role_sync_ms "600000"
set surge_discord_resync_ms "60000"
set surge_discord_member_delay_ms "400"
set surge_discord_require_id "true"
set surge_discord_log_member_errors "false"
set surge_discord_sync_secret "change-me"
Convar
Défaut
Description
surge_discord_bot_token
(vide)
Token bot Discord
surge_discord_guild_id
(vide)
ID serveur Discord
surge_discord_role_sync_ms
600000
Resync liste rôles (10 min)
surge_discord_resync_ms
60000
Resync joueurs connectés (0 = off)
surge_discord_member_delay_ms
400
Anti rate-limit API
surge_discord_require_id
true
Sans discord: = pas de perms staff
surge_discord_log_member_errors
false
Logs verbeux sync membre
surge_discord_sync_secret
change-me
Secret HTTP /sync et /registry
Étape 5 : Base de données MySQL
Tables auto-créées au boot. SQL manuel : surge_discord_perms/sql/discord_perms.sql.
Table
Contenu
discord_perm_config
JSON mapping rolePermissions + roleMeta
discord_member_roles
Cache role_ids_json par discord_user_id
Étape 6 : Démarrer et vérifier la connexion API
Redémarrez FXServer.
Console : Sync Discord via API (FiveM uniquement) et X rôles Discord synchronisés.
discordperm_status puis discordperm_test_api (console).
401 : token invalide.
403 : bot absent ou Members Intent off.
404 membre : joueur pas sur le Discord du guild_id.
Étape 7 : Créer les rôles sur Discord
Créez vos rôles staff dans Discord. La position hiérarchique influence le libellé F10 et la couleur gamertag si plusieurs rôles sont cumulés.
Index gamertagColor (HUD_COLOUR). Rôle au position Discord le plus élevé l'emporte. Tenue staff : composants ESX Male/Female, appliquée à la prise de service (pas de repli grade ESX).
Règles de calcul des permissions effectives
Union de tous les rôles Discord du membre.
Discord prioritaire sur ESX si la ressource tourne.
f10.staff.full étend F10, NUI, bridge et cmd liées.
surge_discord_require_id true : sans discord: = aucune perm Discord.
Prise de service staff (/staffservice)
Staff Discord (grade user) : /staffservice avant F10 et commandes. Diagnostic : /discordperm_test_cmd.
Synchronisation automatique
Événement
Comportement
Connexion (~1,5 s)
Sync rôles membre, jusqu'à 4 tentatives
surge_discord_resync_ms
Resync tous les joueurs connectés
surge_discord_role_sync_ms
Resync liste rôles Discord
Edit /gestion
Push immédiat aux joueurs avec le rôle
Changement rôle Discord
Prochain resync ou /discordperm_sync_me
Commandes de diagnostic et console
Commande
Qui
Effet
discordperm_debug
Joueur
Discord ID, rôles, perms, gamertag
discordperm_sync_me
Joueur
Force resync rôles
discordperm_test_cmd
Joueur
État service, F10, heal/car/dv, ACE
discordperm_status
Console
État ressource et config
discordperm_test_api
Console
Test GET /guilds/.../roles
discordperm_sync_roles
Console
Resync rôles Discord
discordperm_sync_online
Console
Resync tous les joueurs
discordperm_grant_test <roleId>
Console
Pack staff test sur un rôle
Dépannage (problèmes fréquents)
Symptôme
Solution
Discord NON LIÉ
Lier Discord à CFX ou lancer via Discord
0 rôle sync
Rejoindre le bon serveur Discord (guild_id)
F10 inaccessible
Ajouter f10.Menu.openMenu ou f10.staff.full
/gestion inaccessible
bridge.admin_nui ou nui.hub.*.view
/car refusé
/staffservice + cmd.car + add_ace dans cfg
Access denied add_ace
Lignes add_ace resource.surge_discord_perms
Sécurité et bonnes pratiques
Ne jamais exposer le token bot publiquement.
Limiter serveur.discord_roles.edit aux fondateurs.
Principe du moindre privilège : rôles séparés Modo / Gestion Légal / Illégal.
Dossier bot/ Node.js : optionnel, obsolète.
Ordre de configuration recommandé (récapitulatif)
Grade fondateur ESX.
Bot + Members Intent + invitation.
server.cfg (ensure, token, guild, add_ace).
Validation API console.
Rôles Discord + mapping /gestion.
Tests sync, debug, staffservice, F10.
Permissions par hub (Légal, Illégal, Monde, Serveur)
Support : Discord Surge Studio
avec discordperm_status, capture discordperm_debug, server.cfg (token masqué).
Interface
Comment créer proprement son HUD ?
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité de la personnalisation du HUD joueur de la Base Surge.
La ressource surge_hud regroupe jauges (vie, armure, faim, soif), minimap, compteur de vitesse,
notifications, safezones, chat et widgets personnalisés. La configuration se fait principalement via
/gestion > Serveur > Modules > HUD, persistée dans
ServerConfig.hud_layout et propagée à tous les joueurs via GlobalState.
Deux couches de configuration : le panneau /gestion (hud_layout, prioritaire en jeu)
et les fichiers surge_hud/modules/interface/config.lua (valeurs par défaut, features, fallback).
Commencez par l'identité serveur (Hub Serveur > Général) pour les couleurs DA,
puis affinez le HUD dans Modules.
Vue d'ensemble de l'architecture
Vous configurez le HUD dans /gestion (couleurs, formes, positions, widgets).
surge_core sauvegarde hud_layout en KVP + MySQL (s_core_server_config).
GlobalState.ServerConfig.hud_layout est mis à jour (tous les clients).
surge_hud lit ce state et pousse la config au NUI (html/index.html).
Les joueurs voient le HUD mis à jour sans redémarrage (sauf changements identité surge_*).
Pour tester : personnage en jeu, faim/soif actives (esx_status), véhicule pour le speedometer.
Étape 1 : Accéder au panneau HUD
Chemin :/gestion > Serveur > Modules > HUD.
Ouvrez /gestion (grade fondateur ou staff avec hub Serveur).
Hub Serveur > tuile Modules.
Sélectionnez la section HUD dans le menu latéral des modules.
Barre d'outils en haut du panneau :
Bouton
Action
Déplacer en jeu
Sauvegarde tout le HUD, ferme /gestion, ouvre l'éditeur Figma in-game
Sauvegarder
Persiste l'intégralité de hud_layout (callback saveHudLayout)
Réinitialiser
Restaure les défauts DEFAULT_CONFIG.hud_layout de sv_server_config.lua
Étape 2 : Calibrer les couleurs serveur (Général)
Avant le HUD, configurez /gestion > Serveur > Général :
logo 512×512, surge_color_r/g/b/a, nom serveur.
Ces convars alimentent le mode server des couleurs (notifications, speedo, ID unique si server_info_id_color vide).
Modifier surge_color_* ou le logo dans Général peut nécessiter un redémarrage FXServer
pour être appliqué partout. Les couleurs hud_layout (hex par jauge) s'appliquent sans restart.
Étape 3 : Vie, armure, faim et soif
Section HUD - Vie, armure, faim, soif du panneau.
Réglage
Valeurs
Effet
Affichage vie & armure
Barre | Jauges (faim/soif)
health_armor_style : barres verticales ou jauges hex/carré/rond
Vie radiant
Couleur 1 + 2
Dégradé health_color_a/b. Remplace le gradient dynamique vert/jaune/rouge
Armure radiant
Couleur 1 + 2
armor_color_a/b
Forme jauges
Carré | Rond | Hexagone
needs_shape. Hexagone = contour dégradé, centre semi-transparent
Faim / Soif radiant
2 couleurs chacune
hunger_color_a/b, thirst_color_a/b
Les jauges lisent esx_status (faim, soif) et la vie/armure du ped.
L'oxygène apparaît à la nage (réglages fines dans modules/minimap/config.lua :
maxTime, rechargeSeconds).
Couleurs radiant et formes des jauges (vie, armure, faim, soif, munitions)
Sans surcharge serveur, le HUD utilise modules/interface/config.lua > config.interface.speedometer
(modes default, server, custom par barre).
Un clic dans /gestion enregistre une surcharge globale pour tous les joueurs.
Le bouton Déplacer du speedometer déclenche surge_hud:speedometerPlacement:start
(aperçu en jeu, Entrée = valider, Échap = annuler).
Étape 6 : Bloc infos serveur (logo, ID, joueurs)
Configurable via hud_layout (clés server_info_* et offsets cluster).
Clé
Description
server_info_enabled
Activer ou masquer tout le bloc
server_info_anchor
top_left (défaut) ou top_right
server_info_show_logo
Afficher le logo
server_info_show_id
Afficher l'ID unique
server_info_show_players
Compteur joueurs en ligne
server_info_logo_mode
server = surge_logo_url | custom = URL dédiée
server_info_logo_url
URL https si mode custom
server_info_id_color
Couleur ID (#RRGGBB). Vide = surge_color_*
server_cluster_offset_*
Décalages vw/vh selon ancrage gauche ou droite
Repositionnement : éditeur in-game (calque cluster) ou callbacks server_cluster_offset_*.
Étape 7 : Minimap
Carte custom (fichiers stream/minimap.gfx, graphics.ytd, circlemap.ytd).
appearance.notificationsRounded : angles notifications carrés ou arrondis.
En production, le menu /gestion (hud_layout) est la source de vérité pour les couleurs de jauges affichées.
bootstrap.lua priorise GlobalState sur config.interface.statusColors.
Principaux exports documentés dans fxmanifest.lua :
exports.surge_hud:GetUserPreferHudVisible
exports.surge_hud:SetUserPreferHudVisible
exports.surge_hud:ToggleVisible
exports.surge_hud:IsHudHidden
exports.surge_hud:SetForceHidden
exports.surge_hud:SetHudVisible
exports.surge_hud:SetInventoryOpen
exports.surge_hud:GetServerColors
exports.surge_hud:SetFeatures
exports.surge_hud:GetFeatures
exports.surge_hud:Notify
exports.surge_hud:showNotification
exports.surge_hud:createPrompt
exports.surge_hud:IsPromptOpen
exports.surge_hud:IsInSafeZone
exports.surge_hud:IsDJMenuOpen
exports.surge_hud:OpenDJMenu
exports.surge_hud:ShowChatInput
exports.surge_hud:HideChatInput
exports.surge_hud:AddChatMessage
exports.surge_hud:ShowAdvancedServerInfo
exports.surge_hud:ShowServerAnnouncement
exports.surge_hud:SendNotificationInit
exports.surge_hud:RefreshServerInfo
Exemples : exports.surge_hud:Notify(...), exports.surge_hud:IsInSafeZone(), exports.surge_hud:SetInventoryOpen(true) (masque HUD à l'ouverture inventaire).
Fichiers modifiables (hors escrow)
Liste escrow_ignore dans surge_hud/fxmanifest.lua : configs, clients modules listés, assets html/assets/*.css|js, override.css.
Pour un CSS avancé : html/assets/override.css masque les barres natives GTA ;
surge-hud-custom.css pour le positionnement responsive (commentaire dans sv_server_config : le vw/vh fin peut aussi s'y régler).
Notifications et identité visuelle
Les couleurs de notifications se règlent dans /gestion > Serveur > Notifications
(ServerConfig.notifications), injectées dans surge_hud.
Titres par défaut : Succès, Informations, Erreur (personnalisables).
Le HUD réutilise le logo serveur pour l'icône des toasts si mode server.
Dépannage
Symptôme
Cause probable
Solution
HUD invisible
SetForceHidden, inventaire ouvert, préférence joueur
Vérifier exports ToggleVisible, fermer inventaire, F5 préférences si applicable
Définir speedometer_*_color dans /gestion ou interface config
Widgets disparaissent
Sanitize serveur
Vérifier id, hex colors, URLs https valides
Éditeur in-game ne focus pas
Conflit NUI
Échap pour fermer, réessayer Déplacer en jeu
Reset ne suffit pas
Cache client
Réinitialiser + reconnecter ou restart surge_hud
Ordre de configuration recommandé (récapitulatif)
Général : nom, logo, couleurs DA (surge_color_*).
Notifications : couleurs toasts cohérentes avec la DA.
Modules > HUD : formes et couleurs radiant des jauges.
Test à pied : vie, faim, soif, munitions (arme équipée).
Test véhicule : speedometer style + couleurs + position.
Studio widgets : calques branding (logo texte, rappel règlement, etc.).
Déplacer en jeu : alignement pixel-perfect sur 1080p et 1440p.
Sauvegarder, puis validation avec un joueur non-staff.
Besoin d'aide ? Discord Surge Studio
avec captures /gestion > HUD, ensure surge_hud dans la console, et résolution écran testée.
Économie
Comment bien configurer sa boutique en jeu ?
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité de la boutique en jeu de la Base Surge :
menu F1 (s-menu), panneau /gestion > Serveur > Boutique IG,
coins virtuels, catalogue articles, navigation, commandes staff et connectivité Tebex
(paiements réels, livraison coins/VIP).
Deux économies distinctes :
les coins (users.ncoins) s'achètent et se dépensent dans le menu F1 ;
le VIP et les packs monétaires réels passent par Tebex (euro/dollar).
Ne mélangez pas les flux : un joueur ne peut pas acheter le VIP avec ses coins
(VIPPurchase.Purchase renvoie explicitement vers Tebex).
Vue d'ensemble de l'architecture
Vous configurez identité + URL Tebex dans /gestion > Serveur > Général (surge_tebex).
Vous personnalisez la boutique via Boutique IG (liens, nav F1, catalogue, commandes).
Les réglages sont persistés en KVP ressource + GlobalState (temps réel en jeu).
Le joueur ouvre le menu avec F1 ou /boutique (Config.Command).
Les achats coins débitent ncoins et journalisent dans boutique_purchase_history.
Tebex déclenche des commandes console sur le FXServer via l'intégration native FiveM (sv_tebexSecret) : giveidboutique, givevip, etc.
La valeur est stockée dans le convar surge_tebex (max 512 caractères) et dans
ServerConfig.general.identity.tebex. Au démarrage, server_identity.cfg est régénéré.
Couche
Fichier / clé
Priorité
Panneau Général
surge_tebex (convar)
Référence officielle serveur + loadscreen
Fichier s-menu
shared/config.lua → Config.ShopURL
Fallback NUI si lien slot vide
Slots Boutique IG
smenu_extra_button_links (KVP)
Par bouton (en-tête, VIP…) si renseigné
Nav externe VIP
external_url sur entrée vip
Clic menu latéral VIP
Utilisez la même URL Tebex partout (Général, Config.ShopURL, slots Boutique IG)
sauf cas volontaire (ex. lien direct vers un package VIP). Format attendu : https://votre-boutique.tebex.io/.
Le loadscreen lit aussi links.boutique depuis surge_tebex si non surchargé.
Ouvrez /gestion > Serveur > Général.
Collez l'URL publique de votre boutique Tebex dans le champ Tebex.
Sauvegardez. Vérifiez surge_core/data/server_identity.cfg : ligne setr surge_tebex "…".
Alignez s-menu/shared/config.lua → Config.ShopURL sur la même URL (fallback client).
Redémarrez FXServer si vous modifiez uniquement le fichier Lua (le convar /gestion est live après save).
Menu latéral F1 : ordre, icônes, visibilité des pages
Étape 4 : Gestion des boutons et liens Tebex (détail)
Onglet Gestion des boutons = deux blocs : slots fixes (KVP smenu_extra_button_links)
et entrées navigation externe (KVP smenu_nav_config, champ external_url).
Les 3 slots fixes
Clé KVP
Emplacement UI
Comportement si vide
header_get_coins
En-tête : bouton « Obtenir des coins »
Fallback Config.ShopURL
home_vip_card
Accueil : grande carte VIP
Fallback Config.ShopURL
vip_page_tebex
Page VIP : boutons « Acheter sur Tebex »
Fallback Config.ShopURL + nav VIP
Validation serveur : URL vide autorisée ; sinon https:// ou http://, max 2048 caractères.
Résolution côté client (boutiqueStore.openExternalShop) :
URL passée en paramètre → slot KVP → shopUrl (ou callback openExternalUrl) → ouverture via invokeNative("openUrl").
Entrée menu VIP (nav_type = external)
Par défaut l'entrée vip est de type external : un clic dans le menu latéral ouvre le navigateur.
Vous pouvez définir external_url dédiée (ex. catégorie VIP Tebex). Si vide, même cascade que ci-dessus.
Les entrées vip, cart, logs, admin restent toujours visibles (non désactivables).
Étape 5 : Menu latéral F1 (navigation)
Onglet Menu latéral F1. Données : KVP smenu_nav_config, exposées en
GlobalState.SmenuNavConfig. Callbacks :
s-menu:admin:boutiqueNav:get|set|reset.
Liens externes autorisés sur tuiles : mêmes clés que les slots boutons (header_get_coins, …).
Page À la une : liste noire pour exclure des articles de la rotation automatique.
Staff avec boutique.refresh peut forcer un rafraîchissement de la sélection.
Étape 8 : Ouverture joueur et commandes chat
Réglage
Valeur défaut
Description
Config.Command
boutique
Commande chat pour ouvrir le menu
Config.OpenKey
F1
Touche d'ouverture (mapping FiveM)
Onglet Commandes chat : renomme les commandes admin stockées dans
s-menu/data/boutique_admin_command_names.json.
Redémarrage s-menu requis après modification (RegisterCommand au start).
giveidboutique accepte l'UniqueID joueur (colonne users.UniqueID) ;
le code affiché en en-tête boutique correspond à ce même identifiant.
Étape 9 : Journal des achats et données joueur
Table boutique_purchase_history : chaque achat coins en jeu (arme, véhicule, pack…).
Colonnes : identifier (UniqueID), player_name, purchase_type,
item_name, item_id, price, created_at.
Option fulfilled_at / fulfilled_by si migration staff appliquée.
Coins stockés dans users.ncoins (pas de table boutique séparée pour le solde).
VIP dans vips (expiration, tier). s-menu/server/init_db.lua crée les tables manquantes au boot.
Logs Discord optionnels via surge_logs à chaque achat (Queries.LogPurchase).
Webhooks internes s-menu pour actions admin (give coins, give VIP).
Étape 10 : Panel Administration F1 (en jeu)
Joueurs avec boutique.panel (ou droits équivalents) voient l'entrée Administration
dans le menu F1. Fonctions typiques : recherche par UniqueID, donner/retirer coins, attribuer VIP,
consulter historique, marquer commandes fulfilled.
Ce panel complète le journal /gestion : le staff en service peut agir sans ouvrir le menu admin global.
Connectivité Tebex : guide complet de A à Z
Tebex remplit deux rôles distincts sur la Base Surge :
(1) lier le FXServer pour livrer coins/VIP après paiement réel ;
(2) fournir l'URL web ouverte depuis le menu F1 (« Obtenir des coins », page VIP).
Ne confondez pas la clé secrète (sv_tebexSecret) et le lien public (surge_tebex).
1. Lier Tebex au FXServer (livraison des achats)
FiveM intègre Tebex nativement : aucune ressource ensure tebex n'est nécessaire sur la Base Surge.
La liaison se fait avec une clé secrète générée dans le panel Tebex.
Créez un compte sur tebex.io et une boutique type FiveM (sous-domaine *.tebex.io).
Panel Tebex : Integrations > Game Servers > Connect Game Server.
Choisissez l'option Plugin (libellé historique : c'est l'intégration native FiveM, sans téléchargement).
Donnez un nom au serveur, cliquez Continue, puis copiez la clé secrète affichée.
Ajoutez-la en bas de votre server.cfg : sv_tebexSecret "VOTRE_CLE_SECRETE" (guillemets recommandés).
Redémarrez le FXServer. Dans Tebex, validez l'étape : le statut doit passer à Connected.
N'utilisez pas la clé licence CFX / Keymaster ici : Tebex fournit sa propre clé sv_tebexSecret.
Une seule clé par serveur de production (évitez de dupliquer la même clé sur un serveur de test).
2. URL publique de la boutique (redirections F1)
Une fois la boutique Tebex en ligne, configurez le lien web que les joueurs ouvrent depuis le menu F1.
Procédure détaillée : section Étape 1 : URL Tebex globale ci-dessus
(/gestion > Serveur > Général > Lien Tebex, convar surge_tebex,
fallback Config.ShopURL, slots Boutique IG).
Collez-la dans /gestion > Serveur > Général > Lien Tebex (surge_tebex).
Alignez s-menu/shared/config.lua > Config.ShopURL sur la même URL (fallback si slot vide).
Optionnel : renseignez les slots header_get_coins, vip_page_tebex dans Boutique IG si vous voulez des liens différents par bouton.
3. Identifier le joueur à la caisse (critique)
Tebex doit savoir quel joueur recevra la commande. Sur la Base Surge, l'identifiant standard est l'UniqueID
(nombre affiché en haut du menu boutique F1, champ boutiqueCode / shopCode).
Les commandes giveidboutique et givevip attendent cet UniqueID numérique, pas la license FiveM.
Créez un champ personnalisé au checkout Tebex (libellé ex. « ID boutique F1 ») et mappez la variable du package sur ce champ.
Communiquez dans la boutique : « Entrez l'ID affiché en haut du menu F1 (boutique) ».
Si l'ID est incorrect, la commande échoue côté console : vérifiez les logs FXServer après un achat test.
4. Packages Tebex et commandes console
Chaque package Tebex « Game Server Command » déclenche une ou plusieurs lignes console au moment de l'achat
(joueur en ligne ou file d'attente si offline, selon réglage Tebex).
Produit Tebex
Commande console
Exemple
Pack 500 coins
giveidboutique
giveidboutique {username} 500
Pack 2000 coins
giveidboutique
giveidboutique {username} 2000
VIP Premium 1 mois
givevip
givevip {username} bronze
VIP Héros 1 mois
givevip
givevip {username} silver
VIP Divinité 1 mois
givevip
givevip {username} gold
VIP 7 jours promo
giveviptemp
giveviptemp {username} bronze 7
VIP permanent (caution)
givevip
givevip {username} gold 0
{username} (ou la variable liée à votre champ checkout) doit contenir l'UniqueID saisi par le joueur.
Dans chaque package : type Game Server Commands, exécution même si le joueur est hors ligne recommandée.
Tiers VIP valides : bronze (Premium), silver (Héros), gold (Divinité) - voir Config.VIP.
Si vous avez renommé les commandes dans Boutique IG > Commandes chat, utilisez les nouveaux noms dans les packages Tebex
et redémarrez s-menu avant de tester.
5. Cohérence des liens (parcours joueur)
Joueur appuie sur F1 → voit son UniqueID et son solde coins.
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité du système de personnage de la Base Surge :
sélection multichar, création identité + apparence, premier spawn, slots, économie de départ,
magasins vêtements, administration staff et base de données. La stack remplace
esx_identity, esx_skin, illenium-appearance et fivem-appearance
par surge_multicharacter, surge_clothing et surge_ui.
Périmètre : configuration gameplay et administration uniquement.
Ce guide ne couvre pas les systèmes de protection livrés avec la base (licence, obfuscation, anti-abus réseau).
Vue d'ensemble de l'architecture
Le joueur passe par surge_loadingscreen puis arrive sur l'écran de sélection multichar.
Un routing bucket isolé (instance) affiche le menu sans interférence du monde.
Nouveau slot : création identité RP + apparence dans surge_ui / surge_clothing.
Fin créateur : carte de spawn (ServerConfig.general.spawn_points) ou spawn direct selon config.
ESX charge le personnage (users), ox_inventory reçoit skin + items de départ.
Staff configure spawn, économie et fiches via /gestion (Serveur + Monde).
Base SQL importée (surge.sql) depuis le guide Installation.
Pour admin : /gestion avec serveur.general, serveur.economy ou monde.citizens.
Flux joueur : de la connexion au spawn (détail)
1. Connexion et chargement
Après connexion FiveM, surge_loadingscreen affiche identité serveur
(surge_server_name, couleurs, slides). Puis le client multichar déclenche
multicharacter:client:loadUserData quand la session réseau est prête.
2. Instance de sélection
Le serveur place le joueur dans un routing bucket dédié (isolation).
L'UI de sélection s'ouvre (UseSurgeEsxUi = true → dossier surge_multicharacter/ui/).
Si ShowCharacterPreview = true, un ped 3D + caméra scriptée illustre le personnage sélectionné.
3. Liste des personnages
Callback multicharacter:callback:getCharacters : personnages liés à la licence FiveM.
Format identifier ESX : {slot}:{hash_licence} (ex. 1:abc…).
Chaque fiche affiche prénom, nom, job, argent, etc. Slots vides ou verrouillés selon DefaultCharacterSlots.
4a. Jouer un personnage existant
Clic Jouer → multicharacter:server:playCharacter.
Si hasFinishedCreator = 0 : réouverture du créateur (création inachevée).
Sinon : ESX.Login, chargement skin, spawn à users.position ou point fallback.
Carte spawn surge_ui:character:openSpawn avec afterCreation = true (si ApartmentStart = false).
Choix point → multicharacter:server:confirmAfterCreationSpawn : position + éventuelle location véhicule.
Injection vêtements ox_inventory, items de départ, comptes ESX initialisés.
5. Changement de personnage (F5)
Si AllowCharacterSwitch = true, le menu F5 propose Mes personnages
(callback esx_multicharacter:canSwitchCharacters).
esx_multicharacter:relog sauvegarde, déconnecte le perso actuel et rouvre la sélection.
Le personnage quitté est temporairement verrouillé (relogLocked) pour éviter le re-switch immédiat.
surge_clothing gère les points d'interaction : boutiques vêtements, coiffeur, barber, tatoueur.
Prix, blips et positions sont dans le même fichier config (sections ClothStores, BarberShops, etc.).
À l'ouverture, l'UI catalogue réutilise le même moteur que la création (ForceSurgeUiShop).
Édition personnage existant : EditCharacter (TextUI + distance).
Compatibilité skinchanger
surge_clothing expose les événements legacy skinchanger:loadSkin et callback
esx_skin:getPlayerSkin pour les scripts tiers (ex. s-menu).
Colonne users.skin : JSON apparence persistée.
Étape 3 : Interface surge_ui (création + spawn)
Module création :surge_ui/modules/character/creation/web/ - formulaire identité + hub catégories apparence.
Module spawn :surge_ui/modules/character/spawn/web/ - carte interactive des spawn_points.
Étape 4 : Configuration /gestion (sans redémarrage pour la plupart)
Serveur > Général (serveur.general)
Section Points de spawn : éditeur de general.spawn_points[].
Chaque entrée : id, name, zone, coords (x,y,z,heading),
vehicleRental, vehicleSpawn, image (preview carte).
Le premier point sert de fallback si users.position est NULL.
Boutons staff : « Utiliser ma position », « Tester » in-game.
Voir aussi le hub Serveur > Général.
Général : identité serveur et paramètres (spawn configurable dans le même panneau)
Serveur > Économie (serveur.economy)
Réglages appliqués à chaque nouvelle création via GlobalState.ServerConfig :
Citoyens : fiche détaillée d'un personnage (identité, finances, alts)
Monde > Greenscreener (monde.greenscreener)
Génère les images catalogue pour le créateur (ClothingCdnBase).
Sans captures à jour, certaines vignettes vêtements peuvent manquer dans l'UI création.
Comment configurer le système de création de métier ?
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité de la création et de la configuration des métiers sur la Base Surge.
Il n'existe pas de ressource isolée « job_creator » : le cœur est le Society Manager
(/gestion > Légal > Sociétés), qui crée simultanément le job ESX, ses grades et la société in-game
(boss, coffre, vestiaire). Des extensions couvrent les farms (jobs_builder), l'intérim, la police, le mécano, la cuisine, etc.
Périmètre : configuration gameplay et administration uniquement.
Ce guide ne couvre pas la protection livrée avec la base (licence, obfuscation, anti-abus).
Légal vs illégal : les gangs (hub Illégal, table illegal_gangs) ne sont
pas des jobs ESX. Ils ont leur propre système de recrutement. Ce guide traite les métiers légaux / entreprises.
Vue d'ensemble de l'architecture
Staff en service → /gestion → hub Légal → Sociétés.
Créer une société : identifiant job + label + positions + 4 grades obligatoires.
Backend surge_core insère society_data, jobs, job_grades et enregistre le stash ox.
Les clés internes sont imposées pour compatibilité menu société :
Slot
name (SQL)
grade
Label UI par défaut
1
employed
1
Employé
2
conf-employed
2
Confirmé
3
sous-boss
3
Sous-boss
4
boss
4
Boss
Le grade boss est requis pour le menu patron, permissions coffre par défaut
(Society.DefaultPermissions : ouverture coffre, boss, dépôts, armes… réservés au boss).
Après création : ESX.RefreshJobs(), sync clients, RegisterSocietyStash.
Options à la création
Blip carte : sprite, couleur, position (optionnel).
Vestiaire : toujours activé ; position séparée du boss.
Coffre initial : structure JSON vide (compte société 5000$ dans le template SQL).
Society Manager : vue d'ensemble après création (identité, grades, compte société)
Étape 3 : Configurer la société (onglets Society Manager)
Fichier : SocietyManagerPage.tsx. Quatre onglets principaux :
Un farm par société (clé = name du job). Modal CreateFarmModal.tsx.
Callbacks : surge_core:admin:jobs_builder:create|update|delete.
Runtime : surge_interim/modules/jobs_builder_farm/.
Champ farm
Description
harvest_item / process_item
Noms items ox (récolte → produit transformé)
Points harvest / process / sell
Coords capturées in-game (3 zones)
sell_price
Prix de vente au PNJ / point vente
is_free_job
0 = réservé au job (ou job2) ; 1 = tout le monde peut farmer
Ces panneaux enregistrent une configuration liée à un jobs.name existant.
Créez d'abord la société avec le bon identifiant (ex. police, bennys, burgershot).
Panneau /gestion
Permission
Table(s)
Rôle
Légal > Gestion police
legal.police
police_jobs
Postes, prisons, config runtime police
Légal > Gestions mécano
legal.mecano
mecano_jobs, mecano_points
Points custom, vars mécano
Légal > Cuisine
legal.cuisine
surge_cuisine_jobs + locations/items
Restaurants, catalogue cuisine
Légal > LTD
legal.ltd
shops LTD
Magasins liés à un job
Légal > Immobilier
legal.realestate
surge_property
Agences immobilières
Légal > Garage entreprise
legal.enterprise_garage
owned_vehicles
Flotte société depuis catalogues
Modules intégrés surge_core/addon/[legal]/[job]/ : police, mecano,
ambulance, concess, taxi, realestate (runtime in-game, pas création SQL job).
Métier intérim : configuration des boulots sans nouvelle ligne dans jobs
Étape 7 : job principal vs job2
Colonne
Usage
users.job + job_grade
Métier principal : F5, menu société, paycheck ESX
users.job2 + job2_grade
Second métier légal (tablette, scoring KOTH, doorlock crew…)
Le Society Manager compte les employés sur job ET job2.
Attribution staff : /gestion > Monde > Citoyens → setJob / setJob2
ou commandes /setjob, /setjob2 (permission staff).
Étape 8 : Recrutement et job center (côté joueur)
Ressource : surge_tablette_legal.
Ouverture tablette : item tablettelegal ou bouton « Gestion entreprise » menu boss (pas de /tablette par défaut).
Patron ouvre le recrutement → ligne tablet_recruitment_status.is_open = 1.
Job center : liste les entreprises avec recrutement ouvert (+ services publics si config).
Candidature acceptée → setJob ou setJob2 selon flux tablette.
Services publics exclus de la tablette entreprise (Config.PublicServiceJobs : police, EMS, etc.).
Menu boss in-game (surge_core:society) : gestion employés, coffre, facturation selon job.
Menu F6 et scripts métier (police, EMS…) s'activent une fois le bon job.name assigné.
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité du système de garage sur la Base Surge : garages publics (voiture, bateau, avion),
fourrières, flottes entreprise et gang, rangement et sortie côté joueur, attribution staff et intégrations (concession, téléphone, immobilier).
Il n'existe pas de ressource isolée surge_garage : le cœur métier vit dans
surge_core/addon/[monde]/vehicles, l'interface joueur dans surge_ui, et l'administration dans surge_admin_menu (/gestion).
Périmètre : configuration gameplay et administration uniquement.
Ce guide ne couvre pas la protection livrée avec la base (licence, obfuscation, anti-abus).
Trois types de « garage » distincts :
(1) garages publics sur la carte (garages, tout joueur propriétaire) ;
(2) flotte entreprise (owned_vehicles.owner = nom du job ESX) ;
(3) flotte gang (colonne gang + owner = label du gang).
Les véhicules liés à une propriété (propertiesID ≠ 0) sont masqués des listes garage public.
Vue d'ensemble de l'architecture
Migration SQL garages + garage_pounds (une fois par serveur).
Staff configure les garages publics : /gestion > Monde > Gérer les garages.
Au boot, surge_core charge les garages et fourrières, spawn les PNJ surge_interact et les blips.
Joueur appuie sur E au PNJ → NUI surge_ui (catégories Personnel / Entreprise / Groupe).
Si la table est vide au premier boot, un seed automatique crée les fourrières principales
(ville, plage, Paleto, Sandy, Cayo, LSPD, ports, aéroports…). Fallback legacy :
surge_core/addon/[monde]/vehicles/shared/config_impound.lua.
Table owned_vehicles (colonnes garage)
Colonne
Rôle
owner
UniqueID joueur, identifier, nom job (flotte entreprise) ou label gang
gang
ID gang (flotte illégale, colonne détectée dynamiquement)
plate
Plaque unique
vehicle
JSON props (modèle, couleurs, mods…)
label
Nom affiché dans le menu garage
type
car / boat / aircraft
state
1 ou true = au garage ; 0 ou false = sorti / fourrière UI
garageid
Dernier garage de rangement (informatif, pas restriction d'accès)
Côté serveur, les events surge_core:garage:create|edit|delete vérifient la permission staff
Config.Staff.HavePermission("Menu", "openMenu") (menu staff large), en complément des perms NUI Discord.
Garages publics : identité, positions PNJ/rangement, liste des spawns, blip, onglet Fourrières
La UI NUI peut appeler surge_core:garage:pound:create|edit|delete ; en pratique, les fourrières sont surtout gérées via seed SQL au boot ou édition directe table garage_pounds, puis surge_core:garage:pound:refreshAll.
Côté joueur (récupération)
Interagir avec le PNJ fourrière du bon type (car / boat / aircraft).
Liste des véhicules personnels en state=0 compatibles avec le type.
Action spawnPound : paiement 500$ banque (perso) ; gratuit pour véhicules société ; VIP peut être exempté (surge_core:garage:paidPound).
Sortie serveur : parfois frais additionnel 250$ selon flux sortVehicle type pound.
Config jobs gratuits potentiels : config_impound.lua → free_impound_jobs (police, ambulance…).
Mise en fourrière police : event surge_core:police:impoundVehicle supprime l'entité en map (pas toujours de sync state BDD automatique).
Les véhicules sont des lignes owned_vehicles où owner = jobs.name de la société
(ex. police, ambulance). Créez d'abord la société via Society Manager
(guide métier, hub Sociétés).
Fonctions admin
Liste par job : filtres total / au garage / sortis.
Particularités flotte entreprise : pas de limite « une plaque sur la map » (plusieurs sorties autorisées).
Fourrière entreprise : gratuite. Catalogue véhicules société aussi depuis Society Manager (onglet Catalogues).
Garage entreprise : flotte par job (ex. police), compteurs au garage / sortis, TP et rangement
Résolution gang via illegal_gang_users → illegal_gangs.
Attribution : gang = id numérique, owner = label du gang.
Event : surge_core:admin:gang:garage:giveVehicle, surge_core:garages:attribuevehiculetogang.
Même UX que garage entreprise : liste, bring, store, delete, donner véhicule.
Véhicules boutique=1 : non transférables vers gang.
Garage de gang : flotte par organisation (total, au garage, sortis)
Étape 7 : Attribution véhicules via Citoyens et F10
Chemin :/gestion > Monde > Citoyens → onglet véhicules du joueur sélectionné.
Permission : monde.citizens.
Callback / action
Rôle
surge_core:admin:garage:list
Lister véhicules d'un UniqueID
surge_core:admin:garage:givevehicle
Donner un véhicule (modèle, plaque, garageid)
surge_core:admin:garage:setState
Forcer au garage / sorti
surge_core:admin:garage:delete
Supprimer ligne
surge_core:admin:garage:despawnByPlate
Despawn entité par plaque
NUI citizens:garageVehicle
Bring / store véhicule citoyen depuis le panel
Menu F10 staff : options liées véhicules selon permissions configurées
(ex. f10.ServerOptions.creategarage pour création garage legacy, groupes fondateur, admin, gestionlegal).
Voir menu F10.
Étape 8 : Concessionnaire, téléphone et immobilier
Concession (concess)
Vente véhicule → INSERT owned_vehicles avec garageid choisi à la livraison,
facturation société concession, attribution plaque. Le véhicule apparaît ensuite au garage public correspondant.
Hub : Légal > Concession.
Véhicules avec propertiesID ≠ 0 : exclus des listes garage public et gérés via le système propriété
(property_vehicles). Wipe joueur supprime aussi ces lignes.
Étape 9 : Commandes staff legacy et PNJ
Alternative au panel NUI pour staff autorisés (groupes fondateur, gestionillegal, admin) :
Commande
Effet
/garages
Ouvre menu RageUI admin garage (Garages:createMenu())
/garages:del [id]
Supprime un garage (hors protégés)
/garagenpc [id]
Place le PNJ sur votre position actuelle
/garagenpcedit [id]
Éditeur PNJ interactif
Mêmes events serveur que le panel /gestion : surge_core:garage:create|edit|delete.
jobs_builder (farms intérim) n'a pas de garage dédié : les véhicules de service passent par la
flotte entreprise et le catalogues Society Manager (onglet véhicules).
Après création société police, configurez la flotte dans Garage entreprise ou Catalogues.
Dépannage
Symptôme
Cause probable
Solution
Pas de PNJ garage
Migration non faite ou coords invalides
SQL migration + vérif JSON defaultpos
Menu garage vide
Aucun véhicule state=1 pour ce type
Donner véhicule Citoyens ou concession ; vérifier type
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité du système immobilier sur la Base Surge : agences, création de biens,
tarification, achat et location, intérieurs IPL/MLO, garages de propriété, coffres ox_inventory, meubles, colocataires,
facturation agent et intégrations économie / société / garage public.
La ressource principale est surge_property (alias interne et préfixe events admin : s-property).
Le job agent est géré par surge_core/addon/[legal]/[job]/[entreprise]/realestate.
Périmètre : configuration gameplay et administration uniquement.
Ce guide ne couvre pas la protection livrée avec la base (licence, obfuscation, anti-abus).
Distinction importante : le panel /gestion > Légal > Immobilier sert à placer les
points d'agence (ex. gestion des prix). La création des propriétés se fait en jeu
par l'agent immobilier (/immo, F6), pas depuis le hub Monde.
Vue d'ensemble de l'architecture
Créer la société realestateagent via Society Manager (guide métier).
Staff place le point Gestion des prix : /gestion > Légal > Immobilier.
Le boss agence configure la grille tarifaire (NUI ou shared/price.json).
Agent en service ouvre /immo → NUI création → placement porte monde → INSERT property_list.
Joueur ou agent à la porte : achat, location, facture F6 ou paiement direct.
Propriétaire entre (instance routing bucket 1500 + property_id), coffre ox property_{id}, meubles, garage intégré si type garage_*.
Joueur dans instance (identifier, property_id, entered_at)
realestate_agency_points
Points agence par job (job_name, point_key, coords)
Migrations SQL fournies dans surge_property/sql/ :
add_stored_pos_column.sql, add_plate_normalized_unique.sql, performance_indexes.sql.
Index unique (id_property, plate_normalized) sur les véhicules garage.
Étape 1 : Créer la société agent immobilier
Chemin Society Manager :/gestion > Légal > Sociétés → créer société
realestateagent (label « Agence Immobilière Los Santos » ou personnalisé).
GPS société par défaut : Arcadius vec3(-705.49, 269.15, 83.14) (PSRealEstate.Jobs).
Positions boss, coffre, vestiaire à l'Arcadius ou votre QG RP.
Grade boss requis pour modifier les prix (Config.BossGrade).
Agents prennent service via vestiaire ou checkbox F6 (surge_core:service:set).
Variantes multi-agences : décommenter realestateagentsandy, realestateagentpaleto dans Config.RealEstateJobs et créer les sociétés correspondantes.
Pour ajouter un point « création » en agence : étendre agency_points.lua avec une entrée
action = "creation" (non présent par défaut ; la création passe surtout par /immo et F6).
Placement d'un point
Sélectionner l'agence (realestateagent) dans le panel.
Se téléporter au point existant ou se placer in-game.
Panel Immobilier : points agence par job, téléportation et placement « Enregistrer ici »
Étape 3 : Grille tarifaire (boss agence)
Le boss se rend au point gestion_prix (interaction surge_interact, message « Gérer les prix »)
ou utilise les coords fallback Config.GestionCoords si aucun point placé.
Formule de prix
prix_achat = base[type] × zone[secteur] × storage[taille] prix_location = prix_achat / Config.Economy.RentalPriceRatio (défaut : 25, soit 4 % du prix achat par semaine).
Fichier shared/price.json
Section
Contenu
habitation
Prix de base par type habitation_N
garage
Prix base garages propriété garage_N
entrepots
Prix base entrepôts entrepot_N
coffres
Prix coffre seul coffre_1
zone
Multiplicateurs secteur (1.0 par défaut)
storage
Multiplicateurs taille coffre (50 à 1000)
UI NUI Gestion des prix (openGestionPrixUI) : sous-menus
#subGestionHabitation, #subGestionGarage, #subGestionEntrepot,
#subGestionCoffre, #subGestionSecteurs.
Sauvegarde → callback property:updatePrice → réécrit price.json sur disque.
Autres ratios économie (Config.Economy)
Clé
Défaut
Effet
DefaultRentalPeriod
7 jours
Durée d'un cycle location
CompanyCreditPercent
100 %
Part vente directe agent vers société
AgentBonusPercent
0 %
Bonus agent sur vente directe
ChestSellBackRatio
0.6 (60 %)
Rachat coffre seul par agent
OwnerSellBackRatio
0.25 (25 %)
Revente propriétaire à la porte
Factures F6 : 100 % vers society_realestateagent via billing ESX (pas de split agent).
Shells custom : la catégorie shell est commentée en production ; l'infra
(ConfigProperty.IsShell, ShellSpawn, stream ytyp) reste pour debug
(testshell, tpshell). Les intérieurs actifs sont des IPL natifs.
Blips carte (Config.Blips)
Type
Sprite
Couleur
habitation
411
2 (vert)
entrepot
411
17
coffre
478
17
garage
357
5
Étape 5 : Créer une propriété (agent en service)
Prendre service (vestiaire Arcadius ou F6 realestate).
Mode placement : placer la porte dans le monde (coords sauvées)
Validation → property:createProperty :
INSERT property_list statut free
Register stash ox property_{id} (sauf type garage pur)
Refresh blips et interactions tous clients (property:refreshProperties)
Contrôles placement (Config.Controls) : E interaction, F placement mode,
Entrée confirmer, Backspace annuler, Caps lock gizmo.
Étape 6 : Vente et location (agent → client)
À la porte d'un bien free, menu agent RageUI :
Action
Flux
Acheter
Joueur cible à 2 m → débit banque/cash → property_statut=bought, property_owner=UniqueID
Louer
Paiement location → rented + property_expiration +7 jours
Facturer
property:sendPurchaseBill → ESX billing → property:billPaid à paiement
Supprimer
Bien libre uniquement → property:deleteProperty
Crédit société : CreditCompanyAccount → priorité society_data.coffre,
fallback company_accounts (surge_bank), puis esx_addonaccount.
Menu patron : dépôt/retrait via surge_core:properties:moneyBoss.
Étape 7 : Expérience joueur (propriétaire, visiteur, locataire)
Approche porte (surge_interact, distance Config.Distance.PropertyInteraction = 3 m)
Inventaires coffre véhicule : colonnes trunk, glovebox en BDD.
Les véhicules garage propriété ont propertiesID sur owned_vehicles et sont
masqués des garages publics (voir système de garage).
Étape 9 : Admin citoyens et perquisitions
Panel Monde → Citoyens
Fiche joueur : liste des propriétés possédées.
Action libérer bien : surge_core:admin:citizens:removeProperty
(remet free, ne supprime pas la ligne property_list).
Permission : monde.citizens.
Perquisition police (gameplay)
Config.Security : job police / saspn, grade minimum 6,
durée 300 s. Callbacks property:isPropertyUnderSearch, property:canStartSearch.
Donne accès temporaire coffre/intérieur aux forces de l'ordre.
Bannière NUI menus : GlobalState.ServerConfig.general.identity.banner_menu
ou convars surge_banner_menu, surge_color_r/g/b/a.
Pas de section ServerConfig dédiée immobilier.
Comment configurer le système de création de gang ?
Dernière mise à jour, 1 juillet 2026 · Par Surge Studio
Ce guide décrit l'intégralité du système d'organisations illégales sur la Base Surge :
création admin et joueur, grades, recrutement, tablette F7, PNJ représentant, coffre groupe, territoires,
labos, cargaisons d'armes, garage gang et intégrations missions / drogue / KOTH.
La ressource centrale est surge_illegal_tablette (alias interne illegal-tablet).
L'UI joueur passe par surge_ui/modules/illegal/tablet ; l'administration par surge_admin_menu (/gestion > Illégal).
Périmètre : configuration gameplay et administration uniquement.
Ce guide ne couvre pas la protection livrée avec la base (licence, obfuscation, anti-abus).
Gang ≠ job ESX : les organisations illégales vivent dans illegal_gang_users
et n'utilisent pasusers.job2. Les métiers légaux passent par Society Manager
(guide métier). Un joueur peut avoir un job légal ET un gang en parallèle.
Les callbacks admin gangs vérifient IsPlayerAdmin() : Discord staff, commandes setidgroup/setillegal,
Config.AdminIdentifiers, groupes ESX fondateur, admin, gestionlegal, superadmin.
Le grade gestionillegal ouvre /gestion mais peut être refusé côté callbacks tablette sans permission Discord staff complète.
Attribuer illegal.gangs.create via Discord perms pour l'équipe illégal.
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le menu /gestion est le panneau d'administration NUI (interface React) de la Base Surge.
Il centralise toute la configuration serveur : légal, illégal, monde et paramètres globaux.
C'est l'outil principal pour configurer votre serveur sans toucher aux fichiers à la main.
Accès et prérequis
Commande : tapez /gestion en jeu (ou utilisez Options Serveur depuis le menu F10).
Prise de service : vous devez être en service staff (via F10 ou /staffservice).
Permissions : grade ESX staff (fondateur, admin, gestionlegal, gestionillegal) ou rôles Discord synchronisés via surge_discord_perms.
Vue d'ensemble du panneau /gestion : hubs Légal, Illégal, Monde et Serveur
Architecture du panneau
Le menu est organisé en 4 hubs principaux. Sélectionnez un hub ci-dessous pour ouvrir
sa discussion détaillée dans ce wiki :
Chaque section du panneau possède des permissions par grade (view, edit, create, delete).
Les grades gestionlegal et gestionillegal n'ont accès qu'à leur hub respectif.
La configuration des permissions est persistée en base (staff_runtime_config) et synchronisable avec Discord.
Guide complet : Comment configurer ses permissions Discord ?
Rôles Discord : permissions par hub et par fonctionnalité (ex. groupes Illégal dont gangs)
Le menu F10 reste l'outil de modération en direct (joueurs, reports, noclip).
Le menu /gestion est dédié à la configuration du serveur.
Conventions de rédaction
Règles appliquées à l'ensemble du wiki (paragraphes, tableaux, légendes, textes alt des captures) :
Pas de tiret cadratin (Unicode U+2014) : il ne doit jamais apparaître dans le wiki.
Utilisez une virgule, des deux-points, des parenthèses ou un tiret simple (-) selon le contexte.
Chemin /gestion : séparez les niveaux avec > (ex. /gestion > Légal > Sociétés).
Captures : fichier dans assets/wiki/, balise <figure class="wiki-screenshot">, dimensions réelles en width / height. Menus F10 RageUI (portrait étroit) : article #article-f10, regroupement wiki-screenshot-pair ou wiki-screenshot-gallery.
Le script scripts/extract-wiki.js refuse la génération Elie si un tiret cadratin est encore présent dans base/wiki.html.
Staff
Menu F10
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le menu F10 (commande adminMenu) est le menu staff en jeu pour la modération,
la gestion des joueurs et la prise de service. Il utilise l'interface RageUI intégrée à surge_core.
Ouverture et prise de service
Touche :F10 (mappable dans les paramètres FiveM).
Commande alternative :/adminMenu.
Prise de service : au premier accès, activez votre service staff. Sans service, les actions sont bloquées.
Staff Discord : si votre grade ESX est user mais que vous avez un rôle Discord staff, utilisez /staffservice pour basculer en service.
Menu F10 : écran principal après prise de service
Structure du menu principal
Une fois en service, les entrées suivantes sont disponibles selon vos permissions :
Fiche joueur : statut, informations et téléportation
Fiche joueur : téléportations et actions rapides
Fiche joueur : inventaire et économie (give item, argent)
Fiche joueur : véhicules, job, organisation et armes
Fiche joueur : sanctions, actions dangereuses et divertissement
Reports
La file des reports affiche les tickets ouverts par les joueurs. Vous pouvez prendre en charge un ticket,
vous téléporter, appliquer des sanctions ou cléturer le report. Un compteur de reports actifs est visible
sur l'entrée du menu principal.
Reports : liste des tickets (filtre, statut en attente ou pris)
Fiche report : détails du ticket et téléportations
Pour toute modification de configuration serveur (jobs, gangs, économie, modules), utilisez
Options Serveur qui redirige vers le menu /gestion.
Illégal
Hub Illégal
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le hub Illégal du menu /gestion regroupe toute la configuration
de l'écosystème criminalité : organisations, drogues, armes, braquages et événements.
Les modules correspondants se trouvent dans [gameplay]\[illegal] et dans les addons
surge_core/addon/[illegal].
Chaque section possède une clé de permission NUI (illegal.*) dans
staff_runtime_config. Grade par défaut : gestionillegal,
admin ou fondateur.
Section /gestion
Permission
Ressource
Rôle
Gangs
illegal.gangs
surge_illegal_tablette
Organisations, grades, coffres, XP
Territoires
illegal.territories
surge_illegal_tablette + surge_koth
Zones polygone, influence, craft lié
Laboratoires
illegal.labs
surge_illegal_tablette
Labos intérieurs, attaques, perquisitions
Drogues
illegal.drugs
surge_core/drugs
Circuits monde : récolte, traitement, vente
Receleur / Buyers
illegal.buyers
surge_illegal_tablette
Points d'achat PNJ drogue / items
Magasin illégal
illegal.shop
surge_illegal_tablette
PNJ et catalogue par point de vente
Craft public
illegal.craft_public
tables illegal_craft_*
Recettes armes / items par catégorie
Cargaisons
illegal.cargo
surge_illegal_tablette
Commandes armes, livraison camion
Réglages armes
illegal.weapons
surge_core + ox_inventory
dégâts, recul, chargeur par arme
Boîte de munitions
illegal.ammo
ox_inventory
Quantité tirée à l'ouverture de chaque boîte
Gestion des events
illegal.events
surge_mission_illegal, surge_koth
Fourgon, avion, KOTH, drogue, missions tablette
Assignation joueur
illegal.assign_player
Tablette illégale
Forcer un joueur dans un gang
Garage gang
illegal.gang_garage
surge_core
Flottes réservées aux organisations
Actions
illegal.actions
surge_braquage_illegal
Braquages : Fleeca, ATM, yacht (vue)
Vente de rue : la ressource surge_vente_drogue complète les circuits
illegal.drugs (vente aux PNJ avec niveau vendeur). Une partie se configure dans
config/MainConfig.lua en plus du panel.
Hub Illégal : vue d'ensemble des sections configurables
Ordre de configuration recommandé
Gangs : créer les organisations et leurs grades (fondation de tout l'écosystème).
Territoires : dessiner les zones et lier les catégories de craft si besoin.
Craft public : définir les recettes d'armes / items avant les cargaisons.
Laboratoires : labos intérieurs (weed, coke, meth) avec templates.
La tablette illégale (surge_illegal_tablette, touche F7) est l'outil
en jeu des joueurs : effectifs, territoires, labos, cargaisons, finances et missions.
Champs configurables
Identité :name (unique), label, type (orga / gang / indépendant), couleur hex.
Progression : points, XP, niveau (max 50), membres max (par type : indép. 10, gang 25, orga 20).
Coffre gang : position JSON, slots (défaut 50), poids max (défaut 100 000 g).
Les territoires sont des polygones sur la carte. Chaque gang accumule des points d'influence
(illegal_territory_points). Un territoire peut être lié à une catégorie de craft
(craft_category_id) pour les cargaisons d'armes.
Champs configurables
Zone : nom, polygone JSON (liste de points x/y), couleur affichage.
Restrictions :allowed_types (gang, orga, indépendant) ou allowed_gang_ids (liste d'IDs).
Craft lié : catégorie illegal_craft_categories pour débloquer recettes sur ce territoire.
Influence : points par gang, visible sur la tablette et la carte.
KOTH (King of the Hill)
Ressource surge_koth : événements automatiques (ex. 21h et 23h), durée ~920 s, rayon 200 m.
Récompenses argent + items par emplacement (Grand Senora, Pacific Bluffs, Grapeseed).
Configurez les horaires et récompenses dans surge_koth/shared/config.lua si besoin hors panel.
Mise en place
Créez les gangs avant de dessiner les territoires.
Dessinez le polygone sur la carte via le panel (minimum 3 points).
Liez une catégorie craft si ce territoire doit autoriser des recettes d'armes.
Testez capture en jeu et montée des points sur la tablette.
Territoires : fiche (identité, règles, craft, statut libre ou gang en tête)
Territoires : éditeur de zone (dessiner un polygone sur la carte, valider ou annuler)
Les labos sont des intérieurs instanciés (weed, coke, meth, ergot, custom) distincts des
circuits illegal.drugs en plein air. Ils supportent attaques inter-gangs et perquisitions police.
Points de vente illégaux en monde ouvert : un PNJ par emplacement avec son propre
catalogue (items, prix, monnaie). Distinct des Cargaisons (livraison camion).
Champs configurables
Point de vente : label, modèle PNJ, position (x, y, z, heading), distance d'interaction.
Ajuste le comportement des armes en jeu : dégâts, recul et
capacité chargeur par modèle ou par catégorie. Complément possible avec
ox_inventory/data/permanent.lua pour les armes non perdues à la mort.
Champs configurables
Par arme : modèle (WEAPON_*), multiplicateur dégâts, recul, taille chargeur.
Lance et configure les événements illégaux serveur : fourgon blindé, avion, King of the Hill,
événement drogue, plus les missions proposées dans la tablette F7.
Types d'events (panel)
Fourgon : convoi à attaquer, récompenses, coords spawn.
Avion : crash ou largage, zone de récupération.
KOTH : zone de capture, durée, points gang (surge_koth).
Drogue : bonus farm ou vente, multiplicateurs, créneaux horaires.
Permet d'assigner manuellement un joueur (identifier / UniqueID) à une organisation :
utile après wipe, migration ou correction sans attendre une invitation en jeu.
Recherchez le joueur par identifier ou nom.
Sélectionnez le gang cible et le grade.
Validez : entrée créée dans illegal_gang_users (ancienne assignation écrasée).
Garage de gang
Flottes gang en détail : Système de garage (section garage de gang).
Grades : restriction par grade pour certains véhicules.
Mise en place
Le gang doit exister dans Gangs.
Créez le garage et placez le point de sortie en jeu.
Ajoutez les véhicules (Sultan, Kuruma blindé, etc.) via le panel ou « Donner un véhicule ?.
Testez sortie / rangement depuis la tablette F7 ou le menu gang.
Garage de gang : flotte par organisation (total, au garage, sortis)
Modules transversaux
Vente de rue (surge_vente_drogue)
Vente aux PNJ avec système de niveau vendeur, prix min/optimal/max par drogue,
dispatch police configurable (lb-tablet, ps-dispatch?).
Fichier principal : surge_vente_drogue/config/MainConfig.lua.
Cambriolage (surge_core)
Addon surge_core/addon/[illegal]/cambriolage : maisons cambriolables,
configurables via module cambriolage dans événements.
Blanchiment
Addon surge_core/addon/[illegal]/blanchiment : conversion argent sale,
points et taux configurables (complément magasin illégal / activités illégales).
Grade recommandé : gestionillegal ou admin / fondateur.
Permissions granulaires par section (illegal.*.view, edit, create, delete)
dans staff_runtime_config. Les modérateurs n'ont pas accès au hub Illégal par défaut.
Modération joueur : menu F10.
Légal
Hub Légal
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le hub Légal du menu /gestion centralise la configuration
de toutes les activités légales : entreprises, services publics, jobs de farm et économie des sociétés.
Les ressources associées se trouvent dans [gameplay]\[legal] et
surge_core/addon/[legal].
Chaque section possède une clé de permission NUI (legal.*) configurable dans
/gestion > permissions staff (staff_runtime_config).
Grade par défaut : gestionlegal, admin ou fondateur.
Section /gestion
Permission
Ressource
Rôle
Sociétés
legal.societies
surge_core/addon/[legal]/society
Base de toutes les entreprises ESX
Mécano
legal.mecano
surge_core/.../mecano
Custom, tarifs, pont élévateur, zones
Police
legal.police
surge_core/.../police + surge_mdt
Services, commissariats, détention, MDT
LTD
legal.ltd
surge_ltd
Supérettes, caisses, catalogue produits
Cuisine
legal.cuisine
surge_cuisine
Restaurants, recettes, mini-jeux cuisine
Immobilier
legal.realestate
surge_property
Agences, points, tarifs habitations
Téléphone
legal.phone
surge_phone
Apps, réglages globaux du téléphone
Tablette gouvernementale
legal.government_tablet
surge_tablette_legal
Tablette patron, registre gouv, blanchiment
Garage entreprise
legal.enterprise_garage
surge_core
Flottes véhicules de service par job
Concession
legal.concession
surge_core/.../concess
Catalogue, stock, points de vente
Groupe 6
legal.groupe6
surge_groupe6
Transport de fonds, missions farm
EMS / ambulance : pas de section legal.ems dédiée. Configurez le job via
Sociétés, les missions PNJ via le panneau staff ambulance, et les paramètres coma / deathscreen
dans le Hub Serveur (variables ems_*).
Intérim : configuré dans le Hub Serveur > Modules (serveur.modules), pas dans le hub Légal.
Pêche : configurée dans le Hub Monde (monde.fishing), pas dans le hub Légal.
Hub Légal : vue d'ensemble des sections configurables
Ordre de configuration recommandé
Pour un serveur neuf, suivez cet enchaînement afin d'éviter les jobs orphelins ou les points manquants :
Sociétés : créer chaque job ESX (police, EMS, mécanos, restaurants, etc.) avec grades et positions.
Garage entreprise : flottes de service liées aux jobs créés à l'Étape 1.
C'est la fondation du hub Légal : chaque entreprise, service public ou job custom passe par ici avant
d'être exploitable en jeu (boss, coffre, vestiaire, F6, tablette).
Système complet de restaurant : prise de commande, étapes de préparation (mini-jeux), comptoir de remise,
facturation liée ? surge_facture / billing ESX.
Champs configurables
Jobs cuisine : liaison job ESX ? restaurant (ajout, label).
Emplacements : comptoir commande, cuisine, étapes de craft, point de remise (order_counter).
Catégories menu : entrées, plats, desserts avec ordre d'affichage.
Configuration globale de l'application téléphone joueur : apps installées par défaut, paramètres,
intégrations (banque, Twitter, marketplace). Les données joueur sont en base (phone_phones).
Mise en place
Vérifiez que surge_phone est bien ensure après oxmysql.
Ajustez les apps et réglages globaux depuis le panel (icônes, apps activées, limites).
Testez création numéro à la connexion multicharacter et ouverture téléphone en jeu.
Staff : consultation numéro joueur possible via F10 (UniqueID) ou panel citoyens Monde.
Service : point PNJ, modèle PNJ, job requis, label entreprise, véhicule (stockade), spawn véhicule, cooldown restart.
Mission : arrêts supérettes / banques requis, item sac (sac_argent), sacs par arrét, valeur vente, taux blanchiment, part joueur.
Liste banques / supérettes : coordonnées des arrêts (minimum 1 de chaque).
Fin de mission : deux points de livraison possibles, props chariot, difficulté mini-jeu coffre (easy / normal / hard).
Mise en place
Créez le job Groupe 6 dans Sociétés ou laissez le job libre selon votre config.
Placez le point de prise de service et le spawn véhicule blindé.
Ajoutez suffisamment de coordonnées banques et supérettes sur la carte.
Ajustez récompenses et cleanRate / playerShare pour l'équilibrage économique.
Testez une mission complète : tournée ? livraison ? paiement.
Groupe 6 : service et dépôt (PNJ, véhicule, point de prise de service, spawn)
Groupe 6 : mission et économie (arrêts requis, sacs, valeur sale, taux blanchiment)
Groupe 6 : arrêts banques (positions tirées aléatoirement, placement TP et ? Ici ?)
Modules transversaux
Menu F6 (jobs en service)
Addon surge_core/addon/[legal]/f6 : menu métier en service (factures, annonces, actions spécifiques).
Ce que voit le joueur dépend du job actif et de la prise de service (surge_core/service).
Taxi
Addon surge_core/addon/[legal]/[job]/[farm]/taxi : courses et tarification via menu RageUI.
Pas de section legal.taxi dans le panel : configurez le job dans Sociétés puis
ajustez les tarifs dans les fichiers partagés si besoin.
Weazel News & sirènes
Addons weazel-news et sirenes dans surge_core : journalistes et sirènes véhicules police/EMS.
Créez les sociétés associées et vérifiez les jobs dans les configs Lua respectives.
Menu F6 en service (ex. police : interactions, alertes, codes radio, employés en service)
Grade recommandé : gestionlegal ou admin / fondateur.
Permissions granulaires par section (legal.*.view, edit, etc.) dans
staff_runtime_config. Pour la modération joueur, utilisez le menu F10.
Intérim et modules globaux : Hub Serveur.
Monde
Hub Monde
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le hub Monde du menu /gestion regroupe tout ce qui touche
à l'environnement de jeu : cartographie, véhicules, météo, zones protégées, craft et outils staff.
Ces réglages impactent directement l'expérience de tous les joueurs.
Chaque section possède une clé de permission NUI (monde.*) configurable dans
/gestion > permissions staff (staff_runtime_config).
L'accès au hub lui-même requiert hub.monde.view.
Grades par défaut : admin, fondateur, modérateurs, gestionlegal,
gestionillegal et remboursement.
Permission uniquement : pas de tuile dans le hub Monde
Ne pas confondre les garages :monde.garages = garages publics joueurs ;
Garage entreprise (hub Légal) = flottes de service ;
Garage gang (hub Illégal) = véhicules d'organisation.
Craft : les bancs sans job_restriction relèvent du craft public
(aussi visible via illegal.craft_public).
Hub Monde : vue d'ensemble des modules configurables
Ordre de configuration recommandé
Pour un serveur neuf, configurez le monde dans cet ordre afin d'éviter les points manquants ou les conflits de zones :
Safezones : protéger spawn, multicharacter, zones sensibles avant tout farm ou PvP.
Garages publics + fourrières : exécuter migration_garages_pounds_mysql.sql si tables absentes.
Points carte : magasins Ox, casiers, coffres sociétés/gangs, salons (après création des jobs dans le hub Légal).
Ascenseurs : immeubles RP multi-étages (Maze Bank, tours, commissariats).
Densité : calibrer PNJ et trafic selon la puissance serveur (preset ? Normal ? recommandé).
Tables de craft : bancs job ou publics, recettes liées aux items ox_inventory.
Fiches personnages complètes : consultation hors ligne et actions sur joueurs connectés.
Distinct du menu F10 (téléportation, spectate, jail rapide) : ici l'accent est
sur la gestion de compte durable (économie, jobs, flotte, historique).
Champs et informations affichées
Identité : prénom, nom, date de naissance, sexe, taille, UniqueID, identifier, Discord (si colonne présente).
Statut : en ligne / hors ligne, position, date de création du compte.
Chemin :/gestion > Monde > Gérer les garages.
Permission :monde.garages (view / edit / delete).
Données :garages, garage_pounds, owned_vehicles.
Garages ouverts ? tous les joueurs (voiture, bateau, avion). Les fourrières remplacent progressivement
le fichier config_impound.lua pour les PNJ de récupération véhicule.
Zones sphériques où les joueurs ne peuvent pas se blesser ni blesser les autres.
Synchronisées via GlobalState.Safezones et export IsInSafeZone (HUD / F5 / scripts).
Champs configurables
Nom : libellé admin (ex. ? Parking central ?).
Centre :x, y, z.
Rayon : en mètres (défaut 50).
Zones importées par défaut (si table vide)
Parking central, Prison, Aéroport, Tour / rooftop, Pôle emploi, Casino.
Mise en place
Au premier démarrage, le serveur seed les zones par défaut (alignées historiquement sur surge_hud).
Ajoutez une zone : placez le centre in-game, ajustez le rayon (10 m pour un ascenseur, 40 m pour un parking).
évitez de couvrir des zones de farm illégal ou de braquage.
Exécutez migration_safezones_mysql.sql si la table n'existe pas.
Testez : entrée zone ? indicateur HUD safezone, impossibilité de tirer.
Safezones : liste et édition (nom, rayon, centre, debug visuel)
Utile pour événements saisonniers ou rebranding serveur.
Panneau Vinewood : aperçu, presets texte et couleur, application globale
Rendu in-game après application (texte et couleur visibles sur la colline)
Météo et heure (/time)
Permission :monde.weather (view / edit).
Ressource :surge_time.
Accès : commande /time (pas de page dans la grille Monde).
La permission monde.weather autorise l'interface heure et météo synchronisée serveur.
Les modérateurs peuvent aussi y accéder via le menu F10 si le module météo legacy est actif
(Modules.weather ou rsweatheradmin via ox_target).
Mise en place
Vérifiez que surge_time est démarré dans le server.cfg.
Accordez monde.weather.edit aux admins et gestionnaires d'ambiance.
En jeu : tapez /time pour ouvrir le panel (cycle jour/nuit, météo, gel du temps).
Coordonnez météo et densité : brouillard dense + PNJ élevés = charge client plus lourde.
Tables de craft
Chemin :/gestion > Monde > Table de craft.
Permission :monde.craft (view / edit / delete).
Données :craft_benches, craft_bench_items, craft_bench_ingredients.
Bancs de craft dynamiques branchés sur ox_inventory.
Un banc avec job_restriction vide est un banc public
(même données que le craft public illégal, filtré côté SQL).
Champs banc
Label et icône : affichage NUI (défaut fa-wrench).
Distance d'interaction : en mètres (défaut 2).
Restriction job : nom ESX ou vide pour public.
Prop : modèle GTA optionnel au sol.
Coords :x, y, z, w.
Champs recette
Item résultat : nom ox_inventory, quantité produite, durée craft (ms).
ingrédients : liste nom + quantité (recherche items Ox intégrée).
Mise en place
Créez les items craftés et composants dans ox_inventory.
Placez le banc in-game ; ajoutez une ou plusieurs recettes.
Pour un craft réservé à un métier : renseignez job_restriction (ex. ambulance).
Supprimer un banc efface recettes et ingrédients liés.
Les modifications rechargent les bancs Ox (reloadOxDynamicBenches).
Testez craft complet : retrait ingrédients + give item + animation.
Tables de craft : banc, recette (durée, quantité) et ingrédients
Doorlock (portes verrouillées)
Chemin :/gestion > Monde > Gérer les doorlock.
Permission :monde.doorlock.view uniquement.
Ressource :ox_doorlock + addon surge_core/addon/world/doorlock.
Ce module n'ouvre pas d'éditeur NUI : il exécute la commande doorlock qui lance
l'interface native ox_doorlock (sélection de porte, jobs autorisés, code, items requis).
La création / édition de portes requiert aussi la permission legacy ServerOptions.doorlock côté staff.
Champs typiques (ox_doorlock)
Coords et modèle de la porte (double portes supportées).
état verrouillé par défaut, distance d'interaction.
Jobs / gangs autorisés, code PIN, item ? serrure ? selon config Serveur.
Notifications personnalisables dans le Hub Serveur (section Notifications > doorlock).
Mise en place
Assurez-vous que ox_doorlock est installé et que la table SQL est migrée.
Depuis le hub Monde, cliquez sur Doorlock : la commande s'exécute automatiquement.
Visez la porte en jeu, définissez les groupes autorisés (police, EMS, patron).
Testez avec un joueur sans job : accès refusé + notification configurée.
Objets décoratifs ou utilitaires posés par le staff et persistants après restart.
Distinct des props joueur (players_props, menu F5) qui suivent le personnage.
Configuration de l'activité pêche : paramètres gameplay, événement live et PNJ instructeurs.
Les réglages avancés (timers, XP, VIP, modes) sont aussi disponibles dans le
Hub Serveur > Modules > Pêche (ServerConfig.fishing).
Champs configurables (extrait)
Gameplay : délais canne (8 à 15 s), filet (30 à 45 s), max prises filet, XP par prise.
économie : prix location bateau, upgrade canne, bonus vente VIP (+10 % par défaut).
événement pêche : actif 23h à 01h (Paris), multiplicateur drops x2, durée 2 h.
Chemin :/gestion > Monde > Saut en parachute.
Permission :monde.parachute (view / edit).
Ressource :surge_saut_parachute.
Données : MySQL (parachute_courses, parachute_course_checkpoints, parachute_course_state)
ou fichier data/jump_locations.json.
Activité mini-jeu : PNJ d'accueil, avion, checkpoints aériens, zone d'atterrissage, paiement joueur.
Les réglages gameplay (rayon checkpoint, cinématique, cooldown) restent dans config/main.lua.
Champs par parcours
Label et prix : nom affiché, tarif en $money (compte configuré dans la ressource).
Modèle PNJ : ex. s_m_y_pilot_01.
Entrée : coords accueil / réservation (x, y, z, w).
Lancement : point embarquement avion.
Checkpoints : liste de positions aériennes (anneaux ? traverser en chute libre).
Atterrissage : zone finale (landX/Y/Z/W).
Modes de persistance
Défaut : parcours du fichier config/main.lua (LSIA, Mont Chiliad).
Personnalisé : sauvegarde JSON + tables MySQL si migrées ; GlobalState.parachuteJumpSpawns.
Mise en place
démarrez surge_saut_parachute et vérifiez les tables SQL si vous utilisez MySQL.
Activez ? emplacements personnalisés ? ou gardez les défauts pour un premier test.
Créez un parcours : placez entrée, lancement, 2 à 4 checkpoints aériens (altitude décroissante), zone d'atterrissage.
Ajustez le prix selon l'économie serveur (défaut 150 $ Chiliad, 250 $ LSIA).
Testez réservation PNJ, cinématique avion, validation checkpoints et paiement.
Après sauvegarde : reload automatique des PNJ côté clients.
Saut en parachute : édition parcours (PNJ, points, checkpoints aériens)
Greenscreener
Chemin :/gestion > Monde > Greenscreener.
Permission :monde.greenscreener.view.
Ressource :surge_greenscreener.
Outil de capture d'images fond vert pour alimenter la boutique, le marketplace tenues
et les catalogues (vêtements, props, overlays, véhicules, objets).
Les visuels produits ici sont ceux affichés in-game dans les magasins de vêtements,
salons de coiffure, créateur de personnage, garages et autres interfaces catalogue.
Opération lourde : réservée aux admins, tuile affichée en avertissement dans le hub.
Overlays : barbe, sourcils, maquillage, blush, rouge à lèvres
Véhicules et objets : presets dédiés (vehicle, object).
Mise en place
Installez et démarrez surge_greenscreener (dossier ressources dédié).
Choisissez le genre (homme / femme / les deux) et la catégorie.
Lancez la capture batch : suivez la barre de progression NUI.
Les images sont écrites selon la config de la ressource (configs/images.json).
évitez de lancer pendant un pic de joueurs (charge GPU / CPU serveur).
Greenscreener : sélection de catégorie (vêtements, visages, objets, véhicules)
Modules transversaux
Garages (rappel)
Trois systèmes coexistent : garages publics (monde.garages),
flottes entreprise (legal.enterprise_garage),
flottes gang (illegal.gang_garage). Ne mélangez pas les tables ni les panels.
Craft public vs craft job
Hub Monde > Table de craft gère tous les bancs.
Hub Illégal > Craft public filtre les bancs sans restriction job pour les organisations.
Modération joueur
Actions instantanées (TP, freeze, spectate, jail) : menu F10.
Gestion durable de compte : Citoyens dans ce hub.
Grade recommandé : admin, fondateur, modérateurs (view) ou
gestionlegal / gestionillegal selon le module.
Accès hub : hub.monde.view. Permissions granulaires :
monde.*.view, edit, delete dans staff_runtime_config
ou via surge_discord_perms.
Migrations SQL souvent requises : garages, safezones, ascenseurs, parachute.
Serveur
Hub Serveur
Dernière mise à jour, 24 juin 2026 · Par Surge Studio
Le hub Serveur du menu /gestion centralise les paramètres
globaux de votre instance : identité, économie, boutique, inventaire, sécurité et modules.
C'est le point de départ pour personnaliser votre serveur après l'installation.
Chaque section possède une clé de permission NUI (serveur.*) dans
staff_runtime_config. L'accès au hub requiert hub.serveur.view.
Grade par défaut : admin ou fondateur uniquement.
Les valeurs sont propagées via GlobalState.ServerConfig, persistées en KVP
server_config et table MySQL s_core_server_config.
Redémarrages : l'identité serveur (surge_* convars) s'écrit dans
resources/surge_core/data/server_identity.cfg et nécessite un restart complet FXServer
pour le HUD, menus RageUI et loadscreen. Les slots/poids inventaire requièrent aussi un redémarrage.
Le spawn des nouveaux personnages et la plupart des toggles gameplay s'appliquent sans restart.
Pêche : gameplay ici (serveur.modules > Pêche) ; lancement d'événement live
dans le Hub Monde.
Hub Serveur : navigation latérale des sections configurables
Ordre de configuration recommandé
Pour un serveur neuf, suivez cet enchaînement après l'installation :
Général : nom, logo, couleurs, lien Discord/Tebex, point de spawn.
Économie : argent de départ, items multicharacter, intervalle paycheck.
Inventaire : slots et poids selon votre style de jeu (puis redémarrage).
Notifications : couleurs DA et logos cohérents avec l'identité.
Discord : Rich Presence + Rôles Discord pour le staff.
Logs : webhooks par canal avant d'ouvrir au public.
Modules > Loading screen, HUD, Jail : première impression joueur.
Sécurité : SurgeShield actif avant pic de joueurs.
Boutique IG : menu F1, liens Tebex, commandes chat.
Configurer activités (intérim, pêche, gunfight, EMS) une fois l'économie stabilisée.
Général
Chemin :/gestion > Serveur > Général.
Permission :serveur.general (view / edit).
Données : section general + identity dans ServerConfig.
Identité serveur (redémarrage FXServer requis)
Nom :surge_server_name (64 caractères max).
Liens : Discord permanent (surge_discord), Tebex (surge_tebex).
Visuels : logo 512 à 512 (surge_logo_url), bannière, bannière menu RageUI 512 à 128.
Couleur DA : RGB + opacité A (surge_color_r/g/b/a) : HUD, NUI admin, accents.
Format texte GTA :surge_gta_color (ex. ~g~, ~r~) pour menus RageUI.
Export automatique vers server_identity.cfg à chaque sauvegarde.
Paramètres globaux (sans redémarrage)
Désactiver régénération de vie : pas de heal passif (défaut activé).
Désactiver loot poubelles : plus d'items aléatoires dans les dumpsters.
Panneau de mapping entre les rôles Discord de votre serveur et les permissions Surge :
menu F10, sections NUI (/gestion), commandes slash et boutique.
Prioritaire sur les grades ESX quand surge_discord_perms est démarré.
Fonctionnalités
Liste des rôles : triés par position hiérarchique Discord (comme dans les paramètres serveur).
Filtres : Commandes /, Menu F10, Admin Menu, Boutique s-menu.
Presets : modèles préconfigurés (modérateur, admin, gestion légal/illégal) : appliquer en un clic.
Par permission : toggle individuel pour chaque droit du registre (surge:discord:perms:getRegistry).
Métadonnées rôle : couleur gamertag staff, tenue staff (outfit editor).
Compteur : permissions activées / total par rôle.
Mise en place
Installez et configurez surge_discord_perms (bot token, guild ID dans le server.cfg).
Créez les rôles Discord correspondant à votre équipe (Modo, Admin, Gestion Légal).
Appliquez un preset proche, puis affinez permission par permission.
Testez avec un compte Discord possédant le rôle (reconnexion requise).
Ne donnez serveur.discord_roles.edit qu'aux fondateurs : impact sur toute la modération.
Configuration de la boutique en jeu : navigation F1, liens externes, commandes chat et historique des achats.
Distinct de Tebex (paiement réel) : ici vous gèrez l'interface et les raccourcis côté client.
Onglets
Gestion des boutons : URL ouverte au clic sur chaque bouton de la boutique (site, Tebex, règlement).
Commandes chat : mots-clés pour ouvrir la boutique, consulter coins/VIP, etc. (redémarrage menu possible).
Journal des achats : historique lecture seule, filtre par joueur (support et litiges).
Menu latéral F1 : titres, icônes, ordre des pages (main, secondary, settings).
Pages par catégorie : édition du contenu de chaque entrée nav (slots produits, visuels).
Mise en place
Configurez d'abord le lien Tebex dans Général (surge_tebex).
Organisez le menu latéral F1 : ordre logique (Accueil, Véhicules, VIP, Paramètres).
Reliez chaque bouton à la bonne URL (HTTPS ou protocole FiveM).
Personnalisez les commandes chat selon vos habitudes RP (/boutique, /vip).
Testez achat en jeu et vérifiez le journal côté staff.
Boutique IG : menu latéral F1 (ordre, icônes, visibilité des pages)
Boutique IG : page par catégorie (ex. Armes, hash et prix)
Toute modification ici affiche le badge REDéMARRAGE REQUIS : les convars
inventory:slots, inventory:weight, etc. ne sont relus qu'au démarrage de ox_inventory.
Champs configurables
Slots : nombre de cases inventaire joueur (défaut 99, max 200).
Poids maximum : en grammes (défaut 30 000 = 30 kg).
Animations d'armes : anim à l'équipement (inventory:weaponanims).
Notifications d'objets : toast à l'ajout/retrait d'item.
Animation d'ouverture : flou/transition à l'ouverture inventaire.
Mise en place
Choisissez slots/poids selon votre économie (RP strict = moins de slots).
Sauvegardez puis planifiez un redémarrage serveur ou ensure ox_inventory.
Testez avec un joueur : capacité, notification item, anim d'ouverture.
Les notifications inventaire (couleurs, durées) se règlent dans Notifications.
Interface simplifiée en 4 onglets. Les toggles restent compatibles avec les sections natives
Main, Weapons, Explosions, Entities, Beta, Premium, Settings.
Onglet Protections
Anti noclip, téléportation, speedhack, godmode, invisibilité, freecam, super saut.
Anti injection / arrét de scripts, changement de ped, spoofer identifiants, DevTools NUI.
Onglet Combat et entités
Anti kill abusif, aimbot, no-recoil, give/spawn d'armes, blacklist armes.
Bloquer explosions réseau, blacklist explosions.
Anti spawn véhicules isolés, blacklist/whitelist peds et véhicules, anti car-kill.
Anti silent aim (beta), anti prise de contrôle entité (premium).
Onglet Connexion et logs
Activer bans, durée ban (heures, -1 = permanent), anti double connexion.
Anti VPN, exiger Discord, pseudo alphanumérique, anti XSS.
Logs Discord SurgeShield, affichage IP dans logs (les bans utilisent tous les identifiants).
Onglet Listes
Armes, peds, véhicules, objets et explosions interdits (ajout/suppression par tag).
Sanction par détection : ban, kick ou warn (configurable par règle).
Mise en place
Vérifiez que SurgeShield est started (sinon le panel affiche ressource arrêtée).
Activez les protections Main avant l'ouverture publique.
Ajoutez aux blacklists les modèles abusés sur votre serveur (oppressor, cerberus).
Configurez un webhook Discord dans l'onglet Connexion pour alertes staff.
Testez avec un compte alt : détection noclip / godmode doit loguer et sanctionner.
Discord (Rich Presence)
Chemin :/gestion > Serveur > Discord.
Permission :serveur.discord (view / edit).
Données :ServerConfig.discord, appliqué en live côté client.
Champs configurables
App ID : snowflake de l'application Discord (Developer Portal).
Asset grande image : nom exact uploadé dans Rich Presence > Art Assets.
Aperçu intégré dans le panel pour valider le rendu.
Bouton 1 et 2 : libellé (32 car.) + URL (https ou fivem://connect/...).
Grille de 11 sous-modules gameplay. Chaque tuile ouvre une section dédiée dans la sidebar.
Les réglages sont stockés dans ServerConfig (sections loadscreen, jail,
fishing, hud_layout, afk_farm, etc.) ou dans les ressources liées.
Sous-module
Ressource
Rôle
Loading screen
surge_loadingscreen
Diaporama, musique, liens connexion
HUD
surge_hud
Jauges, minimap, speedometer, widgets Figma
Blips carte
surge_core
Blips globaux (hors entreprises)
Armes permanentes
ox_inventory
Liste armes non supprimables au wipe
Gunfight
surge_gunfight
arènes PvP, loadouts, matchs live
Missions illégales
surge_illegal_tablette
Missions tablette, braquages, modules
Pêche
surge_peche
Gameplay, XP, VIP, événement nocturne
Mission ambulance
surge_core/.../ambulance
PNJ missions EMS, récompenses, lieux
Métier intérim
jobs_builder
éboueur, électricien, livreur, agence
AFK Farm
invest
Gains passifs, paliers VIP, potion
Jail
surge_jail
Clicker, économie temps, thème NUI
Modules : vue d'ensemble des sous-modules configurables
Configuration des missions proposées sur la tablette gang : braquages, contacts, cooldowns,
récompenses argent/points/XP. éditeur arborescent + formulaires simplifiés par module.
Champs typiques par mission
Identité : nom technique, label, description, contact PNJ.
Restrictions : min/max membres, niveau gang, cooldown secondes.
Récompenses : argent, points territoire, XP organisation.
Lieux : coords missions, scénarios animation.
Braquages : registre heists (état ressource, label) configurable par entrée.
Mise en place
Créez les gangs dans le hub Illégal avant d'activer les missions.
équilibrez cooldown et récompenses avec l'économie globale.
Testez une mission bout en bout depuis la tablette en jeu.
Jobs temporaires sans création de société ESX : éboueur, électricien, agent d'entretien,
livreur de colis, préparateur de commande, nettoyage haute pression, agence intérim.
Lien règlement : bouton ? Lire le règlement ? (vide = désactivé).
économie des boutiques jail
Multiplicateur prix clicker (points) : 1.0 = normal.
Multiplicateur prix coins clicker : monnaie premium jail.
Multiplicateur boutique temps : défaut x20 (réduction peine).
Base coùt temps : ratio points par seconde retirée.
Courbe temps (scale) : augmentation progressive par achat.
Limite achats par item temps : défaut 5.
Mise en place
Harmonisez la couleur jail avec la DA serveur.
Ajoutez une image et le lien règlement pour le RP carcéral.
Ajustez les multiplicateurs si les peines se terminent trop vite/lentement.
Testez jail depuis le menu F10 : clicker, achats temps, sortie.
Jail : identité, thème et économie des boutiques (clicker, temps)
Modules transversaux
Persistance configuration
sv_server_config.lua charge KVP + MySQL s_core_server_config au démarrage.
Chaque setValue depuis le panel met ? jour GlobalState.ServerConfig en temps réel
pour les clés supportées (économie, toggles, HUD, pêche). L'identité surge_* exporte
server_identity.cfg mais requiert restart FXServer.
Permissions staff
Le hub Serveur est réservé aux grades élevés. Les rôles Discord peuvent étendre l'accès via
serveur.*.view/edit sans changer le grade ESX. La config staff elle-même
(Menu.staffConfig) reste fondateur pour éviter l'auto-éévation.