WOW宏基础知识

来源:互联网 发布:百贸网络 编辑:程序博客网 时间:2024/04/28 22:49
在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 [<第一组条件选项>] <第一个法术名称>; [<第二组条件选项>] <第二个法术名称>; [<第三组条件选项>] <第三个法术名称>;...”。

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

当前可用的条件选项有:

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”一样,当其中一个条件选项成立时执行。
在宏编辑器里按“?”图标将强制宏以当前法术的图标显示举例和姿态

这里有一些举例说明:

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

/施放 [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] 召唤宠物; 治疗宠物
若你的宠物死亡了则复活它,如果没有召唤出来则召唤宠物,或者治疗你的宠物。

----------------
Stances:
----------------

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
---------------------------------------------------------------

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

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

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

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

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

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

一些姿态宏的例子:

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

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

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

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

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:副手] 暴怒
在你没有装备盾牌且副手装备了武器的情况下施放暴怒,也就是说,在你双持的时候才被激活。


Button和Target目标选项

The option [button:<x>] works similarly to the modifier button. Normally, if you left-click a button, it performs whatever action is in that spell, in our case a macro. However, if you set the button option, you can change the behavior of a particular macro.

The default button is 1, the Left Mouse button. Note that when you activate a macro via a keybinding, it treats it like a Left Mouse button click. The numbered buttons are:
1 or LeftButton
2 or RightButton
3 or MiddleButton
4 or Button4
5 or Button5
... or any of the buttons remapped by the secure state headers. I don't know what this last bit means, to be honest, I'm simply quoting slouken.

条件选项[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

新的宏命令:/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,真棒,我想我现在弄明白了!给我点时间设置新的宏....搞定!”

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

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

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

“切,胆小鬼。”举例说明

一些宏的例子:

通用宏:
---------------
/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] <食物>
回答者:icyseiya - 同进士出身 七级 4-22 18:19
评价已经被关闭    目前有 1 个人评价

100% (1) 不好
0% (0)
其他回答    共 5 条
回答者:风影动长竹 - 同进士出身 六级 4-22 12:11
一:基础教程

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 aspectofmonkey (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的宏函数库可以去这两个地方查:

]
回答者:xtkljy - 高级经理 六级 4-22 12:12
宏命令大全和范例(高级)


-------------------------
牧师的宏
首先:/script:告诉系统下面这段文字是用宏语言写的,如果玩家想使用函数必须在每行的开始加上这一句;

一 随机说话
/script a="%t,给你个有限无敌圈"; b="%t,把你变上帝";c="%t,给你一个小恢复";d=random(1,3);
/script if d==1 then SendChatMessage(a) else if d==2 then SendChatMessage(b) else if d==3 then SendChatMessage(c) else end;end;end
/施放 xx法术(等级xx)
二 说话宏
/script SendChatMessage("主动给钱或是由我抢劫二选一"," say","通用语"," YELL")
"语言":写上“通用语”“精灵语”“侏儒语”“兽人语”
"频道":必须在参数"频道"中指明频道的编号,省略时为”综合”,我们还可以用以下的参数:
1."GUILD":工会 2."PARTY":小队 3."RAID":组团 4."YELL":大喊


三 生成一个随机数的函数random()
使用格式:random(起始值,结束值)
作用:生成一个在起始值和结束值之间的随机数
随机数:无起始值和结束值时位于[0,1]区间;提供单个参数n时,随机数位于[1,n]区间;提供两个参数起始值和结束值时,随机数位于[起始值,结束值]区间
例:/script random(50,100)

四 坦克打谁我打谁的宏
/target (主坦克名字) /assist /施放 火球术(等级 10)

五 怪物打谁我加谁的宏
/target (怪物名称) /assist /施放快速治疗(等级7)

六 牧师的群加宏
举例:小队人生命低与一半时,先用宏命令,再用治疗祷言.小队人员的生命几乎都满了.)
/施放 能量灌注
/script SpellStopCasting()
/施放 心灵专注

七 按等级施放法术的宏
真言术:韧
/script r=6;l={1,12,24,36,48,60};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for i=r,1,-1 do if (t>=l-10) then CastSpellByName("真言术:韧(等级 "..i..")");break;end;end
神圣之灵
/script r=3;l={40,42,54};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for i=r,1,-1 do if (t>=l-10) then CastSpellByName("神圣之灵(等级 "..i..")");break;end;end
恢复
/script r=9;l={8,14,20,26,32,38,44,50,56};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for i=r,1,-1 do if (t>=l-10) then CastSpellByName("恢复(等级 "..i..")");break;end;end
真言术:盾
/script r=10;l={6,12,18,24,30,36,42,48,54,60};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for i=r,1,-1 do if (t>=l-10) then CastSpellByName("真言术:盾(等级 "..i..")");break;end;end


八 复活的说话宏
/E 翻箱倒柜拿出脂粉、眉笔、口红...边给 %t 化妆,边叹道:“孩子,你活着的时候就没打扮过,现在装殓前我给你好好打扮打扮。”
/施放 复活术(等级 5)

九 复活的话
我们以牧师为例:选中牧师“复活术”的图标,在名称处填写‘复活’。返回到第一个窗口在输入栏中输入下面的命令:

