World of Warcraft Wiki

考格威爾(Cogwheel's)宏命令完全指南

基本宏命令[]

什麼是宏?[]

宏是由一組宏命令組成的。以下是一些普通宏命令:

  • /say (/s)
  • /whisper(/w, /talk, /t)
  • /emote(/e, /em, /me)
  • /dance
  • 喜愛PVP的人,應該不會忘了這個:/spit

利用宏,我們可以把這些宏命令放到技能欄上點擊使用,而且可以同時做多個動作。寫宏的時候,每條動作寫在一行上,就像在聊天界面中輸入的一樣。比如,讓你的角色喊一聲「Everybody, dance now!」然後開始跳舞的宏:

/y Everybody, dance now!
/dance

一個基本完整的宏命令列表可以參考這裏:《宏命令全表》,不過個別新添加的宏命令還沒有被收錄。WoWWiki有很多關於宏的資料,尤其是腳本和/run命令(後面將會提到)。 註:我先在此說一下,宏的執行是立即進行的。這意味着當你點擊技能欄上的一個宏時,宏命令會一條接一條地執行,執行完後才會返回遊戲控制。這將會產生兩個重要問題:第一,如果寫了一個會執行很長時間的宏(如:/run for i=1, 1000000000 do end),遊戲會被卡死,直到它執行結束;第二,也是更重要的一點,那就是宏命令不可能具有延時功能。這一現象在我們熟悉/cast之類的命令後就可以很清楚地感覺到。而一些提供了延時執行命令功能的插件,只能是能執行一些所謂的「良性命令」,如交談、表情和對於其他插件命令的調用(不過戰鬥中更換武器是可以進行的)。

怎樣寫宏?[]

首先,打開你的宏窗口:單擊主菜單上的「宏」按鈕,或者在聊天界面中輸入/macro(/m)回車。在宏窗口的頂端,可以看見兩個標籤:「通用宏」和「<你的角色名>的專用宏」。通用宏被存儲在賬號專有的文件夾中,被所有角色共享。而角色專用宏則存儲在角色自己的文件夾下,是角色專用的(廢話……囧)。在標籤下面是18個存放宏的欄位。再往下是一個欄位,用於顯示當前選中的宏;還有一個「修改名稱/圖標」的按鈕,用於修改選中的宏。然後是一個用於顯示、編輯當前宏的文本框。最下面是三個按鈕,傻子也能看出它們是幹什麼的。 如果要創建一個宏,首先單擊窗口下方的「新建」按鈕,這時窗口旁邊會顯示一個對話框,用於選擇圖標和輸入宏的名稱。如果選擇了第一個圖標(就是那個很紅很暴力的問號),WoW會自動根據你宏命令中涉及的技能或物品選擇圖標。選好圖標,輸入完名稱,就可以單擊「確定」按鈕了。 順便提幾點:1.使用問號圖標的宏,可以通過使用#show指定顯示的圖標。2.雖然可以給不同的宏起相同的名字,但是最好不要這樣做。因為有些插件和宏命令是通過宏名稱來調用宏的。3.在圖標列表中可以添加自定義的圖標。 現在,你選擇的宏圖標被顯示在欄位中了(還會顯示部分宏名稱)。同時,新建的宏被選中,圖標顯示在當前選中宏的欄位中:現在你可以寫你的宏了。單擊編輯文本框,然後輸入吧。 註:宏限定為255個字符,傳聞這樣做是為了以後可以把用戶的宏上傳到伺服器中。不過……現在能做的就是遵循這個限定,至於想要把宏移植到其他機器上使用,請參見第三部分的宏的移植。 寫完宏以後,只要把它的圖標拖放到技能欄中就可以了。當你執行一個宏,或者是關閉宏窗口的時候,宏都會自動保存的。現在點擊宏的圖標,看看效果吧!

施放法術[]

在正常遊戲過程中,很多宏命令通過聊天窗口輸入使用似乎並不好用,但是在宏中就不一樣了。在特定場合下,簡簡單單的表情宏也可以產生有趣的角色扮演效果哦,那麼,繼續看…… 這個:/cast,它是最常見的宏命令了。作用嘛,就是施放一個技能書中的技能(包括寵物的)。最簡單的用法就是這樣:

/cast 暗言术:痛

把這個宏放到技能欄上點擊,將會對目標施放你最高級的痛。這和把技能書中的痛拖到技能欄上,然後點擊的效果是一樣的。我們製作的宏同樣會在技能欄顯示你的技能冷卻狀態和射程狀態,點擊後同樣能正確的施放痛。如果宏使用了問號圖標,那麼還同樣會顯示痛原有的圖標。 那直接用技能不就行了麼,何必用宏呢?繼續看,在宏中通過集成多條命令可以產生什麼效果吧,這才是宏的價值所在。比如說你是個法師,想讓隊友知道你要羊掉誰,你該怎麼辦?用宏吧,一個簡單的/p命令加上一個/cast就可以了(使用這個無恥的插件可以達到更好的效果:CCWarn,不過我們現在需要的只是這個簡單易懂的教學例子):

/cast 变形术
/p 我羊了%t!谁打谁扛着哈!

註:由於宏的執行是立即進行的,所以不管目標是否有效技能是否冷卻,宏被點擊時/p命令就執行了,也就是說這兩行命令的順序顛倒後效果是相同的。如果你想在確定成功施放一個技能後才執行某條命令,你可以試試這個插件:AfterCast。AfterCast可以設定在施放某個技能後執行一條宏命令,當然,是在第1節末尾所提到的限制之下的。如:

/aftercast /p 请队友点门,把懒猪%t揪过来!
/cast 召唤仪式

關於技能名稱和等級的說明[]

/cast命令對技能名稱是十分嚴格的,文字、標點、空格,一個都不能錯。為了防止出錯,編輯宏時,你可以打開你的技能書,按下Shift然後單擊你的技能圖標,技能名稱和等級就會被正確地輸入到你的宏編輯文本框中,如:

/cast 暗言术:痛(等级 5)

如果把「(等級5)」刪掉,宏在執行時就會自動選擇你最高級別的技能執行;不過在很多場合下,還是需要指定級別的技能,比如術士放逐就需要根據時間來選擇技能。另外要注意,等級指示中使用的括號是英文的半角括號,等級與數字間有一個半角空格。而一些技能名稱中的括號,比如「精靈之火(野性)」中的括號,是中文的全形括號。以下宏命令不能正常執行:

/cast 精灵之火(野性)
/cast 精灵之火(野性)(等级 1)

而以下的命令是正確的:

/cast 精灵之火(野性)
/cast 精灵之火(野性)()

空的括號效果和沒有括號是一樣的。由於255字符限制的存在,空間還是要節省的,所以空括號可以刪掉了……

使用物品或者飾品[]

使用物品和飾品和施放法術是類似的。用於使用物品的命令是/use,後面只需要加上物品的名字就可以了。例如:

/use 绿色机械陆行鸟

另外,還有以下其它的使用格式:

/use <裝備欄>[]

這種格式可以使用指定裝備欄中的物品。具體使用請參見《裝備欄編號方式》。例如:

/use 13

使用第一個飾品。11

/use <背包> <欄>[]

這種形式是在指定背包中確定物品欄的,比如你總是把貓食狗糧放在行囊的第一個欄位中,那麼你就可以用這樣的宏來餵養寵物:

/cast 喂养宠物
/use 0 1

背包的編號為0-4,順序是從右到左,即0是行囊。物品欄則是從上到下從左到右,從1開始依次編號的(與書寫順序相同):

1	2	3	4
5	6	7	8
……

或者是:

		1	2
3	4	5	6
7	8	9	10
……

如果怕把/cast和/use的用法混淆了,那就徹底搞混吧,因為它們其實本來就是完全一樣。/cast可以使用物品,而/use也可以施放技能。這一點在目前看來似乎沒有什麼,但是到後面,介紹命令條件語和施法隊列時,你會發現能把物品和技能混合在同一條命令中是多麼爽的一件事。

集成多個動作[]

首先,在一個宏中想一鍵釋放多個法術是不行的。大多數技能和很多物品會觸發公共冷卻(GCD),防止你同時做太多的動作。即使一個技能釋放失敗,如果它可以觸發GCD,那麼它也會阻止後續/cast命令的執行。這是2.0版本之後的設定,之前可能看到這樣的宏:

/cast 压制
/cast 斩杀
/cast 致死打击
/cast 破甲

但是現在,記住,這種宏已經不能正常執行了。如果壓制施放失敗,雖然沒有觸發GCD,客戶端也不會繼續執行後續的技能施放。不過令人欣慰的是部分技能還是可以集成到一個宏中。任何不觸發GCD的瞬發技能後面可以接上另一個技能(「下次近戰攻擊」型的技能,如英勇打擊也歸於此類)。一個技能可以通過看說明知道它是否瞬發,至於是它是否觸發GCD通過實驗就可以知道。 2.3版本之前,在這個瞬發無GCD技能之後需要加上一個/stopcasting才可以施放其後的技能。施放第一個技能後,遊戲客戶端會認為當前在施法狀態,而/stopcasting就可以解除這個狀態,就可以解決後續技能不能釋放的問題。但是由於技能是瞬發,/stopcasting實際上並不能取消技能的施放。 而現在這裏可以不用/stopcasting了,例如:

/use 短暂能量护符
/cast 奥术强化
//stopcasting
/cast 气定神闲
//stopcasting
/cast 炎爆术

選擇目標[]

選擇目標是宏的另一個主要作用。此類功能可以用專門的目標選擇命令實現,改變當前的目標;也可以在一些命令中用[target=]命令條件語實現,臨時指定施法或使用物品的目標,而不改變當前目標。命令條件語在第二部分將會講到到。現在我先介紹目標選擇命令。 最基本的命令是/target,用法如下:

/target Cogwheel

/target的選擇是經過最佳相近匹配的,也就是說,如果我正站在你附近(並且附近沒有誰叫Cog的),你執行/target Cog,我就會變成你的當前目標。至於這種機制是利是弊……那就取決於實際情況了,因為這個東東貌似不穩定,有時會得到莫名其妙的結果。比如下面這個宏就可能不是很好用:

/target 黑翼法师
/cast 痛苦诅咒

如果附近沒有黑翼法師呢?或許結果就是:選中了團里的某個人,因為他的名字在某種意義上比較相近。雖然你的詛咒不會真對他們放出來,但還是夠囧的。另外一個問題是,它可能會選擇你身後一個離你100碼的單位——根本不是你想選中的那一個……不過在2.3版之後,增加了一個/targetexact命令,第一個問題得到解決了。 除了用人名進行選擇之外,還可以通過單位標識符進行選擇。單位標識符(Unit ID)是用於標識特定單位的字符串。比如你的當前的目標就可以用「target」來表示,而你自己對應的標識符是「player」,如果你有寵物,那麼它的標識符是「pet」。另外,通過在一個正確的標識符後加上target,就可以獲取他的目標。如此變態也可以:

/target targettargettargettargettargettarget

這裏是一個可用ID的全表:《單位標識符》。

其他選擇命令[]

以下是其他的目標選擇命令:

  • /assist

不加任何其他參數時效果是選擇你目標的目標,如果在其後加上人物名稱,那麼就會選擇對應人物的當前目標。例如:

/assist Cogwheel

另外,在客戶端的界面選項中有一個選項,可以設置用/assist選中一個敵對目標時是否自動進行攻擊。

  • /cleartarget

清除當前目標。

  • /targetexact

準確選擇,如果附近沒有單位的名字和給出的參數完全匹配,就不會切換目標。

  • /targetlasttarget, /targetlastfriend 和 /targetlastenemy

顧名思義,分別用來選擇上一個目標、上一個友方目標和上一個敵對目標。如果你之前沒有過任何目標,那麼這些命令不會產生任何影響。

  • /targetenemy 和 /targetfriend

選擇敵方目標和選擇友方目標。這兩條命令是按一定順序循環選擇指定類型的目標的,和使用Tab鍵的效果類似。如果在命令後加上一個1作為參數,那麼就會按循環的反方向進行選擇。例如:

/targetenemy 1

效果就和按下Shift+Tab鍵一樣。 註:這兩個宏命令每個宏中只能用一次。

  • /targetparty 和 /targetraid

按距離循環選擇你附近的小隊或團隊隊友,與/targetenemy類似,也可以用1作為參數改變選擇的循環方向。

控制寵物[]

之前在講施放技能的時候提到過,使用/cast命令可以施放寵物的技能。玻璃渣把法師的水寶寶的霜星起名叫「冰凍術」就是為了避免和法師自身的「冰霜新星」技能衝突,從而導致不能在宏內使用。但是有寵物的職業會發現,如果宏只能施放技能的話,甚至還不如寵物技能欄的功能。別急,燃燒的遠征中,新增了以下這些宏指令:

/petattack[]

讓你的寵物去攻擊你的當前目標。當然,在命令後加參數可以指定攻擊的對象。

/petfollow[]

寵物切換到跟隨狀態,同時取消攻擊。

/petpassive, /petdefensive 和 /petaggressive[]

寵物切換被動、防禦和主動攻擊狀態。同寵物技能欄上的最後3個按鈕。

/petautocaston 和 /petautocastoff[]

打開/關閉寵物技能的自動施放。例如:

/petautocaston 折磨
/petautocastoff 受难

不過美中不足,沒有直接切換自動施放狀態的宏命令,我將在後面「模擬點擊」部分提到一個解決方法。

宏在動作欄的顯示控制[]

如果一個宏使用問號圖標,魔獸世界客戶端會默認把宏內容中的第一個技能或物品的圖標、冷卻狀態等信息顯示在技能欄上。比如前面所講的這個例子:

/use 短暂能量护符
/cast 奥术强化
/cast 气定神闲
/cast 炎爆术

客戶端會把奧術強化的狀態信息作為宏的狀態顯示。但是這恐怕不是我們所希望的,因為這個宏的目的是炎爆,前幾行的奧強氣定都只是為了最後把一個大大的臉盆給丟出來。如果在宏的前面加上這樣一行,炎爆術就會被當作宏的默認技能:

#show 炎爆术

如果使用了問號圖標的話,宏還會直接顯示炎爆的圖標。#show的參數機制和/cast類似,可以使用技能名、物品名、物品編號(如item:12345)、裝備欄或者背包+物品欄編號。 和#item類似的還有#showtooltip。正常情況下,鼠標指向宏的時候,提示信息顯示的是宏的名字。而這在絕大多數情況下是很不好用的(除非你用了TheoryCraft之類的插件可以顯示詳細的技能信息)。而用#showtooltip就可以指定宏在鼠標指向時顯示的信息,用法同#show。另外,如果使用了#showtooltip的話,就沒必要再用#show了。 如果客戶端自動選擇的技能符合你的要求,那麼可以只用#showtooltip而不加參數來顯示該技能的說明,這樣可以節約空間。 請注意:#show和#showtooltip與/開頭的宏命令不同,是大小寫敏感的,也就是說只能用小寫字母。

其他的命令[]

現在有了足夠的基礎,以下這些命令我就只簡要地講解一下了。有些命令看似沒啥用,但如果配合將在第二部分介紹的命令條件語,它將會產生驚人的效果。

裝備物品[]

用於裝備物品的命令有兩個:/equip和/equipslot。/equip的參數為物品名稱,效果是把對應物品裝備到默認的裝備欄中,類似在背包中右鍵單擊物品(如:一件單手武器就會被裝備到主手上)。而/equipslot的參數為裝備欄編號和物品名稱,效果是把物品裝備到指定欄位中去。例: 裝備武器:

/equip 虚空角斧

把飾品裝備在第二個飾品欄中:

/equip 14 棍子上的胡萝卜

注意:即使是在戰鬥中,插件頁是可以直接使用裝備命令的。因此在AfterCast和Chronos中可以使用裝備命令。如果插件內部會檢查命令是否經過安全化可能就不那麼好用了,因為它屬於「安全化」指令——但是事實上它並沒有受到安全限制。

隊列施法或使用物品[]

很多時候我們需要經常按一定順序使用固定的一些技能或物品。這樣的操作是可用/castsequence宏命令進行傻瓜化的。/castsequence命令用法是在後面寫上一些技能或物品的名稱,之間用英文的半角逗號分隔,和/use、/cast類似。技能名、物品名、物品代號、裝備欄代號和背包位代號都可以混合使用。每次執行宏,就使用當前的技能或物品(從第一個開始),如果成功,隊列的當前位置就被移至下一個技能或物品。也就是說需要反覆執行宏來按順序使用這些技能或物品。當最後一個技能/物品成功使用後,這個隊列就被重置到開頭。比如:

/castsequence 献祭, 腐蚀术, 痛苦诅咒, 生命通道

這是痛苦術士起手的招牌動作。注意,如果獻祭沒有施放成功(比如魔法不足,超出範圍,被沉默了等等),這個隊列不會繼續執行,直到獻祭放出去。所以下面這個宏是屁用沒有的:

/castsequence 压制, 斩杀, 致死打击

在技能列表之前,可以插入一個條件語,用於另外指定一些隊列的重置條件。語法是:

reset=n/target/combat/shift/alt/ctrl

以上的這些條件都可以任意共存。其中,n是數字,表示從某次執行宏開始,經過n秒後沒有再次執行這個宏,那麼隊列就被重置到開頭。這一點很重要,因為這意味着無法利用reset條件語來精確計時(比如讓某技能一冷卻就用)。target條件表示當目標切換時,宏隊列重置;combat條件表示脫離戰鬥後重置;shift,alt和ctrl表示當執行宏時指定的鍵為按下狀態時重置。例如:

/castsequence reset=10/shift 第一个技能, 其他技能, 一些物品

如果這個宏圖標使用的是問號,就會自動顯示下一個要施放技能的圖標。但如果/castsequence前面還有其他/cast和/uses命令,這個功能就沒有了,而且玻璃渣也沒有提供什麼命令來解決這個問題。

隨機施法或使用物品[]

最常見的例子就是希望隨機召喚一個坐騎來裝B,使用/castrandom或者/userandom宏命令很容易實現這個功能。用法和/castsequence類似,如:

/castrandom 迅捷绿色机械路行鸟, 军用黑色机械路行鸟, 召唤恐惧战马

攻擊[]

以前的宏是/attack,後面可以寫上單位名作為攻擊對象,無參數則以當前目標為對象。效果是切換當前的攻擊狀態(攻擊/停止攻擊)。但是這個宏從2.2.3開始就被廢除了,只能使用/startattack和/stopattack了。分別用來攻擊和停止攻擊。如:

/startattack Cogwheel

技能欄控制[]

有兩個控制技能欄翻頁的宏:/changeactionbar和/swapactionbar。前者接受一個數字作為參數,表示要切換到的技能欄頁碼。常見的是獵人用來轉換近戰遠程攻擊狀態:

/cast 雄鹰守护
/changeactionbar 1

/cast 灵猴守护
/changeactionbar 2

/swapactionbar命令後面要寫兩個頁碼,表示來回切換指定的兩個技能頁。如果當前技能頁不是兩個頁碼中的一個,當前頁就會被設置為第一個頁碼指定的技能欄頁。

/swapactionbar 1 2

移除增益效果[]

/cancelaura命令可以移除自己不想要的增益效果(BUFF),比如主坦需要移除身上的拯救祝福:

/cancelaura 拯救祝福

退出形態[]

除了戰士,任何有「形態」概念的職業(德魯伊、暗牧)都可以用/cancelform來退出當前形態:

/cancelform
/use 超强治疗药水

2.3版本之前,上面這個宏由於形態取消有一個延遲,為了達到效果需要執行兩次。不過2.3版本後,小德可以只點一次就產生效果了。

中止施法[]

前面簡單提到了/stopcasting命令,不過它存在的目的顧名思義,是用來打斷當前施法的。這對處理緊急情況很有用,比如我的術士:

/stopcasting
/cast 暗影灼烧

終止一個宏:/stopmacro[]

/stopmacro如果不配合條件語來使用是沒有什麼意義的。它一般用來實現條件執行的功能:如果滿足了某些條件,則中止宏繼續運行。具體用例請參見設置焦點(focus)。

解散坐騎[]

/dismount

不用再說什麼了吧?

保存一個目標用於後續動作[]

/focus宏可以把一個目標設為焦點(focus),然後可以在其他指令中使用這個focus。比如你的老大指定了一個目標讓你羊着。你要做的就是選擇它,然後輸入/focus。然後你就可以用這個宏羊着它了,而不用管你當前目標變成了誰:

/cast [target=focus] 变形术

注意,focus的作用可不僅僅如此,具體還是請參見設置焦點(focus)一節的內容,那裏有更深入的剖析。

模擬點擊[]

/click命令的參數為一個按鈕(本質上來說是一個窗口)的名稱,執行的效果就相當於用鼠標點擊了這個按鈕。默認情況下,它的效果相當於左鍵單擊,也可以根據設置成其他按鍵點擊的效果。至於按鈕名稱可以通過一下方式獲知:

  • 使用插件。某些插件,比如MoveAnything,提供了查看窗口名稱的功能。
  • 查看界面的原始碼。這一般是非常嫻熟非常牛B的插件製作者才能做到的。
  • 用這樣一個宏獲取當前鼠標所指的窗口名稱:
/run local f=GetMouseFocus(); if f then DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) end

