Sincronización en tiempo real de FiveM – Mods gratuitos de FiveM

Sincronización en tiempo real de FiveM

Este tutorial te guiará en la creación 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.

Cubriremos los scripts del lado del servidor y del lado del cliente, agregando funcionalidad para iniciar y detener la sincronización y configurando el recurso para su servidor FiveM.


Prerrequisitos

Antes de comenzar, asegúrese de tener lo siguiente:

  • Acceso al servidor FiveM: Necesitas acceso administrativo a tu servidor FiveM para agregar scripts.
  • Conocimientos básicos de Lua:La familiaridad con los scripts de Lua le ayudará a comprender y personalizar el script.
  • Editor de texto:Software como Visual Studio Code, Sublime Text o Notepad++ para editar archivos de script.

Configuración de la carpeta de recursos

  1. Navegar a su directorio de recursos:Localizar el resources Carpeta en el directorio de su servidor FiveM. Normalmente se encuentra en: bashCode copiaryour-fivem-server-folder/resources/
  2. Crear una nueva carpeta de recursos:Dentro de la resources carpeta, crea una nueva carpeta llamada realtimeCopiar .bashCodeyour-fivem-server-folder/resources/realtime/
  3. Navegar hasta el realtime Carpeta:Esta carpeta contendrá todos los scripts y archivos de configuración necesarios para la sincronización en tiempo real.

Creación del script del lado del servidor (server.lua)

  1. Crear server.lua:Dentro de la realtime carpeta, crea un nuevo archivo llamado server.lua.
  2. Agregue el siguiente código a server.luaCopiar código luaRegisterNetEvent("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) Explicación:
    • RegisterNetEvent:Registra un evento de red llamado realtime:event.
    • AddEventHandler:Define lo que sucede cuando el realtime:event se activa.
    • fecha del sistema operativo:Recupera la hora actual del sistema (hora, minuto, segundo).
    • TriggerClientEvent:Envía los datos de tiempo al cliente que activó el evento.

Creación del script del lado del cliente (client.lua)

  1. Crear client.lua:Dentro de la realtime carpeta, crea un nuevo archivo llamado client.lua.
  2. Agregue el siguiente código a client.luaCopiar código lua-- 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") Explicación:
    • Establecer milisegundos por minuto de juego: Define la duración de un minuto de juego. Al configurarlo en 60000 hace que 1 minuto de juego sea igual a 1 minuto del mundo real.
    • RegisterNetEvent & AddEventHandler:Escucha el realtime:event desde el servidor y actualiza el reloj del juego en consecuencia.
    • Tiempo de reloj de anulación de red:Anula el reloj del juego para que coincida con la hora real recibida del servidor.
    • TriggerServerEvent:Inicia la sincronización activando el evento del servidor.

Agregar una funcionalidad de parada

Para permitir activar y desactivar la sincronización en tiempo real, agregaremos funciones para iniciar y detener la sincronización.

  1. Actualizar client.lua con funcionalidad de paradaCopiar código lualocal 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) Explicación:
    • sincronización activa:Una bandera para determinar si la sincronización está activa.
    • Iniciar sincronización en tiempo real:Inicia un bucle que solicita actualizaciones de tiempo del servidor cada minuto.
    • Detener la sincronización en tiempo real:Detiene la sincronización estableciendo el indicador en falso.
    • RegisterCommand:Agrega un comando (/toggleTimeSync) que los jugadores pueden usar para activar o desactivar la sincronización.

Creación del manifiesto de recursos (fxmanifest.lua)

Cada recurso de FiveM requiere un archivo de manifiesto que define sus metadatos y dependencias.

  1. Crear fxmanifest.lua:Dentro de la realtime carpeta, crea un nuevo archivo llamado fxmanifest.lua.
  2. Agregue el siguiente código a fxmanifest.lua: 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'
  3. Explicación:
    • versión fx: Especifica la versión del manifiesto de FiveM. cerulean Es la última versión en el momento de escribir este artículo.
    • juego: Indica para qué juego es el recurso (gta5).
    • autor, descripción, versión:Metadatos sobre su recurso.
    • script_del_servidor y script_del_cliente:Especifica los scripts del servidor y del cliente que se cargarán.

Iniciar el recurso en su servidor

  1. Editar la configuración de su servidor:Abra el archivo de configuración de su servidor, normalmente llamado server.cfg.
  2. Agregar el recurso a la configuración:Agregue la siguiente línea para garantizar que realtime El recurso comienza con el servidor: rubyCode copiarensure realtime Nota:Si estás usando start en lugar de ensure, puedes utilizar: start realtime
  3. Guardar y reiniciar su servidor:Después de guardar los cambios en server.cfg, reinicie su servidor FiveM para cargar el nuevo recurso.

Descarga completa de recursos

Para su comodidad, aquí encontrará el conjunto completo de archivos que necesita crear para el realtime recurso.

1. server.lua

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)

2. client.lua

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, threads are cooperative; setting syncActive to false will stop the loop
 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)

3. fxmanifest.lua

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'

Guión completo

Aquí puedes descargar el script que acabamos de crear:

https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip

Github

Has creado exitosamente un recurso FiveM que sincroniza el reloj del juego con la hora del mundo real. Este script añade un área de juego al asegurar que el entorno del juego refleje la hora real, agregando una capa de realismo para los jugadores.

Puede personalizar aún más el script ajustando los intervalos de sincronización, agregando más comandos o integrándolo con otras funciones del servidor.

¡Siéntete libre de ampliar esta base para adaptarla a las necesidades únicas de tu servidor!

Deja una respuesta