Elite Script 条件
条件を使用すると、スクリプター(scripter)は特定の条件に基づいてスクリプトやアクションを実行しないようにすることができます。
例
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
この例では、Exampleスクリプトはエリートがまだ生きている場合にのみ実行され、エリートの位置から3ブロック上のブロックが空気ブロックの場合にのみ土ブロックを配置します。個々のアクションには個別の条件を設定できます。
Target
条件はTargetsシステムを使用して、条件が適用されるエンティティまたは場所をターゲットにします。つまり、ボスやプレイヤー、またはターゲットできる他の何にでも条件を関連付けることができます。
Condition Type
| Key | 詳細 | 値 |
|---|---|---|
conditionType | 条件のタイプを設定します | BLOCKING / FILTERING |
条件にはBLOCKINGとFILTERINGの2つのタイプがあります。BLOCKING条件はスクリプトまたはアクションの実行を停止させます。FILTERING条件は、条件を満たさないターゲットをアクションがスキップするようにします。つまり、空気でないブロックのみをターゲットにしたい場合はFILTERING条件を使用し、プレイヤーが死んでいる場合にアクションを停止したい場合はBLOCKING条件を使用します。
アクションの外にある条件は常にBLOCKINGです。アクション内の条件はBLOCKINGまたはFILTERINGのいずれかになります。
注意: ターゲットがSELF(ボス)で、条件チェックがisAliveの場合、チェックは常にBLOCKINGです! これはFILTERING条件の中に配置できますが、この特定の部分はBLOCKINGとして動作します。
アクション内の条件はデフォルトでFILTERINGに設定されています。
Condition Block Placement
条件ブロックは2つの方法で配置またはネストできます:
-
個別のアクションの下 – 条件は特定のアクションにのみ適用されます。条件が満たされた場合、アクションが実行されます。そうでない場合は実行されません。
-
スクリプト全体の下 – 条件はスクリプト内のすべてのアクションに適用されます。条件が満たされない場合、アクションは一つも実行されません。
以下は、個別のアクションとスクリプト全体の両方に条件ブロックをネストする方法を示す例です。
個別のアクションの下:
例
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"
ボスが立っている場所から2ブロック上の位置が空気かどうかをチェックし、空気の場合はmobがヒットされたときにSET_WEATHERアクションを実行します。そうでない場合はSET_WEATHERアクションをブロックします。しかし、MESSAGEアクションには条件が適用されていないため、ボスはヒットされたときに常にMESSAGEアクションを実行します。
スクリプト全体の下:
例
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"
ボスが立っている場所から2スペース上にあるブロックが空気の場合、mobがヒットされたときにすべてのスクリプトの実行を許可します。そうでない場合は、SET_WEATHERとMESSAGEアクションを含むスクリプト全体の実行をブロックします。
runIfConditionIs
| Key | 詳細 | 値 |
|---|---|---|
runIfConditionIs | 条件が真または偽のときにアクションの実行を許可するかどうかを設定します。 | true / false |
条件名の前にrunIfプレフィックスとIsサフィックスを付けることで、条件を反転させることができます。
例えば、isAlive条件を見てみましょう。通常、次のように書きます:
isAlive: true
これは、ボスが生きている場合にのみアクションが実行されることを意味します。
しかし、同じ条件に次のように書くと:
runIfIsAliveIs: false
条件が反転され、ボスが死んでいる場合にのみアクションが実行されるようになります。
この構造により、アクションを実行する前に条件が合格または失敗すべきかどうかを制御できます。
例:
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
このスクリプトは、ボスが死んでいる場合にのみ天候を雷に設定します。
場所ベースの条件
locationIsAir
ターゲットの場所が空気かどうかを条件に設定します。
| Key | 詳細 | 値 |
|---|---|---|
locationIsAir | 場所が空気ブロックかどうか(またはその逆)をチェックするように設定します。 | Boolean |
例
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"
ボスが立っている場所から2ブロック上の位置が空気かどうかをチェックし、空気の場合はmobがヒットされたときに天候スクリプトの実行をブロックしません。そうでない場合はアクションをブロックします。
isOnFloor
場所が床の上にあるかどうかをチェックします。これは、その場所のブロックが固体ではないが、その下のブロックが固体であることを意味します。
| Key | 詳細 | 値 |
|---|---|---|
isOnFloor | 場所が床の場所かどうか(またはその逆)をチェックするように設定します。 | Boolean |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isOnFloor: true
Target:
targetType: SELF
ボスが固体ブロックの上にいるかどうかをチェックし、いる場合はスクリプトを実行し、そうでない場合はスクリプトの実行をブロックします。
isStandingOnMaterial
ターゲットの下にある場所が一致するマテリアルタイプかどうかをチェックします。
| Key | 詳細 | 値 |
|---|---|---|
isStandingOnMaterial | どのマテリアルタイプをチェックするかを設定します。 | Material |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isStandingOnMaterial: BIRCH_WOOD
Target:
targetType: SELF
ボスがBIRCH_WOODブロックの上に立っている場合にのみ実行され、そうでない場合はスクリプトの実行がブロックされます。
エンティティベースの条件
isAlive
条件ターゲットエンティティが生きているかどうかを条件に設定します。
| Key | 詳細 | 値 |
|---|---|---|
isAlive | エンティティが生きているか(または死んでいるか)をチェックするように設定します。 | Boolean |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
isAlive: true
Target:
targetType: SELF
ボスが現在生きている場合にのみ実行され、そうでない場合はスクリプトがブロックされます。
hasTags
ターゲットエンティティが特定のタグを持っているかどうかをチェックします。スクリプターはアクションを通じて任意のタグを割り当てたり解除したりでき、後の動作の条件として使用できます。タグは単に文字列(単語)であり、ボスに割り当てることができます。
| Key | 詳細 | 値 |
|---|---|---|
hasTags | エンティティがタグのリストを持っているかどうかをチェックするように設定します。 | String List |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
hasTags:
- isCool
- hasANiceBeard
Target:
targetType: SELF
ボスが「isCool」と「hasANiceBeard」のタグを持っている場合にのみ実行され、そうでない場合はスクリプトがブロックされます。
doesNotHaveTags
hasTagsと同じですが、ボスがこれらの値を持っていないことをチェックします。
| Key | 詳細 | 値 |
|---|---|---|
doesNotHaveTags | エンティティがタグのリストを持っていないことをチェックするように設定します。 | String List |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
doesNotHaveTags:
- isStinky
- isSus
Target:
targetType: SELF
ボスが「isStinky」と「isSus」のタグを持っていない場合にのみ実行され、そうでない場合はスクリプトがブロックされます。
その他の条件
randomChance
条件が有効になるランダムチャンスを与えます。
| Key | 詳細 | 値 |
|---|---|---|
randomChance | 条件が有効になる確率。 | 0.0から1.0の間の数値 |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
randomChance: 0.1
Target: # 不要
targetType: SELF # 不要
これにより、スクリプトは10%の確率で実行され、そうでない場合はスクリプトがブロックされます。
この条件は特別で、ターゲットを必要としません。
タグでNEARBYをフィルタリングする
特定のタグに基づいてNEARBY_MOBSまたはNEARBY_PLAYERSをフィルタリングするには、条件のターゲットとしてACTION_TARGETを使用します(条件がスクリプト自体ではなくアクションに適用される場合)。これにより、スクリプトは指定されたタグを持つmobs/playersのみを正確にフィルタリングできます。
例
eliteScript:
Example:
Actions:
- action: SET_MOB_AI
Target:
targetType: NEARBY_MOBS
range: 40
bValue: false
Conditions:
conditionType: FILTERING
hasTags:
- TurnOff
Target:
targetType: ACTION_TARGET
このスクリプトは、TurnOffタグを持つ近くのmobsを探し、タグを持っている場合はそれらのAIをオフにします。
targetCountLowerThan and targetCountGreaterThan
指定されたターゲット数が定義された値よりも少ないか多い場合にのみアクションの実行を許可する条件を作成します。
| Key | 詳細 | 値 |
|---|---|---|
targetCountLowerThan | ターゲット数が指定された数値よりも少ない場合にのみアクションを実行します。 | 0から999の間の数値 |
| Key | 詳細 | 値 |
|---|---|---|
targetCountGreaterThan | ターゲット数が指定された数値よりも多い場合にのみアクションを実行します。 | 0から999の間の数値 |
例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_WEATHER
Target:
targetType: SELF
weather: THUNDER
duration: 120
Conditions:
conditionType: BLOCKING
targetCountGreaterThan: 2
Target: #必須
targetType: NEARBY_MOBS #必須
range: 15
スクリプトは、15ブロックの範囲内に2体を超えるmobsがいる場合にのみ実行されます。
この条件はターゲットを必要とします。