/click可以用於很多用途。比如利用它可以一次執行很多宏。還有,假設你有一個宏太長了,遠遠超過255字符限制。你就可以把後面寫不下的代碼寫到另一個宏中,而前面那個宏的末尾寫上:

/click MultiBarRightButton1

再把第二個宏拖到那個叫MultiBarRightButton1的欄位中。這樣執行第一個宏就相當於執行了所有的宏命令。 另外,這個宏還可以用來做一些其他命令沒法辦到的事。比如前面提到的切換寵物技能自動施放狀態的功能,就可以這樣解決:

/click PetAttackButton5 RightButton

這個命令的涵義就是右鍵單擊一下寵物欄上第五個按鈕。 用於指定按鍵的參數還可以是LeftButton(左鍵,默認),MiddleButton(中鍵),Button4(4號鍵)和Button5(5號鍵,職業玩家的鼠標……)。在掌握這些之後,第二部分結尾處還會介紹更複雜的,利用/click產生分支判定效果的例子。

進階:腳本[]

腳本有哪些限制?[]

腳本是一個強大的工具,它按照LUA語言的語法執行,利用客戶端提供的接口可以產生強大的智能。所以玻璃渣就給它加了限制,防止它被濫用而影響遊戲平衡性。我之所以要先講腳本的限制,為的是讓大家對它別抱太大希望。雖然腳本還是很有用,但是不能用來施法、使用物品、改換技能欄或改變當前目標。這些功能只能依靠那些「安全化」的命令來實現。

