{"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":"fivem-echtzeitsynchronisierung","status":"publish","type":"post","link":"https:\/\/fivemx.com\/de\/fivem-echtzeitsynchronisierung\/","title":{"rendered":"FiveM Echtzeit-Synchronisation"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Dieser Leitfaden f\u00fchrt dich durch die Erstellung eines FiveM-Skripts, das die Ingame-Uhr mit der realen Weltzeit synchronisiert. Dadurch wird sichergestellt, dass die Spielumgebung die tats\u00e4chliche Zeit widerspiegelt, was die Realit\u00e4t f\u00fcr die Spieler erh\u00f6ht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir behandeln sowohl serverseitige als auch clientseitige Skripting, f\u00fcgen Funktionen zum Starten und Stoppen der Synchronisation hinzu und richten die Ressource f\u00fcr deinen FiveM-Server ein.<\/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\">Voraussetzungen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor du beginnst, stelle sicher, dass du Folgendes hast:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>FiveM-Serverzugriff<\/strong>: Du ben\u00f6tigst administrative Zugriffsrechte f\u00fcr deinen <a href=\"https:\/\/fivemx.com\/de\/konvertieren-von-fivem-skripten\/\" title=\"Konvertieren von FiveM-Skripten \u2013 ESX, QBCore, QBOX (Framework-Handbuch)\" data-wpil-monitor-id=\"1661\">FiveM-Server zum Hinzuf\u00fcgen von Skripten<\/a>.<\/li>\n\n\n\n<li><strong>Grundkenntnisse in Lua<\/strong>: Kenntnisse in Lua-Skripting helfen dir, das Skript zu verstehen und anzupassen.<\/li>\n\n\n\n<li><strong>Texteditor<\/strong>: Software wie Visual Studio Code, Sublime Text oder Notepad++ zum Bearbeiten von Skriptdateien.<\/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\">Einrichten des Ressourcenordners<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Navigiere zu deinem Ressourcenverzeichnis<\/strong>:Lokaliere die <code>Ressourcen<\/code> Ordner in deinem FiveM-Serververzeichnis. Dieser befindet sich normalerweise unter:bashCode kopieren<code>Ihr-fivem-Server-Ordner\/Ressourcen\/<\/code><\/li>\n\n\n\n<li><strong>Einen neuen Ressourcenordner erstellen<\/strong>:Im Inneren des <code>Ressourcen<\/code> Ordner, erstelle einen neuen Ordner mit dem Namen <code>Echtzeit<\/code>.bashCode kopieren<code>Ihr fivem-Serverordner\/Ressourcen\/Echtzeit\/<\/code><\/li>\n\n\n\n<li><strong>Navigiere zu den <code>Echtzeit<\/code> Ordner<\/strong>:Dieser Ordner enth\u00e4lt alle erforderlichen Skripte und Konfigurationsdateien f\u00fcr die Echtzeitsynchronisierung.<\/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\">Erstellen des serverseitigen Skripts (<code>server.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Erstellen <code>server.lua<\/code><\/strong>:Im Inneren des <code>Echtzeit<\/code> Ordner, erstelle eine neue Datei mit dem Namen <code>server.lua<\/code>.<\/li>\n\n\n\n<li><strong>F\u00fcge den folgenden Code zu <code>server.lua<\/code><\/strong>:luaCode kopieren<code>RegisterNetEvent(&quot;Echtzeit:Ereignis&quot;) AddEventHandler(&quot;Echtzeit:Ereignis&quot;, Funktion() lokale Stunde = bisZahl(os.date(&quot;%H&quot;)) lokale Minute = bisZahl(os.date(&quot;%M&quot;)) lokale Sekunde = bisZahl(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;Echtzeit:Ereignis&quot;, Quelle, Stunde, Minute, Sekunde) Ende) <\/code><strong>Erl\u00e4uterung<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegisterNetEvent<\/strong>: Registriert ein Netzwerkereignis namens <code>Echtzeit: Ereignis<\/code>.<\/li>\n\n\n\n<li><strong>Ereignishandler hinzuf\u00fcgen<\/strong>: Definiert, was passiert, wenn der <code>Echtzeit: Ereignis<\/code> wird ausgel\u00f6st.<\/li>\n\n\n\n<li><strong>os.date<\/strong>: Ruft die aktuelle Systemzeit (Stunde, Minute, Sekunde) ab.<\/li>\n\n\n\n<li><strong>TriggerClientEvent<\/strong>: Sendet die Zeitdaten an den Client, der das Ereignis ausgel\u00f6st hat.<\/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\">Erstellen des clientseitigen Skripts (<code>client.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Erstellen <code>client.lua<\/code><\/strong>:Im Inneren des <code>Echtzeit<\/code> Ordner, erstelle eine neue Datei mit dem Namen <code>client.lua<\/code>.<\/li>\n\n\n\n<li><strong>F\u00fcge den folgenden Code zu <code>client.lua<\/code><\/strong>:luaCode kopieren<code>-- Legt die Dauer einer Spielminute in Millisekunden fest. SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 Minute in der realen Welt. RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- L\u00f6st das Serverereignis aus, um die Synchronisierung zu starten. TriggerServerEvent(&quot;realtime:event&quot;) <\/code><strong>Erl\u00e4uterung<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>SetzeMillisekundenProSpielMinute<\/strong>: Definiert, wie lange eine In-Game-Minute dauert. Setze es auf <code>60000<\/code> macht 1 Spielminute gleich 1 Minute in der realen Welt.<\/li>\n\n\n\n<li><strong>RegisterNetEvent und AddEventHandler<\/strong>: H\u00f6rt auf die <code>Echtzeit: Ereignis<\/code> vom Server und aktualisiert die Uhr im Spiel entsprechend.<\/li>\n\n\n\n<li><strong>Netzwerk\u00fcberschreibungUhrzeit<\/strong>: \u00dcberschreibt die Uhr im Spiel, um sie an die vom Server empfangene Echtzeit anzupassen.<\/li>\n\n\n\n<li><strong>TriggerServerEvent<\/strong>: Initiiert die Synchronisierung durch Ausl\u00f6sen des Serverereignisses.<\/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\">Hinzuf\u00fcgen einer Stoppfunktion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Um das Ein- und Ausschalten der Echtzeitsynchronisierung zu erm\u00f6glichen, f\u00fcgen wir Funktionen zum Starten und Stoppen der Synchronisierung hinzu.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Aktualisieren <code>client.lua<\/code> mit Stop-Funktionalit\u00e4t<\/strong>:luaCode kopieren<code>local syncActive = true local syncThread = nil \u2013 Funktion zum Starten der Synchronisierungsfunktion StartRealTimeSync(), wenn nicht syncActive, dann syncActive = true syncThread = CreateThread(function(), w\u00e4hrend syncActive TriggerServerEvent(&quot;realtime:event&quot;) ausf\u00fchrt. Wait(60000) \u2013 1 Minute vor dem n\u00e4chsten Synchronisierungsende warten (Ende, Ende) Ende (Ende, Ende) \u2013 Funktion zum Stoppen der Synchronisierungsfunktion StopRealTimeSync(), wenn syncActive, dann syncActive = false, wenn syncThread, dann \u2013 In Lua gibt es keine direkte M\u00f6glichkeit, einen Thread zu beenden. \u2013 Die Verwendung eines Flags zum Verlassen der Schleife stoppt den Thread effektiv. 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) -- Synchronisierung beim Ressourcenstart starten StartRealTimeSync() -- Beispiel: Befehl zum Umschalten der Synchronisierung RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Echtzeitsynchronisierung gestoppt.&quot;) else StartRealTimeSync() print(&quot;Echtzeitsynchronisierung gestartet.&quot;) end end, false) <\/code><strong>Erl\u00e4uterung<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>synchronisierenAktiv<\/strong>: Ein Flag, um zu bestimmen, ob die Synchronisierung aktiv ist.<\/li>\n\n\n\n<li><strong>StartRealTimeSync<\/strong>: Initiiert eine Schleife, die jede Minute Zeitaktualisierungen vom Server anfordert.<\/li>\n\n\n\n<li><strong>StopRealTimeSync<\/strong>: Stoppt die Synchronisierung, indem das Flag auf \u201eFalse\u201c gesetzt wird.<\/li>\n\n\n\n<li><strong>RegisterCommand<\/strong>: F\u00fcgt einen Befehl hinzu (<code>\/Zeitsynchronisierung umschalten<\/code>), mit dem Spieler die Synchronisierung ein- oder ausschalten k\u00f6nnen.<\/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\">Erstellen des Ressourcenmanifests (<code>fxmanifest.lua<\/code>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jede FiveM-Ressource erfordert eine Manifestdatei, die ihre Metadaten und Abh\u00e4ngigkeiten definiert.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Erstellen <code>fxmanifest.lua<\/code><\/strong>:Im Inneren des <code>Echtzeit<\/code> Ordner, erstelle eine neue Datei mit dem Namen <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>F\u00fcge den folgenden Code zu <code>fxmanifest.lua<\/code><\/strong>: <code>fx_version \u201ecerulean\u201c Spiel \u201egta5\u201c Autor \u201eIhrName\u201c Beschreibung \u201eEchtzeit-Synchronisierungsskript f\u00fcr FiveM\u201c Version \u201e1.0.0\u201c Server-Skript \u201eserver.lua\u201c Client-Skript \u201eclient.lua\u201c<\/code><\/li>\n\n\n\n<li><strong>Erl\u00e4uterung<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>fx_version<\/strong>: Gibt die Version des FiveM-Manifests an. <code>himmelblau<\/code> ist der neueste Stand zum Zeitpunkt des Schreibens.<\/li>\n\n\n\n<li><strong>Spiel<\/strong>: Gibt an, f\u00fcr welches Spiel die Ressource bestimmt ist (<code>gta5<\/code>).<\/li>\n\n\n\n<li><strong>Autor, Beschreibung, Version<\/strong>: Metadaten \u00fcber deine Ressource.<\/li>\n\n\n\n<li><strong>Server-Skript und Client-Skript<\/strong>: Gibt die zu ladenden Server- und Client-Skripte an.<\/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\">Starten des Ressourcen auf deinem Server<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bearbeite deine Serverkonfiguration<\/strong>:\u00d6ffne die Konfigurationsdatei deines Servers, die typischerweise den Namen <code>server.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Hinzuf\u00fcgen der Ressource zur Konfiguration<\/strong>: F\u00fcge die folgende Zeile hinzu, um sicherzustellen, dass <code>Echtzeit<\/code> Ressource beginnt mit dem Server:rubyCode kopieren<code>Echtzeit gew\u00e4hrleisten <\/code><strong>Notiz<\/strong>: Wenn du <code>Start<\/code> anstatt <code>sicherstellen<\/code>, kannst du Folgendes verwenden: <code>in Echtzeit starten<\/code><\/li>\n\n\n\n<li><strong>Speichere und starte deinen Server neu<\/strong>:Nach dem Speichern der \u00c4nderungen an <code>server.cfg<\/code>, starte deinen FiveM-Server neu, um die neue Ressource zu laden.<\/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\">Vollst\u00e4ndige Ressourcen zum Download<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr deine Bequemlichkeit, hier ist der vollst\u00e4ndige Satz an Dateien, die du f\u00fcr die Erstellung ben\u00f6tigst. <code>Echtzeit<\/code> Ressource.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-server-lua\">1. <code>server.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-- Funktion zum Starten der 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) -- Warte 1 Minute vor der n\u00e4chsten Synchronisation\n end\n end)\n end\nend\n\n-- Funktion zum Stoppen der Synchronisation\nfunction StopRealTimeSync()\n if syncActive then\n syncActive = false\n if syncThread then\n -- In Lua sind Threads kooperativ; das Setzen von syncActive auf false stoppt die Schleife\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-- Synchronisation beim Ressourcenstart starten\nStartRealTimeSync()\n\n-- Beispiel: Befehl zum Umschalten der Synchronisation\nRegisterCommand(\"toggleTimeSync\", function()\n if syncActive then\n StopRealTimeSync()\n print(\"Echtzeit-Synchronisation gestoppt.\")\n else\n StartRealTimeSync()\n print(\"Echtzeit-Synchronisation gestartet.\")\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 \u201ecerulean\u201c Spiel \u201egta5\u201c Autor \u201eIhrName\u201c Beschreibung \u201eEchtzeit-Synchronisierungsskript f\u00fcr FiveM\u201c Version \u201e1.0.0\u201c Server-Skript \u201eserver.lua\u201c Client-Skript \u201eclient.lua\u201c\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\">Vollst\u00e4ndiges Skript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hier kannst du das Skript herunterladen, das wir gerade erstellt haben:<\/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\">Du hast erfolgreich eine FiveM-Ressource erstellt, die die In-Game-Uhr mit der realen Weltzeit synchronisiert. Dieses Skript f\u00fcgt einen Gameplay-Bereich hinzu, indem es sicherstellt, dass die Spielumgebung die tats\u00e4chliche Zeit widerspiegelt und so eine zus\u00e4tzliche Realit\u00e4tsebene f\u00fcr die Spieler schafft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Du kannst das Skript weiter anpassen, indem du Synchronisationsintervalle anpasst, mehr Befehle hinzuf\u00fcgst oder es mit anderen Serverfunktionen integrierst.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fchl dich frei, diese Grundlage nach deinen Bed\u00fcrfnissen zu erweitern!<\/p>","protected":false},"excerpt":{"rendered":"<p>FiveM Real Time Sync h\u00e4lt die In-Game-Uhr mit der realen Zeit synchron und enth\u00e4lt Start- und Stopp-Steuerungen.<\/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\/de\/wp-json\/wp\/v2\/posts\/158437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/comments?post=158437"}],"version-history":[{"count":3,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"predecessor-version":[{"id":212559,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/posts\/158437\/revisions\/212559"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/media\/193436"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/media?parent=158437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/categories?post=158437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/de\/wp-json\/wp\/v2\/tags?post=158437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}