跳到主要内容

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

有两种类型的条件:BLOCKINGFILTERINGBLOCKING 条件会使脚本或动作停止运行。FILTERING 条件会使动作跳过不满足条件的目标。这意味着如果您只想定位非空气的方块,您需要 FILTERING 条件,但如果您想在玩家死亡时停止动作,您需要 BLOCKING 条件。

动作外部的条件始终是 BLOCKING。动作内部的条件可以是 BLOCKINGFILTERING

注意:如果目标是 SELF(Boss)并且条件检查是 isAlive,则检查始终为 BLOCKING 这可以放在 FILTERING 条件中,并且仍然会使这个特定部分表现为 BLOCKING

动作内部的条件默认设置为 FILTERING


Condition Block Placement

您可以通过两种方式放置或嵌套条件块:

  1. 在单个动作下 – 条件将仅应用于特定动作。如果满足条件,动作将执行;否则不执行。

  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"

检查 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_MOBSNEARBY_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 只怪物时,脚本才会运行。

注意,此条件确实需要目标。