EliteScript
EliteScript — это комплексная система скриптов для плагинов MagmaGuy, предоставляющая расширенные возможности настройки для создания динамического поведения боссов и других сущностей в Minecraft.
У EliteMobs две системы скриптинга, и обе полностью поддерживаются. EliteScript не устарел.
- EliteScript (эта страница и соседние с ней) — декларативный YAML. Лучше всего, когда ваша способность — это «по такому-то событию выполнить такие-то действия над такими-то целями». Ничего здесь не было удалено или заменено.
- Lua-способности — файлы
.luaв той же папкеpowers. Лучше всего, когда нужны переменные, циклы, случайное ветвление, состояние на каждого босса или отложенные продолжения. Собственные поставляемые способности EliteMobs теперь написаны на Lua.
Они не соперники: API context.script в Lua — это тонкая обёртка вокруг движка EliteScript. Когда вы пишете context.script:target({...}) или context.script:zone({...}) в Lua, передаваемая таблица попадает ровно в тот же код целей/зон/относительных векторов/частиц, который описан на этих страницах, поэтому каждое имя поля ниже применимо дословно. Изучение EliteScript не будет напрасным, если вы позже перейдёте на Lua.
Одно практическое следствие: если способность .lua и способность .yml имеют общее базовое имя, запись в списке powers: босса, указывающая на .yml, разрешается в файл .lua. Именно так поставляемые способности были переведены на Lua без поломки существующих конфигов боссов.
Обзор
EliteScript позволяет администраторам серверов создавать сложное, событийно-управляемое поведение для пользовательских боссов и мобов. Система скриптов построена на пяти основных компонентах:
- Events: Триггеры, запускающие выполнение скрипта (урон, появление, смерть и т.д.)
- Conditions: Требования, которые должны быть выполнены для запуска действий
- Actions: Выполняемые поведения (урон, телепортация, создание частиц и т.д.)
- Targets: Какие сущности или местоположения затрагиваются действиями
- Zones: Определённые области в мире для нацеливания и обнаружения
- Cooldowns: Временные ограничения для предотвращения спама скриптами
Elite Scripts можно добавлять как автономные файлы способностей или напрямую в файлы конфигурации пользовательских боссов.
Пример быстрого старта
Вот простой EliteScript, который заставляет босса бить игроков молнией при получении урона:
eliteScript:
LightningStrike:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: DIRECT_TARGET
repeatEvery: 20
times: 3
Cooldowns:
local: 60
global: 20
Этот скрипт срабатывает, когда игрок наносит урон боссу, затем бьёт молнией по игроку 3 раза (раз в секунду), с перезарядкой в 60 тиков перед повторным срабатыванием.
Компоненты скрипта
EliteScript предоставляет обширные возможности настройки через систему компонентов. Подробную информацию о каждом компоненте смотрите на следующих страницах:
Основные компоненты
- Events - 13 типов событий, включая урон, смерть, появление, бой и зональные триггеры
- Actions - 35 типов действий для создания сложного поведения
- Targets - 17 типов целей для выбора сущностей и местоположений
- Conditions - Условия фильтрации и блокировки с множеством типов проверок
- Zones - 8 форм зон (сферы, цилиндры, кубоиды, лучи, конусы и т.д.)
- Cooldowns - Системы локальной и глобальной перезарядки
- Относительные векторы - Продвинутое позиционирование и перемещение
Распространённые случаи использования
EliteScript обычно используется для:
- Фазовые бои с боссами: Различные паттерны атак при разных процентах здоровья
- Механики арены: Зональный урон, усиления или спавн в определённых областях
- Пользовательские атаки: Уникальные эффекты частиц, снаряды и атаки по области
- Опасности окружающей среды: Периодические молнии, падающие блоки или огонь
- Интерактивные механики: Телепортация, спавн мобов и модификация мира
- Общение с игроками: Сообщения, заголовки, панели действий и панели босса
- Условное поведение: Различные действия в зависимости от количества игроков, местоположения или состояния босса
Реализация
Скрипты можно реализовать двумя способами:
- Файлы способностей: Создайте автономные файлы
.ymlв~/plugins/EliteMobs/powers/ - Файлы пользовательских боссов: Добавьте секции
eliteScript:напрямую в конфигурации пользовательских боссов
Подробные инструкции по созданию способностей и пользовательских боссов см.:
Соображения по производительности
При создании скриптов учитывайте следующие лучшие практики:
- Используйте перезарядки для предотвращения проблем производительности от часто срабатывающих скриптов
- Зональные события (ZoneEnterEvent, ZoneLeaveEvent) являются вычислительно затратными — используйте маленькие зоны и подходящие перезарядки
- Используйте условия фильтрации для сокращения ненужных проверок
- Тщательно тестируйте скрипты перед развёртыванием на рабочих серверах
Следующие шаги
Чтобы начать создавать свои собственные EliteScripts:
- Просмотрите страницу Events, чтобы понять, что может запускать скрипты
- Изучите страницу Actions, чтобы увидеть, какое поведение можно создать
- Узнайте о Targets, чтобы контролировать, на что влияют ваши действия
- Изучите примеры на каждой странице компонентов
- Начните с простых скриптов и постепенно увеличивайте сложность
