*盡量安裝super macro插件的以便更好的支持宏命令


1. 法師的法術反制提示宏,能根據自己的法術書中的反制技能,來提示是不是能夠使用.沒有冷卻時用/S頻道報出冷卻時間.其中的"94"需要根據具體反制在法術書中的位置做調整.因為字節超過255,以上需要SUPERMACRO插件支持.
/script local start,duration=GetSpellCooldown(94,1);SCM=SendChatMessage;cd=GetTime()-start;cd=math.floor(duration-cd);if (start>0 and duration>0) then SCM("法術反制CD還有"..cd.." 秒.","say") elseif UnitCanAttack("player","target") then SpellStopCasting();CastSpellByName("法術反制");SCM("已經對>>"..UnitName("target") .."<<反制!","say") end

2 法師的開飾品,然后再攻擊的宏.其中的14為最下面一個飾品.另一個飾品需要改為13
同樣的,這個宏適合其它飾品的使用,這個宏好處是,不會在屏幕上頻繁的提示"物品沒有準備好"
/script if GetInventoryItemCooldown("player",14)==0 then UseInventoryItem(14)
/施放 寒冰箭


3打斷施法在地球時代要用以下腳本才行。
/run SpellStopCasting()
/cast Blink
這個宏就會打斷你的施法然后釋放閃現。下面的技能換成冰箱拉打斷啦都行。


4氣定神閑+炎爆術
/施放 氣定神閑
/script SpellStopCasting();
/施放 炎爆術




5自動補 冰甲術,奧術智慧,魔法抑制
缺啥補啥,閑著沒事按按能強身健體,定國安邦……
/script local n,s,k,j,b,f={"tArm","lSen","hMag"},{"冰甲術","奧術智慧","魔法抑制"};for k=1,3 do f=nil;for j=1,16 do b=UnitBuff("player",j);if b and strfind(b,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;


6自動把被控制的隊友變羊,小隊,團隊通用版
對于會控制玩家的BOSS很有用,比如哈卡,AQ神廟1
/script local n,p,i,t=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i;if UnitCanAttack("player",t) then TargetUnit(t);CastSpellByName("變形術");SendChatMessage("%t 被控制,我把他變羊了~",p);break;end;end;




7隨機變羊,豬,烏龜宏
/script local s,m,r={"",":龜",":豬"},{"%t變羊了","%t是烏龜","%t是豬"},random(3); CastSpellByName("變形術"..s[r]);SendChatMessage(m[r],"yell");
可以根據變的種類喊話,想喊什么自己改




8火沖打圖騰
/script local t,n,i,_={"根基","戰栗","地縛","灼熱","清毒"};for _,i in t do n=i.."圖騰";TargetByName(n,1);end;CastSpellByName("火焰沖擊(等級 1)");




9/script if not buffed("Ice Block", 'player') then cast("Ice Block") end
這個命令可以狂按來釋放冰箱而不用擔心取消冰箱。
這包括奧術能量。

10取消冰箱可以/unbuff Ice Block也可以手動點掉。


11/script if UnitCanAttack("target","player") then CastSpellByName("暴風雪");else CastSpellByName("暴風雪(等級 1)");end;
有目標頂級下雪 沒目標1級下雪pvpe雙用 省藍 抓賊....


12/script SpellStopCasting();CastSpellByName("法術反制")
停止當前施法 反制
/script SpellStopCasting();CastSpellByName("閃現術")
同上...


13法師冰箭宏
觸發了節能自動釋放奧彈
裝備不好的法師可以考慮
/script i=1;m=0;while(UnitBuff("player",i)~=nil) do if(strfind(UnitBuff("player",i), "Spell_Shadow_ManaBurn") ~=nil) then m=1; end; i=i+1;end; c=CastSpellByName; if(m==1) then c("Arcane Missiles"); else c("Frostbolt"); end;


14/施放 奧術強化/script SpellStopCasting();/script UseInventoryItem(13); /script UseInventoryItem(14);短暫放飾品的下面那一格此宏直接復制粘貼即可,再不會你好去自殺了AP一定要比ZG護符先啟動,


15奧術強化+護符+炎爆術
護符放哪里無所謂,會自動開已經冷卻的護符
/script local c,x,u,s,p,d,e,_=CastSpellByName,GetInventoryItemCooldown,UseInventoryItem,SpellStopCasting,"player";c("奧術強化);s();_,d,e=x(p,13);if d<2 and e then u(13);else _,d,e=x(p,14);if d<2 and e then u(14);end;end;s();c("炎爆術");

16氣定神閑+炎爆術
/施放 氣定神閑
/script SpellStopCasting();
/施放 炎爆術

17平時冰箭,出靈風8件效果就火球
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Telep") then f=1;break;end;end;if f then c("火球術");else c("寒冰箭");end;

這類宏有個特點,平時用小技能,在特定buff出現后換大技能,比如這里冰箭就是小技能,火球就是大技能
既然分出了大小,那就知道可以怎么改了,火球術可以改成其他“大技能”,比如 炎爆術
冰箭可以換成其他“小技能”,比如 灼燒,都是中國字,別跟我說你不會

18平時冰箭,出奧術專注效果就火球
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"ManaB") then f=1;break;end;end;if f then SpellStopCasting();c("火球術");else c("寒冰箭");end;

同上,火球術可以改成其他的,比如 炎爆術,奧術飛彈,冰箭可以改成 灼燒

平時冰箭,出奧術專注 或 出靈風8件效果就火球
奧術專注是下個法術免費,所以一旦出了特效,要馬上取消當前法術,換大的,否則免費特效就被當前法術浪費了
而靈風8件是下個法術瞬發,當前正在引導的不受影響,所以不用取消當前的
由于256字節限制,要取消兩個都取消,否則都不取消,那就是說必須都取消,這樣靈風會損失當前引導的法術
這種損失就是半個冰箭或者半個灼燒,如果大家認為這種損失可以接受的話,就用這個合并版:
/script local c,i,j,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and (strfind(b,"ManaB") or strfind(b,"Telep")) then f=1;break;end;end;if f then SpellStopCasting();c("火球術");else c("灼燒");end;

1級奧暴騙節能,出節能就用頂級奧暴
/script local c,i,b,f=CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"ManaB") then f=1;break;end;end;if f then SpellStopCasting();c("魔暴術");else c("魔暴術(等級 1)");end;

