{"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":"sincronizacion-en-tiempo-real-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/es\/sincronizacion-en-tiempo-real-fivem\/","title":{"rendered":"Sincronizaci\u00f3n en tiempo real de FiveM"},"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<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>: Necesitas acceso administrativo a tu <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\">servidor FiveM para agregar 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 data-no-translation=\"\">resources<\/code> Carpeta en el directorio de su servidor FiveM. Normalmente se encuentra en: bashCode copiar<code data-no-translation=\"\">your-fivem-server-folder\/resources\/<\/code><\/li>\n\n\n\n<li><strong>Crear una nueva carpeta de recursos<\/strong>:Dentro de la <code data-no-translation=\"\">resources<\/code> carpeta, crea una nueva carpeta llamada <code data-no-translation=\"\">realtime<\/code>Copiar .bashCode<code data-no-translation=\"\">your-fivem-server-folder\/resources\/realtime\/<\/code><\/li>\n\n\n\n<li><strong>Navegar hasta el <code data-no-translation=\"\">realtime<\/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 data-no-translation=\"\">server.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear <code data-no-translation=\"\">server.lua<\/code><\/strong>:Dentro de la <code data-no-translation=\"\">realtime<\/code> carpeta, crea un nuevo archivo llamado <code data-no-translation=\"\">server.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo a <code data-no-translation=\"\">server.lua<\/code><\/strong>Copiar c\u00f3digo lua<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>Explicaci\u00f3n<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>RegisterNetEvent<\/strong>:Registra un evento de red llamado <code data-no-translation=\"\">realtime:event<\/code>.<\/li>\n\n\n\n<li><strong>AddEventHandler<\/strong>:Define lo que sucede cuando el <code data-no-translation=\"\">realtime:event<\/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>TriggerClientEvent<\/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 data-no-translation=\"\">client.lua<\/code>)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crear <code data-no-translation=\"\">client.lua<\/code><\/strong>:Dentro de la <code data-no-translation=\"\">realtime<\/code> carpeta, crea un nuevo archivo llamado <code data-no-translation=\"\">client.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo a <code data-no-translation=\"\">client.lua<\/code><\/strong>Copiar c\u00f3digo lua<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>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 data-no-translation=\"\">60000<\/code> hace que 1 minuto de juego sea igual a 1 minuto del mundo real.<\/li>\n\n\n\n<li><strong>RegisterNetEvent &amp; AddEventHandler<\/strong>:Escucha el <code data-no-translation=\"\">realtime:event<\/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>TriggerServerEvent<\/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 data-no-translation=\"\">client.lua<\/code> con funcionalidad de parada<\/strong>Copiar c\u00f3digo lua<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>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>RegisterCommand<\/strong>:Agrega un comando (<code data-no-translation=\"\">\/toggleTimeSync<\/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 data-no-translation=\"\">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 data-no-translation=\"\">fxmanifest.lua<\/code><\/strong>:Dentro de la <code data-no-translation=\"\">realtime<\/code> carpeta, crea un nuevo archivo llamado <code data-no-translation=\"\">fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li><strong>Agregue el siguiente c\u00f3digo 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>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 data-no-translation=\"\">cerulean<\/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 data-no-translation=\"\">gta5<\/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 data-no-translation=\"\">server.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 data-no-translation=\"\">realtime<\/code> El recurso comienza con el servidor: rubyCode copiar<code data-no-translation=\"\">ensure realtime <\/code><strong>Nota<\/strong>:Si est\u00e1s usando <code data-no-translation=\"\">start<\/code> en lugar de <code data-no-translation=\"\">ensure<\/code>, puedes utilizar: <code data-no-translation=\"\">start realtime<\/code><\/li>\n\n\n\n<li><strong>Guardar y reiniciar su servidor<\/strong>:Despu\u00e9s de guardar los cambios en <code data-no-translation=\"\">server.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 data-no-translation=\"\">realtime<\/code> recurso.<\/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\">Gui\u00f3n completo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed puedes descargar el script que acabamos de crear:<\/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\">Has creado exitosamente un recurso FiveM que sincroniza el reloj del juego con la hora del mundo real. Este script a\u00f1ade un \u00e1rea de juego al asegurar que el entorno del juego refleje la hora real, agregando una capa de realismo para 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>FiveM Real Time Sync mantiene el reloj del juego alineado con el tiempo real y incluye controles de inicio y parada.<\/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\/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":3,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/posts\/158437\/revisions"}],"predecessor-version":[{"id":212559,"href":"https:\/\/fivemx.com\/es\/wp-json\/wp\/v2\/posts\/158437\/revisions\/212559"}],"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}]}}