跳到主要内容

Companion

个人伙伴,以 NPC 或 ModelEngine 模型的形式跟随每位玩家,支持跟随/等待和点击触发。

免费v0.10实体与模型
依赖TypeWriter0.9Entity extensionQuest extensionBasic extensionRoadNetwork extensionModelEngine可选

概述​

Companion 为玩家提供专属的跟随者:宠物、向导、无人机或吉祥物,无论玩家走到哪里,它都会跟在身后。同伴是一个只有主人能看到的 NPC(或 ModelEngine 模型),因此每位玩家都可以拥有自己的同伴,而不会在真实世界中增加任何实体。

你只需用 TypeWriter 中已有的实体定义(entity definition)来描述同伴,再把它挂到一个 audience 上。每位进入该 audience 的玩家都会获得一个同伴;离开时,同伴随之消失。一位玩家可以同时拥有多个同伴,每个实体定义对应一个。

功能​

  • 专属同伴 — 每个同伴都是仅向其主人显示的数据包实体。
  • NPC 或 ModelEngine — 定义可以是 NPC 定义,也可以是 ModelEngine 模型定义。
  • 跟随行为 — 同伴与玩家保持在 minDistance 到 maxDistance 格之间,能跨过小障碍物并始终贴地行走。
  • 自动追赶 — 在切换世界、传送之后,或落后太远时,它会传送到玩家身边。
  • 行走与待机动画 — 对于 ModelEngine 模型,待机和行走动画会随同伴的移动自动切换。
  • 跟随或等待 — 通过一个动作让同伴在跟随与原地站立之间切换。
  • 点击触发 — 玩家右键点击自己的某个同伴时会触发一个事件。
  • 同时拥有多个 — 每个实体定义对应一个同伴;再次召唤同一定义会替换旧的同伴。
  • 活跃数量 — 通过一个 fact 获知玩家当前拥有多少个同伴。

安装​

  1. 在网页面板的 Extensions 选项卡中安装 TypeWriter 扩展 Entity、Quest、Basic 和 RoadNetwork(如尚未安装,参见 TypeWriter 文档)。Companion 基于这四个官方扩展构建。
  2. 可选:如果你想使用 3D 模型而不是 NPC,请安装 TypeWriter 的 ModelEngine 扩展以及 ModelEngine 插件。没有它们 Companion 也能正常工作。
  3. 将 Companion 的 JAR 放入 plugins/Typewriter/extensions/,然后重启服务器。

快速上手​

为每位玩家提供一个会跟随的同伴:

  1. 在 TypeWriter 网页面板中,为同伴创建一个 NPC definition(或 ModelEngine definition):设置它的名称、皮肤或模型。
  2. 打开一个 manifest 页面,添加一个 Companion Invocation 条目。
  3. 将 definition 设为你创建的实体定义。activity 留空则使用默认的待机行为;如果需要自定义行为,也可以选择一个实体 activity。
  4. 调整 minDistance(玩家静止时同伴停下的距离)和 maxDistance(玩家行走时同伴落在身后的距离)。默认值为 2.0 和 4.0。
  5. 若要把同伴限制给部分玩家,请添加 criteria,例如检查玩家是否已购买宠物的 fact。留空则 audience 内的所有人都会获得一个。
  6. 发布。同伴会出现在玩家身后。

若想让玩家停止或恢复其同伴,请使用 Companion Follow Mode 动作。若要响应点击,请添加一个 Companion Interact 事件,并链接它应触发的条目,例如对话或菜单。

提示

Companion Follow Mode 有自己的 minDistance 和 maxDistance。动作执行时,它会覆盖同伴原有的距离设置。除非你想修改,否则请保持与 invocation 中相同的数值。

工作原理​

玩家进入 audience 时,同伴会在其身后 maxDistance 格处生成。之后它每个 tick 都会移动:玩家静止时与其保持 minDistance,玩家移动时保持 maxDistance,落后太远时会加速。在世界切换、传送之后、距离超过 maxDistance 的八倍,或被卡在超过 maxDistance 四倍远的地方时,它会传送到玩家身旁。

玩家离开 audience 或退出登录时,同伴会被移除。切换世界后,同伴会被移除并重新召唤。同伴不会被保存:每次玩家加入时,都会根据 audience 重新创建。

条目​

4 个条目,由扩展源码生成。

动作1
事件1
事实1
受众1

故障排查​

同伴始终没有出现。 条目需要一个有效的 definition:如果为空或已被删除,就不会召唤任何东西。该定义必须是 NPC 或 ModelEngine 定义(该字段只提供这两类选项)。同时检查玩家是否满足 criteria,以及该 invocation 所属的 audience。

同伴是普通 NPC,而不是我的模型。 ModelEngine 支持是可选的,并在运行时检测。请确认已安装 ModelEngine 扩展,且该定义是 ModelEngine 定义。动画会根据该定义的待机和行走动画名称来查找。

同伴不动。 跟随模式由每次 Companion Follow Mode 动作切换。如果该动作执行过一次,同伴就会原地等待;再执行一次即可恢复跟随。如果动作中没有填写 definition,则会切换该玩家的所有同伴。

点击同伴没有反应。 Companion Interact 只响应玩家用主手对自己的同伴进行的右键点击。请检查其 triggers 是否已链接,以及其 criteria 是否匹配。

同伴卡顿或飘在奇怪的位置。 它只会在自己所处位置下方的地面上行走,且只能向上跨一到两格。在非常狭窄或崎岖的地方它可能被卡住;一旦离玩家足够远,它会自动传送回来。

相关扩展​

  • Dialog Menu — 玩家点击同伴时打开对话界面。