《宏命令完全指南》8.0最新修改篇

前言

本文主要参考的《Cogwheel's Complete Macro Guide》,由于找不到原文,所以实际参考链接是《考格威尔(Cogwheel's)宏命令完全指南》。后来又发现了可能的真正原文来自wowwiki的这篇《Making a macro》。。。

基于参考的文章,笔者一边学习一边操作,对部分内容作了修改和补充。

目录

一、基本宏命令

1.什么是宏?

2.怎样写宏?

3.施放法术

关于技能名称和等级的说明

4.使用物品或者饰品

5.集成多个动作

6.选择目标

7.控制宠物

8.宏在动作栏的显示控制 “#show”

9.其他的命令

i.装备物品

ii.队列施法或使用物品

iii.随机施法或使用物品

iv.攻击

v.技能栏控制

vi.移除增益效果

vii.退出形态

viii.中止施法

ix.终止一个宏

x.解散坐骑

xi.保存一个目标用于后续动作

xii.模拟点击

xiii.动作栏按扭名

10.进阶:脚本

i.脚本有哪些限制?

ii.什么是脚本?

二、命令条件语

1.什么是命令条件语?

2.可以使用条件语的命令

3.[target=]条件语

4.语法

i.条件语语法简介

ii.条件语法

iii.完整的EBNF语法

iv.参数为空

v.条件为空

vi.[target=]条件语与命令参数

5.命令条件语

i.总表

ii.敌/友(help / harm)

iii.存在(exists)

iv.死亡(dead)

v.姿态(stance:0/1/2/…/n)

vi.潜行(stealth)

vii.功能键状态(modifier:shift/ctrl/alt)

viii.功能键变量

ix.点击状态(button:1/2/…/5/<虚拟按键号>)

x.装备(equipped:<物品类型>)

xi.引导中(channeling:<技能名称>)

xii.技能条(actionbar:1/…/6)

xiii.宠物(pet:<宠物名称或类型>)

xiv.战斗(combat)

xv.行动方式、室内外状态(mounted, swimming, flying, indoors & outdoors)

xvi.允许飞行 (flyable)

xvii.小队/团队队友(party/raid)

xviii.在小队/团队中(group:party/raid)

6.命令条件语的应用

i.设置焦点(focus)

ii.用/click进行分支判定

三、附录

1.自定义图标

2.宏的移植

3.更多信息

4.鸣谢

5.译者注



一、基本宏命令

1.什么是宏?

宏是由一组宏命令组成的。以下是一些普通宏命令:

/say (/s)
/whisper(/w, /talk, /t)
/emote(/e, /em, /me)
/dance

喜爱PVP的人,应该不会忘了这个:

/spit

利用宏,我们可以把这些宏命令放到技能栏上点击使用,而且可以同时做多个动作。写宏的时候,每条动作写在一行上,就像在聊天界面中输入的一样。比如,让你的角色喊一声“Everybody, dance now!”然后开始跳舞的宏:

/y Everybody, dance now!
/dance

一个基本完整的宏命令列表可以参考这里:《宏命令全表》,还有一些旧表《slash commands (old) 》和《list of slash commands (old)》。

注:我先在此说一下,宏的执行是立即进行的。这意味着当你点击技能栏上的一个宏时,宏命令会一条接一条地执行,执行完后才会返回游戏控制。这将会产生两个重要问题:第一,如果写了一个会执行很长时间的宏(如:/run for i=1, 1000000000 do end),游戏会被卡死,直到它执行结束;第二,也是更重要的一点,那就是宏命令不可能具有延时功能。这一现象在我们熟悉/cast之类的命令后就可以很清楚地感觉到。而一些提供了延时执行命令功能的插件,只能是能执行一些所谓的“良性命令”,如交谈、表情和对于其他插件命令的调用(不过战斗中更换武器是可以进行的)。

2.怎样写宏?

首先,打开你的宏窗口:单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro(/m)回车。在宏窗口的顶端,可以看见两个标签:“通用宏”和“<你的角色名>的专用宏”。通用宏被存储在账号专有的文件夹中,路径\World of Warcraft\_retail_\WTF\Account\xxx#x\macros-cache.txt,被所有角色共享。而角色专用宏则存储在角色自己的文件夹下,也是一个macros-cache.txt的文件,是角色专用的。 在标签下面是18个存放宏的栏位。再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于修改选中的宏。然后是一个用于显示、编辑当前宏的文本框。最下面是三个按钮,傻子也能看出它们是干什么的。

如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入宏的名称。如果选择了第一个图标(就是那个很红很暴力的问号),WoW会自动根据你宏命令中涉及的技能或物品选择图标。选好图标,输入完名称,就可以单击“确定”按钮了。

