Adicionar carros à loja de veículos do FiveM (tabela de veículos ESX, QBCore, QBox)
Como adicionar um carro a uma concessionária: as tabelas ESX vehicles e vehicle_categories, entradas shared vehicles.lua do QBCore e QBox, e por que um carro aparece sem preço.
Sintomas típicos:
The addon car works with /car, but the dealership does not sell it. Or it shows with no name, no price, or in the wrong category.Uma concessionária vende o que é listado em seus dados, não o que existe no jogo. Adicionar um carro leva dois passos: o modelo tem que ser transmitido ao jogo, depois tem que ser listado nos dados que seu framework usa. Este artigo cobre o segundo passo para ESX, QBCore e QBox.
Passo um: o modelo deve ser transmitido
Se o modelo não é carregado, a concessionária não pode mostrá-lo, e uma compra não spawna nada. Adicione o carro como um recurso primeiro, e verifique se funciona no jogo:
/car mycarUse o nome de spawn, que vem de vehicles.meta do carro. Se /car falhar, corrija isso antes de tocar na loja, veja adding addon cars.
ESX: a tabela vehicles
A concessionária ESX lê duas tabelas SQL. vehicle_categories contém as categorias mostradas no menu da loja, e vehicles contém os carros.
DESCRIBE vehicle_categories;
DESCRIBE vehicles;Em um banco de dados ESX Legacy padrão, eles se parecem com:
| Tabela | Colunas |
|---|---|
vehicle_categories |
name, label |
vehicles |
name, model, price, category |
Adicione uma categoria se precisar de uma nova:
INSERT INTO vehicle_categories (name, label) VALUES ('mycars', 'My cars');Então adicione o carro:
INSERT INTO vehicles (name, model, price, category)
VALUES ('My Car', 'mycar', 85000, 'mycars');nameé o rótulo mostrado na loja.modelé o nome de spawn, como em/car. Minúscula, exato.priceé um número inteiro.categorydeve corresponder aonamede uma linha emvehicle_categories, ou o carro não aparece em nenhuma categoria.
Reinicie o recurso da concessionária, ou a loja inteira, para que leia a tabela novamente. Sua lista de colunas pode diferir se você usar uma loja de veículos personalizada, então confie em DESCRIBE sobre esta tabela.
Dica: para ver como se parece um carro funcionando, copie os valores de uma linha que já está na loja com
SELECT * FROM vehicles LIMIT 5;e edite-os.
QBCore: shared/vehicles.lua
QBCore mantém sua lista de veículos em um arquivo Lua, qb-core/shared/vehicles.lua. Cada entrada é um carro:
['mycar'] = {
model = 'mycar',
name = 'My Car',
brand = 'Mic',
price = 85000,
category = 'sports',
categoryLabel = 'Sports',
hash = `mycar`,
shop = 'pdm',
},Os campos:
model: o nome de spawn, igual à chave de tabela.nameebrand: o que a loja exibe.price: o preço de venda.categoryecategoryLabel: o grupo no menu.hash: o hash do modelo. A forma de backtick calcula para você.shop: o id da concessionária que o vende, por exemplo a padrão. Um nome de loja que não existe significa que nenhuma loja vende o carro.
O layout exato depende da versão do qb-core. Algumas versões usam uma tabela chaveada pelo modelo, outras uma lista simples. Abra seu próprio arquivo e copie uma entrada vizinha, depois mude os valores, para que a estrutura sempre corresponda.
Após editar, reinicie qb-core e o recurso da concessionária. Reiniciar o core em um servidor ativo desconecta jogadores em algumas configurações, então faça em um horário tranquilo, ou reinicie o servidor inteiro.
QBox: qbx_core veículos compartilhados
QBox mantém veículos em seu próprio core, qbx_core/shared/vehicles.lua. A ideia é a mesma do QBCore: uma entrada com o modelo, nome, marca, preço, categoria e loja. QBox muda seu layout de dados entre versões, então abra o arquivo e copie uma entrada que já funciona em sua versão, depois edite-a.
Reinicie qbx_core e sua concessionária. Não execute uma pasta qb-core separada ao lado dela, veja converting QBCore scripts to QBox.
Scripts de concessionária com sua própria config
Nem toda concessionária usa a lista do framework. Alguns leem seu próprio arquivo de config ou tabela de banco de dados, e a tabela vehicles ou o arquivo compartilhado é ignorado. Verifique primeiro a config do script para uma lista de veículos. Se tiver uma, adicione o carro lá também.
Problemas de nome, preço e categoria
O carro mostra sem nome. O campo name é vazio, ou a concessionária usa o nome de exibição do jogo. Um nome de exibição no jogo vem de AddTextEntry com o gameName do modelo em vehicles.meta. Sem ele a loja pode mostrar NULL ou o modelo. Defina o rótulo em seus dados.
Um carro que custa 0 ou é grátis. O preço está faltando ou não é um número. Remova aspas ao redor dele.
A categoria não mostra. No ESX, o valor category não tem linha em vehicle_categories. No QBCore o rótulo de categoria está faltando, ou a loja filtra por uma categoria que não conhece.
Nome de spawn errado. Mycar e mycar não são iguais em lookups de dados. Use o nome exatamente como definido, em minúsculas.
Comprado, mas sem carro. A compra funcionou e o spawn não. O modelo não é transmitido ao cliente, ou a placa e proprietário não são salvos. Verifique o console e o banco de dados, veja the garage tables.
Manuseio e desempenho de carros addon
Um carro adicionado com manuseio ruim ou modelo pesado prejudica o servidor inteiro. Verifique o manuseio antes de vender, edit the vehicle handling, e teste o modelo para memória de textura, veja oversized assets.
Adicione muitos carros de uma vez
Para um pacote de carros, um loop em SQL economiza tempo no ESX. Escreva as linhas em uma declaração:
INSERT INTO vehicles (name, model, price, category) VALUES
('Car A', 'cara', 60000, 'mycars'),
('Car B', 'carb', 75000, 'mycars'),
('Car C', 'carc', 90000, 'mycars');No QBCore e QBox, cole as entradas uma após a outra no arquivo Lua, com uma vírgula após cada.
Checklist
| Sintoma | Solução |
|---|---|
Carro funciona com /car mas não é vendido |
Adicione-o à tabela vehicles, ou shared/vehicles.lua |
| Carro faltando de uma categoria no ESX | O category deve corresponder a um name em vehicle_categories |
| Sem nome ou preço mostrado | Preencha name e price, com o preço como um número |
| Nada vende o carro no QBCore ou QBox | Verifique se o valor shop corresponde a uma concessionária |
| Compra não spawna nada | O modelo não é transmitido: corrija o carro addon primeiro |
| Dados editados não têm efeito | Reinicie o recurso de dados e a concessionária |
| Erros de arquivo Lua após editar | Verifique vírgulas e chaves ao redor de sua nova entrada |
Respostas rápidas
Por que meu carro addon não está na concessionária?
A loja só lista o que está em seus dados: a tabela vehicles no ESX, ou shared/vehicles.lua no QBCore e QBox. Adicionar o carro ao stream do servidor é um passo separado, e ambos são necessários.
Qual é o nome de modelo que coloco na tabela?
O nome de spawn do veículo, o usado em /car, que é definido no vehicles.meta do veículo. Deve corresponder exatamente, em minúsculas.
Preciso reiniciar o servidor após adicionar um carro?
Reinicie o recurso que contém os dados, e o script da concessionária. No ESX a loja geralmente lê a tabela quando inicia, então reiniciá-la é suficiente.
Scripts sem esse problema
Advanced BoostingBoosting de veículos pelo tablet: contratos da classe D à S+, crews e fila ao vivo.Ver script →
Chameleon Paints82 pinturas camaleão que mudam de cor, num menu de um clique.Ver script →
Shop CreatorMonte uma loja em menos de um minuto — donos, funcionários, cofres e assaltos inclusos.Ver script →