Зоны Elite Script
Зоны — это местоположения, определяемые формой, которые могут использоваться скриптерами в качестве целей для выполнения любых действий.
На каждый скрипт можно установить только одну зону.
Чтобы нацелиться на зоны, можно использовать тип цели ZONE_FULL или ZONE_BORDER.
Сами зоны также используют Цели скриптов, чтобы определить, где зона появится.
shape
Устанавливает форму зоны. Допустимые формы:
| Тип формы | Подробности | Анимируемая | Граница |
|---|---|---|---|
CYLINDER | Цилиндрическая форма | ❌ | ✅ |
SPHERE | Сферическая форма | ❌ | ✅ |
DOME | Купол (полусфера) | ❌ | ✅ |
CUBOID | Параллелепипед | ❌ | ✅ |
STATIC_RAY | Фиксированная линия между двумя точками | ❌ | ❌ |
ROTATING_RAY | Вращающаяся линия между двумя точками | ✅ | ❌ |
TRANSLATING_RAY | Линия, перемещающаяся от двух начальных точек к двум конечным | ✅ | ❌ |
CONE | Конус | ❌ | ✅ |
Анимируемые
Зоны с анимациями начинают анимацию зоны при первом вызове скрипта.
Это означает, что если у действия есть время ожидания, то к моменту начала действия зона уже двигалась всё то время, пока действие ожидало.
Зоны всегда анимируются каждый тик. Это значит, что при использовании действия SPAWN_PARTICLES вы можете настроить его на выполнение каждый тик, поскольку зона будет двигаться каждый тик. Если же вы запускаете его раз в секунду, вы увидите, как частицы «прыгают», потому что зона продолжала двигаться и в те тики, когда частицы не порождались.
Если вы хотите сделать действие с вращающейся зоной, но при этом подождать заданное количество тиков перед началом действия, вынесите это в отдельный скрипт и вызовите его через RUN_SCRIPT. Убедитесь, что у RUN_SCRIPT задано нужное вам время ожидания.
Зоны остаются на конечном местоположении после завершения анимации.
Все анимируемые зоны настроены так, чтобы не отслеживать цели скрипта, поскольку дополнительное движение сделало бы происходящее слишком сложным для понимания как скриптерами, так и игроками. Это значит, что такие зоны не будут следовать за боссами или игроками и всегда перемещаются относительно своих исходных точек появления.
Граница
У некоторых зон может быть граница. Наличие границы означает, что в качестве цели зоны можно использовать ZONE_BORDER. Границы задаются созданием второй, меньшей формы внутри первой, большей формы. Область между меньшей и большей зоной и есть граница.
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 4
borderRadius: 3
height: 8
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_LARGE
Target:
targetType: ZONE_BORDER
repeatEvery: 5
times: 20

Этот скрипт создаёт частицы дыма, которые появляются только на границе зоны в течение 5 секунд (repeat every 5 x times 20 = 100 тиков).
Если бы вы использовали не вариант ZONE_BORDER, а вариант ZONE_FULL, то вся зона была бы покрыта частицами дыма вот так:

SPHERE
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть SPHERE | ✅ |
target | Задаёт местоположение центра сферы | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
radius | Радиус сферы | ✅ |
borderRadius | Радиус внутренней сферы | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: SPHERE
radius: 4
borderRadius: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

Этот скрипт демонстрирует форму сферы с помощью частиц облака.
DOME
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть DOME | ✅ |
target | Задаёт местоположение центра купола | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
radius | Радиус купола | ✅ |
borderRadius | Радиус внутреннего купола | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: DOME
radius: 4
borderRadius: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

Этот скрипт демонстрирует форму купола с помощью частиц облака.
CONE
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть CONE | ✅ |
target | Задаёт местоположение вершины (острия) конуса | ✅ |
target2 | Задаёт местоположение центра основания конуса | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
radius | Радиус основания конуса | ✅ |
borderRadius | Радиус внутреннего конуса | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CONE
radius: 10
Target:
targetType: SELF
offset: 0,0,0
Target2:
targetType: SELF
offset: 0,10,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.8
repeatEvery: 5
times: 20
Этот скрипт демонстрирует форму конуса с помощью частиц облака. Учтите, что эта зона имеет форму CONE, то есть является трёхмерным объёмом, — это важно учитывать, если вы хотите создать эффекты размаха.
CYLINDER
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть CYLINDER | ✅ |
target | Задаёт местоположение центра цилиндра | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
radius | Радиус цилиндра | ✅ |
borderRadius | Радиус внутреннего цилиндра | ❌ |
height | Высота цилиндра | ✅ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 4
borderRadius: 3
height: 8
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

Этот скрипт демонстрирует форму цилиндра с помощью частиц облака.
CUBOID
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть CUBOID | ✅ |
target | Задаёт местоположение центра параллелепипеда | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
x | Задаёт длину параллелепипеда | ✅ |
y | Задаёт высоту параллелепипеда | ✅ |
z | Задаёт ширину параллелепипеда, по умолчанию равна x | ❌ |
xBorder | Задаёт длину внутреннего параллелепипеда | ❌ |
yBorder | Задаёт высоту внутреннего параллелепипеда | ❌ |
zBorder | Задаёт ширину внутреннего параллелепипеда, по умолчанию равна x | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CUBOID
x: 4
y: 4
z: 4
xBorder: 3
yBorder: 3
zBorder: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

