
FiveM Real-Time Sync – Free FiveM Mods
Gli script gratuiti vanno bene per controlli rapidi. Per server in produzione, confronta pacchetti server completi o script a pagamento mantenuti, in base al framework e al caso d'uso.
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.
Sommario
Prerequisiti
Prima di iniziare, assicurati di avere quanto segue:
- Accesso al server FiveM: You need administrative access to your FiveM server to add scripts.
- 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
- Vai alla directory delle tue risorse:Individuare il
risorsecartella nella directory del server FiveM. In genere si trova in: bashCode copiacartella-del-tuo-server-fivem/risorse/ - Crea una nuova cartella di risorse:All'interno del
risorsecartella, crea una nuova cartella denominatain tempo realeCopia .bashCodecartella-del-server-fivem/risorse/tempo-reale/ - Vai a
in tempo realeCartella: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)
- Creare
server.lua:All'interno delin tempo realecartella, crea un nuovo file denominatoserver.lua. - Aggiungere il seguente codice a
server.lua:luaCodice copiatoRegisterNetEvent("realtime:evento") AddEventHandler("realtime:evento", function() ora locale = tonumber(os.date("%H")) minuto locale = tonumber(os.date("%M")) secondo locale = tonumber(os.date("%S")) TriggerClientEvent("realtime:evento", origine, ora, minuto, secondo) fine)Spiegazione:- RegisterNetEvent: Registra un evento di rete denominato
realtime:evento. - Aggiungi gestore eventi: Definisce cosa succede quando il
realtime:eventoviene attivato. - os.date: Recupera l'ora corrente del sistema (ora, minuto, secondo).
- TriggerClientEvent: Invia i dati temporali al client che ha attivato l'evento.
- RegisterNetEvent: Registra un evento di rete denominato
Creazione dello script lato client (client.lua)
- Creare
client.lua:All'interno delin tempo realecartella, crea un nuovo file denominatoclient.lua. - Aggiungere il seguente codice a
client.lua:luaCodice copiato-- Imposta la durata di un minuto di gioco in millisecondi SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 minuto reale RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Attiva l'evento del server per avviare la sincronizzazione TriggerServerEvent("realtime:event")Spiegazione:- Imposta millisecondi per minuto di partita: Definisce la durata di un minuto di gioco. Impostandolo su
60000fa sì che 1 minuto di gioco equivalga a 1 minuto nel mondo reale. - RegisterNetEvent e AddEventHandler: Ascolta il
realtime:eventodal 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.
- Imposta millisecondi per minuto di partita: Definisce la durata di un minuto di gioco. Impostandolo su
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.
- Aggiornamento
client.luacon funzionalità di arresto:luaCodice copiatolocal syncActive = true local syncThread = nil -- Funzione per avviare la sincronizzazione function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Attendi 1 minuto prima della sincronizzazione successiva end end) end end -- Funzione per interrompere la sincronizzazione function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- In Lua, non esiste un modo diretto per terminare un thread. -- L'utilizzo di un flag per uscire dal ciclo di fatto arresta il 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) -- Avvia la sincronizzazione all'avvio della risorsa StartRealTimeSync() -- Esempio: comando per attivare/disattivare la sincronizzazione RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Sincronizzazione in tempo reale interrotta.") else StartRealTimeSync() print("Sincronizzazione in tempo reale avviata.") 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.
- Creare
fxmanifest.lua:All'interno delin tempo realecartella, crea un nuovo file denominatofxmanifest.lua. - Aggiungere il seguente codice a
fxmanifest.lua:fx_version 'cerulean' gioco 'gta5' autore 'YourName' descrizione 'Script di sincronizzazione in tempo reale per FiveM' versione '1.0.0' server_script 'server.lua' client_script 'client.lua' - Spiegazione:
- versione fx: Specifica la versione del manifesto FiveM.
ceruleoè 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.
- versione fx: Specifica la versione del manifesto FiveM.
Avvio della risorsa sul server
- Modifica la configurazione del tuo server:Apri il file di configurazione del tuo server, in genere denominato
server.cfg. - Aggiungere la risorsa alla configurazione:Aggiungere la seguente riga per garantire che
in tempo realela risorsa inizia con il server:rubyCode copiagarantire in tempo realeNota: Se stai usandoinizioinvece digarantire, puoi usare:avvia in tempo reale - 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 in tempo reale risorsa.
1. server.lua
RegisterNetEvent("realtime:evento") AddEventHandler("realtime:evento", function() ora locale = tonumber(os.date("%H")) minuto locale = tonumber(os.date("%M")) secondo locale = tonumber(os.date("%S")) TriggerClientEvent("realtime:evento", origine, ora, minuto, secondo) fine)
2. client.lua
local syncActive = true local syncThread = nil -- Funzione per avviare la sincronizzazione function StartRealTimeSync() se non syncActive allora syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Attendi 1 minuto prima della sincronizzazione successiva end end) end end -- Funzione per interrompere la sincronizzazione function StopRealTimeSync() se syncActive allora syncActive = false se syncThread allora -- In Lua, i thread sono cooperativi; impostando syncActive su false si interromperà il ciclo syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Avvia la sincronizzazione all'avvio della risorsa StartRealTimeSync() -- Esempio: comando per attivare/disattivare la sincronizzazione RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Sincronizzazione in tempo reale interrotta.") else StartRealTimeSync() print("Sincronizzazione in tempo reale avviata.") end end, false)
3. fxmanifest.lua
fx_version 'cerulean' gioco 'gta5' autore 'YourName' descrizione 'Script di sincronizzazione in tempo reale per FiveM' versione '1.0.0' server_script 'server.lua' client_script 'client.lua'
Script completo
Here you can download the script we’ve just created:
https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip
Hai creato con successo una risorsa FiveM che sincronizza l'orologio di gioco con l'ora reale. Questo script migliora l'esperienza di gioco assicurando che l'ambiente di gioco rifletta l'ora reale, aggiungendo un ulteriore 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!






