__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 :
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 :
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
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_scriptsetserver_scriptsprennent une liste. Le singulierclient_script 'file.lua'fonctionne toujours pour un seul fichier.shared_scriptscharge des deux côtés. Un import de framework comme'@ox_lib/init.lua'va là.ui_pagepointe sur le fichier HTML du NUI. Chaque fichier que la page charge (JS, CSS, images, polices) doit être dansfiles, sinon il n'est pas envoyé au joueur. Les wildcards fonctionnent :'html/**/*'.filesest aussi où vous listez les données qu'un client a besoin mais n'exécute pas, comme les fichiers meta.author,descriptionetversionsont 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:
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 :
refresh
ensure my_scriptrefresh 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_versionougamemanquant. 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_versionsur un nom très ancien copié d'un tutoriel de 2019 juste pour correspondre à l'âge du script. Utilisezceruleanet 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 →