Como adicionar carros addon a um servidor FiveM: stream e data files

Adicione carros addon ao FiveM passo a passo: a pasta stream, vehicles.meta, carvariations.meta, carcols.meta, handling.meta, linhas data_file no fxmanifest, addon vs replace.

Você tem um pacote de carros que quer no seu servidor, e a pasta contém arquivos como .yft, .ytd e vários arquivos .meta. Este guia explica onde cada arquivo vai, o que o fxmanifest.lua precisa e como spawnar o carro, com a diferença entre carros addon e replace.

O que um pacote de carros addon contém

Um carro vem em dois tipos de arquivos:

  • Arquivos de modelo e textura, que vão em uma pasta stream: mycar.yft (o modelo), mycar_hi.yft (o modelo de alto detalhe), mycar.ytd (texturas) e às vezes arquivos .ydr ou .ytyp.
  • Arquivos de dados, que vão em uma pasta data: vehicles.meta, carvariations.meta, carcols.meta e handling.meta, e às vezes vehiclelayouts.meta.

O primeiro conjunto é como o carro se parece, o segundo conjunto é o que ele é: seu nome, cores, manuseio e assentos.

A estrutura de pastas

Crie um recurso para o carro, ou um para um pacote inteiro:

text
resources/[cars]/mycar/
  fxmanifest.lua
  stream/
    mycar.yft
    mycar_hi.yft
    mycar.ytd
  data/
    vehicles.meta
    carvariations.meta
    carcols.meta
    handling.meta

Arquivos em stream são enviados aos jogadores automaticamente. Você não os lista no manifesto. Arquivos em data não são streamed, e o manifesto deve declarar-los.

O fxmanifest.lua

lua
fx_version 'cerulean'
game 'gta5'

files {
    'data/vehicles.meta',
    'data/carvariations.meta',
    'data/carcols.meta',
    'data/handling.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

O bloco files {} disponibiliza os arquivos ao cliente do jogo. Cada linha data_file diz ao jogo qual é o tipo de um arquivo. Duas regras importam:

  • Cada arquivo precisa de ambas: uma entrada em files e uma linha data_file com o tipo certo.
  • Um pacote com muitos carros geralmente tem uma pasta data por carro. Você pode usar um padrão como 'data/**/*.meta' em files {}, mas as linhas data_file para esses arquivos ainda devem ser escritas, uma por tipo, e as linhas de tipo aceitam o mesmo padrão.
lua
files { 'data/**/*.meta' }

data_file 'HANDLING_FILE' 'data/**/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/**/vehicles.meta'
data_file 'CARCOLS_FILE' 'data/**/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/**/carvariations.meta'

Se o pacote também tem um vehiclelayouts.meta, declare-o também, com data_file 'VEHICLE_LAYOUTS_FILE' 'data/vehiclelayouts.meta'.

Inicie-o e spawnei-o

Em server.cfg, adicione o recurso:

cfg
ensure mycar

O nome da pasta de recurso e o nome do ensure devem corresponder. Se você usar uma pasta com colchetes como [cars], ensure [cars] inicia tudo dentro dela.

O nome de spawn é o modelName em vehicles.meta:

xml
<Item>
  <modelName>mycar</modelName>
  <txdName>mycar</txdName>
  <handlingId>MYCAR</handlingId>
  ...
</Item>

Aqui você o spawnará com mycar. Em um script:

lua
local model = joaat('mycar')
lib.requestModel(model)
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)

lib.requestModel é de ox_lib. Sem ela, chame RequestModel(model) e aguarde até que HasModelLoaded(model) seja verdadeiro. A maioria dos menus de admin e o menu do txAdmin spawnam um carro do mesmo nome.

Dica: o modelName, os nomes dos arquivos .yft/.ytd e o txdName devem todos concordar. Uma incompatibilidade é a primeira coisa a verificar quando um carro não aparece.

Carros addon versus carros replace