19灼燒疊5層就火球,否則繼續灼燒
/script local c,i,d,n,f=CastSpellByName;for i=1,16 do d,n=UnitDebuff("target",i);if d and strfind(d,"SoulB") then f=1;break;end;end;if f and n==5 then c("火球術");else c("灼燒");end;

20打賊奧爆宏
有目標就放最高級奧暴,沒有目標就放1級奧暴
/script if UnitCanAttack("target","player") then CastSpellByName("魔暴術");else CastSpellByName("魔暴術(等級 1)");end;

21自動補 冰甲術,奧術智慧,魔法抑制
缺啥補啥,閑著沒事按按能強身健體,定國安邦……
/script local n,s,k,j,b,f={"tArm","lSen","hMag"},{"冰甲術","奧術智慧","魔法抑制"};for k=1,3 do f=nil;for j=1,16 do b=UnitBuff("player",j);if b and strfind(b,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;

22自動把被控制的隊友變羊,小隊,團隊通用版
對于會控制玩家的BOSS很有用,比如哈卡,AQ神廟1
/script local n,p,i,t=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i;if UnitCanAttack("player",t) then TargetUnit(t);CastSpellByName("變形術");SendChatMessage("%t 被控制,我把他變羊了~",p);break;end;end;

23隨機變羊,豬,烏龜宏
/script local s,m,r={"",":龜",":豬"},{"%t變羊了","%t是烏龜","%t是豬"},random(3); CastSpellByName("變形術"..s[r]);SendChatMessage(m[r],"yell");
可以根據變的種類喊話,想喊什么自己改
法師自動制造各種魔法寶石
SuperMacro版,宏寫不下
左邊窗口:
/script ConjureManaStone();

右邊窗口:
Code (c):

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function ConjureManaStone() 
local x,j,b,s,l,f={"紅寶石","黃水晶","翡翠","瑪瑙"},1; 
while j<5 do 
f=nil; 
for b=0,4 do 
for s=1,18 do 
l=GetContainerItemLink(b,s); 
if l and strfind(l,"法力"..x[j]) then 
f=j;break; 
end; 
end; 
if f then break;end; 
end; 
if f then j=j+1; 
else CastSpellByName("制造魔法"..x[j]);break; 
end; 
end; 
end;


24冰箱開關
冰箱宏
/script SpellStopCasting(); if (GetSpellCooldown(159,0) == 0) then CastSpell(159,0); end
取消冰箱宏
/script if (GetTime() - GetSpellCooldown(159,0) < 10) then CastSpell(159,0); end

效果說明:
冰箱按一次有時候不起作用,不小心按兩次又取消了,很多法師都頭疼這個問題。
這里將冰箱和取消冰箱做成兩個宏。
需要冰箱的時候,拼命的按第一個宏就是了,再以不怕多按又把冰箱給取消了。

補充:
注意(159,0)的159,每個人這個數字都不同,再實際使用的時候請替換成自己的實際數字。這個數字是法術順序號,也就是打開技能書,從第一個也能一頁一頁的往下數,數到第159個如果是冰箱,那么你就用159,如果數到第100個法術是冰箱,那你就用100。

小技巧:
利用下面的宏,可以輸出第x個法術是什么,幫你檢驗。
/script DEFAULT_CHAT_FRAME:AddMessage(GetSpellName(X,0));


25霜之新星
/script if ((UnitMana("player"))<65) then CastSpellByName("霜之新星(等級 1)");end
/script if ((UnitMana("player"))>=65) then CastSpellByName("霜之新星");end


效果說明:施放頂級(4級別)霜之新星,如果藍不夠,則用最節約的1級霜之新星。
這個宏設置的藍低于65選擇1級新星,你可以自行修改。

[color="Orange"]12:冰錐
/script if ((UnitMana("player"))<50) then CastSpellByName("冰錐術(等級 1)");end
/script if ((UnitMana("player"))>=500) then CastSpellByName("冰錐術");end


效果說明:類似的上一個宏,這個宏用來再藍少的時候自動用最低級別級別(1級別)的冰錐術。
這兩個宏,在風箏ae精英的時候特別有用,用來節約藍,和拖延時間回藍。


26
/script for bag = 0,4,1 do for slot = 1, GetContainerNumSlots(bag), 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"ff9d9d9d") then DEFAULT_CHAT_FRAME:AddMessage("Selling "..name); UseContainerItem(bag,slot) end; end; end [QUOTE]效果說明:搜索背包所有的格,如果發現內有灰色品質物品,則賣掉它。補充:在遇到商人打開交易界面的時候使用這個宏 


