跳到主要内容

精英脚本区域

区域是由形状定义的位置,可以被脚本编写者用作目标来执行任何类型的动作。

每个脚本只能设置一个区域。

要以区域为目标,可以使用目标类型 ZONE_FULLZONE_BORDER

区域本身也会使用脚本目标来定义区域将出现在哪里。

shape

设置区域的形状。有效形状:

形状类型详情可动画边界
CYLINDER圆柱形
SPHERE球形
DOME穹顶形(半球)
CUBOID长方体形
STATIC_RAY两点之间的固定线
ROTATING_RAY两点之间的旋转线
TRANSLATING_RAY从两个起始点移动到两个终点的线
CONE圆锥形

可动画

带动画的区域在脚本首次被调用时开始区域动画。

这意味着如果某个动作有等待时间,那么当该动作开始时,区域在动作等待期间就已经在移动了。

区域始终每刻都会推进动画。这意味着如果你使用 SPAWN_PARTICLES 动作,可以把它设为每刻运行一次,因为区域每刻都在移动。如果你设成每秒运行一次,你会看到粒子在跳跃,因为即使在没有生成粒子的那些刻里区域仍在继续移动。

如果你想制作一个旋转区域的动作,但希望在动作开始前先等待固定刻数,请把它拆成另一个脚本,并通过 RUN_SCRIPT 调用那个脚本。确保 RUN_SCRIPT 上设置了你想要的等待时间。

区域在动画完成后会停留在最终位置。

所有可动画的区域都被设为不跟踪脚本目标,因为额外的移动会让脚本编写者和玩家都难以理解。这意味着这些区域不会跟着 Boss 或玩家跑,而是始终相对于它们最初的生成点移动。


边界

某些区域可以拥有边界。有边界意味着可以把 ZONE_BORDER 用作该区域的目标。边界的定义方式是在第一个较大的形状内部再创建一个较小的形状。较小区域与较大区域之间的那部分空间就是边界。

示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 4
borderRadius: 3
height: 8
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: SMOKE_LARGE
Target:
targetType: ZONE_BORDER
repeatEvery: 5
times: 20

elitescript_zones_border.jpg

此脚本会生成出现在区域边界上的烟雾粒子,持续 5 秒(repeatEvery 5 × times 20 = 100 刻)。

如果你没有使用 ZONE_BORDER 选项,而是改用了 ZONE_FULL 选项,那么整个区域都会被烟雾粒子覆盖,像这样:

elitescript_zones_borderfull.jpg


SPHERE

详情必填
shape设置区域的形状。应为 SPHERE
target设置球体中心的位置
filter设置哪些类型的实体会被作为目标
radius球体的半径
borderRadius内部球体的半径
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: SPHERE
radius: 4
borderRadius: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

elitescript_zones_sphere.jpg

此脚本使用云粒子演示球体的形状。


DOME

详情必填
shape设置区域的形状。应为 DOME
target设置穹顶中心的位置
filter设置哪些类型的实体会被作为目标
radius穹顶的半径
borderRadius内部穹顶的半径
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: DOME
radius: 4
borderRadius: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

elitescript_zones_dome.jpg

此脚本使用云粒子演示穹顶的形状。


CONE

详情必填
shape设置区域的形状。应为 CONE
target设置圆锥顶点(尖端)的位置
target2设置圆锥底面中心的位置
filter设置哪些类型的实体会被作为目标
radius圆锥底面的半径
borderRadius内部圆锥的半径
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CONE
radius: 10
Target:
targetType: SELF
offset: 0,0,0
Target2:
targetType: SELF
offset: 0,10,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
coverage: 0.8
repeatEvery: 5
times: 20

此脚本使用云粒子演示圆锥的形状。请注意,这个区域是 CONE 形状,也就是说它是一个三维体积,如果你想制作扇形横扫效果,这一点很重要。


CYLINDER

详情必填
shape设置区域的形状。应为 CYLINDER
target设置圆柱中心的位置
filter设置哪些类型的实体会被作为目标
radius圆柱的半径
borderRadius内部圆柱的半径
height圆柱的高度
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CYLINDER
radius: 4
borderRadius: 3
height: 8
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

elitescript_zones_cylinder.jpg

此脚本使用云粒子演示圆柱的形状。


CUBOID

详情必填
shape设置区域的形状。应为 CUBOID
target设置长方体中心的位置
filter设置哪些类型的实体会被作为目标
x设置长方体的长度
y设置长方体的高度
z设置长方体的宽度,默认与 x 相同
xBorder设置内部长方体的长度
yBorder设置内部长方体的高度
zBorder设置内部长方体的宽度,默认与 x 相同
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: CUBOID
x: 4
y: 4
z: 4
xBorder: 3
yBorder: 3
zBorder: 3
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

