¿Qué es fxmanifest.lua?
Todo recurso de FiveM requiere un archivo manifest que dice al servidor qué contiene el recurso y cómo cargarlo. El archivo fxmanifest.lua reemplaza al antiguo formato __resource.lua y ofrece una forma limpia y declarativa de definir los metadatos de tu recurso. Este archivo especifica qué scripts se ejecutan en el cliente, cuáles en el servidor, qué archivos NUI incluir, las dependencias del recurso y metadatos adicionales. Tener bien el manifest es esencial, porque los errores aquí impiden que todo el recurso cargue.
Campos obligatorios
Todo manifest debe empezar con dos campos obligatorios: fx_version y games. El fx_version especifica la versión del formato del manifest, con 'cerulean' como estándar actual que admite todas las funciones modernas. El campo games define qué juego soporta el recurso, normalmente {'gta5'} para FiveM. Omitir cualquiera de estos dos campos hará que el recurso falle al cargar, así que inclúyelos siempre como las dos primeras líneas del manifest.
Declaraciones de scripts
Usa client_scripts, server_scripts y shared_scripts para declarar tus archivos Lua. Los scripts de cliente corren en el cliente del jugador y gestionan renderizado, input e interacción local con el juego. Los de servidor corren en el servidor y manejan la lógica autoritaria, operaciones de base de datos y gestión de jugadores. Los shared se ejecutan en ambos lados y son útiles para archivos de configuración, funciones de utilidad y constantes compartidas. Puedes usar patrones glob como 'client/*.lua' para incluir todos los archivos de un directorio, pero listas explícitas te dan control sobre el orden de carga.
NUI y declaraciones de archivos
Si tu recurso incluye una interfaz de usuario, declara el archivo HTML de entrada con ui_page 'html/index.html'. Luego lista todos los assets web que necesita tu UI en la tabla files, incluyendo HTML, CSS, JavaScript, imágenes y fuentes. Solo los archivos listados aquí serán accesibles para el navegador NUI. Usa patrones glob como 'html/**/*' para incluir directorios enteros. Recuerda que los archivos NUI se envían al cliente durante la carga del recurso, así que mantén tus assets web optimizados para reducir tiempos de descarga y uso de ancho de banda.
Dependencias y orden de carga
Declara dependencias del recurso con el campo dependencies para asegurar que los recursos necesarios arranquen antes del tuyo. Las dependencias habituales incluyen recursos de framework como qb-core o es_extended, recursos de base de datos como oxmysql y librerías compartidas. Si una dependencia no está arrancada, tu recurso fallará al cargar y registrará una advertencia. Usa provide para indicar que tu recurso sirve como reemplazo de otro, lo que es útil al crear bridges de framework o implementaciones alternativas de scripts comunes.
Funciones avanzadas del manifest
El manifest soporta varias directivas adicionales para casos de uso especializados. Usa data_file para cargar archivos de datos de GTA como weapon metas, handling files o datos de modelo de vehículos. Los campos export y server_export declaran funciones que otros recursos pueden llamar. Añade metadatos con los campos description, author y version para documentación. La directiva lua54 activa las funciones de Lua 5.4 cuando se pone a 'yes', dándote acceso a división entera, operadores bitwise y otras mejoras del lenguaje que simplifican scripts complejos.
