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 :

lua
['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.lua empê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 :

text
qb-inventory/html/images/burger.png

Le 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 :

text
restart qb-core

Redé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 :

text
/giveitem <player id> burger 1

À partir d'un script, du côté serveur :

lua
local QBCore = exports['qb-core']:GetCoreObject()

local Player = QBCore.Functions.GetPlayer(source)
if Player then
    Player.Functions.AddItem('burger', 1)
end

Si 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 :

lua
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 :

lua
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 à AddItem doivent ê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.

Des scripts sans ce problème

Item Creator V2Créez des items utilisables avec animations, props, effets et plus — sans écrire une ligne de code.Voir le script →Shop CreatorCréez un magasin en moins d’une minute — propriétaires, employés, coffres et braquages inclus.Voir le script →

À lire aussi