y1361261309 发表于 2016-4-16 01:23:02

【教学】教你自己做宏命令

第一步:你打算让你的宏帮你做什么呢?
在开始研究你打算要让这个宏做什么,之前,你得了解宏不能做什么:
宏不能…
宏不能瞬间给你放十个冰枪
宏不能自动替你偷骑士的翅膀
宏不能在目标读条的时候自动反制
宏不能在你睡觉的时候自动下副本
宏不能帮你从潘大利亚自动跑到冰封王座
宏不能看你血不多了,自动帮你冰箱
宏不能在目标近的时候放冰环而远的时候自动改放冰颌
除了这些之外,基本没有宏做不了的了。
比如说,你觉得法术偷取和解除诅咒既然目标不同,为什么不放在一个键位呢?这就是“功能需求”。
有了功能需求了以后,就可以开始写你的宏了



第二步:决定你的宏的图标显示什么
#showtooltips的运用
这里我们以一个简单的例子开始
•新建一个宏
•在第一行写入 #showtooltips 深度冻结
•在第二行写入 /use 霜火之箭
•将这个宏拖到技能栏,你会看到一个深结的图标
•按下宏,你发现功能却是放霜火之箭,但是使用深结以后,你可以通过这个图标观察深结的冷却情况
解释:
第一行的#showtooltips 深度冻结,意思就是在宏的图标上显示深结的情况。
而第二行的/use 霜火之箭,意思就是使用霜火之箭技能。

#showtooltips还有**妙用,第二个例子:
•新建一个宏
•在第一行写入:#showtooltips [@focus,exists] 奥术光辉
•这里需要注意的是,在输入 [@focus,exists] 的逗号时,要关掉输入法,宏是不认识中文的标点符号的
•然后把宏拖到一个技能栏
•选中身边一个玩家,通过右键设置其为焦点
•取消当前目标,或者选一个**目标
•尝试拉开和焦点玩家的距离,你会发现技能图标变红了•
解释:
不管你当前目标和你的距离如何,只要焦点目标太远不能放奥术光辉,你的这个宏的图标就显示为红色。
这个 [@focus,exists] 为什么这么神奇呢?我们不急着理解,先来看下一个例子——



第三步:决定你的宏什么时候放什么技能
下一个例子
•新建一个宏,在选择图标时,选择默认的红色问号
•去主城的木桩区
•第一行不写#showtooltips,直接写 /use 霜火之箭
•把宏拖到技能栏,点击宏就可以放霜火之箭了
•下面我们把这个宏加工一下,将第一行改为 /use 霜火之箭
•你发现动作条里的宏图标变成问号了,按下也没有反应,这时尝试按下shift键
•按下后,宏的图标变成霜火箭了
解释:
这个是什么意思呢?
我们来逐个分析这句/use 霜火之箭
/use 使用一个技能的意思
方括号里面是条件,意思是按下shift键时,使用方括号后面紧跟的技能
霜火之箭 的意思就是按下shift键的时候,使用霜火之箭了
那为什么不按shift就没反应呢?
是因为整个宏里面,你只告诉你的客户端,在按下shift的时候放霜火箭。客户端很傻,你什么都没按,当然就不知道做什么了。
那为什么按下后,图标都变了呢?
是因为如果你没有在第一行加#showtooltips并图标选了默认的红色问号,其结果就是,宏的图标显示当前按下时实现的功能

下一个例子能进一步说明这个问题:
•新建一个宏,图标默认红色问号,第一行输入/use 霜火之箭;魔爆术;暴风雪
•拖到技能栏后,分别按下shift/ctrl和alt键,观察功能和图标的变化。
解释:
这个例子中,通过组合键释放多个技能。值得注意的是,每一个技能图标后面,都有一个分号,你可以这样理解:
/use
霜火之箭;
魔爆术;
暴风雪
只有使用了分号,客户端才能正常的将这三个技能排列理解,是不同情况下做不同情况的意思!以后记住,每次写完一个技能的释放,都要加一个分号,注意一定要是关闭输入法后输入的英文分号哦!是;而不是;

倒数第二个关于放什么技能的例子:
•新建一个宏,图标默认红色问号,第一行输入/use 魔爆术; 暴风雪
•拖到技能栏后,分别按下shift/ctrl和alt键,观察功能和图标的变化。
你发现:
在按下shift和alt时,图标都显示的是魔爆术
解释:我们还是从客户端的角度看问题:
/use
魔爆术;
暴风雪
意思是,魔爆术前有两个条件:按下shift和按下alt,这两个条件只要实现一条,就放魔爆术!
前面有一个问题,如果这些条件都不成立,那么客户端就傻了,如何避免这个情况呢?

最后一个关于技能条件的例子:
•新建一个宏,图标默认红色问号,第一行输入/use 魔爆术;[]暴风雪
•拖到技能栏后,分别按下shift和alt键,观察功能和图标的变化。
解释:
相信你早就能自己解释了,只要从客户端的角度看看:
/use
魔爆术;
[]暴风雪
如果什么**条件都满足,那一定能满足“没有条件”的情况!
满足“没有条件”=就是满足任何条件

