lvc — Manual

Luxart Vehicle Control: controlador de sirenes, luzes e setas para veículos de emergência, com menu RageUI, HUD em NUI e perfis salvos por veículo no lado do cliente.


Sumário

  1. Dependências
  2. Instalação
  3. Configuração
  4. Controles
  5. Comandos
  6. Sirenes e perfis de veículo
  7. Armazenamento (KVP)
  8. Plug-ins
  9. Entrypoints para outros recursos
  10. Localização
  11. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
RageUISimDeclarado em dependencies. Todo o menu de configuração é construído com ele

O recurso é standalone quanto a framework: não usa qb-core, ESX, inventário nem target.


Instalação

  1. Copie o recurso para resources/ com o nome de pasta exatamente lvc. O cl_lvc.lua verifica GetCurrentResourceName() == 'lvc' e se recusa a funcionar com outro nome.
  2. Adicione ao server.cfg, com o RageUI iniciado antes:
    ensure RageUI
    ensure lvc
  3. Conflito — não rode junto com o lux_vehcontrol. O LVC detecta o recurso rodando, aborta a inicialização e imprime um erro no console.
  4. Defina o community_id em SETTINGS.lua antes de subir em produção (ver abaixo).
  5. Não há SQL nem itens de inventário a cadastrar.

Configuração

Arquivo principal: SETTINGS.lua.

Identidade e menu

CampoTipoObrigatórioDescrição
community_idstringSimPrefixo dos dados salvos no cliente (KVP). Evita conflito entre servidores diferentes. Sem espaços. Uma vez definido, não mude — os jogadores perdem todos os perfis salvos. Se ficar vazio, o LVC não inicializa
open_menu_keystringSimTecla padrão do menu. Padrão: 'O'. O jogador pode remapear em Configurações > Teclas > FiveM

Lockout

CampoTipoObrigatórioDescrição
lockout_default_hotkeystringSimTecla padrão do travamento de controles. Padrão: vazio (sem tecla; o jogador define a dele)
locked_press_countnumberSimApós quantas teclas pressionadas com o controlador travado o primeiro lembrete aparece
reminder_ratenumberSimDe quantas em quantas teclas o lembrete se repete depois disso

HUD

CampoTipoObrigatórioDescrição
hud_first_defaultboolSimEstado inicial da HUD no primeiro uso. Depois disso, vale a preferência salva no KVP do jogador

Sirene principal

CampoTipoObrigatórioDescrição
main_siren_settings_masterswitchboolSimLibera o jogador a renomear tons e trocar o modo de cada tom (Cycle / Button)
park_kill_masterswitchboolSimLibera o jogador a alterar o park kill. Com false, o comportamento fica travado no default
park_kill_defaultboolSimEstado padrão do park kill (corta a sirene com o veículo estacionado)
airhorn_interrupt_masterswitchboolSimLibera o jogador a alterar a interrupção da sirene pela buzina
airhorn_interrupt_defaultboolSimEstado padrão da interrupção por buzina
reset_to_standby_masterswitchboolSimLibera o jogador a alterar o reset-to-standby
reset_to_standby_defaultboolSimQuando true, desligar a sirene volta ao tom padrão em vez de lembrar o último tom usado

Tons manuais, auxiliar e teclas numéricas

CampoTipoObrigatórioDescrição
custom_manual_tones_master_switchboolSimLibera o menu de escolha dos tons manuais primário e secundário
custom_aux_tones_master_switchboolSimLibera o menu de escolha do tom auxiliar (seta para cima)
main_siren_set_register_keys_set_defaultsboolSimQuando true, registra as teclas 1–0 da linha numérica como atalhos diretos para os tons de sirene. Com false, os comandos continuam existindo mas nascem sem tecla

Setas e pisca-alerta

CampoTipoObrigatórioDescrição
hazard_keynumberSimControl id do pisca-alerta. Padrão: 202 (Backspace)
left_signal_keynumberSimControl id da seta esquerda. Padrão: 84
right_signal_keynumberSimControl id da seta direita. Padrão: 83
hazard_hold_durationnumber (ms)SimTempo que a tecla do pisca-alerta precisa ficar pressionada para alternar. Padrão: 750

Áudio

