精華區beta WOW 關於我們 聯絡資訊
※ 本篇文章轉錄已取得作者本人同意 作者 hotdogee (Whitetooth) 看板 WOW 標題 [2.0] 新的 Macro 系統 時間 Wed Dec 6 02:56:56 2006 ─────────────────────────────────────── 文章版本:1.0.3 http://forums.worldofwarcraft.com/thread.html?topicId=44757854&sid=1 ╔══╗ ║前言║ ╚══╝ 2.0 對整個 Addon 架構與 Macro 語法都有許多重大的改變, 有少許 Addon 會完全不能用,大部分的 Addon 都必須要作者改寫成新的語法才能使用, 直接改 toc 編號雖然能嘗試載入,可是通常會出現很多錯誤。 支援 2.0 的 Addon 可以到這裡下載: http://www.wowinterface.com/downloads/index.php?cid=89&so=desc&sb=lastupdate 本篇主要是在探討 2.0 的 Macro 語法,在 2.0 裡幾乎所有目前比較複雜複雜 Macro 都將無法使用,不過有許多 Macro 是可以改寫成新的語法。 ╔═════╗ ║Macro 限制║ ╚═════╝ 在 2.0 裡主要有兩項關於 Macro 的限制。 一, 無法在 Macro 裡用<改變目標>與<使用技能>的 API, 例如 CastSpellByName() 與 TargetUnit() 這些都不能用, 只能使用內建的 Slash Command,例如 /cast 與 /target。 這表示你不再能用 /script if .... then CastSpellByName(...) end 之類的 Macro 了 (/script 本身還是可以用的)。 二, 不管 Macro 的第一個 /cast 是成功還是失敗, 都將會觸發 1.5 秒的 GCD,表示你將無法在同一個 Macro 裡串接多個 /cast, 除非你的第一個 /cast 的技能本來就不會有 GCD。 例如: /cast Shield Slam /cast Sunder Armor 這個將永遠只能放 Shield Slam,不會因為 Shield Slam 在 CD 中或是 Rage 不足而變成使用 Sunder Armor。 不過先別擔心,2.0 裡始有相對的配套的,對 Slash Command 做了大幅的強化: 1. 新增了許多新的 Slash Command。 2. 新增條件式語法。 3. 新增依序執行指令。 以下將依序作介紹。 ╔══════╗ ║unit基礎介紹║ ╚══════╝ 在介紹新功能之前,因為後面常常會用到 unit,所以我先在這邊解釋清楚, 並在此介紹新增的 focus unit。 以下是合法的unit列表: player - 代表你自己 pet - 代表你的寵物 partyN - 代表第N個隊友 (N=1,2,3,4) partypetN - 代表第N個隊友的寵物 (N=1,2,3,4) raidN - 代表第N個團隊友 (N=1-40) raidpetN - 代表第N個團隊友的寵物 (N=1-40) mouseover - 代表滑鼠上的單位 (也就是tooltip顯示的單位) target - 代表你的目標 focus - 這是 2.0 新增的,是第二目標,也就是說你可以不失去你目前的目標, 而對之前設定好的另一個 focus 目標作動作。 例: Mage 將 /focus 設為羊,並有一個永遠羊 focus 的 Macro, 跟著MA攻擊時不必為了補羊而把目標改成羊。 以上 unit 後面都可以接 "target" 表示該 unit 的目標, 例: partypet2target, targettarget, targettargettarget 都是合法的 unit。 ╔═══════╗ ║2.0 新增的指令║ ╚═══════╝ ⊙目標: /focus <unit> - 將 focus 設為 unit /targetlasttarget - 將目標設為上一個選取的目標 /cleartarget - 取消目前選取的目標 /clearfocus - 取消目前選取的 focus /targetenemy - 依序選取最近的敵人為目標 /targetfriend - 依序選取最近的友善的人為目標 /targetparty - 依序選取最近的 party 隊員為目標 /targetraid - 依序選取最近的 raid 隊員為目標 ⊙攻擊: /startattack <unit> - 開啟自動攻擊 unit /stopattack - 停止自動攻擊 ⊙/target、/focus 與 /startattack 都可以接受<unit>或是<name>作為參數, 如果沒有參數,預設 unit 為 target。 ⊙物品與裝備: /use <itemname> - 使用指定名稱,例: /use Major Healing Potion /use <inventoryslot> - 使用指定裝備ID,例: /use 13 為使用第一個 Trinket Inventory Slot 列表: 0 = ammo 5 = chest 10 = gloves 15 = back 1 = head 6 = belt 11 = finger 1 16 = main hand 2 = neck 7 = legs 12 = finger 2 17 = off hand 3 = shoulder 8 = feet 13 = trinket 1 18 = ranged 4 = shirt 9 = wrist 14 = trinket 2 19 = tabard /use <bagid> <bagslot> - 使用指定包包的格子裡的物品 BagID: 包包由右到左,分別是編號 0 到 4,例: 0 是 Backpack BagSlot: 由上到下,由左到右,編號從一開始 例: 16格包 14格包 1 2 3 4 1 2 5 6 7 8 3 4 5 6 9 10 11 12 7 8 9 10 13 14 15 16 11 12 13 14 /equip <itemname> - 裝備指定名稱的物品 /equipslot <inventoryslot> <itemname> - 在指定位置裝備指定名稱的物品 /userandom <item1>, <item2>, <item3>... - 隨機使用列表中的其中一個物品 ⊙寵物: /petattack - 攻擊 /petfollow - 跟隨 /petstay - 停留 /petpassive - 被動 /petdefensive - 防禦 /petaggressive - 主動 /petautocaston <spell> - 開啟指定技能自動使用功能 /petautocastoff <spell> - 關閉指定技能自動使用功能 ⊙使用技能: /stopcasting - 取消目前正在施法中的技能 /castrandom <spell1>, <spell2>, <spell3>... - 隨機使用列表中的其中一個技能 ⊙Action Bar: /changeactionbar <num> - 切換到 Action Bar 第 num 頁 (num=1-6) /swapactionbar <num1> <num2> - 在 num1 頁與 num2 頁間切換 ⊙Buffs/Auras: /cancelaura <name> - name 就是 buff 名稱 例: /cancelaura Blessing of Salvation ⊙按鈕動作: /click <buttonname> <mousebutton> - 可以模擬用滑鼠的指定按鍵使用按鈕 例: /click ActionButton1 /click ActionButton1 RightButton /click PetActionButton5 ⊙Macro 控制: /stopmacro - 停止執行Macro,通常配合條件是語法使用 例: /cleartarget /target Ouro /stopmacro [notarget] /cast Intercept "#" 或 "-" - 表示這行是註解,不會被執行 例: # blah blah blah ? Icon - 新增的問號圖示,會自動以該 Macro 的第一個技能的圖示替代 # show <item or spell> - 手動控制 Macro 要顯示哪個技能或物品的 圖示(使用問號圖示)與 Cooldown,如果沒有指定,就會顯示第一個技能或物品。 ⊙依序執行: /castsequence reset=N <spell/item1>, <spell/item2>, <spell/item3>... - 每按一次,會使用下一個技能或物品,本篇後面有詳細介紹。 可以看到有很多 Macro 在 2.0 裡不但更容易寫了, 以前使用物品只能指定包包的某一格,現在直接指定名稱就可以了。 ╔═════╗ ║條件式語法║ ╚═════╝ 2.0 新增了 Macro 專用的條件式語法,可以讓 Macro 在不同的情況執行相對的動作。 目前可以用在以下的指令裡: /cast, /use, /equip, /target, /focus, /assist, /click, /cancelaura, /changeactionbar, /stopmacro, /userandom, /castrandom, /castsequence 及 寵物指令。 以下大部分用 /cast 來當例子。 語法如下: /cast [判斷式1] 技能1; [判斷式2] 技能2; [判斷式3] 技能3; ... 運作方式:判斷式1會先被檢查,如果為"真"則施放技能1,如果為"假"則檢查判斷式2, 依此類堆,依序判斷直到結束。 判斷式簡介: ⊙combat - 戰鬥中 ⊙help - 目標是友善的 harm - 目標是敵人 ⊙exists - 目標存在 dead - 目標死亡 ⊙mounted - 你在坐騎上 swimming - 你在游泳 flying - 你在飛行 ⊙indoors - 你在室內 outdoors - 你在室外 ⊙stealth - 你在stealth狀態 ⊙stance - 你在任何一個stance stance:<#> - 你在第#個stance ⊙modifer - 按住shift或ctrl或alt任何一鍵 modifier:<shift/ctrl/alt> - 按住shift或ctrl或alt ⊙party - 目標是在你的party裡 raid - 目標在你的raid裡 group - 你在party或raid裡 group:<party/raid> - 你在指定的group類別裡 ⊙pet - 你的寵物存在 pet:<name/family> - 指定寵物名稱(例: Fluffy)或類別(例: Bat, Bear, Imp)存在 ⊙channeling - 你正在channel法術(例: Blizzard, Hellfire) channeling:<spell> - 你正在channel指定法術 ⊙equipped:<item> - 你裝備了item ⊙actionbar:<#> - 你正在使用第#頁Action Bar(#=1-6) ⊙button:<#> - 用第#個滑鼠鍵點(#=1-5)(1=左鍵, 2=右鍵, 3=中鍵) 此外還有以下特別的用法: 1. 在上面判斷式前加上"no"將其反向,例: nocombat - 當你在戰鬥外時為"真" 2. 在兩個判斷式間加入','代表AND,只有當兩邊同為"真"才為"真" 3. 在兩個判斷式的參數間加入'/'代表OR,當任何一邊為"真"就為"真" 4. target=<unit> - 把目標改為unit 舉些簡單的例子: /cast Greater Heal 就跟現在一樣老套的對目標施放Greater Heal(最高Rank) /cast [help] Greater Heal 如果目標是友善的,則施放Greater Heal /cast [help] Greater Heal; Smite 如果目標是友善的,則施放Greater Heal,否則施放Smite 以下應該不用我再說明也看的懂了吧: /cast [help, combat] Flash Heal; [help, nocombat] Greater Heal; Smite /cast [help] Greater Heal; [harm, combat] Smite; [harm, nocombat] Mind Flay /cast [stealth] Ambush; Backstab /cast [nostealth] Backstab; Ambush __________________________________________ 進階討論:stance Stance後面可以接一個數字,以下是對照表: 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 ------------------------------------------------------- 上面這個表並非絕對的,像是沒有解過Defensive Stance任務的戰士的Berserker 就是2而不是3,基本上看你的Stance Bar上的次序去算就對了。 註:Paladin 的 Arua 並不算 Stance,所以無法判斷。 範例: /cast [nostance] Bear Form 如果你不在任何一個Form,就變熊 /cast [stance:1] Overpower; [stance:2] Sunder Armor; [stance:3] Whirlwind 在Battle stance放Overpower,在Defensive stance放Sunder Armor, 在Berserker stance放Whirlwind。 /cast [stance:1] Growl; [stance:3] Claw 熊時放Growl,貓時放Claw /cast [nostance:3] Cat Form 如果不是貓就變貓,如果是貓,不會把你變回去人。 ______________________________________________________________________________ 進階討論:equipped equipped的用法跟stance類似,可是他的參數卻比較複雜一點, 可以是 1. 裝配部位 2. 裝備種類 3. 裝備副種類 已下列表: Two-Hand Bows Melee Weapon Bag Crossbows Ranged Weapon Shirt Daggers Chest Guns Back Fishing Pole Feet Fist Weapons Finger Miscellaneous Hands One-Handed Axes Head One-Handed Maces Held In Off-hand One-Handed Swords Legs Polearms Neck Staves Ranged Thrown Chest Two-Handed Axes Off Hand Two-Handed Maces Shoulder Two-Handed Swords Tabard Wands Thrown Cloth Trinket Idols Waist Leather One-Hand Librams Main Hand Mail Off Hand Miscellaneous Wrist Shields Totems Plate 範例: /cast [equipped:Two-Handed Swords] Mortal Strike; Heroic Strike 當你裝備雙手劍時放Mortal Strike,不然放Heroic Strike /cast [equipped:Two-Handed Swords/Two-Handed Maces/Two-Handed Axes/Polearms] Mortal Strike 當你裝備雙手武器時放Mortal Strike /cast [equipped:Shields] Shield Bash 當你裝備盾時放Shield Bash /cast [equipped:Shields, equipped:Daggers] Shield Slam 當你裝備盾"與"小刀時,放Shield Slam /cast [noequipped:Shields, equipped:Off Hand] Rampage 當你雙手持武時放Rampage ______________________________________________________________________________ 進階討論:target [target=unit]是個特殊的參數,他並不會為"真"或為"假", 而是會改變它後面的技能與判斷式的目標。 注意:這參數不會改變你目前的目標,只有/target類指令才能真的改變你的目標。 如果對unit語法不了解,可以參考前面「unit基礎介紹」 除了一般的unit外還可以設定: none - 沒有目標 預設目標就是target,所以以下兩個macro是相等的: /cast [help] Greater Heal /cast [target=target, help] Greater Heal 範例: /cast [target=player] Flash Heal 永遠對自己放Flash Heal /cast [help] Flash Heal; [target=targettarget] Flash Heal 如果目標是友善的,對目標放Flash Heal,如果不是就對目標的目標放Flash Heal /cast [help, combat] Flash Heal; [help, nocombat] Greater Heal; [target=targettarget, help, combat] Flash Heal; [target=player] Greater Heal 1. 如果目標是友善的且你在戰鬥中,對目標放Flash Heal 2. 如果目標是友善的且你不在戰鬥中,對目標放Greater Heal 3. 如果目標的目標是友善的且在戰鬥中,對目標的目標放Flash Heal 4. 如果以上都不成立則對自己放Greater Heal ______________________________________________________________________________ 更多範例: /use [target=self] Heavy Netherweave Bandages 不管目標是誰,永遠對自己使用Heavy Netherweave Bandages 戰士: /cast [nocombat, stance:1] Charge; [combat, stance:3] Intercept; [nocombat, nostance:1] Battle Stance; [combat, nostance:3] Berserker Stance 1. 如果在戰鬥外且在Battle stance,放Charge 2. 如果在戰鬥中且在Berserker stance,放Intercept 3. 如果在戰鬥外且不在Battle stance,放Battle stance 4. 如果在戰鬥中且不在Berserker stance,放Berserker stance /cast [stance:1] Overpower; Battle Stance 如果在Battle stance則放Overpower,不然就轉成Battle Stance /cast [help] Intervene; [target=targettarget, help] Intervene 法師: /cast [nocombat] Pyroblast; Fireball 如果在戰鬥外則放Pyroblast,不然就放Fireball /focus [target=focus,noexists] target; [target=focus,dead] target /cast [target=focus] Polymorph 如果原本的focus不存在或已經死亡,則設定目前的目標為focus。 對你的focus放polymorph。 獵人: /stopmacro [nopet] /cast [combat] Mend Pet; [nocombat] Feed Pet 如果沒有寵物,中斷Macro執行。 戰鬥中放Mend Pet,戰鬥外放Feed Pet。 /castsequence Aspect of the Hawk, Aspect of the Monkey 交互施放Aspect of the Hawk, Aspect of the Monkey /cast [modifier:ctrl] Aspect of the Cheetah /cast [modifier:alt] Aspect of the Monkey /cast [nomodifier] Aspect of the Hawk 根據有沒有按住alt或ctrl而放不同的Aspect 聖騎: /cast [help, combat] Righteous Defense; [target=targettarget, help, combat] Righteous Defense ╔══════╗ ║依序執行指令║ ╚══════╝ 未完成 * A new command /castsequence reset=N/target/combat/shift/alt/ctrl spell1, spell2, spell3 * The reset line can specify a number of seconds after which a sequence resets, or if it should reset on target change or leaving combat. * The sequence tracks the 'next' spell in the sequence until it resets, the next spell only advances on a successful cast. * You can specify a conditional at the start of the command before the reset to filter whether the sequence is used (You cannot use per-spell conditionals) * You will be able to use both spells and items in /castsequence * /castsequence will actually cycle the item or spell that it shows feedback for to match the next one in the sequence. /castsequence [harm] A, B, C; [noharm] D, E, F ╔══╗ ║其他║ ╚══╝ 未完成 -- World of Warcraft - Cenarius Whitetooth Lv60 Gnome Warrior Pickpocket Lv60 Human Rogue http://ctprofiles.net/89662 Hotdogee Lv60 Orc Warlock http://www.rpgoutfitter.com/WoW-GM/char.cfm?char=Whitetooth@US-Cenarius http://www.wretch.cc/album/album.php?id=hotdog&book=2 -- ※ Origin: 巴哈姆特<bbs.gamer.com.tw> ◆ From: 59-127-64-40.HINET-IP.hinet.net -- 本文仍在更新中 -- ──────────────────── 切り裂く 胸の奥の勇気 ── を断ち切る 白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.168.95