
Faction
Des factions que tu crées entièrement en jeu : chaque faction est un vrai job avec menu boss, garages, coffres, vestiaire, ascenseur, niveaux, menu d'actions et système de gangwar. Le script crée lui-même les tables.
- ESX Legacy (
es_extended, testé avec 1.14) - oxmysql
- OneSync
- Pour le vestiaire : skinchanger et esx_skin (ou tes propres fonctions dans
config/functions.lua) - Pour le menu F6 et le menu des véhicules de gangwar : esxmenudefault (ou tes propres menus via
ClientActionMenuetClientGangwarVehicleMenu)
Fonctionnalités
- Créateur (
/fraktionen) : crée en jeu des factions avec rangs, salaire, véhicules, lieux (marker ou PNJ), blips et accès à partir d'un rang. - Menu boss : gérer les membres, caisse avec historique, acheter des véhicules, permissions par rang, candidatures et logs.
- Candidatures : les joueurs postulent auprès des factions aux points de candidature (PNJ ou marker du créateur), la direction accepte ou refuse dans le menu boss.
- GPS : les membres se voient sur la carte, avec une icône propre à pied, en voiture, à moto ou à vélo, en bateau, en hélicoptère ou en avion, en nageant et une fois mort (activable par faction).
- Véhicules de faction avec style : préfixe de plaque propre, peinture et xénon à la couleur de la faction, tuning maximal et vitres teintées. Avec une clé pour verrouiller et déverrouiller.
- Garages et coffres : jusqu'à 10 de chaque par faction, accès à partir d'un rang.
- Vestiaire, ascenseur (jusqu'à 10 étages) et niveaux avec XP (activables par faction).
- Menu d'actions (F6) : menotter, fouiller, identifier, escorter et actions sur les véhicules, au choix pour chaque faction.
- Gangwar : créer des zones en jeu, modes Temps limité et First Contact, dimension propre, boutique et classement.
- Logs Discord pour tous les domaines.
Installation
- Place le dossier
off_factiondansresources. - Ajoute dans le
server.cfg, après oxmysql et ESX :
ensure oxmysql
ensure es_extended
ensure off_faction- Ouvre
/fraktionen, crée une faction et définis la direction avec/setjob <ID> <name> <grade>(rang le plus haut = nombre de rangs − 1).
Le nom de la faction est aussi le nom du job (2–20 caractères, a–z, 0–9, _) et ne peut plus changer ensuite. Si le job existe déjà, tu ne peux pas créer la faction.
Configuration
config/settings/config.lua
| Option | Par défaut | Description |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Nom du serveur, affiché dans l'interface à la place de « OFF SCRIPTS » |
serverInfo.locale | 'de' | Langue : de, en, pl, fr, es ou it |
serverInfo.color | { 155, 89, 255 } | Couleur de l'UI (RGB) |
serverInfo.design | 3 | Design de l'interface : 1 = Classique, 2 = Ticket, 3 = Storefront |
blur | true | Fond flou tant qu'un menu est ouvert. Le créateur reste net (aperçu) |
creator.command | 'fraktionen' | Commande du créateur |
creator.groups | { 'projektleitung' } | Groupes ayant accès au créateur de factions |
creator.zoneGroups | { 'projektleitung' } | Groupes ayant accès au créateur de zones de gangwar |
inviteSeconds | 60 | Secondes avant qu'une invitation expire |
storeRange | 25.0 | Distance max. pour ranger un véhicule (mètres) |
plateFormat | 'LLL NNN' | Plaque : L = lettre, N = chiffre, s'applique seulement sans préfixe dans le créateur |
applications.cooldown / maxOpen | 24 / 3 | Heures de blocage après un refus, candidatures ouvertes max. par joueur |
gps.interval / scale | 2 / 0.8 | Secondes entre les mises à jour GPS, taille des blips |
gps.showSelf | true | true = tu vois aussi ton propre blip GPS |
gps.types | voir fichier | sprite et color par état : foot, swim, car, bike, bicycle, boat, heli, plane, dead (blanc par défaut, rouge si mort) |
vehicleKeys.enabled / key / range | true / 'U' / 10.0 | Système de clés, touche par défaut, portée en mètres |
vehicleKeys.shared | false | true = tous les membres peuvent verrouiller et déverrouiller les véhicules de faction sortis |
bossLogs.days | 30 | Nombre de jours pendant lesquels les logs restent enregistrés dans le menu boss |
bossLogs.<domaine> | true (actions false) | Domaines affichés sur la page des logs : members, money, garage, storage, wardrobe, gangwarShop, level, actions |
levels.max / base / growth | 50 / 1000 / 1.15 | XP par niveau = base × growth ^ (Level − 1) |
levels.tiers | 5 paliers | Avec le système de niveaux : emplacements de tenues et kg de coffre à partir d'un niveau |
outfitSlots | 10 | Emplacements de tenues sans système de niveaux |
weaponWeight | 2.0 | Poids d'une arme dans le coffre |
itemImages | images off_inventory | Chemin des images des items dans le coffre, %s = nom de l'item |
marker / blips | voir fichier | Valeurs par défaut des nouveaux lieux, modifiables par lieu dans le créateur. blips.enabled = false désactive tous les blips |
config/settings/config.gangwar.lua
| Option | Par défaut | Description |
|---|---|---|
times | 18:00 – 22:00 | Heures autorisées (heure du serveur), vide = toujours |
joinSeconds | 60 | First Contact : temps pour rejoindre dans le lobby. Temps limité démarre tout de suite |
respawnSeconds | 10 | Secondes avant le respawn |
lobbyRadius | 15.0 | Taille du lobby autour du spawn (mètres) |
players.min / max | 1 / 0 | Joueurs par camp (min seulement First Contact, max = 0 = illimité) |
killPoints | 3 | Temps limité : points par kill |
modes.<mode>.duration | 25 / 15 | Durée en minutes |
cooldowns | 1 / 0 / 1 | Minutes : attack (pause de la faction), zone (blocage de la zone), queue (jusqu'à expiration de la file), 0 = désactivé |
rewards | voir fichier | Points de gangwar et XP pour win, lose, draw et forfeit |
weapons | désactivé | enabled = true : seulement ces armes en gangwar, les tiennes reviennent ensuite |
vehicles / shop | voir fichier | Véhicules des garages de gangwar et articles de la boutique |
config/settings/config.actions.lua
| Option | Par défaut | Description |
|---|---|---|
command / key | 'fraktionsmenu' / 'F6' | Commande (/off_faction:fraktionsmenu) et touche par défaut du menu d'actions |
reach | 3.0 | À quelle distance devant toi un joueur ou un véhicule doit se trouver (mètres) |
search.requireCuffed | true | Fouiller seulement les joueurs menottés |
search.accounts | { 'money', 'black_money' } | Comptes qui peuvent être pris lors d'une fouille |
cuffedAnims | voir fichier | Animations avec lesquelles ClientIsCuffed reconnaît les joueurs menottés |
identify | voir fichier | Durée d'affichage et champs affichés pour le joueur et le véhicule |
animations | voir fichier | Animation et durée par action |
config/functions.lua
C'est ici que tu branches tes propres scripts. Les erreurs qu'elles contiennent arrivent dans la console, le script continue de tourner.
| Fonction | Utilité |
|---|---|
Notify(message, type) / HelpNotify(text) | Notification et texte d'aide · Serveur : Notify(source, message, type) |
ClientGetFuel(vehicle) / ClientSetFuel(vehicle, fuel) | Script d'essence |
ClientVehicleRetrieved(vehicle, plate) | Après la sortie d'un véhicule, p. ex. donner les clés |
ClientVehicleStored(plate) | Après avoir rangé un véhicule, p. ex. retirer les clés |
ClientGetSkin() / ClientApplyOutfit(clothes) / ClientRestoreOutfit() | Script de vêtements pour le vestiaire |
ClientActionMenu(title, actions, onSelect) | Menu F6 (par défaut : menu ESX Default) |
ClientIsCuffed() | Vérification des menottes lors d'une fouille (tes propres menottes et animations) |
ClientCuffChanged(kind) | Tes propres menottes mises ou retirées, p. ex. bloquer le téléphone |
ClientGangwarDeath() / ClientGangwarRespawn() | Mort et respawn en gangwar, p. ex. masquer le script ambulance |
ClientRestoreLoadout(loadout) | Donner et rendre les armes en gangwar |
ClientGangwarVehicleMenu(vehicles, onSelect) | Menu des véhicules du garage de gangwar |
ClientGangwarVehicleSpawned(vehicle, plate) | Véhicule de gangwar apparu, p. ex. donner les clés |
ServerLevelUp(faction, level) | La faction monte de niveau |
ServerVehicleBought(faction, model, plate) | Véhicule acheté |
ServerGangwarStarted(zone, attacker, defender) | Le gangwar démarre |
ServerGangwarEnded(zone, attacker, defender, outcome) | Gangwar terminé (outcome du point de vue de l'attaquant) |
ServerVehicleImpounded(source, plate) | Véhicule mis en fourrière, p. ex. brancher un autre script de garage |
ServerCuffedDisconnect(source, xPlayer, kind, reason) | Un joueur menotté quitte le serveur, p. ex. prison |
config/settings/config.server.lua et langues
Webhooks Discord par domaine (creator, members, money, garage, storage, wardrobe, level, gangwar, actions), url = '' désactive un log. Tous les textes se trouvent dans config/locales/ (un fichier par langue).
En jeu
- Créateur (
/fraktionen) : crée une faction, place les lieux avec Prendre ma position, règle markers, PNJ et blips via Personnaliser, et sous Paramètres active le système de niveaux, le garage, le coffre, le gangwar et les actions du menu F6. Seul Enregistrer applique tout. En haut, tu passes à Candidatures et Zones Gangwar. - Personnaliser le PNJ : choisis un modèle dans une liste d'images de tous les peds de GTA (recherche et catégories), plus scénario et orientation, le tout avec aperçu en direct en jeu. Pour un ped addon, tape le nom exact du modèle dans la recherche.
- Style des véhicules (Créateur → Véhicules) : préfixe de plaque jusqu'à 5 caractères, p. ex.
BALLAdonneBALLA 48. Si le préfixe change, tous les véhicules de la faction reçoivent une nouvelle plaque à l'enregistrement et les véhicules sortis sont supprimés. En plus : peinture à la couleur de la faction, tuning maximal, vitres teintées et xénon à la couleur de la faction. - GPS (Créateur → Paramètres) : les membres se voient mutuellement sur la carte. L'icône change selon l'état, les couleurs et icônes sont dans
gps.types. Le blip n'indique l'orientation qu'à pied et en nageant, les icônes de véhicules restent toujours droites. - Clés : celui qui sort un véhicule de faction peut le verrouiller et le déverrouiller avec U (modifiable dans les raccourcis clavier de FiveM). Avec
vehicleKeys.shared = true, tous les membres le peuvent. - Candidatures : tu crées les points de candidature dans le créateur sous Candidatures (jusqu'à 20), en PNJ ou marker et, si tu veux, avec un blip pour tous les joueurs. Ils valent pour toutes les factions. Au point, E ouvre la liste de toutes les factions qui acceptent des candidatures, là tu envoies un texte. Ta propre faction n'apparaît pas dans la liste. Les membres avec la permission Inviter des membres reçoivent un message et voient la candidature dans le menu boss sous Membres → Candidatures. On peut aussi y fermer les candidatures. Accepter fonctionne même si le joueur est hors ligne.
- Logs (menu boss, bouton du bas) : tout ce qui se passe dans la faction, p. ex. dépôts et retraits, véhicules sortis, rangés ou achetés, coffre, vestiaire, membres, candidatures, boutique de gangwar et niveau. Les attaques de gangwar n'y figurent pas. Visible pour la direction et les rangs avec la permission Voir les logs.
- Lieux : au menu boss, au garage, au coffre, au vestiaire et à l'ascenseur, E ouvre le menu.
- Menu d'actions (F6) : agit sur le joueur ou le véhicule juste devant toi.
- Menottes rigides : seulement regarder autour. Menottes souples : marcher, mais pas courir, sauter ou attaquer. Les sélectionner à nouveau les retire.
- Fouiller : seulement les joueurs menottés, tu peux seulement prendre.
- Escorter : mener un joueur menotté devant toi. Mettre dans le véhicule / Sortir du véhicule pour les joueurs menottés.
- Véhicule : laver, réparer, mettre en fourrière (les véhicules privés atterrissent à la fourrière de off_garage) et identifier. X annule.
- Gangwar : au point de gangwar, E ouvre le menu. Une faction met une zone en jeu, une autre accepte. Rejoindre avec E au point de gangwar.
- Temps limité : démarre tout de suite, points par kill, respawn, on peut rejoindre jusqu'à la fin.
- First Contact : temps pour rejoindre dans le lobby, puis une seule vie par joueur.
Pour les développeurs
exports.off_faction:AddXP('vagos', 250)
exports.off_faction:SetLevel('vagos', 5, 0)
local level, xp, needXp = exports.off_faction:GetLevel('vagos')
local faction = exports.off_faction:GetFaction('vagos')
local list = exports.off_faction:GetFactions()
local isFaction = exports.off_faction:IsFaction('vagos')
local name, grade = exports.off_faction:GetPlayerFaction(source)
local allowed = exports.off_faction:HasPermission(source, 'withdraw')
exports.off_faction:AddBalance('vagos', 5000, 'Récompense')
exports.off_faction:RemoveBalance('vagos', 5000, 'Strafe')- Tous les exports sont côté serveur.
- Event serveur
off_faction:levelUpavec(faction, level)lors d'une montée de niveau. - Statebags :
offGangwar(ID de la zone en gangwar),offCuffed('hard','soft'oufalse),offEscorted(ID serveur de celui qui escorte).
Problèmes fréquents
Au démarrage, le script signale les erreurs et les remarques dans la console du serveur.
| Problème | Solution |
|---|---|
| « Un job ESX avec ce nom existe déjà » | Choisis un autre nom, les jobs existants ne sont pas repris. |
| Personne ne voit le marker ou le PNJ | Seuls les membres voient les lieux. Place la position et enregistre, vérifie le rang minimum. |
| Le vestiaire n'habille pas | Démarre skinchanger/esx_skin ou adapte les fonctions de vêtements. |
| F6 n'ouvre aucun menu | Active une action sous Paramètres, démarre esxmenudefault. |
| Un véhicule manque dans le garage | Dans le créateur, sous Garages, attribue-le au garage. Les véhicules sans garage sont dans tous les garages. S'il a un prix, la direction doit d'abord acheter le véhicule dans le menu boss. |
| Le GPS n'affiche personne | Dans le créateur, sous Paramètres, active GPS. Il n'affiche que les membres en ligne. |
| U ne verrouille pas | Seulement celui qui a sorti le véhicule, ou tout le monde avec vehicleKeys.shared = true. Vérifie la touche dans les raccourcis clavier de FiveM. |
| La candidature manque dans le menu boss | Elle apparaît seulement dans le menu boss de la faction à laquelle on a postulé, et seulement pour les rangs avec la permission Inviter des membres. |
| La page des logs est vide | Mets le domaine sur true dans bossLogs. Les entrées ne sont créées qu'à partir de maintenant, les actions plus anciennes n'existent pas. |
| « Les Gangwars ne sont pas autorisés pour le moment » | Heure en dehors de times. Pour toujours : times = {}. |
| En gangwar, le script ambulance réanime | Désactive l'écran de mort dans ClientGangwarDeath. |
Pas encore acheté ?
Voir Faction dans la boutique