FiveM Real-Time Sync – Mod FiveM Gratuito

Sincronizzazione in tempo reale FiveM

Questo tutorial ti guiderà nella creazione di uno script FiveM che sincronizza l'orologio di gioco con l'ora reale. Questo garantisce che l'ambiente di gioco rifletta l'ora reale, aumentando il realismo per i giocatori.

Tratteremo sia la scrittura di script lato server che lato client, aggiungendo funzionalità per avviare e arrestare la sincronizzazione e configurando le risorse per il tuo server FiveM.


Prerequisiti

Prima di iniziare, assicurati di avere quanto segue:

  • Accesso al server FiveM: Devi avere accesso amministrativo al tuo server FiveM per aggiungere script.
  • Conoscenza di base di Lua: La familiarità con la programmazione Lua ti aiuterà a comprendere e personalizzare lo script.
  • Editor di testo: Software come Visual Studio Code, Sublime Text o Notepad++ per la modifica dei file di script.

Impostazione della cartella delle risorse

  1. Vai alla directory delle tue risorse:Individuare il resources cartella nella directory del server FiveM. In genere si trova in: bashCode copiayour-fivem-server-folder/resources/
  2. Crea una nuova cartella di risorse:All'interno del resources cartella, crea una nuova cartella denominata realtimeCopia .bashCodeyour-fivem-server-folder/resources/realtime/
  3. Vai a realtime Cartella:Questa cartella conterrà tutti gli script e i file di configurazione necessari per la sincronizzazione in tempo reale.

Creazione dello script lato server (server.lua)

  1. Creare server.lua:All'interno del realtime cartella, crea un nuovo file denominato server.lua.
  2. Aggiungere il seguente codice a server.lua:luaCodice copiatoRegisterNetEvent("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) Spiegazione:
    • RegisterNetEvent: Registra un evento di rete denominato realtime:event.
    • Aggiungi gestore eventi: Definisce cosa succede quando il realtime:event viene attivato.
    • os.date: Recupera l'ora corrente del sistema (ora, minuto, secondo).
    • TriggerClientEvent: Invia i dati temporali al client che ha attivato l'evento.

Creazione dello script lato client (client.lua)

  1. Creare client.lua:All'interno del realtime cartella, crea un nuovo file denominato client.lua.
  2. Aggiungere il seguente codice a client.lua:luaCodice copiato-- Set the duration of one in-game minute in milliseconds SetMillisecondsPerGameMinute(60000) -- 60,000 ms = 1 real-world minute RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Trigger the server event to initiate synchronization TriggerServerEvent("realtime:event") Spiegazione:
    • Imposta millisecondi per minuto di partita: Definisce la durata di un minuto di gioco. Impostandolo su 60000 fa sì che 1 minuto di gioco equivalga a 1 minuto nel mondo reale.
    • RegisterNetEvent e AddEventHandler: Ascolta il realtime:event dal server e aggiorna di conseguenza l'orologio di gioco.
    • NetworkOverrideClockTime: Sostituisce l'orologio di gioco con l'ora reale ricevuta dal server.
    • TriggerServerEvent: Avvia la sincronizzazione attivando l'evento del server.

Aggiunta di una funzionalità di arresto

Per consentire l'attivazione e la disattivazione della sincronizzazione in tempo reale, aggiungeremo funzioni per avviare e arrestare la sincronizzazione.

  1. Aggiornamento client.lua con funzionalità di arresto:luaCodice copiatolocal syncActive = true local syncThread = nil -- Function to start synchronization function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Wait for 1 minute before next sync end end) end end -- Function to stop synchronization function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- In Lua, there's no direct way to kill a thread. -- Using a flag to exit the loop effectively stops the thread. 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 synchronization on resource start StartRealTimeSync() -- Example: Command to toggle synchronization RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Real-time synchronization stopped.") else StartRealTimeSync() print("Real-time synchronization started.") end end, false) Spiegazione:
    • sincronizzazioneAttiva: Flag per determinare se la sincronizzazione è attiva.
    • Avvia sincronizzazione in tempo reale: Avvia un ciclo che richiede aggiornamenti orari al server ogni minuto.
    • Arresta la sincronizzazione in tempo reale: Interrompe la sincronizzazione impostando il flag su false.
    • RegisterCommand: Aggiunge un comando (/toggleTimeSync) che i giocatori possono utilizzare per attivare o disattivare la sincronizzazione.

Creazione del manifesto delle risorse (fxmanifest.lua)

Ogni risorsa FiveM richiede un file manifest che ne definisce i metadati e le dipendenze.

  1. Creare fxmanifest.lua:All'interno del realtime cartella, crea un nuovo file denominato fxmanifest.lua.
  2. Aggiungere il seguente codice a fxmanifest.lua: fx_version 'cerulean' game 'gta5' author 'YourName' description 'Real-Time Synchronization Script for FiveM' version '1.0.0' server_script 'server.lua' client_script 'client.lua'
  3. Spiegazione:
    • versione fx: Specifica la versione del manifesto FiveM. cerulean è l'ultima disponibile al momento della scrittura.
    • gioco: Indica il gioco a cui è destinata la risorsa (gta5).
    • autore, descrizione, versione: Metadati sulla tua risorsa.
    • script_server e script_client: Specifica gli script del server e del client da caricare.

Avvio della risorsa sul server

  1. Modifica la configurazione del tuo server:Apri il file di configurazione del tuo server, in genere denominato server.cfg.
  2. Aggiungere la risorsa alla configurazione:Aggiungere la seguente riga per garantire che realtime la risorsa inizia con il server:rubyCode copiaensure realtime Nota: Se stai usando start invece di ensure, puoi usare: start realtime
  3. Salva e riavvia il tuo server:Dopo aver salvato le modifiche a server.cfg, riavvia il server FiveM per caricare la nuova risorsa.

Scarica la risorsa completa

Per comodità, ecco il set completo dei file che devi creare per il realtime risorsa.

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

-- Function to start synchronization
function StartRealTimeSync()
 if not syncActive then
 syncActive = true
 syncThread = CreateThread(function()
 while syncActive do
 TriggerServerEvent("realtime:event")
 Wait(60000) -- Wait for 1 minute before next sync
 end
 end)
 end
end

-- Function to stop synchronization
function StopRealTimeSync()
 if syncActive then
 syncActive = false
 if syncThread then
 -- In Lua, threads are cooperative; setting syncActive to false will stop the loop
 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 synchronization on resource start
StartRealTimeSync()

-- Example: Command to toggle synchronization
RegisterCommand("toggleTimeSync", function()
 if syncActive then
 StopRealTimeSync()
 print("Real-time synchronization stopped.")
 else
 StartRealTimeSync()
 print("Real-time synchronization started.")
 end
end, false)

3. fxmanifest.lua

fx_version 'cerulean'
game 'gta5'

author 'YourName'
description 'Real-Time Synchronization Script for FiveM'
version '1.0.0'

server_script 'server.lua'
client_script 'client.lua'

Script completo

Qui puoi scaricare lo script che abbiamo appena creato:

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

Github

Hai creato con successo una risorsa FiveM che sincronizza l'orologio di gioco con l'ora reale. Questo script aggiunge un'area di gioco assicurando che l'ambiente di gioco rifletta l'ora attuale, aggiungendo un livello di realismo per i giocatori.

È possibile personalizzare ulteriormente lo script regolando gli intervalli di sincronizzazione, aggiungendo altri comandi o integrandolo con altre funzionalità del server.

Sentiti libero di ampliare questa base per adattarla alle esigenze specifiche del tuo server!

Lascia un commento