在WoW 2.0中,宏和插件將會有翻天覆地的改變。最近,Slouken(Blizzard UI開發者)宣布了壹個令人激動的宏的新特性,壹系列條件選項將可以被應用於以下斜杠命令:/cast,/use,/target,/focus,/assist,/stopmacro,/cancelaura,/userandom,/castrandom,以及/castsequence。這個帖子的目的就在於講解如何應用它們。
註:雖然多數例子都使用了"/cast",但事實上這些條件選項對前面提到的所有斜杠命令都有效。
在2.0中,目前所用的大多數宏都將被廢棄,因為在戰鬥中,任何用到CastSpellByName()或者TargetUnit()的宏都將不再有作用。更進壹步的,多數“傻瓜邏輯”的宏也不會再有效。但是,妳現在可以通過新的宏條件選項來實現許多流行宏的功能。
現在,使用“/cast”(“/施放”)非常簡明,命令格式就是“/cast <法術名稱>”(施放最高等級的法術)或者“/cast <法術名陳>(Rank <#>)”。比如說:
/施放 強效治療術
/施放 奧術智慧(等級 3)
在新的系統中,妳依然可以使用原來的這些格式,不過妳現在可以加入條件選項來使得“/cast”更加靈活。“/cast”的新格式是:“/cast [<第壹組條件選項>] <第壹個法術名稱>; [<第二組條件選項>] <第二個法術名稱>; [<第三組條件選項>] <第三個法術名稱>;...”。
現在讓宏運作起來的方式就像這樣:第壹組條件選項被檢測,如果它們成立,則第壹個法術被施放,如果它們不成立,則第二組條件選項被檢測,如果這個成立了,下壹個法術被施放,如此下去。但是,妳必須牢記,只有壹個法術會被施放。當壹組條件選項被檢測到成立時,相應的法術就會被施放,宏也就此結束。
當前可用的條件選項有:
help - 檢測目標是否為友善
harm - 檢測目標是否為敵對
combat - 檢測妳是否在戰鬥中
stance或stance:# - 檢測妳是否在姿態中,或是否在某個特定的姿態中(詳見下)
stealth - 檢測妳是否潛行
modifier或modifier:shift|ctrl|alt - 檢測命令被執行時是否某個特定的鍵被按下
equipped:<item> - 檢測某個物品是否被裝備。<item>可以是任何有效的裝備槽,物品分類,或者物品子類
target = <unit> - 特殊條件選項,它把當前目標改變為任何有效的單位(詳見下)
actionbar:<number> - 檢測當前動作條是否為列出的那個
新的條件選項:
pet:<pet type 或 pet name> - 檢測寵物是否存在。可以接受寵物類型(梟,熊,小鬼)或者名字(Fluffy,我家壞壞)作為條件。不帶條件則檢測是否有任何寵物存在。
mounted,swimming,flying - 檢測是否在坐騎上,遊泳,或者飛行中
indoors,outdoors - 檢測是在室內還是室外
button:<#> - 檢測某個特定的按鈕被用來觸發法術,默認為1(詳見下)
exists 和 dead - 檢測是否目標已經死亡,或是否真的存在
新的宏命令
---------------------------
/castsequence - 按順序施放壹組事先設定好的法術(詳見下)
# show <法術> - 顯示所列出法術的宏返回值
對於條件選項的壹些額外技巧:
妳可以在任何條件選項前加上“no”來得到反效果,比如,“nocombat”則在脫離戰鬥的情況下成立。
用逗號“,”來分隔條件選項作用和“and”壹樣,當條件選項同時成立時執行。
用斜杠“/”來分隔條件選項作用和“or”壹樣,當其中壹個條件選項成立時執行。
在宏編輯器裏按“?”圖標將強制宏以當前法術的圖標顯示舉例和姿態
這裏有壹些舉例說明:
/施放 強效治療術
非常簡單,向妳的目標施放強效治療術。
/施放 [help] 強效治療術
加入壹個條件選項,當目標為友善時施放強效治療術。
/施放 [help] 強效治療術; 懲擊
加入第二個法術,由於它沒有任何條件選項,所以在第壹組條件選項不成立時,則施放。
/施放 [help, combat] 快速治療; [help, nocombat] 強效治療術; 懲擊
這個宏將在妳(不是目標)處於戰鬥中時為友方目標施放快速治療,如果妳不在戰鬥中且目標為友方目標,則施放強效治療術,如果這些條件都不成立(比如目標為敵對),則施放懲擊。
/施放 [help] 強效治療術; [harm, combat] 懲擊; [harm, nocombat] 精神鞭笞
這個宏將對友方目標施放強效治療術,或在戰鬥中對敵對目標施放懲擊,或當妳不處於戰鬥中時,對敵對目標施放精神鞭笞。
/施放 [stealth] 伏擊; 背刺
這個宏在玩家處於潛行時施放伏擊,否則的話就背刺。
/施放 [nostealth] 背刺; 伏擊
這個宏和上面那個作用完全相同,只不過用了相反的條件選項。
/施放 [actionbar:1] 強效治療術; [actionbar:2] 懲擊
如果當前動作條為1號時施放強效治療術,如果是2號則施放懲擊,如果為其他動作條則不做任何事情。
/施放 [harm] 變形術
/stopmacro [noharm]
/p 正在把%t變羊!別去碰它!
這個宏將在目標為敵對目標時施放變形術,若目標不是敵對,則停止這個宏(例如變形術沒有施放出來),當目標被變羊後則通知隊友。註意,因為“/stopmacro”命令的存在,如果目標沒有被變羊,隊友將不會看到喊話(從而減少了不必要的垃圾信息)。
/施放 [pet] 召喚寵物; 復活寵物
這個宏將在妳沒有帶著寵物時召喚壹個出來,否則的話將嘗試復活妳的寵物。
/施放 [pet:owl] 俯沖; [pet:cat] 沖鋒; [pet] 低吼
這個宏將在妳帶著梟類寵物的時候施放俯沖,帶著貓類寵物時施放沖鋒,如果是其他寵物則施放低吼。
/施放 [pet:虛空行者] 犧牲; [pet:媚魔] 魅惑
如果妳帶著虛空行者則施放犧牲,帶著媚魔則施放魅惑。
/使用 [nomounted, outdoors] 黑色戰駒韁繩
如果妳在室外且沒有騎著坐騎時召喚坐騎。
/施放 [target=pet, dead] 復活寵物; [nopet] 召喚寵物; 治療寵物
若妳的寵物死亡了則復活它,如果沒有召喚出來則召喚寵物,或者治療妳的寵物。
----------------
Stances:
----------------
Class: Warrior Priest Druid Rogue
---------------------------------------------------------------
Stance:1 Battle Shadowform Bear Stealth
---------------------------------------------------------------
Stance:2 Defensive Aquatic
---------------------------------------------------------------
Stance:3 Berserker Cat
---------------------------------------------------------------
Stance:4 Travel
---------------------------------------------------------------
Stance:5 Moonkin/Tree
---------------------------------------------------------------
----------------
姿態
----------------
姿態以同樣的原理工作,當姿態編號沒有給出時,則在玩家處於任壹姿態都成立(註意,戰士永遠都處於某個姿態中)。如果給了編號,則檢測該姿態是否被激活。
每個職業的特定姿態都有不同的編號,這是壹個列表:
戰士:1. 戰鬥 2. 防禦 3. 狂暴
牧師:1. 暗影形態
德魯伊:1. 熊 2. 水棲 3. 貓 4. 旅行 5. 梟獸/樹
盜賊:1. 潛行
聖騎士的光環在宏條件選項系統中將不再被作為姿態處理。
請記住,如果妳跳過了某個姿態(例如作為戰士卻沒有做防禦姿態的任務),妳的姿態編號將會遞減,比如狂暴姿態的編號會變成2號。
壹些姿態宏的例子:
/施放 [nostance] 熊形態
如果沒有在壹個形態下,則變形到熊形態。
/施放 [stance:1] 壓制; [stance:2] 破甲; [stance:3] 旋風斬
在戰鬥姿態下施放壓制,防禦姿態下施放破甲,狂暴姿態下施放旋風斬。
/施放 [stance:1] 低吼; [stance:3] 爪擊
在熊形態施放低吼,在貓形態施放爪擊。
/施放 [nostance:3] 獵豹形態
如果不在獵豹形態,則變形獵豹,但如果已經處於獵豹形態,也不會把妳變回來。物品槽列表:
Two-Hand 雙手
Bag 包
Shirt 襯衫
Chest 胸部
Back 背部
Feet 腳
Finger 手指
Hands 手
Head 頭部
Held In Off-hand 副手物品
Legs 腿部
Neck 頸部
Ranged 遠程
Off Hand 副手
Shoulder 肩部
Tabard 徽章
Thrown (ranged slot items like thrown daggers) 投擲(遠程槽物品例如投擲匕首)
Trinket 飾品
Waist 腰部
One-Hand 單手
Main Hand 主手
Wrist 手腕
壹些equipped例子:
/施放 [equipped:雙手劍] 致死打擊; 英勇打擊
當妳裝備著雙手劍時施放致死打擊。
/施放 [equipped:雙手劍/雙手錘/雙手斧/長柄武器] 致死打擊
這裏使用了分隔符“/”來設置壹個“或”條件,這個宏將在妳裝備以上類型武器時施放致死打擊。
/施放 [equipped:盾牌] 盾牌猛擊
在妳裝備了盾牌的時候施放盾牌猛擊。
/施放 [equipped:盾牌, equipped:匕首] 盾牌猛擊
僅在妳同時裝備了盾牌和匕首時才施放盾牌猛擊
/施放 [noequipped:盾牌, equipped:副手] 暴怒
在妳沒有裝備盾牌且副手裝備了武器的情況下施放暴怒,也就是說,在妳雙持的時候才被激活。
Button和Target目標選項
The option [button:<x>] works similarly to the modifier button. Normally, if you left-click a button, it performs whatever action is in that spell, in our case a macro. However, if you set the button option, you can change the behavior of a particular macro.
The default button is 1, the Left Mouse button. Note that when you activate a macro via a keybinding, it treats it like a Left Mouse button click. The numbered buttons are:
1 or LeftButton
2 or RightButton
3 or MiddleButton
4 or Button4
5 or Button5
... or any of the buttons remapped by the secure state headers. I don't know what this last bit means, to be honest, I'm simply quoting slouken.
條件選項[button:<x>]運作起來類似於修改按鍵。壹般來說,當妳左鍵點擊壹個按鈕,它就執行(宏)裏面所有的動作,然而,如果妳設置了button條件選項,妳可以改變宏在特定按鍵上的表現。
默認按鍵是1,鼠標左鍵。註意,如果妳通過按鍵綁定來觸發壹個宏,它會認為是通過鼠標左鍵點擊觸發。被編號的按鍵有:
1 或 左鍵
2 或 右鍵
3 或 中鍵
4 或 按鍵4
5 或 按鍵5
...以及其他壹切在“安全聲明頭文件”中定義的按鍵。我不太確定這是什麽意思,僅僅只是引用Slouken的表述。
lostcup: 官網UI論壇中有壹篇Iriel(論壇MVP)寫的SecureStateHeader Example Code,類似於壹個模版,插件作者可以生成壹個實例去修改默認設定。
/施放 [button:2, target=player] 快速治療; [help] 快速治療
這個宏將向友方目標施放快速治療,或者如果妳右鍵點擊它,則向自己施放快速治療
這裏[target=unit]是壹個特殊的條件選項,它並不檢測條件是否成立,而是改變施法的目標以其他條件選項的目標。“unit”可以是任何有效的unit類型,例如“player”,“target”,“targettarget”,“party1”,“party1target”,等等。想了解更多的unit類型,可以去這裏:[/UnitId ]
請註意,任何壹個施法都有默認的target,那就是“target”,例如:
/施放 [help] 強效治療術
就和下面的宏等同:
/施放 [target=target, help] 強效治療術
除非妳加入壹個[target=unit]條件選項,默認則就是妳的當前目標。
壹些[target=unit]的例子:
/施放 [target=player] 快速治療
總是向自己施放快速治療,並且不會改變妳的實際目標
/施放 [help] 快速治療; [target=targettarget] 快速治療
如果目標是友善的,則向他施放快速治療,否則向目標的目標施放快速治療。
/施放 [help, combat] 快速治療; [help, nocombat] 強效治療術; [target=targettarget, help, combat] 快速治療; [target=player] 強效治療術
這個宏可以 1) 如果妳處於戰鬥中且目標友善時施放快速治療,2) 如果妳目標友善且沒有在戰鬥中則施放強效治療術,3) 如果妳處於戰鬥中且妳目標的目標為友善,則向他施放快速治療,4) 如果前面的條件都不成立,則向自己施放強效治療術。
如果妳使用none作為unit,則它會像妳沒有選中目標壹樣工作,例如:
/施放 [target=none] 驅散魔法
這將施放驅散魔法且等待妳點中壹個目標,無論妳當前是否選中了壹個目標。Castsequence
新的宏命令:/castsequence
----------------------
在WoW 2.0中出現了壹個新的命令,/castsequence。它允許妳在壹次次點擊某個宏時,將其中定義的壹系列法術逐個施放,格式如下:
/castsequence [<條件選項>] reset=<#>/target/combat <法術1>, <法術2>, <法術3>
“啥?妳在說啥?”
它設定了壹個法術列表,當妳第壹次點擊這個宏時,它施放列表中的第壹個法術,第二次點擊的時候,施放第二個法術,以此類推。當它施放完最後壹個時,又回到起始點開始循環。
“我還是不太明白耶。”
OK,假設妳是壹個法師,有時候妳需要冰霜新星後立刻閃現開,妳沒法同時做到這些事情,現在妳可以設定壹個序列去做!
/castsequence 冰霜新星, 閃現
就這麽簡單,第壹次妳按這個宏,妳施放冰霜新星,再按壹次,閃現。
“那如果冰霜新星在冷卻中怎麽辦?它會直接施放閃現麽?還是不施放冰霜新星,等第二次按這個宏的時候,再施放閃現?”
都不是。如果法術無法施放(冷卻,超出距離,法力不足等等情況下),序列就不會走到下壹個法術,下壹次妳再點這個宏的時候,它會再度嘗試施放冰霜新星。(抵抗,躲閃,招架等並不會算作無法施放,這些情況下法術/技能確實施放了,只不過沒有命中。)
“如果我沒有處於戰鬥中怎麽辦?我不想在非戰鬥情況下浪費壹個冰霜新星。”
妳可以把之前所有的宏條件選項應用於此(可惜的是,只能應用於整個序列,而不能為每個法術單獨設定)。
“呃,其實剛才我只是隨便說說,OK,那如果我在冰霜新星後不想閃現了怎麽辦?下壹次我想施放冰霜新星時,它會不會還是停滯在施放閃現的設定上?”
這完全沒問題,我們會用到重置這個設定。因為冰霜新星壹般的冷卻時間為24秒,我們可以設定序列在24秒內不被使用就重置它。
/castsequence reset=24 冰霜新星, 閃現
當妳第壹次點擊這個宏時,它會施放冰霜新星,如果妳決定不閃現了,等過了24秒後,它會重置到冰霜新星的狀態,因為冰霜新星的冷卻時間為24秒,那時候它就可以被重新使用了,真棒!
“好吧,這真的很厲害,不過我實際上是個術士啊。”
當然,作為壹個術士,我相信妳會壹直重復上三種DoT,現在妳可以為它們設置壹個序列以節省按鈕空間啦。
/castsequence 腐蝕, 獻祭, 痛苦詛咒
就這麽簡單,妳可以連續點擊三次這個宏來上這三種DoT。
“但如果在我施放完這些前目標就死了呢?我又卡在這個序列裏了,我可不想設什麽定時器!”
那也沒關系,我們可以用其他的條件選項。如果妳設定“reset=target”,那序列將在妳改變目標時就重置到起始位置。妳也可以設置“reset=combat”,每當妳脫離戰鬥,這個序列就會被重置了。如果妳使用“/”控制符(妳還記得吧,之前提到過),妳也可以將這些重置條件選項組合起來!
/castsequence reset=combat/target 腐蝕, 獻祭, 痛苦詛咒
就這全了,這下子每當妳改變目標(比如原來的目標快死了,妳選中的新的目標)或脫離了戰鬥(可能目標在妳施放完所有DoT前就死了),它將會把整個序列重置,讓妳可以從頭開始。
“OK,真棒,我想我現在弄明白了!給我點時間設置新的宏....搞定!”
好極了,我很高興能幫上忙。
“那...來決鬥壹盤吧?”
呃,不了,我從不和術士決鬥。
“切,膽小鬼。”舉例說明
壹些宏的例子:
通用宏:
---------------
/use [target=self] 厚虛空布繃帶
無論當前目標是什麽,這個宏只會對自己使用厚虛空布繃帶。
戰士宏
---------------
攔截/沖鋒:攔截或者沖鋒,或者切換到相應的姿態。
/施放 [nocombat, stance:1] 沖鋒; [combat, nostance:3] 狂暴姿態; [nocombat, nostance:1] 戰鬥姿態; [combat, stance:3] 攔截
壹般姿態宏:把<* Stance Ability>替換為任何妳想要的技能
/施放 [stance:1] <Battle Stance Ability>; [stance:2] <Defense Stance Ability>; [stance:3] <Berserker Stance Ability>
壓制:壹個很簡單的壓制宏
/施放 [stance:1] 壓制; 戰鬥姿態
法師宏
---------------
炎爆/火球:如果沒有處於戰鬥則施放炎爆術(作為起手),否則就施放火球術
/施放 [nocombat] 炎爆術; 火球術
鎖定變羊:總是將妳鎖定的目標變形
/施放 [target=focus] 變形術
牧師宏
---------------
向當前目標的目標施放強效治療術,否則向當前目標施放
/施放 [target=targettarget, help] 強效治療術; [help] 強效治療術
獵人宏
---------------
根據是否在戰鬥中餵養或治療寵物
/施放 [combat] 治療寵物; [nocombat] 餵養寵物
/使用 [nocombat] <食物>