__resource.lua para fxmanifest.lua: como converter um script antigo

Script FiveM antigo ainda usa __resource.lua e mostra um aviso de deprecated? Como convertê-lo para fxmanifest.lua com fx_version, game, lua54, ui_page e files.

Você inicia um script antigo e o console avisa que ainda usa __resource.lua, que é deprecated. O script pode ainda ser executado, mas está preso no formato de manifest antigo e não pode usar opções mais novas como Lua 5.4. Este guia o converte para fxmanifest.lua em alguns minutos.

O que mudou

Todo recurso precisa de um manifest que diga ao FiveM quais arquivos carregar. O formato antigo era __resource.lua. O formato atual é fxmanifest.lua. As diretivas que você conhece (client_script, server_script, ui_page, files) são as mesmas. O que muda é o cabeçalho.

Um manifest antigo se parece com isto:

lua
resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937'

client_script 'client.lua'
server_script 'server.lua'

ui_page 'html/index.html'
files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

O novo cabeçalho

Substitua a linha resource_manifest_version por duas linhas:

lua
fx_version 'cerulean'
game 'gta5'

fx_version é obrigatório. Ele seleciona o comportamento do manifest, e cerulean é a versão que os scripts atuais usam. game 'gta5' diz que o recurso é para GTA V. O UUID antigo em resource_manifest_version é substituído por fx_version: você não precisa traduzi-lo para um nome de versão antiga específico, apenas delete-o.

O arquivo convertido completo

lua
fx_version 'cerulean'
game 'gta5'

lua54 'yes'

author 'Your name'
description 'What the resource does'
version '1.0.0'

client_scripts {
    'client.lua',
}

server_scripts {
    'server.lua',
}

ui_page 'html/index.html'

files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

Notas sobre cada parte:

  • client_scripts e server_scripts recebem uma lista. O singular client_script 'file.lua' ainda funciona para um arquivo.
  • shared_scripts carrega em ambos os lados. Um import de framework como '@ox_lib/init.lua' vai lá.
  • ui_page aponta para o arquivo HTML da NUI. Cada arquivo que a página carrega (JS, CSS, imagens, fontes) deve estar em files, ou não é enviado para o jogador. Wildcards funcionam: 'html/**/*'.
  • files também é onde você lista dados que um cliente precisa mas não executa, como arquivos meta.
  • author, description e version são opcionais e apenas informativos.

Lua 5.4

lua54 'yes' faz o recurso ser executado no Lua 5.4. Muitos recursos atuais o exigem. Ligá-lo para um script antigo é geralmente seguro, mas verifique duas coisas: um script que depende de comportamento antigo de Lua 5.3 pode precisar de uma pequena correção, e scripts que usam ox_lib precisam que Lua 5.4 seja ativado. Deixe de fora se o script antigo se comportar diferentemente com ele, e teste-o.

Mapas, arquivos de dados e ativos de stream

Se o manifest antigo tiver linhas data_file para meta de veículo ou arma, mantenha-as. Elas têm a mesma sintaxe em fxmanifest.lua:

lua
files {
    'data/vehicles.meta',
    'data/handling.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'

Modelos em stream e texturas em uma pasta stream não precisam de nenhuma entrada. Para um recurso somente de mapa, adicione também this_is_a_map 'yes'.

Remova o arquivo antigo

Após a conversão, delete __resource.lua da pasta. Deixar ambos os arquivos no lugar é confuso para quem mantiver o servidor mais tarde, e apenas um deles deve descrever o recurso.

Então reinicie o recurso:

text
refresh
ensure my_script

refresh é necessário porque o manifest mudou. Se o manifest tiver um erro, o recurso não iniciará: veja Não foi possível iniciar o recurso para ler o erro acima dessa linha.

Erros comuns após a conversão

  • Um fx_version ou game ausente. O manifest é rejeitado.
  • Uma vírgula ausente dentro de { }. Cada entrada em uma lista é separada por uma vírgula.
  • Arquivos faltando de files. O NUI carrega mas imagens ou scripts estão em branco, porque a página pediu algo que não foi enviado. Verifique o console F8 e o NUI devtools para solicitações falhadas.
  • Uma dependência que não é declarada. Adicione dependency 'ox_lib' se o script a usa, para que a ordem de inicialização seja verificada. Veja Não foi possível encontrar dependência.

Atenção: não defina fx_version para um nome muito antigo copiado de um tutorial de 2019 apenas para corresponder à idade do script. Use cerulean e corrija qualquer coisa que quebrar.

Checklist

Sintoma Correção
Console avisa sobre __resource.lua Crie fxmanifest.lua, delete o arquivo antigo
Linha resource_manifest_version Substitua por fx_version 'cerulean' e game 'gta5'
NUI em branco após a conversão Liste cada arquivo NUI em files e mantenha ui_page
Funções ox_lib ausentes Adicione lua54 'yes' e o script compartilhado @ox_lib/init.lua
Recurso não encontrado após a mudança Execute refresh, então ensure
Recurso não inicia Leia as linhas acima de Couldn't start resource

Respostas rápidas

__resource.lua ainda é suportado?

FiveM ainda o lê para recursos antigos, mas é deprecated e imprime um aviso. Novos recursos como lua54 existem apenas em fxmanifest.lua, portanto converta-o.

Qual fx_version devo usar?

cerulean é a escolha comum hoje. É a versão que a maioria dos scripts atuais declara, e funciona em um artefato de servidor atual.

Tenho que manter resource_manifest_version?

Não. fx_version a substitui. Delete a linha resource_manifest_version quando você converter.

Scripts sem esse problema

Clothing DesignerCrie roupas dentro do FiveM — pincel, camadas, importação de imagens e IA — e vista na hora.Ver script →Drag RopeArraste jogadores com uma corda e amarre-os a veículos, com o comprimento da corda ao vivo.Ver script →Item Creator V2Crie itens usáveis com animações, props, efeitos e muito mais — sem escrever código.Ver script →

Continue lendo