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
| Chave | Detalhes | Valores |
|---|---|---|
conditionType | Define o tipo de condição | BLOCKING / 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:
-
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 é.
-
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
| Chave | Detalhes | Valores |
|---|---|---|
runIfConditionIs | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
locationIsAir | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
isOnFloor | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
isStandingOnMaterial | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
isAlive | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
hasTags | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
doesNotHaveTags | Define 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.
| Chave | Detalhes | Valores |
|---|---|---|
randomChance | Chance 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.
| Chave | Detalhes | Valores |
|---|---|---|
targetCountLowerThan | Executa a ação apenas se a contagem de alvos for menor que o número especificado. | Número entre 0 e 999 |
| Chave | Detalhes | Valores |
|---|---|---|
targetCountGreaterThan | Executa 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.