{"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":"sincronizacion-en-tiempo-real-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/es\/fivem-real-time-sync\/","title":{"rendered":"FiveM Real-Time Sync &#8211; Free FiveM Mods"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Este tutorial te guiar\u00e1 en la creaci\u00f3n de un script de FiveM que sincroniza el reloj del juego con la hora real. Esto garantiza que el entorno de juego refleje la hora real, mejorando el realismo para los jugadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cubriremos los scripts del lado del servidor y del lado del cliente, agregando funcionalidad para iniciar y detener la sincronizaci\u00f3n y configurando el recurso para su servidor FiveM.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Tabla de contenido<\/h2><nav><ul><li><a href=\"#prerequisites\">Prerrequisitos<\/a><\/li><li><a href=\"#setting-up-the-resource-folder\">Configuraci\u00f3n de la carpeta de recursos<\/a><\/li><li><a href=\"#creating-the-server-side-script-server-lua\">Creaci\u00f3n del script del lado del servidor (server.lua)<\/a><\/li><li><a href=\"#creating-the-client-side-script-client-lua\">Creaci\u00f3n del script del lado del cliente (client.lua)<\/a><\/li><li><a href=\"#adding-a-stop-functionality\">Agregar una funcionalidad de parada<\/a><\/li><li><a href=\"#creating-the-resource-manifest-fxmanifest-lua\">Creaci\u00f3n del manifiesto de recursos (fxmanifest.lua)<\/a><\/li><li><a href=\"#starting-the-resource-on-your-server\">Iniciar el recurso en su servidor<\/a><\/li><li><a href=\"#full-resource-download\">Descarga completa de recursos<\/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\">Gui\u00f3n 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\">Prerrequisitos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de comenzar, aseg\u00farese de tener lo siguiente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Acceso al servidor FiveM<\/strong>: You need administrative access to your <a href=\"https:\/\/fivemx.com\/es\/conversion-de-scripts-fivem\/\" title=\"Conversi\u00f3n de scripts de FiveM: ESX, QBCore, QBOX (Gu\u00eda del framework)\"  data-wpil-monitor-id=\"1661\">FiveM server to add scripts<\/a>.<\/li>\n\n\n\n<li><strong>Conocimientos b\u00e1sicos de Lua<\/strong>:La familiaridad con los scripts de Lua le ayudar\u00e1 a comprender y personalizar el script.<\/li>\n\n\n\n<li><strong>Editor de texto<\/strong>:Software como Visual Studio Code, Sublime Text o Notepad++ para editar archivos 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\">Configuraci\u00f3n de la carpeta de recursos<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Navegar a su directorio de recursos<\/strong>:Localizar el <code>recursos<\/code> Carpeta en el directorio de su servidor FiveM. Normalmente se encuentra en: bashCode copiar<code>su-carpeta-servidor-fivem\/recursos\/<\/code><\/li>\n\n\n\n<li><strong>Crear una nueva carpeta de recursos<\/strong>:Dentro de la <code>recursos<\/code> carpeta, crea una nueva carpeta llamada <code>tiempo real<\/code>Copiar .bashCode<code>su-carpeta-servidor-fivem\/recursos\/tiempo-real\/<\/code><\/li>\n\n\n\n<li><strong>Navegar hasta el <code>tiempo real<\/code> Carpeta<\/strong>:Esta carpeta contendr\u00e1 todos los scripts y archivos de configuraci\u00f3n necesarios para la sincronizaci\u00f3n en tiempo 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\">Creaci\u00f3n del script del lado del servidor (<code>servidor.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear <code>servidor.lua<\/code><\/strong>:Dentro de la <code>tiempo real<\/code> carpeta, crea un nuevo archivo llamado <code>servidor.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo a <code>servidor.lua<\/code><\/strong>Copiar c\u00f3digo lua<code>RegisterNetEvent(&quot;tiempo real:evento&quot;) AddEventHandler(&quot;tiempo real:evento&quot;, funci\u00f3n() 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;tiempo real:evento&quot;, origen, hora, minuto, segundo) fin) <\/code><strong>Explicaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegisterNetEvent<\/strong>:Registra un evento de red llamado <code>tiempo real:evento<\/code>.<\/li>\n\n\n\n<li><strong>Agregar manejador de eventos<\/strong>:Define lo que sucede cuando el <code>tiempo real:evento<\/code> se activa.<\/li>\n\n\n\n<li><strong>fecha del sistema operativo<\/strong>:Recupera la hora actual del sistema (hora, minuto, segundo).<\/li>\n\n\n\n<li><strong>Evento de cliente de activaci\u00f3n<\/strong>:Env\u00eda los datos de tiempo al cliente que activ\u00f3 el 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\">Creaci\u00f3n del script del lado del cliente (<code>cliente.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear <code>cliente.lua<\/code><\/strong>:Dentro de la <code>tiempo real<\/code> carpeta, crea un nuevo archivo llamado <code>cliente.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo a <code>cliente.lua<\/code><\/strong>Copiar c\u00f3digo lua<code>-- Establece la duraci\u00f3n de un minuto del juego en milisegundos SetMillisecondsPerGameMinute(60000) -- 60 000 ms = 1 minuto del mundo real RegisterNetEvent(&quot;realtime:event&quot;) AddEventHandler(&quot;realtime:event&quot;, function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Activa el evento del servidor para iniciar la sincronizaci\u00f3n TriggerServerEvent(&quot;realtime:event&quot;) <\/code><strong>Explicaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Establecer milisegundos por minuto de juego<\/strong>: Define la duraci\u00f3n de un minuto de juego. Al configurarlo en <code>60000<\/code> hace que 1 minuto de juego sea igual a 1 minuto del mundo real.<\/li>\n\n\n\n<li><strong>RegisterNetEvent y AddEventHandler<\/strong>:Escucha el <code>tiempo real:evento<\/code> desde el servidor y actualiza el reloj del juego en consecuencia.<\/li>\n\n\n\n<li><strong>Tiempo de reloj de anulaci\u00f3n de red<\/strong>:Anula el reloj del juego para que coincida con la hora real recibida del servidor.<\/li>\n\n\n\n<li><strong>Evento de servidor de activaci\u00f3n<\/strong>:Inicia la sincronizaci\u00f3n activando el evento del 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\">Agregar una funcionalidad de parada<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para permitir activar y desactivar la sincronizaci\u00f3n en tiempo real, agregaremos funciones para iniciar y detener la sincronizaci\u00f3n.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Actualizar <code>cliente.lua<\/code> con funcionalidad de parada<\/strong>Copiar c\u00f3digo lua<code>local syncActive = true local syncThread = nil -- Funci\u00f3n para iniciar la sincronizaci\u00f3n function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent(&quot;realtime:event&quot;) Wait(60000) -- Espera 1 minuto antes del pr\u00f3ximo fin de sincronizaci\u00f3n end) end end -- Funci\u00f3n para detener la sincronizaci\u00f3n function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- En Lua, no hay una forma directa de matar un hilo. -- El uso de una bandera para salir del bucle detiene efectivamente el hilo. 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) - Iniciar la sincronizaci\u00f3n al iniciar el recurso StartRealTimeSync() - Ejemplo: Comando para alternar la sincronizaci\u00f3n RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;La sincronizaci\u00f3n en tiempo real se detuvo.&quot;) else StartRealTimeSync() print(&quot;La sincronizaci\u00f3n en tiempo real se inici\u00f3.&quot;) end end, false) <\/code><strong>Explicaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>sincronizaci\u00f3n activa<\/strong>:Una bandera para determinar si la sincronizaci\u00f3n est\u00e1 activa.<\/li>\n\n\n\n<li><strong>Iniciar sincronizaci\u00f3n en tiempo real<\/strong>:Inicia un bucle que solicita actualizaciones de tiempo del servidor cada minuto.<\/li>\n\n\n\n<li><strong>Detener la sincronizaci\u00f3n en tiempo real<\/strong>:Detiene la sincronizaci\u00f3n estableciendo el indicador en falso.<\/li>\n\n\n\n<li><strong>RegistrarComando<\/strong>:Agrega un comando (<code>\/alternar sincronizaci\u00f3n de tiempo<\/code>) que los jugadores pueden usar para activar o desactivar la sincronizaci\u00f3n.<\/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\">Creaci\u00f3n del manifiesto de recursos (<code>fxmanifest.lua<\/code>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cada recurso de FiveM requiere un archivo de manifiesto que define sus metadatos y dependencias.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear <code>fxmanifest.lua<\/code><\/strong>:Dentro de la <code>tiempo real<\/code> carpeta, crea un nuevo archivo llamado <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo a <code>fxmanifest.lua<\/code><\/strong>: <code>fx_version &#039;cerulean&#039; juego &#039;gta5&#039; autor &#039;YourName&#039; descripci\u00f3n &#039;Script de sincronizaci\u00f3n en tiempo real para FiveM&#039; versi\u00f3n &#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>Explicaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>versi\u00f3n fx<\/strong>: Especifica la versi\u00f3n del manifiesto de FiveM. <code>azul claro<\/code> Es la \u00faltima versi\u00f3n en el momento de escribir este art\u00edculo.<\/li>\n\n\n\n<li><strong>juego<\/strong>: Indica para qu\u00e9 juego es el recurso (<code>GTA 5<\/code>).<\/li>\n\n\n\n<li><strong>autor, descripci\u00f3n, versi\u00f3n<\/strong>:Metadatos sobre su recurso.<\/li>\n\n\n\n<li><strong>script_del_servidor y script_del_cliente<\/strong>:Especifica los scripts del servidor y del cliente que se cargar\u00e1n.<\/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\">Iniciar el recurso en su servidor<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Editar la configuraci\u00f3n de su servidor<\/strong>:Abra el archivo de configuraci\u00f3n de su servidor, normalmente llamado <code>servidor.cfg<\/code>.<\/li>\n\n\n\n<li><strong>Agregar el recurso a la configuraci\u00f3n<\/strong>:Agregue la siguiente l\u00ednea para garantizar que <code>tiempo real<\/code> El recurso comienza con el servidor: rubyCode copiar<code>garantizar el tiempo real <\/code><strong>Nota<\/strong>:Si est\u00e1s usando <code>comenzar<\/code> en lugar de <code>asegurar<\/code>, puedes utilizar: <code>iniciar en tiempo real<\/code><\/li>\n\n\n\n<li><strong>Guardar y reiniciar su servidor<\/strong>:Despu\u00e9s de guardar los cambios en <code>servidor.cfg<\/code>, reinicie su servidor FiveM para cargar el nuevo 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\">Descarga completa de recursos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para su comodidad, aqu\u00ed encontrar\u00e1 el conjunto completo de archivos que necesita crear para el <code>tiempo 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;tiempo real:evento&quot;) AddEventHandler(&quot;tiempo real:evento&quot;, funci\u00f3n() 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;tiempo real:evento&quot;, origen, hora, minuto, segundo) fin)\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 -- Funci\u00f3n para iniciar la funci\u00f3n de sincronizaci\u00f3n StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent(&quot;realtime:event&quot;) Wait(60000) -- Esperar 1 minuto antes del pr\u00f3ximo fin de sincronizaci\u00f3n end) end end -- Funci\u00f3n para detener la funci\u00f3n de sincronizaci\u00f3n StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- En Lua, los hilos son cooperativos; Establecer syncActive en falso detendr\u00e1 el bucle 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) - Iniciar la sincronizaci\u00f3n al iniciar el recurso StartRealTimeSync() - Ejemplo: Comando para alternar la sincronizaci\u00f3n RegisterCommand(&quot;toggleTimeSync&quot;, function() if syncActive then StopRealTimeSync() print(&quot;Sincronizaci\u00f3n en tiempo real detenida.&quot;) else StartRealTimeSync() print(&quot;Sincronizaci\u00f3n en tiempo 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; juego &#039;gta5&#039; autor &#039;YourName&#039; descripci\u00f3n &#039;Script de sincronizaci\u00f3n en tiempo real para FiveM&#039; versi\u00f3n &#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\">Gui\u00f3n 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\">Has creado correctamente un recurso de FiveM que sincroniza el reloj del juego con la hora real. Este script mejora la experiencia de juego al garantizar que el entorno de juego refleje la hora real, lo que a\u00f1ade un toque de realismo a los jugadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Puede personalizar a\u00fan m\u00e1s el script ajustando los intervalos de sincronizaci\u00f3n, agregando m\u00e1s comandos o integr\u00e1ndolo con otras funciones del servidor.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Si\u00e9ntete libre de ampliar esta base para adaptarla a las necesidades \u00fanicas de tu 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":[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\/es\/wp-json\/wp\/v2\/posts\/158437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/comments?post=158437"}],"version-history":[{"count":0,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/media\/193436"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/media?parent=158437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/categories?post=158437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/tags?post=158437"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}