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

Условия Elite Script

Условия позволяют разработчикам скриптов предотвращать выполнение скриптов и/или действий на основе определенных условий.

Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Conditions:
isAlive: true
conditionType: BLOCKING
Target:
targetType: SELF
Actions:
- action: PLACE_BLOCK
Target:
targetType: DIRECT_TARGET
duration: 20
material: DIRT
offset: 0,3,0
Conditions:
locationIsAir: true
conditionType: BLOCKING
Target:
targetType: ACTION_TARGET
Cooldowns:
local: 60
global: 20

В этом примере скрипт Example будет выполнен только если элитный моб еще жив, и установит блок земли на 3 блока выше местоположения элитного моба только если этот блок является воздухом. Отдельные действия могут иметь индивидуальные условия.

Target

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


Condition Type

КлючОписаниеЗначения
conditionTypeУстанавливает тип условияBLOCKING / FILTERING

Существует два типа условий: BLOCKING и FILTERING. Условия BLOCKING прекращают выполнение скриптов или действий. Условия FILTERING заставляют действия пропускать цели, которые не соответствуют условию. Это означает, что если вы хотите нацеливаться только на блоки, которые не являются воздухом, вам понадобится условие FILTERING, но если вы хотите остановить действие, когда игрок мертв, вам понадобится условие BLOCKING.

Условия вне действий всегда являются BLOCKING. Условия внутри действий могут быть BLOCKING или FILTERING.

Примечание: если целью является SELF (босс) и проверка условия isAlive, проверка всегда является BLOCKING! Это можно поместить внутри условия FILTERING, и эта конкретная часть все равно будет вести себя как BLOCKING.

Условия внутри действий по умолчанию установлены как FILTERING.


Condition Block Placement

Вы можете размещать или вкладывать блоки условий двумя способами:

  1. Под отдельными действиями – Условие будет применяться только к конкретному действию. Если условие выполнено, действие выполняется; в противном случае — нет.

  2. Под всем скриптом – Условие применяется ко всем действиям внутри скрипта. Если условие не выполнено, ни одно из действий не будет выполнено.

Ниже приведены примеры, демонстрирующие, как вкладывать блоки условий как для отдельных действий, так и для всего скрипта.

Под отдельными действиями:

Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

Проверяет, является ли местоположение на 2 блока выше места, где стоит босс, воздухом, и если да, то выполняет действие SET_WEATHER когда моб получает урон. В противном случае блокирует действие SET_WEATHER. Но босс всегда будет выполнять действие MESSAGE при получении урона, так как к нему не применяются никакие условия.

Под всем скриптом:

Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 10
sValue: "&2Hello World!"
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

Если блок, расположенный на два блока выше места, где стоит босс, является воздухом, то разрешить выполнение всех скриптов когда моб получает урон. В противном случае блокировать выполнение всего скрипта, включая действия SET_WEATHER и MESSAGE.


runIfConditionIs

КлючОписаниеЗначения
runIfConditionIsУстанавливает, должно ли условие разрешать выполнение действия, когда условие истинно или ложно.true / false

Вы можете инвертировать условие, используя префикс runIf и суффикс Is вокруг имени условия.

Например, возьмем условие isAlive. Обычно запись: isAlive: true означает, что действие будет выполнено только если босс жив.

Но если вы также напишите: runIfIsAliveIs: false в том же условии, то условие инвертируется — теперь действие будет выполнено только если босс мертв.

Эта структура позволяет вам контролировать, должно ли условие пройти или не пройти перед выполнением действия.

Пример:

eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
runIfIsAliveIs: false
Target:
targetType: SELF

Этот скрипт теперь будет устанавливать погоду на грозу только если босс мертв.


Условия на основе местоположения

locationIsAir

Устанавливает условие, является ли местоположение цели воздухом.

КлючОписаниеЗначения
locationIsAirУстанавливает проверку, является ли местоположение блоком воздуха (или наоборот).Boolean
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
locationIsAir: true
Target:
targetType: SELF
offset: "0,3,0"

Проверяет, является ли местоположение на 2 блока выше места, где стоит босс, воздухом, и если да, то не блокирует выполнение скрипта погоды когда моб получает урон. В противном случае блокирует действие.


isOnFloor

Проверяет, находится ли местоположение на полу. Это означает, что блок в местоположении не является твердым, но блок под ним является твердым.

КлючОписаниеЗначения
isOnFloorУстанавливает проверку, является ли местоположение местоположением на полу (или наоборот).Boolean
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF

Проверяет, находится ли босс на твердом блоке, и если да, то выполняет скрипт, в противном случае блокирует выполнение скрипта.


isStandingOnMaterial

Проверяет, является ли местоположение под целью соответствующим типом материала.

КлючОписаниеЗначения
isStandingOnMaterialУстанавливает, какой тип материала должен быть проверен.Material
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF

Будет выполнен только если босс стоит на блоке BIRCH_WOOD, в противном случае скрипт будет заблокирован.

Условия на основе сущности

isAlive

Устанавливает условие, жива ли целевая сущность условия.

КлючОписаниеЗначения
isAliveУстанавливает проверку, жива ли сущность (или мертва).Boolean
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF

Будет выполнен только если босс в настоящее время жив, в противном случае скрипт будет заблокирован.


hasTags

Проверяет, имеет ли целевая сущность определенные теги. Разработчики скриптов могут назначать и отменять назначение любого тега через действия и использовать их как условия для последующего поведения. Теги — это просто строки (слова), которые вы можете назначить боссу.

КлючОписаниеЗначения
hasTagsУстанавливает проверку, имеет ли сущность список тегов.String List
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF

Будет выполнен только если босс имеет теги "isCool" и "hasANiceBeard", в противном случае скрипт будет заблокирован.


doesNotHaveTags

То же самое, что и hasTags, но проверяет, не имеет ли босс этих значений.

КлючОписаниеЗначения
doesNotHaveTagsУстанавливает проверку, не имеет ли сущность список тегов.String List
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF

Будет выполнен только если босс не имеет тегов "isStinky" и "isSus", в противном случае скрипт будет заблокирован.

Другие условия

randomChance

Дает условию случайный шанс быть действительным.

КлючОписаниеЗначения
randomChanceШанс того, что условие будет действительным.Число от 0.0 до 1.0
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # Не требуется
targetType: SELF # Не требуется

Это даст скрипту 10% шанс выполнения, в противном случае скрипт будет заблокирован.

Обратите внимание, что это условие особенное, так как не требует цели.

Фильтрация NEARBY с помощью тегов

Чтобы отфильтровать NEARBY_MOBS или NEARBY_PLAYERS на основе определенных тегов, используйте ACTION_TARGET в качестве цели условия (если условие применяется к действию, а не к самому скрипту). Это гарантирует, что скрипт точно фильтрует только мобов/игроков с указанными тегами.

Пример
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET

Этот скрипт будет искать любых ближайших мобов с тегом TurnOff, и если у них есть тег, он отключит их ИИ.

targetCountLowerThan и targetCountGreaterThan

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

КлючОписаниеЗначения
targetCountLowerThanВыполнять действие только если количество целей меньше указанного числа.Число от 0 до 999
КлючОписаниеЗначения
targetCountGreaterThanВыполнять действие только если количество целей больше указанного числа.Число от 0 до 999
Пример
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target: #требуется
targetType: NEARBY_MOBS #требуется
range: 15

Скрипт будет выполнен только если в радиусе 15 блоков находится более 2 мобов.

Обратите внимание, что это условие ТРЕБУЕТ цель.