Оформление меню
В Dungeon два меню, и оба вы рисуете сами. На этой странице собирается минимальная пара: браузер с двумя слотами подземелий и лобби с кнопками готовности, выхода и автозаполнения. Предполагается, что вы уже создали Dungeon Instance и Dungeon Category, как в шагах Быстрого старта.
Впервые работаете с макетами GUI? Сначала прочитайте введение в GUI и руководство по макетам. Меню ниже используют те же поля layoutPool и mainLayoutId, что и действие Open GUI.
Глобальное меню
- На странице sequence добавьте Dungeon Global Menu и задайте
categoryсвоей категорией. УстановитеinventoryRowsравным3, аinventoryTitle—<gold>Dungeons. - В
layoutPoolдобавьте макет типаsimpleсidmain. ВпишитеmainвmainLayoutId. - В
itemsдобавьте рамку: серую стеклянную панель вx0,y0, сcount9,directionrightи одним пробелом в качествеdisplayName. Повторите дляy2. - Добавьте предмет с
buttonTypeDUNGEON_INSTANCE_SLOTвx3,y1,count3,directionright,gap1. Его материал не важен: это маркер. Первые три подземелья категории заполняют три позиции. - По желанию добавьте предмет с
buttonTypeDUNGEON_FIND_PARTYвx8,y1(например, компас с именем<yellow>Find a party) и предмет сbuttonTypeDUNGEON_INFOдля книги-подсказки. - Запустите запись из варианта диалога NPC или события-команды, затем опубликуйте.
Как выглядит каждое подземелье, задаётся в категории, а не в макете: откройте Dungeon Category и отредактируйте unlockedItem, unlockedName и unlockLore её слота. {dungeon_name}, {players} и {max} подставляются при открытии меню и при каждой его перерисовке. Чтобы закрыть подземелье для некоторых игроков, добавьте criteria в его слот: они увидят закрытый вид и не смогут его открыть.
Меню отряда
- Добавьте один Dungeon Party Menu. Оставьте его
dungeonInstanceпустым, чтобы он обслуживал все подземелья, или назовите подземелье, чтобы дать ему собственное меню. Меню с пустымdungeonInstanceобслуживает подземелья, которые не называет ни одно другое меню. - Установите
inventoryRowsравным3, аinventoryTitle—<gold>Lobbies. - Выберите вид лобби:
lobbyItem(по умолчанию бумага),lobbyNameLobby {index}иlobbyLore, например{players}/{max} playersи{player_names}. - В
layoutPoolдобавьте макетsimplemainи задайтеmainLayoutId. Поставьте предмет сbuttonTypeDUNGEON_LOBBY_SLOTтам, где должны появляться лобби (используйтеcount,directionиgapдля ряда). Без маркера лобби рисуются от левого верхнего угла, аlobbyOffsetXиlobbyOffsetYсдвигают их от вашей рамки или кнопок. - Добавьте три кнопки в нижний ряд:
DUNGEON_READY(например, лаймовый краситель с именем<green>Ready),DUNGEON_LEAVE(барьер) иDUNGEON_AUTO_FILL. - Опубликуйте. Не запускайте эту запись сами: она открывается, когда игрок кликает по подземелью в глобальном меню.
У подземелья одно лобби на каждое значение maxSimultaneousInstances, поэтому подземелье с maxSimultaneousInstances 1 показывает одно лобби.
Что видит игрок
- Игрок открывает глобальное меню и кликает по подземелью. Открывается меню отряда.
- Он кликает по лобби, чтобы войти. Если установлены MMOCore, Parties или расширение отрядов Typewriter, весь отряд игрока входит в лобби вместе, когда хватает места (Dungeon только читает эти отряды и никогда их не изменяет).
- Другие игроки видят нового участника без клика: оба меню обновляются сами (
autoRefreshTicks). Каждый игрок нажимает кнопку готовности. Когда все готовы и достигнутminPartySize, идёт обратный отсчётstartCooldownSeconds, затем отряд телепортируется в точку появления. - Когда забег заканчивается, игроки возвращаются туда, где были.
Советы
Нарисуйте макет в обычном меню Open GUI с декоративными предметами, проверьте позиции, затем скопируйте layoutPool в меню Dungeon и пометьте динамические предметы.
buttonType нужно писать заглавными буквами, как указано в разделе Меню. Неверно написанный тип — не ошибка: предмет остаётся обычным предметом и ничего особенного не делает.