FiveM Real-Time Sync – Free FiveM Mods
Dieses Tutorial führt Sie durch die Erstellung eines FiveM-Skripts, das die Uhr im Spiel mit der realen Zeit synchronisiert. Dadurch wird sichergestellt, dass die Spielumgebung die tatsächliche Zeit widerspiegelt, was den Realismus für die Spieler erhöht.
Wir behandeln sowohl serverseitiges als auch clientseitiges Scripting, fügen Funktionen zum Starten und Stoppen der Synchronisierung hinzu und richten die Ressource für Ihren FiveM-Server ein.
Inhaltsverzeichnis
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- FiveM-Serverzugriff: Sie benötigen Administratorzugriff auf Ihr FiveM-Server zum Hinzufügen von Skripten.
- Grundkenntnisse in Lua: Kenntnisse im Lua-Scripting helfen Ihnen, das Skript zu verstehen und anzupassen.
- Texteditor: Software wie Visual Studio Code, Sublime Text oder Notepad++ zum Bearbeiten von Skriptdateien.
Einrichten des Ressourcenordners
- Navigieren Sie zu Ihrem Ressourcenverzeichnis:Suchen Sie die
RessourcenOrdner in Ihrem FiveM-Serververzeichnis. Dieser befindet sich normalerweise unter:bashCode kopierenIhr-fivem-Server-Ordner/Ressourcen/ - Einen neuen Ressourcenordner erstellen:Im Inneren des
RessourcenOrdner, erstellen Sie einen neuen Ordner mit dem NamenEchtzeit.bashCode kopierenIhr fivem-Serverordner/Ressourcen/Echtzeit/ - Navigieren Sie zum
EchtzeitOrdner:Dieser Ordner enthält alle erforderlichen Skripte und Konfigurationsdateien für die Echtzeitsynchronisierung.
Erstellen des serverseitigen Skripts (server.lua)
- Erstellen
server.lua:Im Inneren desEchtzeitOrdner, erstellen Sie eine neue Datei mit dem Namenserver.lua. - Fügen Sie den folgenden Code hinzu zu
server.lua:luaCode kopierenRegisterNetEvent("Echtzeit:Ereignis") AddEventHandler("Echtzeit:Ereignis", Funktion() lokale Stunde = bisZahl(os.date("%H")) lokale Minute = bisZahl(os.date("%M")) lokale Sekunde = bisZahl(os.date("%S")) TriggerClientEvent("Echtzeit:Ereignis", Quelle, Stunde, Minute, Sekunde) Ende)Erläuterung:- RegisterNetEvent: Registriert ein Netzwerkereignis namens
Echtzeit: Ereignis. - Ereignishandler hinzufügen: Definiert, was passiert, wenn der
Echtzeit: Ereigniswird ausgelöst. - os.date: Ruft die aktuelle Systemzeit (Stunde, Minute, Sekunde) ab.
- TriggerClientEvent: Sendet die Zeitdaten an den Client, der das Ereignis ausgelöst hat.
- RegisterNetEvent: Registriert ein Netzwerkereignis namens
Erstellen des clientseitigen Skripts (client.lua)
- Erstellen
client.lua:Im Inneren desEchtzeitOrdner, erstellen Sie eine neue Datei mit dem Namenclient.lua. - Fügen Sie den folgenden Code hinzu zu
client.lua:luaCode kopieren-- Legt die Dauer einer Spielminute in Millisekunden fest. SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 Minute in der realen Welt. RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Löst das Serverereignis aus, um die Synchronisierung zu starten. TriggerServerEvent("realtime:event")Erläuterung:- SetzeMillisekundenProSpielMinute: Definiert, wie lange eine Spielminute dauert. Wenn Sie es auf
60000macht 1 Spielminute gleich 1 Minute in der realen Welt. - RegisterNetEvent und AddEventHandler: Hört auf die
Echtzeit: Ereignisvom Server und aktualisiert die Uhr im Spiel entsprechend. - NetzwerküberschreibungUhrzeit: Überschreibt die Uhr im Spiel, um sie an die vom Server empfangene Echtzeit anzupassen.
- TriggerServerEvent: Initiiert die Synchronisierung durch Auslösen des Serverereignisses.
- SetzeMillisekundenProSpielMinute: Definiert, wie lange eine Spielminute dauert. Wenn Sie es auf
Hinzufügen einer Stoppfunktion
Um das Ein- und Ausschalten der Echtzeitsynchronisierung zu ermöglichen, fügen wir Funktionen zum Starten und Stoppen der Synchronisierung hinzu.
- Aktualisieren
client.luamit Stop-Funktionalität:luaCode kopierenlocal syncActive = true local syncThread = nil – Funktion zum Starten der Synchronisierungsfunktion StartRealTimeSync(), wenn nicht syncActive, dann syncActive = true syncThread = CreateThread(function(), während syncActive TriggerServerEvent("realtime:event") ausführt. Wait(60000) – 1 Minute vor dem nächsten Synchronisierungsende warten (Ende, Ende) Ende (Ende, Ende) – Funktion zum Stoppen der Synchronisierungsfunktion StopRealTimeSync(), wenn syncActive, dann syncActive = false, wenn syncThread, dann – In Lua gibt es keine direkte Möglichkeit, einen Thread zu beenden. – Die Verwendung eines Flags zum Verlassen der Schleife stoppt den Thread effektiv. syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", 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("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Echtzeitsynchronisierung gestoppt.") else StartRealTimeSync() print("Echtzeitsynchronisierung gestartet.") end end, false)Erläuterung:- synchronisierenAktiv: Ein Flag, um zu bestimmen, ob die Synchronisierung aktiv ist.
- StartRealTimeSync: Initiiert eine Schleife, die jede Minute Zeitaktualisierungen vom Server anfordert.
- Stoppen Sie RealTimeSync: Stoppt die Synchronisierung, indem das Flag auf „False“ gesetzt wird.
- RegisterCommand: Fügt einen Befehl hinzu (
/Zeitsynchronisierung umschalten), mit dem Spieler die Synchronisierung ein- oder ausschalten können.
Erstellen des Ressourcenmanifests (fxmanifest.lua)
Jede FiveM-Ressource erfordert eine Manifestdatei, die ihre Metadaten und Abhängigkeiten definiert.
- Erstellen
fxmanifest.lua:Im Inneren desEchtzeitOrdner, erstellen Sie eine neue Datei mit dem Namenfxmanifest.lua. - Fügen Sie den folgenden Code hinzu zu
fxmanifest.lua:fx_version „cerulean“ Spiel „gta5“ Autor „IhrName“ Beschreibung „Echtzeit-Synchronisierungsskript für FiveM“ Version „1.0.0“ Server-Skript „server.lua“ Client-Skript „client.lua“ - Erläuterung:
- fx_version: Gibt die Version des FiveM-Manifests an.
himmelblauist der neueste Stand zum Zeitpunkt des Schreibens. - Spiel: Gibt an, für welches Spiel die Ressource bestimmt ist (
gta5). - Autor, Beschreibung, Version: Metadaten zu Ihrer Ressource.
- Server-Skript und Client-Skript: Gibt die zu ladenden Server- und Client-Skripte an.
- fx_version: Gibt die Version des FiveM-Manifests an.
Starten der Ressource auf Ihrem Server
- Bearbeiten Sie Ihre Serverkonfiguration:Öffnen Sie die Konfigurationsdatei Ihres Servers, normalerweise mit dem Namen
server.cfg. - Hinzufügen der Ressource zur Konfiguration:Fügen Sie die folgende Zeile hinzu, um sicherzustellen, dass
EchtzeitRessource beginnt mit dem Server:rubyCode kopierenEchtzeit gewährleistenNotiz: Wenn SieStartanstattsicherstellenkönnen Sie Folgendes verwenden:in Echtzeit starten - Speichern und starten Sie Ihren Server neu:Nach dem Speichern der Änderungen an
server.cfg, starten Sie Ihren FiveM-Server neu, um die neue Ressource zu laden.
Vollständige Ressourcen zum Download
Der Einfachheit halber finden Sie hier den vollständigen Satz an Dateien, die Sie für die Echtzeit Ressource.
1. server.lua
RegisterNetEvent("Echtzeit:Ereignis") AddEventHandler("Echtzeit:Ereignis", Funktion() lokale Stunde = bisZahl(os.date("%H")) lokale Minute = bisZahl(os.date("%M")) lokale Sekunde = bisZahl(os.date("%S")) TriggerClientEvent("Echtzeit:Ereignis", Quelle, Stunde, Minute, Sekunde) Ende)
2. client.lua
local syncActive = true local syncThread = nil – Funktion zum Starten der Synchronisierungsfunktion StartRealTimeSync(), wenn nicht syncActive, dann syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) – Warten Sie 1 Minute vor dem nächsten Synchronisierungsende (Ende) Ende (Ende) – Funktion zum Stoppen der Synchronisierungsfunktion StopRealTimeSync(), wenn syncActive, dann syncActive = false, wenn syncThread, dann – In Lua sind Threads kooperativ; Wenn Sie syncActive auf „false“ setzen, wird die Schleife gestoppt. syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Starten Sie die Synchronisierung beim Start der Ressource. StartRealTimeSync() -- Beispiel: Befehl zum Umschalten der Synchronisierung. RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Echtzeitsynchronisierung gestoppt.") else StartRealTimeSync() print("Echtzeitsynchronisierung gestartet.") end end, false)
3. fxmanifest.lua
fx_version „cerulean“ Spiel „gta5“ Autor „IhrName“ Beschreibung „Echtzeit-Synchronisierungsskript für FiveM“ Version „1.0.0“ Server-Skript „server.lua“ Client-Skript „client.lua“
Vollständiges Skript
Hier können Sie das soeben erstellte Skript herunterladen:
https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip
Sie haben erfolgreich eine FiveM-Ressource erstellt, die die Spieluhr mit der Echtzeit synchronisiert. Dieses Skript verbessert das Spielerlebnis, indem es sicherstellt, dass die Spielumgebung die tatsächliche Zeit widerspiegelt und den Spielern so mehr Realismus verleiht.
Sie können das Skript weiter anpassen, indem Sie die Synchronisierungsintervalle anpassen, weitere Befehle hinzufügen oder es in andere Serverfunktionen integrieren.
Sie können diese Grundlage gerne erweitern, um sie an die individuellen Anforderungen Ihres Servers anzupassen!






