
- ESX
- QBCore
- vRP
Por Luke

Este pequeño recurso de desarrollo hace que cada cliente conectado muestre la hora UTC del host de FXServer. Úsalo solo cuando sea el único propietario del reloj del juego. Si tu framework ya gestiona la hora y el clima, configura o extiende ese recurso en lugar de ejecutar dos sistemas de reloj.
Este ejemplo requiere soporte de estado para GlobalState. Detén otros recursos de sincronización de tiempo/clima en la instancia de prueba para que un controlador sea el dueño del reloj. Muestra UTC, no la zona horaria local del host del servidor.
Los ejemplos de configuración y código aquí están dirigidos a FiveM para GTA V Legacy. Enhanced tiene diferentes reglas de tiempo de ejecución y compatibilidad; consulta los cambios de Legacy a Enhanced de Cfx.re antes de aplicarlos a un servidor Enhanced.
Verifica que el reloj del host sea preciso. Haz una copia de seguridad de la configuración del recurso de tiempo existente y usa un servidor aislado. Crea resources/[local]/utc_clock con los tres archivos siguientes. El servidor publica la hora; los clientes no pueden establecer valores de GlobalState en el servidor.
Guarda esto como fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
server_script 'server.lua'
client_script 'client.lua'Guarda esto como server.lua. El signo de exclamación inicial en os.date selecciona UTC en lugar de la zona horaria local del host:
CreateThread(function()
while true do
local now = os.date('!*t')
GlobalState.tutorialUtcClock = {
hour = now.hour, minute = now.min, second = now.sec
}
Wait(1000)
end
end)
AddEventHandler('onResourceStop', function(name)
if name == GetCurrentResourceName() then
GlobalState.tutorialUtcClock = nil
end
end)Guarda esto como client.lua:
CreateThread(function()
while true do
local clock = GlobalState.tutorialUtcClock
if clock then
NetworkOverrideClockTime(clock.hour, clock.minute, clock.second)
end
Wait(1000)
end
end)
AddEventHandler('onResourceStop', function(name)
if name == GetCurrentResourceName() then
NetworkClearClockTimeOverride()
end
end)Este ejemplo sigue un día UTC real de 24 horas; no acelera la luz del día ni selecciona una zona horaria regional de horario de verano. Los retrasos de red y de programación significan que no es una representación exacta de la hora real. No sincroniza el clima.
Ver Cfx.re state bags y el función nativa para sobrescribir la hora del juego antes de integrar el patrón en un recurso más grande.