顺便提几点:1.使用问号图标的宏,可以通过使用#show指定显示的图标。2.虽然可以给不同的宏起相同的名字,但是最好不要这样做。因为有些插件和宏命令是通过宏名称来调用宏的。3.在图标列表中可以[添加自定义的图标]  。

现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。同时,新建的宏被选中,图标显示在当前选中宏的栏位中:现在你可以写你的宏了。单击编辑文本框,然后输入吧。

注:宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见第三部分的[宏的移植]  。

写完宏以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个宏,或者是关闭宏窗口的时候,宏都会自动保存的。现在点击宏的图标,看看效果吧!

 

3.施放法术

在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看……

这个:/cast,它是最常见的宏命令了。作用嘛,就是施放一个技能书中的技能(包括宠物的)。最简单的用法就是这样:

/cast 暗言术:痛

把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。我们制作的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。如果宏使用了问号图标,那么还同样会显示痛原有的图标。

那直接用技能不就行了么,何必用宏呢?继续看,在宏中通过集成多条命令可以产生什么效果吧,这才是宏的价值所在。比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?用宏吧,一个简单的/p命令加上一个/cast就可以了:

/cast 变形术
/p 我羊了%t!谁打谁扛着哈!

注:由于宏的执行是立即进行的,所以不管目标是否有效技能是否冷却,宏被点击时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。如果你想在确定成功施放一个技能后才执行某条命令,你可以试试这个/aftercast。AfterCast可以设定在施放某个技能后执行一条宏命令,当然,是在第1节末尾所提到的限制之下的。如:

/aftercast /p 请队友点门,把懒猪%t揪过来!
/cast 召唤仪式

关于技能名称和等级的说明

/cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。为了防止出错,编辑宏时,你可以打开你的技能书,按下Shift然后单击你的技能图标,技能名称和等级就会被正确地输入到你的宏编辑文本框中,如:

/cast 暗言术:痛(等级 5)

如果把“(等级5)”删掉,宏在执行时就会自动选择你最高级别的技能执行;不过在很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。另外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。以下宏命令不能正常执行:

/cast 精灵之火(野性)
/cast 精灵之火(野性)(等级 1)

而以下的命令是正确的:

/cast 精灵之火(野性)
/cast 精灵之火(野性)()

空的括号效果和没有括号是一样的。由于255字符限制的存在,空间还是要节省的,所以空括号可以删掉了……

4.使用物品或者饰品

使用物品和饰品和施放法术是类似的。用于使用物品的命令是/use,后面只需要加上物品的名字就可以了。例如:

 

/use 绿色机械陆行鸟

另外,还有以下其它的使用格式:

/use <装备栏>

这种格式可以使用指定装备栏中的物品。具体使用请参见[《装备栏编号方式》]。例如:

/use 13

使用第一个饰品。

/use <背包> <栏>

这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物:

/cast 喂养宠物
/use 0 1

背包的编号为0-4,顺序是从右到左,即0是行囊。物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同):

1  2  3  4
5  6  7  8
……

或者是:

 

       1  2
3  4  5  6
7  8  9   10
……

如果怕把/cast和/use的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全一样。/cast可以使用物品,而/use也可以施放技能。这一点在目前看来似乎没有什么,但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命令中是多么爽的一件事。

5.集成多个动作

首先,在一个宏中想一键释放多个法术是不行的。大多数技能和很多物品会触发公共冷却(GCD),防止你同时做太多的动作。即使一个技能释放失败,如果它可以触发GCD,那么它也会阻止后续/cast命令的执行。这是2.0版本之后的设定,之前可能看到这样的宏:

/cast 压制
/cast 斩杀
/cast 致死打击
/cast 破甲

但是现在,记住,这种宏已经不能正常执行了。如果压制施放失败,虽然没有触发GCD,客户端也不会继续执行后续的技能施放。不过令人欣慰的是部分技能还是可以集成到一个宏中。任何不触发GCD的瞬发技能后面可以接上另一个技能(“下次近战攻击”型的技能,如英勇打击也归于此类)。一个技能可以通过看说明知道它是否瞬发,至于是它是否触发GCD通过实验就可以知道。

2.3版本之前,在这个瞬发无GCD技能之后需要加上一个/stopcasting才可以施放其后的技能。施放第一个技能后,游戏客户端会认为当前在施法状态,而/stopcasting就可以解除这个状态,就可以解决后续技能不能释放的问题。但是由于技能是瞬发,/stopcasting实际上并不能取消技能的施放。

