Documentation YourAC
Installation, configuration et utilisation de l'anti-cheat. Version actuelle : 1.0.0.
YourAC, l'anti-cheat pour FiveM
YourAC protège votre serveur FiveM contre les tricheurs et donne à votre staff les outils pour agir : détections côté client et côté serveur, validation OneSync, preuves par capture d'écran, bans difficiles à contourner, panel en jeu et panel web avec connexion Discord.

Ce qu'il fait#
| Fonction | Détail |
|---|---|
| Validation serveur | Téléportation, vie, godmode, silent aim et « kill all » vérifiés côté serveur (OneSync) : impossible à contourner depuis le client. Voir Heartbeat et validation serveur. |
| Audit de sécurité | Au démarrage, les réglages de sécurité de votre server.cfg sont vérifiés, avec la ligne à ajouter pour chacun. Voir Audit de sécurité. |
| Preuves automatiques | Capture d'écran du joueur à chaque détection, conservée dans le panel et envoyée sur Discord. |
| Ban multi-couches | Identifiants (license, Discord, Steam, FiveM…), tokens matériels FiveM et empreinte de l'appareil. Un banni qui revient avec un autre compte est reconnu. |
| Score de risque | Sanctions par paliers : avertissement, kick, ban (désactivé par défaut). |
| Panel en jeu et web | Joueurs, alertes, preuves, bans, réglages des détections et listes noires, en direct, sans redémarrage. Aussi accessible depuis un navigateur, avec connexion Discord. |
| Live view | Voir l'écran d'un suspect à la demande, sans aucun service externe. |
Deux fichiers de configuration#
Tout se configure dans config.lua, sauf les secrets (webhook, token du bot, connexion Discord du panel web) qui vont dans config_server.lua. La plupart des réglages se modifient aussi en direct depuis le panel, en jeu ou depuis un navigateur.
Ne mettez jamais un secret dans config.luaFiveM envoie config.lua à chaque joueur : un secret placé dedans serait lisible par n'importe qui. config_server.lua reste sur le serveur.
Par où commencer#
Compatibilité#
| Élément | Pris en charge |
|---|---|
| Serveur | OneSync obligatoire |
| Framework | Indépendant : fonctionne seul, ou avec les permissions et grades de votre core (C.CoreResource) |
| Captures d'écran | screenshot-basic |
| Alertes | Webhook Discord (optionnel, recommandé) |
| Base de données | Aucune : bans, preuves et réglages sont enregistrés dans des fichiers JSON de la ressource |
Installation
Aucune base de données à préparer : les bans, preuves et réglages sont enregistrés dans les fichiers de la ressource.
Prérequis#
| Élément | Statut |
|---|---|
| OneSync | Obligatoire (set onesync on) : indispensable à la validation serveur |
screenshot-basic | Obligatoire pour les captures de preuve et le live view |
| Webhook Discord | Facultatif mais recommandé : alertes et captures sur Discord |
Étapes#
- Copiez la ressource. Placez le dossier dans
resources/et nommez-le exactementyourac. - Ajoutez-la au server.cfg, après
screenshot-basic:cfgensure screenshot-basic ensure yourac - Donnez les permissions au staff (détails dans Permissions) : cfg
add_ace group.admin yourac.anticheat allow add_ace group.superadmin yourac.anticheat.founder allow add_ace group.admin yourac.anticheat.bypass allow # jamais analysé ni sanctionné - Redémarrez le serveur, puis ouvrez le panel en jeu avec
/acpanel. Consultez l'audit de sécurité affiché dans la console.
Testez avant de durcirPassez en mode maintenance pour observer sans sanctionner, puis ajustez les seuils dans le panel. Les détections heuristiques ne bannissent jamais automatiquement : voir Détections.
Réglages généraux
Tout se règle dans config.lua (et config_server.lua pour les secrets). La plupart des réglages se modifient aussi en direct depuis le panel.
Options#
| Option | Défaut | Rôle |
|---|---|---|
C.Name | 'YourAC' | Nom affiché dans les logs, sur Discord et à l'écran. |
C.Debug | false | Logs détaillés dans la console. |
C.SecurityMode | 'normal' | Mode de sécurité, voir ci-dessous. |
C.ForceBanAll | false | Force le ban sur toutes les détections actives. |
C.ForceBanAllAvec cette option, un faux positif devient un ban. À éviter tant que vous n'avez pas testé vos réglages.
Mode de sécurité#
C.SecurityMode = 'normal' -- normal | strict | competitive | maintenance | debug| Mode | Effet |
|---|---|
normal | Protection standard. |
strict / competitive | Même comportement que normal. À vous d'abaisser les seuils, par exemple pour un serveur PvP. |
maintenance | Les détections restent actives, mais aucune sanction n'est appliquée (log seulement). |
debug | Comme maintenance : tout est enregistré, rien n'est sanctionné. |
Où se règle quoi#
| Option | Rôle | Page |
|---|---|---|
C.StaffPermission, C.FounderPermission, C.PanelGuard… | Accès au panel et actions sensibles | Permissions |
C.WhitelistPermissions, C.DeveloperIdentifiers | Joueurs jamais analysés, développeurs jamais sanctionnés | Whitelist |
C.Discord | Webhook des alertes et des captures, bot | Discord |
C.WebPanel | Panel dans un navigateur | Panel web |
C.ScreenRec / C.LiveView | Captures automatiques et live view | Preuves |
C.BanScreen | Écran vu par le joueur banni | Écran de ban |
C.ChatFilter | Filtre des commandes /me et /do | Filtre /me et /do |
C.Detections | Activation, action et seuils de chaque détection | Détections |
C.Risk | Score de risque et paliers de sanction | Score de risque |
C.TokenBan / C.BanEvasionLearning | Ban des tokens matériels et anti-évasion | Bans |
C.Heartbeat / C.ServerValidation | Défi client et vérifications serveur | Heartbeat |
C.Blacklisted…, C.CheatGlobals, C.CheatEvents | Listes noires | Listes noires |
settings.json est prioritaireLes réglages modifiés depuis le panel sont enregistrés dans settings.json et remplacent ceux de config.lua au démarrage. Supprimez ce fichier pour revenir à config.lua.
Permissions
Deux niveaux d'accès : le staff utilise le panel au quotidien, les fondateurs gardent la main sur les actions sensibles.
Staff et fondateurs#
| Rôle | Ce qu'il peut faire |
|---|---|
| Staff | Ouvrir le panel, bannir, expulser, voir les preuves, lancer un live view, régler les détections. |
| Fondateur | Tout ce que fait le staff, plus les actions sensibles : débannir tout le monde, modifier la whitelist et la liste des développeurs, changer le webhook Discord, modifier les options critiques, passer en mode maintenance ou debug, couper toutes les détections. |
Dans server.cfg :
add_ace group.admin yourac.anticheat allow
add_ace group.superadmin yourac.anticheat.founder allow
add_ace group.admin yourac.anticheat.bypass allow # jamais analysé ni sanctionnéOptions#
| Option | Défaut | Rôle |
|---|---|---|
C.StaffPermission | 'yourac.anticheat' | Permission FiveM du staff. |
C.FounderPermission | 'yourac.anticheat.founder' | Permission FiveM des fondateurs. |
C.BypassPermission | 'yourac.anticheat.bypass' | Permission FiveM « whitelist » : ceux qui l'ont ne sont jamais analysés ni sanctionnés. |
C.PanelFounders | {} | Fondateurs par identifiant, par exemple ['license:xxxx'] = true. |
C.FounderOnlySensitive | true | false : n'importe quel membre du staff peut faire les actions sensibles. |
C.CoreResource | '' | Nom de votre ressource « core ». Vide = fonctionnement autonome. |
Utiliser les grades de votre core#
Si votre serveur a un core qui gère les grades, renseignez C.CoreResource. L'anti-cheat utilisera alors ses exports, s'ils existent :
HasPermission,CanBypass,GetPlayerPermissionGroupsetHasPermissionGrouppour les droits et les grades ;ShowNotificationpour les notifications.
Le grade fondateur du core donne aussi le niveau fondateur.
Protection du panel#
C.PanelGuard : chaque action du panel est vérifiée côté serveur.
| Champ | Défaut | Rôle |
|---|---|---|
window / maxPerWindow | 5000 / 40 | Au plus 40 actions par tranche de 5 s et par joueur. |
maxString / maxItems | 4000 / 1500 | Taille maximale des données envoyées par le panel. |
strikeLimit | 15 | Nombre d'actions du panel refusées à un non-staff avant de déclencher la détection panelExploit. |
Whitelist et développeurs
Protégez votre staff des faux positifs, et testez l'anti-cheat sur vous-même sans risque.
| Statut | Analysé | Sanctionné | Détail |
|---|---|---|---|
| Whitelist | Non | Non | Jamais bloqué à la connexion, même si son PC a servi à tester un compte banni. |
| Développeur | Oui, détecté et enregistré | Non | Pratique pour tester l'anti-cheat sur soi. |
Options#
| Option | Défaut | Rôle |
|---|---|---|
C.WhitelistPermission | 'staff' | Grade ou permission du core qui est whitelisté. |
C.WhitelistPermissions | { 'staff' } | Liste des rôles whitelistés. Modifiable dans le panel, onglet Listes. |
C.WhitelistCanBypass | false | true : tout grade qui a le droit « bypass » dans le core est whitelisté automatiquement. Vous ne pouvez alors plus vous tester vous-même. |
C.WhitelistIdentifiers | {} | Whitelist par identifiant, utile sans core. Exemple : ['license:xxxx'] = true. |
C.DeveloperIdentifiers | {} | Développeurs : détectés et enregistrés, jamais sanctionnés. |
Rôles whitelistés#
Chaque rôle de C.WhitelistPermissions est reconnu de quatre façons. Il suffit qu'une seule corresponde :
| Ce que vous ajoutez | Exemple | Reconnu quand… |
|---|---|---|
| Une permission ACE FiveM | yourac.vip | le joueur a cette permission (add_ace group.vip yourac.vip allow). Fonctionne sans core. |
| Un ID de rôle Discord | 112233445566778899 | le joueur a ce rôle sur votre serveur Discord (nécessite BotToken et GuildId, voir Discord). |
| Un grade de votre core | staff | le joueur a ce grade dans votre core (C.CoreResource). |
| Une permission de votre core | admin.menu | votre core lui accorde cette permission. |
Le plus simple sans coreDonnez yourac.anticheat.bypass aux groupes à protéger dans server.cfg.
Discord
Alertes et captures sur un salon Discord, avatars des joueurs dans le panel et whitelist par rôle Discord.
Configuration#
Dans config.lua :
C.Discord = {
Enabled = true,
BotName = 'YourAC',
}Dans config_server.lua (secrets) :
C.Discord.Webhook = '' -- URL du webhook (alertes + captures)
C.Discord.BotToken = '' -- facultatif : avatars Discord dans le panel, rôles whitelistés
C.Discord.GuildId = '' -- facultatif : ID de votre serveur Discord (rôles)Champs#
| Champ | Rôle |
|---|---|
Webhook | URL du webhook qui reçoit les alertes et les captures. Modifiable aussi depuis le panel, mais seulement par un fondateur. |
BotToken | Créez un bot sur discord.com/developers et collez son token. Le bot n'a pas besoin d'être sur votre serveur Discord pour les avatars. Sans token, le panel affiche les initiales des joueurs. |
GuildId | ID de votre serveur Discord. Avec BotToken, il permet de whitelister des rôles Discord. Le bot doit alors être sur votre serveur, avec l'intent « Server Members » activé. |
Gardez le token secretBotToken va uniquement dans config_server.lua, jamais dans config.lua.
Détections
52 détections, chacune avec un réglage enabled et une action. Tout se règle aussi dans le panel, onglet Détections : activation, action et seuils.
| Action | Effet |
|---|---|
log | Enregistrée, sans sanction. |
kick | Le joueur est expulsé. |
ban | Le joueur est banni. |
Sécurité intégrée#
Les détections dites heuristiques ne peuvent jamais bannir automatiquement, même réglées sur ban. Elles restent plafonnées au kick, parce qu'un lag ou un script légitime peut les déclencher :
noclip teleport speedHack vehicleSpeedHack godMode healthHack aimLock aimbotHeadshot silentAim superJump invisibility vehicleFly invincibleFlag freecam deadShooter screenshotBlocked entitySpam resourceStop
Méthode conseilléeLaissez les heuristiques en kick ou en log. Confirmez avec le live view (/acview), puis bannissez à la main depuis le panel.
Serveur : fiables, impossibles à contourner#
| Détection | Défaut | Ce qu'elle repère | Réglages |
|---|---|---|---|
serverTeleport | kick | Téléportation vue par le serveur. | voir C.ServerValidation |
serverHealth | ban | Vie au-dessus du maximum, lue côté serveur. | C.ServerValidation.maxHealth |
godModeServer | kick | Le joueur encaisse beaucoup de dégâts mais sa vie ne baisse jamais. | hits, damage, hpTolerance, window |
silentAim | kick | Dégâts infligés à une distance impossible. | absMaxDist, minHits, window |
massDamage | kick | Beaucoup de joueurs différents blessés en très peu de temps (« kill all »). | distinctVictims, window |
blacklistedWeapon | ban | Dégâts infligés avec une arme interdite. | voir C.BlacklistedWeaponNames |
weaponDamageModifier | kick | Dégâts anormalement élevés. | maxDamage |
giveWeapon | ban | Arme interdite, ou arme donnée à un autre joueur (action annulée). | — |
entityBlacklist | ban | Création d'un modèle d'entité interdit. | voir C.BlacklistedModelNames |
entitySpam | désactivée | Création massive d'entités. Désactivée par défaut, car le chargement de la map peut la déclencher. | threshold, window, joinGrace |
projectileSpam / fireSpam / ptfxSpam | kick | Rafales de projectiles, de feu ou de particules. | threshold, window |
chatSpam | kick | Spam du chat. | threshold, window |
inappropriateChat | kick | /me ou /do au contenu interdit. | voir C.ChatFilter |
panelExploit | kick | Un joueur sans droit envoie des actions du panel admin (injection). | voir C.PanelGuard |
clearPedTasks | kick | Vide les tâches d'un autre joueur (éjection de véhicule, joueur figé). L'action est annulée. | — |
removeWeapons | kick | Retire les armes d'un autre joueur. L'action est annulée. | — |
deadShooter | kick | Inflige des dégâts alors qu'il est mort. | minHits, window |
Explosions#
| Détection | Défaut | Ce qu'elle repère |
|---|---|---|
explosionSpam | ban | Trop d'explosions en peu de temps (threshold, window). |
blacklistedExplosion | ban | Type d'explosion interdit (C.BlacklistedExplosions). |
explosionImpossible | ban | Explosion impossible : type invalide, coordonnées hors de la map ou dégâts absurdes (C.ExplosionProtection). |
explosionMassive | ban | Explosion surpuissante (maxDamageScale). |
explosionRemote | ban | Explosions très loin du joueur (maxDist, minCount, window, cancel). |
explosionRepeat | ban | Le même endroit est frappé encore et encore (radius, threshold, window). |
explosionOnPlayers | ban | Explosions sur d'autres joueurs, loin de soi (radius, farFromSender, threshold). |
explosionOnVehicles | kick | Explosions sur des véhicules, loin de soi. |
explosionLimit | kick | Plafond par joueur : au-delà, l'explosion est annulée (max, window). |
Client : intégrité#
| Détection | Défaut | Ce qu'elle repère |
|---|---|---|
cheatGlobal | ban | Variable laissée en mémoire par un menu de triche connu (C.CheatGlobals). |
blacklistedResource | ban | Ressource de triche chargée (C.BlacklistedResources). |
cheatEvent | ban | Event déclenché par un menu de triche connu (C.CheatEvents). |
blacklistedCommand | ban | Commande d'un menu de triche (C.BlacklistedCommands). |
resourceStop | kick | L'anti-cheat a été coupé côté client (voir C.Heartbeat). |
weaponPossession | kick | Arme interdite en main. |
pedModelBlacklist | kick | Modèle de personnage interdit. |
unknownResource | ban | Ressource chargée chez le joueur mais absente du serveur : code injecté. |
nativeHook | kick | Fonction du jeu remplacée par un menu de triche. |
spectate | kick | Mode spectateur activé par un joueur qui n'est pas staff. |
screenshotBlocked | log | Capture d'écran vide ou noire : le joueur bloque les captures (minBytes). |
Client : comportement (heuristiques)#
| Détection | Défaut | Ce qu'elle repère | Réglages |
|---|---|---|---|
aimbotHeadshot | kick | Taux de headshots anormal ou série de headshots d'affilée. | ratio, minHits, minVictims, streak, window |
aimLock | kick | Visée collée à la tête d'une cible en mouvement. | maxAngle, sustainMs, targetMinSpeed |
noclip | kick | Le joueur traverse les murs ou vole. | sustainMs |
teleport | kick | Plusieurs sauts instantanés. | impliedSpeed, minDist, minJumps, window |
godMode | kick | Invincibilité qui dure. | sustainMs |
healthHack | ban, plafonné au kick | Vie ou armure au-dessus du maximum. | — |
speedHack | kick | Vitesse à pied impossible. | maxSpeed, sustainMs |
vehicleSpeedHack | kick | Véhicule plus rapide que possible. | factor, absoluteMax, sustainMs |
superJump | kick | Saut surpuissant. | maxJumpVelZ |
invisibility | log | Joueur rendu invisible. | minAlpha, sustainMs |
vehicleFly | log | Véhicule qui vole (avions, hélicos, bateaux et trains exclus). | minHeight, minSpeed, sustainMs |
invincibleFlag | log | Drapeau d'invincibilité posé sur le joueur. | sustainMs |
freecam | log | Caméra libre : la caméra reste très loin du personnage. | maxDist, sustainMs |
Score de risque
Avec C.Risk, chaque détection ajoute des points au joueur. Quand un palier est franchi, la sanction correspondante peut s'appliquer. Le score redescend tout seul quand le joueur se comporte normalement.
La sanction finale est la plus sévère entre l'action de la détection et celle du palier atteint.
Options#
| Champ | Défaut | Rôle |
|---|---|---|
enabled | false | false : chaque détection applique directement son action. |
decayPerMin | 5 | Points perdus par minute de comportement normal. |
default | 15 | Points ajoutés par une détection absente de weights. |
thresholds | 50 → avertissement, 75 → kick, 95 → ban | Paliers de sanction. |
weights | voir config.lua | Points ajoutés par chaque détection. |
Bans, ban matériel et anti-évasion
À chaque ban, l'anti-cheat enregistre tous les identifiants du joueur (license, Discord, Steam, FiveM…), ses tokens matériels FiveM et l'empreinte de son appareil. Pour revenir, le joueur devrait tout changer en même temps.
Options#
| Option | Défaut | Rôle |
|---|---|---|
C.TokenBan | true | Bannit aussi les tokens matériels FiveM. |
C.BanMatchIP | false | Bloque aussi par adresse IP. |
C.BanEvasionLearning | true | Un banni qui revient avec de nouveaux identifiants les voit ajoutés à son ban : le ban le suit. |
C.DeferConnectionToCore | false | true : c'est votre core qui affiche l'écran de ban à la connexion, via l'export GetConnectionBan. Laissez false en mode autonome. |
Évitez le ban par IPC.BanMatchIP est déconseillé : une IP est souvent partagée (famille, colocation, réseau mobile).
Empreinte d'appareil#
Un identifiant est caché sur le PC du joueur. Si un banni revient sur le même PC avec un autre compte, il est éjecté dès son arrivée en jeu, et ses nouveaux identifiants sont ajoutés à son ban.
Mémoire des identités#
Les identités des joueurs sont gardées 90 jours dans identities.json. Un ban par identifiant depuis le panel, même sur un joueur hors ligne, bannit donc aussi ses tokens et son appareil.

