设计菜单
Dungeon 有两个菜单,而且都需要你来绘制。本页构建一对最小的菜单:一个带有两个副本槽位的浏览器,以及一个带有准备、离开和自动填充按钮的大厅。它假定你已经按照快速开始的步骤创建了 Dungeon Instance 和 Dungeon Category。
刚接触 GUI 布局?请先阅读 GUI 入门和布局指南。下面的菜单使用与 Open GUI 动作相同的 layoutPool 和 mainLayoutId 字段。
全局菜单
- 在一个 sequence 页面中,添加一个 Dungeon Global Menu,并将
category设为你的分类。将inventoryRows设为3,inventoryTitle设为<gold>Dungeons。 - 在
layoutPool中,添加一个类型为simple、id为main的布局。在mainLayoutId中填入main。 - 在
items中添加一圈边框:一块灰色染色玻璃板(gray stained glass pane),位于x为0、y为0,count为9,direction为right,displayName为单个空格。在y为2处重复一次。 - 添加一个
buttonType为DUNGEON_INSTANCE_SLOT的物品,位于x为3、y为1,count为3,direction为right,gap为1。它的材质无关紧要:它只是一个标记。该分类的前三个副本会填入这三个位置。 - 可选:在
x为8、y为1处添加一个buttonType为DUNGEON_FIND_PARTY的物品(例如一个名为<yellow>Find a party的指南针),再添加一个buttonType为DUNGEON_INFO的物品作为帮助书。 - 通过 NPC 对话选项或命令事件触发该条目,然后 Publish。
每个副本的外观是在分类中设定的,而不是在布局中:打开 Dungeon Category,编辑其槽位的 unlockedItem、unlockedName 和 unlockLore。{dungeon_name}、{players} 和 {max} 会在菜单打开时以及每次重绘时被替换。若要对部分玩家锁定某个副本,请在其槽位上添加 criteria:这些玩家会看到锁定外观,并且无法打开它。
队伍菜单
- 添加一个 Dungeon Party Menu。将其
dungeonInstance留空,即可服务所有副本;或指定一个副本,让它拥有自己的菜单。dungeonInstance为空的菜单,服务没有被其他菜单指定的副本。 - 将
inventoryRows设为3,inventoryTitle设为<gold>Lobbies。 - 选择大厅的外观:
lobbyItem(默认是纸),lobbyName设为Lobby {index},lobbyLore设为类似{players}/{max} players和{player_names}的内容。 - 在
layoutPool中,添加一个simple布局main,并设置mainLayoutId。在大厅应当出现的位置放置一个buttonType为DUNGEON_LOBBY_SLOT的物品(用count、direction和gap标出一行)。没有标记时,大厅从左上角开始绘制,lobbyOffsetX和lobbyOffsetY可将它们从你的边框或按钮处移开。 - 在最下面一行添加三个按钮物品:
DUNGEON_READY(例如一个名为<green>Ready的黄绿色染料)、DUNGEON_LEAVE(一个屏障)和DUNGEON_AUTO_FILL。 - Publish。不要自己触发这个条目:它会在玩家于全局菜单中点击副本时打开。
每个副本的每个 maxSimultaneousInstances 对应一个大厅,因此 maxSimultaneousInstances 为 1 的副本只显示一个大厅。
玩家的体验
- 玩家打开全局菜单并点击一个副本。队伍菜单打开。
- 他们点击一个大厅以加入。安装了 MMOCore、Parties 或 Typewriter 队伍扩展时,只要有空位,玩家的整支队伍会一起加入大厅(Dungeon 只读取这些队伍,绝不修改它们)。
- 其他玩家无需点击就能看到新成员:两个菜单会自动刷新(
autoRefreshTicks)。每位玩家按下准备按钮。当所有人都已准备且达到minPartySize时,开始startCooldownSeconds的倒计时,然后队伍被传送到出生点。 - 运行结束时,玩家回到原来所在的位置。
小提示
先做原型
先在一个带有装饰物品的普通 Open GUI 菜单中绘制布局,检查位置,然后把 layoutPool 复制到 Dungeon 菜单中,并给动态物品打上标记。
按钮类型必须精确
buttonType 必须按菜单中所列的大写形式书写。拼错的类型不会报错:该物品仍是普通物品,不会有任何特殊作用。