Pular para o conteúdo principal

Desenhando os menus

O Dungeon tem dois menus, e você desenha os dois. Esta página constrói um par mínimo: um navegador com dois slots de dungeon e um lobby com os botões de pronto, sair e preenchimento automático. Ela pressupõe que você já criou uma Dungeon Instance e uma Dungeon Category como nos passos de Primeiros passos.

Novo nos layouts de GUI? Leia primeiro a introdução ao GUI e o guia de layouts. Os menus abaixo usam os mesmos campos layoutPool e mainLayoutId da action Open GUI.

O menu global​

  1. Em uma página sequence, adicione um Dungeon Global Menu e defina category com a sua categoria. Defina inventoryRows como 3 e inventoryTitle como <gold>Dungeons.
  2. Em layoutPool, adicione um layout do tipo simple com o id main. Digite main em mainLayoutId.
  3. Em items, adicione uma borda: um painel de vidro cinza em x 0, y 0, com count 9, direction right e um único espaço como displayName. Repita em y 2.
  4. Adicione um item com buttonType DUNGEON_INSTANCE_SLOT em x 3, y 1, count 3, direction right, gap 1. O material dele não importa: é um marcador. As três primeiras dungeons da categoria preenchem as três posições.
  5. Opcionalmente, adicione um item com buttonType DUNGEON_FIND_PARTY em x 8, y 1 (por exemplo, uma bússola chamada <yellow>Find a party) e um com buttonType DUNGEON_INFO para um livro de ajuda.
  6. Dispare a entry a partir de uma opção de diálogo de NPC ou de um command event e então Publique.

A aparência de cada dungeon é definida na categoria, não no layout: abra a Dungeon Category e edite unlockedItem, unlockedName e unlockLore do slot dela. {dungeon_name}, {players} e {max} são substituídos quando o menu abre e sempre que ele é redesenhado. Para bloquear uma dungeon para alguns jogadores, adicione criteria ao slot dela: eles veem o visual de bloqueado e não podem abri-la.

O menu de party​

  1. Adicione um Dungeon Party Menu. Deixe o dungeonInstance dele vazio para atender todas as dungeons, ou nomeie uma dungeon para dar a ela seu próprio menu. Um menu com dungeonInstance vazio atende as dungeons que nenhum outro menu nomeia.
  2. Defina inventoryRows como 3 e inventoryTitle como <gold>Lobbies.
  3. Escolha o visual do lobby: lobbyItem (um papel por padrão), lobbyName Lobby {index} e uma lobbyLore como {players}/{max} players e {player_names}.
  4. Em layoutPool, adicione um layout simple main e defina mainLayoutId. Coloque um item com buttonType DUNGEON_LOBBY_SLOT onde os lobbies devem aparecer (use count, direction e gap para uma fileira). Sem um marcador, os lobbies são desenhados a partir do canto superior esquerdo, e lobbyOffsetX e lobbyOffsetY os afastam da sua borda ou dos seus botões.
  5. Adicione três itens de botão na fileira de baixo: DUNGEON_READY (por exemplo, um corante verde-limão chamado <green>Ready), DUNGEON_LEAVE (uma barreira) e DUNGEON_AUTO_FILL.
  6. Publique. Não dispare esta entry você mesmo: ela abre quando um jogador clica em uma dungeon no menu global.

Uma dungeon tem um lobby por maxSimultaneousInstances, então uma dungeon com maxSimultaneousInstances 1 mostra um único lobby.

O que o jogador vivencia​

  1. O jogador abre o menu global e clica em uma dungeon. O menu de party abre.
  2. Ele clica em um lobby para entrar. Com o MMOCore, o Parties ou a extensão de party do Typewriter instalados, a party inteira de um jogador entra junta no lobby quando há vaga (o Dungeon apenas lê essas parties e nunca as altera).
  3. Os outros jogadores veem o novo membro sem clicar: os dois menus se atualizam sozinhos (autoRefreshTicks). Cada jogador aperta o botão de pronto. Quando todos estão prontos e minPartySize é atingido, a contagem regressiva de startCooldownSeconds corre, e então a party é teletransportada para o ponto de spawn.
  4. Quando a run termina, os jogadores voltam para onde estavam.

Dicas​

Prototipe primeiro

Desenhe o layout em um menu Open GUI comum com itens decorativos, confira as posições, depois copie o layoutPool para o menu do Dungeon e marque os itens dinâmicos.

Os tipos de botão são exatos

buttonType deve ser escrito em maiúsculas como listado em Menus. Um tipo escrito errado não é um erro: o item continua sendo um item normal e não faz nada de especial.