序
纠结很久,还是写下这个不算教程的教程吧,算是我这么长时间写宏的经验和心得虽然不完整,请原谅,虽然我很想把所有的东西都分享出来, 这篇文章, 在1个月之前已经写成这样了,因为时间的原因,很难有时间来玩JX3 进行休息娱乐,可惜文笔不好,也请允许我以教程的这种方式来表达。 爱好宏、不知道怎么写宏、需要修改宏、研发宏等的玩友,如果能够从这篇个人心得中获得一些借鉴,我就很开心。在这里,先感谢支持我的人,虽然不认识你们,但是因为你们的支持和帮助,我才能坚持学习与改进宏,从单纯的想法走向比较成熟的看法。
在进入正题前, 我想说,宏在某种意义上算是一种程序语言,虽然可以说的上是非常精简、简单的语言,但是我提倡宏是严谨的。
第一章. 完整功能宏创作流程(简介)
1. 非常熟悉即将创作职业的技能细节及附带效果.
2. 将技能进行分类并划分层次
3. 非常熟悉宏命令以及参数
4. 创建宏核心
5. 补充扩展核心,使其形成一定的主功能框架
6. 测试主功能框架,检查BUG,并记录
7. 对主框架反复进行优化改进精简,并重复6步骤
8. 进行全局性检查并调整改进
9. 其他功能添加,从整体的思路插入,重复5 6 7 8步骤
第二章 个人对于技能分类及划分层次的想法
在这里, 我使用惊羽唐门作为例子来阐述:
为了让没有玩过的 惊羽唐门的玩家 也能看懂, 我先大致列出技能
惊羽唐门技能:
自身(通用镇派) | 拥有 120点 神机值 每秒 恢复10点神机值 使用技能消耗神机值(简称 TM) |
化血镖 | 持续性减血debuff, CD: 15s,GCD,消耗15点TM, 每3秒 触发一次伤害,未会心伤害小于普攻 |
逐星箭(镇派技能) | 刷新化血镖debuff(点镇派效果),10尺以外100%会心,GCD , CD:18s ,消耗30点TM |
夺魄箭 | 1.5-1.63秒钟读条输出技能,消耗34点TM ,伤害大,1.5 GCD,使用3次可以顺发,追命箭 ,主输出技能 |
追命箭 | 消耗50点TM, 未会心伤害接近会心夺魄箭平均值,会心伤害巨大,目标血量>80% 伤害翻倍, 10-12秒CD, 有时有GCD.3秒的读条时间,主输出技能 |
暴雨梨花针 | 逆读条技能,读条时间2.5秒,5次伤害,单次未会心伤害小,比普攻高,消耗30点TM |
孔雀翎 | 能攻击3个目标, 单个未会心伤害值小但dps比普攻高,消耗15点TM |
连环弩 | 逆读条技能,读条时间3秒,消耗 0点TM,每次攻击未会心伤害高于普攻 |
心无旁骛 | 使用后,瞬间恢复满神机 在接下的10秒内存在 buff:心无旁骛 效果: 每秒恢复神机值20点, 并且 会心提高 30% 会心效果提高30% |
可触发自身buff或效果:
回肠荡气 | 伤害招式会心则有60%几率 恢复25点TM, 改效果最多6秒1次 |
奥妙无穷 | 招式会心后有40%几率使下一招式的TM消耗降低60%,且不产生任何威胁效果. 改效果每6秒最多触发1次(这个触发的是 buff: 奥妙 存在时间 是10秒) |
无声 | 夺魄箭命中目标 叠加一层,3层无声,转换成 追命无声 |
追命无声 | 下一次瞬发追命箭 |
惊羽唐门,技能安排是有讲究的,如果单纯的随意使用技能, 恢复神机跟不上消耗为了尽量延长这种情况出现或者减少出现时间就很重要.
对于技能分类就要求,有恢复神机,有dps技能
综观上述技能及buff:
分类:
Dps技能: 单位时间产生的伤害远高于其他技能
追命箭 夺魄箭 逐星箭
恢复技能/衔接技能: 使用开始技能到下个技能开始,可以不消耗TM或者恢复一定TM
心无旁骛 10分钟CD 作为关键的神机值恢复技能
暴雨梨花针 2.5秒钟 可以恢复 单纯20-30点神机,如果触发 回肠荡气 可再加上25点, 5次伤害可直接或间接触发 奥妙无穷
孔雀翎 1.5GCD秒钟 可以恢复 单纯10-20点神机,如果触发 回肠荡气 可再加上25点, 1-3次伤害可直接或间接触发 奥妙无穷
上述两个技能 属于半恢复技能 也就是说属于依靠其他条件恢复并不能靠自身恢复, 也可以称之为 衔接技能
连环弩 3秒钟读条可以恢复 单纯 30点神机 如果触发 回肠荡气 可再加上25点, 3次伤害可直接或间接触发 奥妙无穷
层次:
DPS技能拥有一定的优先度,而后是 恢复性技能
DPS技能
追命箭 夺魄箭 逐星箭 伤害是排在前3
比较这3个技能, 不难看出 追命箭 的效果是最好的, 有目标血量>80% 伤害翻倍,技能伤害无威胁,需要3秒读条,但使用3次夺魄箭并命中目标,可以获得buff:追命无声 瞬发追命箭. 故而追命箭于夺魄箭 是最主要输出技能 优先于 逐星箭
划分层次如下:
核心: (dps最主要的来源)
1. 追命箭
次之: 夺魄箭
第2层:
逐星箭
第3层: (半恢复性输出技能, 衔接技能)
1. 孔雀翎
次之: 暴雨梨花针
3. 化血镖
综述: 通过技能分类可以帮助梳理以及分析技能. 只有整理技能 才能有基础为后面的全局分析修改提供依据.
通过划分技能层次可以帮助确定大致的输出框架
第三章.
宏命令及参数简介
下面是宏命令及参数
细分宏命令:
存在三种不同功能的格式:
1.
/skill [条件1,条件2,条件3...]
单一技能
2. /config before:[条件1,条件2,条件3...]
/skill [条件1,条件2,条件3...]
单一技能
/skill
[条件1,条件2,条件3...] 单一技能
.... ....
/config
before:null
3. /config
保护引导
或者
/config 不保护引导
粗分宏参数:
1.
自身或技能状态及自身buff
e.g. 自身状态:
fight
/skill [fight] 猛虎下山
当处于战斗状态中, 使用技能 猛虎下山
自身状态: life
/skill [life<0.5] 惊鸿游龙
当自身生命值小于50%时,使用技能 惊鸿游龙
自身buff: buff: 增益名称
或者 buff: 增益名称1-增益名称2 或者 buff:
增益名称1|增益名称2
/skill [buff:追命无声] 追命箭
当自身存在增益buff 追命无声 时,
使用技能 追命箭
/skill [buff:追命无声-奥妙] 追命箭 当自身存在增益buff 追命无声
并且 存在增益buff 奥妙时, 使用技能 追命箭
/skill [buff:追命无声|奥妙] 追命箭
当自身存在增益buff 追命无声 或者 存在增益buff 奥妙时,
使用技能 追命箭
自身技能状态: cd: 单一技能名称
2. 目标状态及buff
/skill [tlife>0.8] 追命箭 当目标生命值大于80%时,使用技能 追命箭
目标buff: mbuff: 减益名称
/skill [mbuff:化血镖] 追命箭 当目标存在属于自身给予的减益buff 化血镖 时, 使用技能 追命箭
目标buff: tbuff: 减益名称
/skill [tbuff:化血镖] 追命箭 当目标存在减益buff 化血镖 时, 使用技能 追命箭
注意及小技巧:
1. 宏参数中 可以使用 " - " 和 " | "
自身或技能状态及自身buff:
mount nomount buff nobuff bufftime btype detype
目标状态及buff:
tname tnoname broken prepare tbuff mbuff tnobuff nombuff tbufftime mbufftime tbtype tdetype
2. 使用 " - " 和 " | " 可以优化精简宏
e.g.:
当自身存在增益buff 追命无声 并且 存在增益buff 奥妙时, 使用技能 追命箭
/skill [buff:追命无声,buff:奥妙] 追命箭
<==>
/skill [buff:追命无声-奥妙] 追命箭
这样可以省掉 " ,buff: " 6个字节
3. /config以及其相关的参数的含义
在群里有玩友有时会问到这个命令.
config 配置宏的运行
可以理解理解成, 从/config 之后的命令,都要满足 /config 所设置的参数(条件或者状态)
a). /config 保护引导 表示,保护这个宏命令之后的所有正向读条(从左至右)技能,都收到不被宏中其他的命令所打断,除非使用打断命令. 强烈注意, 逆向读条技能,经过很多的尝试,不能被保护.
/config 不保护引导 与 保护引导 含义相反
b). /config before:[条件1,条件2,条件3...] 表示,在这个宏命令之后所有命令都自动添加,before:[条件1,条件2,条件3...] 中的条件, 也可以理解成 只有满足before:[条件1,条件2,条件3...] 中的条件才能运行后面的宏命令.
然而, 并不是所有的宏命令都要满足before:[条件1,条件2,条件3...] 条件, 因此就需要限制 before:[条件1,条件2,条件3...] 的作用范围.
/config before:null 表示,清空设置的预判. 通过这个命令 就可以限定 /config before:[条件1,条件2,条件3...] 的作用范围.
故 通常使用的时候 /config before:[条件1,条件2,条件3...] 与 /config before:null 是成套使用的.
对于宏来说, 越长的宏或者对一个技能使用多种条件限制时,在理论上可以达到作者想要的效果,但是就实际情况来说, 越长的宏 (>1024) 反应稍微比较迟钝, 很可能在该使用技能的时候,由于宏过长导致还没有执行到应该使用的宏命令上,错过使用时间,致使dps出现下滑. 尽可能的在自己想要的功能中进行整体精简
第四章 几个条件的运用心得
以 我个人写 惊羽唐门宏 第7.3.6版为例
简述: 第7.3.6版 整体类似于模块化的方式 完成, 这样的方式,好处是容易分析以及修改添加命令
大致技能条件:
夺魄箭 1.63秒读条 追命箭 11秒CD 逐星箭命中目标可以刷新 mbufftime:化血镖 时间 拥有连环弩 技能
回肠荡气: 伤害招式会心则有60%几率 恢复25点TM, 改效果最多6秒1次
奥妙无穷: 招式会心后有40%几率使下一招式的TM消耗降低60%,且不产生任何威胁效果. 改效果每6秒最多触发1次.
这个触发的是 buff: 奥妙 存在时间 是10秒
宏功能:
1. 在需要打断的时候,梅花针会起作用的
2. 在危险的时候, 惊鸿游龙 会帮助你
3. 可以使用双心无了
4. 在追命无声,奥妙buff下果断使用 追命箭
5. 要相信逐星重置化血能剩25点神机值 (已点刷新化血镇派)
6. 在不影响其他主输出技能下使用 化血
7. 连环弩恢复神机是很好用的,因为它是免费的
8. 尽量使用暴雨梨花针触发奥妙, 减少追命消耗,还能恢复神机值,多好的事
9. 尽量保证拥有追命无声时,使用追命箭
==========1.=============
/skill [broken] 梅花针
/skill [fight,life<0.5] 惊鸿游龙
/skill [fight,cd:心无旁骛,cdtime:连环弩>15,tm<25] 冲脉·幽门
/skill [fight,tm<20,cdtime:连环弩>6,cd:连环弩] 心无旁骛
/skill 猛虎下山
==========2.==========
/skill [otaction,buff:追命无声,buff:奥妙,cdtime:追命箭<0.5,tm>45] 打断
/skill [buff:追命无声] 追命箭
/skill [tlife>0.81,tm>115,nobuff:心无旁骛] 追命箭
==========3.==========
/skill [fight,nobuff:心无旁骛,tm<25] 连环弩
/config before:[fight,nobuff:心无旁骛,nobuff:奥妙]
/skill [tm>45,tm<65] 孔雀翎
/skill [buff:追命无声,tm<49,tm>26] 暴雨梨花针
/skill [nobuff:无声,tm<49] 暴雨梨花针
/config before:null
==========4.==========
/config before:[cd:追命箭,fight,cdtime:追命箭>1.7,nobuff:心无旁骛]
/skill [mbufftime:化血镖>1,mbufftime:化血镖<11] 逐星箭
/skill [nombuff:化血镖] 化血镖
/skill [tm>46] 夺魄箭
/config before:null
==========5.==========
/config 保护引导
/skill [buff:追命无声,tm>60,cdtime:追命箭<1.8,cdtime:追命>0.3] 夺魄箭
/skill [buff:心无旁骛,cd:追命箭] 夺魄箭
/skill [nobuff:追命无声,tm>46] 夺魄箭
/skill [otaction,buff:追命无声,tm>46,cdtime:追命箭<0.4] 打断
1) 探讨 /config before: 命令的 使用
/config before:[条件1,条件2,条件3...]
/skill [条件1,条件2,条件3...] 单一技能
/skill [条件1,条件2,条件3...] 单一技能
.... ....
/config before:null
可以提供 两种很重要的功能, 在这里感谢十分 南宫 弄出这么好的命令 (有点怨念的是 不能作为嵌套使用)
大家可以简单的理解, 如果当宏运行到 上面的 宏语句块 的时候, 宏先判断 /config before:[条件1,条件2,条件3...] 这里面的条件,如果不满足那么,直接跳过并运行 /config before:null 之后的宏语句.
这样可以变相的理解为, 如果 .... 则 ....
a. 如上所说, 变相的理解为, 如果 .... 则 .... 这样可以做成简单的判断条件, 可以将一些条件相同的语句进行整合形成一个多语句共条件的固体功能块. 我称之为 功能模块.
请看 上面的宏, 已经分解成 5个部分, 每个部分是一些功能实现, 前面有简述这个宏具有的一些功能. 全局性思路在后面探讨.
在这里, 先关注3,4部分. 这两个部分使用是 /config before:[] 完成的功能模块
下面我阐述我用 /config before 的想法
在前面第二章中 我对惊羽唐门的技能进行分类 以及分层,
这个模块功能大家很容易的明白: 恢复神机并进行技能衔接
可能没有玩过惊羽唐门的 玩友可能有一种想法: 这个模块里面为什么没有 心无旁骛 这个技能.
原因是 心无旁骛 CD 10分钟, 这一类超长CD类 可以说是 战略性的技能故而单独对待对吗. 其他的职业,如果在输出中使用长CD的技能,希望能慎重考虑安排.
/skill [fight,nobuff:心无旁骛,tm<25] 连环弩
连环弩使用, 需要避开 与心无旁骛 的使用, 避免造成恢复技能的浪费.
同样, 为了避免孔雀翎,暴雨梨花针 在心无旁骛中使用,恢复神机
为了避免浪费, 奥妙这个增益buff ,当存在奥妙下 孔雀翎(原本使用消耗15点 ) 消耗6点TM ,暴雨梨花针(原本30点TM) 消耗12点TM
虽然技能消耗减少但是,这两个技能属于衔接技能,本身产生的dps不高,所以首先考虑将这种增益用于核心技能上,对于惊羽唐门,是 追命箭和夺魄箭.
简单分析: 当 自身拥有 buff:追命无声 (效果是可瞬发追命箭), 但 神机值不够 50 (追命箭标准触发值)
出现 奥妙buff,追命箭触发值可以降低到 50*40% = 20点神机值.
假如 nocd:追命箭 我们肯定希望使用 追命箭 毕竟是输出最高的技能
假如 cdtime:追命箭 > 1.5, 我们可以使用 夺魄箭 34*40% = 13.6 = 14点神机值, 使用夺魄箭后 1.5GCD,按照惊羽唐门内功被动 每秒钟恢复10点, 那么我们可以认为,夺魄箭没有消耗掉神机值.
这样, 孔雀与暴雨梨花针拥有类似相同的功能 以及 相同的使用前提条件, 这样我们可以将其整合. 大大的节省了空间.
通过前面的简单分析, fight,nobuff:心无旁骛,nobuff:奥妙 对于 孔雀翎 跟暴雨梨花针来说 是固定的参数, 这样固体的参数做成功能模块,在修改的时候只需要关注中间技能部分的触发条件.
/config before:[fight,nobuff:心无旁骛,nobuff:奥妙]
/skill [tm>45,tm<65] 孔雀翎
/skill [buff:追命无声,tm<49,tm>26] 暴雨梨花针
/skill [nobuff:无声,tm<49] 暴雨梨花针
/config before:null
b. 可以让 2个逻辑符号 且 " , " 与 或 " ; " 混合使用.
2) cdtime: cd: 参数使用注意
在写宏的过程中, 使用 cdtime: > 的时候, 请不要单独使用, 配合 cd: 一起使用 例如:
/skill [fight,tm<20,cdtime:连环弩>6,cd:连环弩] 心无旁骛
因为 有很多时候, 单独使用 cdtime: > 会失效, 比如 上述例子, 连环弩cdtime <6秒钟的时候, 就会触发 心无旁骛 从而在不该用的时候使用了.
包括使用经脉技能的时候 如果使用到 cdtime 这个参数的时候 一定要确定 技能是否在 某个技能处在cd中.
使用 cdtime: < 的时候 例如:
/skill [mbufftime:化血镖>1,mbufftime:化血镖<11] 逐星箭
假设, 释放逐星箭 只要 化血镖buff 时间小于 11秒 或者 不存在的时候 可以精简上面的语句
/skill [mbufftime:化血镖<11] 逐星箭
这样实现了宏语句包含了两种触发逐星箭的情况: 1. 化血镖bufftime < 11 2. 没有化血镖的时候仍然使用逐星箭
3) 打断命令
打断命令目的是提高 某些技能的优先度.
/skill [otaction,buff:追命无声,buff:奥妙,cdtime:追命箭<0.5,tm>45] 打断
这句目的是提高追命箭的优先程度,当然是在设置条件下. 在之前的技能介绍中, 提到 夺魄箭读条1.5-1.63秒, 1.63秒是由于减cd秘籍不全导致.
故而,写宏的时候需要考虑到这段多出来的时间, 通过 ,cdtime:追命箭<0.5 条件 可以调整 打断来适应 1.63秒 如果 只存在是1.5秒GCD 就可以不需要这样的设置.
..........
第五章. 局部与全局思路的
思路一说,只是个人的一种想法,这里是我自己在反反复复、来回的修改添加中得到的一点经验,奈何无法用非常恰当的语言来进行描述,只能通过比较机械的优先级来叙说,现在很忙,这一段并没有完成,只期望能给大家一点灵感。
全局思路
全局思路: 个人认为是, 在自己写完对单独技能功能的实现后,通过技能与技能间某一个条件联系进行串联,所形成一种具有先后顺序的布局.
全局思路基础来自于局部思路
局部思路
局部优先级划分:
1. 通过特殊场景划分优先级
/config 保护引导
/skill [buff:追命无声,tm>60,cdtime:追命箭<1.8,cdtime:追命>0.3] 夺魄箭
/skill [buff:心无旁骛,cd:追命箭] 夺魄箭
/skill [nobuff:追命无声,tm>46] 夺魄箭
/skill [otaction,buff:追命无声,tm>46,cdtime:追命箭<0.4] 打断
特殊场景优先于普通条件
2. 通过技能触发效果划分
/config before:[cd:追命箭,fight,cdtime:追命箭>1.7,nobuff:心无旁骛]
/skill [mbufftime:化血镖>1,mbufftime:化血镖<11] 逐星箭
/skill [nombuff:化血镖] 化血镖
/skill [tm>46] 夺魄箭
/config before:null
化血镖可以存在22秒左右, 而逐星箭可以刷新化血镖buff
全局思路
1. 当局部思路完成, 可以进行功能能模块间的优先级划分.
例如: 宏 第1部分 第3部分, 可以通过特殊场景划分优先级
1.
/skill [fight,life<0.5] 惊鸿游龙
/skill [fight,cd:心无旁骛,cdtime:连环弩>15,tm<25] 冲脉·幽门
/skill [fight,tm<20,cdtime:连环弩>6,cd:连环弩] 心无旁骛
/skill 猛虎下山
====================
====================
3
/skill [fight,nobuff:心无旁骛,tm<25] 连环弩
/config before:[fight,nobuff:心无旁骛,nobuff:奥妙]
/skill [tm>45,tm<65] 孔雀翎
/skill [buff:追命无声,tm<49,tm>26] 暴雨梨花针
/skill [nobuff:无声,tm<49] 暴雨梨花针
/config before:null
第一部分与第三部分单独看都同属于神机值恢复功能, 但是 心无旁骛 类似于战略级技能用于关键的时候,第3部分就属于局部范围恢复. 这样第一部分与第三部分产生了联系. , 心无旁骛这一部分(上面1部分宏) 属于关键的时候必然是在最关键的时候优先使用,那在优先级上高于普通级别,所以要在第3部分的前面.
对于惊羽唐门来说, 神机值的多少关系到技能的使用,可以说神机值是根本. 既然是根本性的,可以初步确定 心无旁骛这一部分(上面1部分宏) 优先级别最高. 这样 安排这个功能模块成为宏的开头部分.
2. 对于单一技能, 不能完全参照 局部思路, 必要的时候 模块向单一技能让步
例如:在上面宏, 第2部分 中
/skill [tlife>0.81,tm>115,nobuff:心无旁骛] 追命箭
这段宏语句包含两个功能: 1. 起手追命箭 (因为追命箭自身无仇恨) 2. boss血量大于81%时 使用追命箭(使用场景 通过tm>115控制,这里设置比较大相当于屏蔽功能)
当只使用 第一个功能的时候, 因为只是用一次,虽然是属于特殊场景,但优先级要排最后.
然而,在降低优先级后, 出现这个功能无法实现的bug, 原因是 优先级过后导致无法按照预先设计想法实现功能,因此比较特殊的提高单一技能优先级.
总结来说, 全局思路优先需要考虑到各种极端的条件,而这类条件产生的某一个或者某几个技能,进行排序。当然在做到这一步之前,首先完成了整个宏。在使用的过程中发现问题进行调整,有时候宏与自己的输出思路起冲突或者并没有达到自己想要的一个结果,全局思路一说源于样的情况,每一个宏其实很大一部分都由某一个或者某几个条件进行控制的,也许在单纯看宏的时候并没有觉得什么,我认为是客观存在的,比如我的宏里面化血标debuff时间以及追命箭CD可以作为贯穿整个宏的条件,前者算是隐性的,后者是显性。