魔兽世界宏命令完全教程.docx
- 文档编号:30011650
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:24
- 大小:32.86KB
魔兽世界宏命令完全教程.docx
《魔兽世界宏命令完全教程.docx》由会员分享,可在线阅读,更多相关《魔兽世界宏命令完全教程.docx(24页珍藏版)》请在冰豆网上搜索。
魔兽世界宏命令完全教程
1考格威尔(Cogwheel's)宏命令完全指南
Cogwheel著WOWWiki共享维护Subelf译版权所有请勿用于商业用途
1一、
基本宏命令
11.什么是宏?
宏是由一组宏命令组成的。
以下是一些普通宏命令:
/say(/s)
/whisper(/w,/talk,/t)
/emote(/e,/em,/me)
/dance
喜爱PVP的人,应该不会忘了这个:
/spit
利用宏,我们可以把这些宏命令放到技能栏上点击使用,而且可以同时做多个动作。
写宏的时候,每条动作写在一行上,就像在聊天界面中输入的一样。
比如,让你的角色喊一声“Everybody,dancenow!
”然后开始跳舞的宏:
/yEverybody,dancenow!
/dance
一个基本完整的宏命令列表可以参考这里:
《宏命令全表》,不过个别新添加的宏命令还没有被收录。
WoWWiki有很多关于宏的资料,尤其是脚本和/run命令(后面将会提到)。
注:
我先在此说一下,宏的执行是立即进行的。
这意味着当你点击技能栏上的一个宏时,宏命令会一条接一条地执行,执行完后才会返回游戏控制。
这将会产生两个重要问题:
第一,如果写了一个会执行很长时间的宏(如:
/runfori=1,00doend),游戏会被卡死,直到它执行结束;第二,也是更重要的一点,那就是宏命令不可能具有延时功能。
这一现象在我们熟悉/cast之类的命令后就可以很清楚地感觉到。
而一些提供了延时执行命令功能的插件,只能是能执行一些所谓的“良性命令”,如交谈、表情和对于其他插件命令的调用(不过战斗中更换武器是可以进行的)。
12.怎样写宏?
首先,打开你的宏窗口:
单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro(/m)回车。
在宏窗口的顶端,可以看见两个标签:
“通用宏”和“<你的角色名>的专用宏”。
通用宏被存储在账号专有的文件夹中,被所有角色共享。
而角色专用宏则存储在角色自己的文件夹下,是角色专用的(废话……囧)。
在标签下面是18个存放宏的栏位。
再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于修改选中的宏。
然后是一个用于显示、编辑当前宏的文本框。
最下面是三个按钮,傻子也能看出它们是干什么的。
如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入宏的名称。
如果选择了第一个图标(就是那个很红很暴力的问号),WoW会自动根据你宏命令中涉及的技能或物品选择图标。
选好图标,输入完名称,就可以单击“确定”按钮了。
顺便提几点:
1.使用问号图标的宏,可以通过使用#show指定显示的图标。
2.虽然可以给不同的宏起相同的名字,但是最好不要这样做。
因为有些插件和宏命令是通过宏名称来调用宏的。
3.在图标列表中可以添加自定义的图标。
现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。
同时,新建的宏被选中,图标显示在当前选中宏的栏位中:
现在你可以写你的宏了。
单击编辑文本框,然后输入吧。
注:
宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。
不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见第三部分的宏的移植。
写完宏以后,只要把它的图标拖放到技能栏中就可以了。
当你执行一个宏,或者是关闭宏窗口的时候,宏都会自动保存的。
现在点击宏的图标,看看效果吧!
13.施放法术
在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。
在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看……
这个:
/cast,它是最常见的宏命令了。
作用嘛,就是施放一个技能书中的技能(包括宠物的)。
最简单的用法就是这样:
/cast暗言术:
痛
把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。
这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。
我们制作的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。
如果宏使用了问号图标,那么还同样会显示痛原有的图标。
那直接用技能不就行了么,何必用宏呢?
继续看,在宏中通过集成多条命令可以产生什么效果吧,这才是宏的价值所在。
比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?
用宏吧,一个简单的/p命令加上一个/cast就可以了(使用这个无耻的插件可以达到更好的效果:
CCWarn,不过我们现在需要的只是这个简单易懂的教学例子):
/cast变形术
/p我羊了%t!
谁打谁扛着哈!
注:
由于宏的执行是立即进行的,所以不管目标是否有效技能是否冷却,宏被点击时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。
如果你想在确定成功施放一个技能后才执行某条命令,你可以试试这个插件:
AfterCast。
AfterCast可以设定在施放某个技能后执行一条宏命令,当然,是在第1节末尾所提到的限制之下的。
如:
/aftercast/p请队友点门,把懒猪%t揪过来!
/cast召唤仪式
1i.关于技能名称和等级的说明
/cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。
为了防止出错,编辑宏时,你可以打开你的技能书,按下Shift然后单击你的技能图标,技能名称和等级就会被正确地输入到你的宏编辑文本框中,如:
/cast暗言术:
痛(等级5)
如果把“(等级5)”删掉,宏在执行时就会自动选择你最高级别的技能执行;不过在很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。
另外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。
而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。
以下宏命令不能正常执行:
/cast精灵之火(野性)
/cast精灵之火(野性)(等级1)
而以下的命令是正确的:
/cast精灵之火(野性)
/cast精灵之火(野性)()
空的括号效果和没有括号是一样的。
由于255字符限制的存在,空间还是要节省的,所以空括号可以删掉了……
14.使用物品或者饰品
使用物品和饰品和施放法术是类似的。
用于使用物品的命令是/use,后面只需要加上物品的名字就可以了。
例如:
/use绿色机械陆行鸟
另外,还有以下其它的使用格式:
1i./use<装备栏>
这种格式可以使用指定装备栏中的物品。
具体使用请参见《装备栏编号方式》。
例如:
/use13
使用第一个饰品。
1ii./use<背包><栏>
这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物:
/cast喂养宠物
/use01
背包的编号为0-4,顺序是从右到左,即0是行囊。
物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同):
1234
5678
……
或者是:
12
3456
78910
……
如果怕把/cast和/use的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全一样。
/cast可以使用物品,而/use也可以施放技能。
这一点在目前看来似乎没有什么,但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命令中是多么爽的一件事。
15.集成多个动作
首先,在一个宏中想一键释放多个法术是不行的。
大多数技能和很多物品会触发公共冷却(GCD),防止你同时做太多的动作。
即使一个技能释放失败,如果它可以触发GCD,那么它也会阻止后续/cast命令的执行。
这是版本之后的设定,之前可能看到这样的宏:
/cast压制
/cast斩杀
/cast致死打击
/cast破甲
但是现在,记住,这种宏已经不能正常执行了。
如果压制施放失败,虽然没有触发GCD,客户端也不会继续执行后续的技能施放。
不过令人欣慰的是部分技能还是可以集成到一个宏中。
任何不触发GCD的瞬发技能后面可以接上另一个技能(“下次近战攻击”型的技能,如英勇打击也归于此类)。
一个技能可以通过看说明知道它是否瞬发,至于是它是否触发GCD通过实验就可以知道。
版本之前,在这个瞬发无GCD技能之后需要加上一个/stopcasting才可以施放其后的技能。
施放第一个技能后,游戏客户端会认为当前在施法状态,而/stopcasting就可以解除这个状态,就可以解决后续技能不能释放的问题。
但是由于技能是瞬发,/stopcasting实际上并不能取消技能的施放。
而现在这里可以不用/stopcasting了,例如:
/use短暂能量护符
/cast奥术强化
100码2.2.3i,"target"ifUnitIsUnit(u..t,t)thenSendChatMessage("Changetargets!
Tryingtosheep...","WHISPER",nil,UnitName(u))endend
呃……貌似看起来有些乱……不过没办法……首先,宏是有255字符数限制的,所以常常要用一些不美观的方式去写代码。
其次,脚本要写在一行中。
这两个条件导致代码的可读性很低。
如果把代码单独拿出来美化一下的话,应该是这个样子:
fori=1,GetNumRaidMembers()-1do
localunit="raid"..i
ifUnitIsUnit(unit.."target","target")then
SendChatMessage("Changetargets!
Tryingtosheep...","WHISPER",nil,UnitName(unit))
end
end
1二、
命令条件语
11.什么是命令条件语?
命令条件语是插入在宏命令中,使宏根据条件执行不同功能的语句。
举个例子,下面这个宏的作用是,如果是友方目标就施放恢复,如果是敌方目标就上痛:
/cast[help]恢复;[harm]暗言术:
痛
当这个宏执行时,首先检查[help]条件,判断当前目标是否是一个可以接受治疗/增益法术的目标。
如果[help]条件成立,那么就施放恢复并执行下一条命令,否则(即没有目标,或目标不接受有益技能)继续执行下一个子句,也就是分号后[harm]那里,再判断[harm]条件。
[harm]条件和[help]条件相反,判断目标是否接受敌对法术。
同上,如果条件成立就释放“暗言术:
痛”并执行下一条命令。
如果条件不成立,由于后面没有其他子句,这条宏命令就算执行完了,但是什么动作都没有做。
注:
如果没有写[harm]条件,实际运行效果是差不多的。
不过,如果你没有目标或者当前目标不接受任何法术,那么屏幕上将会出现错误信息,或者对于某些技能,鼠标将会变成选择施放目标的状态。
12.可以使用条件语的命令
只有那些“安全化”命令可以接受命令条件语。
其实正是经过安全化的命令才需要条件语。
常规命令,比如说聊天、表情之类的,可以通过脚本来实现命令条件语的功能。
而且暴雪不想限制大家在聊天时使用分号(;)。
如果/s命令可以使用命令条件语的话,那么下面这个命令就会只说hello:
/sayHello;I’man00b
以下是当前客户端中安全化命令的列表:
#show1
#showtooltip1
/assist
/cancelaura
/cancelform
/cast
/castrandom
/castswquence
/changeactionbar
/clearfocus
/cleartarget
/click
/dismount
/equip2
/equipslot2
/focus
/petagressive
/petattack
/petautocastoff
/petautocaston
/petdefensive
/petfollow
/petpassive
/petstay
/startattack
/stopattack
/stopcasting
/stopmacro
/swapactionbar
/target
/targetenemy
/targetfriend
/targetlasttarget
/targetparty
/targetraid
/use
/userandom
注1:
#show和#showtooltip不是真正意义上的安全化命令,但是它和/use以及/cast的内部机制相仿。
注2:
/equip和/equipslot逻辑上也不算是安全化命令,因为它们的功能是可以通过插件和脚本实现的。
当然,如果你希望在常规命令中使用命令条件语,就需要安装专门的插件。
MacroTalk,这是我的一个作品,通过在非安全化命令前添加/opt,然后在/opt中处理各类条件来实现对不同命令的调用(当然只能是非安全化命令)。
最新版的SuperMacro中应该也有类似的功能。
13.[target=]条件语
该条件语使得宏命令除了可以对条件进行判断外,还可以设置动作的目标。
例如,下面这个宏运行时,无论当前目标是谁,玩家只会给自己绑绷带:
/use[target=player]厚灵纹绷带
Target条件语在指定动作目标的同时,也指定了进行条件判断的目标。
下面这个垃圾宏是一个纯教学例子,看我的说明:
/cast[help][target=targettarget,help][target=player]快速治疗
这个宏运行的时候,首先会检查[help]条件。
如果条件为真,那么就开始吟唱快速治疗。
否则就跳至第二个条件,[target=targettarget,help]。
此时,判断目标和技能目标都被设定为你当前目标的目标,然后进行help条件判断。
如果条件成立就对你当前目标的目标施放快速治疗,否则再跳至第三个条件。
而第三个条件总是成立的,所做的只是把你自己当作施法目标。
14.语法
命令条件语是按什么规则生效的?
恐怕要回答这个问题很容易引起混乱。
所以,趁还没有正式开始讲,我先用一些现实生活的例子做类比。
看不懂不要紧,这只是些概念,技术性的内容后面都还会再提到的。
1i.条件语语法简介
所有的宏命令的基本工作方式是相同的:
一个命令,后面带上一个或多个参数(取决于命令的要求,有些甚至不需要任何参数)。
看下面这些例子:
/cast猛击
\___/\___/
||
|参数
|
命令
/petattack
\_______/\/
||
|参数(为空)
|
命令
/castsequencereset=target献祭,腐蚀术,痛苦诅咒,生命虹吸
\_________/\_______________________________________/
||
命令参数
而命令条件语可以通过对一组条件进行的判断来选择命令的实际参数。
首先,可以用分号分隔出若干个“若干组条件+参数”这样的子句,逻辑上,分号就相当于高级语言中的else或是elseif。
条件的组数不定,也可以没有,同一组条件用一个方括号括在一起。
而每组条件中有可以包含多个条件。
就像这样:
/命令[一组条件][另一组条件]参数1;[又一组条件]参数2;……
前面的例子已经说明了,宏命令的解释过程是从左至右的。
当一组条件被判定成立时,命令就会采用其对应的条件。
如果某一个子句中不包含条件,那么就被无条件判定为成立。
像/castXXX这种简单的宏命令就可以理解为一个只有一个子句的宏,而这个子句又不包含条件。
而如果一个宏的任何一组条件都不为真,那么它就完全不会执行。
1ii.条件语法
每组条件都是由逗号分隔的一些条件语组成的,各条件不分前后次序。
逻辑上,[target=]总是先发生作用,然后其他的条件才进行判定。
逗号在这里可以理解为“并且”,也就是说各条件简是逻辑“与”的关系。
比如[help,nodead,target=focus]的含义就是:
我的焦点是友善的,并且是只活的。
注意:
条件是对大小写敏感的,如果你把[help]写成了[Help],宏运行时会报错。
条件中有组合式的使用方式,比如nodead,同样对于help,你可以用nohelp表示相反的条件。
但是nohelp不等于harm:
首先,help和harm都要求目标存在才有可能成立;其次,有些目标,比如中立阵营NPC、非战斗宠物或者护送任务NPC等,既不算help,也不算harm。
还有些条件可以指定一些特定的参数。
比如[stance],姿态,单独使用时表示“在任一姿态中”(显然这对战士来说是废话一句)。
如果给它加上参数,就可以指定在某个姿态下,格式是在条件语后写上冒号(:
),然后后面写上参数,每个参数间用斜线(/)分隔。
综上所述,一个条件语的完整格式如下(<>表示其中的部分是可选的):
[
parameter>>>]
下面举个例子,如果在战斗或防御姿态施放盾击,否则转入防御姿态:
/cast[stance:
1/2]盾击;防御姿态
这个宏用伪代码写的话就是:
IF当前在姿态1或姿态2
THEN用盾击
ELSE切换防御姿态
注意:
“no”前缀是对整个条件和所有参数的修饰,即把原来的真变为假,假变为真。
比如[nostance:
1/2]表示“不在姿态1也不在姿态2中”。
1iii.完整的EBNF语法
对EBNF规范很熟悉的人,以上内容可以概括为:
command="/",command-verb,[{command-object,";"}command-object]]
command-verb=?
anysecurecommandword?
command-object={condition}parameters
parameters=?
anythingwhichmaybepassedtothecommandword?
condition="["condition-phrase{","condition-phrase}"]"
condition-phrase=["no"],option-word,[":
"option-argument{"/"option-argument}]
option-argument=?
anyone-wordoption,suchas'shift,'ctrl','target','1','2'?
1iv.参数为空
有些命令是可以没有参数的,这里就存在着一个陷阱。
比如:
/petattack[target=focus,harm];
很多初学者一看,认为这个宏的含义应该就是判断焦点是否为敌对,如果是,就把宠物送上去咬。
而实际上呢?
让我们分析一下:
/petattack[target=focus,harm];
\________/\______________/VVV
|||||
命令条件语1||参数2(为空)
||
|条件语2(为空)
|
参数1(为空)
现在看出来了吧?
由于那个分号的存在,这个语句实际上包含两个子句,而一个条件语为空的子句是被当作条件成立处理的,因此即使前面的条件语1不成立,也会执行一个/petattack。
1v.条件为空
有时我们需要在特定条件下对特定目标施放技能,并在条件不成立的情况下按常规施放。
这中效果可以通过使用一组空条件来获得。
下面例子中的宏在执行时会对你鼠标指向的友方单位施放圣光闪现。
如果鼠标没有指向任何单位或者指向的目标不是友善的,那么就会按常规对当前目标施放,或者根据设置(如自动自我施法、自我施法功能键)对自己施放。
/cast[target=mouseover,help][]圣光闪现
1vi.[target=]条件语与命令参数
很多命令的参数是可以直接指定目标的。
比如/targetparty1就可以把小队中第一个队友作为你的目标。
而用/target[target=party1]的话,虽然看起来别扭,但是效果也是一样的。
但是宏的设计者不希望我们根据一个单位的状态而对另一个单位执行动作,因此大多数情况下[target=]条件和命令参数只能有一个发生作用。
例如:
/target[target=focus,dead]party1
客户端会把party1直接忽略掉——因为你已经指定了[target=focus]。
不过这种情况也有例外,就是个别命令拥有一个“特殊单位”(其实也就是该命令会影响的单位标志符)。
见下表:
命令特殊单位
/targettarget
/focusfocus
/startattacktarget
/petattackpettarget
当在[target=]中使用的是该命令的“特殊单位”时,命令执行目标不会被设置为该单位,而命令参数中指定的目标也不会被忽略。
例如
/focus[target=focus,dead][target=focus,noharm]target
由于focus是/focus命令的特殊单位,所以/focus的目标就不会被[target=focus]设置成焦点,而是target,即当前目标。
如果没有指定target,/focus就相当于没有参数,同样是把当前目标设为焦点。
15.命令条件语
下面给出一张条件总表,每一个条件在后面我都会再给出更详细的介绍。
1i.总表
在对宏命令系统的更新中,宗旨就是把玩家从按“一键万能宏”按到手抽筋的状态中“解脱”出来。
不过有一些宏的用法是被官方认可了的,它们获得了“玻璃渣祝福”的效果——可以通过使用条件语来重现。
下面列出宏命令系统中支持的所有条件语。
如果你需要的判断条件没有在此列出,那么就不可能通过该条件来执行安全化命令的动作。
这是中央的死龟腚,谁都没办法,不过以后也有可能会再增加一些。
help目标可以接受增益法术
harm目标可以受到攻击
exists目标存在
dead目标已经挂了
stance:
0/1/2../n玩家在某姿态下
stealth玩家在潜行状态下
modifier:
shift/ctrl/alt某功能键被按下
button:
1/…/5/<虚拟按键号>宏通过某键点击执行
equipped:
<装备类型>玩家装备了某类型物品,参见《装备类型》
channeling:
<法术名称>玩家正在引导某法术
actionbar:
1/…./6当前技能栏为某动作栏
pet:
<宠物名称或类型>玩家当前宠物为某宠物
combat玩家正在战斗状态
mounted玩家在骑乘状态
swimming玩家在游泳
flying玩家在飞行状态
flyable玩家正处在一个允许飞行的地界
indoors玩家在室内
outdoors玩家在户外
party目标在玩家的小队中
raid目标在玩家的小队或团队中
group:
party/raid玩家在某集体中(小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 魔兽世界 命令 完全 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)