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:

Nom
Type
Description

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)
end

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

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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:

Nom
Type
Description

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