《魔兽世界》怀旧服法师宏设置攻略
魔兽世界60年代经典怀旧服除了各职业练级问题,宏设置也成为很多人非常头疼的问题。那么对于法师职业来说,宏命令怎么设置?下面就为大家带来魔兽世界60怀旧服法师宏设置教程。
魔兽世界怀旧服法师宏怎么设置
值得推荐的是一个叫做Super Macro的插件,它支持7000字长的宏,还支持/use命令,自己寻找背包内物品而不用把物品放在固定格子再做宏来使用,还支持宏显示宏内含的技能的冷却倒计时,还支持以buff名字来取消buff以下我会介绍一些基于这个插件的宏(基本都是我自创或者改写的,如果发现网上有类似的绝对我发布在别处被人引用的):
首先介绍个取得技能名字的语句
/script DEFAULT_CHAT_FRAME:AddMessage(GetSpellName(X,0));
可以把这句做成宏,然后要用的时候复制里面的内容到聊天栏,把这里的X请换成数字,可以显示出相应编号的技能,想要知道技能编号就一点点用数字试,因为不同天赋技能书的技能编号是不同的(因为有些技能要天赋支持)
奥术智慧宏:
/script r=5;l={1,14,28,42,56};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for i=r,1,-1 do if (t>=l[ i]-10) then CastSpellByName("奥术智慧(等级 "..i..")");break;end;end;
/script if UnitIsUnit("player","target") then TargetLastTarget();end;
/script if( SpellIsTargeting()) then SpellTargetUnit("player");end;
效果:根据目标等级自动选择相应等级的奥术智慧,这个宏网上到处都是但是因为宏长度的关系所以不完善,我把它改了改但是超过255个字了所以必须要supermacro支持。原版没有的功能:如果目标为不可施放单位(敌对,npc等)则对自己使用并且不丢失目标,如果无目标则对自己使用并且保持无目标。
绷带宏:
/script if (GetZoneText() == "阿拉希盆地") then UseItemByName("污染者的符文布绷带"); elseif (GetZoneText() == "战歌峡谷") then UseItemByName("战歌峡谷符文布绷带"); elseif (GetZoneText() == "奥特兰克山谷") then UseItemByName("奥特兰克厚符文布绷带"); else UseItemByName("厚符文布绷带");end;
/script if( SpellIsTargeting()) then SpellTargetUnit("player");end;
效果:根据3大战场和其他场所自动选择对应3大战场的绷带及厚符问绷带,无目标/目标为敌人/目标不可被绷带/目标为自己时给自己打绷带,目标为友方时对其打绷带。身上带4种绷带就好无论放什么位置。原来为传统宏使用者设计过这个宏但是要分2个先点一个取变量很麻烦,现在既然用这个插件就合并成一键了。
强制对自己绷带宏:
/script TargetUnit("player");
/script if (GetZoneText() == "阿拉希盆地") then UseItemByName("污染者的符文布绷带"); elseif (GetZoneText() == "战歌峡谷") then UseItemByName("战歌峡谷符文布绷带"); elseif (GetZoneText() == "奥特兰克山谷") then UseItemByName("奥特兰克厚符文布绷带"); else UseItemByName("厚符文布绷带");end;
/script TargetLastTarget();
功能如上一个只是无论什么情况都对自己打(盗贼用丢星,法师用没事)
最完美的冰箱宏:
/script SpellStopCasting(); CancelBuff("寒冰屏障"); if (GetSpellCooldown(179,0) >= 2) then CastSpell(147,0); else CastSpellByName("寒冰屏障"); end;
功能:中断正在施放法术并使用冰箱;如果在冰箱中就解冰箱;如果冰箱冷却时间大于2秒则使用急冷。传统冰箱宏能解决冷却中使用急冷的问题,但是又没办法做到像按技能书里拉出来冰箱技能那样1键开1键解,这个宏把2者合并了,需要supermacro的cancelbuff语句支持
注:其中179是我目前的冰箱编号,147是急冷编号,下同
解毒剂宏:
/use 特效抗毒药剂
/script if( SpellIsTargeting()) then SpellTargetUnit("player");end;
功能:对目标使用解毒剂,无目标/目标为敌人/目标为自己/目标无法使用该物品则对自己使用
铁皮手雷宏:
/script SpellStopCasting();
/use 铁皮手雷
功能:使用手雷,再按为取消;不限制手雷放在背包什么位置
一键喝红:
/use 特效治疗石
/use 特效治疗药膏
/use 作战治疗药水
/use 特效治疗药水
效果:按顺序使用极效治疗石,战场5分钟冷却的瓶子,荣誉瓶子,极红
一键萝卜/夜龙:
/use 鞭根块茎
/use 夜龙之息
一键4种魔法石按顺序吃:
/use 法力红宝石
/use 法力黄水晶
/use 法力翡翠
/use 法力玛瑙
从大到小顺序,不用再为他们准备不同的格子了
以上宏都需要super macro支持
再来其他一些常规宏:
冰环宏:
/script SpellStopCasting(); local start, duration = GetSpellCooldown(156, 0); if ((GetTime() - start) <= 2) or ((GetTime() - start) >= 19) then CastSpellByName("冰霜新星(等级 1)"); else CastSpellByName("急速冷却"); end
效果:放冰环,冷却时间如果大于2秒小于19秒则使用急冷。
注:其中156是我目前的1级冰环编号
吹风宏:
/script local start, duration = GetSpellCooldown(151, 0); if ((GetTime() - start) <= 2) or ((GetTime() - start) >= 9) then CastSpellByName("冰锥术(等级 5)"); else CastSpellByName("急速冷却"); end;
效果:放吹风,冷却时间大于2秒小于9秒则使用急冷,用来狂按实现冰环后双吹风
注:其中151是我目前的5级吹风编号
法术增符:
/script if not UnitIsFriend("player","target")then TargetUnit("player");end;
/cast 魔法增效(等级 4)
/script if( SpellIsTargeting()) then SpellTargetUnit("player");end;
/script if UnitIsUnit("player","target") then TargetLastTarget();end;
目标为队友则对其使用,无目标/目标自己/目标敌人/目标不可使用该技能则对自己使用
法术抑制:
/script if not UnitIsFriend("player","target")then TargetUnit("player");end;
/cast 魔法抑制(等级 5)
/script if( SpellIsTargeting()) then SpellTargetUnit("player");end;
/script if UnitIsUnit("player","target") then TargetLastTarget();end;
同上,和alt cast说再见吧
气定猪:
/cast 气定神闲
/script SpellStopCasting();
/cast 变形术:猪
气定大火球:
/cast 气定神闲
/script SpellStopCasting();
/cast 炎爆术(等级 8)
奥强+护符双开(护符放在下面一格)
/script UseInventoryItem(14);
/cast 奥术强化
双开大火球(跑动中需连按3下,原地不动1下就好)
/script UseInventoryItem(14);
/script SpellStopCasting();
/cast 奥术强化
/script SpellStopCasting();
/cast 气定神闲
/script SpellStopCasting();
/cast 炎爆术(等级 8)
单开气定冰蛋
/script UseInventoryItem(14);
/cast 气定神闲
/script SpellStopCasting();
/cast 寒冰箭(等级 10)
中断正在施放法术并反制
/script SpellStopCasting()
/script CastSpellByName('法术反制')
盆地求助宏:
/script SendChatMessage ("Help "..GetSubZoneText().."!!", "Raid", nil, 1);