Spare 20 % mit WELCOMEAngebote ansehen
FiveM Echtzeit-Synchronisierung – Kostenlose FiveM-Mods

FiveM Echtzeit-Synchronisation

Dieser Leitfaden führt dich durch die Erstellung eines FiveM-Skripts, das die Ingame-Uhr mit der realen Weltzeit synchronisiert. Dadurch wird sichergestellt, dass die Spielumgebung die tatsächliche Zeit widerspiegelt, was die Realität für die Spieler erhöht.

Wir behandeln sowohl serverseitige als auch clientseitige Skripting, fügen Funktionen zum Starten und Stoppen der Synchronisation hinzu und richten die Ressource für deinen FiveM-Server ein.


Voraussetzungen

Bevor du beginnst, stelle sicher, dass du Folgendes hast:

  • FiveM-Serverzugriff: Du benötigst administrative Zugriffsrechte für deinen FiveM-Server zum Hinzufügen von Skripten.
  • Grundkenntnisse in Lua: Kenntnisse in Lua-Skripting helfen dir, das Skript zu verstehen und anzupassen.
  • Texteditor: Software wie Visual Studio Code, Sublime Text oder Notepad++ zum Bearbeiten von Skriptdateien.

Einrichten des Ressourcenordners

  1. Navigiere zu deinem Ressourcenverzeichnis:Lokaliere die Ressourcen Ordner in deinem FiveM-Serververzeichnis. Dieser befindet sich normalerweise unter:bashCode kopierenIhr-fivem-Server-Ordner/Ressourcen/
  2. Einen neuen Ressourcenordner erstellen:Im Inneren des Ressourcen Ordner, erstelle einen neuen Ordner mit dem Namen Echtzeit.bashCode kopierenIhr fivem-Serverordner/Ressourcen/Echtzeit/
  3. Navigiere zu den Echtzeit Ordner:Dieser Ordner enthält alle erforderlichen Skripte und Konfigurationsdateien für die Echtzeitsynchronisierung.

Erstellen des serverseitigen Skripts (server.lua)

  1. Erstellen server.lua:Im Inneren des Echtzeit Ordner, erstelle eine neue Datei mit dem Namen server.lua.
  2. Füge den folgenden Code 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: Ereignis wird 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.

Erstellen des clientseitigen Skripts (client.lua)

  1. Erstellen client.lua:Im Inneren des Echtzeit Ordner, erstelle eine neue Datei mit dem Namen client.lua.
  2. Füge den folgenden Code 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 In-Game-Minute dauert. Setze es auf 60000 macht 1 Spielminute gleich 1 Minute in der realen Welt.
    • RegisterNetEvent und AddEventHandler: Hört auf die Echtzeit: Ereignis vom 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.

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.

  1. Aktualisieren client.lua mit 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.
    • StopRealTimeSync: 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.

  1. Erstellen fxmanifest.lua:Im Inneren des Echtzeit Ordner, erstelle eine neue Datei mit dem Namen fxmanifest.lua.
  2. Füge den folgenden Code 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“
  3. Erläuterung:
    • fx_version: Gibt die Version des FiveM-Manifests an. himmelblau ist der neueste Stand zum Zeitpunkt des Schreibens.
    • Spiel: Gibt an, für welches Spiel die Ressource bestimmt ist (gta5).
    • Autor, Beschreibung, Version: Metadaten über deine Ressource.
    • Server-Skript und Client-Skript: Gibt die zu ladenden Server- und Client-Skripte an.

Starten des Ressourcen auf deinem Server

  1. Bearbeite deine Serverkonfiguration:Öffne die Konfigurationsdatei deines Servers, die typischerweise den Namen server.cfg.
  2. Hinzufügen der Ressource zur Konfiguration: Füge die folgende Zeile hinzu, um sicherzustellen, dass Echtzeit Ressource beginnt mit dem Server:rubyCode kopierenEchtzeit gewährleisten Notiz: Wenn du Start anstatt sicherstellen, kannst du Folgendes verwenden: in Echtzeit starten
  3. Speichere und starte deinen Server neu:Nach dem Speichern der Änderungen an server.cfg, starte deinen FiveM-Server neu, um die neue Ressource zu laden.

Vollständige Ressourcen zum Download

Für deine Bequemlichkeit, hier ist der vollständige Satz an Dateien, die du für die Erstellung benötigst. Echtzeit Ressource.

1. server.lua

RegisterNetEvent("realtime:event")
AddEventHandler("realtime:event", function()
 local hour = tonumber(os.date("%H"))
 local minute = tonumber(os.date("%M"))
 local second = tonumber(os.date("%S"))
 TriggerClientEvent("realtime:event", source, hour, minute, second)
end)

2. client.lua

local syncActive = true
local syncThread = nil

-- Funktion zum Starten der Synchronisation
function StartRealTimeSync()
 if not syncActive then
 syncActive = true
 syncThread = CreateThread(function()
 while syncActive do
 TriggerServerEvent("realtime:event")
 Wait(60000) -- Warte 1 Minute vor der nächsten Synchronisation
 end
 end)
 end
end

-- Funktion zum Stoppen der Synchronisation
function StopRealTimeSync()
 if syncActive then
 syncActive = false
 if syncThread then
 -- In Lua sind Threads kooperativ; das Setzen von syncActive auf false stoppt die Schleife
 syncThread = nil
 end
 end
end

RegisterNetEvent("realtime:event")
AddEventHandler("realtime:event", function(hour, minute, second)
 if syncActive then
 NetworkOverrideClockTime(hour, minute, second)
 end
end)

-- Synchronisation beim Ressourcenstart starten
StartRealTimeSync()

-- Beispiel: Befehl zum Umschalten der Synchronisation
RegisterCommand("toggleTimeSync", function()
 if syncActive then
 StopRealTimeSync()
 print("Echtzeit-Synchronisation gestoppt.")
 else
 StartRealTimeSync()
 print("Echtzeit-Synchronisation 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 kannst du das Skript herunterladen, das wir gerade erstellt haben:

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

Github

Du hast erfolgreich eine FiveM-Ressource erstellt, die die In-Game-Uhr mit der realen Weltzeit synchronisiert. Dieses Skript fügt einen Gameplay-Bereich hinzu, indem es sicherstellt, dass die Spielumgebung die tatsächliche Zeit widerspiegelt und so eine zusätzliche Realitätsebene für die Spieler schafft.

Du kannst das Skript weiter anpassen, indem du Synchronisationsintervalle anpasst, mehr Befehle hinzufügst oder es mit anderen Serverfunktionen integrierst.

Fühl dich frei, diese Grundlage nach deinen Bedürfnissen zu erweitern!

Schreibe einen Kommentar