Um carro addon tem um novo nome que o jogo base não usa, por exemplo mycar. Ele precisa dos arquivos de dados acima, e adiciona um carro à lista. Tanto seu novo carro quanto os carros originais existem. Esta é a escolha correta para quase todos os carros hoje.

Um carro replace usa os nomes dos arquivos de um carro do jogo base, como sultan.yft, e os coloca em uma pasta stream. O FiveM então carrega o seu em vez do original, em todos os lugares onde esse carro apareça, incluindo tráfego. Geralmente não precisa de vehicles.meta para o modelo, já que o jogo já conhece o nome. Um carro replace apenas muda a aparência. Se você quer outro manuseio, você precisa do handling.meta correspondente com o ID de manuseio original.

Não misture as duas ideias em uma pasta. Um pacote que mistura arquivos replace e addon é uma fonte comum de bugs confusos.

Verifique o resultado

  • Inicie o servidor e leia o console. Erros de recurso, como um arquivo faltante listado em files, aparecem ao iniciar. Se o recurso não inicia, veja couldn't start resource.
  • Entre e spawnei o carro. Se um carro não for encontrado, o nome não corresponde ao modelName, ou o recurso não foi iniciado.
  • Abra as cores e manuseio do carro no jogo para verificar se os arquivos carcols.meta e handling.meta estão em uso.

Problemas comuns

  • O carro não existe. Verifique ensure, as entradas de files e o modelName. Um erro de digitação em um caminho em files para o recurso.
  • O carro é invisível, branco ou tem texturas erradas. O .ytd está faltando ou nomeado diferentemente do modelo. Veja oversized assets se também ver avisos de streaming.
  • O carro se comporta como um carro padrão. O handling.meta não está declarado, ou seu handlingId não corresponde ao de vehicles.meta.
  • Um carro baseado em DLC mostra como quebrado. Alguns carros precisam de uma build de jogo mais nova. Defina uma com sv_enforceGameBuild em server.cfg: veja sv_enforceGameBuild and DLC.

Checklist

Sintoma Solução
Recurso não inicia Verifique se cada caminho em files {} existe e o manifesto não tem erro de digitação
Carro não pode ser spawned Spawnei com o modelName de vehicles.meta; ensure o recurso
Carro é branco ou não tem texturas Verifique o arquivo .ytd e seu nome contra o modelo
Carro se comporta errado Adicione a linha HANDLING_FILE e corresponda o handlingId
Sem cores ou cores erradas Adicione linhas CARCOLS_FILE e VEHICLE_VARIATION_FILE
Carro original mudou Você usou um nome replace: renomeie os arquivos e o modelo para um addon
Carro quebrado com um modelo DLC Aumente a build do jogo com sv_enforceGameBuild

Respostas rápidas

Qual nome uso para spawnar um carro addon?

O valor modelName em vehicles.meta. Se disser <modelName>mycar</modelName>, você o spawnará com mycar, que deve corresponder aos nomes dos arquivos .yft e .ytd também.

Qual é a diferença entre um carro addon e um carro replace?

Um carro replace sobrescreve um carro do jogo base usando seus nomes de arquivo, então o original se vai. Um carro addon tem um novo nome único e seus próprios arquivos meta, e fica ao lado dos carros originais.

Meu carro spawnará mas dirige errado ou fica branco. O que devo verificar?

Manuseio errado aponta para handling.meta e sua linha data_file. Um carro branco ou com textura faltando aponta para um .ytd faltante ou um nome que não corresponde ao modelo.

Scripts sem esse problema

Chameleon Paints82 pinturas camaleão que mudam de cor, num menu de um clique.Ver script →Advanced BoostingBoosting de veículos pelo tablet: contratos da classe D à S+, crews e fila ao vivo.Ver script →Car BombPlante, detecte e desarme bombas em veículos — com celular detonador e minigame de C4.Ver script →

Continue lendo