Tutoriel 2026-02-05

Guide des exports et events dans FiveM

OntelMonke

OntelMonke

Administrateur et développeur chez Agency Scripts

Événements vs exportations : quand utiliser lequel

FiveM fournit deux mécanismes principaux pour la communication inter-ressources : les événements et les exportations. Les événements sont asynchrones et se déclenchent et s'oublient par nature, ce qui les rend idéaux pour les notifications, la journalisation et le déclenchement d'effets secondaires sur les ressources. Les exportations, en revanche, sont des appels de fonction synchrones qui renvoient des valeurs immédiatement, ce qui les rend parfaites pour la récupération de données et les fonctions utilitaires. Choisir le bon mécanisme pour chaque cas d’utilisation est fondamental pour écrire du code FiveM propre et maintenable.

Événements serveur et client

Les événements dans FiveM se déroulent dans des directions spécifiques. TriggerServerEvent envoie les données du client au serveur, où elles peuvent être traitées en toute sécurité. TriggerClientEvent envoie des données du serveur à un ou à tous les clients en utilisant un identifiant source de joueur ou -1 pour la diffusion. Événements locaux déclenchés avec TriggerEvent rester dans le même contexte d’exécution. Enregistrez toujours les événements réseau avec RegisterNetEvent avant d'ajouter des gestionnaires, et rappelez-tu que tout événement enregistré sur le client peut potentiellement être déclenché par des tricheurs utilisant des injecteurs.

Sécuriser tes événements

Les gestionnaires d'événements côté serveur doivent toujours valider les données entrantes. Vérifiez que le lecteur source existe, vérifiez que les types de données correspondent aux attentes et appliquez une limitation de débit pour éviter le spam. Ne transmettez jamais d’informations sensibles telles que les identifiants de base de données via des événements client sans vérification. Un modèle courant consiste à utiliser des rappels côté serveur où le client demande des données, le serveur valide la demande et récupère les informations, puis déclenche un événement de réponse vers ce client spécifique.

Travailler avec les exportations

Les exportations permettent à une ressource d'exposer des fonctions que d'autres ressources peuvent appeler directement. Tu définissez les exportations dans ton fxmanifest.lua et implémentez-les dans tes fichiers de script. Lorsqu'une autre ressource appelle exports['your-resource']:YourFunction(args), il s'exécute de manière synchrone et renvoie le résultat. Ceci est particulièrement utile pour les ponts de structure, les bibliothèques d'utilitaires partagées et l'accès aux données à partir de scripts téléphoniques, de systèmes d'inventaire ou de gestionnaires de travaux sans coupler étroitement les ressources via des événements.

Rappels et modèles asynchrones

De nombreux frameworks FiveM implémentent des systèmes de rappel qui combinent les événements avec la gestion des réponses. QBCore utilise QBCore.Functions.CreateCallback sur le serveur et QBCore.Functions.TriggerCallback sur le client. ESX a un modèle similaire avec ESX.RegisterServerCallback. Ces rappels permettent au client de demander des données au serveur et de les recevoir dans une fonction de rappel, comblant ainsi le fossé entre les événements asynchrones et le code à sensation synchrone. Comprendre ces modèles est essentiel lorsque tu travailles avec des requêtes de base de données ou des vérifications d'inventaire qui nécessitent l'autorité du serveur.

Meilleures pratiques pour la communication des ressources

Gardez les noms de tes événements avec un espace de noms pour éviter les collisions, en utilisant un modèle tel que resourceName:eventAction. Documentez clairement tes exportations afin que d'autres développeurs puissent s'intégrer à ton ressource. Évitez de créer des dépendances circulaires dans lesquelles deux ressources s'exportent l'une vers l'autre, car cela peut entraîner des problèmes d'ordre de chargement. Lors de la conception du APIs pour tes scripts, préférez les exportations pour un accès simple aux données et aux événements pour les flux de travail complexes qui impliquent plusieurs étapes ou effets secondaires sur différentes parties de ton serveur.

Partager cet article

Prêt à améliorer votre serveur ?

Découvrez nos scripts FiveM premium dans la boutique Agency Scripts ou rejoignez notre communauté Discord pour le support et les mises à jour.