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.- Commun (tous les events)
- Filtres d'inventaire
- Filtres de transfert
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
openInventoryhérite de l’exigence d’absence d’état décrite dansonPreOpenInventory- 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
