Sincronização em tempo real do FiveM – Mods gratuitos para FiveM
Este tutorial guiará você pela criação de um script FiveM que sincroniza o relógio 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.
Abordaremos scripts do lado do servidor e do lado do cliente, adicionando funcionalidades para iniciar e parar a sincronização e configurando o recurso para seu servidor FiveM.
Índice
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
- Acesso ao servidor FiveM:Você precisa de acesso administrativo ao seu Servidor FiveM para adicionar scripts.
- Conhecimento básico de Lua: A familiaridade com o script Lua ajudará você a entender e personalizar o script.
- Editor de texto: Software como Visual Studio Code, Sublime Text ou Notepad++ para editar arquivos de script.
Configurando a pasta de recursos
- Navegue até o seu diretório de recursos:Localize o
recursospasta no diretório do seu servidor FiveM. Isso normalmente é encontrado em:bashCode copierensua-pasta-do-servidor-fivem/recursos/ - Criar uma nova pasta de recursos:Dentro do
recursospasta, crie uma nova pasta chamadaem tempo real.bashCode copiarsua-pasta-do-servidor-fivem/recursos/tempo-real/ - Navegue até o
em tempo realPasta:Esta pasta conterá todos os scripts e arquivos de configuração necessários para a sincronização em tempo real.
Criando o script do lado do servidor (servidor.lua)
- Criar
servidor.lua:Dentro doem tempo realpasta, crie um novo arquivo chamadoservidor.lua. - Adicione o seguinte código a
servidor.lua:luaCode copiarRegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() hora local = tonumber(os.date("%H")) minuto local = tonumber(os.date("%M")) segundo local = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", fonte, hora, minuto, segundo) fim)Explicação:- RegistrarNetEvent: Registra um evento de rede denominado
tempo real:evento. - Adicionar manipulador de eventos:Define o que acontece quando o
tempo real:eventoé acionado. - os.data: Recupera a hora atual do sistema (hora, minuto, segundo).
- Evento de gatilhoCliente: Envia os dados de tempo para o cliente que disparou o evento.
- RegistrarNetEvent: Registra um evento de rede denominado
Criando o script do lado do cliente (cliente.lua)
- Criar
cliente.lua:Dentro doem tempo realpasta, crie um novo arquivo chamadocliente.lua. - Adicione o seguinte código a
cliente.lua:luaCode copiar-- Define a duração de um minuto no jogo em milissegundos SetMillisecondsPerGameMinute(60000) -- 60.000 ms = 1 minuto do mundo real RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Aciona o evento do servidor para iniciar a sincronização TriggerServerEvent("realtime:event")Explicação:- DefinirMilissegundosPorMinutoDeJogo: Define quanto tempo dura um minuto no jogo. Configurando para
60000faz com que 1 minuto no jogo seja igual a 1 minuto no mundo real. - RegisterNetEvent e AdicionarEventHandler:Escuta o
tempo real:eventodo servidor e atualiza o relógio do jogo de acordo. - NetworkOverrideClockTime: Substitui o relógio do jogo para corresponder ao horário real recebido do servidor.
- Evento do TriggerServer: Inicia a sincronização acionando o evento do servidor.
- DefinirMilissegundosPorMinutoDeJogo: Define quanto tempo dura um minuto no jogo. Configurando para
Adicionando uma funcionalidade de parada
Para permitir a ativação e desativação da sincronização em tempo real, adicionaremos funções para iniciar e parar a sincronização.
- Atualizar
cliente.luacom funcionalidade de parada:luaCode copiarlocal syncActive = true local syncThread = nil -- Função para iniciar a sincronização function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Aguarde 1 minuto antes do próximo fim da sincronização end) end end -- Função para parar a sincronização function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- Em Lua, não há uma maneira direta de matar uma thread. -- Usar um sinalizador para sair do loop efetivamente interrompe a 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) -- Inicia a sincronização no início do recurso StartRealTimeSync() -- Exemplo: Comando para alternar a sincronização RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Sincronização em tempo real interrompida.") else StartRealTimeSync() print("Sincronização em tempo real iniciada.") end end, false)Explicação:- sincronizarAtivo: Um sinalizador para determinar se a sincronização está ativa.
- IniciarRealTimeSync: Inicia um loop que solicita atualizações de tempo do servidor a cada minuto.
- PararRealTimeSync: Interrompe a sincronização definindo o sinalizador como falso.
- RegistrarComando: Adiciona um comando (
/toggleSincronização de tempo) que os jogadores podem usar para ativar ou desativar a sincronização.
Criando o manifesto de recursos (fxmanifest.lua)
Cada recurso FiveM requer um arquivo de manifesto que define seus metadados e dependências.
- Criar
fxmanifest.lua:Dentro doem tempo realpasta, crie um novo arquivo chamadofxmanifest.lua. - Adicione o seguinte código a
fxmanifest.lua:fx_version 'cerulean' jogo 'gta5' autor 'YourName' descrição 'Script de sincronização em tempo real para FiveM' versão '1.0.0' server_script 'server.lua' client_script 'client.lua' - Explicação:
- versão_fx: Especifica a versão do manifesto FiveM.
cerúleoé a mais recente até o momento em que este artigo foi escrito. - jogo: Indica o jogo para o qual o recurso é destinado (
gta5). - autor, descrição, versão: Metadados sobre seu recurso.
- script_do_servidor e script_do_cliente: Especifica os scripts do servidor e do cliente a serem carregados.
- versão_fx: Especifica a versão do manifesto FiveM.
Iniciando o recurso no seu servidor
- Edite a configuração do seu servidor:Abra o arquivo de configuração do seu servidor, normalmente chamado
servidor.cfg. - Adicione o recurso à configuração:Adicione a seguinte linha para garantir que
em tempo realrecurso começa com o servidor:rubyCode copiagarantir tempo realObservação:Se você estiver usandocomeçarem vez degarantir, você pode usar:começar em tempo real - Salve e reinicie seu servidor:Depois de salvar as alterações em
servidor.cfg, reinicie seu servidor FiveM para carregar o novo recurso.
Download completo do recurso
Para sua conveniência, aqui está o conjunto completo de arquivos que você precisa criar para o em tempo real recurso.
1. servidor.lua
RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() hora local = tonumber(os.date("%H")) minuto local = tonumber(os.date("%M")) segundo local = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", fonte, hora, minuto, segundo) fim)
2. cliente.lua
local syncActive = true local syncThread = nil -- Função para iniciar a sincronização function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Aguarde 1 minuto antes do próximo fim da sincronização end) end end -- Função para parar a sincronização function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- Em Lua, threads são cooperativas; definir syncActive como false interromperá o 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) -- Inicia a sincronização no início do recurso StartRealTimeSync() -- Exemplo: Comando para alternar a sincronização RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Sincronização em tempo real interrompida.") else StartRealTimeSync() print("Sincronização em tempo real iniciada.") end end, false)
3. fxmanifest.lua
fx_version 'cerulean' jogo 'gta5' autor 'YourName' descrição 'Script de sincronização em tempo real para FiveM' versão '1.0.0' server_script 'server.lua' client_script 'client.lua'
Roteiro completo
Aqui você pode baixar o script que acabamos de criar:
https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip
Você criou com sucesso um recurso FiveM que sincroniza o relógio do jogo com a hora real. Este script aprimora a experiência de jogo, garantindo que o ambiente do jogo reflita a hora real, adicionando uma camada de realismo aos jogadores.
Você pode personalizar ainda mais o script ajustando intervalos de sincronização, adicionando mais comandos ou integrando-o com outros recursos do servidor.
Sinta-se à vontade para expandir essa base para atender às necessidades específicas do seu servidor!






