0
Ik winkel

FiveM Real-Time-synchronisatie

FiveM Realtime-script

Deze tutorial begeleidt je bij het maken van een FiveM-script dat de in-game klok synchroniseert met de echte tijd. Dit zorgt ervoor dat de game-omgeving de werkelijke tijd weerspiegelt, wat het realisme voor spelers vergroot.

We behandelen zowel server-side als client-side scripting, voegen functionaliteit toe om de synchronisatie te starten en te stoppen en stellen de resource in voor uw FiveM-server.


Vereisten

Voordat u begint, moet u ervoor zorgen dat u het volgende bij de hand hebt:

  • FiveM-servertoegang: U hebt beheerdersrechten voor uw FiveM-server nodig om scripts toe te voegen.
  • Basiskennis van Lua:Als u bekend bent met Lua-scripting, kunt u het script beter begrijpen en aanpassen.
  • Teksteditor: Software zoals Visual Studio Code, Sublime Text of Notepad++ voor het bewerken van scriptbestanden.

De resourcemap instellen

  1. Navigeer naar uw bronnendirectory:Zoek de middelen map in uw FiveM server directory. Deze is meestal te vinden op: bashCode kopiërenuw-fivem-servermap/resources/
  2. Een nieuwe resourcemap maken:Binnen de middelen map, maak een nieuwe map met de naam realtime.bashCode kopiërenuw-fivem-servermap/resources/realtime/
  3. Navigeer naar de realtime Map:Deze map bevat alle benodigde scripts en configuratiebestanden voor de realtime synchronisatie.

Het server-side script maken (server.lua)

  1. Creëren server.lua:Binnen de realtime map, maak een nieuw bestand met de naam server.lua.
  2. Voeg de volgende code toe aan server.lua:luaCode kopiërenRegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() lokaal uur = tonumber(os.date("%H")) lokale minuut = tonumber(os.date("%M")) lokale seconde = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", bron, uur, minuut, seconde) end) Uitleg:
    • RegisterNetEvent: Registreert een netwerkgebeurtenis met de naam realtime:gebeurtenis.
    • AddEventHandler: Definieert wat er gebeurt als de realtime:gebeurtenis wordt geactiveerd.
    • os.datum: Haalt de huidige systeemtijd op (uur, minuut, seconde).
    • TriggerClientEvent: Stuurt de tijdgegevens naar de client die de gebeurtenis heeft geactiveerd.

Het client-side script maken (client.lua)

  1. Creëren client.lua:Binnen de realtime map, maak een nieuw bestand met de naam client.lua.
  2. Voeg de volgende code toe aan client.lua:luaCode kopiëren-- Stel de duur van één in-game minuut in milliseconden in SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 echte minuut RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Activeer de servergebeurtenis om de synchronisatie te starten TriggerServerEvent("realtime:event") Uitleg:
    • Stel milliseconden per spelminuut in: Definieert hoe lang een in-game minuut duurt. Instellen op 60000 maakt 1 minuut in het spel gelijk aan 1 minuut in de echte wereld.
    • RegisterNetEvent en AddEventHandler: Luistert naar de realtime:gebeurtenis van de server en past de in-game klok dienovereenkomstig aan.
    • NetwerkOverrideKlokTijd: Overschrijft de klok in het spel zodat deze overeenkomt met de werkelijke tijd die van de server wordt ontvangen.
    • TriggerServerEvent: Start de synchronisatie door de servergebeurtenis te activeren.

Een stopfunctionaliteit toevoegen

Om realtime synchronisatie in en uit te kunnen schakelen, voegen we functies toe om de synchronisatie te starten en te stoppen.

  1. Update client.lua met Stop-functionaliteit:luaCode kopiërenlocal syncActive = true local syncThread = nil -- Functie om de synchronisatiefunctie te starten StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Wacht 1 minuut voor de volgende synchronisatie end end) end end -- Functie om de synchronisatiefunctie te stoppen StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- In Lua is er geen directe manier om een thread te beëindigen. -- Het gebruiken van een vlag om de lus te verlaten, stopt de thread effectief. syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(uur, minuut, seconde) if syncActive then NetworkOverrideClockTime(uur, minuut, seconde) end end) -- Start synchronisatie bij resource start StartRealTimeSync() -- Voorbeeld: Opdracht om synchronisatie in of uit te schakelen RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Realtime synchronisatie gestopt.") else StartRealTimeSync() print("Realtime synchronisatie gestart.") end end, false) Uitleg:
    • syncActief: Een vlag om te bepalen of synchronisatie actief is.
    • StartRealTimeSync: Start een lus die elke minuut tijdupdates van de server opvraagt.
    • StopRealTimeSync: Stopt de synchronisatie door de vlag op false te zetten.
    • RegisterCommand: Voegt een opdracht toe (/toggleTijdSync) waarmee spelers de synchronisatie kunnen in- of uitschakelen.

