{"id":158437,"date":"2024-09-26T14:01:24","date_gmt":"2024-09-26T12:01:24","guid":{"rendered":"https:\/\/hifivem.com\/?p=158437"},"modified":"2025-12-23T16:37:05","modified_gmt":"2025-12-23T15:37:05","slug":"sincronizzazione-in-tempo-reale-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/it\/fivem-real-time-sync\/","title":{"rendered":"FiveM Real-Time Sync &#8211; Free FiveM Mods"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Questo tutorial ti guider\u00e0 nella creazione di uno script FiveM che sincronizza l&#039;orologio di gioco con l&#039;ora reale. Questo garantisce che l&#039;ambiente di gioco rifletta l&#039;ora reale, aumentando il realismo per i giocatori.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tratteremo sia la scrittura di script lato server che lato client, aggiungendo funzionalit\u00e0 per avviare e arrestare la sincronizzazione e configurando le risorse per il tuo server FiveM.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Sommario<\/h2><nav><ul><li><a href=\"#prerequisites\">Prerequisiti<\/a><\/li><li><a href=\"#setting-up-the-resource-folder\">Impostazione della cartella delle risorse<\/a><\/li><li><a href=\"#creating-the-server-side-script-server-lua\">Creazione dello script lato server (server.lua)<\/a><\/li><li><a href=\"#creating-the-client-side-script-client-lua\">Creazione dello script lato client (client.lua)<\/a><\/li><li><a href=\"#adding-a-stop-functionality\">Aggiunta di una funzionalit\u00e0 di arresto<\/a><\/li><li><a href=\"#creating-the-resource-manifest-fxmanifest-lua\">Creazione del manifesto delle risorse (fxmanifest.lua)<\/a><\/li><li><a href=\"#starting-the-resource-on-your-server\">Avvio della risorsa sul server<\/a><\/li><li><a href=\"#full-resource-download\">Scarica la risorsa completa<\/a><ul><li><a href=\"#1-server-lua\">1. server.lua<\/a><\/li><li><a href=\"#2-client-lua\">2. client.lua<\/a><\/li><li><a href=\"#3-fxmanifest-lua\">3. fxmanifest.lua<\/a><\/li><\/ul><\/li><li><a href=\"#conclusion\">Script completo<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisites\">Prerequisiti<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di iniziare, assicurati di avere quanto segue:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Accesso al server FiveM<\/strong>: You need administrative access to your <a href=\"https:\/\/fivemx.com\/it\/conversione-degli-script-fivem\/\" title=\"Conversione di script FiveM \u2013 ESX, QBCore, QBOX (Guida al framework)\"  data-wpil-monitor-id=\"1661\">FiveM server to add scripts<\/a>.<\/li>\n\n\n\n<li><strong>Conoscenza di base di Lua<\/strong>: La familiarit\u00e0 con la programmazione Lua ti aiuter\u00e0 a comprendere e personalizzare lo script.<\/li>\n\n\n\n<li><strong>Editor di testo<\/strong>: Software come Visual Studio Code, Sublime Text o Notepad++ per la modifica dei file di script.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setting-up-the-resource-folder\">Impostazione della cartella delle risorse<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Vai alla directory delle tue risorse<\/strong>:Individuare il <code>risorse<\/code> cartella nella directory del server FiveM. In genere si trova in: bashCode copia<code>cartella-del-tuo-server-fivem\/risorse\/<\/code><\/li>\n\n\n\n<li><strong>Crea una nuova cartella di risorse<\/strong>:All&#039;interno del <code>risorse<\/code> cartella, crea una nuova cartella denominata <code>in tempo reale<\/code>Copia .bashCode<code>cartella-del-server-fivem\/risorse\/tempo-reale\/<\/code><\/li>\n\n\n\n<li><strong>Vai a <code>in tempo reale<\/code> Cartella<\/strong>:Questa cartella conterr\u00e0 tutti gli script e i file di configurazione necessari per la sincronizzazione in tempo reale.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-server-side-script-server-lua\">Creazione dello script lato server (<code>server.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creare <code>server.lua<\/code><\/strong>:All&#039;interno del <code>in tempo reale<\/code> cartella, crea un nuovo file denominato <code>server.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code>server.lua<\/code><\/strong>:luaCodice copiato<code>RegisterNetEvent(&quot;realtime:evento&quot;) AddEventHandler(&quot;realtime:evento&quot;, function() ora locale = tonumber(os.date(&quot;%H&quot;)) minuto locale = tonumber(os.date(&quot;%M&quot;)) secondo locale = tonumber(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;realtime:evento&quot;, origine, ora, minuto, secondo) fine) <\/code><strong>Spiegazione<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegisterNetEvent<\/strong>: Registra un evento di rete denominato <code>realtime:evento<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungi gestore eventi<\/strong>: Definisce cosa succede quando il <code>realtime:evento<\/code> viene attivato.<\/li>\n\n\n\n<li><strong>os.date<\/strong>: Recupera l&#039;ora corrente del sistema (ora, minuto, secondo).<\/li>\n\n\n\n<li><strong>TriggerClientEvent<\/strong>: Invia i dati temporali al client che ha attivato l&#039;evento.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-client-side-script-client-lua\">Creazione dello script lato client (<code>client.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creare <code>client.lua<\/code><\/strong>:All&#039;interno del <code>in tempo reale<\/code> cartella, crea un nuovo file denominato <code>client.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code>client.lua<\/code><\/strong>:luaCodice copiato<code>-- Imposta la durata di un minuto di gioco in millisecondi SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 minuto reale RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Attiva l&#039;evento del server per avviare la sincronizzazione TriggerServerEvent(&quot;realtime:event&quot;) <\/code><strong>Spiegazione<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Imposta millisecondi per minuto di partita<\/strong>: Definisce la durata di un minuto di gioco. Impostandolo su <code>60000<\/code> fa s\u00ec che 1 minuto di gioco equivalga a 1 minuto nel mondo reale.<\/li>\n\n\n\n<li><strong>RegisterNetEvent e AddEventHandler<\/strong>: Ascolta il <code>realtime:evento<\/code> dal server e aggiorna di conseguenza l&#039;orologio di gioco.<\/li>\n\n\n\n<li><strong>NetworkOverrideClockTime<\/strong>: Sostituisce l&#039;orologio di gioco con l&#039;ora reale ricevuta dal server.<\/li>\n\n\n\n<li><strong>TriggerServerEvent<\/strong>: Avvia la sincronizzazione attivando l&#039;evento del server.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"adding-a-stop-functionality\">Aggiunta di una funzionalit\u00e0 di arresto<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per consentire l&#039;attivazione e la disattivazione della sincronizzazione in tempo reale, aggiungeremo funzioni per avviare e arrestare la sincronizzazione.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Aggiornamento <code>client.lua<\/code> con funzionalit\u00e0 di arresto<\/strong>:luaCodice copiato<code>local 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(&quot;realtime:event&quot;) 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&#039;utilizzo di un flag per uscire dal ciclo di fatto arresta il thread. syncThread = nil end end end RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Avvia la sincronizzazione all&#039;avvio della risorsa StartRealTimeSync() -- Esempio: comando per attivare\/disattivare la sincronizzazione RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Sincronizzazione in tempo reale interrotta.&quot;) else StartRealTimeSync() print(&quot;Sincronizzazione in tempo reale avviata.&quot;) end end, false) <\/code><strong>Spiegazione<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>sincronizzazioneAttiva<\/strong>: Flag per determinare se la sincronizzazione \u00e8 attiva.<\/li>\n\n\n\n<li><strong>Avvia sincronizzazione in tempo reale<\/strong>: Avvia un ciclo che richiede aggiornamenti orari al server ogni minuto.<\/li>\n\n\n\n<li><strong>Arresta la sincronizzazione in tempo reale<\/strong>: Interrompe la sincronizzazione impostando il flag su false.<\/li>\n\n\n\n<li><strong>RegisterCommand<\/strong>: Aggiunge un comando (<code>\/toggleTimeSync<\/code>) che i giocatori possono utilizzare per attivare o disattivare la sincronizzazione.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-the-resource-manifest-fxmanifest-lua\">Creazione del manifesto delle risorse (<code>fxmanifest.lua<\/code>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ogni risorsa FiveM richiede un file manifest che ne definisce i metadati e le dipendenze.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creare <code>fxmanifest.lua<\/code><\/strong>:All&#039;interno del <code>in tempo reale<\/code> cartella, crea un nuovo file denominato <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code>fxmanifest.lua<\/code><\/strong>: <code>fx_version &#039;cerulean&#039; gioco &#039;gta5&#039; autore &#039;YourName&#039; descrizione &#039;Script di sincronizzazione in tempo reale per FiveM&#039; versione &#039;1.0.0&#039; server_script &#039;server.lua&#039; client_script &#039;client.lua&#039;<\/code><\/li>\n\n\n\n<li><strong>Spiegazione<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>versione fx<\/strong>: Specifica la versione del manifesto FiveM. <code>ceruleo<\/code> \u00e8 l&#039;ultima disponibile al momento della scrittura.<\/li>\n\n\n\n<li><strong>gioco<\/strong>: Indica il gioco a cui \u00e8 destinata la risorsa (<code>gta5<\/code>).<\/li>\n\n\n\n<li><strong>autore, descrizione, versione<\/strong>: Metadati sulla tua risorsa.<\/li>\n\n\n\n<li><strong>script_server e script_client<\/strong>: Specifica gli script del server e del client da caricare.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"starting-the-resource-on-your-server\">Avvio della risorsa sul server<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Modifica la configurazione del tuo server<\/strong>:Apri il file di configurazione del tuo server, in genere denominato <code>server.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere la risorsa alla configurazione<\/strong>:Aggiungere la seguente riga per garantire che <code>in tempo reale<\/code> la risorsa inizia con il server:rubyCode copia<code>garantire in tempo reale <\/code><strong>Nota<\/strong>: Se stai usando <code>inizio<\/code> invece di <code>garantire<\/code>, puoi usare: <code>avvia in tempo reale<\/code><\/li>\n\n\n\n<li><strong>Salva e riavvia il tuo server<\/strong>:Dopo aver salvato le modifiche a <code>server.cfg<\/code>, riavvia il server FiveM per caricare la nuova risorsa.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"full-resource-download\">Scarica la risorsa completa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per comodit\u00e0, ecco il set completo dei file che devi creare per il <code>in tempo reale<\/code> risorsa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-server-lua\">1. <code>server.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RegisterNetEvent(&quot;realtime:evento&quot;) AddEventHandler(&quot;realtime:evento&quot;, function() ora locale = tonumber(os.date(&quot;%H&quot;)) minuto locale = tonumber(os.date(&quot;%M&quot;)) secondo locale = tonumber(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;realtime:evento&quot;, origine, ora, minuto, secondo) fine)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-client-lua\">2. <code>client.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">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(&quot;realtime:event&quot;) 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\u00e0 il ciclo syncThread = nil end end end RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Avvia la sincronizzazione all&#039;avvio della risorsa StartRealTimeSync() -- Esempio: comando per attivare\/disattivare la sincronizzazione RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Sincronizzazione in tempo reale interrotta.&quot;) else StartRealTimeSync() print(&quot;Sincronizzazione in tempo reale avviata.&quot;) end end, false)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-fxmanifest-lua\">3. <code>fxmanifest.lua<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"lua\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fx_version &#039;cerulean&#039; gioco &#039;gta5&#039; autore &#039;YourName&#039; descrizione &#039;Script di sincronizzazione in tempo reale per FiveM&#039; versione &#039;1.0.0&#039; server_script &#039;server.lua&#039; client_script &#039;client.lua&#039;\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Script completo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here you can download the script we&#8217;ve just created:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/codeload.github.com\/HiFiveM\/fivem-realtime\/zip\/refs\/heads\/main\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/HiFiveM\/fivem-realtime\/archive\/refs\/heads\/main.zip<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/HiFiveM\/fivem-realtime\/tree\/main\/fivem-realtime\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/github.com\/HiFiveM\/fivem-realtime\/tree\/main\/fivem-realtime\" rel=\"noreferrer noopener\">Github<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hai creato con successo una risorsa FiveM che sincronizza l&#039;orologio di gioco con l&#039;ora reale. Questo script migliora l&#039;esperienza di gioco assicurando che l&#039;ambiente di gioco rifletta l&#039;ora reale, aggiungendo un ulteriore livello di realismo per i giocatori.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c8 possibile personalizzare ulteriormente lo script regolando gli intervalli di sincronizzazione, aggiungendo altri comandi o integrandolo con altre funzionalit\u00e0 del server.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sentiti libero di ampliare questa base per adattarla alle esigenze specifiche del tuo server!<\/p>","protected":false},"excerpt":{"rendered":"<p>This tutorial will guide you through creating a FiveM script that synchronizes the in-game clock with real-world time. This ensures that the game environment reflects the actual time, enhancing realism for players. We&#8217;ll cover both server-side and client-side scripting, adding functionality to start and stop the synchronization, and setting up the resource for your FiveM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":193436,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2297,2298,2340],"tags":[3001,2928,3000],"class_list":["post-158437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free","category-scripts","category-lua-scripting","tag-fivem-script","tag-free","tag-free-script"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/posts\/158437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/comments?post=158437"}],"version-history":[{"count":0,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/media\/193436"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/media?parent=158437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/categories?post=158437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/tags?post=158437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}