Como converter um mod de carro single-player do GTA 5 em add-on de FiveM

Por Nilo3D · Atualizado:

Para converter um mod de carro single-player do GTA 5 para FiveM, extraia o arquivo dlc.rpf, coloque os arquivos .yft e .ytd em uma pasta stream e os arquivos .meta em uma pasta data, e escreva um fxmanifest.lua com uma linha data_file por meta. Se o mod substitui um carro original, renomeie os arquivos para um nome de modelo novo e adicione uma entrada no vehicles.meta para ele virar um add-on.

Quais são os passos, em resumo?

  1. Abra o dlc.rpf do mod em uma ferramenta de arquivos RPF e extraia tudo.
  2. Crie uma pasta de resource com as subpastas stream e data.
  3. Mova os arquivos de modelo e de textura (.yft, .ytd) para stream.
  4. Mova os arquivos .meta para data.
  5. Escreva o fxmanifest.lua: cada meta em files e em uma linha data_file.
  6. Se for um mod replace, renomeie os arquivos e escreva uma entrada no vehicles.meta para o nome novo.
  7. Adicione o ensure ao server.cfg, reinicie, dê spawn no carro e leia o console do servidor.

O que tem dentro de um mod de carro single-player?

Um carro add-on para single-player vem como um arquivo dlc.rpf que o jogador adiciona à pasta dlcpacks do jogo. Dentro dele estão os mesmos arquivos de que um resource de FiveM precisa, embrulhados na estrutura de DLC do single-player:

dlc.rpf
  content.xml                     list of every file and its type
  setup2.xml                      name and load order of the pack
  data/                           (or common/data/)
    handling.meta
    vehicles.meta
    carcols.meta
    carvariations.meta
  x64/vehicles.rpf                (or x64/levels/gta5/vehicles/...rpf)
    mycar.yft
    mycar_hi.yft
    mycar.ytd

Os nomes das pastas variam de autor para autor. O arquivo que diz o que é o quê é o content.xml: ele lista cada arquivo de dados com um fileType, e esses nomes de tipo são os mesmos que o FiveM usa nas linhas data_file.

<Item>
  <filename>dlc_mycar:/data/vehicles.meta</filename>
  <fileType>VEHICLE_METADATA_FILE</fileType>
</Item>
<Item>
  <filename>dlc_mycar:/data/carvariations.meta</filename>
  <fileType>VEHICLE_VARIATION_FILE</fileType>
</Item>
<Item>
  <filename>dlc_mycar:/%PLATFORM%/vehicles.rpf</filename>
  <fileType>RPF_FILE</fileType>
</Item>
No dlc.rpfNo resource de FiveM
.yft, .ytd dentro do vehicles.rpfstream/
Modelos das peças de tuning, em um arquivo próprio quando o carro temstream/
Arquivos .metadata/, cada um com uma linha data_file do tipo indicado no content.xml
content.xml, setup2.xmlNão são usados. O fxmanifest.lua faz o trabalho deles.
Text labels (.gxt2)Não são usados. Adicione o nome com uma linha de script, veja abaixo.

Como extraio o dlc.rpf?

O FiveM não carrega arquivos .rpf de dentro de um resource, então os arquivos têm que sair de lá. Qualquer ferramenta de arquivos do GTA V serve. No CodeWalker, abra o RPF Explorer, use File > Open Folder... na pasta onde está o dlc.rpf, abra o arquivo e os arquivos dentro dele, selecione o que quer e extraia com Extract Raw... ou Extract All.... O OpenIV faz o mesmo trabalho.

Os arquivos RPF ficam um dentro do outro: o dlc.rpf contém o vehicles.rpf, que contém os modelos. Continue abrindo até chegar a arquivos .yft, .ytd e .meta soltos. As duas ferramentas são comparadas em CodeWalker vs Sollumz.

Como monto o resource de FiveM?

Organize os arquivos extraídos como em qualquer resource de veículo:

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

Depois escreva o manifest. Cada meta é listado duas vezes: uma em files, para o servidor enviá-lo aos jogadores, e outra em uma linha data_file, para o jogo carregá-lo como o tipo certo.

fx_version 'cerulean'
game 'gta5'

