功能
- 允许玩家使用外部资源(包括原版背包)进行建造、制作、装填弹药等操作
- 支持通过科技树进行建造、升级、制作、修理、重新装填、开启钥匙锁、从自动售货机购买、从车辆供应商处购买,以及解锁蓝图
- 支持许多调用原生函数以查找和获取资源的插件
- 充当消耗资源的插件与提供资源的插件之间的路由器
工作原理
如果您单独安装此插件,玩家将能够使用其已装备的原版背包中的资源进行建造/制作等操作。此功能无需任何权限或配置。当您拥有与其他插件兼容的其他插件时,此插件将变得更加有用,包括以下示例。
- 安装背包插件后,如果玩家拥有相应权限且已启用提取模式(该模式为每页背包的设置),他们便能使用背包内的资源进行建造、制作等操作。
- 安装“储物袋”插件后,玩家将能够使用其背包内的资源进行建造、制作等操作。
- 安装虚拟物品插件后,玩家将能够完全不消耗任何资源地进行建造/制作等操作,具体取决于该插件中的配置和权限。
概念
- 物品消费者-- 任何从玩家库存中获取或删除物品的插件或原生功能。
- 示例基础功能:建造、升级、制作、重新加载、开启钥匙锁、从自动售货机购买、从车辆供应商处购买,以及通过科技树解锁蓝图。
- 示例插件:自定义自动售货机设置
- Item Suppliers-- Any plugin that hooks into Item Retriever to provide items on-demand for Item Consumers. Allows loading or creating items on-demand.
- 容器供应商-- 任何向物品检索器注册容器的插件。物品检索器将代表物品消费者按需搜索这些容器。例如,一个插件可以在存储容器中添加一个UI按钮,允许玩家单独切换是否可远程访问这些容器中的内容。
- 示例插件:目前暂无。
不兼容的插件
任何将玩家物品栏空间减少到24以下的插件均不兼容。例如,服装槽。开发者应如何集成此插件
物品消费者
如果您的插件需要从玩家物品栏中获取物品,并且只关心物品 ID,那么只需直接使用类中的原生 Rust 方法即可,这些方法会调用 Item Retriever 已经拦截的钩子。如果您的插件需要从玩家物品栏中获取物品,且您不仅关心物品ID,那么请执行以下操作。
- 当物品检索器加载时,通过API_SumPlayerItems和API_TakePlayerItems汇总并获取玩家物品。请勿自行搜索物品。
- 当物品检索器未加载时,实施自定义逻辑以汇总并获取这些物品。
商品供应商
如果您的插件会为玩家外部存储物品,例如存储在数据文件中,尤其是当这些数据采用惰性加载方式时,您可能希望成为物品供应商。请使用API_AddSupplier来向物品检索器注册回调函数,这些回调函数将在物品消费者需要汇总或获取物品时按需调用。您的回调将接收到用于这些项目的播放器,以及一个描述要搜索的项目的查询。在某些情况下,您可能无需创建实际的Item实例。
- 在对项目求和时,您可以直接枚举数据文件的内容并返回结果。如果这些项目根本不存在,例如免费项目,则您可以随意返回您想要的任何总和。
- 在获取物品时,如果列表collect为空null,这意味着另一个插件只是想删除这些物品,因此您可以直接更新一个代表这些物品的数据层,而无需创建任何Item实例。如果这些物品根本不存在于任何地方,例如免费物品,则您可以直接创建新物品。