/me 开始施放复活术
/me 的复活术被%t抵抗
/me 开始变得愤怒了
/me 获得了狂暴效果
/me 施放皮鞭失败:%t对此免疫
/me 施放辣椒水失败:%t爱吃川菜
/me 开始施放色诱术(空格,空格…….)%t 复活了!
/施放 复活术(等级 1)
-------------------------
法师的宏
一 节能施法时自动放奥术飞弹的宏
/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(" 奥术飞弹 ( 等级 7)"); else CastSpellByName(" 灼烧 ( 等级 7)"); end;


二 气定-炎爆
/script SpellStopCasting()
/施放 气定神闲
/script SpellStopCasting()
/施放 炎爆术 等级(X)

/script SpellStopCasting()这句的意思是停止当前的施法
--------------------------
盗贼的宏
一 盗贼攻击的宏
/script if(UnitName("target") == nil) then TargetNearestEnemy();else if(not UnitCanAttack("player","target")) then AssistUnit("target") end end
/script if ( GetComboPoints() >= 5 ) then CastSpellByName(" 剔骨 ( 等级 8)") end
/script GameTooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot")); if(GameTooltipTextRight3:GetText()==" 匕首 ") then CastSpellByName(" 背刺 ( 等级 8)");else CastSpellByName(" 邪恶攻击 ( 等级 8)") ;end
功能 : 如果目标身上是 5 灯就剔骨 , 如果主手是匕首就出背刺 , 如果是其他武器 , 就出邪恶攻击
------------------------------
猎人的宏
一 功能 :( 连续按 ) 收回宠物并令其冬眠 , 自动停止跑动 , 释放装死 , 如果解除战斗状态就释放冰冻陷阱
/script PetPassiveMode()
/script PetFollow()
/script if(UnitAffectingCombat("player")==1) then CastSpellByName(" 假死 ") else if(UnitAffectingCombat("player")==nil) then CastSpellByName(" 冰冻陷阱 ( 等级 2)") MoveForwardStart() end end
/script if(UnitAffectingCombat("player")==1) then MoveForwardStop() StrafeLeftStop() StrafeRightStop() end


二 功能 :( 需要连续按数次实现功能 ) 无目标时选择最近的目标 , 目标是队友是选择队友的目标 ; 目标没有印记的时候施放印记 , 有印记的时候施放毒蛇钉刺 ; 当攻击是自动判断是否自动射击 , 没有就自动射击

/script PetDefensiveMode()
/script if(UnitName("target")==nil) then TargetNearestEnemy() else if(not UnitCanAttack("player","target")) then AssistUnit("target") else if(not IsBuffActive(" 猎人印记 ","target")) then CastSpellByName(" 猎人印记 ( 等级 3)") PetAttack() end end end
/script if(IsBuffActive(" 猎人印记 ","target")) then PetAttack();end
/script if(IsBuffActive(" 猎人印记 ","target")) and (not IsBuffActive(" 毒蝎钉刺 ","target")) then CastSpellByName(" 毒蝎钉刺 ( 等级 3)"); end /script if(not IsAutoRepeatAction(40)) and (IsBuffActive(" 猎人印记 ","target")) then CastSpellByName(" 自动射击 ");end
/施放 召唤宠物
----------------------------
另外附一些宏命令参数的意义
----------------------------
1.法术
1.1 CastSpellByName("spellname(Rank X)")
作用:施放指定名称的法术
1.2 CastSpell(spellID,"spellbookTabNum")
作用:施放参数spellbookTabNum指定的法术书标签中、参数spellID指定位置的法术
参数spellbookTabNum:"spell"或"pet"
1.3 GetSpellCooldown(spellID,spellbookTabNum)
作用:返回指定法术的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0
1.4 SpellIsTargeting()
作用:判断是否有法术正在施放并等待选择目标
1.5 SpellCanTargetUnit("unit")
作用:判断正在等待选择目标的法术能否向参数”unit”指定的单位施放
1.6 SpellTargetUnit("unit")
作用:向参数”unit”指定的单位施放正在等待选择目标的法术
1.7 SpellStopCasting()
作用:停止当前的施法

2.目标选择
2.1 ClearTarget()
作用:清除选定的目标
2.2 TargetUnit("unit")
作用:选定参数”unit”指定的单位为当前目标
2.3 TargetByName("name")
作用:选定指定名字的玩家为当前目标
2.4 TargetLastEnemy()
作用:选定前次曾选定的敌人为当前目标
2.5 TargetLastTarget()
作用:选定前次曾选定的目标为当前目标
2.6.1 TargetNearestFriend()
作用:选定位置最近的友方单位为当前目标
2.6.2 TargetNearestPartyMember()
作用:选定位置最近的队友为当前目标
2.6.3 TargetNearestRaidMember()
作用:选定位置最近的团友为当前目标
2.7 TargetNearestEnemy()
作用:选定位置最近的敌人为当前目标
参数:TargetNearestEnemy(1):逆序选择
2.8 AssistUnit("unit")
作用:选定参数”unit”指定单位的当前目标为自身的当前目标
2.9 AssistByName("name")
作用:选定指定名字玩家的当前目标为自身的当前目标
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();

参考资料:http://zhidao.baidu.com/question/21220014.html http://www.wotguild.org/forums/viewtopic.php?p=4924
 
原创粉丝点击