Skip to main content
Les hooks sont un moyen de modifier le comportement du système d’inventaire. Ils sont enregistrés sur le serveur et peuvent être utilisés pour modifier le comportement du système d’inventaire, par exemple pour empêcher les joueurs de déplacer des items vers un inventaire spécifique. Il y a des exemples de hooks dans le dossier jaksam_inventory/_hooks.

Bonnes pratiques

Utilise des filtres

Utilise toujours les filtres appropriés pour éviter des exécutions de hook inutiles

Sorties anticipées

Utilise des sorties anticipées pour quitter les hooks quand les conditions ne sont pas remplies

Performance

Garde la logique des hooks légère pour ne pas impacter les performances de l’inventaire

Exemples de cas d’usage

  • Empêcher les joueurs de voler des items ayant le champ de métadonnée sole_owner (par exemple, des items VIP)
  • Empêcher les joueurs de déplacer des armes de police vers leur inventaire personnel
  • N’autoriser qu’un seul sac à dos par inventaire de joueur
  • Fabriquer des items en glissant un item spécifique sur un autre (par exemple glisser du pain sur de la viande pour faire un sandwich)
  • Bloquer l’utilisation d’un item quand le joueur est menotté ou dans certaines zones
  • Suivre les statistiques d’utilisation des items et les succès
  • Empêcher l’utilisation de certains items en véhicule
  • Ajouter des items de départ aux nouveaux inventaires de joueur lors de leur création
  • Pré-remplir des poubelles ou planques avec des items aléatoires à leur création

Fonctions de l’API

Enregistrer un hook

Paramètres

Valeur de retour

Désenregistrer un hook

Paramètres

Désenregistrer tous les hooks d’une resource

Paramètres

Paramètre options

Le paramètre options accepte une table avec des filtres pour optimiser les performances.

Events de hook disponibles

Comportement des hooks

Priorité

Les nombres plus élevés s’exécutent en premier (par défaut : 0)

Valeurs de retour

return nil ou return true : autorise l’action à continuer.return false, "message", "notifyType" : empêche l’action et arrête l’exécution des hooks suivants. Les paramètres message et notifyType sont optionnels (notifyType peut être "error", "success", "info")
Exception - onPreOpenInventory : le message n’est pas affiché au joueur, car le préchargement le ferait se répéter. Appelle notifyPlayer depuis l’intérieur du hook si tu veux expliquer la raison au joueur.

Compatibilité ox_inventory

Quand la ressource de compatibilité ox_inventory est installée, exports.ox_inventory:registerHook(...) est traduit vers les hooks natifs ci-dessus, les scripts ox_inventory fonctionnent donc sans modification. Les payloads sont remis au format ox, et les noms d’options ox (itemFilter, typeFilter, inventoryFilter, print) sont traduits également. Enregistrer un hook non supporté affiche un avertissement et retourne nil au lieu de lever une erreur. Trois différences à connaître lors de la migration :
  • Un hook ox peut seulement autoriser ou bloquer ; il ne peut pas fournir de message personnalisé ni de type de notification. Utilise les hooks natifs pour cela
  • openInventory hérite de l’exigence d’absence d’état décrite dans onPreOpenInventory
  • Les inventaires de joueur sont identifiés différemment. Les hooks ox reçoivent l’ID serveur du joueur sous forme de number (inventoryId = 4), comme ox_inventory. Les hooks natifs reçoivent l’identifiant de personnage de jaksam sous forme de string (inventoryId = "char1:35030084..."). Tous les autres types d’inventaire utilisent le même ID string dans les deux cas