Het resourcemanifest maken (fxmanifest.lua)

Voor elke FiveM-resource is een manifestbestand nodig waarin de metagegevens en afhankelijkheden zijn gedefinieerd.

  1. Creëren fxmanifest.lua:Binnen de realtime map, maak een nieuw bestand met de naam fxmanifest.lua.
  2. Voeg de volgende code toe aan fxmanifest.lua: fx_version 'cerulean' spel 'gta5' auteur 'UwNaam' beschrijving 'Real-Time Synchronisatie Script voor FiveM' versie '1.0.0' server_script 'server.lua' client_script 'client.lua'
  3. Uitleg:
    • fx_versie: Geeft de versie van het FiveM-manifest op. hemelsblauw is het laatste op het moment van schrijven.
    • spel: Geeft aan voor welk spel de bron is (gta5).
    • auteur, beschrijving, versie: Metagegevens over uw bron.
    • server_script en client_script: Geeft aan welke server- en clientscripts moeten worden geladen.

De resource op uw server starten

  1. Bewerk uw serverconfiguratie:Open het configuratiebestand van uw server, meestal met de naam server.cfg.
  2. Voeg de resource toe aan de configuratie:Voeg de volgende regel toe om ervoor te zorgen dat de realtime resource start met de server:rubyCode kopiërenrealtime garanderen Opmerking: Als je gebruikt start in plaats van zorgen voor, kunt u gebruiken: start realtime
  3. Opslaan en uw server opnieuw opstarten:Nadat u de wijzigingen hebt opgeslagen in server.cfg, start uw FiveM-server opnieuw op om de nieuwe resource te laden.

Volledige bron downloaden

Voor het gemak vindt u hier de complete set bestanden die u nodig hebt om te maken voor de realtime hulpbron.

1. server.lua

RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() lokaal uur = tonumber(os.date("%H")) lokale minuut = tonumber(os.date("%M")) lokale seconde = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", bron, uur, minuut, seconde) end)

2. client.lua

local syncActive = true local syncThread = nil -- Functie om de synchronisatiefunctie te starten StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Wacht 1 minuut voordat de volgende synchronisatie eindigt end) end end -- Functie om de synchronisatiefunctie te stoppen StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- In Lua werken threads samen; als u syncActive op false instelt, wordt de lus gestopt syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Start synchronisatie bij resource start StartRealTimeSync() -- Voorbeeld: Opdracht om synchronisatie in of uit te schakelen RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Realtime synchronisatie gestopt.") else StartRealTimeSync() print("Realtime synchronisatie gestart.") end end, false)

3. fxmanifest.lua

fx_version 'cerulean' spel 'gta5' auteur 'UwNaam' beschrijving 'Real-Time Synchronisatie Script voor FiveM' versie '1.0.0' server_script 'server.lua' client_script 'client.lua'

Volledig script

Hier kunt u het script downloaden dat we zojuist hebben gemaakt:

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

Github

Je hebt met succes een FiveM-resource gemaakt die de in-game klok synchroniseert met de echte tijd. Dit script verbetert de game-ervaring door ervoor te zorgen dat de game-omgeving de werkelijke tijd weerspiegelt, wat een laag realisme toevoegt voor spelers.

U kunt het script verder aanpassen door synchronisatie-intervallen aan te passen, meer opdrachten toe te voegen of het te integreren met andere serverfuncties.

U kunt deze basis gerust uitbreiden om aan de unieke behoeften van uw server te voldoen!

DELEN:

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *


Use Code BLACKFRIDAY24 for -24%
0
dagen
0
uur
0
minutes
0
seconds
nl_NLDutch
0
Jouw winkelwagen

Geen producten in de winkelwagen.