Condiciones de Elite Script
Las condiciones permiten a los scripters hacer que los scripts y/o acciones no se ejecuten según condiciones específicas.
Ejemplo
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
En este ejemplo, el script Example solo se ejecutará si el elite todavía está vivo, y solo colocará un bloque de tierra 3 bloques por encima de la ubicación del elite si ese bloque es un bloque de aire. Las acciones individuales pueden tener condiciones individuales.
Target
Las condiciones utilizan el sistema de Targets para dirigirse a qué entidad o ubicación está sujeta a las condiciones. Esto significa que puedes asociar condiciones al jefe o a los jugadores o a cualquier otra cosa que puedas dirigir.
Tipo de Condición
| Clave | Detalles | Valores |
|---|---|---|
conditionType | Establece el tipo de condición | BLOCKING / FILTERING |
Hay dos tipos de condición: BLOCKING y FILTERING. Las condiciones BLOCKING hacen que los scripts o acciones dejen de ejecutarse. Las condiciones FILTERING hacen que las acciones se salten los objetivos que no cumplen la condición. Esto significa que si quieres dirigirte solo a bloques que no sean aire, querrás una condición FILTERING, pero si quieres detener una acción si un jugador está muerto, querrás una condición BLOCKING.
Las condiciones fuera de las acciones siempre son BLOCKING. Las condiciones dentro de las acciones pueden ser BLOCKING o FILTERING.
Nota: si el objetivo es SELF (el jefe) y la verificación de condición es isAlive, la verificación siempre es BLOCKING! Esto se puede poner dentro de una condición FILTERING y aún así hará que esta parte específica se comporte como BLOCKING.
Las condiciones dentro de las acciones están configuradas como FILTERING por defecto.
Ubicación de Bloques de Condición
Puedes colocar o anidar bloques de condición de dos maneras:
-
Bajo acciones individuales – La condición se aplicará solo a una acción específica. Si se cumple la condición, la acción se ejecuta; de lo contrario, no lo hace.
-
Bajo el script completo – La condición se aplica a todas las acciones dentro del script. Si no se cumple la condición, ninguna de las acciones se ejecutará.
A continuación se muestran ejemplos que demuestran cómo anidar bloques de condición tanto para acciones individuales como para el script completo.
Bajo acciones individuales:
Ejemplo
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 si la ubicación 2 bloques por encima de donde está parado el jefe es aire y si lo es, entonces ejecuta la acción SET_WEATHER cuando el mob es golpeado. De lo contrario, bloquea la acción SET_WEATHER. Pero el jefe siempre ejecutará la acción MESSAGE cuando sea golpeado ya que no se le están aplicando condiciones.
Bajo el script completo:
Ejemplo
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"
Si el bloque ubicado dos espacios por encima de donde está parado el jefe es aire, entonces permite que todos los scripts se ejecuten cuando el mob sea golpeado. De lo contrario, bloquea la ejecución del script completo, incluyendo las acciones SET_WEATHER y MESSAGE.
runIfConditionIs
| Clave | Detalles | Valores |
|---|---|---|
runIfConditionIs | Establece si la condición debe permitir que la acción se ejecute cuando la condición es verdadera o falsa. | true / false |
Puedes invertir una condición usando el prefijo runIf y el sufijo Is alrededor del nombre de la condición.
Por ejemplo, toma la condición isAlive. Normalmente, escribir:
isAlive: true
significa que la acción solo se ejecutará si el jefe está vivo.
Pero si también escribes:
runIfIsAliveIs: false
en la misma condición, entonces la condición se invierte — la acción ahora solo se ejecutará si el jefe está muerto.
Esta estructura te permite controlar si la condición debe pasar o fallar antes de ejecutar la acción.
Ejemplo:
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 ahora solo establecerá el clima a tormenta si el jefe está muerto.
Condiciones basadas en ubicación
locationIsAir
Establece la condición de si la ubicación del objetivo es aire.
| Clave | Detalles | Valores |
|---|---|---|
locationIsAir | Establece verificar si la ubicación es un bloque de aire (o lo contrario). | Boolean |
Ejemplo
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 si la ubicación 2 bloques por encima de donde está parado el jefe es aire y si lo es, entonces no bloquea el script de clima para que se ejecute cuando el mob sea golpeado. De lo contrario, bloquea la acción.
isOnFloor
Verifica si la ubicación está en el suelo. Esto significa que el bloque en la ubicación no es sólido, pero el bloque debajo de él es sólido.
| Clave | Detalles | Valores |
|---|---|---|
isOnFloor | Establece verificar si la ubicación es una ubicación de suelo (o lo contrario). | Boolean |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF
Verifica si el jefe está en un bloque sólido, si lo está, entonces ejecuta el script de lo contrario bloquea el script para que no se ejecute.
isStandingOnMaterial
Verifica si la ubicación debajo del objetivo es un tipo de material coincidente.
| Clave | Detalles | Valores |
|---|---|---|
isStandingOnMaterial | Establece qué tipo de material debe verificarse. | Material |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF
Solo se ejecutará si el jefe está parado en un bloque BIRCH_WOOD de lo contrario el script será bloqueado para que no se ejecute.
Condiciones basadas en entidades
isAlive
Establece la condición de si la entidad objetivo de la condición está viva.
| Clave | Detalles | Valores |
|---|---|---|
isAlive | Establece verificar si la entidad está viva (o muerta). | Boolean |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF
Solo se ejecutará si el jefe está actualmente vivo de lo contrario el script será bloqueado.
hasTags
Verifica si la entidad objetivo tiene etiquetas específicas. Los scripters pueden asignar y desasignar cualquier etiqueta a través de acciones y usarlas como condiciones para el comportamiento posterior. Las etiquetas son simplemente cadenas (palabras) que puedes asignar a un jefe.
| Clave | Detalles | Valores |
|---|---|---|
hasTags | Establece verificar si la entidad tiene una lista de etiquetas. | String List |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF
Solo se ejecutará si el jefe tiene las etiquetas "isCool" y "hasANiceBeard" de lo contrario el script será bloqueado.
doesNotHaveTags
Igual que hasTags, pero verifica si el jefe no tiene estos valores.
| Clave | Detalles | Valores |
|---|---|---|
doesNotHaveTags | Establece verificar si la entidad no tiene una lista de etiquetas. | String List |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF
Solo se ejecutará si el jefe no tiene las etiquetas "isStinky" e "isSus" de lo contrario el script será bloqueado.
Otras condiciones
randomChance
Da a la condición una oportunidad aleatoria de ser válida.
| Clave | Detalles | Valores |
|---|---|---|
randomChance | Probabilidad de que la condición sea válida. | Número entre 0.0 y 1.0 |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # No requerido
targetType: SELF # No requerido
Esto le dará al script un 10% de probabilidad de ejecutarse de lo contrario el script será bloqueado.
Ten en cuenta que esta condición es especial ya que no requiere un objetivo.
Filtrar NEARBY con etiquetas
Para filtrar NEARBY_MOBS o NEARBY_PLAYERS basándose en etiquetas específicas, usa ACTION_TARGET como el objetivo de la condición (si la condición se aplica a una acción y no al script en sí). Esto asegura que el script filtre con precisión solo los mobs/jugadores con las etiquetas especificadas.
Ejemplo
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 buscará cualquier mob cercano con la etiqueta TurnOff y si tienen la etiqueta entonces apagará su IA.
targetCountLowerThan y targetCountGreaterThan
Crea una condición que permite que la acción se ejecute solo si el número de objetivo especificado es menor o mayor que el valor definido.
| Clave | Detalles | Valores |
|---|---|---|
targetCountLowerThan | Solo ejecuta la acción si el conteo de objetivo es menor que el número especificado. | Número entre 0 y 999 |
| Clave | Detalles | Valores |
|---|---|---|
targetCountGreaterThan | Solo ejecuta la acción si el conteo de objetivo es mayor que el número especificado. | Número entre 0 y 999 |
Ejemplo
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target: #requerido
targetType: NEARBY_MOBS #requerido
range: 15
El script solo se ejecutará si hay más de 2 mobs dentro de un radio de 15 bloques.
Ten en cuenta que esta condición SÍ requiere un objetivo.