什麼是腳本?[]

魔獸世界客戶端的用戶界面是可以通過LUA腳本控制的。通過/run和/script命令就可以執行腳本(我個人推薦使用/run,節省字符數……)。在命令後面書寫腳本內容,中間不能換行。不過一個宏中可以包含多個/run命令。 過多關於LUA語言和編程的內容本文就不再贅述。如果你有一定的編程經驗,那麼就可以訪問lua.org學習LUA語言。如果沒有什麼基礎,那麼請先看《編程入門》了解一些基本概念。 玻璃渣提供了很多API函數(Application Programming Interface),可以在LUA腳本中調用來實現對界面的控制。關於API函數和相關的內容可以看看這篇文章:《界面DIY》(如果你打算花時間好好研究魔獸世界插件的話,WoWWiki是最優選擇)。我不可能把所有關於用戶界面的細節都講到,因此我只打算用我最常用的一個宏做例子,簡單地講一下。想了解得可以看上面給出的連結,或者這裏:《Mod Author Resources sticky》。 下面這個宏是我給出的例子,它會向所有和你目標相同的人發送悄悄話,通知他們改變目標(我的插件CCWarn也是就是基於這段代碼的)。這樣就可以防止已被羊的人受到攻擊。

/cast 变形术
/run for i=1,GetNumRaidMembers()-1 do local u,t="raid"..i,"target"if UnitIsUnit(u..t,t)then SendChatMessage("Change targets! Trying to sheep...","WHISPER",nil,UnitName(u))end end

