剖析item_db各个字段的含义以及作用

回顾了一下之前的文章,同学们应该都可以成功进入游戏,并且对客户端的iteminfo.lub文件有一点了解啦。接下来的话我来讲一下item_db各个字段的含义以及作用吧,为之后添加自定义道具做准备。

添加自定义道具是基础技能,自己加一些特殊药水,特殊装备之类的还是很有意思的。但是在添加自定义道具之前,我们必须掌握并搞清楚item_db中每一个字段的含义以及作用。

复兴前和复兴后的item_db存放的位置不一样,复兴前的item_db文件位于服务端的db\pre-re目录中,复兴后的item_db文件位于服务端的db\re目录中,请打开你的item_db.txt,可以看到如下的内容:

除了加//的注释符之外,从501红色药水这一行开始,每一行都是一个物品的数据信息,每一个字段用逗号分开。

501,Red_Potion,红色药水,0,50„70„„,0xFFFFFFFF,7,2„„„{ itemheal rand(45,65),0; },{},{}

在我们开始之前,请先看一下顶部的这句注释,即“Structure of Database”,意思是数据库结构,如果你懂英文的话,基本上就能从下面这一行看出每一个字段大概代表什么含义:

ID,AegisName,Name,Type,Buy,Sell,Weight,ATK,DEF,Range,Slots,Job,Class,Gender,Loc,wLV,eLV[:maxLevel],Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script }

我们分别来对里面的格式进行一下说明,其实这些每个字段能用什么值,表示什么含义,都在rathena文件夹里面的docitem_db.txt里面,只不过都是英文的,这里我简单的翻译介绍一下吧。

———————————————————-

ID: 物品的编号

这个编号一般从红色药水的501开始,最大到32768,如果是自己新加物品的话,我个人建议你从25000或者30000开始加,可能大家会发现从501开始数,中间会有一些空闲的ID没有被使用(比如从2824~4000中间就有一段ID没被用过),那也请不要去用。那是韩服给自己留的空间,以后说不定更新一下,2825这个ID就会被韩服征用,这时候你就会很被动了。

———————————————————-

AegisName: 这个是英文名称,这个名称可以用在脚本里面,所以禁止这个英文名称有空格,如果有空格一般都用下划线_来替换,在脚本里面用getitem 501,1; 和用 getitem Red_Potion,1; 应该是一个效果的!如果你不知道我说的这getitem 501,1;是什么玩意儿,请当做没看见,随着我们以后教程的深入你会懂的。

———————————————————-

Name: 物品的名称,一般用在GM指令或者脚本指令里面获取使用。我们知道物品的名称是否汉化其实不取决于这里的Name字段,而是客户端的iteminfo.lub文件。这个Name字段的作用主要就是当你使用“@idsearch 物品名称”指令来企图查询这个物品的编号或其他信息时,你指令里面带的物品名称就必须等于item_db里面的这个Name字段,否则rathena找不到这个物品。

———————————————————-

Type: 这个就是物品的类型了,可选的值如下:

0 治愈物品

2 可用物品

3 其他物品

4 防具(盔甲/鞋子/头饰/披肩/装饰品都是防具)

5 武器

6 卡片

7 宠物蛋

8 宠物装备

10 弹药/弓箭

11 延迟消耗类物品(专门为 ’itemskill’ 设计)

当一个物品的使用脚本(下面会介绍什么是使用脚本)中用到了’itemskill’指令,并且这个指令指定的技能已经被顺利执行之后,才会消耗物品。其他的使用脚本不会导致此物品被消耗(我们可以利用这个特性实现“不会被消耗的苍蝇翅膀”…)

12 影子装备

18 商城物品(这是另外一种延迟消耗类物品),在用户使用此物品时,会弹出一个提示窗询问玩家是否使用,只有当玩家当确认后,物品才会被使用并消耗。

———————————————————-

Buy: 物品的默认购买价格(也就是NPC出售此物品时候的价格),如果没有特殊指定的话,这个值会是Sell字段价格的2倍。

———————————————————-

Sell: 物品的默认出售价格(也就是卖给NPC此物品时候玩家能拿到的钱),如果没有特殊指定的话,会是Buy价格的一半。

———————————————————-

Weight: 物品的重量,这里填写1的话,表示物品重量是0.1(比如箭矢),这里填写10的话,才表示重量是1。

———————————————————-

ATK: 武器的攻击力

———————————————————-

DEF: 防具的防御力

———————————————————-

Range: 武器的攻击射程

———————————————————-

Slots: 武器、防具类物品的卡槽洞数

———————————————————-

Job: 可以使用此物品的职业,使用以下掩码:

(2^00): 0x00000001     初学者/超级初学者

(2^01): 0x00000002     剑士

(2^02): 0x00000004     魔法师

(2^03): 0x00000008     弓箭手

(2^04): 0x00000010     服事

(2^05): 0x00000020     商人

(2^06): 0x00000040     盗贼

(2^07): 0x00000080     骑士

(2^08): 0x00000100     牧师

(2^09): 0x00000200     巫师

(2^10): 0x00000400     铁匠

(2^11): 0x00000800     猎人

(2^12): 0x00001000     刺客

(2^13): 0x00002000     这个ID不使用,大家无视就好

(2^14): 0x00004000     十字军

(2^15): 0x00008000     武僧

(2^16): 0x00010000     贤者

(2^17): 0x00020000     流氓

(2^18): 0x00040000     炼金术师

(2^19): 0x00080000     诗人/舞娘

(2^20): 0x00100000     这个ID不使用,大家无视就好

(2^21): 0x00200000     跆拳少年

(2^22): 0x00400000     拳圣

(2^23): 0x00800000     灵媒

(2^24): 0x01000000     枪手