27做水

/stand
/script if (UnitMana("player")>780) then CastSpellByName("造水術(等級 7)") else UseContainerItem(0, 1); end;


效果說明:有藍就做水,藍不足了就自動做下來喝水,前提要把水放在第一個包第一個位置

[color="Orange"]4:吃喝
/script if UnitHealth('player') / UnitHealthMax('player') < 0.7 then UseContainerItem(0, 2); end
/script if UnitMana('player') / UnitManaMax('player') < 0.7 then UseContainerItem(0, 1); end


效果說明:這個宏是給懶法師用的。如果生命或者藍低于70%則做下來自動選擇是吃還是喝。
前提是水放在第一個包第一個位置,面包放到第二個位置


28最完美的冰箱宏:
/script SpellStopCasting(); CancelBuff("Ice Block"); if (GetSpellCooldown(179,0) >= 2) then CastSpell(147,0); else CastSpellByName("Ice Block"); end;
功能:中斷正在施放法術并使用冰箱;如果在冰箱中就解冰箱;如果冰箱冷卻時間大于2秒則使用急冷。傳統冰箱宏能解決冷卻中使用急冷的問題,但是又沒辦法做到像按技能書里拉出來冰箱技能那樣1鍵開1鍵解,這個宏把2者合并了,需要supermacro的cancelbuff語句支持
注:其中179是我目前的冰箱編號,147是急冷編號,下同


29一鍵4種魔法石按順序吃:
/use Mana Ruby
/use Mana Citrine
/use Mana Jade
/use Mana Agate
從大到小順序,不用再為他們準備不同的格子了


30/stand 
/script if (UnitMana("player")>[你的造水術消耗的法力值]) then castSpellByName("造水術(等級 X)") else UseContainerItem(0, 1); end; 
水放在包的0。1位置

自動飲食:
--- 
/script if UnitHealth('player') / UnitHealthMax('player') < 0.8 then UseContainerItem(X1, X2); end 
/script if UnitMana('player') / UnitManaMax('player') < 0.8 then UseContainerItem(X1, X2); end 

冰環寒流
---
/cast Frost Nova(Rank 4) 
/cast Frost Nova(Rank 1) 
/script last_cast, cooldown = GetSpellCooldown(21, SpellBookFrame.bookType); if cooldown==0 then CastSpellByName("Cold Snap") end; 


協助宏
--- 
/script ClearTarget(); 
/assist Character 
--- 
自動釋放免費奧術飛彈
--- 
/script local q; local t;for i=0,15,1 do t=GetPlayerBuffTexture(i); if (t and string.find(t, "ManaBurn")) then q=1; break; end; end; if(q ~= nil) then CastSpellByName("Arcane Missiles(Rank X)") else CastSpellByName("[Spell you use often](Rank X)"); end; 
--- 
Arcane Missiles(Rank 7)為 奧術飛彈(等級 7)其他的類似

ManaBurn是節能的BUFF這個不用改中文 其他的技能名稱要改

88靈風宏,中文客戶端把火球冰箭的名字改成中文應該就能用
/script i=1;m=0;while(UnitBuff("player",i)~=nil) do if(strfind(UnitBuff("player",i),"Spell_Shadow_Teleport")~=nil) then m=1; end;i=i+1;end; c=CastSpellByName; if(m==1) then c("Fireball");else c("Frostbolt");end;

灰色物品自動售出 不知道是否好用……

當你買賣東西的時候自動售出所有灰色物品

Q u o t e:

/script for bag = 0,4,1 do for slot = 1, GetContainerNumSlots(bag), 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"ff9d9d9d") then DEFAULT_CHAT_FRAME:AddMessage("Selling "..name); UseContainerItem(bag,slot) end; end; end 


31法師解詛咒 
/施放 解除次級詛咒 
/script if ( SpellIsTargeting() ) then SpellTargetUnit ("Player");end 

這個宏在你指向目標是敵人或者沒有目標時對自己施放解除次級詛咒法術,并且指向的目標不變。這在對付術士或者中了其他詛咒時非常有用,只需要按一下宏便可以將詛咒驅除,并且指向的目標仍然是敵人。 
在當前目標是指向一個可以被施放魔法抑制的對象時,會對該目標施放而不是自己。 

把第一行換成 /施放 魔法抑制(等級 x) 就變成魔法抑制宏了。把x改為你當前學會的魔法抑制的最高等級