Audit de sécurité du serveur
Au démarrage, l'anti-cheat vérifie les réglages de sécurité de FiveM dans votre server.cfg. Le résultat s'affiche dans la console et dans le panel (onglet Paramètres), avec la ligne à ajouter pour chaque réglage manquant.
Réglages vérifiés#
| Réglage recommandé | Ce qu'il bloque |
|---|---|
set onesync on | Indispensable à toute la validation serveur. |
set sv_entityLockdown strict | Les joueurs ne peuvent plus créer eux-mêmes de véhicules, PNJ ou objets : la plupart des menus de spawn ne marchent plus. Vos scripts doivent créer leurs entités côté serveur. |
set sv_filterRequestControl 2 | Empêche de prendre le contrôle des entités des autres joueurs. |
set sv_enableNetworkedPhoneExplosions false | Explosions de téléphone forcées chez les autres. |
set sv_enableNetworkedSounds false | Sons forcés chez les autres. |
sv_pureLevel 1 | Refuse les fichiers du jeu modifiés. |
set sv_scriptHookAllowed 0 | Interdit ScriptHook. |
# server.cfg : configuration recommandée
set onesync on
set sv_entityLockdown strict
set sv_filterRequestControl 2
set sv_enableNetworkedPhoneExplosions false
set sv_enableNetworkedSounds false
sv_pureLevel 1
set sv_scriptHookAllowed 0Testez d'abord sur un serveur de testsv_entityLockdown strict et sv_filterRequestControl peuvent casser d'anciens scripts qui créent des véhicules côté client.
Heartbeat et validation serveur
Le heartbeat vérifie que l'anti-cheat tourne toujours chez le joueur ; la validation serveur lit l'état du joueur directement côté serveur.
Heartbeat#
C.Heartbeat : le serveur envoie un défi au client à intervalle régulier, et le client doit y répondre. S'il ne répond plus, la détection resourceStop se déclenche. Les délais de grâce sont larges pour ne jamais sanctionner un joueur dont le chargement est lent.
| Champ | Défaut | Rôle |
|---|---|---|
pingInterval / checkInterval | 5000 / 5000 | Délai entre deux défis, et entre deux vérifications (ms). |
graceStart | 90000 | Délai de grâce après un démarrage de la ressource (ms). |
graceJoin | 90000 | Délai de grâce après l'arrivée d'un joueur (ms). |
cutoff | 45000 | Durée sans réponse au-delà de laquelle le joueur est signalé (ms). |
Validation serveur#
C.ServerValidation : ces vérifications lisent l'état du joueur côté serveur, toutes les interval ms.
| Champ | Défaut | Rôle |
|---|---|---|
enabled | true | Active ou désactive la validation serveur. |
interval | 1500 | Délai entre deux vérifications (ms). |
tpImpliedSpeed | 180 | Vitesse (m/s) au-delà de laquelle un déplacement compte comme un saut. |
tpMinDist | 60 | Distance minimale d'un saut (m). |
tpMinJumps / tpWindow | 3 / 15000 | Nombre de sauts nécessaires dans cette fenêtre (ms). |
maxHealth | 210 | Vie maximale autorisée. |
Listes noires
Toutes les listes se modifient en direct dans le panel, onglet Listes.
| Option | Contenu |
|---|---|
C.BlacklistedWeaponNames | Armes interdites, par nom (WEAPON_XXX). Retirez celles que votre serveur utilise, par exemple si un job a un lance-roquettes. |
C.BlacklistedModelNames | Modèles interdits : peds, véhicules ou objets « troll ». |
C.BlacklistedCommands | Commandes de menus de triche connus. |
C.CheatGlobals | Variables laissées en mémoire par des menus de triche. N'ajoutez que des noms sûrs, jamais des noms génériques. |
C.BlacklistedResources | Noms de ressources de triche. |
C.CheatEvents | Events de menus de triche (DFWM, Lynx, HCheat, mellotrainer…). |
C.BlacklistedExplosions | Types d'explosion interdits, sous la forme [58] = true. |
C.ExplosionProtection | Limites de l'« explosion impossible » : types valides (minValidType / maxValidType), limites de la map (worldBound) et dégâts maximum (maxDamageScaleHard). |
N'ajoutez jamais un event légitimeUn event de C.CheatEvents utilisé par une ressource légitime de votre serveur ferait bannir des joueurs innocents.
Filtre /me et /do
C.ChatFilter modère le contenu des commandes RP /me et /do.
- La détection se fait par mot entier et ignore la casse, les accents et le « leet speak » :
B1TEest détecté, mais pashabite. - La sanction se règle avec la détection
inappropriateChat.
Options#
| Champ | Défaut | Rôle |
|---|---|---|
enabled | true | Active ou désactive le filtre. |
block | true | Le message inapproprié n'est pas diffusé. |
notifyStaff | true | Prévient le staff en jeu, avec le texte exact. |
words | liste | Mots interdits. |
patterns | {} | Expressions interdites. |
Vos autres scripts de chat peuvent utiliser le même filtre avec l'export serveur CheckMessage : voir Exports.
Panel, commandes et exports
Le panel s'ouvre en jeu avec /acpanel, ou une touche à choisir dans Paramètres › Raccourcis clavier › FiveM. Il est aussi accessible depuis un navigateur : voir Panel web.
Onglets du panel#
| Groupe | Onglets |
|---|---|
| Supervision | Vue d'ensemble, Analytics, Alertes |
| Détection | Détections, Preuves |
| Joueurs | Joueurs (avec fiche détaillée), Surveillance, Bans |
| Administration | Journal admin, Paramètres, Listes, Écran de ban |

