vehlist) e a maioria das garagens são gerenciados em tempo real (em jogo) pelos comandos de administração, persistidos em banco de dados e sincronizados com os clientes via StateBag, não exigindo reinício do recurso. A UI é uma aplicação React (NUI) em web-side/.
Funcionalidades
Concessionárias
Compra, test drive e revenda de veículos com estoque configurável e descontos por permissão.
Garagens
Guarda e retirada em garagens públicas, de facção/serviço, aéreas e aquáticas.
Aluguel
Frotas fixas de serviço com placas permanentes e empréstimo de chave.
Mecânicas / Tunagem
Aplicação e cobrança de modificações (desativada quando o
five-bennys está iniciado).IPVA
Imposto periódico calculado sobre o preço do veículo.
Status especiais
Apreendido, furtado e desmanchado, com multas associadas.
Venda entre jogadores
Sistema opcional de venda de veículos entre personagens.
Gerência em jogo
CRUD de veículos e garagens via comandos de admin, persistido e sincronizado por StateBag.
A mecânica deste recurso é automaticamente desativada quando o recurso
five-bennys está iniciado.Dependências
Declaradas nofxmanifest.lua.
vrp
Framework base (
@vrp/lib/utils.lua, @vrp/config/Global.lua).oxmysql
Acesso ao banco de dados.
Dependências opcionais detectadas em runtime via
GetResourceState:- five-bennys: quando iniciado, desativa a mecânica interna.
- five-bank: checagem de impostos/multas antes de retirar veículos.
- core_logs: logs de compra/venda/aluguel.
- propertys: garagens vinculadas a casas.
Configuração
config/general.lua — Configurações gerais
config/general.lua — Configurações gerais
config/commands.lua — Comandos e impostos
config/commands.lua — Comandos e impostos
Cada comando tem
enabled, name e permission (qualquer permissão da tabela libera).config/dealership.lua — Concessionárias
config/dealership.lua — Concessionárias
dealerships com coords, permission (nil = livre), blips, modelViewer (ped + veículo exibido) e disabledCategories. Duplique o bloco para criar mais.config/garages.lua — Garagens
config/garages.lua — Garagens
garages_types define quais categorias aparecem em cada tipo de garagem (NORMAL, PROPERTY, AIR, WATER). Cada garagem em garages:type = 'SERVICE' + vehicles = { ['index'] = preço } (frota fixa).config/mechanics.lua — Mecânicas
config/mechanics.lua — Mecânicas
A mecânica só funciona se o
five-bennys NÃO estiver iniciado. DefaultTunnings é a tabela de preços (cores, luzes, performance, rodas, insulfilm, etc.). Cada mecânica em mechanics:config/vehicles.lua — Categorias
config/vehicles.lua — Categorias
Define apenas as
categories (chave => rótulo). A vehlist é dinâmica (gerenciada por /gmanager, persistida em five_vehicles_registered).config/config.ui.js — Imagens da UI
config/config.ui.js — Imagens da UI
Comandos
Os comandos administrativos abaixo são definidos emconfig/commands.lua.
Keybinds: trancar/destrancar veículo =
L (remapeável); menu do veículo = M (general.lua).Localizações
Coordenadas reais usadas no config (formato{x, y, z, heading}). As garagens dinâmicas criadas por /gmanager ficam em five_vehicles_garages (banco) e não aparecem aqui.
Test drive, concessionária e mecânica
Garagens (config/garages.lua, tabela garages)
São 60 garagens ativas no config (campo open = ponto de acesso; cada uma tem spawns próprios). As de facção/órgão usam blip = false; várias garagens públicas têm blip (icon 357). Pontos de acesso (open):
Os blocos de teste drive/garagens de exemplo no comentário do topo do arquivo (ex.:
{1297.75,-3344.01,...}) e as garagens comentadas (BOPE exclusiva, Osaka serviço, Kitty Café) não estão ativos.Exports
O recurso expõe dezenas de exports server-side, entre eles:- Consulta:
getVehicleInfo(hashOrIndex),getVehicleList(),getVehicleIdentity(plate),getVehicleData(plate),getCharacterVehicles(characterId, includeBorrowed). - Criação:
generateVehicle(characterId, model, customColors, customPlate),giveVehicle(characterId, model)(retorna{ok, plate|error}),generateRentalVehicle(...). - Manutenção:
updateRentalVehicleDays,updateVehicleTax,updateVehicleStatus,updateVehicleMods,changeVehiclePlateIRT,transferVehicle,deleteVehicle. - Garagens:
insertGarage(garage),removeGarage(gId).
getVehicleInfo, getVehicleList, renderGarage, unrenderGarage.
Eventos
five-vehicles:vehicleCreated(server): disparado quando um veículo é criado. Args:plate, netId.- Eventos de compatibilidade com a antiga API “garages”:
garages:Key,garages:Delete,garages:ChangePlate, etc.
As ações de gameplay (comprar, alugar, guardar/retirar, tunar) são chamadas via Tunnel (tabela
SV), não por net events públicos.Banco de Dados
As tabelas abaixo são criadas automaticamente na inicialização.Customização
Adicionar/editar veículos (vehlist)
Não editeconfig/vehicles.lua manualmente, use /gmanager (aba Veículos) em jogo. Campos persistidos: spawn (index, único), name, category, paymentType (primary/secondary=diamantes), price, gemstone, weightTrunk/weightGloves, class, mode, outDealership. As imagens vêm de config.ui.js → {VEHICLE_IMAGE_URL}/{spawn}.png.
Adicionar concessionárias / garagens / mecânicas
- Concessionárias: duplique um bloco em
dealerships(config/dealership.lua). - Garagens: bloco estático em
garagesou (recomendado)/gmanagerem jogo. - Mecânicas: entradas em
mechanics(config/mechanics.lua). Lembre:five-bennysativo desativa a mecânica interna.
Limites de veículos por jogador
Hardcoded emserver-side/framework.lua (permissionLimits): padrão 10; vip1=20, vip2=30, vip3=40, admin=50.
Multas por status (server-side/framework.lua)
Apreendido = 25% do preço, furtado = 10%, desmanchado = 30%, IPVA atrasado =vehicleTaxes.percentFromPrice.

