registerHook en utilisant le nom d’event onPreOpenInventory.
Ouvrir ton propre inventaire de joueur ne déclenche jamais ce hook.
Payload
Ce hook peut empêcher l’inventaire de s’ouvrir en retournant
false. Les données ne quittent jamais le serveur, c’est donc un vrai point de contrôle d’accès (restriction par job/gang/whitelist), pas seulement une vérification côté UI.inventoryTypeFilter et inventoryFilter.
Privilégie les hooks sans état
Quand un joueur appuie sur la touche d’inventaire, le client précharge les inventaires à portée (les stashes à moins de 3m d’une position configurée, plus les coffres, boîtes à gants, shops, poubelles et drops à proximité) avant l’ouverture de l’UI, et chaque préchargement déclenche ce hook. Ton callback peut donc s’exécuter plusieurs fois pour le même inventaire, et pour des inventaires que le joueur n’ouvre jamais réellement. Cela ne concerne que les inventaires ayant des coordonnées configurées - ceux purement virtuels, ouverts programmatiquement par ton propre script, ne sont jamais préchargés. Écris quand même le callback comme une vérification pure sur le job/gang/identifiant lorsque c’est possible. Un motif de token à usage unique (authorized[source] = inventoryId, consommé à la première correspondance) est sujet aux races pour un inventaire placé physiquement : un préchargement peut consommer le token avant que la véritable ouverture n’atteigne le hook, et l’ouverture est alors refusée.
À savoir
Stashes privés
Stashes privés
jaksam ajoute
_<ownerCharIdentifier> aux IDs des stashes privés, payload.inventoryId est donc l’ID entièrement résolu. Les motifs basés sur un préfixe continuent de correspondre, puisque le suffixe est à la fin.Conteneurs
Conteneurs
Bloquer un conteneur empêche seulement son ouverture. Déposer un item sur un sac à dos fermé fonctionne toujours, car il s’agit d’un transfert d’item - utilise
onItemTransferred pour restreindre ce qui y entre.forceOpenInventory déclenche quand même ce hook
forceOpenInventory déclenche quand même ce hook
forceOpenInventory contourne les vérifications de permissions propres à jaksam, mais pas tes hooks - comme ox_inventory, dont le hook openInventory se déclenche même quand forceOpenInventory passe ignoreSecurityChecks. Cela signifie qu’un hook peut aussi bloquer un /openinventory d’admin, OpenInventoryById ou forceOpenInventoryOX : filtre donc sur les inventaires qui t’intéressent vraiment plutôt que de refuser par défaut.Exemples
Restreindre les stashes de job à leur propre job
Restreindre les stashes de job à leur propre job
registerHook, les filtres disponibles et le comportement des valeurs de retour.