Pular para o conteúdo principal

MythicMobs NPC

Mobs do MythicMobs e modelos do BetterModel ou ModelEngine como NPCs interativos, com cinemáticas e objetivos de missão.

Pagasv5.0Entidades e modelos

Visão geral​

O MythicMobs NPC transforma um mob do MythicMobs em um NPC do TypeWriter. Você continua projetando o mob, seu modelo e suas skills no MythicMobs e depois o coloca no mundo pelo painel web como uma NPC definition (o que o NPC é) e uma NPC instance (onde ele fica e quem o vê).

Um NPC pode exibir um nome acima da cabeça, mostrar marcadores de quest, iniciar um diálogo quando um jogador clica nele com o botão direito, ser ocultado ou exibido por uma action, tocar animações e aparecer em cinematics. Modelos do BetterModel ou do ModelEngine são suportados.

A extensão roda no Paper. Por padrão, cada jogador recebe sua própria cópia do NPC (ticking desativado), então a cinematic ou a action de ocultar de um jogador nunca afeta os outros. Ative ticking para obter um mob real do lado do servidor que pode andar por aí.

Recursos​

  • NPC definition e instance — defina um NPC MythicMob uma única vez e coloque-o quantas vezes quiser, com uma audience compartilhada, por jogador ou por grupo.
  • Name tag e marcadores de quest — um nome flutuante e um marcador ❗, ❓ ou 💬 quando o NPC tem um objective ou um diálogo para o jogador.
  • Eventos de interação — inicie diálogos com um clique direito, filtrados por agachar, além de um evento para golpes em qualquer direção.
  • Objectives de quest — interaja com um NPC, saqueie itens de mobs do MythicMobs ou conte interações com um mob.
  • Facts e variáveis — presença, distância, visibilidade, vida, tabela de ameaças, animações, nível, poder, facção, stance e qualquer variável do MythicMobs.
  • Mostrar, ocultar e animar — actions para mostrar ou ocultar um NPC e para tocar ou parar uma animação do ModelEngine ou do BetterModel.
  • Cinematics — câmera de foco em NPC, câmera presa a um bone do modelo, NPC conduzido por uma gravação e skills do MythicMobs lançadas em uma posição.
  • Bounds de câmera e de olhar — force o jogador a olhar para um NPC ou para o mob mais próximo de um tipo durante uma interação.
  • Stances — stances de repouso e caminhada de dia e de noite, além de stances de interação, ataque e outras, por meio do ModelEngine ou do BetterModel.

Instalação​

  1. Instale o MythicMobs e o PacketEvents no servidor.
  2. No TypeWriter, confirme que as extensões oficiais Entity, Basic, Quest e Road Network estão instaladas. A build declara Quest e Road Network como dependências e usa as extensões Entity e Basic em tempo de execução.
  3. Opcional: instale o BetterModel ou o ModelEngine para modelos 3D. O BetterModel é verificado primeiro e o ModelEngine é usado quando o BetterModel está ausente. Instale o Geyser se jogadores do Bedrock precisarem ver a bone camera.
  4. Obtenha a extensão nas lojas (veja os botões no painel de resumo acima) e coloque o JAR em plugins/Typewriter/extensions/.
  5. Reinicie o servidor. O console imprime MythicmobsNPCExtension has been successfully initialized.
  6. Crie seus mobs no MythicMobs (e associe o modelo deles lá). A extensão os invoca e os exibe, mas não cria nem altera o modelo.

Primeiros passos​

Coloque um ferreiro que inicia um diálogo quando um jogador clica nele com o botão direito:

  1. No MythicMobs, crie um mob com o nome interno Blacksmith (com seu modelo, se usar um) e recarregue o MythicMobs.
  2. No painel web do TypeWriter, abra uma página static e adicione uma MythicMob NPC Definition. Defina displayName com o nome exibido acima da cabeça e mobType como Blacksmith.
  3. Adicione uma MythicMob NPC Instance. Vincule definition à definition e defina spawnLocation (com rotação) com o local onde o NPC fica.
  4. Adicione um MythicMob NPC Interact Event. Vincule definition à mesma definition e mantenha shiftType em ANY.
  5. Em seus triggers, vincule uma entry de diálogo (por exemplo, um spoken dialogue) a partir de uma página de sequence.
  6. Publique e clique com o botão direito no NPC. Um marcador 💬 aparece acima do NPC para os jogadores que podem conversar com ele.

Para torná-lo alvo de uma quest, adicione um Interact MythicMob NPC Objective com entity definido como a definition: o marcador passa a ser ❓ (ou ❗ quando a quest está sendo acompanhada) e um rastro de caminho leva até o NPC.

Escolhendo o modo

Deixe ticking desativado para NPCs estáticos: cada jogador vê sua própria cópia, que é o que as cinematics e a visibilidade por jogador exigem. Ative-o apenas quando o mob precisar se mover ou lutar no servidor e defina clientSideRadius acima de 0 para que sua IA continue ativada.

Como funciona​

A definition guarda o que o NPC é: tipo de mob, nome, opções da name tag, modo ticking e os dados de entidade que se aplicam a todas as instances. A instance guarda onde ele fica, seus próprios dados de entidade, uma activity opcional (por exemplo, um caminho de road network) e um group.

