{"id":158437,"date":"2024-09-26T14:01:24","date_gmt":"2024-09-26T12:01:24","guid":{"rendered":"https:\/\/hifivem.com\/?p=158437"},"modified":"2026-07-24T12:46:18","modified_gmt":"2026-07-24T10:46:18","slug":"synchronisation-en-temps-reel-de-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/fr\/synchronisation-en-temps-reel-de-fivem\/","title":{"rendered":"Synchronisation en temps r\u00e9el FiveM"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Ce tutoriel vous guidera dans la cr\u00e9ation d&#039;un script FiveM qui synchronise l&#039;horloge du jeu avec l&#039;heure r\u00e9elle. Cela garantit que l&#039;environnement de jeu refl\u00e8te l&#039;heure r\u00e9elle, am\u00e9liorant ainsi le r\u00e9alisme pour les joueurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous aborderons les scripts c\u00f4t\u00e9 serveur et c\u00f4t\u00e9 client, en ajoutant des fonctionnalit\u00e9s pour d\u00e9marrer et arr\u00eater la synchronisation et en configurant la ressource pour votre serveur FiveM.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisites\">Pr\u00e9requis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de commencer, assurez-vous de disposer des \u00e9l\u00e9ments suivants\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Acc\u00e8s au serveur FiveM<\/strong>:Vous avez besoin d&#039;un acc\u00e8s administratif \u00e0 votre <a href=\"https:\/\/fivemx.com\/fr\/conversion-de-scripts-fivem\/\" title=\"Conversion de scripts FiveM \u2013 ESX, QBCore, QBOX (Guide du framework)\" data-wpil-monitor-id=\"1661\">Serveur FiveM pour ajouter des scripts<\/a>.<\/li>\n\n\n\n<li><strong>Connaissances de base de Lua<\/strong>:La familiarit\u00e9 avec les scripts Lua vous aidera \u00e0 comprendre et \u00e0 personnaliser le script.<\/li>\n\n\n\n<li><strong>\u00c9diteur de texte<\/strong>:Des logiciels comme Visual Studio Code, Sublime Text ou Notepad++ pour \u00e9diter des fichiers de script.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setting-up-the-resource-folder\">Configuration du dossier de ressources<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Acc\u00e9dez \u00e0 votre r\u00e9pertoire de ressources<\/strong>:Localisez le <code>ressources<\/code> dossier dans le r\u00e9pertoire de votre serveur FiveM. Il se trouve g\u00e9n\u00e9ralement \u00e0 l&#039;adresse suivante\u00a0:bashCode copier<code>votre-dossier-serveur-fivem\/ressources\/<\/code><\/li>\n\n\n\n<li><strong>Cr\u00e9er un nouveau dossier de ressources<\/strong>:\u00c0 l&#039;int\u00e9rieur du <code>ressources<\/code> dossier, cr\u00e9ez un nouveau dossier nomm\u00e9 <code>en temps r\u00e9el<\/code>Copier le code .bash<code>votre-dossier-serveur-fivem\/ressources\/temps-r\u00e9el\/<\/code><\/li>\n\n\n\n<li><strong>Acc\u00e9dez au <code>en temps r\u00e9el<\/code> Dossier<\/strong>:Ce dossier contiendra tous les scripts et fichiers de configuration n\u00e9cessaires \u00e0 la synchronisation en temps r\u00e9el.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-server-side-script-server-lua\">Cr\u00e9ation du script c\u00f4t\u00e9 serveur (<code>serveur.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cr\u00e9er <code>serveur.lua<\/code><\/strong>:\u00c0 l&#039;int\u00e9rieur du <code>en temps r\u00e9el<\/code> dossier, cr\u00e9ez un nouveau fichier nomm\u00e9 <code>serveur.lua<\/code>.<\/li>\n\n\n\n<li><strong>Ajoutez le code suivant \u00e0 <code>serveur.lua<\/code><\/strong>:Copier le code lua<code>RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function() heure locale = tonumber(os.date(&quot;%H&quot;)) minute locale = tonumber(os.date(&quot;%M&quot;)) seconde locale = tonumber(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;realtime:event&quot;, source, heure, minute, seconde) fin) <\/code><strong>Explication<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Inscrivez-vous \u00e0 NetEvent<\/strong>: Enregistre un \u00e9v\u00e9nement r\u00e9seau nomm\u00e9 <code>temps r\u00e9el:\u00e9v\u00e9nement<\/code>.<\/li>\n\n\n\n<li><strong>Ajouter un gestionnaire d&#039;\u00e9v\u00e9nements<\/strong>: D\u00e9finit ce qui se passe lorsque le <code>temps r\u00e9el:\u00e9v\u00e9nement<\/code> est d\u00e9clench\u00e9.<\/li>\n\n\n\n<li><strong>os.date<\/strong>: R\u00e9cup\u00e8re l&#039;heure syst\u00e8me actuelle (heure, minute, seconde).<\/li>\n\n\n\n<li><strong>TriggerClientEvent<\/strong>: Envoie les donn\u00e9es temporelles au client qui a d\u00e9clench\u00e9 l&#039;\u00e9v\u00e9nement.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-client-side-script-client-lua\">Cr\u00e9ation du script c\u00f4t\u00e9 client (<code>client.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cr\u00e9er <code>client.lua<\/code><\/strong>:\u00c0 l&#039;int\u00e9rieur du <code>en temps r\u00e9el<\/code> dossier, cr\u00e9ez un nouveau fichier nomm\u00e9 <code>client.lua<\/code>.<\/li>\n\n\n\n<li><strong>Ajoutez le code suivant \u00e0 <code>client.lua<\/code><\/strong>:Copier le code lua<code>-- D\u00e9finir la dur\u00e9e d&#039;une minute de jeu en millisecondes SetMillisecondsPerGameMinute(60000) -- 60 000 ms = 1 minute r\u00e9elle RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- D\u00e9clencher l&#039;\u00e9v\u00e9nement du serveur pour lancer la synchronisation TriggerServerEvent(&quot;realtime:event&quot;) <\/code><strong>Explication<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>D\u00e9finirMillisecondesParMinuteDeJeu<\/strong>: D\u00e9finit la dur\u00e9e d&#039;une minute de jeu. Le r\u00e9glage sur <code>60000<\/code> rend 1 minute de jeu \u00e9gale 1 minute dans le monde r\u00e9el.<\/li>\n\n\n\n<li><strong>RegisterNetEvent et AddEventHandler<\/strong>:\u00c9coute le <code>temps r\u00e9el:\u00e9v\u00e9nement<\/code> depuis le serveur et met \u00e0 jour l&#039;horloge du jeu en cons\u00e9quence.<\/li>\n\n\n\n<li><strong>NetworkOverrideClockTime<\/strong>: Remplace l&#039;horloge du jeu pour correspondre \u00e0 l&#039;heure r\u00e9elle re\u00e7ue du serveur.<\/li>\n\n\n\n<li><strong>D\u00e9clencheur d&#039;\u00e9v\u00e9nement du serveur<\/strong>:Initie la synchronisation en d\u00e9clenchant l&#039;\u00e9v\u00e9nement serveur.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"adding-a-stop-functionality\">Ajout d&#039;une fonctionnalit\u00e9 d&#039;arr\u00eat<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour permettre d&#039;activer et de d\u00e9sactiver la synchronisation en temps r\u00e9el, nous ajouterons des fonctions pour d\u00e9marrer et arr\u00eater la synchronisation.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Mise \u00e0 jour <code>client.lua<\/code> avec fonctionnalit\u00e9 d&#039;arr\u00eat<\/strong>:Copier le code lua<code>local syncActive = true local syncThread = nil -- Fonction pour d\u00e9marrer la synchronisation function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent(&quot;realtime:event&quot;) Wait(60000) -- Attendre 1 minute avant la prochaine synchronisation end end) end end -- Fonction pour arr\u00eater la synchronisation function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- En Lua, il n&#039;existe aucun moyen direct de tuer un thread. -- L&#039;utilisation d&#039;un indicateur pour quitter la boucle arr\u00eate effectivement le thread. syncThread = nil end end end RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- D\u00e9marrer la synchronisation au d\u00e9marrage de la ressource StartRealTimeSync() -- Exemple : Commande pour activer\/d\u00e9sactiver la synchronisation RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Synchronisation en temps r\u00e9el arr\u00eat\u00e9e.&quot;) else StartRealTimeSync() print(&quot;Synchronisation en temps r\u00e9el d\u00e9marr\u00e9e.&quot;) end end, false) <\/code><strong>Explication<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>syncActive<\/strong>:Un indicateur pour d\u00e9terminer si la synchronisation est active.<\/li>\n\n\n\n<li><strong>D\u00e9marrerRealTimeSync<\/strong>: Lance une boucle qui demande des mises \u00e0 jour de l&#039;heure au serveur toutes les minutes.<\/li>\n\n\n\n<li><strong>Arr\u00eaterRealTimeSync<\/strong>:Arr\u00eate la synchronisation en d\u00e9finissant l&#039;indicateur sur faux.<\/li>\n\n\n\n<li><strong>Commande d&#039;enregistrement<\/strong>: Ajoute une commande (<code>\/toggleTimeSync<\/code>) que les joueurs peuvent utiliser pour activer ou d\u00e9sactiver la synchronisation.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-resource-manifest-fxmanifest-lua\">Cr\u00e9ation du manifeste de ressources (<code>fxmanifest.lua<\/code>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque ressource FiveM n\u00e9cessite un fichier manifeste qui d\u00e9finit ses m\u00e9tadonn\u00e9es et ses d\u00e9pendances.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cr\u00e9er <code>fxmanifest.lua<\/code><\/strong>:\u00c0 l&#039;int\u00e9rieur du <code>en temps r\u00e9el<\/code> dossier, cr\u00e9ez un nouveau fichier nomm\u00e9 <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Ajoutez le code suivant \u00e0 <code>fxmanifest.lua<\/code><\/strong>: <code>fx_version &#039;cerulean&#039; jeu &#039;gta5&#039; auteur &#039;VotreNom&#039; description &#039;Script de synchronisation en temps r\u00e9el pour FiveM&#039; version &#039;1.0.0&#039; server_script &#039;server.lua&#039; client_script &#039;client.lua&#039;<\/code><\/li>\n\n\n\n<li><strong>Explication<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>version_fx<\/strong>:Sp\u00e9cifie la version du manifeste FiveM. <code>azur\u00e9<\/code> est le dernier en date au moment de la r\u00e9daction.<\/li>\n\n\n\n<li><strong>jeu<\/strong>: Indique le jeu auquel la ressource est destin\u00e9e (<code>gta5<\/code>).<\/li>\n\n\n\n<li><strong>auteur, description, version<\/strong>: M\u00e9tadonn\u00e9es sur votre ressource.<\/li>\n\n\n\n<li><strong>script_serveur et script_client<\/strong>:Sp\u00e9cifie les scripts serveur et client \u00e0 charger.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"starting-the-resource-on-your-server\">D\u00e9marrer la ressource sur votre serveur<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Modifier la configuration de votre serveur<\/strong>:Ouvrez le fichier de configuration de votre serveur, g\u00e9n\u00e9ralement nomm\u00e9 <code>serveur.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Ajouter la ressource \u00e0 la configuration<\/strong>:Ajoutez la ligne suivante pour garantir la <code>en temps r\u00e9el<\/code> la ressource commence par le serveur\u00a0: rubyCode copier<code>assurer en temps r\u00e9el <\/code><strong>Note<\/strong>: Si vous utilisez <code>commencer<\/code> au lieu de <code>assurer<\/code>, vous pouvez utiliser : <code>d\u00e9marrer en temps r\u00e9el<\/code><\/li>\n\n\n\n<li><strong>Enregistrez et red\u00e9marrez votre serveur<\/strong>:Apr\u00e8s avoir enregistr\u00e9 les modifications apport\u00e9es \u00e0 <code>serveur.cfg<\/code>, red\u00e9marrez votre serveur FiveM pour charger la nouvelle ressource.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"full-resource-download\">T\u00e9l\u00e9chargement complet de la ressource<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour plus de commodit\u00e9, voici l&#039;ensemble complet des fichiers que vous devez cr\u00e9er pour le <code>en temps r\u00e9el<\/code> ressource.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-server-lua\">1. <code>serveur.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RegisterNetEvent(\"realtime:event\")\nAddEventHandler(\"realtime:event\", function()\n local hour = tonumber(os.date(\"%H\"))\n local minute = tonumber(os.date(\"%M\"))\n local second = tonumber(os.date(\"%S\"))\n TriggerClientEvent(\"realtime:event\", source, hour, minute, second)\nend)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-client-lua\">2. <code>client.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">local syncActive = true\nlocal syncThread = nil\n\n-- Fonction pour d\u00e9marrer la synchronisation\nfunction StartRealTimeSync()\n if not syncActive then\n syncActive = true\n syncThread = CreateThread(function()\n while syncActive do\n TriggerServerEvent(\"realtime:event\")\n Wait(60000) -- Attendre 1 minute avant la prochaine synchronisation\n end\n end)\n end\nend\n\n-- Fonction pour arr\u00eater la synchronisation\nfunction StopRealTimeSync()\n if syncActive then\n syncActive = false\n if syncThread then\n -- En Lua, les threads sont coop\u00e9ratifs ; d\u00e9finir syncActive \u00e0 false stoppera la boucle\n syncThread = nil\n end\n end\nend\n\nRegisterNetEvent(\"realtime:event\")\nAddEventHandler(\"realtime:event\", function(hour, minute, second)\n if syncActive then\n NetworkOverrideClockTime(hour, minute, second)\n end\nend)\n\n-- D\u00e9marrer la synchronisation au d\u00e9marrage de la ressource\nStartRealTimeSync()\n\n-- Exemple : Commande pour basculer la synchronisation\nRegisterCommand(\"toggleTimeSync\", function()\n if syncActive then\n StopRealTimeSync()\n print(\"Synchronisation en temps r\u00e9el arr\u00eat\u00e9e.\")\n else\n StartRealTimeSync()\n print(\"Synchronisation en temps r\u00e9el d\u00e9marr\u00e9e.\")\n end\nend, false)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-fxmanifest-lua\">3. <code>fxmanifest.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fx_version &#039;cerulean&#039; jeu &#039;gta5&#039; auteur &#039;VotreNom&#039; description &#039;Script de synchronisation en temps r\u00e9el pour FiveM&#039; version &#039;1.0.0&#039; server_script &#039;server.lua&#039; client_script &#039;client.lua&#039;\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Sc\u00e9nario complet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ici vous pouvez t\u00e9l\u00e9charger le script que nous venons de cr\u00e9er :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/codeload.github.com\/HiFiveM\/fivem-realtime\/zip\/refs\/heads\/main\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/github.com\/HiFiveM\/fivem-realtime\/archive\/refs\/heads\/main.zip<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/HiFiveM\/fivem-realtime\/tree\/main\/fivem-realtime\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/github.com\/HiFiveM\/fivem-realtime\/tree\/main\/fivem-realtime\" rel=\"noreferrer noopener nofollow\">Github<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous avez cr\u00e9\u00e9 avec succ\u00e8s une ressource FiveM qui synchronise l'horloge du jeu avec l'heure r\u00e9elle. Ce script ajoute une zone de jeu en s'assurant que l'environnement de jeu refl\u00e8te l'heure r\u00e9elle, ajoutant une couche de r\u00e9alisme pour les joueurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Vous pouvez personnaliser davantage le script en ajustant les intervalles de synchronisation, en ajoutant des commandes suppl\u00e9mentaires ou en l&#039;int\u00e9grant \u00e0 d&#039;autres fonctionnalit\u00e9s du serveur.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N&#039;h\u00e9sitez pas \u00e0 d\u00e9velopper cette base pour l&#039;adapter aux besoins uniques de votre serveur\u00a0!<\/p>","protected":false},"excerpt":{"rendered":"<p>FiveM Real Time Sync synchronise l'horloge du jeu avec l'heure r\u00e9elle et inclut des commandes de d\u00e9marrage et d'arr\u00eat.<\/p>","protected":false},"author":1,"featured_media":193436,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2297,2298,2340],"tags":[3001,2928,3000],"class_list":["post-158437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free","category-scripts","category-lua-scripting","tag-fivem-script","tag-free","tag-free-script"],"_links":{"self":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/158437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/comments?post=158437"}],"version-history":[{"count":3,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"predecessor-version":[{"id":212559,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/158437\/revisions\/212559"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/media\/193436"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/media?parent=158437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/categories?post=158437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/tags?post=158437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}