Pular para o conteúdo principal

Condições do Elite Script

As condições permitem que os scriptadores 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.

Target

As condições usam o sistema de Targets para selecionar qual entidade ou localização está sujeita às condições. Isso significa que você pode associar condições ao boss, aos jogadores ou a qualquer outra coisa que você possa selecionar.


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 alvos que não atendem à condição. Isso significa que se você quiser selecionar apenas blocos que não são ar, você vai querer uma condição FILTERING, mas se você quiser parar uma ação se um jogador estiver morto, você vai querer uma condição BLOCKING.

Condições fora de ações são sempre BLOCKING. Condições dentro de ações podem ser BLOCKING ou FILTERING.

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

Condições dentro de ações são definidas como FILTERING por padrão.


Posicionamento de Blocos de Condição

Você pode colocar ou aninhar blocos de condição de duas maneiras:

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

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

Abaixo estão exemplos demonstrando como aninhar blocos de condição tanto para ações individuais quanto 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 sempre executará a ação MESSAGE quando atingido, já que nenhuma condição está sendo aplicada a ela.

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 que todos os scripts sejam executados 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 for verdadeira ou falsa.true / false

Você pode reverter uma condição usando o prefixo runIf e o sufixo Is ao redor 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 você também escrever: runIfIsAliveIs: false na mesma condição, então a condição é revertida — a ação agora só será executada se o boss estiver morto.

Esta estrutura permite que você controle 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
runIfIsAliveIs: false
Target:
targetType: SELF

Este script agora só definirá o clima para tempestade 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 para verificar se a localização é um bloco de ar (ou o oposto).Boolean
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 clima quando o mob é atingido. Caso contrário, bloqueia a ação.


isOnFloor

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

ChaveDetalhesValores
isOnFloorDefine para verificar se a localização é uma localização no chão (ou o oposto).Boolean
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á em um bloco sólido, se estiver, então executa o script, caso contrário bloqueia a execução do script.


isStandingOnMaterial

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

ChaveDetalhesValores
isStandingOnMaterialDefine qual tipo de material deve 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 pé sobre um bloco BIRCH_WOOD, caso contrário o script será bloqueado.

Condições baseadas em entidade

isAlive

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

ChaveDetalhesValores
isAliveDefine para verificar se a entidade está viva (ou morta).Boolean
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 atualmente vivo, caso contrário o script será bloqueado.


hasTags

Verifica se a entidade alvo tem tags específicas. Os scriptadores podem atribuir e desatribuir qualquer tag através de ações e usá-las como condições para comportamento posterior. Tags são apenas strings (palavras) que você pode atribuir a um boss.

ChaveDetalhesValores
hasTagsDefine para verificar se a entidade tem uma lista de tags.String List
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 tags "isCool" e "hasANiceBeard", caso contrário o script será bloqueado.


doesNotHaveTags

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

ChaveDetalhesValores
doesNotHaveTagsDefine para verificar se a entidade não tem uma lista de tags.String List
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 tags "isStinky" e "isSus", caso contrário o script será bloqueado.

Outras condições

randomChance

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

ChaveDetalhesValores
randomChanceChance de que 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: # Não obrigatório
targetType: SELF # Não obrigatório

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

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

Filtrar NEARBY com tags

Para filtrar NEARBY_MOBS ou NEARBY_PLAYERS com base em tags específicas, use ACTION_TARGET como o alvo da condição (Se a condição for aplicada a uma ação e não ao script em si). Isso garante que o script filtre com precisão apenas os mobs/jogadores com as tags 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á por quaisquer mobs próximos com a tag TurnOff e, se eles tiverem a tag, desligará 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 menor ou maior que o valor definido.

ChaveDetalhesValores
targetCountLowerThanExecuta a ação apenas se a contagem de alvos for menor que o número especificado.Número entre 0 e 999
ChaveDetalhesValores
targetCountGreaterThanExecuta a ação apenas se a contagem de alvos for maior que o 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: #obrigatório
targetType: NEARBY_MOBS #obrigatório
range: 15

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

Observe que esta condição REQUER um alvo.