Перейти к основному содержимому

MythicMobs NPC

Мобы MythicMobs и модели BetterModel или ModelEngine в роли интерактивных NPC, с кинематиками и квестовыми целями.

Платныеv5.0Сущности и модели

Обзор​

MythicMobs NPC превращает моба MythicMobs в NPC TypeWriter. Вы по-прежнему создаёте моба, его модель и навыки в MythicMobs, а затем размещаете его в мире из веб-панели как определение NPC (NPC definition, то есть что это за NPC) и экземпляр NPC (NPC instance, то есть где он стоит и кто его видит).

NPC может показывать имя над головой, отображать маркеры квестов, начинать диалог при правом клике игрока, скрываться или показываться действием, воспроизводить анимации и появляться в кинематографических сценах. Поддерживаются модели из BetterModel и ModelEngine.

Расширение работает на Paper. По умолчанию каждый игрок получает собственную копию NPC (ticking выключен), поэтому кинематографическая сцена или действие скрытия одного игрока никогда не влияют на остальных. Включите ticking, чтобы получить настоящего серверного моба, который может ходить.

Возможности​

  • Определение и экземпляр NPC — определите NPC на основе MythicMob один раз и размещайте его сколько угодно раз с общей аудиторией, аудиторией для каждого игрока или группы.
  • Табличка с именем и маркеры квестов — парящее имя и маркер ❗, ❓ или 💬, когда у NPC есть цель или диалог для игрока.
  • События взаимодействия — запуск диалогов по правому клику с фильтром по приседанию, а также событие для ударов в обоих направлениях.
  • Цели квестов — взаимодействие с NPC, сбор предметов с мобов MythicMobs или подсчёт взаимодействий с мобом.
  • Факты и переменные — присутствие, расстояние, видимость, здоровье, таблица угрозы, анимации, уровень, сила, фракция, стойка и любая переменная MythicMobs.
  • Показ, скрытие и анимация — действия для показа или скрытия NPC и для запуска или остановки анимации ModelEngine или BetterModel.
  • Кинематографические сцены — камера с фокусом на NPC, камера, закреплённая на кости модели, NPC, управляемый записанной лентой, и навыки MythicMobs, применяемые в позиции.
  • Привязки камеры и взгляда — заставляйте игрока смотреть на NPC или ближайшего моба определённого типа во время взаимодействия.
  • Стойки — дневные и ночные стойки простоя и ходьбы, а также стойки взаимодействия, атаки и другие через ModelEngine или BetterModel.

Установка​

  1. Установите на сервер MythicMobs и PacketEvents.
  2. В TypeWriter убедитесь, что установлены официальные расширения Entity, Basic, Quest и Road Network. Сборка объявляет Quest и Road Network как зависимости и использует расширения Entity и Basic во время работы.
  3. По желанию: установите BetterModel или ModelEngine для 3D-моделей. BetterModel проверяется первым, а ModelEngine используется, когда BetterModel отсутствует. Установите Geyser, если игроки Bedrock должны видеть камеру на кости.
  4. Получите расширение в магазинах (см. кнопки в сводной панели выше) и положите JAR-файл в plugins/Typewriter/extensions/.
  5. Перезапустите сервер. Консоль выведет MythicmobsNPCExtension has been successfully initialized.
  6. Создайте своих мобов в MythicMobs (и привяжите там их модель). Расширение призывает и показывает их, но не создаёт и не изменяет модель.

Быстрый старт​

Разместим кузнеца, который начинает диалог, когда игрок кликает по нему правой кнопкой:

  1. В MythicMobs создайте моба с внутренним именем Blacksmith (с моделью, если вы её используете) и перезагрузите MythicMobs.
  2. В веб-панели TypeWriter откройте страницу static и добавьте MythicMob NPC Definition. Задайте displayName — имя, показываемое над головой, а mobType равным Blacksmith.
  3. Добавьте MythicMob NPC Instance. Свяжите definition с определением и задайте spawnLocation (с поворотом) там, где стоит NPC.
  4. Добавьте MythicMob NPC Interact Event. Свяжите definition с тем же определением и оставьте shiftType равным ANY.
  5. В его triggers свяжите запись диалога (например, озвученный диалог) со страницы sequence.
  6. Опубликуйте и кликните правой кнопкой по NPC. Над NPC появится маркер 💬 для игроков, которые могут с ним поговорить.

Чтобы сделать его целью квеста, добавьте Interact MythicMob NPC Objective с entity, равным определению: маркер превращается в ❓ (или ❗, когда квест отслеживается), а к NPC ведёт поток-путь.

Выбор режима

Оставьте ticking выключенным для статичных NPC: каждый игрок видит собственную копию, что необходимо для кинематографических сцен и видимости для каждого игрока. Включайте его только тогда, когда моб должен двигаться или сражаться на сервере, и задайте clientSideRadius больше 0, чтобы его ИИ оставался включённым.

Как это работает​

Определение содержит то, что представляет собой NPC: тип моба, имя, параметры таблички с именем, режим ticking и данные сущности, действующие для каждого экземпляра. Экземпляр содержит то, где он стоит, собственные данные сущности, необязательную activity (например, путь по сети дорог) и group.

