Synchronisation en temps réel FiveM

Script en temps réel FiveM

Ce tutoriel vous guidera dans la création d'un script FiveM qui synchronise l'horloge du jeu avec l'heure réelle. Cela garantit que l'environnement de jeu reflète l'heure réelle, améliorant ainsi le réalisme pour les joueurs.

Nous aborderons les scripts côté serveur et côté client, en ajoutant des fonctionnalités pour démarrer et arrêter la synchronisation et en configurant la ressource pour votre serveur FiveM.


Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Accès au serveur FiveM:Vous avez besoin d'un accès administrateur à votre serveur FiveM pour ajouter des scripts.
  • Connaissances de base de Lua:La familiarité avec les scripts Lua vous aidera à comprendre et à personnaliser le script.
  • Éditeur de texte:Des logiciels comme Visual Studio Code, Sublime Text ou Notepad++ pour éditer des fichiers de script.

Configuration du dossier de ressources

  1. Accédez à votre répertoire de ressources:Localisez le ressources dossier dans le répertoire de votre serveur FiveM. Il se trouve généralement à l'adresse suivante :bashCode copiervotre-dossier-serveur-fivem/ressources/
  2. Créer un nouveau dossier de ressources:À l'intérieur du ressources créez un nouveau dossier nommé en temps réelCopier le code .bashvotre-dossier-serveur-fivem/ressources/temps-réel/
  3. Naviguez jusqu'à la page en temps réel Dossier:Ce dossier contiendra tous les scripts et fichiers de configuration nécessaires à la synchronisation en temps réel.

Création du script côté serveur (server.lua)

  1. Créer server.lua:À l'intérieur du en temps réel dossier, créez un nouveau fichier nommé server.lua.
  2. Ajoutez le code suivant à server.lua:Copier le code luaRegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() heure locale = tonumber(os.date("%H")) minute locale = tonumber(os.date("%M")) seconde locale = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", source, heure, minute, seconde) fin) Explication:
    • Inscrivez-vous à NetEvent: Enregistre un événement réseau nommé temps réel:événement.
    • AddEventHandler: Définit ce qui se passe lorsque le temps réel:événement est déclenché.
    • os.date: Récupère l'heure système actuelle (heure, minute, seconde).
    • TriggerClientEvent: Envoie les données temporelles au client qui a déclenché l'événement.

Création du script côté client (client.lua)

  1. Créer client.lua:À l'intérieur du en temps réel dossier, créez un nouveau fichier nommé client.lua.
  2. Ajoutez le code suivant à client.lua:Copier le code lua-- Définir la durée d'une minute de jeu en millisecondes SetMillisecondsPerGameMinute(60000) -- 60 000 ms = 1 minute réelle RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Déclencher l'événement du serveur pour lancer la synchronisation TriggerServerEvent("realtime:event") Explication:
    • DéfinirMillisecondesParMinuteDeJeu: Définit la durée d'une minute de jeu. Le réglage sur 60000 rend 1 minute de jeu égale 1 minute dans le monde réel.
    • RegisterNetEvent et AddEventHandler:Écoute le temps réel:événement depuis le serveur et met à jour l'horloge du jeu en conséquence.
    • NetworkOverrideClockTime: Remplace l'horloge du jeu pour correspondre à l'heure réelle reçue du serveur.
    • TriggerServerEvent:Initie la synchronisation en déclenchant l'événement serveur.

Ajout d'une fonctionnalité d'arrêt

Pour permettre d'activer et de désactiver la synchronisation en temps réel, nous ajouterons des fonctions pour démarrer et arrêter la synchronisation.

  1. Mise à jour client.lua avec fonctionnalité d'arrêt:Copier le code lualocal syncActive = true local syncThread = nil -- Fonction pour démarrer la synchronisation function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Attendre 1 minute avant la prochaine synchronisation end end) end end -- Fonction pour arrêter la synchronisation function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- En Lua, il n'existe aucun moyen direct de tuer un thread. -- L'utilisation d'un indicateur pour quitter la boucle arrête effectivement le thread. syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Démarrer la synchronisation au démarrage de la ressource StartRealTimeSync() -- Exemple : Commande pour activer/désactiver la synchronisation RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Synchronisation en temps réel arrêtée.") else StartRealTimeSync() print("Synchronisation en temps réel démarrée.") end end, false) Explication:
    • syncActive:Un indicateur pour déterminer si la synchronisation est active.
    • DémarrerRealTimeSync: Lance une boucle qui demande des mises à jour de l'heure au serveur toutes les minutes.
    • ArrêterRealTimeSync:Arrête la synchronisation en définissant l'indicateur sur faux.
    • Commande d'enregistrement: Ajoute une commande (/toggleTimeSync) que les joueurs peuvent utiliser pour activer ou désactiver la synchronisation.

