跳到主要内容

Elite Script 区域

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

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

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

区域本身也使用 脚本目标 来定义区域将出现的位置。

shape

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

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

可动画化

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

这意味着如果一个操作有等待时间,当操作开始时,区域在操作等待期间已经在移动了。

区域总是在每个刻(tick)上进行动画。这意味着如果你使用 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 秒(重复间隔 5 x 次数 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圆锥第二个目标的半径
示例
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

这个脚本使用云粒子演示了圆柱体的形状。请记住,这个区域是圆锥形状,意味着它是一个 3D 体积,如果你想创建扫掠效果,这一点很重要。


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设置射线是否会穿过固体方块
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在动画之前对俯仰应用初始旋转
yawPreRotation在动画之前对偏航应用初始旋转
pitchRotation设置动画的俯仰旋转
yawRotation设置动画的偏航旋转
ignoresSolidBlocks设置射线是否会穿过固体方块
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设置射线是否会穿过固体方块
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

过滤器属性可用于仅定位区域内的特定实体。这些实体可以是:

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

这个示例脚本展示了如何使用过滤器使区域仅定位精英。