Conditions des Elite Scripts
Les conditions permettent aux scripteurs d'empêcher l'exécution de scripts et / ou d'actions selon des conditions précises.
Exemple
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
Dans cet exemple, le script Example ne s'exécutera que si l'élite est encore en vie, et ne placera un bloc de terre 3 blocs au-dessus de l'emplacement de l'élite que si ce bloc est un bloc d'air. Les actions individuelles peuvent avoir leurs propres conditions.
Target
Les conditions utilisent le système de Targets pour cibler l'entité ou l'emplacement soumis aux conditions. Cela signifie que vous pouvez associer des conditions au boss, aux joueurs ou à tout autre élément que vous pouvez cibler.
Type de condition
| Key | Details | Values |
|---|---|---|
conditionType | Définit le type de condition | BLOCKING / FILTERING |
Il existe deux types de conditions : BLOCKING et FILTERING. Les conditions BLOCKING empêchent l'exécution des scripts ou des actions. Les conditions FILTERING font que les actions ignorent les cibles qui ne remplissent pas la condition. Cela signifie que si vous voulez cibler uniquement les blocs qui ne sont pas de l'air, vous aurez besoin d'une condition FILTERING, mais si vous voulez arrêter une action quand un joueur est mort, vous aurez besoin d'une condition BLOCKING.
Les conditions situées en dehors des actions sont toujours BLOCKING. Les conditions situées à l'intérieur des actions peuvent être BLOCKING ou FILTERING.
Remarque : si la cible est SELF (le boss) et que la vérification de condition est isAlive, la vérification est toujours BLOCKING ! Ceci peut être placé à l'intérieur d'une condition FILTERING et fera tout de même se comporter cette partie spécifique comme BLOCKING.
Les conditions à l'intérieur des actions sont définies sur FILTERING par défaut.
Placement des blocs de condition
Vous pouvez placer ou imbriquer les blocs de condition de deux façons :
-
Sous des actions individuelles – La condition s'appliquera uniquement à une action précise. Si la condition est remplie, l'action s'exécute ; sinon, elle ne s'exécute pas.
-
Sous l'ensemble du script – La condition s'applique à toutes les actions du script. Si la condition n'est pas remplie, aucune des actions ne s'exécutera.
Vous trouverez ci-dessous des exemples illustrant comment imbriquer les blocs de condition pour les actions individuelles et pour l'ensemble du script.
Sous des actions individuelles :
Exemple
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"
Vérifie si l'emplacement situé 2 blocs au-dessus de l'endroit où se tient le boss est de l'air et, si c'est le cas, exécute l'action SET_WEATHER lorsque le mob est touché. Sinon, l'action SET_WEATHER est bloquée. Mais le boss exécutera toujours l'action MESSAGE lorsqu'il est touché, puisqu'aucune condition ne lui est appliquée.
Sous l'ensemble du script :
Exemple
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 le bloc situé deux blocs au-dessus de l'endroit où se tient le boss est de l'air, alors tous les scripts sont autorisés à s'exécuter lorsque le mob est touché. Sinon, l'ensemble du script est bloqué, y compris les actions SET_WEATHER et MESSAGE.
runIfConditionIs
| Key | Details | Values |
|---|---|---|
runIfConditionIs | Définit si la condition doit autoriser l'exécution de l'action lorsque la condition est vraie ou fausse. | true / false |
Vous pouvez inverser une condition en utilisant le préfixe runIf et le suffixe Is autour du nom de la condition.
Prenons par exemple la condition isAlive. Normalement, écrire :
isAlive: true
signifie que l'action ne s'exécutera que si le boss est en vie.
Mais si vous écrivez également :
runIfAliveIs: false
dans la même condition, alors la condition est inversée — l'action ne s'exécutera désormais que si le boss est mort.
Cette structure vous permet de contrôler si la condition doit réussir ou échouer avant d'exécuter l'action.
Exemple :
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
Ce script ne réglera désormais la météo sur orage que si le boss est mort.
Conditions basées sur l'emplacement
locationIsAir
Définit la condition selon que l'emplacement de la cible est de l'air ou non.
| Key | Details | Values |
|---|---|---|
locationIsAir | Vérifie si l'emplacement est un bloc d'air (ou l'inverse). | Boolean |
Exemple
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"
Vérifie si l'emplacement situé 2 blocs au-dessus de l'endroit où se tient le boss est de l'air et, si c'est le cas, ne bloque pas l'exécution du script météo lorsque le mob est touché. Sinon, l'action est bloquée.
isOnFloor
Vérifie si l'emplacement est au sol. Cela signifie que le bloc à l'emplacement n'est pas solide, mais que le bloc en dessous l'est.
| Key | Details | Values |
|---|---|---|
isOnFloor | Vérifie si l'emplacement est un emplacement au sol (ou l'inverse). | Boolean |
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF
Vérifie si le boss se trouve sur un bloc solide ; si c'est le cas, le script s'exécute, sinon son exécution est bloquée.
isStandingOnMaterial
Vérifie si l'emplacement situé sous la cible correspond à un type de matériau précis.
| Key | Details | Values |
|---|---|---|
isStandingOnMaterial | Définit quel type de matériau doit être vérifié. | Material |
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF
Ne s'exécutera que si le boss se tient sur un bloc BIRCH_WOOD, sinon l'exécution du script sera bloquée.
Conditions basées sur les entités
isAlive
Définit la condition selon que l'entité cible de la condition est en vie ou non.
| Key | Details | Values |
|---|---|---|
isAlive | Vérifie si l'entité est en vie (ou morte). | Boolean |
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF
Ne s'exécutera que si le boss est actuellement en vie, sinon le script sera bloqué.
hasTags
Vérifie si l'entité cible possède des tags spécifiques. Les scripteurs peuvent attribuer et retirer n'importe quel tag via des actions et les utiliser comme conditions pour un comportement ultérieur. Les tags sont simplement des chaînes de caractères (mots) que vous pouvez attribuer à un boss.
| Key | Details | Values |
|---|---|---|
hasTags | Vérifie si l'entité possède une liste de tags. | String List |
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF
Ne s'exécutera que si le boss possède les tags « isCool » et « hasANiceBeard », sinon le script sera bloqué.
doesNotHaveTags
Identique à hasTags, mais vérifie si le boss ne possède pas ces valeurs.
| Key | Details | Values |
|---|---|---|
doesNotHaveTags | Vérifie si l'entité ne possède pas une liste de tags. | String List |
Exemple
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF
Ne s'exécutera que si le boss ne possède pas les tags « isStinky » et « isSus », sinon le script sera bloqué.
Autres conditions
randomChance
Donne à la condition une chance aléatoire d'être valide.
| Key | Details | Values |
|---|---|---|
randomChance | Probabilité que la condition soit valide. | Nombre entre 0.0 et 1.0 |
Exemple
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
Cela donnera au script 10 % de chances de s'exécuter, sinon le script sera bloqué.
Notez que cette condition est particulière car elle ne nécessite pas de cible.
Filtrer NEARBY avec des tags
Pour filtrer NEARBY_MOBS ou NEARBY_PLAYERS selon des tags spécifiques, utilisez ACTION_TARGET comme cible de la condition (si la condition est appliquée à une action et non au script lui-même). Cela garantit que le script filtre précisément uniquement les mobs/joueurs portant les tags spécifiés.
Exemple
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET
Ce script recherchera tous les mobs à proximité portant le tag TurnOff et, s'ils possèdent ce tag, désactivera alors leur IA.
targetCountLowerThan et targetCountGreaterThan
Crée une condition qui n'autorise l'exécution de l'action que si le nombre de cibles spécifié est inférieur ou supérieur à la valeur définie.
| Key | Details | Values |
|---|---|---|
targetCountLowerThan | N'exécute l'action que si le nombre de cibles est inférieur au nombre spécifié. | Nombre entre 0 et 999 |
| Key | Details | Values |
|---|---|---|
targetCountGreaterThan | N'exécute l'action que si le nombre de cibles est supérieur au nombre spécifié. | Nombre entre 0 et 999 |
Exemple
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
Le script ne s'exécutera que s'il y a plus de 2 mobs dans un rayon de 15 blocs.
Notez que cette condition NÉCESSITE une cible.