Этот скрипт демонстрирует форму параллелепипеда с помощью частиц облака.
STATIC_RAY
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть STATIC_RAY | ✅ |
target | Задаёт местоположение первой точки линии | ✅ |
target2 | Задаёт местоположение последней точки линии | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
ignoresSolidBlocks | Определяет, будет ли луч проходить сквозь твёрдые блоки. По умолчанию true | ❌ |
pointRadius | Задаёт толщину луча. По умолчанию 0.5 блока. | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: STATIC_RAY
Target2:
targetType: DIRECT_TARGET
offset: 0,1,0
Target:
targetType: SELF
offset: 0,1,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

Этот скрипт демонстрирует форму статичного луча с помощью частиц облака.
Мы скорректировали высоту зоны с помощью параметра offset на обоих концах зоны, чтобы луч появлялся из середины игрока и босса, иначе он появлялся бы у них под ногами.
ROTATING_RAY
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть ROTATING_RAY | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
target | Задаёт местоположение первой точки линии | ✅ |
target2 | Задаёт местоположение последней точки линии | ✅ |
animationDuration | Задаёт в тиках продолжительность вращения | ✅ |
pitchPreRotation | Применяет начальный поворот по тангажу до анимации | ❌ |
yawPreRotation | Применяет начальный поворот по рысканью до анимации | ❌ |
pitchRotation | Задаёт поворот по тангажу для анимации | ❌ |
yawRotation | Задаёт поворот по рысканью для анимации | ❌ |
ignoresSolidBlocks | Определяет, будет ли луч проходить сквозь твёрдые блоки. По умолчанию true | ❌ |
pointRadius | Задаёт толщину луча. По умолчанию 0.5 блока. | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: ROTATING_RAY
animationDuration: 100
pitchPrerotation: 0
yawPrerotation: 0
pitchRotation: 0
yawRotation: 360
ignoresSolidBlocks: true
Target:
targetType: SELF
offset: 0,1,0
Target2:
targetType: DIRECT_TARGET
offset: 0,1,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 1
times: 100

Этот скрипт показывает, как выглядит вращающийся луч с частицами облака.
Сначала он создаёт луч от босса к игроку, который нанёс ему урон, используя частицы облака. Затем он немного смещает позиции вверх на один блок с помощью offset.
Далее он вращает луч по полному кругу вокруг взятого в цель игрока. Это вращение длится 5 секунд (100 тиков), а центром служит взятый в цель игрок.
TRANSLATING_RAY
| Ключ | Подробности | Обязательный |
|---|---|---|
shape | Задаёт форму зоны. Должно быть TRANSLATING_RAY | ✅ |
filter | Задаёт, какие типы сущностей берутся в цель | ❌ |
animationDuration | Задаёт в тиках продолжительность перемещения | ✅ |
target | Задаёт местоположение первой точки линии | ✅ |
finalTarget | Задаёт местоположение конечной точки для первой точки линии | ✅ |
target2 | Задаёт местоположение второй точки линии | ✅ |
finalTarget2 | Задаёт местоположение конечной точки для второй точки линии | ✅ |
ignoresSolidBlocks | Определяет, будет ли луч проходить сквозь твёрдые блоки. По умолчанию true | ❌ |
pointRadius | Задаёт толщину луча. По умолчанию 0.5 блока. | ❌ |
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
FinalTarget:
targetType: SELF
offset: 0,10,0
Target2:
targetType: DIRECT_TARGET
FinalTarget2:
targetType: DIRECT_TARGET
offset: 0,10,0
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 1
times: 100

Этот скрипт показывает, как выглядит перемещающийся луч с частицами облака.
Сначала он создаёт луч от босса к игроку, который нанёс ему урон, используя частицы облака.
Затем он анимирует луч так, чтобы тот поднялся на 10 блоков вверх от обеих целей, с помощью offset у FinalTarget1 и FinalTarget2.
Анимация занимает 5 секунд (100 тиков).
Мы легко можем заставить луч двигаться вбок, задав offset по оси Z, например offset: 0,0,10:

Это поведение может меняться в зависимости от того, куда вы смотрите в игре.
Если изменить offset по оси X в скрипте, показанном на GIF-изображении, луч, с нашей точки зрения, будет уходить от нас по прямой линии.
filter
Свойство filter можно использовать, чтобы брать в цель только определённые сущности внутри зоны. Такими сущностями могут быть:
| Значение | Подробности |
|---|---|
PLAYER | Только игроки в зоне (по умолчанию) |
ELITE | Только элиты в зоне |
LIVING | Все живые сущности в зоне |
Пример
eliteScript:
FilterExample:
Events:
- PlayerDamagedByEliteMobEvent
Zone:
shape: SPHERE
radius: 12
borderRadius: 11
filter: ELITE
Target:
targetType: SELF
track: false
Этот скрипт-пример показывает, как с помощью фильтра сделать так, чтобы зона брала в цель только элит.