🏗️ 1. Architecture du Serveur
La base Marseille City repose sur une philosophie stricte : la centralisation et l'optimisation.
Au lieu d'avoir 100 scripts indépendants consommant chacun 0.02ms, l'ensemble des systèmes vitaux du serveur a été fusionné dans le kdev-core.
Avantages du kdev-core :
- Consommation client :
0.00ms en idle. Boucles Wait(0) intelligentes qui ne s'activent qu'à proximité des zones.
- Maintenance : Vous n'avez plus besoin d'ouvrir 40 dossiers différents pour modifier votre serveur. Tout est géré par le fichier principal
config.lua.
- UI "Beyond Studio" : Une seule ressource HTML gère le HUD, l'inventaire, le téléphone, et les mini-jeux. Cela évite la surcharge du cache navigateur FiveM (CEF).
⚙️ 2. Le Fichier de Configuration Global
Le fichier config.lua du kdev-core est le panneau de contrôle de votre serveur. Il contient la table globale MainConfig.
🏦 Système d'ATM
Les ATM utilisent des modèles 3D détectés dynamiquement, mais vous pouvez aussi forcer des positions statiques.
config.lua
MainConfig.ATM = {
Positions = {
vector3(147.65, -1035.75, 29.34),
-- Ajoutez simplement de nouvelles coordonnées vector3 pour de nouveaux ATM
}
}
💊 Système de Drogues Inédit (Module Illégal)
Le système de drogue a été recodé pour supprimer les marqueurs 3D "volants" et les interfaces lourdes (RageUI). Il utilise des DrawMarker plaqués au sol (Type 23) et des interactions fluides via le menu natif ESX.
Pour ajouter une drogue, ajoutez une entrée dans MainConfig.Drugs.List :
MainConfig.Drugs = {
Marker = { Type = 23, Color = {r = 0, g = 142, b = 7}, Opacity = 150 },
ActionTime = 5000, -- Temps de récolte/traitement (en ms)
List = {
Coke = {
HarvestCoords = vector3(100.0, 200.0, 30.0),
ProcessCoords = vector3(105.0, 205.0, 30.0),
SellCoords = vector3(110.0, 210.0, 30.0)
}
}
}
*Le script gère seul les animations et les annulations de boucle.
📦 3. Liste des Modules Intégrés
Le kdev-core intègre nativement plus de 15 scripts ESX populaires, tous réécrits et optimisés pour pointer vers la configuration globale.
🏢 Magasins & Personnalisation
- fAmmu : Licences et armes.
- Tattoos/Barber : Synchronisés avec UI.
- Shops & IKEA : 24/7 et housing.
💰 Illégal & Braquages
- BraquageTrain : Dynamique en mouvement.
- Holdup : Supérettes avec alerte LSPD.
- Moneywash : Blanchiment paramétrable.
💻 4. Documentation UI / NUI
Toute l'interface utilisateur passe par shop.html et le dossier ui/. C'est une application riche.
Exemple d'appel NUI (Côté Lua Client) :
SetNuiFocus(true, true)
SendNUIMessage({
action = "openMyCustomUI",
data = myData
})
🔗 5. Commandes Administrateur
/revive [ID]
Réanimer un joueur.
/setjob [ID] [Job] [Gr]
Assigner un métier.
/giveitem [ID] [Itm] [Qt]
Se give un objet.
Cette documentation technique et détaillée est destinée aux développeurs et acheteurs de la base Marseille City. Elle explique en profondeur l'architecture du serveur, le fonctionnement du kdev-core, et comment configurer chaque module.
⚙️ Configuration de Base
Toute la configuration globale de votre serveur se trouve dans un seul fichier : resources/[script]/[divers]/kdev-core/config.lua.
⚠️ Note au développeur
N'oubliez jamais de restart kdev-core après une modification du config.lua. Si vous modifiez des fichiers HTML/JS, un redémarrage complet du client FiveM (F8 -> quit) est souvent nécessaire pour contourner le cache CEF.
ℹ️ 1. Informations du Serveur
C'est ici que vous définissez l'identité de votre serveur. Ces valeurs seront reprises automatiquement par les différentes interfaces et menus (inventaire, hud, menus F5, etc.).
-- Information Serveur
servername = 'Marseille City', -- Le nom de votre serveur
serverdiscord = 'discord.gg/marseillecity', -- Le lien d'invitation de votre Discord
LogoServer = 'https://i.ibb.co/pBYgp39H/0rwnd14.png', -- Lien web direct vers le logo de votre serveur (.png recommandé)
Servercolor = 'b', -- La couleur principale de vos interfaces ESX
Note pour Servercolor : Cette lettre définit le code couleur utilisé dans les notifications et les menus natifs.
- b = Bleu
- g = Vert
- p = Violet
- r = Rouge
- y = Jaune
- o = Orange
🎮 2. Rich Presence (Statut Discord)
Le Rich Presence est ce qui s'affiche sur le profil Discord de vos joueurs quand ils sont connectés au serveur (ex: "Joue à Marseille City").
RichPresenceID = '1068894918430441613', -- L'Application ID de votre bot Discord
RichPresenceIDLogo = 'logo', -- Le nom de l'asset image (logo) uploadé sur le portail développeur
💡 Comment le configurer de A à Z :
- Allez sur le Discord Developer Portal.
- Cliquez sur New Application et donnez-lui le nom de votre serveur (c'est ce nom qui s'affichera sur les profils de vos joueurs).
- Dans la page General Information, copiez l'Application ID et collez-le dans
RichPresenceID.
- Allez ensuite dans le menu à gauche : Rich Presence > Art Assets.
- Cliquez sur Add Image(s) pour ajouter votre logo.
- Renommez cette image en
logo (ou le nom exact que vous avez mis dans RichPresenceIDLogo).
- N'oubliez pas de sauvegarder sur Discord !
🛠️ 1. Systèmes Divers (Toggles)
Ici, tu peux activer ou désactiver les mécaniques de base de ton serveur en un clic. Passe juste la ligne de true à false si tu ne veux pas de l'option.
-- Systeme Divers
SytemeArme = true, -- Active ou désactive la vente d'armes et licences au fAmmu.
SystemeSafeZone = true, -- Active la SafeZone (impossible de sortir une arme ou frapper).
SystemeHeadShot = true, -- true = One shot dans la tête. false = Dégâts classiques.
SystemeDriveBye = true, -- Permet de viser et tirer depuis un véhicule en route.
📜 2. Webhooks Discord (Logs)
Tout ce qu'il se passe sur ton serveur peut remonter directement sur ton Discord. C'est indispensable pour surveiller et modérer.
-- Logs
WebhookOnMessageStart = 'URL', -- Alerte quand le serveur a fini de démarrer
webhookJoins = 'URL', -- Un joueur se connecte
webhookLeave = 'URL', -- Un joueur se déconnecte
webhookTirs = 'URL', -- Coups de feu tirés (avec arme et position)
webhookChat = 'URL', -- Tout ce qui se dit dans le chat en jeu
webhookMort = 'URL', -- Kill logs (qui a tué qui)
webhookDebug = 'URL', -- Alertes anti-cheat / bugs
webhookJail = 'URL', -- Un admin met quelqu'un en prison
webhookUnjail = 'URL', -- Un admin sort quelqu'un de prison
webhookBlanchissement = 'URL', -- Infos sur le blanchiment d'argent
webhookConcess = 'URL', -- Factures du concessionnaire
webhookSociety = 'URL', -- Mouvements d'argent dans les coffres d'entreprise
LogsFactureMecano = 'URL', -- Factures des mécanos
webhookSupperete = 'URL', -- Alerte de braquage de supérette
logsfacture = 'URL', -- Auto-wipe (quand un mec dépasse 25 factures impayées)
logsbraquageMaison = 'URL', -- Cambriolages
webhookGiveArme = 'URL', -- Un admin se give (ou donne) une arme
webhookSetJob = 'URL', -- Un admin change le métier de quelqu'un
webhookAnnonce = 'URL', -- Les annonces passées en jeu
creationPerso = 'URL', -- Alerte quand un nouveau personnage est créé
💡 Comment mettre en place les logs :
- Sur ton Discord, crée un salon (genre
#logs-connexions).
- Fais un clic droit dessus > Modifier le salon > Intégrations.
- Clique sur Créer un webhook.
- Copie l'URL du webhook.
- Colle cette URL dans le
config.lua entre les apostrophes ''.
🎨 Couleur des Embeds (colorlogs) :
La ligne colorlogs = '3447003' gère la couleur de la petite bande sur le côté de tes messages Discord.
C'est un code couleur en format décimal. Si tu veux changer, prends un code HEX normal (comme #FF0000 pour du rouge) et utilise un convertisseur "HEX to Decimal" sur Google (ce qui te donnera 16711680).
🤖 Bot Discord Intégré
La base "Marseille City" inclut un bot Discord puissant directement relié à votre serveur FiveM. Ce système vous permet d'exécuter des commandes d'administration (ban, unban, give, etc.) directement depuis un salon texte sur votre Discord !
-- Configuration Interaction Discord (Bot)
DiscordBot = {
Token = "VOTRE_TOKEN_ICI", -- Le token secret de votre bot Discord
WebHook = "URL_WEBHOOK_ICI", -- Webhook utilisé par le bot pour répondre aux commandes
ChannelID = "1467566203794100431", -- L'ID du salon Discord exclusif pour les commandes
Prefix = "!", -- Le caractère à taper avant une commande (ex: !help)
Cooldown = 800, -- Temps d'attente (en ms) entre chaque vérification de message (Anti-Spam)
UseSqlBan = false, -- Mettez 'true' si vous utilisez un système de ban SQL personnalisé
Owners = { 'cocote.2', 'matisse_17' }, -- Noms d'utilisateurs Discord ayant les permissions "Fondateur"
MaintenanceBypass = { 'hello', 'Anakin ¥', 'Shanks' } -- Joueurs autorisés à rejoindre si le serveur est lock
}
⚠️ Sécurité :
Ne partagez JAMAIS votre Token. Si quelqu'un l'obtient, il aura le contrôle total de votre bot Discord. C'est pour cela qu'il a été masqué dans cet exemple.
🛠️ Comment configurer le Bot (Tutoriel)
Pour que les commandes fonctionnent depuis votre Discord vers votre serveur FiveM, vous devez lier un vrai Bot Discord :
- Rendez-vous sur le Discord Developer Portal.
- Sélectionnez l'application de votre serveur (celle que vous avez créée pour le Rich Presence).
- Allez dans l'onglet Bot (à gauche) et cliquez sur Reset Token. Copiez ce code très long et collez-le dans la ligne
Token de votre config.
- Très important : Toujours sur la page Bot, descendez jusqu'à la section Privileged Gateway Intents et cochez les 3 cases bleues (
Presence Intent, Server Members Intent, Message Content Intent). Sans ça, le bot ne pourra pas lire vos messages !
- Allez sur votre Discord, faites un clic droit sur le salon destiné aux commandes et copiez l'Identifiant (ID). Collez-le dans
ChannelID.
- Enfin, ajoutez le pseudo Discord exact des administrateurs dans
Owners.
Une fois configuré, tapez !help (ou votre préfixe) dans le salon défini pour voir la liste de toutes les commandes disponibles !