files {
  'data/handling.meta',
  'data/vehicles.meta',
  'data/carcols.meta',
  'data/carvariations.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'
fileType no content.xmlArquivo
HANDLING_FILEhandling.meta
VEHICLE_METADATA_FILEvehicles.meta
CARCOLS_FILEcarcols.meta
VEHICLE_VARIATION_FILEcarvariations.meta
VEHICLE_LAYOUTS_FILEvehiclelayouts.meta

A lista completa de tipos e a ordem em que eles carregam está em fxmanifest.lua e data_file para veículos. Iniciar o resource e dar spawn está em como adicionar um veículo add-on a um servidor FiveM.

Como transformo um mod replace em add-on?

Um mod replace não tem metas nem nome novo. Os arquivos dele têm o nome de um carro original, por exemplo sultan.yft, e o jogo desenha esses arquivos no lugar do original. Enviados por stream a partir de um resource de FiveM eles funcionam do mesmo jeito: todo Sultan do servidor muda. Para manter o carro original e adicionar o seu ao lado dele, dê ao modelo um nome próprio.

  1. Renomeie os arquivos. Os nomes dos arquivos são o nome do modelo.
    sultan.yft      ->  mycar.yft
    sultan_hi.yft   ->  mycar_hi.yft
    sultan.ytd      ->  mycar.ytd
    As texturas dentro do .ytd mantêm os nomes delas. O dicionário é encontrado pelo nome do arquivo, não pelo que tem dentro.
  2. Escreva uma entrada no vehicles.meta. Copie a entrada do carro substituído do vehicles.meta do próprio jogo e troque modelName e txdName pelo nome novo, mais o gameName para o nome de exibição. Deixe handlingId, layout e audioNameHash como estão e o carro anda, tem os assentos e o som do original. Cada campo é explicado em vehicles.meta explicado.
  3. Adicione uma entrada no carvariations.meta com o novo modelName se quiser suas próprias combinações de cores. Veja carvariations e carcols.
  4. Dê a ele um handling próprio só se quiser ajustar. Nesse caso copie também a entrada de handling, com um handlingName novo, e aponte o handlingId para ela.

O nome de exibição vem de um text label. No FiveM, uma linha de script de client adiciona o label:

-- client script: readable name for <gameName>MYCAR</gameName>
AddTextEntry('MYCAR', 'My Car GT')

O que costuma dar errado depois de converter?

SintomaCausaOnde olhar
O console avisa sobre oversized assetsMods de single-player costumam vir com texturas de 4096 e uma malha pesadaComo otimizar um veículo de FiveM
Aparecem peças de tuning de outro carroDois arquivos carcols.meta usam o mesmo ID de kitcarvariations e carcols
O carro não dá spawnUm meta está faltando em files ou em data_file, ou um nome não bateSolução de problemas de veículos
Algumas texturas estão faltandoO mod dependia de um dicionário de texturas compartilhado que estava em outro arquivoAdicione esse .ytd a stream e mantenha o vínculo de pai em txdRelationships.

Mais uma checagem antes de colocar o mod de outra pessoa em um servidor público: leia os termos do autor. Alguns mods de single-player não permitem redistribuição nem uso em servidores.

E se o modelo ainda não for um mod de GTA 5?

Um carro de outro jogo ou um arquivo 3D comum não tem esqueleto, nem shaders do GTA, nem colisão, então não há nada para extrair e reorganizar. Antes ele tem que ser refeito como veículo do GTA em uma ferramenta 3D. Esse processo está em como fazer um veículo de FiveM no Blender com o Sollumz.

Perguntas frequentes

Posso usar um mod de carro single-player do GTA 5 no FiveM?
Sim, se o autor permitir. Os arquivos de modelo e os metas são os mesmos. Eles têm que ser extraídos do dlc.rpf e organizados como um resource com uma pasta stream, uma pasta data e um fxmanifest.lua.
Posso colocar um dlc.rpf na pasta stream?
Não. O FiveM não carrega arquivos .rpf de dentro de um resource. Extraia os arquivos antes.
Como converto um carro replace em add-on?
Renomeie os arquivos .yft, _hi.yft e .ytd para um nome de modelo novo, depois adicione uma entrada no vehicles.meta copiada do carro substituído, com modelName e txdName trocados por esse nome.
Preciso do content.xml e do setup2.xml no FiveM?
Não. Eles pertencem ao sistema de DLC do single-player. No FiveM é o fxmanifest.lua que lista os arquivos e os tipos deles.
De qual tipo de data_file cada meta precisa?
Do mesmo nome de tipo que o content.xml dá a ele: HANDLING_FILE para o handling.meta, VEHICLE_METADATA_FILE para o vehicles.meta, CARCOLS_FILE para o carcols.meta e VEHICLE_VARIATION_FILE para o carvariations.meta.

Fontes

Produtos deste guia

Todos os guias