呃……貌似看起來有些亂……不過沒辦法……首先,宏是有255字符數限制的,所以常常要用一些不美觀的方式去寫代碼。其次,腳本要寫在一行中。這兩個條件導致代碼的可讀性很低。如果把代碼單獨拿出來美化一下的話,應該是這個樣子:

for i = 1, GetNumRaidMembers() - 1 do
  local unit = "raid"..i
  if UnitIsUnit(unit.."target", "target") then
SendChatMessage("Change targets! Trying to sheep...", "WHISPER", nil, UnitName(unit))
  end
end

命令條件語[]

什麼是命令條件語?[]

命令條件語是插入在宏命令中,使宏根據條件執行不同功能的語句。舉個例子,下面這個宏的作用是,如果是友方目標就施放恢復,如果是敵方目標就上痛:

/cast [help] 恢复; [harm] 暗言术:痛

當這個宏執行時,首先檢查[help]條件,判斷當前目標是否是一個可以接受治療/增益法術的目標。如果[help]條件成立,那麼就施放恢復並執行下一條命令,否則(即沒有目標,或目標不接受有益技能)繼續執行下一個子句,也就是分號後[harm]那裏,再判斷[harm]條件。[harm]條件和[help]條件相反,判斷目標是否接受敵對法術。同上,如果條件成立就釋放「暗言術:痛」並執行下一條命令。如果條件不成立,由於後面沒有其他子句,這條宏命令就算執行完了,但是什麼動作都沒有做。 註:如果沒有寫[harm]條件,實際運行效果是差不多的。不過,如果你沒有目標或者當前目標不接受任何法術,那麼屏幕上將會出現錯誤信息,或者對於某些技能,鼠標將會變成選擇施放目標的狀態。

