Skip to main content
O five-vehicles é o recurso central de veículos do servidor. Ele controla todo o ciclo de vida de um veículo: compra/aluguel em concessionárias, guarda e retirada em garagens (públicas, de facção/serviço, aéreas e aquáticas), aplicação e cobrança de modificações nas mecânicas, sistema de IPVA, status especiais (apreendido, furtado, desmanchado) e ferramentas administrativas para gerar, renovar e remover veículos de personagens. O cadastro de veículos (a 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 no fxmanifest.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

Cada comando tem enabled, name e permission (qualquer permissão da tabela libera).
Cada concessionária é um bloco em dealerships com coords, permission (nil = livre), blips, modelViewer (ped + veículo exibido) e disabledCategories. Duplique o bloco para criar mais.
garages_types define quais categorias aparecem em cada tipo de garagem (NORMAL, PROPERTY, AIR, WATER). Cada garagem em garages:
Garagens de serviço/aluguel usam type = 'SERVICE' + vehicles = { ['index'] = preço } (frota fixa).
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:
Define apenas as categories (chave => rótulo). A vehlist é dinâmica (gerenciada por /gmanager, persistida em five_vehicles_registered).

Comandos

Os comandos administrativos abaixo são definidos em config/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).
Client: 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 edite config/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 garages ou (recomendado) /gmanager em jogo.
  • Mecânicas: entradas em mechanics (config/mechanics.lua). Lembre: five-bennys ativo desativa a mecânica interna.

Limites de veículos por jogador

Hardcoded em server-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.
Prefira gerenciar veículos e garagens em jogo via /gmanager, evitando reinício do recurso.