Facts, variáveis, actions de mostrar e ocultar e as entries de câmera se referem a uma instance. Elas encontram o mob ativo do tipo de mob da definition que esteja dentro de um raio de busca do ponto de spawn da instance (5 blocos por padrão, definido por radius no alvo).

Configuração​

Os textos e deslocamentos que não são campos de entries são snippets do TypeWriter. Edite-os em plugins/Typewriter/snippets.

SnippetPadrãoFinalidade
objective.entity.indicator.tracked<gold><b>❗Marcador quando o NPC é o alvo da quest acompanhada.
objective.entity.indicator.normal<blue><b>❓Marcador quando o NPC é o alvo de um objective ativo.
objective.entity.indicator.dialogue<white><b>💬Marcador quando o NPC tem uma interação disponível.
entity.nameplate<other> e depois <reset><display_name>Layout da name tag. <other> são as linhas dos dados da entidade.
entity.name.color#40000000Cor de fundo da name tag e do marcador.
quest.objective.interact_mythicmob_npcInteract with <entity>Texto padrão do objective de interação.
advancedQuest.display<display> (<current>/<required>), em tons de cinzaLinha dos objetivos de contagem (loot, skill) enquanto em andamento. Placeholders: <display> (o texto display do objetivo), <current>, <required>. A chave é compartilhada com as outras extensões de objetivos da BTC, então uma edição muda o estilo de todas.
advancedQuest.completed✔ e depois o <display> riscado e (<current>/<required>)A mesma linha quando amount é atingido. Os mesmos placeholders.
mythicmob_npc_look_at_interaction_bound.look_back_delay500Milissegundos que o jogador pode desviar o olhar antes que o bound de olhar o vire de volta.
mythicmob_type_look_at_interaction_bound.look_back_delay500O mesmo, para o bound de olhar por tipo de mob.

Entries​

38 entradas, geradas a partir do código-fonte da extensão.

Ações4
Eventos3
Objetivos3
Fatos6
Cinemáticas4
Entidades2
Dados de entidade4
Limites de interação3
Variáveis9

Solução de problemas​

O NPC nunca aparece. O console imprime Could not spawn MythicMob NPC '<type>' at <location> quando mobType não é o nome de um mob do MythicMobs ou a invocação falha. mobType é o nome interno do mob, com as mesmas maiúsculas e minúsculas do MythicMobs. Verifique se o MythicMobs carregou o mob e se o chunk de spawnLocation consegue ser carregado.

A extensão avisa que o MythicMobs está ausente. Na inicialização, o log diz MythicMobs plugin not found! This extension requires MythicMobs to function properly. Instale o MythicMobs e reinicie.

Facts e variáveis sempre retornam o valor padrão. Eles resolvem o mob ativo perto do ponto de spawn da instance. Se o NPC se moveu para além de radius (padrão de 5 blocos), ou o tipo de mob for diferente, nada corresponde e o fact retorna 0. Aumente radius no target.

O diálogo não inicia ao clicar. O evento de interação só reage a um NPC colocado por uma MythicMob NPC Instance, e definition deve ser a definition da instance. interactionType escolhe o clique: RIGHT_CLICK, LEFT_CLICK ou ALL. Antes da versão 4.9.1, apenas cliques direitos eram tratados, e no Paper 26.x nem mesmo estes: atualize a extensão.

Os jogadores não compartilham o NPC. Com ticking desativado e sem group na instance, cada jogador recebe sua própria cópia, então a action de ocultar ou a cinematic de um jogador não afeta os outros. Defina um group na instance para compartilhar o NPC dentro de uma party ou guilda.

Um bone não é ocultado ou anexado. Bone Visibility Data e Attachment Data são aplicados ao modelo assim que ele existe e após cada respawn, com ticking ligado ou desligado. Um nome de bone ou de modelo que o modelo não conhece é ignorado e o console o registra: confira os nomes com o modelo.

A bone camera não mostra nada ou o jogador mantém a visão normal. boneName deve existir no modelo, e o mob deve estar invocado para aquele jogador. Com uma Entity Cinematic, use entityCinematic para que a câmera siga exatamente aquele mob. A câmera começa nos olhos do jogador e se prende ao bone assim que o modelo é encontrado.

O modelo pisca quando o jogador ou a câmera está perto do NPC. É o culling do ModelEngine: o ModelEngine avalia, a partir dos pés do modelo, se ele está atrás do jogador (backcull) ou atrás de blocos (blockedcull) e, de perto, esconde o modelo por engano e depois o mostra de novo. A partir da versão 4.9.1, a extensão desativa os dois culls em cada NPC assim que o modelo do ModelEngine é detectado, então não há nada para configurar. Se o modelo continuar piscando, procure no console o aviso ModelEngine exposes no back/blocked cull setter: ele indica que a sua versão do ModelEngine não permite que a extensão altere essas configurações. Nesse caso, adicione cullconfig{backcull=false;blockedcull=false} @self ~onSpawn às skills do mob do MythicMobs, depois da mecânica model, e faça o NPC aparecer novamente. Modelos do BetterModel não são afetados.

Extensões relacionadas​

  • MythicMobs — entries de invocar, skill e abate para mobs comuns do MythicMobs.
  • BetterModel — modelos do BetterModel como NPCs, com a mesma abordagem de cinematics.