添加自定义道具-路飞的草帽

昨天我们讲了如何在客户端中添加一个普通的物品《添加自定义道具-伊利纯牛奶》,今天我们来讲一下如何添加带外观的装备(比如头饰、翅膀这种穿戴后角色样子会改变的,都算是带外观的装备这一类型)。

在开始之前,我们需要学习一下这类带外观的道具在data目录下有多少文件,以及这些文件是干什么用的,以及客户端读取其外观的顺序是什么样子的,这样到时候我们动手添加时才不会有太多的疑惑。

1、带外观的道具在data目录下有多少文件?

要回答这个问题,也很简单,只需要找一个带外观的道具,然后根据其在iteminfo.lub的图档名称,用grfmaker2去搜索data.grf文件即可。

在这里我们以“气球帽”为例子来看一下,首先在iteminfo.lub里面找到气球帽鉴定后的图档名称:国烽寝

然后用grfmaker2打开data.grf去搜索“国烽寝”这个图档名字,可以看到如下有8个文件是和这个图档名字相关的:

《添加自定义道具-伊利纯牛奶》中,我们已经讲了里面4个文件的作用,我们会发现这次比上次多了4个文件,都是在“data\sprite\厩技荤府”这个目录下,这4个文件就是外观的图档文件。

1、在“data\sprite\厩技荤府\”中,放的是男性穿戴此物品时候的外观图档文件。

2、在“data\sprite\厩技荤府\”中,放的是女性穿戴此物品时候的外观图档文件。

3、男性的图档文件都是“巢开头,女性的图档文件都是“咯”开头,这是铁律。

至此你已经了解了普通头饰、翅膀他们在data里面的图档组成部分!

2、客户端如何确定并读取一件装备的外观?

我们还是以气球帽为例来讲,了解一下客户端如何确定并读取装备的外观,这样的话下一步我们也更清楚应该怎么去添加相关的信息。

1、首先客户端会从服务端得知装备的物品ID和外观ID

比如气球帽的物品ID是:5379  外观ID是:385 ,这两个信息都是在服务端的item_db里面记录着的:

2、接下来客户端会去data\luafiles514\lua files\datainfo\accessoryid.lub里面,根据外观ID获取外观的英文名,比如气球帽的外观ID 为385 查到的结果为ACCESSORY_BALLOON_HAT,如下图所示:

3、接下来客户端会去data\luafiles514\lua files\datainfo\accname.lub里面,根据外观英文名来查找外观图档的名称,比如气球帽的外观英文名是ACCESSORY_BALLOON_HAT那么查到的图档名称为“_国烽寝”,如下图所示:

如果图档名称是方块的话,请通过“格式→编码字符集→中文→GB2312”来改变一下显示编码,这样就可以看到如上图所示的图档名称。

4、根据玩家的角色,男生为“”,女生为“”,加入到刚刚查到的图档名称之前,比如“_国烽寝”的前面加上“巢”后,就会变成“巢_国烽寝”,这样子就得到了该读取的图档名称。

5、到“data\sprite\厩技荤府”目录里面对应的性别名称的文件夹中,如果是男生那就是“data\sprite\厩技荤府\”,女生就是data\sprite\厩技荤府\”里面去读取第4步找到的图档名称,最终路径为data\sprite\厩技荤府\巢\_国烽寝.spr”和“data\sprite\厩技荤府\巢\_国烽寝.act”两个文件。

上面就是客户端寻找图档文件的整个过程,大家会发现其实最关键的就是在accessoryid.lubaccname.lub这两个文件里面。这两个文件控制着所有“非披肩、非背饰”类型的装备外观~

类似“堕天使之翼(物品ID=2589)和冒险家背包(物品ID=2576 )”这种披肩、背饰类型的物品(这两个物品都是复兴后的,复兴前的item_db里面没有),有另外2个lub文件在维护,以后有机会我们会讲到。

3、外观ID的取值范围

仙境传说的客户端的外观ID是有合法取值范围的,如果范围不对的话,这个ID就会被客户端无视掉,当做这个外观不存在了。默认情况下的外观ID是从1~2000,如果不在这个范围内的话,就会出问题。

如果想要扩充外观ID的取值范围怎么做呢?其实很简单啦,就是在Diff的时候,勾选上“Increase Headgear ViewID”,然后填写你想要的外观ID上限就可以啦(注意:外观ID最大不能超过32000)。若你之前用的是我提供的Diff配置文件的话,应该已经被我扩充到了30000啦。

4、准备工作,图档准备

现在我们已经知道了相关的基础的知识,接下来就是动手添加代外观的装备啦,在开始之前我们需要确定一下添加什么东西。自己制作装备图档的我就先不说了,这里我在网上找了一个头饰,作为本文的例子教大家如何使用。

