『壹』 WOW宏命令
/cast=/施法
/use=/使用
格式:/cast 技能名含等級
最好是從法術書裡面shift+點擊加入
target=? 目標為(施法.使用物品)
格式:/cast [target=?] 技能
/target=?
[target=mouseover] 這個據說很好用,施法目標為滑鼠指向
/stopcasting=打斷當前施法
#show=顯示技能圖標
格式:/show 技能名或物品編號(item:XXXXX)
只會顯示技能圖標,不會顯示技能介紹..距離和CD沒注意..因為沒用過這個..
#showtooltip=顯示技能詳細信息
格式同上
會顯示技能介紹,包括距離,CD
/cast [modifier:ctrl/alt/shift] 技能A;技能B
按住ctrl/alt/shift+點擊/快捷鍵 使用技能A
直接點擊/快捷鍵 使用技能B
/cast [button:2] 技能A;技能B
右鍵點擊 使用技能A
左鍵點擊/快捷鍵 使用技能B
如果需要將上面兩個整合很多條在一起話...需要加入[nomodifier]來聲明區分 實例如下:
亂七八糟混合吃喝宏...
#showtooltip item:34062
/use [nomodifier,button:1] 魔法點心
/use [nomodifier,button:2] 魔法冰川水
/use [nomodifier,button:2] 魔法羊角麵包
/cast [modifier:alt,button:1] 造水術(等級 9)
/cast [modifier:alt,button:2] 造食術(等級 8)
/cast [modifier:shift,button:1] 召喚餐桌(等級 1)
看的懂的話以上都畢業了......
----------------------------------------------------華麗而又猥瑣的分割線----------------------------------------------------
關於焦點的專區.....
/cast [tatget=focus,exists] 技能
這個就是對焦點施法的基本格式.....需要其他功能自行整合就OK...
#showtooltip [target=focus,harm] [] 技能名
宏顯示的距離染色是與焦點的距離 不是與目標的距離...個人覺得極度好用...盯羊盯反制好用...
整合實例:
#showtooltip [target=focus,harm] [] 法術偷取
/stopcasting
/cast [modifier:alt,target=focus,exists] 法術偷取;法術偷取
----------------------------------------------------分割線真是個好東西呀好東西----------------------------------------------------
一些不太常見的語句...
/castsequence=順序施法
格式: /castsequence reset=? 技能A,技能B,點點點點點點
用處為點一下是使用技能A,點兩下使用技能B,點三下四下五六七下順延....
?處可以為 數字(多少秒後重製)
combat(戰斗狀態切換重製)
target(切換目標重製)
/cast [nochanneling:技能A] 技能B
不打斷技能A,等A完了再放B
以上兩個有延遲...拼DPS別用...
/clearfocus=清除焦點
/cleartarget=清除目標
/cancelAura=取消BUFF,最常見的就是/cancelAura=寒冰屏障
/castrandom=隨機施法
格式: /castrandom 技能A,技能B,技能C,省略號省略號
----------------------------------------------------不曉得還要出場幾次呢,好期待----------------------------------------------------
關於技能喊話...這里有個[ http://bbs.ngacn.cc/read.php?tid=1989774更加全面和高端的帖子 ]....大家可以跳過我寫的直接去看....
說話方面....
/? 那啥那啥要說啥寫啥
?=1/2/3/4/p/y/s/raid/g/bg 綜合/交易/本地防務/尋求組隊/小隊/大喊/說/團隊/工會/戰場
說的話裡面要用到目標名字的話,用%T 例如:
/use 污染之核
/raid 我已經把污染之核傳給--->%T<-----了,別站著不動了趕緊傳啊你個彪子白吃那麼多飯了再不傳團長該罵人了說的就是你%T呢你還到處瞄啥呢
貌似看起來很累的樣子...算了這么簡單幹嘛要仔細看....
密語方面....格式跟說話差不多
/w 要密語的人 說啥寫啥我愛你之類也可以喲~~
"要密語的人"不支持"%T"引用目標
要密語目標用下面的
/script SendChatMessage("要說的話","whisper",GetDefaultLanguage("target"),UnitName("target"))
引用焦點名字的話..是下面格式...(改自ID:格格巫.84958的回復)
/script SendChatMessage("我已經把"..UnitName("target").."變成烏龜了","yell")
yell可以改say,raid等,喊出來格式為 我已經把XXXX變成烏龜了
好吧引用焦點名字其實跟引用目標名字類似的 .....用%f引用...最開始懶得去試結果弄麻煩了...
---------------------------------------------導演說這次是最後一次出場了怎麼辦呀人家還沒玩夠呀----------------------------------------------------
最後是一些看起來挺復雜的語句...我也不知道該怎麼解釋...會英文的仔細看一看就懂了..實例:
水元素宏..原創人ID:WiNDDRiVER 感謝...
#showtooltip [nopet] [target=pet,dead] 召喚水元素; [pet] 冰凍術
/script if(GetPetActionCooldown(5)>0 and GetSpellCooldown('召喚水元素')==0)then PetDismiss()end
/cast [nopet] 召喚水元素;冰凍術
/petpassive
/petattack [harm]
/petfollow [noharm]
功能說明:沒有水元素的時候顯示水元素技能詳細,點擊召喚水元素,改被動
有水元素顯示水元素冰環(冰凍術)技能詳細 點擊使用冰凍術,有可攻擊目標同時攻擊.沒有跟隨
原帖地址傳送門(此宏在9樓閃光):[ http://bbs.ngacn.cc/read.php?tid=2878579&fpage=1猛擊此處可見 ]
變羊宏..同樣很強大...
#showtooltip [target=focus,harm] [] 變形術(豬)
/stopcasting
/clearfocus [modifier:shift][target=focus,dead][target=focus,noexists]
/focus [target=focus,noexists]
/castrandom [target=focus] 變形術(等級 4),變形術(豬)
功能說明:無焦點 點擊 將目標設為焦點並隨機變羊.
有焦點 點擊 將焦點隨機變羊,無視有無目標
有目標 shift+點擊 將目標改為焦點並隨機變羊
無目標 shift+點擊 取消焦點
焦點死掉會自動清除焦點
我沒有變形術(龜)啊啊啊!沒有啊!!!!真的..沒有啊...(淚奔.掀桌)
喜歡研究的同學可以仔細看看這兩個宏..個人感覺是沒有什麼可以改進的地方了..接近完美.
可能有些不完善或者有誤的地方..歡迎大家補充指正....
上面的實例都是在別人放出宏的基礎上改進或者改變的....拿誰的是真的忘記了...原創者勿怪.
加一點關於冰箱宏的...現在用的最多的就是
#showtooltip 寒冰屏障
/stopcasting
/cancelAura 寒冰屏障
/cast 寒冰屏障
經過很多次試驗....好吧盡管它的CD是4分鍾...如果是施法狀態..開始讀條---時間段A--->讀條一個GCD時間----時間段B--->技能放出
現象:
在時間段A按冰箱宏是不能正常工作的.也就是,按一下只打斷施法.不會用冰箱..
在時間段B按冰箱宏..按一下就打斷施法然後冰箱了,正常工作...
原理:打斷施法後到重製GCD有一個延遲時間...如果施法不到一個GCD時間..那麼這個延遲時間就會影響到宏的順序執行,導致中斷...
為啥反制偷取不會受這個影響不會中斷呢?因為反制偷取沒有GCD...冰箱會走GCD
所以.....多加註意....總結..按冰箱宏太多次會死..按少了偶爾也會死....囧rz
更新..綜合上面提到的"冰箱"問題..以及回復中討論的"反制"問題(詳見8-20樓討論)
推測..延遲的問題....不是出在/stopcasting上,也不是因為判定是否施法狀態..都是因為打斷施法後的GCD重製延遲引起...只不過一個是導致延遲,一個是導致宏工作中斷..如果推測成立,那麼
結論:按宏打斷施法並反制跟移動打斷施法並反制,是一樣快的! 只不過由於移動狀態不如靜止狀態更能感受細微差別,才"感覺"移動打斷後反制更快.../stopcasting無罪,不應該拋棄它!
歡迎再次討論....
在別的網站看到這么一篇文章....其中的內容..摘錄如下(稍有修正):
ps.摘錄地址如下:http://wow.766.com/ye_1160/wow_zhgl_1991/2007/07-16/43CD20BD-454A-D14E-F134-43AD1F5F4D80.shtml#
此網頁不屬於NGA網站,NGA不保證其安全性
繼續訪問 取消 不再提示我[ http://wow.766.com/ye_1160/wow_zhgl_1991/2007/07-16/43CD20BD-454A-D14E-F134-43AD1F5F4D80.shtml#猛戳可見 ]
似乎這個網站也是無責任轉載...作者寫的佚名...所以...沒法聲明原作者...<----算免責聲明
第一大類:動作指令,即宏命令里「/」後面的指令,是最一般的用來執行動作的命令。這是一條可執行的宏命令的軀體,可以說是一個宏語句想要實現的意圖。又可分為直接動作指令和條件動作指令兩類。
1、直接動作指令:也就是編寫後可直接執行某一動作的動作指令,可追加條件指令,但後面不用再接法術名稱或物品名稱。此類指令很簡單,包括:
/startattack 開始攻擊
/stopattack 停止攻擊
/stopcasting 停止施放 (此動作指令後可追加某一法術名稱,但實際意義不大,所以這里依然作為直接動作指令)
/stopmacro 停止宏執行
/assist 協助
/focus 設置焦點目標
/clearfocus 清除焦點目標
/cleartarget 清除目標
/petattack 寵物攻擊
/petfollow 寵物跟隨
/petstay 寵物原地停留
/petpassive 寵物被動姿態
/petdefensive 寵物防禦姿態
/petagressive 寵物主動姿態
/dismount 下馬
這些都是直接動作指令,執行效果就是直接開始或終止某一動作或狀態。後面均可追加條件指令,表示符合某一或某些條件時進行此動作。
2、條件動作指令:也就是需要接法術名稱或者物品,並可依靠條件指令進行選擇執行的一些動作指令。這類指令最常用到,也是使得宏多樣化的基本指令。此類指令很常見,包括:
/cast 施放
/castrandom 隨機施放
/castsequence 順序施放
/cancelaura 取消BUFF
/cancelform 取消姿態
/equip 裝備
/equipslot 裝備到指定位置
/use 使用
/userandom 隨機使用
/changeactionbar 切換動作條
/swapactionbar 順序切換動作條
/petautocaston 寵物自動施放技能開
/petautocastoff 寵物自動施放技能關
/click 點擊
這一類指令的共同特點就是後面必須追加某一法術,物品或者某一參數代碼,當然也可以用條件指令來進行判斷,表示符合某一或某些條件執行某一法術(使用某一物品或執行某一動作)。這類命令里有些需要使用參數代碼,在最後我會給出常用的參數代碼列表。
第二大類:條件指令,即宏命令里[]中間的部分,是否執行某一動作指令所依據的條件。這是一條可執行的宏命令的靈魂,它告訴系統宏的某一動作指令什麼情況下是可行的,什麼情況下是不可行的。這類指令又分成兩類:狀態條件指令和指針條件指令。
1、狀態條件指令:顧名思義,就是指明某一狀態作為動作執行條件的指令。這一條件指令是2宏里最有特點的一個指令群它使得宏的功能更加實用和多樣。此類命令很多,包括:
help 目標友善
harm 目標敵對
exists 目標存在
dead 目標已死
stance:<X> 處於某個姿態
stealth 潛行狀態
modifier:<X> <X>可以是shift/ctrl/alt,shift/ctrl/alt被按下狀態
button:<X> <X>可以是1/2/……5/<系統定義按鍵>,用滑鼠的某個按鍵點的宏
equipped:<X> <X>可以是某個物品種類/身上某個裝備格/某物品的類型/或者子類型,裝備此(類)物品
channeling:<X> <X>為某法術名,某法術正在引導中
actionbar:<X> <X>為1到6的某一個參數代碼,指定的動作條頁面已被顯示
pet:<X> <X>可為寵物種類或指定寵物的名字,指定寵物存在
combat 處於戰斗狀態
mounted 騎乘狀態
swimming 游泳狀態
flying 飛行狀態
indoors 在室內
outdoors 在戶外
group:party/raid 正在一個小隊/團隊中
這些命令指明在某狀態下,宏定義動作指令可施放。所有狀態條件指令前面都可以加個「no」,表示相反的狀態,比如nostealth表示非潛行狀態,nodead表示沒死。在宏語句中,此類指令都寫在[]中間,前面交代過,可以用「,」或者「/」來分隔,表明選擇條件指令之間的關系是「並且」還是 「或者」。
2、指針條件指令:即表明動作指令所針對的對象。此條件指令很特殊,只有一個,就是target。其實與其說target是條件指令,不如說是指針指令。但是由於其應用在宏里的時候是寫在[]之間的,所以把它歸結在條件指令里,以方便記憶宏的書寫格式。此指令格式為:
target=<X> <X>可以為player/target/pettarget/targettarget/<某人或寵物的名字>……,動作施放目標為玩家/當前目標/寵物目標/目標的目標/某人或寵物……
注意在此條件指令後有個「=」,這也是target指令的特殊標志。在使用target指令的語句里,不表示目標為某某的狀態,而是表明此動作指令將向某某發出。
另外,最近開始流行多指針條件指令判定了,也就是為了追求戰斗時的效率,用最快的方法來施放技能。最突出的一個條件指令就是 target=mouseover。簡單說明一下目前WOW可以實現的目標指針條件指令種類,常用的就不說了,不常用有focus,即焦點目標,這是個可以脫離選擇而獨立進行監視的目標,需要使用/focus動作指令或指定系統快捷鍵來完成設置。還有就是mouseover。 target=mouseover意思就是將動作指令的指針指向滑鼠停留目標上,此時你無需選中這個目標,只要滑鼠停留在目標的身上,使其顯示高亮就可以了。
第三大類:輔助指令,即用來輔助完善宏的功能的指令。常用的有兩個:
#show 在宏圖標上顯示指定圖標
#showtooltip 在宏圖標上顯示說明
這兩條指令後面均可追加技能或者物品名,則在宏圖標選擇界面里選擇了「?」圖標的時候,會顯示指定的圖標和說明。關於「?」圖標,在游戲升級補丁說明中有詳細講解,這里就不再贅述了。只說兩點,一是這兩條指令要和「?」配合使用才能發揮最大的作用,其次是#showtooltip指令一定要放在宏的最開頭,否則會失效。另外多說一句,「#」後面有無空格均可。
1、裝備對應位置編號:
頭 1
頸 2
肩 3
襯衣 4
胸 5
腰帶 6
腿 7
腳 8
手腕 9
手套 10
手指1 11
手指2 12
飾品1 13
飾品2 14
背 15
主手 16
副手 17
遠程武器/聖物/聖契/神像 18
2、部分物品類型對應英文代碼:
Two-Hand 雙手
Bag 包
Shirt 襯衫
Chest 胸部
Back 背部
Feet 腳
Finger 手指
Hands 手
Head 頭部
Held In Off-hand 副手物品
Legs 腿部
Neck 頸部
Ranged 遠程
Off Hand 副手
Shoulder 肩部
Tabard 徽章
Thrown 投擲(遠程槽物品)
Trinket 飾品
Waist 腰部
One-Hand 單手
Main Hand 主手
Wrist 手腕
『貳』 魔獸世界裡面的宏該怎麼寫
判斷表達式,判斷式(Option Set):由若干判斷項組成,封閉在方括弧[]中的真值表達式。繼承自安全模板,能在受保護環境下允許運作的唯一判斷形式。
一,寫宏的基本法則
宏最主要的應用是帶有判斷的施法,這也是下文主要應用的模型。一個典型的這種宏可以抽象成以下形式:
Code(c):
/cast [表達式1-1][表達式1-2]技能1;[表達式2]技能2;技能3
--宏的模型
[項1,項2,項3, ...]
--表達式的模型
--註:表達式中定義單位target=或@不是一種判斷條件,但它重新指定了後續所有涉及目標的判斷和最終技能施放的對象。比如指定了@mouseover後,後續的help/exists/dead之類的判斷都會基於滑鼠懸停的單位。
在這個模型下,討論:
1.邏輯及判斷順序(法則一,!極為重要)
涉及判斷就有真值,但是不要被這個帶有濃重編程和數學色彩的詞嚇倒。概括來說就兩句話:
<1>方括弧內各分項之間是AND的關系,用逗號間隔,只有各個分項都為真整個方括弧(表達式)才為真。方括弧內各項之間沒有順序要求。
<2>各個方括弧之間是OR的關系,判斷順序是從左至右,遇到第一個方括弧為真時即結束判斷,而忽略其後的所有項目。
大部分宏出錯/不能用/判斷混亂的原因就是在此。寫宏的時候必須把條件強的(或者說優先順序高的)判斷放到前面,弱的(泛用型的)判斷放到後面。舉個例子,昨天回答了問答區一個人的提問,他的宏
Code(c):
1:#showtooltip
2:/cast [nomod,spec:2]煉獄沖擊;[nomod,target=mouseover,exists,harm,spec:2]煉獄沖擊
無法對滑鼠懸停目標放。究其原因就是,[nomod,spec:2]這一個表達式弱於後者
[nomod,target=mouseover,exists,harm,spec:2],後者不僅需要無修飾鍵和第二專精,同時需要存在一個可攻擊的滑鼠懸停目標才會為真,導致了後者為真時前者一定為真。
按照上文的<2>,從左至右的順序將永遠是前者表達式率先為真,因而無法對懸停目標施放煉獄沖擊。修改的方法很簡單,把兩個判斷調換位置即可:
Code(c):
1:#showtooltip
2:/cast [nomod,target=mouseover,exists,harm,spec:2]煉獄沖擊;[nomod,spec:2]煉獄沖擊
3:--修改後的宏
當然我在回答中還給出了優化方案,後文會詳細介紹如何優化。
2. 技能整合(法則二)
對於把多個技能整合進一個/cast命令里,在不同的條件下自動判斷施放不同的技能,只有一條格式法則:不同技能之間用分號;間隔。具體可以參照本章開頭提出的宏模型。
要注意,一個/cast任何情況下至多隻能施放一個技能,而且各個方括弧之間仍舊遵循上文提出的<2>判斷順序法則。
3. 技能堆疊(法則三)
如果要做到一鍵同時放出兩個或更多的技能,必須有多行/cast命令,這就是技能堆疊。這種宏通常用於爆發技能,喝葯開飾品開技能需要同時完成。
其法則是:至多隻能擁有一個產生/受到GCD影響的技能,幸運的是爆發類技能和葯水等物品幾乎都設計成不佔用GCD。
Code(c):
1:#showtooltip
2:/cast 奧術強化
3:/use 13
4:/use 14
這樣的宏是可行的,因為飾品和[奧術強化]本身並不產生GCD,甚至再加兩行
Code(c):
/cast 氣定神閑
/cast 奧術沖擊
也是合法的。但是,形如以下的宏是非法的:
Code(c):
1:#showtooltip
2:/cast 驅邪術
3:/cast 審判
4:/cast 十字軍打擊
因為三者都產生GCD和/或被GCD影響,最終的效果是只相當於第一行[驅邪]有用。不要妄圖這種方法能實現按優先順序施放技能。
4. 技能替代(法則四)
技能替代是一個十分有意思的機制,自CTM引進。這種機制允許某[基礎技能]在特殊情況下被另一個[替代技能]替代,而即便在替代的情況下,通過宏命令施放[基礎技能]時會自動定向到[替代技能],其最終的結果是正常施放[替代技能],宏的圖標也會隨之變化。
這種機制有兩種情況:
1)單向的替代,/cast [替代技能]不會施放出基礎技能,但是/cast [基礎技能]是任何情況下通用的。
舉例:神牧的[聖言術:罰]在黃輪和藍輪下轉換成[靜]和[佑],只要宏
Code(c):
1:#showtooltip
2:/cast 聖言術:罰
就能自動根據輪的顏色轉換技能,但因為這是[罰]被單向地替代,反過來如果宏里寫[靜]或[佑],在紅輪下就會放不出技能。
2)雙向的等價,[基礎技能]和[替代技能]是完全等價的,就如同一個技能,任何情況下用宏施放任意一個技能的結果都是放出當前激活的那一個。比如[腐蝕術]和[獻祭]兩者,SS玩家可以分別在不同天賦下試試。
這種機制對於寫宏非常有利,我們不需要為了技能被替換而另開一個宏。更深入的一點,以下兩個技能需要重點提及:
Code(c):
1:#showtooltip
2:/cast 秘法炸彈
3:--這個技能對應法師75級天賦中的[虛空風暴],[寒冰炸彈]和[活動炸彈]。[秘法炸彈]被單向替代。
Code(c):
1:#showtooltip
2:/cast 神聖爆發
3:--這個技能對應牧師90級天賦,也是單向替代。
如果其他職業也有類似的天賦基礎技能,請歡迎補充。
二,寫宏的靈魂:邏輯和優先順序
筆者和自己圈子裡的很多人說過,寫宏其實和編程沒多大關系,需要的是一點數學的邏輯思維。尤其是那些技能整合宏,對在各種判斷條件下到底哪一個技能才是優先的必須心裡有譜。
實際上這是上文中法則一之<2>的推演,本質上仍舊是按照越優先越靠前的方式排列整個技能和判斷序列。正因如此,上文法則一才是宏最最重要的法則,而優先順序正是寫宏的靈魂。
Code(c):
1:#showtooltip
2:/cast [help,dead][mod:shift,help][mod:shift,@player]Soulstone;[mod]Soul
Link;Unending Resolve
3:/targetlasttarget [help,dead]
4:--比如這個術士宏,它的邏輯等價於:
5:--如果[目標死亡且可協助]或[按住shift並且目標可協助]或[其他按住shift的情況下對自己]施放[靈魂石]
6:--否則,如果[有按下其他任何修飾鍵]則施放靈魂鏈接
7:--否則任何其他情況下放盾牆
8:--此外,如果[目標死亡且可協助]還會順帶切換回之前的目標,目的是戰復後目標切回怪身上
有人可能會問,[help,dead][mod:shift,help][mod:shift,@player]這一串看不懂,為什麼先來個shift修飾後面又來一個,這里就涉及到優先順序的問題了。
首先[help,dead]指定了[目標死亡且可協助]的情況,它是優先順序最高的,只要滿足這兩個條件,其他任何條件不管滿足不滿足都會戰復目標。
其次,[mod:shift,help]這一判斷代表[按住shift並且目標可協助],但是它還有個隱藏條件。因為要判斷到這一層,首先必須前者[help,dead]為假,也就是當[目標不可協助或者目標不死]的情況。
所以其實這個判斷應該是[(目標不可協助或者目標不死)並且按住shift並且目標可協助],由於不可協助和可協助互斥,所以實際判斷的真值應該是[目標不死並且按住shift並且目標可協助],滿足這個條件,對目標放靈魂石。
再次,[mod:shift,@player],這里只用了一個判斷即shift修飾,上文說過@player不是判斷條件。但因為前一個判斷已經有一種按下shift的情況被取走了,那麼這里的判斷表示[其他按住shift的情況下對自己]施放靈魂石。
然後,[mod]是個廣義的修飾鍵判斷,當alt/shift/ctrl中任何一個或多個被按下是都為true。當然shift在前面的判斷中被取走,那麼這里表示的是[按下alt/ctrl中任何一個或兩個],他等同於[有按下其他任何修飾鍵]則施放靈魂鏈接。
最後,無盡決心沒有任何判斷,它是恆真的。也就是在其他任何條件下都會施放無盡決心。
上面這個例子有些復雜,下面會通過一個相對簡單的實例來闡述如何運用這種模式寫宏。
法師法術反制及焦點反制/懸停解詛咒整合宏
要求是:焦點可攻擊按住任何修飾鍵都是焦點反制,不按修飾鍵且敵對目標是對目標反制,滑鼠懸停到友善目標是解詛咒,目標是友善目標是解詛咒,默認狀況下是對目標的反制。
首先就是釐清優先順序。
那麼整理之後的優先順序就是:
第一優先順序:焦點反制敵對目標,判斷式[mod,@focus,exists,harm]
第二優先順序:懸停解可協助目標詛咒,判斷式[@mouseover,exists,help]
第三優先順序:對友善目標解詛咒,判斷式[help]
第四優先順序:敵對目標反制,判斷式[harm]
第五優先順序:反制,無判斷式(恆真)
*要注意,harm和help有關系,但並不是help=noharm或者harm=nohelp。harm代表目標可攻擊,help代表目標可協助(能給他加血上buff等),此外還有一種既不能攻擊也不能協助的狀態,稱為"被動(Passive)"。
現在可以直接寫出宏了,那就是:
Code(c):
1:#showtooltip
2:/cast [mod,@focus,exists,harm]法術反制;[@mouseover,exists,help][help]解除詛咒;[harm]法術反制;法術反制
3:--第一行的#showtooltip不是命令行,它的作用是能在滑鼠提示上顯示技能的有關信息
這個宏運作起來是符合要求的,但是可以繼續優化。從邏輯上而言,第四與第五優先順序可以合並,而且exists沒必要與harm和help連用。因此最終的宏是:
Code(c):
1:#showtooltip
2:/cast [mod,@focus,harm]法術反制;[@mouseover,help][help]解除詛咒;法術反制
(2)宏命令後面等級怎麼寫擴展閱讀:
常用宏模板:
1.治療/傷害技能混合宏,附帶指向施法,或者用於解buff和攻擊性技能組合:
Code(c):
1:#showtooltip
2:/cast [@mouseover,help]治療技能;[harm]攻擊技能;治療技能
2. 治療指向宏,無指向對目標:
Code(c):
1:#showtooltip
2:/cast [@mouseover,help][]治療技能
3. 經典的修飾鍵整合宏:
Code(c):
1:#showtooltip
2:/cast [mod]技能1;技能2
或者更多的技能:
Code(c):
1:#showtooltip
2:/cast [mod:shift]技能1;[mod:ctrl]技能2;[mod]技能3;技能4
4. 翻頁宏:
Code(c):
1:#showtooltip
2:/cast 技能
3:/changeactionbar n
這個宏最近已經被玩壞了,n可取1-6。
5. 花式宏,雙修飾鍵/三修飾鍵判斷:
Code(c):
1:#showtooltip
2:/cast [mod:alt,mod:ctrl,mod:shift]技能
按照需要自己整合,就是這個套路。
6. 花式用法:
拆分1+alt和alt+1(按鍵順序)。
*1+alt指的是先按住1然後不放去按alt,保持alt松開1(此時放技能),最後松開alt。
這個用法需要關閉界面設置中的點擊施法選項。
按鍵綁定中綁定alt+1,在這個動作按鈕上放技能1
建立一個宏
Code(c):
1:#showtooltip
2:/cast [mod]技能2;技能3
把這個宏放到鍵1上。
其結果就是alt+1放出技能1,1+alt放出技能2,直接按1是技能3。
『叄』 魔獸世界怎麼編寫宏,求高手詳細指導··
魔獸世界的宏命令多用於把爆發性的技能或飾品綁定在一起,可以一次性開啟多個技能,達到最大化輸出的效果,宏命令的編寫方法如下:
第一步,進入游戲後,按ESC調出主菜單。
『肆』 魔獸世界宏常用命令級格式
宏 Macro
相信很多人都知道WOW中的斜杠"/"和表情命令.宏可以將這些命令按照自己對條件的設置串聯起來,比如:/Kneel是讓你跪下來的動作而/say就是最基礎的對話動作
我們現在用一個宏把他們串起來:
第一行內容:「/Kneel」
第二行內容:「/say 如果你不嫁給我,那麼我就一輩子不起來…」 」
這樣你的人物就會先下跪再說:"如果你不嫁給我,那麼我就一輩子不起來…"
宏可以應用所有WOW中已經定義了的斜杠"/"和表情命令,更要命的是,宏甚至可以應用人物的魔法和技能,
只需要在宏的定義過程中應用"/cast"命令,下面是已知的一些常用命令:
/Assist 這是個援助進攻的命令。當你的隊伍同時面對幾個敵人時,只要點擊自己的隊友(一般是隊伍中的戰士),然後使用這個命令,你的目標就會變成戰士所選中的目標。大家集中火力消滅一個起!
/Cast 這是個使用技能的命令。當你在宏命令里輸入/Cast 技能名(技能等級)或者只要按住Shift同時用滑鼠點擊一下你想要輸入的技能的圖標。例如當你是一個戰士,想製作一個使用戰斗怒吼的宏時,你可以輸入/Cast Battle Shout(Rank 1)或者是直接按住Shift點擊Battle Shout這個技能的圖標。當然你可以在一個宏的不同行上輸入幾個技能,那麼當你使用這個宏時,幾個技能就會一起釋放出來,再用不著你像章魚一樣同時按下幾個鍵了 。
%t 這個符號也許會經常出現在你的宏命令里,它是一個代碼,代表你當前所選中的人名。例如,你在宏里寫下這么一句。(注意:後面要加一空格。) 「/g %t ,今天天氣真好,有沒興趣和我一起上山采蘑菇…」
如果你點中一位名叫苯笨的玩家,那麼當你按下這個宏時,你就會說:「笨笨,今天天氣真好,有沒興趣和我一起上山采蘑菇…」
/Target 這是一個自動選擇目標的命令,你可以在宏里輸入/Target (xxx),那麼當你按下這個宏時,你將自動選定這個叫xxx的目標。
/in 這是一個延時命令,時間以秒為單位.同時它不支持攻擊指令.格式:/in 3 dance 三秒後跳舞,如/in 3 dance,就是在3秒後跳舞,
/say start!
/in 3 say 3s later
/in 6 say 6s later
二:進階教程
一些有用的 Macro
1。允許你在窗口和全屏狀態之間切換
/script SetCVar("gxWindow", 1 - GetCVar("gxWindow"));
/console gxRestart
2。對於法師,必須要有的:將「X」換為你目前的變形術等級(下同);用它替換掉變形術技能。當你在隊伍之外時使用它會得到「你不在隊伍中。」的信息,但在隊伍中的時候其它同伴會了解到你將釋放的變形術目標。
/p Sheeping >>> %t<<<
/cast Polymorph (Rank X)
3。作為一個術士,這是在隊伍中使用的宏:首先將目標轉為拖怪手或者坦克正在攻擊的目標,然後命令寵物向前攻擊,跟著一個虛弱詛咒。
/assist 隊伍中的拖怪手或者坦克的名字
/script PetAttack();
/cast Curse of Weakness (Rank X)
4。從背包和袋子里切換身上的武器
/script if ( not CursorHasItem() ) then PickupContainerItem(, );
PickupInventoryItem( ); end
bag# - 使用哪一個袋子的物品(0、1、2、3、4。0是背包)
slot# - 袋子里的位置(從0至左上)
equip# - 16 是主要武器, 17 是副武器
5。這個宏治療隊伍里你指定的人,如果你不在隊伍中它會治療你自己。然後會自動將目標切換回你最後一個敵人。它同時還會使用隊聊提醒隊友你會治療哪一個人。
/script if (UnitName("target") ~=nil and UnitIsFriend("player","target")) then
CastSpellByName("Heal(Rank X)") SendChatMessage("Incoming Heal to %T", "Party") else
TargetUnit("player") CastSpellByName("Heal(Rank X)") TargetLastEnemy(); end
6。加速任務顯示速度
/script QUEST_DEscriptION_GRADIENT_CPS = 600000
/script RegisterForSave("QUEST_DEscriptION_GRADIENT_CPS")
/script DEFAULT_CHAT_FRAME:AddMessage("quest text will scroll faster now");
7。消除等待接受任務的時間
/script AcceptQuest()
8。這個宏可以在路上自動護送玩家做任務。
/assist [player name]
/cast 法術(Rank X)
/target [player name]
/follow [player name]
9。切換主副武器,詳情看第四條
/script PickupInventoryItem(16); PickupInventoryItem(17);
10。在沒有目標或者目標是敵人的時候給自己加增益魔法或治療。
CastSpellByName("Spell Name(Rank X)");
if ((SpellIsTargeting()) and (not UnitIsFriend("player","target")))
then
SpellTargetUnit("player");
end;
TargetLastEnemy();
11。切換雙手武器與單手+盾或者雙手揮舞武器
/script PickupInventoryItem(17);if(CursorHasItem()) then PickupContainerItem
(4,2);PickupContainerItem(4,1);PickupInventoryItem(16);else PickupContainerItem
(4,1);PickupInventoryItem(16);PickupContainerItem(4,2);PickupInventoryItem(17);end
12。設定「真實滑鼠視野」
/script CameraOrSelectOrMoveStart(arg1);
想取消就再次輸入。
13。切換近程技能欄和遠程技能欄
/script CURRENT_ACTIONBAR_PAGE = 2;
/script ChangeActionBarPage();
/cast aspectofmonkey (just use the left click)
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage();
/cast aspectofhawk (just use the left click)
14。牧師對隊友的一鍵加血,比如一號鍵給第一隊友加血,二號鍵給第二隊友加血,免除了還要滑鼠確
定目標的操作。依次類推,從第一個人到最後一個
給隊友1加血:
/script TargetUnit(GetPartyMember(1))
CastSpellByName(Heal(Rank X)) TargetLastEnemy()
給隊友2加血:
/script TargetUnit(GetPartyMember(2)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()
給隊友3加血:
/script TargetUnit(GetPartyMember(3)) CastSpellByName(Heal(Rank X)) TargetLastEnemy()
15。一鍵解決喂養寵物:這個宏會從最左邊的袋子里的第一個位置拿出食物喂養寵物,如果所在的位置
沒有食物,它會自動打開袋子。
/script if (not PlayerFrame.inCombat) then if (not GetContainerItemLink(4, 1)) then
OpenBag(4); else CastSpellByName("Feed Pet"); PickupContainerItem(4, 1); end end
16。術士宏
1)如果目標生命大於20,釋放抽取生命法術,否則使用靈魂抽取。
/script if (UnitHealth("target")>20) then CastSpellByName("Drain Life(Rank X)") else
CastSpellByName("Drain Soul(Rank 2)") end;
2)虛弱詛咒版本
/script if (UnitMana("target")>0) then CastSpellByName("Curse of Tongues(Rank X)") else
CastSpellByName("Curse of Weakness(Rank X)") end;
17.先治療自己,然後自動選中上次的敵人
/target Pugar //選擇自己,假設自己的名字是Pugar
/cast Lesser Heal (Rank 1) //施展次級治療rank1
/script TargetLastEnemy(); //重新選擇剛剛選擇的敵人
/script AttackTarget(); //攻擊,等同於右鍵點擊敵人
18.對於一個術士很有用的宏:首先將目標轉為拖怪手或者坦克正在攻擊的目標,然後命令寵物向前攻擊
,跟著一個虛弱詛咒。
/assist 隊伍中的拖怪手或者坦克的名字
/script PetAttack();
/cast Curse of Weakness (Rank X)
19.等治療完之後提醒別人注意下自己有可能被怪打,不加延時的話,就沒這個效果了。
/p healing %T, need 3s, don"t run away
/cast heal (rank 1)
/in 4 p cured %T 300HP,please notice the enemies turn on me^_^
20.在路上自動護送朋友做任務。
/assist [player name]
/cast 法術(Rank X)
/target [player name]
/follow [player name]
三:高級教程
WOW的宏函數庫可以去這兩個地方查:
] http://www.cosmosui.org/texts/BlizzardCommands.xml
] http://www.wowwiki.com/index.php/World_of_Warcraft_API
函數的使用比較簡單,學習過編程的都比較容易上手,基本的用法是在函數前加/script 來使用。比如
/script CURRENT_ACTIONBAR_PAGE = X;
/script ChangeActionBarPage();
就是將你的快捷欄翻到第X頁。
函數庫中有許多函數都是非常有用和方便的,比如一次打開所有包包:
/script OpenAllBags();
配合關閉包包的函數,一次關閉所有包的宏也可以實現:
/script CloseBag(0);
/script CloseBag(1);
/script CloseBag(2);
/script CloseBag(3);
/script CloseBag(4);
怎麼樣,下次你賣東西的時候不會一個個開包關包了吧?
使用函數還不是最恐怖的,恐怖的是WOW的宏是可以用條件判斷的,看下面這兩個:
/script if ( GetComboPoints() >= 3 ) then CastSpellByName("Rip(Rank 2)"); else if (
UnitMana("player") >= 40 ) then CastSpellByName("Rake(Rank 1)"); end end
據說這個包含if,then的宏可以讓盜賊實現自動根據combo點數來使用技能(未測試),其中還使用了角
色MANA值的調用,恐怖吧?還有這個查找spell的宏:
function GetSpellIdByItsName(myWantedSpell, myWantedRank)
local spellId = 1;
local spellBook = "spell";
local spellName, rankName;
spellName, rankName = GetSpellName(spellId, spellBook);
while (spellName ) do
if ( ( spellName == myWantedSpell ) and ( ( not myWantedRank ) or ( rankName = myWantedRank
) ) ) then return spellId; end
spellName, rankName = GetSpellName(spellId, spellBook);
end
return -1;
end
裡面可以自己定義function,還使用了while,do這樣的循環,是不是讓你想到了N種應用的可能呢?
遺憾的是,目前官方似乎沒有提供延時的宏,所以在戰斗中使用多種有延時的技能是無法實現的(無延時的技能可以實現同時使用),類似換其他武器-使用技能或法術-換回武器這樣的功能也無法實現,
(所謂用宏實現劍盾戰士換雙手武器MS再換回來是行不通的),不過使用COSMOS的朋友可以用/in 來實現非戰斗指令的延時,比如
/in 3 say hi 就會在3秒後說句hi。
/in 6 /script MoveForwardStart(arg1);
就會在6秒後向前跑。
雖然法術和技能無法用/in指令來延時,但這樣已經很強大了,比如,你可以編出各種運動的宏,如兜後,轉身等。PVP時估計是必不可少的。
下面是一個玩家寫的雙手武器戰士自動逃跑的宏:
/script UseContainerItem(0, 2);ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown
(12);ActionButtonUp(12);
/cast Thunder Clap(Rank 1);
/script TurnLeftStart(arg1);
/in 1 /script TurnLeftStop(arg1);ToggleAutoRun();
使用這個宏的條件:在大包包第二格放了回復葯,快捷欄第11,12分別是一單手一盾的快捷方式。
使用這個宏後,角色自動喝回復葯,裝備上盾,使用Thunder Clap(這三個動作同時進行),向後轉180度後開自動跑步鍵逃走。其中技能等可以根據需要自己改。怎麼樣,是不是很誇張啊,哈哈。
還有一些有用的宏:
切換裝備,
雙手切換單手並換第二個快捷欄,快捷欄第11,12分別是一單手一盾的快捷方式
/script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);
/script CURRENT_ACTIONBAR_PAGE = 2;
/script ChangeActionBarPage();
單手切換雙手並換回第一快捷欄,快捷欄12是一雙手武器快捷方式
/script ActionButtonDown(12);ActionButtonUp(12);
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage();
下面是另一篇
作者:重返榮譽
來源:17173
宏只是一種輔助的手段,希望通過下面的講解讓大家能輕松編輯屬於自己的宏。
先來看宏的結構:
/script
if (UnitHealthMax(target)>80)
then
CastSpellByName(''火球術(等級4)'')
SendChatMessage(''對 %T 使用火球術'', ''EMOTE'')
else
CastSpellByName(''奧術飛彈(等級2)'')
SendChatMessage(''對 %T 使用奧術飛彈'', ''EMOTE'')
這是一個沒有延時功能的宏,帶延時功能的宏將在稍後說明,
第一句/script 申明函數開始,這句是必須的,整個宏的中文意思是
如果你選定的目標的生命值大於80,就執行4級火球術,並告知周圍的人你對目標使用了這個動作,
%t就是代表目標,否則就執行2級飛彈,告知周圍的人你對目標使用了這個動作。
值得注意的是比如SendChatMessage(''對 %T 使用火球術'', ''EMOTE'') 中的EMOTE 如果你換成party就
只是隊內可見。
此例使用到的函數:
UnitHealthMax(target) 返回目標生命值
同樣此例如不要判斷就直接是
/script
CastSpellByName(''火球術(等級4)'')
SendChatMessage(''對 %T 使用火球術'', ''EMOTE'')
注意本文注重介紹思路!
下面是一些常用的宏
MoveBackwardStart 向後移動,用時寫成 MoveBackwardStart() 注意每句後面的;號並不是必須的,主要是習慣。
MoveBackwardStop 停止後退
StrafeLeftStart 向左移動
StrafeLeftStop 停止左移
StrafeRightStart 向右移動
StrafeRightStop 停止右移
ToggleAutoRun 向正面跑
TurnLeftStart 向左轉
TurnLeftStop 停止左轉
TurnRightStart 向右轉
TurnRightStop 停止右轉
jump() 跳