jaksam_inventory/_hooks.
Buenas Prácticas
Usa filtros
Usa siempre los filtros adecuados para evitar ejecuciones innecesarias de hooks
Retornos tempranos
Usa retornos tempranos para salir de los hooks cuando no se cumplan las condiciones
Rendimiento
Mantén la lógica de los hooks ligera para no afectar el rendimiento del inventario
Ejemplos de Casos de Uso
- Evitar que los jugadores roben ítems que tienen el campo de metadato
sole_owner(p. ej., ítems VIP) - Evitar que los jugadores muevan armas policiales a su inventario personal
- Permitir solo una mochila por inventario de jugador
- Craftear ítems arrastrando un ítem específico sobre otro (por ejemplo, arrastrar pan sobre carne puede crear un sándwich)
- Bloquear el uso de ítems cuando el jugador está esposado o en zonas específicas
- Registrar estadísticas de uso de ítems y logros
- Evitar el uso de ciertos ítems dentro de vehículos
- Agregar ítems iniciales a los inventarios de jugadores nuevos cuando se crean
- Prepoblar contenedores de basura o stashes con ítems aleatorios al crearse
Funciones de la API
Registrar un Hook
Parámetros
Valor de retorno
Anular el Registro de un Hook
Parámetros
Anular el Registro de Todos los Hooks de un Resource
Parámetros
Parámetro Options
El parámetro options acepta una table con filtros para optimizar el rendimiento.- Común (todos los events)
- Filtros de inventario
- Filtros de transferencia
Events de Hook Disponibles
Comportamiento de los Hooks
Prioridad
Los números más altos se ejecutan primero (por defecto: 0)
Valores de retorno
return nil o return true: permite que la acción continúe.return false, "message", "notifyType": evita la acción y detiene la ejecución de los demás hooks. Los parámetros message y notifyType son opcionales (notifyType puede ser "error", "success", "info")Excepción -
onPreOpenInventory: el mensaje no se muestra al jugador, porque la precarga haría que se repitiese. Llama a notifyPlayer desde dentro del hook si quieres decirle al jugador el motivo.Compatibilidad con ox_inventory
Cuando el resource de compatibilidad con ox_inventory está instalado,exports.ox_inventory:registerHook(...) se traduce a los hooks nativos de arriba, así que los scripts de ox_inventory funcionan sin cambios. Los payloads se transforman al formato de ox, y los nombres de opciones de ox (itemFilter, typeFilter, inventoryFilter, print) también se traducen.
Registrar un hook no soportado imprime una advertencia y devuelve
nil en lugar de lanzar un error.
Tres diferencias a tener en cuenta al migrar:
- Un hook de ox solo puede permitir o bloquear; no puede proporcionar un mensaje personalizado ni un tipo de notificación. Usa los hooks nativos para eso
openInventoryhereda el requisito de no tener estado descrito enonPreOpenInventory- Los inventarios de jugador se identifican de forma distinta. Los hooks de ox reciben el ID de servidor del jugador como number (
inventoryId = 4), igual que ox_inventory. Los hooks nativos reciben el identificador de personaje de jaksam como string (inventoryId = "char1:35030084..."). Cualquier otro tipo de inventario usa el mismo ID string en ambos