elitescript_zones_cuboid.jpg

此脚本使用云粒子演示长方体的形状。


STATIC_RAY

详情必填
shape设置区域的形状。应为 STATIC_RAY
target设置线段第一个端点的位置
target2设置线段最后一个端点的位置
filter设置哪些类型的实体会被作为目标
ignoresSolidBlocks设置射线是否会穿透固体方块。默认为 true
pointRadius设置射线的粗细。默认为 0.5 格。
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: STATIC_RAY
Target2:
targetType: DIRECT_TARGET
offset: 0,1,0
Target:
targetType: SELF
offset: 0,1,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 5
times: 20

elitescript_zones_staticray.jpg

此脚本使用云粒子演示静态射线的形状。

我们在区域的两端都使用了 offset 选项来调整区域的高度,使射线从玩家和 Boss 的身体中部发出,否则射线会出现在他们的脚下。


ROTATING_RAY

详情必填
shape设置区域的形状。应为 ROTATING_RAY
filter设置哪些类型的实体会被作为目标
target设置线段第一个端点的位置
target2设置线段最后一个端点的位置
animationDuration设置旋转所需的时间(以刻为单位)
pitchPreRotation在动画开始前对俯仰角(pitch)施加一个初始旋转
yawPreRotation在动画开始前对偏航角(yaw)施加一个初始旋转
pitchRotation设置动画的俯仰角旋转量
yawRotation设置动画的偏航角旋转量
ignoresSolidBlocks设置射线是否会穿透固体方块。默认为 true
pointRadius设置射线的粗细。默认为 0.5 格。
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: ROTATING_RAY
animationDuration: 100
pitchPrerotation: 0
yawPrerotation: 0
pitchRotation: 0
yawRotation: 360
ignoresSolidBlocks: true
Target:
targetType: SELF
offset: 0,1,0
Target2:
targetType: DIRECT_TARGET
offset: 0,1,0
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 1
times: 100

elitescript_zones_rotatingray.gif

此脚本展示了使用云粒子的旋转射线的效果。

首先,它用云粒子创建一条从 Boss 指向伤害它的玩家的射线。然后,它用 offset 把两端位置略微上移一格。

接着,它让射线围绕被锁定的玩家转一整圈。这次旋转以被锁定的玩家为中心,需要 5 秒(100 刻)才能完成。


TRANSLATING_RAY

详情必填
shape设置区域的形状。应为 TRANSLATING_RAY
filter设置哪些类型的实体会被作为目标
animationDuration设置平移所需的时间(以刻为单位)
target设置线段第一个端点的位置
finalTarget设置线段第一个端点的终点位置
target2设置线段第二个端点的位置
finalTarget2设置线段第二个端点的终点位置
ignoresSolidBlocks设置射线是否会穿透固体方块。默认为 true
pointRadius设置射线的粗细。默认为 0.5 格。
示例
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: TRANSLATING_RAY
Target:
targetType: SELF
FinalTarget:
targetType: SELF
offset: 0,10,0
Target2:
targetType: DIRECT_TARGET
FinalTarget2:
targetType: DIRECT_TARGET
offset: 0,10,0
animationDuration: 100
ignoresSolidBlocks: true
Actions:
- action: SPAWN_PARTICLE
particles:
- particle: CLOUD
Target:
targetType: ZONE_FULL
repeatEvery: 1
times: 100

elitescript_zones_translatingray.gif

此脚本展示了使用云粒子的移动射线的效果。

首先,它用云粒子创建一条从 Boss 指向伤害它的玩家的射线。

然后,它通过 FinalTarget1FinalTarget2 上的 offset,让射线从两个目标位置向上平移 10 格。

该动画需要 5 秒(100 刻)才能完成。

我们只需把 Z 方向的 offset 调整为类似 offset: 0,0,10 的值,就能轻松让射线横向移动:

elitescript_zones_translatingray2.gif

这一行为可能会随你在游戏中的朝向而变化。
如果我们修改 GIF 图中所示脚本里的 X 方向 offset,从我们的视角看,射线会显得沿直线朝远离我们的方向移动。


filter

filter 属性可用于只把区域内特定的实体作为目标。这些实体可以是:

详情
PLAYER仅目标区域内的玩家(默认)
ELITE仅目标区域内的精英
LIVING目标区域内的所有生物实体
示例
eliteScript:
FilterExample:
Events:
- PlayerDamagedByEliteMobEvent
Zone:
shape: SPHERE
radius: 12
borderRadius: 11
filter: ELITE
Target:
targetType: SELF
track: false

这个示例脚本展示了如何使用 filter 让区域只把精英作为目标。