Companion
Обзор
Companion даёт игрокам личного спутника: питомца, проводника, дрона или талисмана, который ходит за ними повсюду. Спутник — это NPC (или модель ModelEngine), которого видит только владелец, поэтому у каждого игрока может быть свой, и при этом в реальный мир не добавляется ни одной сущности.
Вы описываете спутника с помощью определения сущности (entity definition), которое уже используете в TypeWriter, и привязываете его к аудитории. Каждый игрок, входящий в аудиторию, получает спутника; когда он её покидает, спутник исчезает. У игрока может быть сразу несколько спутников — по одному на каждое определение сущности.
Возможности
- Личные спутники — каждый спутник является пакетной сущностью, которую видит только её владелец.
- NPC или ModelEngine — определением может быть как определение NPC, так и определение модели ModelEngine.
- Поведение при следовании — спутник держится на расстоянии от
minDistanceдоmaxDistanceблоков от игрока, перешагивает небольшие препятствия и остаётся на земле. - Автоматическое догоняние — он телепортируется к игроку после смены мира, телепортации или если сильно отстал.
- Анимации ходьбы и простоя — у моделей ModelEngine анимации простоя и ходьбы переключаются в зависимости от движения спутника.
- Следовать или ждать — действие переключает спутника между следованием и ожиданием на месте.
- Триггер по клику — событие срабатывает, когда игрок кликает правой кнопкой мыши по одному из своих спутников.
- Несколько одновременно — игрок может владеть одним спутником на каждое определение сущности; повторный вызов того же определения заменяет старого спутника.
- Количество активных — факт сообщает, сколько спутников сейчас у игрока.
Установка
- Установите расширения TypeWriter Entity, Quest, Basic и RoadNetwork на вкладке Extensions веб-панели, если они ещё не установлены (см. документацию TypeWriter). Companion собран под эти четыре официальных расширения.
- По желанию: установите расширение ModelEngine для TypeWriter и плагин ModelEngine, если вам нужны 3D-модели вместо NPC. Companion работает и без них.
- Положите JAR-файл Companion в
plugins/Typewriter/extensions/и перезапустите сервер.
Быстрый старт
Выдайте каждому игроку следующего за ним спутника:
- В веб-панели TypeWriter создайте определение NPC (или определение ModelEngine) для спутника: его имя, скин или модель.
- Откройте страницу manifest и добавьте запись Companion Invocation.
- Укажите в
definitionсозданное определение сущности. Оставьтеactivityпустым, чтобы использовалось поведение простоя по умолчанию, или выберите активность сущности (entity activity), если нужна своя. - Настройте
minDistance(где спутник останавливается, когда игрок стоит) иmaxDistance(насколько он отстаёт, когда игрок идёт). Значения по умолчанию —2.0и4.0. - Чтобы ограничить спутника для некоторых игроков, добавьте
criteria, например проверку факта о купленном питомце. Оставьте поле пустым, чтобы спутник был у всех в аудитории. - Опубликуйте. Спутник появится позади игрока.
Чтобы игрок мог остановить спутника или снова отправить его следовать, используйте действие Companion Follow Mode. Чтобы реагировать на клики, добавьте событие Companion Interact и свяжите с ним записи, которые оно должно запускать, например диалог или меню.
У Companion Follow Mode есть собственные minDistance и maxDistance. При выполнении действия они перезаписывают расстояния спутника. Оставляйте те же значения, что и в invocation, если не хотите их менять.
Как это работает
Когда игрок входит в аудиторию, спутник появляется позади него на расстоянии maxDistance блоков. Затем он двигается каждый тик: держится на minDistance, когда игрок стоит, и на maxDistance, когда игрок движется, а если сильно отстал, ускоряется. Он телепортируется к игроку при смене мира, после телепортации, когда находится дальше чем в восемь раз maxDistance, или когда застрял дальше чем в четыре раза maxDistance.
Спутник удаляется, когда игрок покидает аудиторию или выходит с сервера. После смены мира спутник удаляется и вызывается заново. Спутники не сохраняются: они создаются заново из аудитории каждый раз, когда игрок заходит на сервер.
Записи
Записей: 4, сгенерированы из исходного кода расширения.
Действия1
- Companion Follow ModeToggle companion follow or wait mode
События1
- Companion InteractTriggers when the player clicks their companion
Факты1
- Companion ActiveNumber of active companions the player has
Аудитории1
- Companion InvocationSpawn and manage the player's companion
Устранение неполадок
Спутник не появляется. Записи нужно корректное definition: если оно пустое или удалено, никто не вызывается. Определение должно быть определением NPC или ModelEngine (поле предлагает только такие). Также проверьте, что игрок соответствует criteria и входит в аудиторию, к которой относится invocation.
Вместо моей модели спутник — обычный NPC. Поддержка ModelEngine необязательна и определяется во время работы. Убедитесь, что расширение ModelEngine установлено, а определение является определением ModelEngine. Анимации ищутся по названиям анимаций простоя и ходьбы из этого определения.
Спутник не двигается. Режим следования переключается каждым действием Companion Follow Mode. Если действие выполнилось один раз, спутник ждёт; выполните его снова, чтобы он продолжил следовать. Если в действии не указано definition, оно переключает всех спутников игрока.
Клик по спутнику ничего не делает. Companion Interact реагирует только на правый клик основной рукой по собственному спутнику игрока. Проверьте, что его triggers связаны и что criteria выполняются.
Спутник тормозит или оказывается в странных местах. Он идёт по земле под своей позицией и поднимается только на один-два блока. В очень тесных или неровных местах он может застрять; когда он окажется достаточно далеко от игрока, он автоматически телепортируется обратно.
Связанные расширения
- Dialog Menu — открывает экран диалога, когда игрок кликает по спутнику.