Création du manifeste de ressources (fxmanifest.lua)

Chaque ressource FiveM nécessite un fichier manifeste qui définit ses métadonnées et ses dépendances.

  1. Créer fxmanifest.lua:À l'intérieur du en temps réel dossier, créez un nouveau fichier nommé fxmanifest.lua.
  2. Ajoutez le code suivant à fxmanifest.lua: fx_version 'cerulean' jeu 'gta5' auteur 'VotreNom' description 'Script de synchronisation en temps réel pour FiveM' version '1.0.0' server_script 'server.lua' client_script 'client.lua'
  3. Explication:
    • fx_version:Spécifie la version du manifeste FiveM. azuré est le dernier en date au moment de la rédaction.
    • jeu: Indique le jeu auquel la ressource est destinée (gta5).
    • auteur, description, version: Métadonnées sur votre ressource.
    • script_serveur et script_client:Spécifie les scripts serveur et client à charger.

Démarrer la ressource sur votre serveur

  1. Modifier la configuration de votre serveur:Ouvrez le fichier de configuration de votre serveur, généralement nommé server.cfg.
  2. Ajouter la ressource à la configuration:Ajoutez la ligne suivante pour garantir la en temps réel la ressource commence par le serveur : rubyCode copierassurer en temps réel Note:Si vous utilisez commencer au lieu de assurer, vous pouvez utiliser : démarrer en temps réel
  3. Enregistrez et redémarrez votre serveur:Après avoir enregistré les modifications apportées à server.cfg, redémarrez votre serveur FiveM pour charger la nouvelle ressource.

Téléchargement complet de la ressource

Pour plus de commodité, voici l'ensemble complet des fichiers que vous devez créer pour le en temps réel ressource.

1. server.lua

RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() heure locale = tonumber(os.date("%H")) minute locale = tonumber(os.date("%M")) seconde locale = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", source, heure, minute, seconde) fin)

2. client.lua

local syncActive = true local syncThread = nil -- Fonction pour démarrer la synchronisation function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Attendre 1 minute avant la prochaine synchronisation end end) end end -- Fonction pour arrêter la synchronisation function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- En Lua, les threads sont coopératifs ; définir syncActive sur false arrêtera la boucle syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Démarrer la synchronisation au démarrage de la ressource StartRealTimeSync() -- Exemple : Commande pour activer/désactiver la synchronisation RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Synchronisation en temps réel arrêtée.") else StartRealTimeSync() print("Synchronisation en temps réel démarrée.") end end, false)

3. fxmanifest.lua

fx_version 'cerulean' jeu 'gta5' auteur 'VotreNom' description 'Script de synchronisation en temps réel pour FiveM' version '1.0.0' server_script 'server.lua' client_script 'client.lua'

Scénario complet

Ici vous pouvez télécharger le script que nous venons de créer :

https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip

Github

Vous avez créé avec succès une ressource FiveM qui synchronise l'horloge du jeu avec l'heure réelle. Ce script améliore l'expérience de jeu en garantissant que l'environnement de jeu reflète l'heure réelle, ajoutant ainsi une couche de réalisme pour les joueurs.

Vous pouvez personnaliser davantage le script en ajustant les intervalles de synchronisation, en ajoutant des commandes supplémentaires ou en l'intégrant à d'autres fonctionnalités du serveur.

N'hésitez pas à développer cette base pour l'adapter aux besoins uniques de votre serveur !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Panier
fr_FRFrench
Retour en haut