{"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":"sincronizacao-em-tempo-real-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/pt\/fivem-real-time-sync\/","title":{"rendered":"Sincroniza\u00e7\u00e3o em tempo real do FiveM \u2013 Mods gratuitos para FiveM"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Este tutorial guiar\u00e1 voc\u00ea pela cria\u00e7\u00e3o de um script FiveM que sincroniza o rel\u00f3gio do jogo com o tempo do mundo real. Isso garante que o ambiente do jogo reflita o tempo real, aumentando o realismo para os jogadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abordaremos scripts do lado do servidor e do lado do cliente, adicionando funcionalidades para iniciar e parar a sincroniza\u00e7\u00e3o e configurando o recurso para seu servidor FiveM.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u00cdndice<\/h2><nav><ul><li><a href=\"#prerequisites\">Pr\u00e9-requisitos<\/a><\/li><li><a href=\"#setting-up-the-resource-folder\">Configurando a pasta de recursos<\/a><\/li><li><a href=\"#creating-the-server-side-script-server-lua\">Criando o script do lado do servidor (server.lua)<\/a><\/li><li><a href=\"#creating-the-client-side-script-client-lua\">Criando o script do lado do cliente (client.lua)<\/a><\/li><li><a href=\"#adding-a-stop-functionality\">Adicionando uma funcionalidade de parada<\/a><\/li><li><a href=\"#creating-the-resource-manifest-fxmanifest-lua\">Criando o manifesto de recursos (fxmanifest.lua)<\/a><\/li><li><a href=\"#starting-the-resource-on-your-server\">Iniciando o recurso no seu servidor<\/a><\/li><li><a href=\"#full-resource-download\">Download completo do recurso<\/a><ul><li><a href=\"#1-server-lua\">1. servidor.lua<\/a><\/li><li><a href=\"#2-client-lua\">2. cliente.lua<\/a><\/li><li><a href=\"#3-fxmanifest-lua\">3. fxmanifest.lua<\/a><\/li><\/ul><\/li><li><a href=\"#conclusion\">Roteiro 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\">Pr\u00e9-requisitos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de come\u00e7ar, certifique-se de ter o seguinte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Acesso ao servidor FiveM<\/strong>:Voc\u00ea precisa de acesso administrativo ao seu <a href=\"https:\/\/fivemx.com\/pt\/convertendo-scripts-fivem\/\" title=\"Convertendo scripts FiveM \u2013 ESX, QBCore, QBOX (Guia de Framework)\"  data-wpil-monitor-id=\"1661\">Servidor FiveM para adicionar scripts<\/a>.<\/li>\n\n\n\n<li><strong>Conhecimento b\u00e1sico de Lua<\/strong>: A familiaridade com o script Lua ajudar\u00e1 voc\u00ea a entender e personalizar o script.<\/li>\n\n\n\n<li><strong>Editor de texto<\/strong>: Software como Visual Studio Code, Sublime Text ou Notepad++ para editar arquivos de 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\">Configurando a pasta de recursos<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Navegue at\u00e9 o seu diret\u00f3rio de recursos<\/strong>:Localize o <code>recursos<\/code> pasta no diret\u00f3rio do seu servidor FiveM. Isso normalmente \u00e9 encontrado em:bashCode copieren<code>sua-pasta-do-servidor-fivem\/recursos\/<\/code><\/li>\n\n\n\n<li><strong>Criar uma nova pasta de recursos<\/strong>:Dentro do <code>recursos<\/code> pasta, crie uma nova pasta chamada <code>em tempo real<\/code>.bashCode copiar<code>sua-pasta-do-servidor-fivem\/recursos\/tempo-real\/<\/code><\/li>\n\n\n\n<li><strong>Navegue at\u00e9 o <code>em tempo real<\/code> Pasta<\/strong>:Esta pasta conter\u00e1 todos os scripts e arquivos de configura\u00e7\u00e3o necess\u00e1rios para a sincroniza\u00e7\u00e3o em tempo real.<\/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\">Criando o script do lado do servidor (<code>servidor.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Criar <code>servidor.lua<\/code><\/strong>:Dentro do <code>em tempo real<\/code> pasta, crie um novo arquivo chamado <code>servidor.lua<\/code>.<\/li>\n\n\n\n<li><strong>Adicione o seguinte c\u00f3digo a <code>servidor.lua<\/code><\/strong>:luaCode copiar<code>RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function() hora local = tonumber(os.date(&quot;%H&quot;)) minuto local = tonumber(os.date(&quot;%M&quot;)) segundo local = tonumber(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;realtime:event&quot;, fonte, hora, minuto, segundo) fim) <\/code><strong>Explica\u00e7\u00e3o<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegistrarNetEvent<\/strong>: Registra um evento de rede denominado <code>tempo real:evento<\/code>.<\/li>\n\n\n\n<li><strong>Adicionar manipulador de eventos<\/strong>:Define o que acontece quando o <code>tempo real:evento<\/code> \u00e9 acionado.<\/li>\n\n\n\n<li><strong>os.data<\/strong>: Recupera a hora atual do sistema (hora, minuto, segundo).<\/li>\n\n\n\n<li><strong>Evento de gatilhoCliente<\/strong>: Envia os dados de tempo para o cliente que disparou o 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\">Criando o script do lado do cliente (<code>cliente.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Criar <code>cliente.lua<\/code><\/strong>:Dentro do <code>em tempo real<\/code> pasta, crie um novo arquivo chamado <code>cliente.lua<\/code>.<\/li>\n\n\n\n<li><strong>Adicione o seguinte c\u00f3digo a <code>cliente.lua<\/code><\/strong>:luaCode copiar<code>-- Define a dura\u00e7\u00e3o de um minuto no jogo em milissegundos SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 minuto do mundo real RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Aciona o evento do servidor para iniciar a sincroniza\u00e7\u00e3o TriggerServerEvent(&quot;realtime:event&quot;) <\/code><strong>Explica\u00e7\u00e3o<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>DefinirMilissegundosPorMinutoDeJogo<\/strong>: Define quanto tempo dura um minuto no jogo. Configurando para <code>60000<\/code> faz com que 1 minuto no jogo seja igual a 1 minuto no mundo real.<\/li>\n\n\n\n<li><strong>RegisterNetEvent e AdicionarEventHandler<\/strong>:Escuta o <code>tempo real:evento<\/code> do servidor e atualiza o rel\u00f3gio do jogo de acordo.<\/li>\n\n\n\n<li><strong>NetworkOverrideClockTime<\/strong>: Substitui o rel\u00f3gio do jogo para corresponder ao hor\u00e1rio real recebido do servidor.<\/li>\n\n\n\n<li><strong>Evento do TriggerServer<\/strong>: Inicia a sincroniza\u00e7\u00e3o acionando o evento do servidor.<\/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\">Adicionando uma funcionalidade de parada<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para permitir a ativa\u00e7\u00e3o e desativa\u00e7\u00e3o da sincroniza\u00e7\u00e3o em tempo real, adicionaremos fun\u00e7\u00f5es para iniciar e parar a sincroniza\u00e7\u00e3o.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Atualizar <code>cliente.lua<\/code> com funcionalidade de parada<\/strong>:luaCode copiar<code>local syncActive = true local syncThread = nil -- Fun\u00e7\u00e3o para iniciar a sincroniza\u00e7\u00e3o function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent(&quot;realtime:event&quot;) Wait(60000) -- Aguarde 1 minuto antes do pr\u00f3ximo fim da sincroniza\u00e7\u00e3o end) end end -- Fun\u00e7\u00e3o para parar a sincroniza\u00e7\u00e3o function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- Em Lua, n\u00e3o h\u00e1 uma maneira direta de matar uma thread. -- Usar um sinalizador para sair do loop efetivamente interrompe a 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) -- Inicia a sincroniza\u00e7\u00e3o no in\u00edcio do recurso StartRealTimeSync() -- Exemplo: Comando para alternar a sincroniza\u00e7\u00e3o RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Sincroniza\u00e7\u00e3o em tempo real interrompida.&quot;) else StartRealTimeSync() print(&quot;Sincroniza\u00e7\u00e3o em tempo real iniciada.&quot;) end end, false) <\/code><strong>Explica\u00e7\u00e3o<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>sincronizarAtivo<\/strong>: Um sinalizador para determinar se a sincroniza\u00e7\u00e3o est\u00e1 ativa.<\/li>\n\n\n\n<li><strong>IniciarRealTimeSync<\/strong>: Inicia um loop que solicita atualiza\u00e7\u00f5es de tempo do servidor a cada minuto.<\/li>\n\n\n\n<li><strong>PararRealTimeSync<\/strong>: Interrompe a sincroniza\u00e7\u00e3o definindo o sinalizador como falso.<\/li>\n\n\n\n<li><strong>RegistrarComando<\/strong>: Adiciona um comando (<code>\/toggleSincroniza\u00e7\u00e3o de tempo<\/code>) que os jogadores podem usar para ativar ou desativar a sincroniza\u00e7\u00e3o.<\/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\">Criando o manifesto de recursos (<code>fxmanifest.lua<\/code>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cada recurso FiveM requer um arquivo de manifesto que define seus metadados e depend\u00eancias.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Criar <code>fxmanifest.lua<\/code><\/strong>:Dentro do <code>em tempo real<\/code> pasta, crie um novo arquivo chamado <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Adicione o seguinte c\u00f3digo a <code>fxmanifest.lua<\/code><\/strong>: <code>fx_version &#039;cerulean&#039; jogo &#039;gta5&#039; autor &#039;YourName&#039; descri\u00e7\u00e3o &#039;Script de sincroniza\u00e7\u00e3o em tempo real para FiveM&#039; vers\u00e3o &#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>Explica\u00e7\u00e3o<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>vers\u00e3o_fx<\/strong>: Especifica a vers\u00e3o do manifesto FiveM. <code>cer\u00faleo<\/code> \u00e9 a mais recente at\u00e9 o momento em que este artigo foi escrito.<\/li>\n\n\n\n<li><strong>jogo<\/strong>: Indica o jogo para o qual o recurso \u00e9 destinado (<code>gta5<\/code>).<\/li>\n\n\n\n<li><strong>autor, descri\u00e7\u00e3o, vers\u00e3o<\/strong>: Metadados sobre seu recurso.<\/li>\n\n\n\n<li><strong>script_do_servidor e script_do_cliente<\/strong>: Especifica os scripts do servidor e do cliente a serem carregados.<\/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\">Iniciando o recurso no seu servidor<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Edite a configura\u00e7\u00e3o do seu servidor<\/strong>:Abra o arquivo de configura\u00e7\u00e3o do seu servidor, normalmente chamado <code>servidor.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Adicione o recurso \u00e0 configura\u00e7\u00e3o<\/strong>:Adicione a seguinte linha para garantir que <code>em tempo real<\/code> recurso come\u00e7a com o servidor:rubyCode copia<code>garantir tempo real <\/code><strong>Observa\u00e7\u00e3o<\/strong>:Se voc\u00ea estiver usando <code>come\u00e7ar<\/code> em vez de <code>garantir<\/code>, voc\u00ea pode usar: <code>come\u00e7ar em tempo real<\/code><\/li>\n\n\n\n<li><strong>Salve e reinicie seu servidor<\/strong>:Depois de salvar as altera\u00e7\u00f5es em <code>servidor.cfg<\/code>, reinicie seu servidor FiveM para carregar o novo recurso.<\/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\">Download completo do recurso<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para sua conveni\u00eancia, aqui est\u00e1 o conjunto completo de arquivos que voc\u00ea precisa criar para o <code>em tempo real<\/code> recurso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-server-lua\">1. <code>servidor.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:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function() hora local = tonumber(os.date(&quot;%H&quot;)) minuto local = tonumber(os.date(&quot;%M&quot;)) segundo local = tonumber(os.date(&quot;%S&quot;)) TriggerClientEvent(&quot;realtime:event&quot;, fonte, hora, minuto, segundo) fim)\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-client-lua\">2. <code>cliente.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 -- Fun\u00e7\u00e3o para iniciar a sincroniza\u00e7\u00e3o function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent(&quot;realtime:event&quot;) Wait(60000) -- Aguarde 1 minuto antes do pr\u00f3ximo fim da sincroniza\u00e7\u00e3o end) end end -- Fun\u00e7\u00e3o para parar a sincroniza\u00e7\u00e3o function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- Em Lua, threads s\u00e3o cooperativas; definir syncActive como false interromper\u00e1 o loop 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) -- Inicia a sincroniza\u00e7\u00e3o no in\u00edcio do recurso StartRealTimeSync() -- Exemplo: Comando para alternar a sincroniza\u00e7\u00e3o RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Sincroniza\u00e7\u00e3o em tempo real interrompida.&quot;) else StartRealTimeSync() print(&quot;Sincroniza\u00e7\u00e3o em tempo real iniciada.&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; jogo &#039;gta5&#039; autor &#039;YourName&#039; descri\u00e7\u00e3o &#039;Script de sincroniza\u00e7\u00e3o em tempo real para FiveM&#039; vers\u00e3o &#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\">Roteiro completo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui voc\u00ea pode baixar o script que acabamos de criar:<\/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\">Voc\u00ea criou com sucesso um recurso FiveM que sincroniza o rel\u00f3gio do jogo com a hora real. Este script aprimora a experi\u00eancia de jogo, garantindo que o ambiente do jogo reflita a hora real, adicionando uma camada de realismo aos jogadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Voc\u00ea pode personalizar ainda mais o script ajustando intervalos de sincroniza\u00e7\u00e3o, adicionando mais comandos ou integrando-o com outros recursos do servidor.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sinta-se \u00e0 vontade para expandir essa base para atender \u00e0s necessidades espec\u00edficas do seu servidor!<\/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":[],"class_list":["post-158437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free","category-scripts","category-lua-scripting"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/posts\/158437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/comments?post=158437"}],"version-history":[{"count":0,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/media\/193436"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/media?parent=158437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/categories?post=158437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/pt\/wp-json\/wp\/v2\/tags?post=158437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}