Comment ajouter des articles sur QBCore : items.lua, images, CreateUseableItem
Ajouter un article personnalisé à QBCore : l'entrée qb-core/shared/items.lua et ses champs, l'image dans qb-inventory, le donner, et le rendre utilisable avec CreateUseableItem.
Vous avez ajouté un article à votre serveur QBCore, et il n'existe pas dans le jeu, n'a pas d'icône, ou ne fait rien lorsqu'il est utilisé. Voici le chemin complet : l'entrée d'article, l'image, le donner, et le rendre utilisable.
1. L'entrée d'article
Ouvrez qb-core/shared/items.lua. Les articles sont des entrées dans la table QBShared.Items, clé par nom. Ajoutez le vôtre, avec une virgule après l'entrée précédente :
['burger'] = {
['name'] = 'burger',
['label'] = 'Burger',
['weight'] = 220,
['type'] = 'item',
['image'] = 'burger.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['description'] = 'A warm burger.',
},Ce que chaque champ fait :
| Champ | Signification |
|---|---|
name |
Nom de l'article ; doit correspondre à la clé, en minuscules, pas d'espaces |
label |
Nom montré aux joueurs |
weight |
Poids d'un article |
type |
item pour les articles normaux, weapon pour les armes |
image |
Nom du fichier de l'icône, extension incluse |
unique |
true si chaque copie est son propre emplacement (elle peut porter des données) |
useable |
true si les joueurs peuvent l'utiliser |
shouldClose |
true ferme l'inventaire lors de l'utilisation |
description |
Texte sous l'étiquette |
Copiez un article voisin dans le même fichier quand vous ne êtes pas sûr : le fichier affiche exactement les champs que votre version attend.
Attention : une virgule manquante ou une accolade manquante dans
items.luaempêche qb-core de charger, et avec lui tous les scripts qui en dépendent. Si tout casse après la modification, regardez d'abord votre dernière entrée.
2. L'image
Mettez un .png avec le nom du champ image dans le dossier des images de l'inventaire :
qb-inventory/html/images/burger.pngLe dossier est le même si l'article est de la nourriture, un outil ou un document. Avec une ressource d'inventaire différente, utilisez plutôt son propre dossier d'images. Un fichier manquant affiche une icône vide, et le nom doit correspondre exactement au champ image, extension incluse.
3. Redémarrer et tester
items.lua est lu par qb-core quand il démarre. Dans la console du serveur :
restart qb-coreRedémarrer qb-core pendant que les joueurs sont en ligne peut déconnecter ou casser les scripts qui en dépendent, donc sur un serveur en direct, faites-le à un moment calme, ou redémarrez tout le serveur. Ensuite, donnez-vous l'article avec la commande d'administrateur :
/giveitem <player id> burger 1À partir d'un script, du côté serveur :
local QBCore = exports['qb-core']:GetCoreObject()
local Player = QBCore.Functions.GetPlayer(source)
if Player then
Player.Functions.AddItem('burger', 1)
endSi QBCore est nil ici, lisez tentative d'indexer une valeur nil (global 'QBCore').
4. Le rendre utilisable
Définir useable = true permet seulement l'utilisation. Vous devez aussi dire ce qui se passe, sur le serveur :
local QBCore = exports['qb-core']:GetCoreObject()
QBCore.Functions.CreateUseableItem('burger', function(source, item)
local Player = QBCore.Functions.GetPlayer(source)
if not Player then return end
if Player.Functions.RemoveItem('burger', 1) then
TriggerClientEvent('QBCore:Notify', source, 'You ate the burger', 'success')
-- your effect here: heal, hunger, an animation event
end
end)Le callback reçoit l'ID du joueur et les données de l'article. Supprimez l'article vous-même si l'utilisation doit le consommer, comme ci-dessus.
Si un redémarrage de votre script fait que l'article arrête de fonctionner, rappelez-vous que l'enregistrement se produit au démarrage du script. Redémarrez le script qui contient CreateUseableItem, pas seulement qb-inventory.
Articles qui portent des données
Pour les articles qui transportent des informations, comme une note avec du texte ou un ticket avec un code, définissez unique à true. Chaque copie peut alors tenir ses propres données dans la table info, que vous donnez lors de l'ajout de l'article :
Player.Functions.AddItem('ticket', 1, false, { code = 'A12' })Les problèmes courants
- Incompatibilité de nom d'article. La clé, le champ
name, le nom de l'image et le nom que vous passez àAddItemdoivent être le même mot. - Article ajouté à un fichier différent. Certains scripts vous demandent d'ajouter leurs articles à une copie de la liste à l'intérieur du script. Vérifiez ses notes d'installation, et ajoutez des articles dans
qb-core/shared/items.lua, sauf indication contraire. - Ancien inventaire. Les anciennes versions de qb-inventory gardent une copie séparée de certaines données d'article dans leur propre dossier. Si un article affiche une étiquette incorrecte, vérifiez que rien d'autre ne le définit.
Sur QBox
QBox utilise ox_inventory au lieu de qb-inventory, et ses articles vivent dans ox_inventory/data/items.lua. Le format est différent, et les appels d'article utilisable aussi. Suivez ajout d'articles à ox_inventory.
Ajouter des articles sans modifier les fichiers
Modifier items.lua et redémarrer le noyau pour chaque nouvel article est la partie lente. Item Creator vous permet de créer des articles dans le jeu à la place.
Item Creator V2Créez des items utilisables avec animations, props, effets et plus — sans écrire une ligne de code.dès 18,15 €Voir le script →
Liste de contrôle
| Symptôme | Correction |
|---|---|
| Article non trouvé | Ajoutez-le à qb-core/shared/items.lua et restart qb-core |
| Tout casse après la modification | Erreur de syntaxe dans items.lua ; vérifiez les virgules et les accolades |
| Icône vide | Ajoutez burger.png à qb-inventory/html/images, correspondant au champ image |
| L'article ne fait rien | Définissez useable = true et enregistrez QBCore.Functions.CreateUseableItem |
| Le nom ne correspond pas | Utilisez un nom identique dans la clé, name, l'image et le code |
| Serveur QBox | Utilisez à la place ox_inventory's data/items.lua |
Réponses rapides
Où les articles sont-ils définis dans QBCore ?
Dans qb-core/shared/items.lua. Chaque article est un tableau à l'intérieur de QBShared.Items, clé par son nom, et l'icône est un .png du même nom dans le dossier des images de l'inventaire.
QBox utilise-t-il qb-core/shared/items.lua ?
Non. QBox utilise ox_inventory, où les articles vivent dans ox_inventory/data/items.lua. Consultez le guide ox_inventory lié dans cet article.
Pourquoi mon article n'est pas utilisable ?
Soit useable est false dans l'entrée d'article, soit aucun code ne l'a enregistré. Définissez useable = true et enregistrez-le avec QBCore.Functions.CreateUseableItem sur le serveur.