CampoTipoObrigatórioDescrição
button_sfx_scheme_choicesarraySimEsquemas de SFX disponíveis. Cada item precisa bater exatamente com um nome de pasta em UI/sounds/. Padrão: SSP2000, SSP3000, Cencom, ST300
default_sfx_scheme_namestringSimEsquema usado por padrão
default_on_volumenumberSimVolume do som de ligar (0.0–1.0)
default_off_volumenumberSimVolume do som de desligar
default_upgrade_volumenumberSimVolume ao subir de tom
default_downgrade_volumenumberSimVolume ao descer de tom
default_hazards_volumenumberSimVolume do pisca-alerta
default_lock_volumenumberSimVolume do som de travar/destravar os controles
default_lock_reminder_volumenumberSimVolume do lembrete de controlador travado
default_reminder_volumenumberSimVolume do lembrete periódico de sirene ligada

Plug-ins

CampoTipoObrigatórioDescrição
plugins_installedboolSimHabilita o menu de plug-ins. Ver Plug-ins

Metadados do fxmanifest.lua

Três valores de comportamento ficam no manifesto, não no SETTINGS.lua:

CampoDescrição
beta_checkingNotifica sobre revisões beta e novas betas
experimentalSilencia o aviso de versão instável no console do servidor
debug_modePrints mais verbosos no console do cliente

Controles

Os controles só respondem se o jogador for motorista de um veículo de classe 18 (emergência) e o controlador não estiver travado.

Control idTecla padrãoDescrição
85 (INPUT_VEH_RADIO_WHEEL)QLiga/desliga as luzes de emergência (master switch). Nada mais funciona com as luzes desligadas
19 (INPUT_CHARACTER_WHEEL)Left AltLiga/desliga a sirene principal
172 (INPUT_CELLPHONE_UP)Seta para cimaLiga/desliga o tom auxiliar (powercall)
80 (INPUT_VEH_CIN_CAM)RCom a sirene ligada, avança para o próximo tom. Com a sirene desligada, toca o tom manual enquanto pressionado
86 (INPUT_VEH_HORN)EBuzina / airhorn
1 a 0Vão direto para o 1º até o 10º tom aprovado do veículo. Registrados por main_siren_set_register_keys_set_defaults
84 (left_signal_key)conforme binding do jogoSeta esquerda
83 (right_signal_key)conforme binding do jogoSeta direita
202 (hazard_key)Backspace (segurar)Pisca-alerta. Precisa ficar pressionada por hazard_hold_duration
OAbre o menu do LVC (open_menu_key)
nenhumaTrava/destrava os controles. Sem tecla padrão; definida pelo jogador ou por lockout_default_hotkey

Os controls 85, 19, 172, 80 e 86 são interceptados pelo LVC via DisableControlAction, então respondem à tecla que o jogador tiver mapeada para eles no GTA V. As teclas registradas via keybind (menu, lock e tons 1–0) podem ser remapeadas em Configurações > Teclas > FiveM.


Comandos

ComandoPermissãoDescrição
/lvclockTodosTrava e destrava os controles do LVC. Também é o comando ligado à tecla de lockout
/lvcdebugTodosAlterna o modo debug no cliente e força um refresh do perfil do veículo
/lvcfactoryresetTodosApaga todos os dados salvos do LVC no cliente e volta às configurações de fábrica. Pede confirmação
/lvcdumpkvpTodosImprime no console do cliente todos os KVPs salvos do LVC. Ferramenta de diagnóstico

Os nomes de /lvclock e /lvcdebug vêm do arquivo de locale (command.lock_command e command.debug_command) e mudam se o locale for trocado.

Além desses, o recurso registra dinamicamente os comandos _lvc_siren_1 até _lvc_siren_13, um por tom possível. Eles existem apenas para servir de alvo dos keybinds — não são feitos para serem digitados.


Sirenes e perfis de veículo

Arquivo: SIRENS.lua.

Catálogo de tons (SIRENS)

Lista fixa de 14 tons, cada um com Name (nome exibido no menu), String (o som do jogo) e Ref. Você pode renomear e trocar os sons, mas a ordem dos índices é o que o SIREN_ASSIGNMENTS referencia.

IDNome padrãoIDNome padrão
1Airhorn8CustomD
2Wail9CustomE
3Yelp10CustomF
4Priority11Powercall
5CustomA12Fire Horn
6CustomB13Fire Yelp
7CustomC14Fire Wail

Atribuição por veículo (SIREN_ASSIGNMENTS)

Define quais tons cada veículo pode usar, por gameName. A chave DEFAULT vale para qualquer veículo de emergência sem entrada própria.

SIREN_ASSIGNMENTS = {
    ['DEFAULT']  = { 1, 2, 3, 4 },
    ['FIRETRUK'] = { 12, 13, 14, 11 },
    ['AMBULAN']  = { 1, 2, 3, 4, 11 },
    ['LGUARD']   = { 1, 2, 3, 4, 11 },
}