(2^25): 0x02000000     忍者

(2^26): 0x04000000     Gangsi – 国内没这职业,不知道是啥

(2^27): 0x08000000     Death Knight – 国内没这职业,直译是死亡骑士

(2^28): 0x10000000     Dark Collector – 国内没这职业,直译是黑暗收集者

(2^29): 0x20000000     日影忍者/月影忍者(影牙/胧,忍者的二转职业)

(2^30): 0x40000000     反叛者/变革者(枪手的二转职业)

初学者 + 剑士 + 魔法师 + 弓箭手 = 0x0000000F, 为什么这么计算呢?

因为: 10 = A, 11 = B, 12 = C, 13 = D, 14 = E, and 15 = F

这里的数值用的是十六进制!如果是所有职业可用的话,那么是0xFFFFFFFF

———————————————————-

Class: 可以使用此物品的职业类型,使用以下掩码(这名字看着高深,实际上就是把你想允许使用的数值相加就好):

1: 普通职业 (不含 宝宝职业/进阶职业/三转职业)

2: 进阶职业 (不含 进阶三转职业)

4: 宝宝职业 (不含 三转宝宝职业)

8: 三转职业 (不含 进阶三转职业和三转宝宝职业)

16: 进阶三转职业

32: 三转宝宝职业

怎么理解上面这些数字呢?在二转服没有3转的情况下,使用1+2+4(即7)就可以理解为所有职业皆可使用。在三转服有3转的情况下,使用1+2+4+8+16+32(即63)就可以理解为所有职业皆可使用。

———————————————————-

Gender: 可以使用此物品的性别限制,0是只限女性使用/穿戴,1是只限男性使用/穿戴,2是无论男女都可以使用/穿戴

———————————————————-

Loc: 装备的穿戴位置,可选值如下:

2^8      256 = 头饰上

2^9      512 = 头饰中

2^0      001 = 头饰下

2^4      016 = 盔甲

2^1      002 = 武器

2^5      032 = 盾牌

2^2      004 = 披肩

2^6      064 = 鞋子

2^3      008 = 右侧饰品

2^7      128 = 左侧饰品

2^10    1024 = 时装-头饰上

2^11    2048 = 时装-头饰中

2^12    4096 = 时装-头饰下

2^13    8192 = 时装-披肩

2^15   32768 = 弹药/弓箭

2^16   65536 = 影子装备 – 盔甲

2^17  131072 = 影子装备 – 武器

2^18  262144 = 影子装备 – 盾牌

2^19  524288 = 影子装备 – 鞋子

2^20 1048576 = 影子装备 – 右侧饰品(耳环)

2^21 2097152 = 影子装备 – 左侧饰品(吊坠)

———————————————————-

wLV: 武器的等级,0是防具,1是一级武器,2是二级武器……4是四级武器

———————————————————-

eLV[:maxLevel]: 基础等级达到多少时才能双击此物品,比如你希望红色药水只有在20级以上玩家可以使用,那么只需要配置 20 即可。

但是此选项在2015年1月15日rAthena的更新之后,也支持可选的配置使用物品的最大等级限制。比如你想要配置使用红色药水的玩家必须在20~50级之间,那么只需要在20后面加上一个英文的分号,然后写上50即可,比如 20:50 这样~ 详情可见这篇文章《使用物品的最大级别限制》

———————————————————-

Refineable: 表示此物品是否可精炼,1表示可以精炼,0表示不能精炼

———————————————————-

View: 对于一般的装备来说,这个地方的ID就是他的外观编号,但是对武器和弓箭/弹药类型的物品来说,他们的值时比较特殊的。

对于武器类型的物品来说,这个地方的值可选如下:

0: 空手

1: 短剑

2: 单手剑

3: 双手剑

4: 单手矛

5: 双手矛

6: 单手斧

7: 双手斧

8: 锤子

9: 这个ID不使用,大家无视即可

10: 单手杖

11: 猎弓

12: 拳套

13: 乐器

14: 鞭子

15: 书籍

16: 拳刃

17: 左轮手枪

18: 来复枪/来福枪

19: 格林机枪

20: 霰弹枪/散弹枪

21: 榴弹枪/榴弹发射器

22: 风魔飞镖

23: 双手杖

24: 这个ID不使用,大家无视即可

25: 双刀流-短剑(左手右手都是1把短剑)

26: 双刀流-剑(左手右手都是1把单手剑)

27: 双刀流-斧头(左手右手欧式1把单手斧)

28: 短剑 + 单手剑

29: 短剑 + 单手斧

30: 单手剑 + 单手斧

对于子弹/弹药类型的物品来说,这个地方的值可选如下:

1: 箭矢

2: 投掷用短剑

3: 子弹

4: 炮弹

5: 榴弹

6: 飞镖

7: 苦无/飞刀

8: 加农炮弹

9: 投掷用物品 (三转基因学者丢香蕉的香蕉就是这类物品)

———————————————————-

Script: 当一件物品被使用时或者被装备时,将会执行的脚本代码

———————————————————-

OnEquip_Script: 当一件装备被穿戴时,将会执行的脚本代码。注意:不是所有的加成效果在这里都能生效。

———————————————————-

OnUnequip_Script: 当一件装备被脱下时,将会执行的脚本代码。注意:不是所有的加成效果在这里都能生效。

———————————————————-

当你要添加一个物品的时候,可以按照上面的信息一个字段一个字段的填写,如果拿不定主意的时候,可以想一下游戏里面有哪些物品和你要的一样,然后去看一下它的数据信息是怎么写的,借鉴过来就行 。

给大家布置个作业,去看一下箭矢、发夹[1]的物品数据信息是什么样的,能不能说出他们每个字段的含义?