跳到主要内容

设计菜单

Dungeon 有两个菜单,而且都需要你来绘制。本页构建一对最小的菜单:一个带有两个副本槽位的浏览器,以及一个带有准备、离开和自动填充按钮的大厅。它假定你已经按照快速开始的步骤创建了 Dungeon Instance 和 Dungeon Category。

刚接触 GUI 布局?请先阅读 GUI 入门和布局指南。下面的菜单使用与 Open GUI 动作相同的 layoutPool 和 mainLayoutId 字段。

全局菜单​

  1. 在一个 sequence 页面中,添加一个 Dungeon Global Menu,并将 category 设为你的分类。将 inventoryRows 设为 3,inventoryTitle 设为 <gold>Dungeons。
  2. 在 layoutPool 中,添加一个类型为 simple、id 为 main 的布局。在 mainLayoutId 中填入 main。
  3. 在 items 中添加一圈边框:一块灰色染色玻璃板(gray stained glass pane),位于 x 为 0、y 为 0,count 为 9,direction 为 right,displayName 为单个空格。在 y 为 2 处重复一次。
  4. 添加一个 buttonType 为 DUNGEON_INSTANCE_SLOT 的物品,位于 x 为 3、y 为 1,count 为 3,direction 为 right,gap 为 1。它的材质无关紧要:它只是一个标记。该分类的前三个副本会填入这三个位置。
  5. 可选:在 x 为 8、y 为 1 处添加一个 buttonType 为 DUNGEON_FIND_PARTY 的物品(例如一个名为 <yellow>Find a party 的指南针),再添加一个 buttonType 为 DUNGEON_INFO 的物品作为帮助书。
  6. 通过 NPC 对话选项或命令事件触发该条目,然后 Publish。

每个副本的外观是在分类中设定的,而不是在布局中:打开 Dungeon Category,编辑其槽位的 unlockedItem、unlockedName 和 unlockLore。{dungeon_name}、{players} 和 {max} 会在菜单打开时以及每次重绘时被替换。若要对部分玩家锁定某个副本,请在其槽位上添加 criteria:这些玩家会看到锁定外观,并且无法打开它。

队伍菜单​

  1. 添加一个 Dungeon Party Menu。将其 dungeonInstance 留空,即可服务所有副本;或指定一个副本,让它拥有自己的菜单。dungeonInstance 为空的菜单,服务没有被其他菜单指定的副本。
  2. 将 inventoryRows 设为 3,inventoryTitle 设为 <gold>Lobbies。
  3. 选择大厅的外观:lobbyItem(默认是纸),lobbyName 设为 Lobby {index},lobbyLore 设为类似 {players}/{max} players 和 {player_names} 的内容。
  4. 在 layoutPool 中,添加一个 simple 布局 main,并设置 mainLayoutId。在大厅应当出现的位置放置一个 buttonType 为 DUNGEON_LOBBY_SLOT 的物品(用 count、direction 和 gap 标出一行)。没有标记时,大厅从左上角开始绘制,lobbyOffsetX 和 lobbyOffsetY 可将它们从你的边框或按钮处移开。
  5. 在最下面一行添加三个按钮物品:DUNGEON_READY(例如一个名为 <green>Ready 的黄绿色染料)、DUNGEON_LEAVE(一个屏障)和 DUNGEON_AUTO_FILL。
  6. Publish。不要自己触发这个条目:它会在玩家于全局菜单中点击副本时打开。

每个副本的每个 maxSimultaneousInstances 对应一个大厅,因此 maxSimultaneousInstances 为 1 的副本只显示一个大厅。

玩家的体验​

  1. 玩家打开全局菜单并点击一个副本。队伍菜单打开。
  2. 他们点击一个大厅以加入。安装了 MMOCore、Parties 或 Typewriter 队伍扩展时,只要有空位,玩家的整支队伍会一起加入大厅(Dungeon 只读取这些队伍,绝不修改它们)。
  3. 其他玩家无需点击就能看到新成员:两个菜单会自动刷新(autoRefreshTicks)。每位玩家按下准备按钮。当所有人都已准备且达到 minPartySize 时,开始 startCooldownSeconds 的倒计时,然后队伍被传送到出生点。
  4. 运行结束时,玩家回到原来所在的位置。

小提示​

先做原型

先在一个带有装饰物品的普通 Open GUI 菜单中绘制布局,检查位置,然后把 layoutPool 复制到 Dungeon 菜单中,并给动态物品打上标记。

按钮类型必须精确

buttonType 必须按菜单中所列的大写形式书写。拼错的类型不会报错:该物品仍是普通物品,不会有任何特殊作用。