Time System
Clima e hora iguais para todos os jogadores, com um painel para a staff. Tem transição de clima, apagão, neve no chão, rotação automática e zonas com clima próprio.
Precisa de: oxmysql, ox_lib, krs_helper
Instalação
ensure time_systemColoque depois do krs_helper. As tabelas são criadas sozinhas. Veja a ordem de instalação.
Use só um script de clima. Se o servidor já tem outro, coloque # na frente do ensure dele. No krs não há sincronizador próprio para desligar.
Comandos
| Comando | O que faz |
|---|---|
/weather | Abre o painel |
/time, /weatherui | Fazem o mesmo |
Não há tecla padrão. Cada jogador escolhe em Configurações > Teclas > FiveM, ou o dono define uma para todos em Keybind.
Painel
As teclas 1, 2 e 3 trocam de aba.
| Aba | O que faz |
|---|---|
| Agora | Troca o clima, trava o clima, liga apagão e neve no chão |
| Rotação | Lista de climas que se repete, com a duração de cada etapa. Pode reordenar e pular etapa |
| Zonas | Clima diferente em uma área do mapa |
O relógio aparece nas abas Agora e Rotação. Arraste o sol ou digite a hora. Também pode parar o relógio.
Cada etapa da rotação dura pelo menos 10 segundos.
Para criar uma zona:
- Clique no mapa onde quer o centro, ou use "Nova onde estou".
- Escolha nome, clima e raio.
- Salve.
Permissão
O painel exige um dos grupos de AdminGroups. Basta um.
| Framework | Como liberar |
|---|---|
| krs, Creative | Grupo Admin do framework |
| vRP | Grupos god, admin ou mod |
| QBCore | add_principal identifier.license:SUA_LICENSE group.admin e add_ace group.admin admin allow |
| Sem framework | add_principal identifier.license:SUA_LICENSE group.admin e add_ace group.admin group.Admin allow |
Log no Discord
As ações do painel vão para o log do krs_helper. Para enviar ao Discord:
set krs_helper_webhook "URL_DO_SEU_WEBHOOK"Use set, nunca setr.
Configuração
Tudo fica em config.lua. Só precisa ter o que você mudou. Os textos e os nomes dos climas ficam em locales/*.json.
Acesso e comandos
| Opção | Padrão | O que muda |
|---|---|---|
AdminGroups | Admin, Owner | Grupos que abrem o painel |
Command | "weather" | Comando. "" desliga o comando, os outros nomes e a tecla |
Aliases | time, weatherui | Outros nomes do comando |
Keybind | "" | Tecla padrão, como "F7". Vazio deixa o jogador escolher |
Clima
| Opção | Padrão | O que muda |
|---|---|---|
WeatherTypes | EXTRASUNNY, CLEAR, CLEARING, NEUTRAL, CLOUDS, OVERCAST, SMOG, FOGGY, RAIN, THUNDER, SNOW, BLIZZARD, SNOWLIGHT, XMAS, HALLOWEEN | Climas do painel, na ordem |
DefaultWeather | "CLEAR" | Clima inicial e do botão de voltar |
TransitionDuration | 15.0 | Duração da transição, em segundos |
FreezeWeatherOnStart | false | Clima começa travado |
AutoSnowOnGround | true | Neve no chão nos climas de neve |
ClearZonesOnWeatherChange | "disable" | Ao trocar o clima na aba Agora: "disable" desliga as zonas, "delete" apaga, "keep" não mexe |
DisableScheduleOnWeatherChange | true | Desliga a rotação ao trocar o clima na aba Agora |
Hora
| Opção | Padrão | O que muda |
|---|---|---|
DefaultTime | hour = 12, minute = 0 | Hora inicial e do botão de voltar |
FreezeTimeOnStart | false | Relógio começa parado |
GameMinuteDuration | 2000 | Duração de 1 minuto do jogo, em ms |
SmoothTimeTransition | true | Transição suave da hora |
Zonas
| Opção | Padrão | O que muda |
|---|---|---|
MinZoneRadius | 200 | Raio mínimo, em metros |
MaxZoneRadius | 5000 | Raio máximo, em metros |
ZoneTransitionDuration | 10.0 | Transição ao entrar ou sair, em segundos |
Outros
| Opção | Padrão | O que muda |
|---|---|---|
HudEvent | "hud:Active" | Evento local disparado com false ao abrir o painel e true ao fechar. Troque pelo evento da sua HUD, ou use "" para desligar |
NoticeTime | 5000 | Duração dos avisos, em ms |
SyncInterval | 5000 | Intervalo de sincronia, em ms |
RateLimits | Por ação, como SetWeather = { cooldown = 500, maxBurst = 10, window = 60000 } | Limite de pedidos por jogador: ms entre pedidos, máximo por janela e janela em ms |
Para programadores
Exports de servidor:
exports.time_system:GetWeather() -- clima atual
exports.time_system:GetWeatherState() -- estado do clima
exports.time_system:GetTime() -- { hour, minute }
exports.time_system:GetTimeState() -- estado da hora
exports.time_system:GetSchedules() -- etapas da rotação
exports.time_system:GetScheduleState() -- { enabled, currentIndex, lastTick, gameMinute }Exports de cliente:
exports.time_system:PauseSync("EXTRASUNNY") -- pausa a sincronia. O clima é opcional
exports.time_system:ResumeSync()
exports.time_system:Lock(19, 0, "EXTRASUNNY") -- trava hora e clima neste cliente
exports.time_system:Unlock()
exports.time_system:IsLocked()
exports.time_system:GetZoneWeather()Pausas e travas são liberadas quando o script que as pediu é parado.
GlobalState.Hours, Minutes, Weather e Blackout espelham o estado. Escrever neles pelo servidor também muda a hora e o clima. Weather é ignorado com o clima travado ou com valor fora de WeatherTypes.
Problemas comuns
| Mensagem | Causa |
|---|---|
Você não tem permissão para isso. | O jogador não tem grupo de AdminGroups |
Calma: muitos pedidos seguidos. Espere um instante. | Passou do limite de RateLimits |
Espere a transição do clima atual terminar. | Ainda há uma transição em andamento |
O raio mínimo da zona é 200 m. | Raio abaixo de MinZoneRadius |
A etapa precisa durar pelo menos 10 segundos. | Duração menor que 10 segundos na rotação |