而现在这里可以不用/stopcasting了,例如:(//表示注释,不起作用的文字)

/use 短暂能量护符
/cast 奥术强化
//stopcasting
/cast 气定神闲
//stopcasting
/cast 炎爆术

6.选择目标

选择目标是宏的另一个主要作用。此类功能可以用专门的目标选择命令实现,改变当前的目标;也可以在一些命令中用[target=]命令条件语实现,临时指定施法或使用物品的目标,而不改变当前目标。命令条件语在第二部分将会讲到。现在我先介绍目标选择命令。

最基本的命令是/target,用法如下:

/target Cogwheel

/target的选择是经过最佳相近匹配的,也就是说,如果我正站在你附近(并且附近没有谁叫Cog的),你执行/target Cog,我就会变成你的当前目标。至于这种机制是利是弊……那就取决于实际情况了,因为这个东东貌似不稳定,有时会得到莫名其妙的结果。比如下面这个宏就可能不是很好用:

 

/target 黑翼法师
/cast 痛苦诅咒

如果附近没有黑翼法师呢?或许结果就是:选中了团里的某个人,因为他的名字在某种意义上比较相近。虽然你的诅咒不会真对他们放出来,但还是够囧的。 另外一个问题是,它可能会选择你身后一个离你100码的单位——根本不是你想选中的那一个……

实测目前此命令根据字符参数从左往右匹配最近目标。上例中只会把名叫Cogwheel单位作为目标,若没有叫Cogwheel的,就会匹配Cogwhee、Cogwhe、Cogwh...直到C,若附近连C开头的的单位名都没有,则不会切换目标。这里指出,它不会去匹配叫ogwheel、wheel、gwh等等的单位,因为第一个匹配的字符串一定是C。

再举个例子,“/target 黑” 能够匹配到附近的黑翼法师,“/target 法师” 就不能匹配到附近的黑翼法师。后面会提到一个/targetexact命令,就可以解决这个问题。

如果附近有两个黑翼法师怎么办呢?我想答案在你心里已经有了,就是匹配最近的哪一个,而不会在几个之间切换。那么这个“附近”又是个什么概念。笔者测试是100码内的单位。

除了用人名进行选择之外,还可以通过单位标识符进行选择。单位标识符(Unit ID)是用于标识特定单位的字符串。比如你的当前的目标就可以用“target”来表示,而你自己对应的标识符是“player”,如果你有宠物,那么它的标识符是“pet”。另外,通过在一个正确的标识符后加上target,就可以获取他的目标。例如:

/target pettarget

这个指令执行后就会以你的宠物的目标作为你的当前目标。

如此变态也可以:

/target targettargettargettargettargettarget

这里是一个可用ID的全表:[《单位标识符》]。

以下是其他的目标选择命令:

/assist

不加任何其他参数时效果是选择你目标的目标,如果在其后加上人物名称,那么就会选择对应人物的当前目标。例如:

/assist 杭海

另外,在客户端的界面选项中有一个选项,可以设置用/assist选中一个敌对目标时是否自动进行攻击。

/cleartarget

清除当前目标。

/targetexact

准确选择,如果附近没有单位的名字和给出的参数完全匹配,就不会切换目标。如果有,则选中最近的匹配目标。

/targetlasttarget
/targetlastfriend
/targetlastenemy

顾名思义,分别用来选择上一个目标、上一个友方目标和上一个敌对目标。如果你之前没有过任何目标,那么这些命令不会产生任何影响。

/targetenemy
/targetfriend

选择敌方目标和选择友方目标。这两条命令是按一定顺序循环选择指定类型的目标的,和使用Tab键的效果类似。如果在命令后加上一个1作为参数,那么就会按循环的反方向进行选择。例如:

/targetenemy 1

效果就和按下Shift+Tab键一样。

注:这两个宏命令每个宏中只能用一次。匹配距离只有50码。

/targetparty
/targetraid

按距离循环选择你附近的小队或团队队友,与/targetenemy类似,也可以用1作为参数改变选择的循环方向。

7.控制宠物

之前在讲施放技能的时候提到过,使用/cast命令可以施放宠物的技能。玻璃渣把法师的水宝宝的霜星起名叫“冰冻术”就是为了避免和法师自身的“冰霜新星”技能冲突,从而导致不能在宏内使用。但是有宠物的职业会发现,如果宏只能施放技能的话,甚至还不如宠物技能栏的功能。别急,燃烧的远征中,新增了以下这些宏指令:

/petattack

让你的宠物去攻击你的当前目标。当然,在命令后加参数可以指定攻击的对象。

/petfollow

宠物切换到跟随状态,同时取消攻击。

/petpassive
/petdefensive
/petaggressive

宠物切换被动、防御和主动攻击状态。同宠物技能栏上的最后3个按钮。

/petautocaston
/petautocastoff

打开/关闭宠物技能的自动施放。例如:

/petautocaston 折磨
/petautocastoff 受难

不过美中不足,没有直接切换自动施放状态的宏命令,我将在后面[模拟点击]  部分提到一个解决方法。

8.宏在动作栏的显示控制

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值