萨满祭司吧 关注:55,299贴子:1,002,932

宏基础教程(ZT自多玩)

只看楼主收藏回复

1


1楼2008-02-23 16:00回复
    终结宏教程 (转)

    都是经常出现的问题
    由于WOW 2.0即将来临,宏的写法也将发生巨大变化,由于CastSpellByName()和UseAction()两个核心函数的禁用,到时这里很多宏将需要新的写法,甚至失效.基础知识

    1. 关于一键xx宏

    公共CD是WOW中的基本法律,你平时要遵守,用宏仍然要遵守,所以那些需要按一下就能“变羊气定炎爆火冲冰锥”的可以离开了,我们无能为力,这里所说的一键xx是指:同一个宏,你每按一下做一个动作,同一个宏反复使用可以智能做出一系列反应,两次按键之间清自己留出公共CD时间

    2. 动作条编号

    下面的宏经常会要求你自己填某技能在动作条上的编号,这是因为技能/物品的冷却时间,射程等信息只能这样得到
    动作条共有6个,每条包括12个按钮,共72个,通过菜单->界面设置 可以全部显示出来
    图上动作条上红色数字是每条第一个按钮和最后一个按钮的编号
    实际上暴雪提供了120个按钮,不过后面73-120不显示的,通过Flexbar等插件可以全部看到


    2楼2008-02-23 16:01
    回复
      团队部分

      既然是团队部分,那就说明只有在团队下才能使用,不在团里的别跑来问我为什么不能用!
      RL专用,给目标上团队标记

      现在团长可以给目标上星星,三角等标记,但每次点右键很不方便,试试这个
      /script SetRaidTarget("target",图标编号);
      上边红色数字取值 0-8
      0 = 取消图标
      1 = 黄色四角星
      2 = 桔黄色圆
      3 = 紫色钻石
      4 = 绿色三角形
      5 = 白色月亮
      6 = 蓝色方块
      7 = 红色X
      8 = 骷髅
      这样可以做8个宏,快捷键分别设成Ctrl-F1 ... Ctrl-F8,这个随意,这样给团员分配目标
      比如放逐,变羊,休眠等的时候能够事半功倍
      而且后面有些宏需要标记作为依据,可以和这个宏搭配使用
      所以,先给你的队员分配好每个人专管的数字吧!
      自动锁定RL给自己分配的怪,放逐/变羊/休眠并报告,怎么处理随你便
      这个宏配合上面的RL分配标记宏一起使用,首先你需要RL给你分配你专门照顾的目标的图标
      具体对应关系看上边那个宏,假如是黄色四角星,就是1
      把下边红色的数字换成RL给你分配的数字
      术士版
      /script local i,t;for i=1,GetNumRaidMembers() do t="raid"..i.."target";if GetRaidTargetIndex(t)==RL分给你的编号 then TargetUnit(t);CastSpellByName("放逐");SendChatMessage("%t放逐中","yell");break;end;end;
      法师版
      /script local i,t;for i=1,GetNumRaidMembers() do t="raid"..i.."target";if GetRaidTargetIndex(t)==RL分给你的编号 then TargetUnit(t);CastSpellByName("变形术");SendChatMessage("%t变羊中","yell");break;end;end;
      德鲁伊版
      /script local i,t;for i=1,GetNumRaidMembers() do t="raid"..i.."target";if GetRaidTargetIndex(t)==RL分给你的编号 then TargetUnit(t);CastSpellByName("休眠");SendChatMessage("%t催眠中","yell");break;end;end;
      注意,这个宏不是每次都能奏效,因为它实际上是通过检查你队友目标是不是制定目标来实现的,
      当包括团长的团队中没有任何人选中你的目标时你只能手动去选择了

      密语团内所有指定职业 RL用比较好
      一次M团队中所有指定职业,打Nef这种BOSS时应该很有用,注意别狂点,会刷屏……
      指定职业,说话内容自己改
      /script local i,p;for i=1,40 do p="raid"..i;if UnitClass(p)=="牧师" then SendChatMessage("停止治疗!!","whisper",nil,UnitName(p));end;end;
      根据目标职业要buff
      如果目标是法师就M他要智力,牧师要韧,小D要爪子
      /script local x,c,i,s={["法师"]="智力",["牧师"]="韧",["德鲁伊"]="爪子"},UnitClass("target");for i,s in x do if i==c then SendChatMessage("给个"..s..",谢谢~","whisper",nil,UnitName("target"));end;end;

      报告当前团队活着、死亡、掉线人数,还有boss血量宏

      /script local c,o,d,i,n,a,b,_=0,0,0;for i=1,40 do n,_,_,_,_,_,_,a,b=GetRaidRosterInfo(i);if n then c=c+1;if a then o=o+1;end;if b then d=d+1;end;end;end;SendChatMessage("%t 还剩"..UnitHealth("target").."%,共"..c.."人,死亡"..d..",掉线"..c-o,"raid")

      给目标所在小队加群体Buff,并报告,团队/小队均可
      /法师版
      /script local t,n,g,i,_;CastSpellByName("奥术光辉");if UnitInRaid("player") then t=UnitName("target");for i=1,40 do n,_,g=GetRaidRosterInfo(i);if t==n then SendChatMessage(g.." 队智力已加过","yell");break;end;end;end
      /牧师版
      /script local t,n,g,i,_;CastSpellByName("坚韧祷言");if UnitInRaid("player") then t=UnitName("target");for i=1,40 do n,_,g=GetRaidRosterInfo(i);if t==n then SendChatMessage(g.." 队韧已加过","yell");break;end;end;end
      /德鲁伊版
      /script local t,n,g,i,_;CastSpellByName("野性赐福");if UnitInRaid("player") then t=UnitName("target");for i=1,40 do n,_,g=GetRaidRosterInfo(i);if t==n then SendChatMessage(g.." 队爪子已加过","yell");break;end;end;end
      团队中自动给血最少的人刷血宏
      /script local p,h,i,j="raid",UnitHealth,1;for j=2,GetNumRaidMembers() do if h(p..i)>h(p..j) then i=j;end;end;p=p..i;if not UnitIsDead(p) and UnitIsVisible(p) then TargetUnit(p);CastSpellByName("快速治疗");TargetLastTarget();end;
      快速治疗可以换成别的法术,看你什么职业了

      团队复活宏

      本宏对所有复活职业通用,但首先你要知道你的复活技能所在按钮的序号,看上边基础知识图
      用你查到的复活所在的序号替换红色数字
      /script local p,i,t="raid";for i=1,40 do t=p..i;if UnitIsDead(t) then TargetUnit(t);if IsActionInRange(你复活按钮编号) then UseAction(你复活按钮编号);SendChatMessage("我开始复活 %t",p);break;end;end;end;


      4楼2008-02-23 16:02
      回复
        一键驱散宏 - 256字节取代Decursive !!!

        注意:
        如果这个宏因为你和队友中间隔着柱子等障碍物而停止的话,请你走几步
        宏只能帮你简化操作,不能帮你破坏游戏规则
        牧师,德鲁伊,萨满祭司的提供了单独的 小队版 和 团队版,请注意版本,solo无效
        法师和圣骑士的是团队/小队自适应版,solo无效
        原因是法师,圣骑士只有一种解除魔法,而牧师,德鲁伊,萨满祭司有两种,限于256字节写不下了

        ===========================牧,德,萨 小队版========================
        牧师版
        /script local s,p,i,d,t,_={["Magic"]="驱散魔法",["Disease"]="驱除疾病"};for i=1,4 do p="party"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end
        德鲁伊版
        /script local s,p,i,d,t,_={["Poison"]="驱毒术",["Curse"]="解除诅咒"};for i=1,4 do p="party"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end
        萨满祭司版
        /script local s,p,i,d,t,_={["Poison"]="消毒术",["Disease"]="祛病术"};for i=1,4 do p="party"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end

        ===========================牧,德,萨 团队版========================

        牧师版
        /script local s,p,i,d,t,_={["Magic"]="驱散魔法",["Disease"]="驱除疾病"};for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end
        德鲁伊版
        /script local s,p,i,d,t,_={["Poison"]="驱毒术",["Curse"]="解除诅咒"};for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end
        萨满祭司版
        /script local s,p,i,d,t,_={["Poison"]="消毒术",["Disease"]="祛病术"};for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) then d,_,t=UnitDebuff(p,1,1);if d then TargetUnit(p);CastSpellByName(s[t]);TargetLastTarget();break;end;end;end

        ===========================法,骑 团队,小队自适应版===================

        法师版
        /script local n,p,t,i,d=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i;if UnitDebuff(t,1,1) and CheckInteractDistance(t,4) then TargetUnit(t);CastSpellByName("解除次级诅咒");TargetLastTarget();break;end;end;
        圣骑士版
        /script local n,p,t,i,d=4,"party";if UnitInRaid("player") then n=40;p="raid";end;for i=1,n do t=p..i;if UnitDebuff(t,1,1) and CheckInteractDistance(t,4) then TargetUnit(t);CastSpellByName("清洁术");TargetLastTarget();break;end;end;
        团队自动补单体buff宏
        说明:
        自动搜索团队内没有相应单体buff(真言术:韧,奥术智慧,野性印记)的团队成员,
        为其补上,掉线的,死亡的,不在射程的都会忽略掉。
        牧师版 - 真言术:韧
        /script local i,p;for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) and not UnitBuff(p,1,1) then TargetUnit(p);CastSpellByName("真言术:韧");TargetLastTarget();break;end;end;
        牧师版 - 神圣之灵
        /script local i,j,b,f,p;for i=1,40 do f=nil;p="raid"..i;if CheckInteractDistance(p,4) then for j=1,16 do b=UnitBuff(p,j);if b and strfind(b,"eSpir") then f=1;break;end;end;if not f then TargetUnit(p);CastSpellByName("神圣之灵");break;end;end;end;
        法师版:
        /script local i,p;for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) and not UnitBuff(p,1,1) then TargetUnit(p);CastSpellByName("奥术智慧");TargetLastTarget();break;end;end;
        德鲁伊版:
        /script local i,p;for i=1,40 do p="raid"..i;if CheckInteractDistance(p,4) and not UnitBuff(p,1,1) then TargetUnit(p);CastSpellByName("野性印记");TargetLastTarget();break;end;end;
        圣骑士版 - 王者祝福
        /script local i,j,b,f,p;for i=1,40 do f=nil;p="raid"..i;if CheckInteractDistance(p,4) then for j=1,16 do b=UnitBuff(p,j);if b and strfind(b,"fKing") then f=1;break;end;end;if not f then TargetUnit(p);CastSpellByName("王者祝福");break;end;end;end;
        圣骑士版 - 拯救祝福
        /script local i,j,b,f,p;for i=1,40 do f=nil;p="raid"..i;if CheckInteractDistance(p,4) then for j=1,16 do b=UnitBuff(p,j);if b and strfind(b,"fSalv") then f=1;break;end;end;if not f then TargetUnit(p);CastSpellByName("拯救祝福");break;end;end;end;
        圣骑士版 - 光明祝福
        /script local i,j,b,f,p;for i=1,40 do f=nil;p="raid"..i;if CheckInteractDistance(p,4) then for j=1,16 do b=UnitBuff(p,j);if b and strfind(b,"fHeal") then f=1;break;end;end;if not f then TargetUnit(p);CastSpellByName("光明祝福");break;end;end;end;
        可能遇到的问题:
        自动选中了目标,却超出射程。那就麻烦你走两步,宏只能方便你操作,不能改变游戏规则


        5楼2008-02-23 16:03
        回复
          靠~~好讨厌~~~老是说有问题


          9楼2008-02-23 16:09
          回复
            牧师
            进入/取消暗影形态 并切换动作条
            1是非暗影形态下的治疗魔法条,2是暗影形态下的攻击魔法条
            进入/取消暗影形态,并在1,2两动作条间切换,数字可以自己改
            /script local i,b,f,p;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"wform") then f=1;break;end;end;if f then p=1;else p=2;end;CastSpellByName("暗影形态");CURRENT_ACTIONBAR_PAGE=p;ChangeActionBarPage();
            心灵尖啸 + 取消暗影形态
            /施放 心灵尖啸
            /script local i,b,f;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"wform") then CastSpellByName("暗影形态");break;end;end;
            给自己能量灌注+心灵专注+护符+技能
            具体最后跟什么技能自己考虑,因为心灵专注,所以这个技能是免费的,一般亡灵牧师都跟瘟疫了
            护符放饰品1位置
            /script local c,s,d,e,_=CastSpellByName,SpellStopCasting;c("能量灌注",1);s();c("心灵专注");s();_,d,e=GetInventoryItemCooldown("player",13);if d<2 and e>0 then UseInventoryItem(13);end;s();c("噬灵瘟疫");
            自动补 韧,心灵之火,防护暗影
            缺啥补啥,闲着没事按按能强身健体,定国安邦……
            /script local n,s,k,j,b,f={"dFor","rFir","iSha"},{"真言术:韧","心灵之火","防护暗影"};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;
            矮牧 反恐
            /script local i,b,f;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Excor") then f=1;break;end;end;if not f then CastSpellByName("防护恐惧结界");end;
            PK驱散宏
            优先驱散自己身上的Debuff,没有就对目标驱散
            /script local t; if UnitDebuff("player",1,1) then t=1;end; CastSpellByName("驱散魔法",t);


            10楼2008-02-23 16:10
            回复
              有一段就是不给我


              13楼2008-02-23 16:13
              回复
                /script local p,f=GetComboPoints(),UnitIsPlayer("target");if f and p>2 or not f and p>3 then CastSpellByName("冷血");SpellStopCasting();end;
                /施放 剔骨
                剑刃乱舞 + 护符
                /script c,s,x,u,p,d,e,_=CastSpellByName,SpellStopCasting;GetInventoryItemCooldown,UseInventoryItem,"player";c("剑刃乱舞");s();_,d,e=x(p,13);if d<2 and e>0 then u(13);else _,d,e=x(14);if d<2 and e>0 then u(14);end;end;
                自动切割宏
                平时用邪恶搌星 若无切割状态 只要有星 立即施放切割 若有 则继续 邪恶搌星 若能搌到5星时切割状态还在 则施放剔骨
                /script local p,c,b,i,f=GetComboPoints(),CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"SliceDice") then f=1;break;end;end;if p>0 and not f then c("切割");elseif p==5 and f then c("剔骨");else c("邪恶攻击");end;
                自动割裂宏
                平时用邪恶搌星 若目标无割裂状态 只要有星 立即施放割裂 若有 则继续 邪恶搌星 若能搌到5星时割裂状态还在 则施放剔骨
                /script local p,c,d,i,f=GetComboPoints(),CastSpellByName;for i=1,16 do d=UnitDebuff("target",i);if d and strfind(d,"Rupture") then f=1;break;end;end;if p>0 and not f then c("割裂");elseif p==5 and f then c("剔骨");else c("邪恶攻击");end;
                偷袭起手,护符 + 背刺
                /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if a then c("偷袭");elseif UnitMana("player")>=60 then if GetInventoryItemCooldown("player",13)==0 then UseInventoryItem(13);SpellStopCasting();end;c("背刺");end;
                护符放在饰品1上
                如果在潜行状态,按第一下偷袭,再按就护符+背刺,不在潜行状态的话直接护符+背刺
                自己掌握好距离和能量
                邪恶还击宏
                用 还击 在动作条上的序号替换下边红色字,查编号看上边基础知识
                /script local s,d=GetActionCooldown(还击编号);if IsUsableAction(还击编号) and d<2 then CastSpellByName("还击");else CastSpellByName("邪恶攻击");end;
                法术书版
                /script local s,d=GetSpellCooldown(还击编号,"spell");if IsUsableAction(还击编号) and d<2 then CastSpellByName("还击");else CastSpellByName("邪恶攻击");end;
                出血鬼魅宏
                用 鬼魅攻击 在动作条上的序号替换下边红色字,查编号看上边基础知识
                /script local c,s,d=CastSpellByName,GetActionCooldown(鬼魅编号);if d<2 then c("鬼魅攻击") else c("出血");end;
                /script local c,s,d=CastSpellByName,Get(鬼魅编号);if d<2 then c("鬼魅攻击") else c("出血");end;
                RAID专用: 平时邪恶攻击,目标转向自己就闪避
                /script if UnitIsUnit("targettarget","player") then CastSpellByName("闪避");SpellStopCasting();end;CastSpellByName("邪恶攻击");
                预备 + 消失
                能消失就消失,消失冷却中就预备
                消失编号参见上边基础知识
                /script local c,s,d=CastSpellByName,GetActionCooldown(你消失编号);if d>2 then c("预备");SpellStopCasting();end;c("消失");
                法术书版
                /script local c,s,d=CastSpellByName,GetSpellCooldown(你消失编号,"spell");if d>2 then c("预备");SpellStopCasting();end;c("消失");
                致盲 + 绷带
                没满60级的或者在战场中的绷带名自己改
                /施放 致盲
                /script local b,s,l;for b=0,4 do for s=1,18 do l=GetContainerItemLink(b,s);if l and strfind(l,"厚符文布绷带") then UseContainerItem(b,s,1);break;end;end;end
                1.12新潜行宏(不会因反复按而导致取消潜行)
                /script local a,_;if not UnitAffectingCombat("player") then _,_,a=GetShapeshiftFormInfo(1);if not a then CastSpellByName("潜行");end;end;
                


                17楼2008-02-23 16:13
                回复
                  暗夜精灵贼专用 - 潜行CD中使用影遁,连续按也不会取消影遁,潜行冷却完毕使用潜行,连续按不会取消潜行
                  连续按不取消影遁写不下了,去掉,但潜行中不取消潜行还可以,用时自己注意点
                  把潜行放动作条上,查出编号,替换下边红色字,查编号看上边基础知识
                  /script local c,s,d,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if not a then s,d=Get(潜行编号);if d>2 then c("影遁");else c("潜行");end;end;
                  德鲁伊
                  RP的变形宏,其他形态则变回人形,人形则喊话并变成相应形态,反复按不会再变回人形
                  人形态下变熊,并喊“熊的力量!” 其他任何形态则变回人形
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("熊的力量!","yell");c(1);elseif s~=1 then c(s);end;
                  人形态下变猫,并喊“豹的速度!” 其他任何形态则变回人形
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("豹的速度!","yell");c(3);elseif s~=3 then c(s);end;
                  人形态下变风暴乌鸦,并喊“鹰的眼睛!” 其他任何形态则变回人形(资料片适用)
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("鹰的眼睛!","yell");c(6);elseif s~=6 then c(s);end;
                  人形态下变鹌鹑/奶树,并喊“鹌鹑的可爱!” 其他任何形态则变回人形(鹌鹑/奶树自己根据天赋调整……)
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("鹌鹑的可爱!","yell");c(5);elseif s~=5 then c(s);end;
                  海豹 台词征集中
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("海豹,海豹……","yell");c(2);elseif s~=2 then c(s);end;
                  旅行 台词征集中
                  /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("旅行……","yell");c(4);elseif s~=4 c(s);end;
                  各种形态变回人形,包括资料片飞行形态
                  /script local i,a,_; for i=1,6 do _,_,a=GetShapeshiftFormInfo(i); if a then CastShapeshiftForm(i); break; end; end;
                  1.12猎豹形态新潜行宏(不会因反复按而导致取消潜行)
                  /script local i,b,f;if not UnitAffectingCombat("player") then for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Ambu") then f=1;break;end;end;if not f then CastSpellByName("潜行");end;end;
                  一键 精灵之火 + 月火 + 虫群
                  有虫群的:
                  /script local n,s,k,j,d,f={"rFall","tSwar","eFire"},{"月火术","虫群","精灵之火"};for k=1,3 do f=nil;for j=1,16 do d=UnitDebuff("target",j);if d and strfind(d,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;
                  没有虫群的:
                  /script local n,s,k,j,d,f={"rFall","eFire"},{"月火术","精灵之火"};for k=1,2 do f=nil;for j=1,16 do d=UnitDebuff("target",j);if d and strfind(d,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;
                  月火打图腾
                  /script local t,n,i,_={"根基","战栗","地缚","灼热","清毒",};for _,i in t do n=i.."图腾";TargetByName(n,1);end;CastSpellByName("月火术(等级 1)");
                  变熊 + 冲锋
                  /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if a then c("野性冲锋");else c("巨熊形态");end;
                  重击 + 人形 + 加血
                  按第一下 重击 敌人,按第二下 如果敌人昏迷则回到人形,按第三下开始放治疗之触,想放别的可以改
                  优点是如果重击未击中,招架等敌人没晕的话不会变回人形,避免出现危险
                  由于变形无公共CD,狂按的话可以实现瞬间重击 + 人形效果 + 加血效果
                  /script local c,i,d,f,a,_=CastSpellByName;for i=1,16 do d=UnitDebuff("target",i);if d and strfind(d,"Bash") then f=1;break;end;end;if f then _,_,a=GetShapeshiftFormInfo(1);if a then c("巨熊形态");else c("治疗之触");end;else c("重击");end;
                  治疗之触可以改成其他法术


                  18楼2008-02-23 16:13
                  回复
                    盗贼
                    首先说明一下,宏无法判断是否在背后,所以做不出背后就背刺,否则就邪恶之类的宏,不要再问了
                    绷带不丢星,这其实就是自我施法,暴雪已经整合了这个功能,打开主菜单 -> 界面设置 -> 自动自我施法 打个勾就解决了
                    冷血 + 剔骨
                    如果目标是怪,连击点>=4才冷剔,否则普通剔骨;
                    如果目标是玩家,连击点>=3就冷剔,如果冷血未CD,才使用普通剔骨。
                    /script local p,f=GetComboPoints(),UnitIsPlayer("target");if f and p>2 or not f and p>3 then CastSpellByName("冷血");SpellStopCasting();end;
                    /施放 剔骨
                    剑刃乱舞 + 护符
                    /script c,s,x,u,p,d,e,_=CastSpellByName,SpellStopCasting;GetInventoryItemCooldown,UseInventoryItem,"player";c("剑刃乱舞");s();_,d,e=x(p,13);if d<2 and e>0 then u(13);else _,d,e=x(14);if d<2 and e>0 then u(14);end;end;
                    自动切割宏
                    平时用邪恶搌星 若无切割状态 只要有星 立即施放切割 若有 则继续 邪恶搌星 若能搌到5星时切割状态还在 则施放剔骨
                    /script local p,c,b,i,f=GetComboPoints(),CastSpellByName;for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"SliceDice") then f=1;break;end;end;if p>0 and not f then c("切割");elseif p==5 and f then c("剔骨");else c("邪恶攻击");end;
                    自动割裂宏
                    平时用邪恶搌星 若目标无割裂状态 只要有星 立即施放割裂 若有 则继续 邪恶搌星 若能搌到5星时割裂状态还在 则施放剔骨
                    /script local p,c,d,i,f=GetComboPoints(),CastSpellByName;for i=1,16 do d=UnitDebuff("target",i);if d and strfind(d,"Rupture") then f=1;break;end;end;if p>0 and not f then c("割裂");elseif p==5 and f then c("剔骨");else c("邪恶攻击");end;
                    偷袭起手,护符 + 背刺
                    /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if a then c("偷袭");elseif UnitMana("player")>=60 then if GetInventoryItemCooldown("player",13)==0 then UseInventoryItem(13);SpellStopCasting();end;c("背刺");end;
                    护符放在饰品1上
                    如果在潜行状态,按第一下偷袭,再按就护符+背刺,不在潜行状态的话直接护符+背刺
                    自己掌握好距离和能量
                    邪恶还击宏
                    用 还击 在动作条上的序号替换下边红色字,查编号看上边基础知识
                    /script local s,d=GetActionCooldown(还击编号);if IsUsableAction(还击编号) and d<2 then CastSpellByName("还击");else CastSpellByName("邪恶攻击");end;
                    法术书版
                    /script local s,d=GetSpellCooldown(还击编号,"spell");if IsUsableAction(还击编号) and d<2 then CastSpellByName("还击");else CastSpellByName("邪恶攻击");end;
                    出血鬼魅宏
                    用 鬼魅攻击 在动作条上的序号替换下边红色字,查编号看上边基础知识
                    /script local c,s,d=CastSpellByName,GetActionCooldown(鬼魅编号);if d<2 then c("鬼魅攻击") else c("出血");end;
                    /script local c,s,d=CastSpellByName,Get(鬼魅编号);if d<2 then c("鬼魅攻击") else c("出血");end;
                    RAID专用: 平时邪恶攻击,目标转向自己就闪避
                    /script if UnitIsUnit("targettarget","player") then CastSpellByName("闪避");SpellStopCasting();end;CastSpellByName("邪恶攻击");
                    预备 + 消失
                    能消失就消失,消失冷却中就预备
                    消失编号参见上边基础知识
                    /script local c,s,d=CastSpellByName,GetActionCooldown(你消失编号);if d>2 then c("预备");SpellStopCasting();end;c("消失");
                    法术书版
                    /script local c,s,d=CastSpellByName,GetSpellCooldown(你消失编号,"spell");if d>2 then c("预备");SpellStopCasting();end;c("消失");
                    致盲 + 绷带
                    没满60级的或者在战场中的绷带名自己改
                    /施放 致盲
                    /script local b,s,l;for b=0,4 do for s=1,18 do l=GetContainerItemLink(b,s);if l and strfind(l,"厚符文布绷带") then UseContainerItem(b,s,1);break;end;end;end
                    1.12新潜行宏(不会因反复按而导致取消潜行)
                    /script local a,_;if not UnitAffectingCombat("player") then _,_,a=GetShapeshiftFormInfo(1);if not a then CastSpellByName("潜行");end;end;
                    暗夜精灵贼专用 - 潜行CD中使用影遁,连续按也不会取消影遁,潜行冷却完毕使用潜行,连续按不会取消潜行
                    连续按不取消影遁写不下了,去掉,但潜行中不取消潜行还可以,用时自己注意点
                    把潜行放动作条上,查出编号,替换下边红色字,查编号看上边基础知识
                    /script local c,s,d,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if not a then s,d=Get(潜行编号);if d>2 then c("影遁");else c("潜行");end;end;


                    19楼2008-02-23 16:13
                    回复
                      德鲁伊
                      RP的变形宏,其他形态则变回人形,人形则喊话并变成相应形态,反复按不会再变回人形
                      人形态下变熊,并喊“熊的力量!” 其他任何形态则变回人形
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("熊的力量!","yell");c(1);elseif s~=1 then c(s);end;
                      人形态下变猫,并喊“豹的速度!” 其他任何形态则变回人形
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("豹的速度!","yell");c(3);elseif s~=3 then c(s);end;
                      人形态下变风暴乌鸦,并喊“鹰的眼睛!” 其他任何形态则变回人形(资料片适用)
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("鹰的眼睛!","yell");c(6);elseif s~=6 then c(s);end;
                      人形态下变鹌鹑/奶树,并喊“鹌鹑的可爱!” 其他任何形态则变回人形(鹌鹑/奶树自己根据天赋调整……)
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("鹌鹑的可爱!","yell");c(5);elseif s~=5 then c(s);end;
                      海豹 台词征集中
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("海豹,海豹……","yell");c(2);elseif s~=2 then c(s);end;
                      旅行 台词征集中
                      /script local c,s,i,a,_=CastShapeshiftForm;for i=1,6 do _,_,a=GetShapeshiftFormInfo(i);if a then s=i;break;end;end;if not s then SendChatMessage("旅行……","yell");c(4);elseif s~=4 c(s);end;
                      各种形态变回人形,包括资料片飞行形态
                      /script local i,a,_; for i=1,6 do _,_,a=GetShapeshiftFormInfo(i); if a then CastShapeshiftForm(i); break; end; end;
                      1.12猎豹形态新潜行宏(不会因反复按而导致取消潜行)
                      /script local i,b,f;if not UnitAffectingCombat("player") then for i=1,16 do b=UnitBuff("player",i);if b and strfind(b,"Ambu") then f=1;break;end;end;if not f then CastSpellByName("潜行");end;end;
                      一键 精灵之火 + 月火 + 虫群
                      有虫群的:
                      /script local n,s,k,j,d,f={"rFall","tSwar","eFire"},{"月火术","虫群","精灵之火"};for k=1,3 do f=nil;for j=1,16 do d=UnitDebuff("target",j);if d and strfind(d,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;
                      没有虫群的:
                      /script local n,s,k,j,d,f={"rFall","eFire"},{"月火术","精灵之火"};for k=1,2 do f=nil;for j=1,16 do d=UnitDebuff("target",j);if d and strfind(d,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end;
                      月火打图腾
                      /script local t,n,i,_={"根基","战栗","地缚","灼热","清毒",};for _,i in t do n=i.."图腾";TargetByName(n,1);end;CastSpellByName("月火术(等级 1)");
                      变熊 + 冲锋
                      /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(1);if a then c("野性冲锋");else c("巨熊形态");end;
                      重击 + 人形 + 加血
                      按第一下 重击 敌人,按第二下 如果敌人昏迷则回到人形,按第三下开始放治疗之触,想放别的可以改
                      优点是如果重击未击中,招架等敌人没晕的话不会变回人形,避免出现危险
                      由于变形无公共CD,狂按的话可以实现瞬间重击 + 人形效果 + 加血效果
                      /script local c,i,d,f,a,_=CastSpellByName;for i=1,16 do d=UnitDebuff("target",i);if d and strfind(d,"Bash") then f=1;break;end;end;if f then _,_,a=GetShapeshiftFormInfo(1);if a then c("巨熊形态");else c("治疗之触");end;else c("重击");end;
                      治疗之触可以改成其他法术


                      20楼2008-02-23 16:13
                      回复
                        战士
                        MT 救命宏
                        首先吃糖
                        糖CD就使用生命宝石
                        如果在CD就使用破釜沉舟
                        如果也在CD就吃极效红
                        全部CD就盾墙
                        把 糖、生命宝石、破釜沉舟、极效红、盾墙 依次放到动作条上,记住,依次,参考上面的图,假设是编号从37-41
                        /script local i,s,d,e;for i=37,41 do s,d,e=GetActionCooldown(i);if d<2 and e>0 then UseAction(i);break;end;end;
                        用你查到的编号替换上边红色数字
                        MT 开怪宏 - 战斗 + 冲锋 + 防御 + 嘲讽,懒人MT必备!!
                        如果不在战斗中,防御姿态就切战斗姿态,战斗姿态的话就冲锋,
                        如果在战斗中,战斗姿态就切防御,防御姿态就嘲讽
                        貌似MT不用冲锋开怪…… orz
                        /script local c,f,a,b,_=CastSpellByName,GetShapeshiftFormInfo;_,_,a=f(1);_,_,b=f(2);if UnitAffectingCombat("player") then if a then c("防御姿态");elseif b then c("嘲讽");end;else if a then c("冲锋");elseif b then c("战斗姿态");end;end;
                        MT 狂暴之怒宏
                        功能:如果防御姿态,按一下切狂暴,如果狂暴姿态按一下狂暴之怒,如果狂暴姿态而且狂暴之怒CD中按一下切回防御
                        把狂暴之怒放到动作条上,查出编号,编号看上边基础知识:
                        /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(3);if a then if GetActionCooldown(狂暴之怒编号)==0 then c("狂暴之怒");else c("防御姿态");end;else c("狂暴姿态");end;
                        用你查到的编号替换上面红色数字
                        法术书版
                        /script local c,a,_=CastSpellByName;_,_,a=GetShapeshiftFormInfo(3);if a then if GetSpellCooldown(狂暴之怒编号,"spell")==0 then c("狂暴之怒");else c("防御姿态");end;else c("狂暴姿态");end;
                        非战斗就战斗姿态+冲锋,战斗中则狂暴+拦截
                        每次做一个动作,反复按吧
                        /script local c,a,b,_=CastSpellByName;_,_a=GetShapeshiftFormInfo(1);_,_,b=GetShapeshiftFormInfo(3);if UnitAffectingCombat("player") then if b then c("拦截");else c("狂暴姿态");end;elseif a then c("冲锋");else c("战斗姿态");end;
                        WOW 2.0版,每次做一个动作,反复按吧
                        /施放 [nocombat,nostance:1]战斗姿态;[nocombat,stance:1]冲锋;[combat,nostance:3]狂暴姿态;[combat,stance:3]拦截
                        挫志怒吼 + 雷霆一击 + 撕裂 + 致死打击
                        /script local n,s,k,j,d,f={"Cry","Clap","Gouge","."},{"挫志怒吼","雷霆一击","撕裂","致死打击"};for k=1,4 do f=nil;for j=1,16 do d=UnitDebuff("target",j);if d and strfind(d,n[k]) then f=1;break;end;end;if not f then CastSpellByName(s[k]);break;end;end
                        破胆怒吼 + 绷带
                        没满60级的或者在战场中的绷带名自己改
                        /施放 破胆怒吼
                        /script local b,s,l;for b=0,4 do for s=1,18 do l=GetContainerItemLink(b,s);if l and strfind(l,"厚符文布绷带") then UseContainerItem(b,s,1);break;end;end;
                        远程武器宏
                        自动判定当前远程武器类型而决定使用该种武器进行射击,弓,弩使用箭,枪械使用子弹
                        这个不会切换,所以弹药自己处理
                        /script local l,_=GetInventoryItemLink("player",18);_,_,l=strfind(l,"item:(%d+)");_,_,_,_,_,l=GetItemInfo(l);l=strsub(l,1,6);if l~="投掷" then l=l.."射击";end;CastSpellByName(l);
                        如果在防御姿态就用盾牌格挡,在狂暴姿态就用狂暴之怒,在战斗姿态就用惩戒痛击
                        /script local s,j,a,_={"惩戒痛击","盾牌格挡","狂暴之怒"};for j=1,3 do _,_,a=GetShapeshiftFormInfo(j);if a then CastSpellByName(s[j]);break;end;end;


                        21楼2008-02-23 16:14
                        回复
                          圣骑士
                          自动换圣契
                          当然使用圣光闪现的时候 自动装备[神性圣契],当我使用驱散的时候 自动装备[优雅圣契]
                          把两个圣契一个装在身上,另一个放在右边第一个包的第一个格子里
                          第一个宏:放圣光闪,如果身上带的不是神性圣契就先换,再按放圣光闪现
                          /script local l=GetInventoryItemLink("player",17);if l and strfind(l,"神性") then CastSpellByName("圣光闪现");else UseContainerItem(0,1);end;
                          第二个宏:放清洁术,如果身上带的不是优雅圣契就先换,再按放清洁术
                          /script local l=GetInventoryItemLink("player",17);if l and strfind(l,"优雅") then CastSpellByName("清洁术");else UseContainerItem(0,1);end;
                          如果圣契放在包的其他位置,自己修改上边红色数字,修改方法看上边基础知识
                          打贼奉献宏
                          有目标就放最高级奉献,没有目标就放1级奉献
                          /script if UnitCanAttack("target","player") then CastSpellByName("奉献");else CastSpellByName("奉献(等级 1)");end;[attachment=2470] [attachment=2470]


                          22楼2008-02-23 16:14
                          回复
                            下面还有什么“自己做插件”哎呀一起上了!


                            23楼2008-02-23 16:14
                            回复
                              自己定制自己的宏,自己做自己的插件!
                              开篇前的说明
                              宏是个很灵活的工具,能用好这个工具,就能省下很多功夫。插件提供更加丰富多采的功能,和各种人性化设置。但插件的缺陷,就是缺乏个性化。每个人战斗的模式都不同,而插件作者不可能为每一个用户定制一些功能。这时候,宏就华丽登场了。WOW本身提供了简单容易上手的宏编辑,但简单的代价就是缺乏功能,而且256字符的长度限制了大部分玩家的智慧。
                              准备工作
                              1.SuperMacro插件:超级宏,能突破256字符的限制,还提供了一些简单的函数。最主要的,是他提供了LUA支持。
                              2.DiscordMacroFunctions插件:这个插件的知名度比较少,但他同系列的DUF/DART/DAB相信很多人都用过。D系列延续了他一贯的高效实用的特性,DMF提供了很多的基础函数。
                              3.了解一些LUA的知识,了解一些WOW的API函数。
                              高级宏命令第一贴
                              第一贴,选择敌对目标。
                              这个宏,会先判断是否有目标,目标是否可以攻击,目标是否可以援助,目标的目标是否可以被攻击。
                              综合以上信息后,选择最佳的目标。实在没有目标了,才会选中最近的敌人。
                              另外,如果处于团队状态,是不会自动选中最近敌人的,避免在大FB里面ADD

                              function AssistTarget ()
                               if (UnitExists("target")) then
                               if (UnitCanAttack("player", "target")) then
                               return true;
                               elseif (UnitCanAssist("player", "target") and UnitExists("targettarget")) then
                               if (UnitCanAttack("player", "targettarget")) then
                               AssistUnit("target");
                               elseif (UnitCanAssist("player", "targettarget")) then
                               AssistUnit("targettarget");
                               return false;
                               else
                               ClearTarget();
                               end
                               else
                               ClearTarget();
                               end
                               end
                               if (not UnitExists("target") and GetNumRaidMembers() == 0) then
                               TargetNearestEnemy();
                               end
                               return (UnitExists("target") and UnitCanAttack("player", "target"));
                              end

                              这个宏的知识点:
                              1.UnitExists("target")意思是是否有目标。target代表目标,targettarget代表目标的目标,pet代表自己的宠物,player代表自己。
                              2.UnitCanAttack("player", "target")意思是,第一个单位是否可以攻击第二个单位。
                              3.UnitCanAssist("player", "target")同上,判断能否援助。
                              4.AssistUnit("target")援助指定的人物。
                              5.ClearTarget()清除当前目标
                              6.GetNumRaidMembers()取得团队人数,需要DMF支持,如果GetNumRaidMembers()=0则代表不在团队


                              24楼2008-02-23 16:15
                              回复