小练习:编写一个宏,让其在按下shift的时候显示变形术,按下alt的时候显示暴风雪,按下ctrl的时候显示冰锥术,什么都不按的时候显示火焰冲击。
恭喜你,你已经能写使用最广泛的宏了!



第四步:决定你的宏把技能放给谁
在第二步介绍#showtooltips时,我们用到了一个神秘的 [@focus,exists] 功能,但是很快,你会发现其实它一点都不神秘,你还能变来变去各种用。
还是以例子起手:
•新建一个宏,图标默认红色问号,第一行输入/use [@focus] 霜火之箭
•拖到技能栏后,按下宏
•右键点击木桩设置焦点,按下宏
•取消焦点,按下宏
实验后,我们发现:
这个宏的功能是在有焦点目标的情况下,给焦点目标放霜火之箭。
我们还是从客户端的角度看问题:
/use
[@focus] 霜火之箭
可以看到,这里的方括号里面的,已经不是放霜火箭的条件了,而是放霜火箭的目标了。
那么,能否加入条件呢?当然可以。
例子:
•新建一个宏,图标默认红色问号,第一行输入/use 霜火之箭
•拖到技能栏后,观察宏的图标
•右键点击木桩设置焦点,再观察图标
•在有焦点的情况下,按下shift键,观察图标

如你所想,这里的意思是:
/use
霜火之箭
在满足按下shift键的情况时,对焦点目标放霜火之箭!
小练习1:编写一个宏,在按下alt的时候对焦点放法术反制,否则对目标放霜火之箭
小练习2:编写一个宏,在按下alt的时候对焦点放法术反制,否则对目标放法术反制。要求:“法术反制”四个字只允许出现一次



第五步:决定你的宏什么时候放什么技能——进阶
这次我们复习并学习一些新的施法条件:
在按下shift/ctrl/alt键时,释放紧跟着的技能
如果你所处的区域能飞行,则释放紧跟着的技能
和 如果你身处小队或者团队,释放紧跟着的技能
如果你当前带宝宝了(必须是带控制条的宝宝),则释放技能
如果你在马上,则XXX
和 当你在天赋1和天赋2下时
当你在游泳时
当你在战斗中时
当你在引导技能时
如果我要这些条件其中的几个同时成立时放某些技能,要怎么办呢?
答案是 [条件1,条件2] 注意!逗号要是英文的!一个例子:
/use 霜火之箭 意思就是在按下alt并且有宠物的情况下,放霜火之箭
/use 霜火之箭;飞行坐骑名称 意思就是在前一个的基础上,如果直接按且当前区域能飞行,就上鸟。
所有的这些条件,都能通过加入no来实现反向的功能,例如:
/use 霜火之箭
这个宏,在你引导暴风雪的时候,按下是没有反应的。

下面我们要看一个重要的例子:
/use []霜火之箭;魔爆术
你会发现,不管你使出浑身解数,都是按不出魔爆术的。为什么呢?从客户端角度-
/use
[]霜火之箭;
魔爆术
在满足“没有条件”的时候放霜火之箭,在按下alt的时候放魔爆。那为什么没放魔爆呢?答案是客户端很懒,它从左往右看:/use []霜火之箭;魔爆术, 发现在满足“没有条件哦”也就是任何条件下都能放霜火箭!行了放霜火箭,睡觉!
如果前面的条件满足,那么客户端就不会去检查后面的了,要记住这一点。
小练习:有机会逐个试试这些条件,然后记住你在哪能查到他们!



第六步:决定你的宏把技能放给谁——进阶
我们在第二步中用到了 [@focus,exists] ,前面解释了@focus的意思,但是没有解释后面的“,exist”的功能。
我们还是以这个第四步的例子:
•新建一个宏,图标默认红色问号,第一行输入/use [@focus] 霜火之箭
•拖到技能栏后,按下宏
•右键点击木桩设置焦点,按下宏
•取消焦点,按下宏

•将 [@focus] 改为 [@focus,exists] ,注意要是英文逗号。
•在没焦点的时候,观察图标
•设置一个焦点,观察图标
•取消焦点,观察图标
可以发现:
只有在焦点目标存在的时候,宏的图标才显示为霜火之箭。
没错,“,exist”的功能,就是判断焦点目标-focus 存在与否的意思!

这里先不管焦点目标,我们先判断当前目标的情况。下面的例子:
/use 霜火之箭;[]奥术光辉
选中木桩,再选中身边的一个玩家或者自己,观测宏的图标,点击试试功能。
展开这个宏:
/use
霜火之箭;
[]奥术光辉
我们可以猜到,的意思是,当目标为敌对时,放后面的技能。

我们可以把这个宏简化为:
/use 霜火之箭;奥术光辉
去掉方括号后,功能不变。那方括号的意义何在呢?
/use 霜火之箭;[]奥术光辉
明白了吧!如果没有放括号,客户端在你不按alt的时候,可不知道做什么了。

