__resource.lua vers fxmanifest.lua : comment convertir un vieux script

Le vieux script FiveM utilise toujours __resource.lua et affiche un avertissement obsolète ? Comment le convertir en fxmanifest.lua avec fx_version, game, lua54, ui_page et files.

Vous démarrez un vieux script et la console avertit qu'il utilise toujours __resource.lua, qui est obsolète. Le script peut toujours fonctionner, mais il est bloqué sur l'ancien format de manifest et ne peut pas utiliser les options plus récentes telles que Lua 5.4. Ce guide le convertit en fxmanifest.lua en quelques minutes.

Ce qui a changé

Chaque resource a besoin d'un manifest qui indique à FiveM quels fichiers charger. L'ancien format était __resource.lua. Le format actuel est fxmanifest.lua. Les directives que vous connaissez (client_script, server_script, ui_page, files) sont les mêmes. Ce qui change est l'en-tête.

Un vieux manifest ressemble à ceci :

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

Le nouvel en-tête

Remplacez la ligne resource_manifest_version par deux lignes :

lua
fx_version 'cerulean'
game 'gta5'

fx_version est requis. Il sélectionne le comportement du manifest, et cerulean est la version que les scripts actuels utilisent. game 'gta5' dit que la resource est pour GTA V. Le vieux UUID dans resource_manifest_version est remplacé par fx_version : vous n'avez pas besoin de le traduire en un nom de version ancien spécifique, supprimez-le simplement.

Le fichier complet converti

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

Remarques sur chaque partie :

  • client_scripts et server_scripts prennent une liste. Le singulier client_script 'file.lua' fonctionne toujours pour un seul fichier.
  • shared_scripts charge des deux côtés. Un import de framework comme '@ox_lib/init.lua' va là.
  • ui_page pointe sur le fichier HTML du NUI. Chaque fichier que la page charge (JS, CSS, images, polices) doit être dans files, sinon il n'est pas envoyé au joueur. Les wildcards fonctionnent : 'html/**/*'.
  • files est aussi où vous listez les données qu'un client a besoin mais n'exécute pas, comme les fichiers meta.
  • author, description et version sont optionnels et uniquement informatifs.

Lua 5.4

lua54 'yes' fait fonctionner la resource sur Lua 5.4. De nombreuses resources actuelles l'exigent. L'activer sur un vieux script est généralement sûr, mais vérifiez deux choses : un script qui s'appuie sur un vieux comportement de Lua 5.3 peut avoir besoin d'un petit correctif, et les scripts qui utilisent ox_lib ont besoin que Lua 5.4 soit activé. Laissez-le si le vieux script se comporte différemment avec cela, et testez-le.

Cartes, fichiers de données et actifs en streaming

Si le vieux manifest a des lignes data_file pour les meta de véhicule ou d'arme, gardez-les. Ils ont la même syntaxe dans 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'

Les modèles en streaming et les textures dans un dossier stream ne nécessitent aucune entrée du tout. Pour une resource de carte uniquement, ajoutez également this_is_a_map 'yes'.

Supprimer le vieux fichier

Après la conversion, supprimez __resource.lua du dossier. Laisser les deux fichiers en place est déroutant pour quiconque maintient le serveur plus tard, et un seul d'entre eux devrait décrire la resource.

Ensuite, redémarrez la resource :

text
refresh
ensure my_script

refresh est nécessaire car le manifest a changé. Si le manifest a une erreur, la resource ne démarre pas : voir Couldn't start resource pour lire l'erreur au-dessus de cette ligne.

Erreurs courantes après la conversion

  • Un fx_version ou game manquant. Le manifest est rejeté.
  • Une virgule manquante à l'intérieur de { }. Chaque entrée d'une liste est séparée par une virgule.
  • Fichiers manquants de files. Le NUI charge mais les images ou les scripts sont vides, car la page a demandé quelque chose qui n'a pas été envoyé. Vérifiez la console F8 et les outils de développement du NUI pour les requêtes échouées.
  • Une dépendance qui n'est pas déclarée. Ajoutez dependency 'ox_lib' si le script l'utilise, pour que l'ordre de démarrage soit vérifié. Voir Could not find dependency.

Attention : ne définissez pas fx_version sur un nom très ancien copié d'un tutoriel de 2019 juste pour correspondre à l'âge du script. Utilisez cerulean et corrigez tout ce qui casse.

Liste de contrôle

Symptôme Correction
La console avertit à propos de __resource.lua Créez fxmanifest.lua, supprimez le vieux fichier
Ligne resource_manifest_version Remplacez par fx_version 'cerulean' et game 'gta5'
NUI vide après la conversion Listez chaque fichier NUI sous files et gardez ui_page
Les fonctions ox_lib manquent Ajoutez lua54 'yes' et le script partagé @ox_lib/init.lua
Resource non trouvée après le changement Exécutez refresh, puis ensure
La resource ne démarre pas Lisez les lignes au-dessus de Couldn't start resource

Réponses rapides

__resource.lua est-il toujours supporté ?

FiveM le lit toujours pour les vieilles resources, mais c'est obsolète et imprime un avertissement. Les nouvelles fonctionnalités comme lua54 n'existent que dans fxmanifest.lua, donc convertissez-le.

Quel fx_version dois-je utiliser ?

cerulean est le choix courant aujourd'hui. C'est la version que la plupart des scripts actuels déclarent, et cela fonctionne sur un artifact serveur actuel.

Dois-je garder resource_manifest_version ?

Non. fx_version le remplace. Supprimez la ligne resource_manifest_version quand vous convertissez.

Des scripts sans ce problème

Clothing DesignerCréez des vêtements dans FiveM — pinceau, calques, import d’images et IA — puis portez-les.Voir le script →Drag RopeTraînez des joueurs avec une corde et attachez-les à des véhicules, avec longueur de corde en direct.Voir le script →Item Creator V2Créez des items utilisables avec animations, props, effets et plus — sans écrire une ligne de code.Voir le script →

À lire aussi