跳至主要內容

Elite Script 冷卻時間

冷卻時間設定首領在能夠再次執行同一腳本或任何其他技能* 之前必須經過的時間。

  • 注意:某些技能目前不受冷卻時間影響。

配置位置

冷卻時間在精英腳本的 Cooldowns 區段中配置:

eliteScript:
ScriptName:
Events:
- [event configuration]
Actions:
- [action configuration]
Cooldowns:
local: [value or range]
global: [value or range]

注意:配置鍵不區分大小寫(localLocalLOCAL 都有效)。

關於單位的說明:所有冷卻時間值皆以刻(tick)為單位。在 Minecraft 中,每秒有 20 刻,因此:

  • 20 刻 = 1 秒
  • 60 刻 = 3 秒
  • 100 刻 = 5 秒
  • 99999 刻 ≈ 83 分鐘

預設值

如果省略 Cooldowns 區段,localglobal 皆預設為 0,這代表腳本會完全繞過冷卻時間系統。

繞過冷卻時間

沒有 Cooldowns 區段,或 localglobal 都設定為 0 的腳本,將完全繞過冷卻時間系統。這讓事件觸發的行為無論首領的冷卻狀態如何都能始終執行。

範例:

eliteScript:
AlwaysTeleportOnLowHealth:
Events:
- EliteMobEnterCombatEvent
Actions:
- action: TELEPORT
Target:
targetType: SELF_SPAWN
# No Cooldowns section - script always executes when event fires

冷卻時間有兩個值:

local

local 設定同一腳本能夠再次執行前的時間(以刻為單位)。範例:

範例

local: 60

設定該技能能在 3 秒後再次執行。

global

global 設定任何其他腳本或技能能夠再次執行前的時間(以刻為單位)[1]。範例:

範例

global: 20

設定所有其他技能在 1 秒內無法啟動。

[1] 注意:這適用於舊版技能實作(並非 EliteScript)。所有基於 EliteScript 的技能都能正確支援全域冷卻時間。某些較舊的技能目前不受此影響,這是一項正在進行中的工作。

**注意:透過將本地冷卻時間設得較長、全域冷卻時間設得較短,你可以保證首領會在其可用技能之間輪流使用!**永遠不要把全域冷卻時間設得更長,並且我建議至少保留一秒的本地冷卻時間,好讓其他技能有觸發的機會。

此外,如果你的技能有一段特定的啟用持續時間,你應該利用此系統來防止其他技能同時執行,以免破壞你的技能效果。

隨機化

localglobal 冷卻時間都支援使用範圍語法進行隨機化。這讓冷卻時間的長度能夠變化,為首領的行為增添不可預測性。

範例:

Cooldowns:
local: 40~80
global: 10~30

將本地冷卻時間隨機設定在 40 到 80 刻之間(2-4 秒),並將全域冷卻時間隨機設定在 10 到 30 刻之間(0.5-1.5 秒)。

注意:每次套用冷卻時間時都會隨機選取數值。

使用冷卻時間讓腳本只執行一次

為了確保腳本在使用一個可能在戰鬥中多次發生的事件時仍只觸發一次,請將本地冷卻時間設定為一個很大的數字,例如 99999。以下範例示範了這個概念:

範例
eliteScript:
SetMeOnFireOnlyOnce:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 60
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 99999
# global: 20 # Optional: Prevent other powers for 1 second

在這個場景中,EliteMobDamagedByPlayerEvent 觸發 SET_ON_FIRE 動作。若沒有冷卻時間,每次玩家攻擊怪物時都會啟動該動作。

然而,將本地冷卻時間設定為 99999 後,該動作每 99999 刻(83 分鐘)只會觸發一次。由於戰鬥很少持續那麼久,這實際上讓腳本在每場戰鬥遭遇中只執行一次。

在這種情況下,全域冷卻時間是可選的——如果省略或設定為 0,便不會阻止其他技能執行。

疑難排解

無效的冷卻時間鍵

如果你在 Cooldowns 區段中使用了無法辨識的鍵,伺服器日誌中將出現警告:

Failed to parse cooldown entry for script name [ScriptName] in config file [FileName]

有效的鍵為:localglobal(不區分大小寫)