用途:ox_inventory 是一个基于槽位的 FiveM 库存系统,支持重量限制、物品元数据、储物箱(stash)、商店与钩子,兼容 ox_core、esx 和 qbx_core。适用于给取物品、数量查询、注册储物箱或商店、定义新物品、响应库存动作及从 qb-inventory 或 esx inventory 迁移等场景。
主要能力:通过服务端与客户端导出提供物品增删、容量检查、数量统计、槽位读取、跨槽搜索、持久与临时储物、商店以及 registerHook 事件响应。
使用方式:统一通过 exports.ox_inventory:<fn>(...) 调用,没有全局表。物品的授予、移除与计数必须在服务端进行,客户端导出仅用于显示与 UI 决策。常用调用包括 AddItem(inv, item, count, metadata, slot)、RemoveItem(...)、CanCarryItem(...)、GetItemCount(...)、GetSlot(...)、Search(...)、RegisterStash(...)、CreateTemporaryStash(...) 与 registerHook(event, cb, options)。官方文档见 https://overextended.dev/ox_inventory。
限制与注意:AddItem 可能失败,需始终检查返回值(可能超重或槽位不足);交易或奖励应先调用 CanCarryItem 再收款或移除物品,顺序为 CanCarryItem -> 收款 -> AddItem -> 验证返回值。物品名必须已在 data/items.lua 中定义,否则会静默失败;inv 可为玩家 source、标识符或储物箱 id,传入错误类型返回 nil 而非报错。元数据不同会使物品不可堆叠,且不应存放易变数据。确保 ox_inventory 在 ox_lib 与框架核心之后启动。参考资料涵盖 rules/server-exports.md、rules/client-exports.md、rules/items.md、rules/stashes.md 与 rules/hooks.md。