Факты, переменные, действия показа и скрытия и записи камеры ссылаются на экземпляр. Они находят живого моба типа из определения в пределах радиуса поиска от точки появления экземпляра (по умолчанию 5 блоков, задаётся radius у цели).

Конфигурация​

Тексты и смещения, не являющиеся полями записей, — это сниппеты TypeWriter. Редактируйте их в plugins/Typewriter/snippets.

СниппетПо умолчаниюНазначение
objective.entity.indicator.tracked<gold><b>❗Маркер, когда NPC является целью отслеживаемого квеста.
objective.entity.indicator.normal<blue><b>❓Маркер, когда NPC является целью активной цели.
objective.entity.indicator.dialogue<white><b>💬Маркер, когда у NPC есть доступное взаимодействие.
entity.nameplate<other> затем <reset><display_name>Раскладка таблички с именем. <other> — строки из данных сущности.
entity.name.color#40000000Цвет фона таблички с именем и маркера.
quest.objective.interact_mythicmob_npcInteract with <entity>Текст цели взаимодействия по умолчанию.
advancedQuest.display<display> (<current>/<required>), в серых тонахСтрока целей-счётчиков (добыча, навык), пока они выполняются. Плейсхолдеры: <display> (текст display цели), <current>, <required>. Ключ общий с другими расширениями целей BTC, поэтому одна правка меняет оформление всех.
advancedQuest.completed✔, затем зачёркнутый <display> и (<current>/<required>)Та же строка, когда amount достигнуто. Те же плейсхолдеры.
mythicmob_npc_look_at_interaction_bound.look_back_delay500Миллисекунды, в течение которых игрок может отвести взгляд, прежде чем привязка взгляда повернёт его обратно.
mythicmob_type_look_at_interaction_bound.look_back_delay500То же для привязки взгляда по типу моба.

Записи​

Записей: 38, сгенерированы из исходного кода расширения.

Действия4
События3
Цели3
Факты6
Кинематики4
Сущности2
Данные сущностей4
Границы взаимодействия3
Переменные9

Устранение неполадок​

NPC никогда не появляется. Консоль выводит Could not spawn MythicMob NPC '<type>' at <location>, когда mobType не является именем моба MythicMobs или призыв не удался. mobType — это внутреннее имя моба с тем же регистром, что и в MythicMobs. Проверьте, что MythicMobs загрузил моба и что чанк spawnLocation может загрузиться.

Расширение предупреждает об отсутствии MythicMobs. При запуске в логе написано MythicMobs plugin not found! This extension requires MythicMobs to function properly. Установите MythicMobs и перезапустите сервер.

Факты и переменные всегда возвращают значение по умолчанию. Они определяют живого моба рядом с точкой появления экземпляра. Если NPC ушёл дальше radius (по умолчанию 5 блоков) или тип моба отличается, ничего не совпадает, и факт возвращает 0. Увеличьте radius в target.

Диалог не начинается по клику. Событие взаимодействия реагирует только на NPC, размещённого экземпляром MythicMob NPC Instance, а definition должно быть определением этого экземпляра. interactionType выбирает клик: RIGHT_CLICK, LEFT_CLICK или ALL. До версии 4.9.1 обрабатывались только правые клики, а на Paper 26.x не обрабатывались даже они: обновите расширение.

Игроки не делят NPC. Если ticking выключен и у экземпляра нет group, каждый игрок получает собственную копию, поэтому действие скрытия или кинематографическая сцена одного игрока не влияют на других. Задайте group у экземпляра, чтобы делить NPC внутри отряда или гильдии.

Кость не скрывается или не привязывается. Bone Visibility Data и Attachment Data применяются к модели, как только она появляется, и после каждого респауна — при включённом и выключенном ticking. Имя кости или модели, которого модель не знает, пропускается, а консоль его записывает: сверьте имена с моделью.

Камера на кости ничего не показывает или игрок сохраняет обычный вид. boneName должно существовать в модели, а моб должен быть призван для этого игрока. С Entity Cinematic используйте entityCinematic, чтобы камера следовала именно за этим мобом. Камера начинается на уровне глаз игрока и перескакивает на кость, как только модель найдена.

Модель мерцает, когда игрок или камера находятся рядом с NPC. Причина — каллинг ModelEngine: ModelEngine определяет от ног модели, находится ли она позади игрока (backcull) или за блоками (blockedcull), и вблизи ошибочно скрывает модель, а затем снова показывает её. Начиная с версии 4.9.1 расширение отключает оба режима каллинга у каждого NPC, как только обнаруживает его модель ModelEngine, — настраивать ничего не нужно. Если мерцание осталось, найдите в консоли предупреждение ModelEngine exposes no back/blocked cull setter: оно означает, что ваша версия ModelEngine не позволяет расширению менять эти настройки. В этом случае добавьте cullconfig{backcull=false;blockedcull=false} @self ~onSpawn в навыки моба MythicMobs после механики model и заново заспавните NPC. Модели BetterModel это не затрагивает.

Связанные расширения​

  • MythicMobs — записи призыва, навыков и убийств для обычных мобов MythicMobs.
  • BetterModel — модели BetterModel как NPC с тем же подходом к кинематографическим сценам.