跳至主要內容

精英腳本區域

區域是由形狀定義的位置,可以被腳本編寫者用作目標來執行任何類型的動作。

每個腳本只能設定一個區域。

要以區域為目標,可以使用目標類型 ZONE_FULLZONE_BORDER

區域本身也會使用腳本目標來定義該區域會出現在哪裡。

shape

設定區域的形狀。有效形狀:

Shape TypeDetailsAnimatableBorder
CYLINDER圓柱形
SPHERE球形
DOME穹頂形(半球)
CUBOID長方體形
STATIC_RAY兩點之間的固定線
ROTATING_RAY兩點之間的旋轉線
TRANSLATING_RAY從兩個起始點移動到兩個終點的線
CONE圓錐形

可動畫

帶動畫的區域在腳本首次被調用時開始區域動畫。

這表示如果某個動作有等待時間,當該動作開始時,區域在動作等待期間就已經在移動了。

區域一律在每個 tick 都會播放動畫。這表示如果你使用 SPAWN_PARTICLES 動作,你可以把它設為每個 tick 執行一次,因為區域每個 tick 都在移動。如果你設為每秒執行一次,你會看到粒子跳來跳去,因為即使在沒有生成粒子的那些 tick,區域仍持續在移動。

如果你想製作旋轉區域的動作,但希望等待一定數量的 tick 之後才開始該動作,請把它做成另一個腳本,並透過 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 tick 重複 x 20 次 = 100 tick)。

如果你沒有使用 ZONE_BORDER 選項,而是改用 ZONE_FULL 選項,那麼整個區域就會像這樣被煙霧粒子覆蓋:

elitescript_zones_borderfull.jpg


SPHERE

KeyDetailsMandatory
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

KeyDetailsMandatory
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

KeyDetailsMandatory
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 形狀,也就是說它是一個 3D 體積,如果你想製作橫掃效果,這一點很重要。


CYLINDER

KeyDetailsMandatory
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

KeyDetailsMandatory
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

KeyDetailsMandatory
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

KeyDetailsMandatory
shape設定該區域的形狀。應為 ROTATING_RAY
filter設定哪些類型的實體會被鎖定
target設定線段第一個點的位置
target2設定線段最後一個點的位置
animationDuration以 tick 設定旋轉所需的時間
pitchPreRotation在動畫開始前對 pitch 套用一個初始旋轉
yawPreRotation在動畫開始前對 yaw 套用一個初始旋轉
pitchRotation設定該動畫的 pitch 旋轉
yawRotation設定該動畫的 yaw 旋轉
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 tick)才會完成。


TRANSLATING_RAY

KeyDetailsMandatory
shape設定該區域的形狀。應為 TRANSLATING_RAY
filter設定哪些類型的實體會被鎖定
animationDuration以 tick 設定平移所需的時間
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 tick)才會完成。

我們只要把 Z 的 offset 調整成類似 offset: 0,0,10 的值,就能輕鬆讓射線橫向移動:

elitescript_zones_translatingray2.gif

這個行為可能會依你在遊戲中的面向而改變。
如果我們修改 GIF 圖片中所示腳本裡的 X offset,從我們的視角看來,射線就會像是沿著直線遠離我們。


filter

filter 屬性可以用來只鎖定區域內的特定實體。這些實體可以是:

ValueDetails
PLAYER僅目標區域內的玩家(預設)
ELITE僅目標區域內的精英
LIVING目標區域內的所有生物實體
範例
eliteScript:
FilterExample:
Events:
- PlayerDamagedByEliteMobEvent
Zone:
shape: SPHERE
radius: 12
borderRadius: 11
filter: ELITE
Target:
targetType: SELF
track: false

這個範例腳本示範如何使用 filter 讓區域只鎖定精英怪。