忧郁の蓝's profile狗☆杂☆碎BlogLists Tools Help

Blog


    宏命令完全手册

    一:基础教程

      1.什么是宏命令?
      玩过EQ的都知道一点宏的知识,比如组队时用来告诉队友你的行动,告诉目标等。最简单的比如puller 常用的: /v %t过来了,大家集中火力。 法师常用的: /v 我要催眠%t,大家不要打醒他 这些宏个性鲜明,是EQ的一大乐趣之一。

      然而EQ毕竟是N年前的游戏,宏也比较简单,和它比起来。WOW的宏就复杂和强大的多了。它的函数就有上千种,如果都掌握,能实现许多匪夷所思的功能。

      一个宏可以完成一个相对比较复杂的命令.比如战斗中发布命令,如果打字当然不算麻烦,但在战斗中却很要命.浪费了时间和生命.一个简单的宏便可以用一个键来完成这一切.

      2.宏命令的设置流程:
      首先,回车,再敲/MACRO。看见了吧?会弹出一个窗口,上面有New(新建宏命令)和Complete(完成宏命令)两个按键。点New,又会弹出一个窗口,哇,花花绿绿的,里面包括了WOW几乎所有的技能图标,随你喜欢,随便选一个!它就是你设置的宏命令的图标了,给它取个名字吧!方便你用的时候好找。然后回到第一个窗口,在它上面有一个输入菜单(别告诉我找不到…它可是占了这个窗口的一半多…)在里面输入特定的内容,然后点Complete。接下来你要做的就是把这个代表你宏命令的图标用鼠标左键拉到快捷栏里,想怎么用就怎么用…

      3.下面就是怎样设置宏的内容了,简单的设置大家可以看我们网站上"基础"篇的宏介绍.

      相信很多人都知道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 aspectofmon key (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();



    几个简单的宏

    1. 对自己使用绷带

    /script TargetUnit("Player");
    /use Mageweave Bandage
    /script TargetLastEnemy();

    * 这里用的时 Mageweave Bandage ,你可以改成适合你自己的绷带名
    * use 是 Cosmos 支持的命令,你必须安装 Cosmos 才能使用这个宏,如果你没有 Cosmos,使用下面的宏(绷带必须放在主背包第一格)

    /script TargetUnit("Player");
    /script UseContainerItem(0,1);
    /script TargetLastEnemy();

    2. 对敌人的 Pet 使用技能
    /script TargetUnitsPet("target");
    /cast Blind
    /script TargetLastEnemy();

    * Blind 是技能名,你可以用自己的技能,这里用了盗贼的 Blind (我是盗贼啦,呵呵)

    ** /script 是使用 脚本 的命令,可供使用的命令参考附件
    ** 可以用 Shift + 点击 技能书里图标的方式在宏中添加释放技能的命令
    ** 可以用 Shift + 点击 物品的方式在宏中添加物品名
    3. 打开所有背包

    /script OpenBag(0);
    /script OpenBag(1);
    /script OpenBag(2);
    /script OpenBag(3);
    /script OpenBag(4);

    打开所有背包,可能
    /script OpenAllBags()
    一样搞定:P

    热键Shift + B 也是可以的

    4.战士用,双手武器切换单手武器+盾:
    首先在快捷栏10、11、12(也就是0、 -、 =的位置)拖上双手武器、单手武器、盾的快捷方式;
    双手武器:
    /script ActionButtonDown(10);ActionButtonUp(10);
    单手武器+盾:
    /script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);



    以下命令全部中空格用下划线_来表示
    %后面的都是变量

    =各种命令分类收集=

    参数设置
    %t

    切换当前目标命令
    /target_%name
    /assist_%name
    /script_TargetLastEnemy();

    游戏动作
    /cast_%skillname(rank_%d)
    /f
    /script_UseAction(n%d, %d);

    设置延迟命令
    /pause_%d

    聊天常用命令
    /s_
    /p_
    /g_
    /raid_

    =应用部分说明=
    聊天部分命令我就省略了...重点说明游戏中实际关系到游戏操作的命令

    首先%t是指当前目标名称,%t大多是用在聊天中...比如:

    ...

    你好,%t
    我开始攻击%t,大家请注意...

    Pull
    /script TargetNearestEnemy();
    /p Pulling %t
    /script AttackTarget();
    /v inc

    Assist
    /assist %t
    /script AttackTarget();

    UsePoison
    /script UseContainerItem(bag,slot); PickupInventoryItem(16);
    UseContainerItem(bag,slot);
    PickupInventoryItem(17);
    /in 1740 /script DEFAULT_CHAT_FRAME:AddMessage("Poison wearing off in one minute")

    综合研究后,对于用匕首也想用高攻武器的,盗贼的通用武器切换放技能的宏[仅讨论单手武器,主手不考虑]

    看了各高手的帖,又跑去查了函数库,最终定下了这个。

    既然大家想2个都用,那一定有匕首在身上了,所以,围绕匕首,我们可以把宏简化到极点

    ==============================================
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()~="武器类型") then CastSpellByName("技能(等级 ?)") else PickupInventoryItem(16) PickupInventoryItem(17); end
    判断主手武器施放技能的宏


    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("SecondaryHandSlot")); if(GameTooltipTextRight3:GetText()~="武器类型") then CastSpellByName("技能(等级 ?)") else PickupInventoryItem(16) PickupInventoryItem(17); end
    判断副手武器施放技能的宏
    ==============================================
    以这2个为基础,我们可以完成所有的单手武器切换放技能的宏,而且只要做3个宏!

    1。伏击
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("SecondaryHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then CastSpellByName("伏击(等级 ?)") else PickupInventoryItem(16) PickupInventoryItem(17); end

    2。背刺
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("SecondaryHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then CastSpellByName("背刺(等级 ?)") else PickupInventoryItem(16) PickupInventoryItem(17); end

    3。邪恶攻击
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then CastSpellByName("邪恶攻击(等级 ?)") else PickupInventoryItem(16) PickupInventoryItem(17); end

    ================================================
    解释一下:
    1。伏击
    判断副手是否为匕首,是,就交换主副手武器
                                                    不是,就施放伏击
    2。背刺
    原理同伏击

    3。邪恶攻击
    判断主手是否为匕首,是,就交换主副手武器
                                    不是,就施放邪恶攻击

    ==============================================
    这3个宏可以让你不用考虑另一个武器是什么,只要你有把匕首装备就可以了,是不是简单不少?
    我不喜欢主手武器,为主手武器多些老长的代码没意思,我们用非匕首要的就是那个攻击数值,考虑太多就不好了。
    ===============================================
    提醒大家一下,这样利用高攻武器放SS,我们需要考虑它是什么武器吗?
    只要是单手的就可以了啊?想想,单手的还有什么?斧头也!!~~

    ===============================================
    另附绷带宏:
    /script UseAction(技能栏编号,0,1)
    /script if ( SpellIsTargeting() ) then TargetUnit("player"); end

    把绷带放“技能栏编号”栏里就可以了。
    技能栏顺序:
    主技能栏:1-12
    技能栏2:13-24
    右侧技能栏1:25-36
    右侧技能栏2:37-48


    其它的我不知道,暴雪说有120个呢,哪为老大为我补齐吧。

    贪心导致了这个宏的出现-武器切换宏[第二版]

    哎!其实我是不想用这种宏的,我的初衷是想,大家喜欢什么武器就一直用这个类型的不就好了?

    结果,我发现,大家都是贪心的啊!!!

    所以,现在这个宏得到了第2次修改。

    ========================================================

    我直接把宏写出来,就不解释了:

    1。邪恶攻击
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then CastSpellByName("邪恶攻击(等级 ?)") else PickupInventoryItem(16); PickupContainerItem(0, 1); end

    2。背刺
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then PickupInventoryItem(16); PickupContainerItem(0, 1)  else CastSpellByName("背刺(等级 ?)");end

    3。伏击
    /script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()~="匕首") then PickupInventoryItem(16); PickupContainerItem(0, 1) else CastSpellByName("伏击(等级 ?)");end

    副手武器你任选,不会被换的,主手的武器,匕首和剑/锤一个装备在主手,一个放在你出生时给的16个包的左上第一格就可以了。

    PS:如果你用的是萨特一类的有“唯一”字样匕首,把(GameTooltipTextRight3:GetText()~="匕首")改为(GameTooltipTextRight4:GetText()~="匕首")

    ======================================================

    我无法解决在使用中有时会弹出TOOLTIP的问题,哪位高手帮我解决一下吧!

    关于2.0的宏

         BLZ在2.0里面关闭了很多函数接口,并把很多以前开放的接口改为了BLZ专用的,在我们没有找到如何将自己的插件修改为BLZ专用的那种pub形式前,我们就需要自己来研究下这新的系统了。
         在不使用插件的情况下,我们用的最多的就是宏,以前利用宏也是可以做到很多丰富的功能的,比如我曾经写过的盗贼根据技能换武器的宏等等(很多人都不知道我是原创)。但是,现在blz大神似乎是想让我们的手更飞舞一些,或者说是想让我们更具有竞技游戏的技术,反正不管怎么样,blz就是不想我们那么“傻瓜”了。
         但是,2.0的宏却是如此的简单,判断语句极其的简洁,我们以前的几乎所有宏都宣布作废了,包括极简单的类似气定-〉大火球这样的简单的要按2下才工作的宏都不能用了,唉怎么办呢?不怕,有大大已经行动了,我们先来看看来自NGACN的一篇翻译文章。
    --------------------------------------------------------------------------------

    WoW 2.0宏指南(Neuro's Macro Guide for WoW 2.0) 

    http://bbs.ngacn.com/read.php?tid=772487&fpage=1

    在WoW 2.0中,宏和插件将会有翻天覆地的改变。最近,Slouken(Blizzard UI开发者)宣布了一个令人激动的宏的新特性,一系列条件选项将可以被应用于以下斜杠命令:/cast,/use,/target,/focus,/assist,/stopmacro,/cancelaura,/userandom,/castrandom,以及/castsequence。这个帖子的目的就在于讲解如何应用它们。

    注:虽然多数例子都使用了"/cast",但事实上这些条件选项对前面提到的所有斜杠命令都有效。

    在2.0中,目前所用的大多数宏都将被废弃,因为在战斗中,任何用到CastSpellByName()或者TargetUnit()的宏都将不再有作用。更进一步的,多数“傻瓜逻辑”的宏也不会再有效。但是,你现在可以通过新的宏条件选项来实现许多流行宏的功能。

    现在,使用“/cast”(“/施放”)非常简明,命令格式就是“/cast <法术名称>”(施放最高等级的法术)或者“/cast <法术名陈>(Rank <#>)”。比如说:

    /施放 强效治疗术
    /施放 奥术智慧(等级 3)

    在新的系统中,你依然可以使用原来的这些格式,不过你现在可以加入条件选项来使得“/cast”更加灵活。“/cast”的新格式是:“/cast [<第一组条件选项>] <第一个法术名称>; [<第二组条件选项>] <第二个法术名称>; [<第三组条件选项>] <第三个法术名称>;...”。

    现在让宏运作起来的方式就像这样:第一组条件选项被检测,如果它们成立,则第一个法术被施放,如果它们不成立,则第二组条件选项被检测,如果这个成立了,下一个法术被施放,如此下去。但是,你必须牢记,只有一个法术会被施放。当一组条件选项被检测到成立时,相应的法术就会被施放,宏也就此结束。

    1.当前可用的条件选项有:

    help - 检测目标是否为友善
    harm - 检测目标是否为敌对
    combat - 检测你是否在战斗中
    stance或stance:# - 检测你是否在姿态中,或是否在某个特定的姿态中(详见下)
    stealth - 检测你是否潜行
    modifier或modifier:shift|ctrl|alt - 检测命令被执行时是否某个特定的键被按下
    equipped:<item> - 检测某个物品是否被装备。<item>可以是任何有效的装备槽,物品分类,或者物品子类
    target = <unit> - 特殊条件选项,它把当前目标改变为任何有效的单位(详见下)
    actionbar:<number> - 检测当前动作条是否为列出的那个

    新的条件选项:

    pet:<pet type 或 pet name> - 检测宠物是否存在。可以接受宠物类型(枭,熊,小鬼)或者名字(Fluffy,我家坏坏)作为条件。不带条件则检测是否有任何宠物存在。
    mounted,swimming,flying - 检测是否在坐骑上,游泳,或者飞行中
    indoors,outdoors - 检测是在室内还是室外
    button:<#> - 检测某个特定的按钮被用来触发法术,默认为1(详见下)
    exists 和 dead - 检测是否目标已经死亡,或是否真的存在

    新的宏命令
    ---------------------------
    /castsequence - 按顺序施放一组事先设定好的法术(详见下)
    # show <法术> - 显示所列出法术的宏返回值

    对于条件选项的一些额外技巧:
    你可以在任何条件选项前加上“no”来得到反效果,比如,“nocombat”则在脱离战斗的情况下成立。
    用逗号“,”来分隔条件选项作用和“and”一样,当条件选项同时成立时执行。
    用斜杠“/”来分隔条件选项作用和“or”一样,当其中一个条件选项成立时执行。
    在宏编辑器里按“?”图标将强制宏以当前法术的图标显示。

    2.举例和姿态

    这里有一些举例说明:

    /施放 强效治疗术
    非常简单,向你的目标施放强效治疗术。

    /施放 [help] 强效治疗术
    加入一个条件选项,当目标为友善时施放强效治疗术。

    /施放 [help] 强效治疗术; 惩击
    加入第二个法术,由于它没有任何条件选项,所以在第一组条件选项不成立时,则施放。

    /施放 [help, combat] 快速治疗; [help, nocombat] 强效治疗术; 惩击
    这个宏将在你(不是目标)处于战斗中时为友方目标施放快速治疗,如果你不在战斗中且目标为友方目标,则施放强效治疗术,如果这些条件都不成立(比如目标为敌对),则施放惩击。

    /施放 [help] 强效治疗术; [harm, combat] 惩击; [harm, nocombat] 精神鞭笞
    这个宏将对友方目标施放强效治疗术,或在战斗中对敌对目标施放惩击,或当你不处于战斗中时,对敌对目标施放精神鞭笞。

    /施放 [stealth] 伏击; 背刺
    这个宏在玩家处于潜行时施放伏击,否则的话就背刺。

    /施放 [nostealth] 背刺; 伏击
    这个宏和上面那个作用完全相同,只不过用了相反的条件选项。

    /施放 [actionbar:1] 强效治疗术; [actionbar:2] 惩击
    如果当前动作条为1号时施放强效治疗术,如果是2号则施放惩击,如果为其他动作条则不做任何事情。

    /施放 [harm] 变形术
    /stopmacro [noharm]
    /p 正在把%t变羊!别去碰它!
    这个宏将在目标为敌对目标时施放变形术,若目标不是敌对,则停止这个宏(例如变形术没有施放出来),当目标被变羊后则通知队友。注意,因为“/stopmacro”命令的存在,如果目标没有被变羊,队友将不会看到喊话(从而减少了不必要的垃圾信息)。

    /施放 [pet] 召唤宠物; 复活宠物
    这个宏将在你没有带着宠物时召唤一个出来,否则的话将尝试复活你的宠物。

    /施放 [pet:owl] 俯冲; [pet:cat] 冲锋; [pet] 低吼
    这个宏将在你带着枭类宠物的时候施放俯冲,带着猫类宠物时施放冲锋,如果是其他宠物则施放低吼。

    /施放 [pet:虚空行者] 牺牲; [pet:媚魔] 魅惑
    如果你带着虚空行者则施放牺牲,带着媚魔则施放魅惑。

    /使用 [nomounted, outdoors] 黑色战驹缰绳
    如果你在室外且没有骑着坐骑时召唤坐骑。

    /施放 [target=pet, dead] 复活宠物; [nopet] 召唤宠物; 治疗宠物
    若你的宠物死亡了则复活它,如果没有召唤出来则召唤宠物,或者治疗你的宠物。

    ----------------
    姿态
    ----------------

    姿态以同样的原理工作,当姿态编号没有给出时,则在玩家处于任一姿态都成立(注意,战士永远都处于某个姿态中)。如果给了编号,则检测该姿态是否被激活。

    每个职业的特定姿态都有不同的编号,这是一个列表:

    战士:1. 战斗 2. 防御 3. 狂暴
    牧师:1. 暗影形态
    德鲁伊:1. 熊 2. 水栖 3. 猫 4. 旅行 5. 枭兽/树
    盗贼:1. 潜行

    圣骑士的光环在宏条件选项系统中将不再被作为姿态处理。

    请记住,如果你跳过了某个姿态(例如作为战士却没有做防御姿态的任务),你的姿态编号将会递减,比如狂暴姿态的编号会变成2号。

    一些姿态宏的例子:

    /施放 [nostance] 熊形态
    如果没有在一个形态下,则变形到熊形态。

    /施放 [stance:1] 压制; [stance:2] 破甲; [stance:3] 旋风斩
    在战斗姿态下施放压制,防御姿态下施放破甲,狂暴姿态下施放旋风斩。

    /施放 [stance:1] 低吼; [stance:3] 爪击
    在熊形态施放低吼,在猫形态施放爪击。

    /施放 [nostance:3] 猎豹形态
    如果不在猎豹形态,则变形猎豹,但如果已经处于猎豹形态,也不会把你变回来。

    [equipped]条件选项也以同样的方式工作,但是更富有技巧。参数可以是一个物品槽(见下),一个物品分类,或一个物品子类。物品分类及子类,请参考这里:http://www.wowwiki.com/ItemType

    物品槽列表:

    Two-Hand 双手
    Bag 包
    Shirt 衬衫
    Chest 胸部
    Back 背部
    Feet 脚
    Finger 手指
    Hands 手
    Head 头部
    Held In Off-hand 副手物品
    Legs 腿部
    Neck 颈部
    Ranged 远程
    Off Hand 副手
    Shoulder 肩部
    Tabard 徽章
    Thrown (ranged slot items like thrown daggers) 投掷(远程槽物品例如投掷匕首)
    Trinket 饰品
    Waist 腰部
    One-Hand 单手
    Main Hand 主手
    Wrist 手腕

    一些equipped例子:

    /施放 [equipped:双手剑] 致死打击; 英勇打击
    当你装备着双手剑时施放致死打击。

    /施放 [equipped:双手剑/双手锤/双手斧/长柄武器] 致死打击
    这里使用了分隔符“/”来设置一个“或”条件,这个宏将在你装备以上类型武器时施放致死打击。

    /施放 [equipped:盾牌] 盾牌猛击
    在你装备了盾牌的时候施放盾牌猛击。

    /施放 [equipped:盾牌, equipped:匕首] 盾牌猛击
    仅在你同时装备了盾牌和匕首时才施放盾牌猛击

    /施放 [noequipped:盾牌, equipped:副手] 暴怒
    在你没有装备盾牌且副手装备了武器的情况下施放暴怒,也就是说,在你双持的时候才被激活。

    3.Button和Target目标选项

    条件选项[button:<x>]运作起来类似于修改按键。一般来说,当你左键点击一个按钮,它就执行(宏)里面所有的动作,然而,如果你设置了button条件选项,你可以改变宏在特定按键上的表现。

    默认按键是1,鼠标左键。注意,如果你通过按键绑定来触发一个宏,它会认为是通过鼠标左键点击触发。被编号的按键有:

    1 或 左键
    2 或 右键
    3 或 中键
    4 或 按键4
    5 或 按键5
    ...以及其他一切在“安全声明头文件”中定义的按键。我不太确定这是什么意思,仅仅只是引用Slouken的表述。

    lostcup: 官网UI论坛中有一篇Iriel(论坛MVP)写的SecureStateHeader Example Code,类似于一个模版,插件作者可以生成一个实例去修改默认设定。

    /施放 [button:2, target=player] 快速治疗; [help] 快速治疗
    这个宏将向友方目标施放快速治疗,或者如果你右键点击它,则向自己施放快速治疗

    这里[target=unit]是一个特殊的条件选项,它并不检测条件是否成立,而是改变施法的目标以其他条件选项的目标。“unit”可以是任何有效的unit类型,例如“player”,“target”,“targettarget”,“party1”,“party1target”,等等。想了解更多的unit类型,可以去这里:http://www.wowwiki.com/UnitId

    请注意,任何一个施法都有默认的target,那就是“target”,例如:

    /施放 [help] 强效治疗术

    就和下面的宏等同:

    /施放 [target=target, help] 强效治疗术

    除非你加入一个[target=unit]条件选项,默认则就是你的当前目标。

    一些[target=unit]的例子:

    /施放 [target=player] 快速治疗
    总是向自己施放快速治疗,并且不会改变你的实际目标

    /施放 [help] 快速治疗; [target=targettarget] 快速治疗
    如果目标是友善的,则向他施放快速治疗,否则向目标的目标施放快速治疗。

    /施放 [help, combat] 快速治疗; [help, nocombat] 强效治疗术; [target=targettarget, help, combat] 快速治疗; [target=player] 强效治疗术
    这个宏可以 1) 如果你处于战斗中且目标友善时施放快速治疗,2) 如果你目标友善且没有在战斗中则施放强效治疗术,3) 如果你处于战斗中且你目标的目标为友善,则向他施放快速治疗,4) 如果前面的条件都不成立,则向自己施放强效治疗术。

    如果你使用none作为unit,则它会像你没有选中目标一样工作,例如:

    /施放 [target=none] 驱散魔法

    这将施放驱散魔法且等待你点中一个目标,无论你当前是否选中了一个目标。

    新的宏命令:/castsequence
    ----------------------

    在WoW 2.0中出现了一个新的命令,/castsequence。它允许你在一次次点击某个宏时,将其中定义的一系列法术逐个施放,格式如下:

    /castsequence [<条件选项>] reset=<#>/target/combat <法术1>, <法术2>, <法术3>

    “啥?你在说啥?”

    它设定了一个法术列表,当你第一次点击这个宏时,它施放列表中的第一个法术,第二次点击的时候,施放第二个法术,以此类推。 当它施放完最后一个时,又回到起始点开始循环。

    “我还是不太明白耶。”

    OK,假设你是一个法师,有时候你需要冰霜新星后立刻闪现开,你没法同时做到这些事情,现在你可以设定一个序列去做!

    /castsequence 冰霜新星, 闪现

    就这么简单,第一次你按这个宏,你施放冰霜新星,再按一次,闪现。

    “那如果冰霜新星在冷却中怎么办?它会直接施放闪现么?还是不施放冰霜新星,等第二次按这个宏的时候,再施放闪现?”

    都不是。如果法术无法施放(冷却,超出距离,法力不足等等情况下),序列就不会走到下一个法术,下一次你再点这个宏的时候,它会再度尝试施放冰霜新星。(抵抗,躲闪,招架等并不会算作无法施放,这些情况下法术/技能确实施放了,只不过没有命中。)

    “如果我没有处于战斗中怎么办?我不想在非战斗情况下浪费一个冰霜新星。”

    你可以把之前所有的宏条件选项应用于此(可惜的是,只能应用于整个序列,而不能为每个法术单独设定)。

    “呃,其实刚才我只是随便说说,OK,那如果我在冰霜新星后不想闪现了怎么办?下一次我想施放冰霜新星时,它会不会还是停滞在施放闪现的设定上?”

    这完全没问题,我们会用到重置这个设定。因为冰霜新星一般的冷却时间为24秒,我们可以设定序列在24秒内不被使用就重置它。

    /castsequence reset=24 冰霜新星, 闪现

    当你第一次点击这个宏时,它会施放冰霜新星,如果你决定不闪现了,等过了24秒后,它会重置到冰霜新星的状态,因为冰霜新星的冷却时间为24秒,那时候它就可以被重新使用了,真棒!

    “好吧,这真的很厉害,不过我实际上是个术士啊。”

    当然,作为一个术士,我相信你会一直重复上三种DoT,现在你可以为它们设置一个序列以节省按钮空间啦。

    /castsequence 腐蚀, 献祭, 痛苦诅咒

    就这么简单,你可以连续点击三次这个宏来上这三种DoT。

    “但如果在我施放完这些前目标就死了呢?我又卡在这个序列里了,我可不想设什么定时器!”

    那也没关系,我们可以用其他的条件选项。如果你设定“reset=target”,那序列将在你改变目标时就重置到起始位置。你也可以设置“reset=combat”,每当你脱离战斗,这个序列就会被重置了。如果你使用“/”控制符(你还记得吧,之前提到过),你也可以将这些重置条件选项组合起来!

    /castsequence reset=combat/target 腐蚀, 献祭, 痛苦诅咒

    就这全了,这下子每当你改变目标(比如原来的目标快死了,你选中的新的目标)或脱离了战斗(可能目标在你施放完所有DoT前就死了),它将会把整个序列重置,让你可以从头开始。

    “OK,真棒,我想我现在弄明白了!给我点时间设置新的宏....搞定!”

    好极了,我很高兴能帮上忙。

    “那...来决斗一盘吧?”

    呃,不了,我从不和术士决斗。

    “切,胆小鬼。”

    4.举例说明

    一些宏的例子:

    通用宏:
    ---------------
    /use [target=self] 厚虚空布绷带
    无论当前目标是什么,这个宏只会对自己使用厚虚空布绷带。

    战士宏
    ---------------
    拦截/冲锋:拦截或者冲锋,或者切换到相应的姿态。
    /施放 [nocombat, stance:1] 冲锋; [combat, nostance:3] 狂暴姿态; [nocombat, nostance:1] 战斗姿态; [combat, stance:3] 拦截

    一般姿态宏:把<* Stance Ability>替换为任何你想要的技能
    /施放 [stance:1] <Battle Stance Ability>; [stance:2] <Defense Stance Ability>; [stance:3] <Berserker Stance Ability>

    压制:一个很简单的压制宏
    /施放 [stance:1] 压制; 战斗姿态

    法师宏
    ---------------
    炎爆/火球:如果没有处于战斗则施放炎爆术(作为起手),否则就施放火球术
    /施放 [nocombat] 炎爆术; 火球术

    锁定变羊:总是将你锁定的目标变形
    /施放 [target=focus] 变形术

    牧师宏
    ---------------
    向当前目标的目标施放强效治疗术,否则向当前目标施放
    /施放 [target=targettarget, help] 强效治疗术; [help] 强效治疗术

    猎人宏
    ---------------
    根据是否在战斗中喂养或治疗宠物
    /施放 [combat] 治疗宠物; [nocombat] 喂养宠物
    /使用 [nocombat] <食物>

    终于在官网看到一点关于资料片的消息了

         在9C中文官网,终于在今天看到了一点关于资料片的消息,真不知道要我们等到什么时候啊~