__resource.lua a fxmanifest.lua: cómo convertir un script antiguo

¿Script antiguo de FiveM aún usa __resource.lua y muestra una advertencia deprecada? Cómo convertirlo a fxmanifest.lua con fx_version, game, lua54, ui_page y files.

Inicias un script antiguo y la consola advierte que aún usa __resource.lua, que está deprecado. El script puede seguir funcionando, pero está atascado en el formato de manifiesto antiguo y no puede usar opciones más nuevas como Lua 5.4. Esta guía lo convierte a fxmanifest.lua en unos minutos.

Qué cambió

Cada recurso necesita un manifiesto que le diga a FiveM qué archivos cargar. El formato antiguo era __resource.lua. El formato actual es fxmanifest.lua. Las directivas que conoces (client_script, server_script, ui_page, files) son las mismas. Lo que cambia es el encabezado.

Un manifiesto antiguo se ve así:

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',
}

El nuevo encabezado

Reemplaza la línea resource_manifest_version con dos líneas:

lua
fx_version 'cerulean'
game 'gta5'

fx_version es requerido. Selecciona el comportamiento del manifiesto, y cerulean es la versión que usan los scripts actuales. game 'gta5' dice que el recurso es para GTA V. El UUID antiguo en resource_manifest_version se reemplaza por fx_version: no necesitas traducirlo a un nombre de versión antiguo específico, simplemente elimínalo.

El archivo completo convertido

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 y server_scripts toman una lista. El singular client_script 'file.lua' aún funciona para un archivo.
  • shared_scripts carga en ambos lados. Una importación de framework como '@ox_lib/init.lua' va allí.
  • ui_page apunta al archivo HTML de la NUI. Cada archivo que la página carga (JS, CSS, imágenes, fuentes) debe estar en files, o no se envía al jugador. Los comodines funcionan: 'html/**/*'.
  • files es también donde enumeras datos que un cliente necesita pero no ejecuta, como archivos meta.
  • author, description y version son opcionales e informativos.

Lua 5.4

lua54 'yes' hace que el recurso se ejecute en Lua 5.4. Muchos recursos actuales lo requieren. Activarlo para un script antiguo es generalmente seguro, pero verifica dos cosas: un script que depende del comportamiento antiguo de Lua 5.3 puede necesitar una pequeña corrección, y los scripts que usan ox_lib necesitan Lua 5.4 habilitado. Omítelo si el script antiguo se comporta diferente con él, y pruébalo.

Mapas, archivos de datos y activos transmitidos

Si el manifiesto antiguo tiene líneas data_file para vehículos o meta de armas, mantenlas. Tienen la misma sintaxis en 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'

Los modelos y texturas transmitidos en una carpeta stream no necesitan entrada alguna. Para un recurso solo de mapas, agrega this_is_a_map 'yes' también.

Elimina el archivo antiguo

Después de convertir, elimina __resource.lua de la carpeta. Dejar ambos archivos en su lugar es confuso para quien mantenga el servidor más tarde, y solo uno de ellos debe describir el recurso.

Luego reinicia el recurso:

text
refresh
ensure my_script

refresh es necesario porque el manifiesto cambió. Si el manifiesto tiene un error, el recurso no se iniciará: ver Couldn't start resource para leer el error sobre esa línea.

Errores comunes después de convertir

  • Un fx_version o game faltante. El manifiesto se rechaza.
  • Una coma faltante dentro de { }. Cada entrada en una lista se separa por una coma.
  • Archivos faltantes de files. La NUI carga pero las imágenes o secuencias de comandos están en blanco, porque la página pidió algo que no se envió. Verifica la consola F8 y las herramientas de desarrollo de NUI para solicitudes fallidas.
  • Una dependencia que no está declarada. Agrega dependency 'ox_lib' si el script la usa, para que se verifique el orden de inicio. Ver Could not find dependency.

Cuidado: no establezcas fx_version con un nombre muy antiguo copiado de un tutorial de 2019 solo para que coincida con la edad del script. Usa cerulean y arregla todo lo que se rompa.

Lista de verificación

Síntoma Solución
La consola advierte sobre __resource.lua Crea fxmanifest.lua, elimina el archivo antiguo
Línea resource_manifest_version Reemplaza con fx_version 'cerulean' y game 'gta5'
NUI en blanco después de convertir Enumera cada archivo de NUI bajo files y mantén ui_page
Funciones ox_lib faltantes Agrega lua54 'yes' y el script compartido @ox_lib/init.lua
Recurso no encontrado después del cambio Ejecuta refresh, luego ensure
El recurso no se inicia Lee las líneas sobre Couldn't start resource

Respuestas rápidas

¿Aún se admite __resource.lua?

FiveM aún lo lee para recursos antiguos, pero está deprecado e imprime una advertencia. Las nuevas características como lua54 solo existen en fxmanifest.lua, así que conviértelo.

¿Qué fx_version debo usar?

cerulean es la opción común hoy. Es la versión que declaran la mayoría de los scripts actuales, y funciona en un artefacto del servidor actual.

¿Tengo que mantener resource_manifest_version?

No. fx_version lo reemplaza. Elimina la línea resource_manifest_version cuando conviertas.

Scripts que evitan este problema

Clothing DesignerDiseña ropa dentro de FiveM — pincel, capas, imágenes e IA — y póntela.Ver script →Drag RopeArrastra jugadores con una cuerda y átalos a vehículos, con longitud en vivo.Ver script →Item Creator V2Crea items usables con animaciones, props, efectos y más — sin escribir código.Ver script →

Sigue leyendo