可以使用條件語的命令[]

只有那些「安全化」命令可以接受命令條件語。其實正是經過安全化的命令才需要條件語。常規命令,比如說聊天、表情之類的,可以通過腳本來實現命令條件語的功能。而且暴雪不想限制大家在聊天時使用分號(;)。如果/s命令可以使用命令條件語的話,那麼下面這個命令就會只說hello:

/say Hello; I’m a n00b

以下是當前客戶端中安全化命令的列表:

    1. show[1]
    2. showtooltip[1]
  • /assist
  • /cancelaura
  • /cancelform
  • /cast
  • /castrandom
  • /castsequence
  • /changeactionbar
  • /clearfocus
  • /cleartarget
  • /click
  • /dismount
  • /equip[2]
  • /equipslot[2]
  • /focus
  • /petagressive
  • /petattack
  • /petautocastoff
  • /petautocaston
  • /petdefensive
  • /petfollow
  • /petpassive
  • /petstay
  • /startattack
  • /stopattack
  • /stopcasting
  • /stopmacro
  • /swapactionbar
  • /target
  • /targetenemy
  • /targetfriend
  • /targetlasttarget
  • /targetparty
  • /targetraid
  • /use
  • /userandom

[#1]:#show和#showtooltip不是真正意義上的安全化命令,但是它和/use以及/cast的內部機制相仿。 [#2]:/equip和/equipslot邏輯上也不算是安全化命令,因為它們的功能是可以通過插件和腳本實現的。 當然,如果你希望在常規命令中使用命令條件語,就需要安裝專門的插件。MacroTalk,這是我的一個作品,通過在非安全化命令前添加/opt,然後在/opt中處理各類條件來實現對不同命令的調用(當然只能是非安全化命令)。最新版的SuperMacro中應該也有類似的功能。

[target=]條件語[]

該條件語使得宏命令除了可以對條件進行判斷外,還可以設置動作的目標。例如,下面這個宏運行時,無論當前目標是誰,玩家只會給自己綁繃帶:

/use [target=player] 厚灵纹绷带

Target條件語在指定動作目標的同時,也指定了進行條件判斷的目標。下面這個垃圾宏是一個純教學例子,看我的說明:

/cast [help] [target=targettarget, help] [target=player] 快速治疗

這個宏運行的時候,首先會檢查[help]條件。如果條件為真,那麼就開始吟唱快速治療。否則就跳至第二個條件,[target=targettarget, help]。此時,判斷目標和技能目標都被設定為你當前目標的目標,然後進行help條件判斷。如果條件成立就對你當前目標的目標施放快速治療,否則再跳至第三個條件。而第三個條件總是成立的,所做的只是把你自己當作施法目標。

語法[]

命令條件語是按什麼規則生效的?恐怕要回答這個問題很容易引起混亂。所以,趁還沒有正式開始講,我先用一些現實生活的例子做類比。看不懂不要緊,這只是些概念,技術性的內容後面都還會再提到的。

條件語語法簡介[]

所有的宏命令的基本工作方式是相同的:一個命令,後面帶上一個或多個參數(取決於命令的要求,有些甚至不需要任何參數)。看下面這些例子:

/cast 猛击
\___/ \___/
  |    |
  |  参数
  |
命令

/petattack
\_______/  \/
    |      |
    |   参数(为空)
    |
  命令

/castsequence reset=target 献祭, 腐蚀术, 痛苦诅咒, 生命虹吸
\_________/  \_______________________________________/
      |                        |
    命令                    参数

而命令條件語可以通過對一組條件進行的判斷來選擇命令的實際參數。首先,可以用分號分隔出若干個「若干組條件+參數」這樣的子句,邏輯上,分號就相當於高級語言中的else或是elseif。條件的組數不定,也可以沒有,同一組條件用一個方括號括在一起。而每組條件中有可以包含多個條件。就像這樣:

/命令 [一组条件] [另一组条件] 参数1; [又一组条件] 参数2; ……

前面的例子已經說明了,宏命令的解釋過程是從左至右的。當一組條件被判定成立時,命令就會採用其對應的條件。如果某一個子句中不包含條件,那麼就被無條件判定為成立。像/cast XXX這種簡單的宏命令就可以理解為一個只有一個子句的宏,而這個子句又不包含條件。而如果一個宏的任何一組條件都不為真,那麼它就完全不會執行。

條件語法[]

每組條件都是由逗號分隔的一些條件語組成的,各條件不分前後次序。邏輯上,[target=]總是先發生作用,然後其他的條件才進行判定。逗號在這裏可以理解為「並且」,也就是說各條件簡是邏輯「與」的關係。比如[help, nodead, target=focus]的含義就是:我的焦點是友善的,並且是只活的。 注意:條件是對大小寫敏感的,如果你把[help]寫成了[Help],宏運行時會報錯。 條件中有組合式的使用方式,比如nodead,同樣對於help,你可以用nohelp表示相反的條件。但是nohelp不等於harm:首先,help和harm都要求目標存在才有可能成立;其次,有些目標,比如中立陣營NPC、非戰鬥寵物或者護送任務NPC等,既不算help,也不算harm。 還有些條件可以指定一些特定的參數。比如[stance],姿態,單獨使用時表示「在任一姿態中」(顯然這對戰士來說是廢話一句)。如果給它加上參數,就可以指定在某個姿態下,格式是在條件語後寫上冒號(:),然後後面寫上參數,每個參數間用斜線(/)分隔。綜上所述,一個條件語的完整格式如下(<>表示其中的部分是可選的):

[<no>condition<:parameter</parameter</parameter<…>>>>]

下面舉個例子,如果在戰鬥或防禦姿態施放盾擊,否則轉入防禦姿態:

/cast [stance:1/2] 盾击; 防御姿态

這個宏用偽代碼寫的話就是:

IF 当前在姿态1或姿态2
 THEN 用盾击
 ELSE 切换防御姿态

注意:「no」前綴是對整個條件和所有參數的修飾,即把原來的真變為假,假變為真。比如[nostance:1/2]表示「不在姿態1也不在姿態2中」。

完整的EBNF語法[]

對EBNF規範很熟悉的人,以上內容可以概括為:

command = "/", command-verb, [ {command-object, ";" } command-object] ]
command-verb = ? any secure command word ?
command-object = { condition } parameters
parameters = ? anything which may be passed to the command word ?
condition = "[" condition-phrase { "," condition-phrase } "]"
condition-phrase = [ "no" ], option-word, [ ":" option-argument { "/" option-argument } ]
option-argument = ? any one-word option, such as 'shift, 'ctrl', 'target', '1', '2' ?