Para liberar tons específicos a um veículo, adicione uma linha com o gameName dele e a lista de IDs do catálogo. O primeiro item da lista é sempre o airhorn/manual; os demais viram os tons acessíveis pelas teclas numéricas, na ordem em que aparecem.


Armazenamento (KVP)

O LVC não usa banco de dados. Todas as preferências do jogador (volume, esquema de SFX, HUD, nomes de tons, perfis por veículo) são gravadas no client-side KVP do FiveM, com o prefixo definido em community_id.

Consequências práticas:

  • as configurações acompanham o jogador, não o personagem;
  • trocar o community_id depois do servidor no ar apaga o acesso a tudo que já foi salvo;
  • /lvcfactoryreset é a única forma de o jogador limpar esses dados.

Plug-ins

Com plugins_installed = true, o menu do LVC ganha uma aba de plug-ins, e PLUGINS/cl_plugins.lua monta os botões dos plug-ins encontrados (traffic advisor, extra controls, blackout, etc.).

Nesta fork os plug-ins estão desabilitados: plugins_installed = false no SETTINGS.lua e, no fxmanifest.lua, as linhas que carregam os arquivos dos plug-ins estão comentadas:

-- 'PLUGINS/**/*.json'
-- '/PLUGINS/**/SETTINGS.lua',
-- '/PLUGINS/**/cl_*.lua',
-- '/PLUGINS/**/sv_*.lua'

Para usar plug-ins, descomente essas linhas, coloque o plug-in em PLUGINS/ e ligue o plugins_installed.


Entrypoints para outros recursos

O LVC não expõe exports. A comunicação é feita por eventos de rede, usados internamente para sincronizar o estado dos veículos entre os clientes.

-- Cliente: força o LVC a recarregar o perfil, os tons e a HUD do veículo atual.
-- É o gancho usado quando outro recurso troca o veículo do jogador.
TriggerEvent('lvc:onVehicleChange')

Os demais eventos (lvc:GetRepoVersion_s e os de broadcast de estado de sirene/setas) são internos ao par cliente-servidor do próprio recurso.


Localização

Os arquivos de idioma ficam em UI/locale/:

  • en.lua — inglês
  • de.lua — alemão
  • pt-br.lua — português do Brasil (o que está ativo nesta fork)

Diferente dos recursos que usam ox_lib, o idioma não é escolhido por convar: o arquivo é carregado direto no fxmanifest.lua. Para trocar, edite a linha do shared_script e reinicie o recurso:

shared_script {
    '/UTIL/semver.lua',
    '/UI/cl_locale.lua',
    '/UI/locale/pt-br.lua',	-- Set locale / language file here.
    'SETTINGS.lua',
}

Lembre que os nomes dos comandos /lvclock e /lvcdebug vêm do arquivo de locale — trocar o idioma pode trocar os comandos.


Estrutura de arquivos

lvc/
├── SETTINGS.lua              — community_id, teclas, masterswitches, volumes e plug-ins
├── SIRENS.lua                — catálogo dos 14 tons e atribuição de tons por veículo
├── UTIL/
│   ├── cl_lvc.lua            — núcleo: input do jogador, estado das sirenes e setas, broadcast, comandos e keybinds
│   ├── cl_storage.lua        — leitura/gravação de KVP, perfis de veículo, /lvcfactoryreset e /lvcdumpkvp
│   ├── cl_utils.lua          — tons aprovados por veículo, prints e helpers
│   ├── sv_lvc.lua            — sincronia de estado entre clientes e checagem de versão no repositório
│   └── semver.lua            — comparação de versões
├── UI/
│   ├── cl_ragemenu.lua       — menu RageUI e registro da tecla de abertura
│   ├── cl_hud.lua            — HUD em NUI e notificações
│   ├── cl_audio.lua          — reprodução dos SFX e volumes
│   ├── cl_locale.lua         — motor de tradução (Lang:t)
│   ├── locale/               — en.lua, de.lua, pt-br.lua
│   ├── html/                 — index.html, lvc.js, style.css da HUD
│   ├── sounds/               — SFX por esquema (SSP2000, SSP3000, Cencom, ST300) e sons gerais
│   └── textures/             — ícones da HUD (variantes day/night)
├── PLUGINS/
│   └── cl_plugins.lua        — monta a aba de plug-ins do menu (inativo enquanto plugins_installed = false)
├── stream/
│   └── lvc.ytd               — texturas da HUD
└── fxmanifest.lua            — versão, beta_checking, experimental, debug_mode e arquivo de locale ativo