Commandes#
| Commande | Où | Rôle |
|---|---|---|
/acpanel | En jeu | Ouvre le panel. |
/acview <id> [nb] | En jeu (staff) | Live view : rafale de captures d'écran du joueur. |
yourac_ban <id> <raison> | Console serveur | Bannit un joueur en ligne. |
yourac_unban <identifiant> | Console serveur | Débannit, par exemple yourac_unban license:xxxx. |
yourac_bans | Console serveur | Liste les bans. |
yourac_check <id> | Console serveur | Diagnostic d'un joueur : identifiants, whitelist… |
yourac_risk | Console serveur | Joueurs classés par score de risque. |
yourac_intel <identifiant ou id> | Console serveur | Fiche d'un joueur : historique des détections. |
yourac_evidence [n] | Console serveur | Dernières preuves. |
Exports#
-- client
exports['yourac']:OpenPanel() -- ouvre le panel (false si accès refusé)
exports['yourac']:ClosePanel()
exports['yourac']:IsPanelOpen()
exports['yourac']:IsFounder()
-- serveur
exports['yourac']:GetConnectionBan(src) -- carte de ban si le joueur qui se connecte est banni, sinon nil
exports['yourac']:CheckMessage(src, text, channel) -- passe un texte au filtre ; true = message à bloquerPanel web
Le panel est aussi accessible depuis un navigateur, sans être en jeu. Même design, mêmes fonctions, connexion avec Discord. C'est votre serveur FiveM qui l'héberge : rien à installer ni à payer en plus.
Adresse#
https://<votre-serveur>.users.cfx.re/yourac/L'adresse exacte s'affiche dans la console au démarrage. Vous pouvez aussi y accéder depuis la page Panel du site YourAC.
Mise en place (5 minutes)#
- Créez une application Discord. Sur discord.com/developers/applications, cliquez sur New Application (par exemple « YourAC Panel »).
- Copiez les identifiants. Dans OAuth2, copiez le Client ID et le Client Secret, puis collez-les dans
config_server.lua. - Ajoutez l'URL de redirection. Dans OAuth2 → Redirects, ajoutez l'URL affichée dans la console au démarrage : url
https://<votre-serveur>.users.cfx.re/yourac/auth/callback - Indiquez qui a le droit d'entrer (voir le tableau ci-dessous), puis redémarrez la ressource.
-- config_server.lua
C.WebPanel = {
enabled = true,
ClientId = '', -- OAuth2 → Client ID
ClientSecret = '', -- OAuth2 → Client Secret (SECRET)
PublicUrl = '', -- vide = adresse cfx.re détectée automatiquement
AllowedDiscord = { '123456789012345678' }, -- IDs Discord du staff
AllowedRoles = {}, -- ou des IDs de rôles Discord (nécessite BotToken + GuildId)
FounderDiscord = { '123456789012345678' }, -- IDs Discord des fondateurs
SessionHours = 12, -- durée d'une connexion
}Qui peut entrer#
| Rôle | Comment |
|---|---|
| Staff | Son ID Discord dans AllowedDiscord, ou un de ses rôles Discord dans AllowedRoles. |
| Fondateur (actions sensibles) | Son ID Discord dans FounderDiscord, ou ['discord:ID'] = true dans C.PanelFounders. |
Sécurité#
- Chaque action passe par les mêmes contrôles que le panel en jeu : permissions, actions réservées aux fondateurs, limite de débit, journal admin (noté
web:<pseudo>). - La session est stockée dans un cookie protégé, et une connexion dure
SessionHoursheures. - Les connexions refusées s'affichent dans la console.
Utilisez l'adresse httpsPréférez l'adresse cfx.re en https à http://ip:port : en http, le cookie de session circule en clair.
Preuves : captures et live view
Chaque détection est accompagnée d'une capture d'écran, et le staff peut regarder l'écran d'un suspect à la demande. Aucun service externe n'est utilisé.
Captures automatiques#
C.ScreenRec : une capture d'écran du joueur est prise à chaque détection et conservée dans l'onglet Preuves du panel, même après un déban.
| Champ | Défaut | Rôle |
|---|---|---|
enabled | true | Active ou désactive les captures. |
continuous | false | true : capture aussi les suspects en continu. Attention, ça envoie beaucoup d'images sur Discord. |
interval / frames / linger | 10000 / 6 / 120000 | Mode continu : délai entre deux captures (ms), nombre d'images gardées, arrêt automatique après la dernière détection (ms). |
quality / encoding | 0.5 / 'jpg' | Qualité de l'image. |
Live view#
C.LiveView : le staff peut voir l'écran d'un joueur à la demande, avec /acview <id> [nb] ou le bouton du panel. Les captures arrivent sur Discord et dans l'onglet Preuves.
| Champ | Défaut | Rôle |
|---|---|---|
enabled | true | Active ou désactive le live view. |
frames | 8 | Nombre de captures par session. |
interval | 1500 | Délai entre deux captures, en ms (minimum environ 1000). |
maxFrames | 30 | Plafond de captures par session. |