參數為空[]

有些命令是可以沒有參數的,這裏就存在着一個陷阱。比如:

/petattack [target=focus, harm];

很多初學者一看,認為這個宏的含義應該就是判斷焦點是否為敵對,如果是,就把寵物送上去咬。而實際上呢?讓我們分析一下:

/petattack [target=focus, harm]  ;
\________/ \______________/ V  V  V
    |             |        |   |   |
  命令        条件语1    |   |  参数2 (为空)
                          |   |
                          |  条件语2(为空)
                          |
                        参数1 (为空)

現在看出來了吧?由於那個分號的存在,這個語句實際上包含兩個子句,而一個條件語為空的子句是被當作條件成立處理的,因此即使前面的條件語1不成立,也會執行一個/petattack。

條件為空[]

有時我們需要在特定條件下對特定目標施放技能,並在條件不成立的情況下按常規施放。這中效果可以通過使用一組空條件來獲得。下面例子中的宏在執行時會對你鼠標指向的友方單位施放聖光閃現。如果鼠標沒有指向任何單位或者指向的目標不是友善的,那麼就會按常規對當前目標施放,或者根據設置(如自動自我施法、自我施法功能鍵)對自己施放。

/cast [target=mouseover, help] [ ] 圣光闪现

[target=]條件語與命令參數[]

很多命令的參數是可以直接指定目標的。比如/target party1就可以把小隊中第一個隊友作為你的目標。而用/target [target=party1]的話,雖然看起來彆扭,但是效果也是一樣的。但是宏的設計者不希望我們根據一個單位的狀態而對另一個單位執行動作,因此大多數情況下[target=]條件和命令參數只能有一個發生作用。例如:

/target [target=focus, dead] party1

客戶端會把party1直接忽略掉——因為你已經指定了[target=focus]。不過這種情況也有例外,就是個別命令擁有一個「特殊單位」(其實也就是該命令會影響的單位標誌符)。見下表:

命令			特殊单位
/target		target
/focus		focus
/startattack		target
/petattack		pettarget

當在[target=]中使用的是該命令的「特殊單位」時,命令執行目標不會被設置為該單位,而命令參數中指定的目標也不會被忽略。例如

/focus [target=focus, dead] [target=focus, noharm] target

由於focus是/focus命令的特殊單位,所以/focus的目標就不會被[target=focus]設置成焦點,而是target,即當前目標。如果沒有指定target,/focus就相當於沒有參數,同樣是把當前目標設為焦點。

命令條件語[]

下面給出一張條件總表,每一個條件在後面我都會再給出更詳細的介紹。

總表[]

WOW2.0在對宏命令系統的更新中,宗旨就是把玩家從按「一鍵萬能宏」按到手抽筋的狀態中「解脫」出來。不過有一些宏的用法是被官方認可了的,它們獲得了「玻璃渣祝福」的效果——可以通過使用條件語來重現。 下面列出宏命令系統中支持的所有條件語。如果你需要的判斷條件沒有在此列出,那麼就不可能通過該條件來執行安全化命令的動作。這是中央的死龜腚,誰都沒辦法,不過以後也有可能會再增加一些。

  • help 目標可以接受增益法術
  • harm 目標可以受到攻擊
  • exists 目標存在
  • dead 目標已經掛了
  • stance:0/1/2../n 玩家在某姿態下
  • stealth 玩家在潛行狀態下
  • modifier:shift/ctrl/alt 某功能鍵被按下
  • button:1/…/5/<虛擬按鍵號> 宏通過某鍵點擊執行
  • equipped:<裝備類型> 玩家裝備了某類型物品,參見《裝備類型》
  • channeling:<法術名稱> 玩家正在引導某法術
  • actionbar:1/…./6 當前技能欄為某動作欄
  • pet:<寵物名稱或類型> 玩家當前寵物為某寵物
  • combat 玩家正在戰鬥狀態
  • mounted 玩家在騎乘狀態
  • swimming 玩家在游泳
  • flying 玩家在飛行狀態
  • flyable 玩家正處在一個允許飛行的地界
  • indoors 玩家在室內
  • outdoors 玩家在戶外
  • party 目標在玩家的小隊中
  • raid 目標在玩家的小隊或團隊中
  • group:party/raid 玩家在某集體中(小隊/團隊)

敵/友(help / harm)[]

沒什麼好說的,保留空地一塊,等待補充。

存在(exists)[]

如果目標存在條件為真。比如[exists],如果你沒有目標,該條件就不成立。而對於[target=focus, exists],如果你設置了焦點目標,條件就成立。不過很多情況下該條件用不到,因為[help],[harm],[dead],[party]和[raid]條件成立的情況下,[exists]條件是必定成立的。

死亡(dead)[]

如果判斷對象已經掛了,條件就成立。

姿態(stance:0/1/2/…/n)[]

姿態是指對技能能否施放有影響的狀態,比如戰士的姿態,小德、薩滿、暗牧的形態,盜賊的潛行狀態。而騎士的光環、獵人的守護都算是姿態。單獨用[stance]是指在任意一種姿態下,就相當於[stance:1/2/…/n]這樣把所有姿態列出來,對戰士來說就是永遠成立的。而[stance:0]就相當於[nostance]表示不在任何形態下。而[stance:0/3]就表示在形態3下或者不在任何形態下。 姿態的編號和面板上的順序是對應的。下面給出各職業的姿態表:

编号	小德		战士		暗牧		盗贼		萨满
1	熊形态	       战斗姿态	      暗影形态	        潜行		幽灵狼
2	海豹形态       防御姿态
3	豹形态
4	旅行形态
5	枭兽/树形态
6	飞行形态

注意:上面給出的是全表。如果少了某個姿態,其下方的形態就依次上移。我承認,我這話是針對小德說的…… 下面給出例子:

/cancelform [nostance:0/1/3]
/cast [stance:1/3] 精灵之火(野性);[nostance] 精灵之火

如果在熊/貓形態,施放精靈之火(野性);在人形態,施放精靈之火;在其他形態就先退出,然後施放精靈之火(WOW2.3以後可以這樣,2.3之前該宏只能退出形態)。

潛行(stealth)[]

對於盜賊來說由於[stance]的存在反而顯得多餘。這個是給暗夜、法師、貓德用的,我的意思是它可以用來判斷影遁、隱形和貓的潛行。

