|
修改或自制一些技能是一件很有意思但很累的事情,尤其是当自已一知半解的时候。
关于技能制作,论坛里的基础教程有挺多,但要真正去随心所欲地去制作一个理想的技能,这些基础教程便有些吃力了,后面的一些更深入的东西很难从网上获取一些有用的信息,当你面对几列几十列你几乎没有任何信息的数据时,你所能做的,只能是根据少量信息去猜测--验证。这几天来我做的正是这些。
一、如何用一个技能去修改另一个技能
这个主要是用在装备上,比如一件装备的绿字技能是火球术伤害+100%,当你穿上它时,你的火球术的伤害就被修改了。这其实是我很早以前想弄明白的,也发过帖子求助,无人回应。后来发现可以照抄一些现成的例子来修改技能,但是局限性比较大,你不能选择你想修改的技能(可能没有对应的已存实例)、你不能选择你想修改的效果(比如目标人数修改、CD、施法时间等等)。
我人比较犟,每天晚上花点时间,对着技能的DBC文件看来看去,希望发现一点什么。我是做数据分析的,可能有职业加持吧,还真发现了点东西。一般职业技能在210-212列有一个十六进制的数,就是0x开头的,而在我观察的实例中的123-131列中,也有一些十六进制的数,一开始我也没想它们有什么联系,但偶然一次发现这两个地方的数字有些相同,然后经过多次对比发现,就是一样的。
整理下就是:210-212列的数字是一个职业技能的标识(mask),用以在众多技能中识别它。与ID不同的是,十六进制数(指0x1,0x2,0x4这种)相加后依旧可对每个个体进行识别,ID作为十进制数相加后的数字无意义。而且,在210-212中的哪一列也至关重要,例如对术士来说,210的0x1对应暗影箭,211列的0x1对应吸取生命,而209列是表示职业。为方便说明,我们要制作一个技能1来修改技能2。
123-131是确定被修改技能2的区域,就是说在这几列里我们就要指明我们要修改的技能是技能2,可划分三组,123-125,126-128,129-131,分别对应技能1的三个效果,比如效果1是改伤害,效果2是改CD,效果3是改目标数量。我们在一个技能中有以下三个链条:72-96-111-(123-125)、73-97-112-(126-128)、74-98-113-(129-131)。每一个链条表示一个效果。而210-212列对应着上面的(123-125),(126-128),(129-131)。
111-113表示什么呢?就是指明修改效果,0默认表示修改伤害,1修改持续时间,7修改技能爆击,10修改施法时间,22修改持续性伤害,28修改被驱散几率等等,种类非常多。
下面实例:我们要制作一个技能,使混乱之箭和暗影箭伤害增加50%,且混乱之箭必定暴击,同时使献祭的持续性伤害增加100%。
混乱之箭在211列是0x20000,暗影箭在210列是0x1,献祭在210列是0x4。
这个技能有三个效果,直接伤害增加,暴击率增加,持续性伤害增加,三个链条我们全用上。
链条1:6-108-0-(0x1,0x20000,0)
链条2:6-107-7-(0,0x20000,0)
链条3:6-108-22-(0x4,0,0)
修改的数值在81-83列是指明,这里没列出。最主要的是技能mask在210-212的位置要与括号中的位对应,如两个技能都在某一列,直接相加即可。
TIPS:(1)貌似直接修改伤害是指修改伤害中固定的部分和武器百分比部分,法伤加成系数和攻击加成系数不受些影响,也就是如果一个技能的伤害是固定1点加攻强的100%,那么这种修改方式基本不影响最终的伤害,有待验证;(2)有关宠物的技能,一律在111-113中填8(即修改效果比例),96-98一般填107,填108的话没效果,107反倒是百分比修改了,这个已验证。
至此,我们已可以对技能进行比较全面的基本性修改了,之所以叫基本的修改,是因为这些修改还没脱离技能原来的框架。我们若是想添加一些其他效果呢?请看下面吧。
二、如何用一个技能对另一个技能添加一些额外的效果
这些额外的效果是指”当你施放XX法术时”、“当你XX法术打出爆击时”,甚至是XX技能被闪避、招架等等时会触发的效果,例如术士的爆燃天赋,施放燃烧后,下三次毁灭系法术的施法时间和公共CD缩短30%。
我先前做过一些诸如“你的近战攻击会触发某某效果”的技能,所以认为以上这些效果很容易实现。呃,事实上确实很容易实现,懂得机制后什么事情都容易多了。这两类技能思路大体一样,但细节上差的有点大。
不同一:这是通过另外一个技能去修改燃烧技能,不是直接去修改燃烧这个技能本身;不同二:这里不是法术命中后、近战命中后等触发条件,不能简单在35列进行设置;不同三:这里是指定某个或某些技能来触发。
为这个,头疼了几天。爆燃天赋的DBC翻译出来就是你发出有害魔法命中后会触发技能54277,这个54277就是使下三次毁灭系法术的施法时间和公共CD缩短30%的技能,问题是哪里指明了是施放燃烧之后呢?我一列列的看过去,没有,在54277的列里找来找去也没找到。然后我想,一定在某个地方有个文件在控制着这个机制,然后从DBC文件里翻,去数据库里找,找到一个spell-linked-spell,也没有,在spell-proc-event里,一开始以entry搜也没有,后来不经意到看这里有三列名叫spellfamilymask,对,这个就是上面说的210-212的名字,然后我将燃烧的0x800000转换成十进制,以spellfamilymask1进行检索时,有三行纪录跳了出来,然后他们的entry对应的法术分别是爆燃、清算、火焰冲撞。后面的就顺理成章了。
在spell-proc-event里的procEX控制着触发方式,比如0x2表示爆击,0x10表示闪避等等,转换成十进制填进去就好啦。其他的就简单了,略过。
希望我走的这些有些弯的路能帮到和一样对这些感兴趣的朋友,也希望大家能分享一些你们的体会。
好了好了,我要问问题了,哪位大神能赐教下,96列的4和72列的3到底是个什么?我学计量学过dummy variable,但这个dummy aura我现在还是弄不明白,头疼啊!!求大神赐教! |
上一篇:魔兽世界燃烧的远征各职业T套装代码下一篇:自制装备和问号补丁最方便快捷的办法
|