路飞的帽子图档下载:http://pan.baidu.com/s/1gdkZil9 这个图档是rathena论坛上Adel分享的,样子看起来非常不错,现在就教大家如何一步一步把为这个头饰分配外观ID,并且将其添加到游戏里面去。

接下来我们开始想象一下,这个头饰的一些属性。路飞的帽子是草帽,肯定不会很重~那么重量就定为5吧,然后路飞的草帽应该只占用“头饰上”这个位置,除此之外没有任何等级限制,防御力勉强算1吧,草帽也很柔软,设定为不可精练。

5、为图档分配外观ID

现在开始正式干活了,请将上面的图档解压出来,把压缩包里面data文件夹中的内容,复制到你的data目录里面。

然后,请打开data\luafiles514\lua files\datainfo\accname.lub文件,在最末尾加入一行这个外观的英文名以及对应的图档名称,在这个例子中路费的帽子英文是luffy_hat,所以我们就用这个作为外观英文名。此外在解压出来的图档中,大家可以看到在“data\sprite\厩技荤府\巢”或者“data\sprite\厩技荤府\咯”里面,图档的名字是“巢_luffy_hat”,那么说明我们要的图档名字就是去掉前面性别后的“_luffy_hat”,如下图:

搞定后请保存文件,并记住上面外观的整个英文名,即:ACCESSORY_LUFFY_HAT 然后打开data\luafiles514\lua files\datainfo\accessoryid.lub文件,看一下现在最后的外观ID是多少,比如我这里看到的最后的外观ID1512,如下图所示:

知道了最后的外观ID后,我们就可以为路飞的草帽这个图档分配一个不重复的ID了,在这里我选择在1512的基础上加一,变成1513。然后将外观英文名和这个ID写到文件末尾(记住最末尾的信息是没有逗号结尾的,但是倒数第二行必须有逗号),最终效果如下:

请保存文件,至此我们已经将这个1513这个外观ID分配给了路飞的草帽图档。

6、添加物品的DB信息

关于添加物品的DB信息,我就不再一步一步的敷述啦,大家参照《添加自定义道具-伊利纯牛奶》添加DB信息的步骤来添加即可。

需要注意的是,这件物品的装备位置是“头饰上”而且类型又是属于防具,根据我们在《剖析item_db各个字段的含义以及作用》学到的信息,我们需要将Loc字段改成256以此来表示此物品的穿戴位置是“头饰上”,还需要将Type字段改成4以此来表示这个道具的类型是“防具”,最后还要将wlv要改成0,以此来表示这是一个防具,我们还需要将View改成我们前面为其分配的1513,来指定这个道具使用路飞的草帽图档。

最终得到的物品DB信息如下:

30001,Luffy_Hat,路飞的帽子,4,10000„10,0,1,0,0,0xFFFFFFFF,7,2,256,0„0,1513,{ },{ },{ }

7、最后一步,添加物品的iteminfo信息

添加方法之前在《添加自定义道具-伊利纯牛奶》已经教过啦,大家只需要注意在我们这个例子中,由于“data\texture\蜡历牢磐其捞胶\collection”里面的图档名称是luffy_hat,所以我们在unidentifiedResourceNameidentifiedResourceName就要填写“collection文件夹里面正确图档的文件名”啦,即luffy_hat

除此之外,这个头饰的外观ID是1513,所以ClassNum也要改成1513,最后的iteminfo信息如下(仅供参考,别直接复制,可能会有逗号被博客系统自动转换成其他特殊的逗号):

[30001] = {
unidentifiedDisplayName = “路飞的草帽(未鉴定)”,
unidentifiedResourceName = “luffy_hat”,
unidentifiedDescriptionName = {
“海贼王路飞的草帽!戴上后会有酷酷的感觉出现~”,
“―――――――――――――”,
“系列 : ^777777头饰^000000”,
“防御 : ^7777771^000000”,
“位置 : ^777777上段^000000 重量 : ^7777775^000000”,
“装备 : ^777777全部职业^000000”
},
identifiedDisplayName = “路飞的草帽”,
identifiedResourceName = “luffy_hat”,
identifiedDescriptionName = {
“海贼王路飞的草帽!戴上后会有酷酷的感觉出现~”,
“―――――――――――――”,
“系列 : ^777777头饰^000000”,
“防御 : ^7777771^000000”,
“位置 : ^777777上段^000000 重量 : ^7777775^000000”,
“装备 : ^777777全部职业^000000”
},
slotCount = 0,
ClassNum = 1513
},

8、成果和作业

至此我们已经完成了整个头饰的添加过程了,我们现在进入游戏试试看效果,总体来说感觉还是非常不错的哟:

希望大家能多动手练习,我这里还准备了另外一个图档给大家(非常可爱的海绵宝宝头套),大家试试看能不能成功也制作出一个带外观的头饰:http://pan.baidu.com/s/1bndFKvl  祝大家成功,如果有问题可以到群里咨询。