Pular para o conteúdo principal

Condições de Elite Script

As condições permitem que os criadores de scripts façam com que scripts e/ou ações não sejam executados com base em condições específicas.

Exemplo
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

Neste exemplo, o script Example só será executado se o elite ainda estiver vivo, e só colocará um bloco de terra 3 blocos acima da localização do elite se esse bloco for um bloco de ar. Ações individuais podem ter condições individuais.

Alvo

As condições usam o sistema de Alvos para definir qual entidade ou localização está sujeita às condições. Isto significa que pode associar condições ao boss, aos jogadores ou a qualquer outra coisa que consiga visar.


Tipo de condição

ChaveDetalhesValores
conditionTypeDefine o tipo de condiçãoBLOCKING / FILTERING

Existem dois tipos de condição: BLOCKING e FILTERING. As condições BLOCKING fazem com que scripts ou ações parem de ser executados. As condições FILTERING fazem com que as ações ignorem os alvos que não cumprem a condição. Isto significa que, se quiser visar apenas blocos que não sejam de ar, vai querer uma condição FILTERING, mas se quiser parar uma ação caso um jogador esteja morto, vai querer uma condição BLOCKING.

As condições fora das ações são sempre BLOCKING. As condições dentro das ações podem ser BLOCKING ou FILTERING.

Nota: se o alvo for SELF (o boss) e a verificação da condição for isAlive, a verificação é sempre BLOCKING! Isto pode ser colocado dentro de uma condição FILTERING e mesmo assim fará com que esta parte específica se comporte como BLOCKING.

As condições dentro das ações estão definidas como FILTERING por predefinição.


Posicionamento de blocos de condição

Pode colocar ou aninhar blocos de condição de duas formas:

  1. Sob ações individuais – A condição aplica-se apenas a uma ação específica. Se a condição for cumprida, a ação é executada; caso contrário, não.

  2. Sob o script inteiro – A condição aplica-se a todas as ações dentro do script. Se a condição não for cumprida, nenhuma das ações será executada.

Abaixo estão exemplos que demonstram como aninhar blocos de condição tanto para ações individuais como para o script inteiro.

Sob ações individuais:

Exemplo
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"

Verifica se a localização 2 blocos acima de onde o boss está parado é ar e, se for, executa a ação SET_WEATHER quando o mob é atingido. Caso contrário, bloqueia a ação SET_WEATHER. Mas o boss executará sempre a ação MESSAGE quando atingido, uma vez que não lhe são aplicadas condições.

Sob o script inteiro:

Exemplo
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"

Se o bloco localizado dois espaços acima de onde o boss está parado for ar, então permite a execução de todos os scripts quando o mob é atingido. Caso contrário, bloqueia a execução de todo o script, incluindo as ações SET_WEATHER e MESSAGE.


runIfConditionIs

ChaveDetalhesValores
runIfConditionIsDefine se a condição deve permitir que a ação seja executada quando a condição é verdadeira ou falsa.true / false

Pode inverter uma condição usando o prefixo runIf e o sufixo Is em torno do nome da condição.

Por exemplo, considere a condição isAlive. Normalmente, escrever: isAlive: true significa que a ação só será executada se o boss estiver vivo.

Mas se também escrever: runIfAliveIs: false na mesma condição, então a condição é invertida — a ação passará a ser executada apenas se o boss estiver morto.

Esta estrutura permite controlar se a condição deve passar ou falhar antes de executar a ação.

Exemplo:

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

Este script passará agora a definir o tempo para trovoada apenas se o boss estiver morto.


Condições baseadas em localização

locationIsAir

Define a condição para verificar se a localização do alvo é ar.

ChaveDetalhesValores
locationIsAirDefine se deve verificar se a localização é um bloco de ar (ou o oposto).Booleano
Exemplo
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"

Verifica se a localização 2 blocos acima de onde o boss está parado é ar e, se for, não bloqueia a execução do script de tempo quando o mob é atingido. Caso contrário, bloqueia a ação.


isOnFloor

Verifica se a localização está sobre o chão. Isto significa que o bloco na localização não é sólido, mas o bloco abaixo dele é sólido.

ChaveDetalhesValores
isOnFloorDefine se deve verificar se a localização é uma localização de chão (ou o oposto).Booleano
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF

Verifica se o boss está sobre um bloco sólido; se estiver, executa o script, caso contrário bloqueia a execução do script.


isStandingOnMaterial

Verifica se a localização por baixo do alvo é de um tipo de material correspondente.

ChaveDetalhesValores
isStandingOnMaterialDefine qual o tipo de material a ser verificado.Material
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF

Só será executado se o boss estiver em cima de um bloco BIRCH_WOOD, caso contrário a execução do script será bloqueada.

Condições baseadas em entidades

isAlive

Define a condição para verificar se a entidade alvo da condição está viva.

ChaveDetalhesValores
isAliveDefine se deve verificar se a entidade está viva (ou morta).Booleano
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF

Só será executado se o boss estiver vivo no momento, caso contrário o script será bloqueado.


hasTags

Verifica se a entidade alvo tem etiquetas específicas. Os criadores de scripts podem atribuir e remover qualquer etiqueta através de ações e usá-las como condições para comportamentos posteriores. As etiquetas são apenas strings (palavras) que pode atribuir a um boss.

ChaveDetalhesValores
hasTagsDefine se deve verificar se a entidade tem uma lista de etiquetas.Lista de Strings
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF

Só será executado se o boss tiver as etiquetas "isCool" e "hasANiceBeard", caso contrário o script será bloqueado.


doesNotHaveTags

Igual a hasTags, mas verifica se o boss não tem estes valores.

ChaveDetalhesValores
doesNotHaveTagsDefine se deve verificar se a entidade não tem uma lista de etiquetas.Lista de Strings
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF

Só será executado se o boss não tiver as etiquetas "isStinky" e "isSus", caso contrário o script será bloqueado.

Outras condições

randomChance

Dá à condição uma probabilidade aleatória de ser válida.

ChaveDetalhesValores
randomChanceProbabilidade de a condição ser válida.Número entre 0.0 e 1.0
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # Not required
targetType: SELF # Not required

Isto dará ao script uma probabilidade de 10% de ser executado, caso contrário o script será bloqueado.

Note que esta condição é especial, pois não requer um alvo.

Filtrar NEARBY com etiquetas

Para filtrar NEARBY_MOBS ou NEARBY_PLAYERS com base em etiquetas específicas, use ACTION_TARGET como alvo da condição (se a condição for aplicada a uma ação e não ao próprio script). Isto garante que o script filtra com precisão apenas os mobs/jogadores com as etiquetas especificadas.

Exemplo
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET

Este script procurará quaisquer mobs próximos com a etiqueta TurnOff e, se a tiverem, desligará a sua IA.

targetCountLowerThan e targetCountGreaterThan

Cria uma condição que permite que a ação seja executada apenas se o número de alvos especificado for inferior ou superior ao valor definido.

ChaveDetalhesValores
targetCountLowerThanSó executa a ação se a contagem de alvos for inferior ao número especificado.Número entre 0 e 999
ChaveDetalhesValores
targetCountGreaterThanSó executa a ação se a contagem de alvos for superior ao número especificado.Número entre 0 e 999
Exemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target: #required
targetType: NEARBY_MOBS #required
range: 15

O script só será executado se houver mais de 2 mobs num raio de 15 blocos.

Note que esta condição REQUER um alvo.