功能鍵狀態(modifier:shift/ctrl/alt)[]

它是節省技能欄的好幫手,可以讓一個宏對不同功能鍵做不同動作,比如:

/cast [modifier, help] [modifier, target=targettarget, help] 快速治疗; [help] [target=targettarget] 强效治疗术

該宏會依次判斷你的目標和目標的目標是否友善,條件成立的話,如果按下了某功能鍵,施放快速治療,否則施放強效治療術。 當然也可以指定特定的功能鍵。[modifier:shift/ctrl]表示Shift或者Ctrl被按下;如果想表示兩個鍵同時按下則可以這樣實現:[modifier:shift, modifier:ctrl]。 但是要注意這樣一種情況,比如你的宏是通過A鍵執行的,然後根據Shift來做判斷。但是你的Shift+A被設置了另外一個動作,那麼你按下Shift+A的時候,執行的就是其對應的動作,而不是你的宏。另外,modifier可以被簡寫做mod以節省空間。

功能鍵變量[]

雖然說mod指定的只能是shift、ctrl或alt,但是還可以通過一些系統變量來間接指定。比如SELFCAST這個系統變量,是指「自我施法功能鍵」,默認值為alt,可以通過某些插件修改,表示按下該鍵後執行的動作都是針對玩家自身的。下面看這個例子:

/cast [modifier:SELFCAST, target=player] [target=mouseover] [ ] 强效治疗术

這樣的話,不管你系統設置的自我施法鍵是什麼,宏命令都會正常執行。下面給出其他的一些系統變量,括號內為默認值,後面為中文含義:

  • AUTOLOOTTOGGLE(shift) 自動拾取鍵
  • STICKYCAMERRA(ctrl) 鏡頭跟隨
  • SPLITSTACK(shift) 物品堆疊分離
  • PICKUPACTION(shift) 拖動技能欄按鈕
  • COMPAREITEMS(shift) 物品比較
  • OPENALLBAGS(shift) 打開所有背包
  • QUESTWATCHTOGGLE(shift) 任務追蹤

點擊狀態(button:1/2/…/5/<虛擬按鍵號>)[]

與[modifier]類似,[botton]可以根據不同的鼠標點擊按鈕做不同動作。1為左鍵,2為右鍵,3為中鍵,4和5則對應五鍵鼠標上另外兩個擴展鍵。如果是通過鍵盤觸發宏,那麼也相當於左鍵點擊。比如我的坐騎宏:

#show迅捷绿色机械陆行鸟
/userandom [nobutton:2, flyable, nomounted] 黑色狮鹫; [nomounted] 黑色战豹, 迅捷绿色机械陆行鸟
/dismount [noflying] [button:2]

非右鍵鍵點擊時,如果沒在坐騎上就召喚坐騎;如果右鍵點擊並且不在飛行狀態則取消坐騎。而虛擬按鍵號一般可以忽略,有些動作條插件可以在不同條件下向宏按鈕提供不同的虛擬按鍵號,具體情況請查看插件說明,我們在此不作討論。

裝備(equipped:<物品類型>)[]

[equipped]條件可以判斷指定類型的物品是否被裝備。物品類型號可以是裝備欄名稱,物品類別或者物品子類別。比如我根據盾牌裝備狀態判斷該用盾擊還是拳擊:

#show [equipped:Shields] 盾击; 拳击
/cast [equipped:Shields,stance:1/2] 盾击; [equipped:Shields] 防御姿态; [stance:3] 拳击; 狂暴姿态

利用[equipped]這裏的#show可以根據裝備顯示不同的圖標。下面的偽代碼用來解釋上面/cast命令的執行過程:

if 装备了盾牌 and 在防御姿态 then
    /cast 盾击
else if 装备了盾牌 then
    /cast 防御姿态
else if 在狂暴姿态 then
    /cast 拳击
else /cast 狂暴姿态

下面再給出一個變態的壓制宏作例子:

/equip [noequipped:Two-Handed Axes] 水晶熔铸战斧
/cast [nostance:1] 战斗姿态; [equipped:Two-Handed Axes] 压制

引導中(channeling:<技能名稱>)[]

在引導法術的狀態下,如果施放另外一個法術將會打斷施法。這個條件語就是用來防止這一情況的。當然,它還有些其他的用途,比如只打斷特定的引導技。只用[channeling]的話表示正在引導任意技能,或者後面可以指定任意個引導技能的名稱表示正在引導其中一個。 注意:引導和吟唱是兩碼事,[channeling]條件只對引導技能,如奧書飛彈、吸取生命、精神鞭笞等有用。

技能條(actionbar:1/…/6)[]

系統默認的界面中有一個主技能條,可以翻頁。而用這個條件就可以根據當前技能頁作出不同反應。比如獵人可以拿來把守護做成姿態:

/swapactionbar 1 2
/cast [actionbar:1] 雄鹰守护; 灵猴守护

這樣就可以切換1號和2號兩個技能頁,換到1頁時施放雄鷹守護,2頁時則施放靈猴守護。

寵物(pet:<寵物名稱或類型>)[]

對任何有寵職業來說這個條件都很有用,它可以根據你寵物狀態來執行動作,可以根據寵物名字,也可以是類型(比如Voidwalker,Boar,Imp,Wolf等),如果只用[pet]的話表示帶着任意寵物。比如法師可以根據是否有水寶寶施放不同的霜星:

/cast [pet] 冰冻术;冰霜新星

戰鬥(combat)[]

如果在戰鬥狀態則條件成立。

行動方式、室內外狀態(mounted, swimming, flying, indoors & outdoors)[]

這些都無庸贅述,要說的就是它們都是對玩家自身狀態的判斷,而不是目標。

允許飛行 (flyable)[]

用於判斷是否處在可以使用飛行坐騎的地區。

小隊/團隊隊友(party/raid)[]

判斷目標是否是自己的小隊或團隊中的隊友。

在小隊/團隊中(group:party/raid)[]

注意和前面的區別。這個用於判斷玩家自己是否處在小隊或團隊中,並且團隊包括小隊。這對加狀態很有用,比如:

/cast [group, nomodifier] 奥术光辉; [help] [target=player] 奥术智慧

如果在隊伍中,施放奧數光輝;如果按下功能鍵或者不在隊伍中則施放奧術智慧。

命令條件語的應用[]

在第一部分中提到的很多命令,如果不配合條件語的使用,是沒有什麼價值的。而上述內容也只給出了一小部分的應用示例。作為本部分的壓軸內容,下面兩段將會把你帶入一個更高的境界。

