{"id":158437,"date":"2024-09-26T14:01:24","date_gmt":"2024-09-26T12:01:24","guid":{"rendered":"https:\/\/hifivem.com\/?p=158437"},"modified":"2026-07-24T12:46:18","modified_gmt":"2026-07-24T10:46:18","slug":"sincronizzazione-in-tempo-reale-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/it\/sincronizzazione-in-tempo-reale-fivem\/","title":{"rendered":"Sincronizzazione in tempo reale FiveM"},"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<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>: Devi avere accesso amministrativo al tuo <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\">server FiveM per aggiungere script<\/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 data-no-translation=\"\">resources<\/code> cartella nella directory del server FiveM. In genere si trova in: bashCode copia<code data-no-translation=\"\">your-fivem-server-folder\/resources\/<\/code><\/li>\n\n\n\n<li><strong>Crea una nuova cartella di risorse<\/strong>:All&#039;interno del <code data-no-translation=\"\">resources<\/code> cartella, crea una nuova cartella denominata <code data-no-translation=\"\">realtime<\/code>Copia .bashCode<code data-no-translation=\"\">your-fivem-server-folder\/resources\/realtime\/<\/code><\/li>\n\n\n\n<li><strong>Vai a <code data-no-translation=\"\">realtime<\/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 data-no-translation=\"\">server.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creare <code data-no-translation=\"\">server.lua<\/code><\/strong>:All&#039;interno del <code data-no-translation=\"\">realtime<\/code> cartella, crea un nuovo file denominato <code data-no-translation=\"\">server.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code data-no-translation=\"\">server.lua<\/code><\/strong>:luaCodice copiato<code data-no-translation=\"\">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) <\/code><strong>Spiegazione<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegisterNetEvent<\/strong>: Registra un evento di rete denominato <code data-no-translation=\"\">realtime:event<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungi gestore eventi<\/strong>: Definisce cosa succede quando il <code data-no-translation=\"\">realtime:event<\/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 data-no-translation=\"\">client.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creare <code data-no-translation=\"\">client.lua<\/code><\/strong>:All&#039;interno del <code data-no-translation=\"\">realtime<\/code> cartella, crea un nuovo file denominato <code data-no-translation=\"\">client.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code data-no-translation=\"\">client.lua<\/code><\/strong>:luaCodice copiato<code data-no-translation=\"\">-- 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\") <\/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 data-no-translation=\"\">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 data-no-translation=\"\">realtime:event<\/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 data-no-translation=\"\">client.lua<\/code> con funzionalit\u00e0 di arresto<\/strong>:luaCodice copiato<code data-no-translation=\"\">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, 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) <\/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 data-no-translation=\"\">\/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 data-no-translation=\"\">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 data-no-translation=\"\">fxmanifest.lua<\/code><\/strong>:All&#039;interno del <code data-no-translation=\"\">realtime<\/code> cartella, crea un nuovo file denominato <code data-no-translation=\"\">fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere il seguente codice a <code data-no-translation=\"\">fxmanifest.lua<\/code><\/strong>: <code data-no-translation=\"\">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'<\/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 data-no-translation=\"\">cerulean<\/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 data-no-translation=\"\">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 data-no-translation=\"\">server.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Aggiungere la risorsa alla configurazione<\/strong>:Aggiungere la seguente riga per garantire che <code data-no-translation=\"\">realtime<\/code> la risorsa inizia con il server:rubyCode copia<code data-no-translation=\"\">ensure realtime <\/code><strong>Nota<\/strong>: Se stai usando <code data-no-translation=\"\">start<\/code> invece di <code data-no-translation=\"\">ensure<\/code>, puoi usare: <code data-no-translation=\"\">start realtime<\/code><\/li>\n\n\n\n<li><strong>Salva e riavvia il tuo server<\/strong>:Dopo aver salvato le modifiche a <code data-no-translation=\"\">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 data-no-translation=\"\">realtime<\/code> risorsa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-server-lua\">1. <code data-no-translation=\"\">server.lua<\/code><\/h3>\n\n\n\n<pre data-no-translation=\"\" 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(\"realtime:event\")\nAddEventHandler(\"realtime:event\", function()\n local hour = tonumber(os.date(\"%H\"))\n local minute = tonumber(os.date(\"%M\"))\n local second = tonumber(os.date(\"%S\"))\n TriggerClientEvent(\"realtime:event\", source, hour, minute, second)\nend)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-client-lua\">2. <code data-no-translation=\"\">client.lua<\/code><\/h3>\n\n\n\n<pre data-no-translation=\"\" 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\nlocal syncThread = nil\n\n-- Function to start synchronization\nfunction StartRealTimeSync()\n if not syncActive then\n syncActive = true\n syncThread = CreateThread(function()\n while syncActive do\n TriggerServerEvent(\"realtime:event\")\n Wait(60000) -- Wait for 1 minute before next sync\n end\n end)\n end\nend\n\n-- Function to stop synchronization\nfunction StopRealTimeSync()\n if syncActive then\n syncActive = false\n if syncThread then\n -- In Lua, threads are cooperative; setting syncActive to false will stop the loop\n syncThread = nil\n end\n end\nend\n\nRegisterNetEvent(\"realtime:event\")\nAddEventHandler(\"realtime:event\", function(hour, minute, second)\n if syncActive then\n NetworkOverrideClockTime(hour, minute, second)\n end\nend)\n\n-- Start synchronization on resource start\nStartRealTimeSync()\n\n-- Example: Command to toggle synchronization\nRegisterCommand(\"toggleTimeSync\", function()\n if syncActive then\n StopRealTimeSync()\n print(\"Real-time synchronization stopped.\")\n else\n StartRealTimeSync()\n print(\"Real-time synchronization started.\")\n end\nend, false)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-fxmanifest-lua\">3. <code data-no-translation=\"\">fxmanifest.lua<\/code><\/h3>\n\n\n\n<pre data-no-translation=\"\" 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 'cerulean'\ngame 'gta5'\n\nauthor 'YourName'\ndescription 'Real-Time Synchronization Script for FiveM'\nversion '1.0.0'\n\nserver_script 'server.lua'\nclient_script 'client.lua'\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\">Qui puoi scaricare lo script che abbiamo appena creato:<\/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 nofollow\">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 nofollow\">Github<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/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>FiveM Real Time Sync keeps the in-game clock aligned with real-world time and includes start and stop controls.<\/p>","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"],"_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":3,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"predecessor-version":[{"id":212559,"href":"https:\/\/fivemx.com\/it\/wp-json\/wp\/v2\/posts\/158437\/revisions\/212559"}],"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}]}}