MMO Inventory
概述
MMO Inventory 将 MMOInventory 与 TypeWriter 连接起来。MMOInventory 添加了位于原版物品栏之外的自定义装备槽位(饰品、披风、神器等)。TypeWriter 自身无法看到这些槽位:本扩展填补了这一空白。
它只提供一个可读取的 fact。这个 fact 回答一个问题:该玩家当前是否在你的某个自定义 MMOInventory 物品栏中持有你列出的 MMOItems?之后你可以把这个 fact 用作对话、任务、audience 或任何接受条件(criteria)的条目的条件,例如仅对佩戴某件神器的玩家解锁某个对话选项。
只识别 MMOItems。物品是通过其 MMOItems 的 type 和 ID 来匹配的,而不是通过名称或材质。
功能
- 识别自定义槽位 — 读取 MMOInventory 中某个具名自定义物品栏里存放的物品,而不是原版物品栏。
- 按类型和 ID 匹配 — 通过
TYPE:ID组合来识别 MMOItems,例如ACCESSORY:RING_OF_FIRE。 - 物品数量 — 每件物品都可以要求一个最小数量,写作
TYPE:ID:amount。 - 同时检查多件物品 — 想列多少件都可以,用逗号分隔。
- 任一或全部 —
requireAllItems决定只需一件匹配即可,还是列出的每一件都必须具备。 - 可作为条件使用 — 该 fact 返回
1或0,可直接用于任何条件(criteria)。
安装
- 在服务器上安装 MMOInventory、MMOItems 及其所需的库 MythicLib。
- 确保已安装 TypeWriter 官方的
Quest扩展:MMO Inventory 依赖它。 - 将 MMO Inventory 的 JAR 放入
plugins/Typewriter/extensions/。 - 重启服务器。
- 在 MMOInventory 的配置中定义你的自定义物品栏。你在那里为物品栏起的名称,就是你将在面板中使用的名称。
快速上手
仅对在 accessories 物品栏中佩戴特定戒指的玩家解锁某个对话选项:
- 在 TypeWriter 网页面板中,打开一个 static 页面,添加一个 Check Item Fact 条目。
- 将
inventoryName设为 MMOInventory 中自定义物品栏的名称,例如accessories。 - 将
itemsToCheck设为ACCESSORY:RING_OF_FIRE。若要检查多件物品,用逗号分隔:ACCESSORY:RING_OF_FIRE, ACCESSORY:AMULET:2。 - 如果一件匹配即可,请保持
requireAllItems关闭;若要求列表中的每一件都具备,则将其开启。 - 在对话选项(或任何带有条件的条目)上,添加一个使用此 fact、值为
1的条件。 - 点击 Publish(发布),并用一位在该物品栏中装备了该物品的玩家进行测试。
每个片段为 TYPE:ID(数量为 1)或 TYPE:ID:amount。类型和 ID 不区分大小写。不符合此格式的片段会被静默忽略;如果没有剩余的有效片段,该 fact 返回 0。
工作原理
扩展会在运行时读取 MMOInventory 插件。只有带有 MMOItems 数据的物品才会被计数,同一物品的多个堆叠会先相加,再与所要求的数量进行比较。
条目
1 个条目,由扩展源码生成。
事实1
- Mmoinventory Check Item FactCheck if player has specific MMOItem(s) in a MMOInventory
故障排查
该 fact 始终为 0。 只要缺少任何一项,扩展就会返回 0:inventoryName 或 itemsToCheck 为空、MMOInventory 插件未加载,或物品栏为空。请按此顺序逐一检查。
日志显示 “Inventory 'x' not found”。 inventoryName 中的名称与 MMOInventory 中定义的任何自定义物品栏都不匹配。请按 MMOInventory 配置中显示的名称原样复制。
控制台中出现 “Error accessing MMOInventory”。 扩展在运行时通过 API 与 MMOInventory 通信。此错误意味着已安装的 MMOInventory 版本没有提供预期的方法。请更新 MMOInventory;如果问题依然存在,请附上完整的堆栈跟踪进行反馈。
原版物品或非 MMOItems 物品永远不会被计数。 只有拥有 MMOItems 类型和 ID 的物品才会被计入。请用 MMOItems 创建该物品,或使用其他扩展来检查其他类型的物品。
只拥有我列出的其中一件物品,检查也通过了。 requireAllItems 处于关闭状态,所以任意一件匹配即可。开启它即可要求列表中的每件物品都具备。
数量被忽略了。 请检查格式:数量必须是片段的第三部分(TYPE:ID:3),并且必须是整数。像 TYPE:ID:three 这样的片段会被丢弃。