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

Зоны 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

elitescript_zones_border.jpg

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

Если бы вы использовали не вариант ZONE_BORDER, а вариант ZONE_FULL, то вся зона была бы покрыта частицами дыма вот так:

elitescript_zones_borderfull.jpg


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

elitescript_zones_sphere.jpg

Этот скрипт демонстрирует форму сферы с помощью частиц облака.


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

elitescript_zones_dome.jpg

Этот скрипт демонстрирует форму купола с помощью частиц облака.


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

elitescript_zones_cylinder.jpg

Этот скрипт демонстрирует форму цилиндра с помощью частиц облака.


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

elitescript_zones_cuboid.jpg

Этот скрипт демонстрирует форму параллелепипеда с помощью частиц облака.


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

elitescript_zones_staticray.jpg

Этот скрипт демонстрирует форму статичного луча с помощью частиц облака.

Мы скорректировали высоту зоны с помощью параметра 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

elitescript_zones_rotatingray.gif

Этот скрипт показывает, как выглядит вращающийся луч с частицами облака.

Сначала он создаёт луч от босса к игроку, который нанёс ему урон, используя частицы облака. Затем он немного смещает позиции вверх на один блок с помощью 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

elitescript_zones_translatingray.gif

Этот скрипт показывает, как выглядит перемещающийся луч с частицами облака.

Сначала он создаёт луч от босса к игроку, который нанёс ему урон, используя частицы облака.

Затем он анимирует луч так, чтобы тот поднялся на 10 блоков вверх от обеих целей, с помощью offset у FinalTarget1 и FinalTarget2.

Анимация занимает 5 секунд (100 тиков).

Мы легко можем заставить луч двигаться вбок, задав offset по оси Z, например offset: 0,0,10:

elitescript_zones_translatingray2.gif

Это поведение может меняться в зависимости от того, куда вы смотрите в игре.
Если изменить 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

Этот скрипт-пример показывает, как с помощью фильтра сделать так, чтобы зона брала в цель только элит.