下面是常用的目标判定条件:
是否死亡
是否存在
是否敌对
是否友善
下面通过大量的例子来帮你理解它们:
例子1:
/use 解除诅咒;法术吸取
在目标是友善的时候放解除诅咒,否则法术吸取。
既然目标不是友善就是敌对,那么为何不简化为:
/use 解除诅咒;法术吸取
答案是完全可以,不影响宏的功能。

例子2:
/use 魔爆术;法术吸取
目标存在放魔爆,否则放法术吸取。
注意noexists是exists的反义,同前面一样,这里的所有目标判定条件都可以加no来取反。

例子3:
/use [@focus,exists] []法术吸取
这个例子可能相对较难理解,我们展开:
/use
[@focus,exists] 法术吸取
[]法术吸取
原来是焦点目标存在的时候,对焦点放法术吸取,否则对目标放法术吸取

例子4:
/use 法术吸取
功能是骑马的时候,有焦点则放法术吸取。
注意,第五步中的条件,最好都写在@focus前面

例子5:
/use []法术吸取
我们展开:
/use
法术吸取
[]法术吸取
功能是按下alt的时候,如果焦点存在,则对焦点放法术吸取,否则对目标放法术吸取。

例子6:
/use [@focus,exists,harm] []法术吸取
相比例子3,加入了harm的参数,只有焦点目标是存在且敌对的时候,才对其放法术吸取

小练习:尝试看懂这个宏并结合实践确定自己的猜测
/use [@pet,dead] 召唤水元素; 冰冻术



第七步:决定你的宏把技能放给谁——进·进阶
这一课我们休息一下。就学习两个新的"目标指令":
@player 对玩家释放
@mouseover 对鼠标悬停目标释放
例子:
/use [@player] 奥术光辉
/use [@mouseover] 奥术光辉

小练习:做一个鼠标反制宏,要求如下:
•没有鼠标悬停目标时,对目标释放法术反制
•不管有没有鼠标悬停目标,如果按下了alt键并且焦点存在且为敌对目标,则一定给焦点释放法术反制



第七步:更多的宏命令
前面说了这么多,其实说的都是/use命令,也就是使用技能的命令。但是如果你一步步走过来,应该能理解#showtooltips [@focus,exists] 奥术光辉 的意思了。
同样的:
你能用 /petfollow 实现在按下alt/ctrl/shift的时候,让宠物跟随的功能
你能用 /stopcasting 实现在按下alt/ctrl/shift的时候,打断你当前读条/引导的功能
你能用/targetenemy 实现在当前没有敌对目标时,尝试选中一个敌对目标了
你能用/focus [@focus,noexists] 实现在焦点目标不存在的时候,将当前目标设置为焦点了

毕业设计:想一个平时你遇到的复杂蹩脚的操作,然后用宏把它简化



第八步: 师傅 领进门,修行靠个人
写宏的意义不仅仅用自己的宏时的满足,更在于写宏过程中的动脑和不断的测试,和终于成功实现目标时带来的欢喜。
如果你已经成功的走到了这一步,那么宏的世界,已经向你展开。下面就是不断分析**人的例子,学习宏的功能和语法;同时自己在游戏时,不断挖掘需求,写出一个个好用的宏。甚至进一步学习LUA语言,感受建造一个世界的快乐。
总有一天你也能开出自己的宏工坊。


ok-mvp 发表于 2016-4-18 14:58:11

深奥的好帖,收藏慢慢学习

lianyuxiang11 发表于 2016-5-28 16:51:31

好帖子收下来了,慢慢学习。

cherubli 发表于 2016-8-15 14:32:32

深度学习帖,回复了好好再揣摩揣摩

aknimab 发表于 2016-8-31 14:53:08

这个判断条件还是很好的,mark一下,未来需要的话不用自己去搜索了,在这里查就行了

joyin1985 发表于 2016-11-10 01:37:31

深奥的好帖,收藏慢慢学习

warcraftii 发表于 2016-11-19 09:50:50

[综合] 3.35版 BEE 魔蜂 来这里这么久,终于能够使用自动输出了,请按照我步骤来。 [复制链接]
[综合] 3.35版 BEE 魔蜂 来这里这么久,终于能够使用自动输出了,请按照我步骤来。 [复制链接]
[综合] 3.35版 BEE 魔蜂 来这里这么久,终于能够使用自动输出了,请按照我步骤来。 [复制链接]
[综合] 3.35版 BEE 魔蜂 来这里这么久,终于能够使用自动输出了,请按照我步骤来。 [复制链接]
[综合] 3.35版 BEE 魔蜂 来这里这么久,终于能够使用自动输出了,请按照我步骤来。 [复制链接]

sen522 发表于 2017-2-19 11:50:18


顶,收藏一下..............

zaiyzmei 发表于 2017-3-8 19:25:49

好东西 学习下了啊啊啊啊

wq28054185 发表于 2017-3-25 09:59:11

多谢楼主!感谢大神的鼎力支持!加油!
页: [1] 2
查看完整版本: 【教学】教你自己做宏命令