Écran de bannissement
C.BanScreen règle ce que voit le joueur banni, au moment du ban et quand il essaie de se reconnecter. Tout est modifiable en direct dans le panel (onglet Écran de ban, avec aperçu).
| Champ | Rôle |
|---|---|
customTop | Bandeau tout en haut de l'écran. Vide = masqué. |
serverName | Nom du serveur affiché. |
headline | Titre. Vide = « Vous ne pouvez pas jouer sur serverName. » |
message | Message principal affiché au joueur. |
reasonLabel | Libellé affiché pour un ban automatique (par défaut « Anti-cheat ») : le tricheur ne sait pas quelle détection l'a attrapé. Les bans manuels affichent la vraie raison. |
permanentText | Texte sur la durée du ban. |
discord / appealText | Lien et texte pour faire appel. Vide = masqué. |
logo | URL d'un logo. Vide = logo intégré à la ressource. |
Fichiers de données
Ces fichiers sont créés et mis à jour automatiquement, à la racine de la ressource.
| Fichier | Contenu |
|---|---|
settings.json | Réglages modifiés depuis le panel. Au démarrage, ils remplacent ceux de config.lua. Supprimez ce fichier pour revenir à config.lua. |
bans.json | Bans. |
identities.json | Identités connues des joueurs (identifiants, tokens, appareils), gardées 90 jours. |
intel.json | Historique des détections par joueur. |
watchlist.json | Joueurs sous surveillance. |
captures.json | Preuves (captures d'écran). |
adminlog.json | Journal des actions du staff. |
SauvegardesCes fichiers contiennent tout l'historique de l'anti-cheat : incluez-les dans les sauvegardes de votre serveur.