設置焦點(focus)[]

focus是一個單位標識符(參見《單位標識符》),就像target、player、raidpet1target一樣。你可以將它設定為某一個單位,玩家或者NPC。比較簡單的設置方法是通過按鍵設置。在按鍵設置中有兩個選項:「焦點目標」和「目標焦點」。我不知道這是哪個腦殘翻譯的,其實際含義分別是「以目標為焦點」和「以焦點為目標」。當你設置了焦點以後,就可以用focus這個標識符了,也可以通過「目標焦點」綁定的按鍵把你設的focus作為你的當前目標。話說按鍵綁定也太小兒科了,下面來看看什麼是職業玩家的focus用法。 作為一個有控制技能的專業DPS,我們最常用的就是控場宏。我們可以預先把你的「被監護人」設為你的焦點,然後用這種宏來調教他——而此過程中並不用切換目標:

/cast [target=focus] 变形术

而作為一個灰常牛逼灰常嫻熟的治療,你可以把焦點設為你的主坦。另外還可以通過一些頭像增強插件,比如FocusFrame來觀察你焦點的狀態。 不過職業玩家一般不用按鍵綁定設置焦點,而是用/focus和/clearfocus宏命令來設置或清除焦點。/focus直接就可以達到按鍵綁定的效果了,而通過參數指定/focus的目標更是按鍵綁定所沒有的功能:

/focus party3target

上面的只不過是教學示例,實際上職業玩家是這樣用的:

/focus [target=focus, noharm] [target=focus, dead] [modifier]
/stopmacro [target=focus, noexists]
/cast [target=focus] 变形术

第一行先判斷以下三個條件,如果滿足任意一個,就把你的當前目標設為焦點(不要忘記,focus是/focus命令的特殊單位,參見[target=]條件語與命令參數):

  • 你的當前焦點不是敵對目標(如果焦點不存在該條件也成立)
  • 你的焦點已經死了
  • 某個功能鍵被按下了

第二行判斷你的焦點是否存在,如果不存在就終止宏的運行。這樣控場是不是很方便?我們注意到這裏用了/stopmacro命令,而不是在/cast命令中對焦點是否存在進行判斷。這樣的好處是我們可以在宏的最後加上更多的內容,比如一個小隊喊話。 下面這個宏也很有用,可以把你的目標和焦點互換:

/cleartarget [target=target, dead]
/clearfocus [target=focus, dead]
/target focus
/cleartarget [target=focus, noexists]
/targetlasttarget
/focus target
/targetlasttarget

前兩行的作用是把死亡的目標和焦點清除掉。第四行的作用是防止你沒有當前焦點,導致當前目標不變,以至於在第五行選擇了你以前的一個目標。

用/click進行分支判定[]

假如你想讓一個按鍵根據不同的功能鍵施放不同的技能,並且根據左鍵右鍵選擇不同的施放目標,那麼我可以給你這樣的一個例子:

/cast [modifier:shift, button:1, target=party1] [modifier:shift, button:2, target=player] 强效治疗术; [modifier:ctrl, button:1, target=party1] [modifier:ctrl, button:2, target=player] 快速治疗; [nomodifier, button:1, target=party1] [nomodifier, button:2, target=player] 恢复

哦……對不起,不大好看……而且貌似超過255個字符限制了。重新寫一下:

/cast [modifier:shift, button:1, target=party1] [modifier:shift, target=player] 强效治疗术
/cast [modifier:ctrl, button:1, target=party1] [modifier:ctrl, target=player] 快速治疗
/cast [button:1, target=party1] [target=player] 恢复

不過如果我們寫一個宏根據不同按鍵點擊分別選擇兩個不同的宏,而把功能鍵狀態的判斷放到這兩個宏中的話,條理就會更清晰了: 主宏:

/click [button:1] MultiBarLeftButton2; MultiBarLeftButton3

輔助宏1:

/cast [mod:shift, target=party1] 强效治疗术; [mod:ctrl, target=party1] 快速治疗; [target=party1] 恢复

輔助宏2:

/cast [mod:shift, target=player] 强效治疗术; [mod:ctrl, target=palyer] 快速治疗; [target=player] 恢复

附錄[]

自定義圖標[]

如果想自定義宏的圖標,可以把做好的圖標放在遊戲目錄的「.\Interface\Icons」文件夾中(可能需要自己新建)。文件格式應該是界面材質規定的.BLP或24位無壓縮的TGA文件。圖片的長寬必須是2的自然數次冪,但不得超過512,比如可以是32×32、512×128等。注意:圖片如果不是正方形,在界面顯示中是會走形的……

宏的移植[]

玻璃渣目前還沒有提供上傳宏的服務,所以大家想把宏轉移到另外一台機器上的話還是要手動拷貝。個人賬戶的角色通用設置都保存在遊戲目錄的「.\WTF\Account\賬戶名稱」文件夾下,每個角色分別的數據則保存在「.\WTF\Account\賬戶名稱\伺服器名\角色名稱」文件夾下,包括自定義的宏、按鍵設置、插件數據等,其中macros-cache.txt保存着宏的定義。

更多信息[]

如果你有關於宏的疑問,並且在此找不到答案,可以看看這裏:《Macro FAQ & Repository》,其中包含很多對於常見問題的解答和一些很好的例子。而且最好多看看wowwiki.com(不過在中國訪問的話很可能需要代理),可以獲得很多東西,比如宏和腳本相關的文章,還有數據控喜歡的關於遊戲算法的研究。

鳴謝[]

首先要感謝的是Slouken,他在暴雪一直關注着我們的反饋,如果沒有他對廣大玩家建議的重視就沒有今天的宏命令系統。 還要感謝的是Iriel,Tem,Cladhaire等很多高手與大家分享知識。 還要感謝論壇上那些一直為大家做出貢獻的朋友,Neuro,Shirik,Jelly,Lunessa,Troodi,Lealla,Aella,Valaron等等,還有很多我不記得名字的朋友,感謝你們。

譯者注[]

這個中文版譯自http://www.wowwiki.com/Making_a_macro這篇文章,原文連結自http://forums.worldofwarcraft.com/thread.html?topicId=96143900&sid=1,有Wiki維護改動,當前版本為[2008-03-25 15:44]。

[@cursor] 意味以鼠標位置為中心釋放法術,比如薩滿纏繞圖騰 /cast [@cursor]纏繞圖騰 [@player] 意味以玩家位置為中心施放法術,比如牧師對自己施放真言術盾 /cast [@player]真言術盾