inventory
Manipulation de l'inventaire et équipements
deleteItem
Supprime définitivement un objet de l'inventaire. Recherche l'objet par son GID dans les items non équipés (position 63), puis envoie le paquet 3022 au serveur. Attend la confirmation via ObjectDeletedMessage ou ObjectQuantityMessage. Affiche un message d'erreur si l'objet ne peut pas être détruit.
Signature: inventory:deleteItem(ObjectID, Qte)
Paramètres:
ObjectID
number
GID de l'objet à supprimer
Qte
number
Quantité à supprimer
Retourne: boolean - true si la suppression a réussi, false sinon
Exemple:
-- Supprimer 10 bles de l'inventaire
local success = inventory:deleteItem(289, 10)
if success then
global:printSuccess("10 bles supprimes")
else
global:printError("Echec de la suppression")
end
-- Supprimer tout un stack
local count = inventory:itemCount(289)
if count > 0 then
inventory:deleteItem(289, count)
endNote: Action IRREVERSIBLE! Seuls les items non équipés (position 63) peuvent être supprimés. Timeout de 2 secondes.
destuff
Retire TOUS les équipements du personnage en les déplaçant vers l'inventaire (position 63). Parcourt tous les items de v_ItemsList dont la position est <= 15 (emplacements d'équipement) et envoie ObjectSetPositionMessage pour chacun.
Signature: inventory:destuff(delay)
Paramètres:
delay
number
Délai en ms entre chaque déséquipement (défaut: 500ms)
Retourne: boolean - true si l'opération a réussi, false si aucun item
Exemple:
Note: Utile avant un échange d'équipement complet ou pour ranger en banque.
dropItem
Jette un objet au sol sur la carte actuelle. Recherche l'objet par son GID parmi les items non équipés (position 63), puis envoie DropObjectMessage. Attend la confirmation via le paquet 3017 avec un timeout de 2 secondes.
Signature: inventory:dropItem(ObjectID, Qte)
Paramètres:
ObjectID
number
GID de l'objet à jeter
Qte
number
Quantité à jeter
Retourne: boolean - true si réussi, false sinon
Exemple:
Note: Les objets jetés restent au sol et peuvent être ramassés par n'importe qui. Message d'erreur affiché si échec.
equipItem
Équipe un objet à une position spécifique. Recherche l'objet par son GID dans l'inventaire, puis envoie ObjectSetPositionMessage avec l'UID et la position cible. Attend la confirmation du serveur (paquet 176).
Signature: inventory:equipItem(ObjectID, position)
Paramètres:
ObjectID
number
GID de l'objet à équiper
position
number
Position d'équipement (voir notes)
Retourne: boolean - true si l'équipement a réussi
Exemple:
Note: Positions d'équipement: 0 = Amulette 1 = Arme 2 = Anneau (gauche) 3 = Ceinture 4 = Anneau (droite) 5 = Bottes 6 = Coiffe/Chapeau 7 = Cape 8 = Familier/Montilier 9-14 = Dofus/Trophées (emplacements 1 à 6) 15 = Bouclier 63 = Inventaire (non équipé)
equipItemuid
Équipe un objet en utilisant directement son UID unique (au lieu du GID). Utile quand on a plusieurs exemplaires du même objet avec des stats différentes. Envoie ObjectSetPositionMessage avec l'UID spécifié.
Signature: inventory:equipItemuid(uid, position)
Paramètres:
uid
number
UID unique de l'objet spécifique
position
number
Position d'équipement (0-15)
Retourne: boolean - true si réussi
Exemple:
Note: Préférer cette fonction quand vous avez plusieurs items identiques avec des jets différents.
getAveragePrice
Retourne le prix moyen d'un objet tel que stocké dans le cache de prix (prixMoyenCache). Ce cache est alimenté par les données de l'hôtel des ventes. Retourne 0 si l'objet n'est pas dans le cache.
Signature: inventory:getAveragePrice(gid)
Paramètres:
gid
number
GID de l'objet
Retourne: number - Prix moyen en kamas (Long), ou 0 si inconnu
Exemple:
Note: Le cache doit être alimenté par une visite à l'HDV ou un chargement préalable.
getGID
Convertit un UID (identifiant unique d'un item spécifique) en GID (identifiant général du type d'item). Parcourt l'inventaire pour trouver la correspondance entre inventoryitem2 (UIDs) et inventoryitem (GIDs).
Signature: inventory:getGID(objectID)
Paramètres:
objectID
number
UID de l'objet
Retourne: number - GID de l'objet, ou -1 si non trouvé
Exemple:
getLevel
Retourne le niveau requis pour utiliser/équiper un objet. Interroge les données D2O (Items) pour obtenir le champ "level". Retourne -1 en cas d'erreur.
Signature: inventory:getLevel(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - Niveau requis, ou -1 si erreur
Exemple:
getTypeName
Retourne le nom du type d'objet (catégorie) en utilisant les données D2O. Récupère d'abord le typeId de l'item, puis traduit le nameId du type via I18n.
Signature: inventory:getTypeName(objectGID)
Paramètres:
objectGID
number
GID de l'objet
Retourne: string - Nom du type (ex: "Epee", "Amulette", "Ressource"), ou "" si erreur
Exemple:
Note: Types reconnus par stuff(): Amulette, Anneau, Bottes, Ceinture, Cape, Chapeau, Bouclier, Familier, Montilier, Hache, Epee, Dague, Pelle, Baguette, Baton, Marteau, Trophee, Dofus
getUID
Retourne l'UID (identifiant unique) d'un objet à partir de son GID. Parcourt les listes inventoryitem (GIDs) et inventoryitem2 (UIDs) pour trouver la correspondance. Retourne le premier UID trouvé.
Signature: inventory:getUID(objectID)
Paramètres:
objectID
number
GID de l'objet
Retourne: number - UID de l'objet, ou -1 si non trouvé
Exemple:
Note: Si plusieurs items du même GID existent, retourne le premier trouvé.
inventoryContent
Retourne une copie complète de la liste des objets dans l'inventaire (v_ItemsList). Chaque objet est de type ObjectItem avec les propriétés: objectGID, objectUID, quantity, position, effects, etc.
Signature: inventory:inventoryContent()
Retourne: table - Liste d'ObjectItem (copie sécurisée)
Exemple:
Note: Retourne une copie pour éviter les problèmes de concurrence.
itemCount
Compte le nombre total d'unités d'un objet spécifique dans l'inventaire. Parcourt toutes les listes et additionne les quantités de tous les stacks du même GID (peut y avoir plusieurs stacks si l'objet est stackable mais a des effects différents).
Signature: inventory:itemCount(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - Quantité totale possédée
Exemple:
itemLevelId
Alias de getLevel(). Retourne le niveau requis d'un objet depuis les données D2O (Items.level).
Signature: inventory:itemLevelId(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - Niveau de l'objet
Exemple:
itemNameId
Retourne le nom traduit d'un objet. Récupère le nameId depuis les données D2O (Items), puis utilise I18n.GetText() pour obtenir la traduction dans la langue du client.
Signature: inventory:itemNameId(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: string - Nom de l'objet dans la langue du jeu
Exemple:
itemPosition
Retourne la position d'équipement d'un objet. Parcourt les listes inventoryitem et inventorypostion pour trouver où l'objet est équipé. Retourne -1 si l'objet n'est pas dans l'inventaire.
Signature: inventory:itemPosition(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - Position (0-15 si équipé, 63 si dans inventaire, -1 si absent)
Exemple:
itemTypeId
Retourne l'ID numérique du type d'objet depuis les données D2O (Items.typeId). Retourne -1 en cas d'erreur.
Signature: inventory:itemTypeId(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - ID du type, ou -1 si erreur
Exemple:
itemWeight
Retourne le poids unitaire d'un objet (realWeight) depuis les données D2O (Items). C'est le poids d'une unité de l'objet en pods.
Signature: inventory:itemWeight(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet
Retourne: number - Poids en pods par unité
Exemple:
pods
Retourne le poids actuel de l'inventaire (poids) en pods. Cette valeur est mise à jour automatiquement par le serveur à chaque modification de l'inventaire.
Signature: inventory:pods()
Retourne: number - Pods actuellement utilisés
Exemple:
podsMax
Retourne la capacité maximale de l'inventaire (poidsmax) en pods. Cette valeur dépend de la force du personnage et peut être augmentée par certains équipements.
Signature: inventory:podsMax()
Retourne: number - Capacité maximale en pods
Exemple:
podsP
Retourne le pourcentage de remplissage de l'inventaire, calculé comme (poids * 100) / poidsmax. En cas d'erreur (division par zero si poidsmax=0), retourne 100.
Signature: inventory:podsP()
Retourne: number - Pourcentage de remplissage (0-100)
Exemple:
stuff
Équipe automatiquement tous les objets équipables de l'inventaire selon leur type. Parcourt v_ItemsList et utilise getTypeName() pour déterminer l'emplacement correct. Gère les emplacements multiples (anneaux, trophées) avec des listes de positions disponibles.
Signature: inventory:stuff(delay)
Paramètres:
delay
number
Délai en ms entre chaque équipement (défaut: 500ms)
Exemple:
Note: Types gérés et positions:
Amulette -> position 0
Anneau -> positions 2 puis 4
Bottes -> position 5
Ceinture -> position 3
Cape -> position 7
Chapeau -> position 6
Bouclier -> position 15
Familier/Montilier -> position 8
Armes (Hache, Epee, Dague, Pelle, Baguette, Baton, Marteau) -> position 1
Trophée/Dofus -> positions 9, 10, 11, 12, 13, 14
useItem
Utilise un objet consommable de l'inventaire (potions, parchemins, etc.). Recherche l'objet par son GID, récupère son UID, puis envoie ObjectUseMessage. Attend la confirmation du serveur (paquet 176).
Signature: inventory:useItem(ObjectID)
Paramètres:
ObjectID
number
GID de l'objet à utiliser
Retourne: boolean - true si l'objet a été utilisé, false si non trouvé
Exemple:
useMultipleItem
Utilise plusieurs unités d'un même objet en une seule action. Recherche l'objet par GID, puis envoie ObjectUseMultipleMessage avec la quantité spécifiée. Utile pour ouvrir plusieurs coffres ou utiliser plusieurs ressources d'un coup.
Signature: inventory:useMultipleItem(ObjectID, quantity)
Paramètres:
ObjectID
number
GID de l'objet
quantity
number
Nombre d'unités à utiliser
Retourne: boolean - true si réussi, false si objet non trouvé
Exemple:
Mis à jour

