由于年代较为久远,我发往NFU的文章是参考多种文档撰写而成的,基本上涵盖了从入门到进阶的较为全面的内容。
文章分为以下几个部分:
一、小白教程
这部分主要收集了以往所有关于宏命令科普的文章,目的在于帮助新手理解宏命令的概念,从而能够自己进行操作。要是有些宏命令无法使用,可能是因为版本不匹配。
在《魔兽世界》(WOW)里,宏命令既复杂又强大,其函数多达上千种。要是能全部掌握,就能实现很多超乎想象的功能。一个宏命令能够执行一个相对复杂的指令。例如在战斗中发布指令,如果打字的话,其实也不算特别麻烦,但在战斗过程中就很不利了,因为这会浪费宝贵的时间,甚至可能危及自身。而一个简单的宏命令就可以通过一个按键来完成这些操作。
要设置一个宏命令,首先要按下ESC键,在菜单里会有设置宏命令的选项,点击这个选项后再点击“新建”。我们只需要向里面输入一些指令,就能一键实现动作和技能的释放。
相信很多人都知道WOW中的斜杠“/”和表情命令。宏命令能够依据自己设定的条件将这些命令串联起来。比如,“/Kneel”是让角色下跪的动作,“/say”是最基本的对话动作。
我们可以用一个宏命令把它们组合起来:
第一行内容:“/Kneel”;
第二行内容:“/say 天哪,天窝的赔钱货都是二货…”
这样,角色就会先下跪,然后说出“天哪,天窝的赔钱货都是二货…”。
更奇妙的是,宏命令还能够运用人物的魔法和技能。“/Cast”是使用技能的命令,当在宏命令里输入“/Cast 技能名(技能等级)”或者按住Shift键的同时用鼠标点击一下想要输入的技能图标就可以了。
“/Assist”是援助进攻的命令。当队伍同时面对多个敌人时,先点击自己队伍里的坦克(负责抗怪的角色),然后使用这个命令,你的目标就会变成坦克所选中的目标,这样就能防止打错怪而导致“OT”(仇恨失控)。例如你是一个法师,可以新建这样一个宏命令,并将它拖到技能栏里:
“#showtooltip 寒冰箭
/assist [help]
/cast [harm] 寒冰箭”
“%t”这个符号可能会经常出现在宏命令里,它是一个代码,代表当前所选中的角色名。例如,在宏命令里写下这么一句(注意:后面要加一个空格):“/g %t 晚晚你是个二货”,那么当按下这个宏命令时,就会在公会频道说:“晚晚你是个二货”(“/g”代表公会频道,同理,“/1”代表综合频道,“/2”代表交易频道,“/P”代表队伍频道,“/Y”代表大喊频道)。
“/Target”是一个自动选择目标的命令,可以在宏命令里输入“/Target(xxx)”,这样当按下这个宏命令时,就会自动选定名为xxx的目标。
“/in”是一个延时命令,时间以秒为单位,不过它不支持攻击指令。格式为:“/in 3 dance”,表示3秒后跳舞,例如“/in 3 dance”,就是在3秒后跳舞。
“/say start!
/in 3 say 3s later
/in 6 say 6s later”
宏命令条件语是插入在宏命令中的语句,能让宏命令根据不同条件执行不同功能。例如下面这个宏命令的作用是,如果目标是友方就施放回春术,如果是敌方就施放月火术。
“#showtooltip
/cast [help]回春术;[harm]月火术”
当这个宏命令执行时,首先检查[help]条件,判断当前目标是否是一个可以接受治疗/增益法术的目标。如果[help]条件成立,就施放“回春术”并执行下一条命令;否则(即没有目标,或者目标不接受有益技能)继续执行下一个子句,也就是分号后面[harm]那里,再判断[harm]条件。[harm]条件与[help]条件相反,是判断目标是否接受敌对法术。同样,如果条件成立就释放“月火术”并执行下一条命令。如果条件不成立,由于后面没有其他子句,这条宏命令就算执行完了,但不会有任何动作。需要注意的是,如果没有写[harm]条件,实际运行效果大致相同。但是,如果没有目标或者当前目标不接受任何法术,屏幕上可能会出现错误信息,或者对于某些技能,鼠标会变成选择施放目标的状态。
二、进阶教程
下面是一些有用的宏命令参考:
1. 能够让你在窗口和全屏状态之间切换的宏命令:
“/script SetCVar("gxWindow", 1 - GetCVar("gxWindow"));
/console gxRestart”
2. 对于法师来说很必要的宏命令:把“X”换成你目前的变形术等级(以下同理),用这个宏命令替换掉变形术技能。当你在队伍之外使用它时会得到“你不在队伍中。”的信息,但在队伍中的时候其他同伴会知道你将要释放变形术的目标。
“/p Sheeping >>> %t 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”的宏命令可以让盗贼根据连击点数自动使用技能(未测试),其中还调用了角色的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”这样的循环,是不是让你想到了很多应用的可能性呢?
遗憾的是,目前官方似乎没有提供延时的宏命令,所以在战斗中使用多种有延时的技能是无法实现的(无延时的技能可以同时使用),类似换其他武器 - 使用技能或法术 - 换回武器这样的功能也无法实现(所谓用宏命令实现剑盾战士换双手武器再换回来是行不通的),不过使用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();”
注释信息:
“#showtooltip”命令写在宏命令的第一行,把宏命令拖曳到动作条后,将鼠标停留在按钮上,就能显示该宏命令的详细信息。
其他重要命令:
装备物品:“/equip /equip 物品名称”
停止施法:“/stopcasting”,这个命令非常重要,当需要立刻打断正在施放的法术或技能去做更重要的事情时就会用到它。例如,术士立刻打断当前正在施放的法术,对目标使用暗影灼烧:“/stopcasting /cast 暗影灼烧”。
解除坐骑:“/dismount”,这个命令能让你立刻下马,如果你在飞行坐骑上遨游时不小心点了……可以加上条件[noflying]。例如:立刻下马,如果在飞行坐骑上宏命令不起作用:“/dismount [noflying]”。
此外,还有一篇《魔兽世界宏命令原理基础教学》。
澄拾游戏