Elite Script 条件
条件允许脚本编写者根据特定条件使脚本和/或动作不运行。
示例
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 系统来定位哪个实体或位置受到条件的约束。这意味着您可以将条件关联到 Boss、玩家或任何其他您可以定位的目标。
Condition Type
| 键 | 详情 | 值 |
|---|---|---|
conditionType | 设置条件类型 | BLOCKING / FILTERING |
有两种类型的条件:BLOCKING 和 FILTERING。BLOCKING 条件会使脚本或动作停止运行。FILTERING 条件会使动作跳过不满足条件的目标。这意味着如果您只想定位非空气的方块,您需要 FILTERING 条件,但如果您想在玩家死亡时停止动作,您需要 BLOCKING 条件。
动作外部的条件始终是 BLOCKING。动作内部的条件可以是 BLOCKING 或 FILTERING。
注意:如果目标是 SELF(Boss)并且条件检查是 isAlive,则检查始终为 BLOCKING! 这可以放在 FILTERING 条件中,并且仍然会使这个特定部分表现为 BLOCKING。
动作内部的条件默认设置为 FILTERING。
Condition Block Placement
您可以通过两种方式放置或嵌套条件块:
-
在单个动作下 – 条件将仅应用于特定动作。如果满足条件,动作将执行;否则不执行。
-
在整个脚本下 – 条件应用于脚本内的所有动作。如果不满足条件,则不会执行任何动作。
以下是演示如何为单个动作和整个脚本嵌套条件块的示例。
在单个动作下:
示例
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"
检查 Boss 站立位置上方 2 个方块的位置是否为空气,如果是,则在怪物被击中时运行 SET_WEATHER 动作。否则阻止 SET_WEATHER 动作。但当 Boss 被击中时将始终运行 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"
如果 Boss 站立位置上方两个空格的方块是空气,则在怪物被击中时允许所有脚本运行。否则,阻止整个脚本执行,包括 SET_WEATHER 和 MESSAGE 动作。
runIfConditionIs
| 键 | 详情 | 值 |
|---|---|---|
runIfConditionIs | 设置条件为真或假时是否允许运行动作。 | true / false |
您可以通过在条件名称前后使用 runIf 前缀和 Is 后缀来反转条件。
例如,使用 isAlive 条件。通常,编写:
isAlive: true
意味着动作仅在 Boss 存活时运行。
但如果您还编写:
runIfIsAliveIs: false
在同一条件中,则条件被反转 — 动作现在仅在 Boss 死亡时运行。
这种结构允许您控制在运行动作之前条件应该通过还是失败。
示例:
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
此脚本现在仅在 Boss 死亡时将天气设置为雷暴。
基于位置的条件
locationIsAir
设置条件为目标位置是否为空气。
| 键 | 详情 | 值 |
|---|---|---|
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"
检查 Boss 站立位置上方 2 个方块的位置是否为空气,如果是,则在怪物被击中时不阻止天气脚本运行。否则阻止该动作。
isOnFloor
检查该位置是否在地板上。这意味着该位置的方块不是实心的,但其下方的方块是实心的。
| 键 | 详情 | 值 |
|---|---|---|
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
检查 Boss 是否在实心方块上,如果是,则运行脚本,否则阻止脚本运行。
isStandingOnMaterial
检查目标下方的位置是否为匹配的材料类型。
| 键 | 详情 | 值 |
|---|---|---|
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
仅在 Boss 站在 BIRCH_WOOD 方块上时运行,否则脚本将被阻止运行。
基于实体的条件
isAlive
设置条件为条件目标实体是否存活。
| 键 | 详情 | 值 |
|---|---|---|
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
仅在 Boss 当前存活时运行,否则脚本将被阻止。
hasTags
检查目标实体是否具有特定标签。脚本编写者可以通过动作分配和取消分配任何标签,并将它们用作后续行为的条件。标签只是您可以分配给 Boss 的字符串(单词)。
| 键 | 详情 | 值 |
|---|---|---|
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
仅在 Boss 具有 "isCool" 和 "hasANiceBeard" 标签时运行,否则脚本将被阻止。
doesNotHaveTags
与 hasTags 相同,但检查 Boss 是否没有这些值。
| 键 | 详情 | 值 |
|---|---|---|
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
仅在 Boss 没有 "isStinky" 和 "isSus" 标签时运行,否则脚本将被阻止。
其他条件
randomChance
为条件提供随机有效的机会。
| 键 | 详情 | 值 |
|---|---|---|
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: # Not required
targetType: SELF # Not required
这将使脚本有 10% 的运行机会,否则脚本将被阻止。
注意,此条件是特殊的,因为它不需要目标。
使用标签过滤 NEARBY
要根据特定标签过滤 NEARBY_MOBS 或 NEARBY_PLAYERS,请使用 ACTION_TARGET 作为条件的目标(如果条件应用于动作而不是脚本本身)。这确保脚本准确地仅过滤具有指定标签的怪物/玩家。
示例
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 标签的附近怪物,如果它们有该标签,则会关闭它们的 AI。
targetCountLowerThan 和 targetCountGreaterThan
创建一个条件,仅当指定的目标数量低于或高于定义的值时才允许运行动作。
| 键 | 详情 | 值 |
|---|---|---|
targetCountLowerThan | 仅在目标计数低于指定数字时运行动作。 | 0 到 999 之间的数字 |
| 键 | 详情 | 值 |
|---|---|---|
targetCountGreaterThan | 仅在目标计数大于指定数字时运行动作。 | 0 到 999 之间的数字 |
示例
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
仅当 15 个方块半径内有超过 2 只怪物时,脚本才会运行。
注意,此条件确实需要目标。