魔兽世界私服trinitycore2的数据库TDB(3)

来源:互联网 发布:项目群跟进软件 编辑:程序博客网 时间:2024/04/29 11:42

以前介绍了TDB0.0.5的渊源,现在继续介绍TDB内部的一些细节。从[TC2 wiki]可以查到TDB_0.0.5结构比较详细的介绍。

在一个完整的TDB_0.0.5的MYSQL安装库中,你可以看到已经安装的库包括:1、realmd;2、characters;3、world。

realmd库的表比较少,主要是realmlist和account比较重要,realmcharacters主要记录每个服每个帐号有多少个角色。realmlist主要记录每个服的IP地址和端口,而account记录帐号的信息。当一个帐号登录时,首先会在account中校验用户和密码,然后返回realmlist中服列表给客户端。客户端选择服之后,根据服的ip/port就转给了trinity-core来处理了。

characters库主要是帐号的角色信息。这里主要有characters表,是描述角色的各种属性,比如名称,种族、职业,金钱,所在地图。还有个data字段比较特殊,由空格划分成子字段,每个字段的含义根据序号来描述。需要注意的是,在【character data】中描述的索引和trinity core2实际使用的索引是不一样的,trinitycore2使用的索引在UpdateFields.h中EObjectFields和EUnitFields定的,最大的索引PLAYER_END =UNIT_END + 0x047A = OBJECT_END + 0x008E + 0x047A = 0x0006 + 0x008E +0x047A = 0x050E= 1294 。

除此之外,还有角色所在的行会(GUILD)、竞技场(ARENA)、副本(INSTANCE)、宠物(PET)、战场(BATTLEGROUP)、成就(ACHIEVEMENT)、天赋(TALENT)、声望(REPUTATION)等。更详细的介绍,参看【characters db】。

world库是比较复杂的。他存储的是和玩家无关的一些东西,即使没有任何玩家登录到trinity-core,这些数据也是被需要的。比如说,没有玩家,但副本的BOSS的相关数据也会被存储在world库中,当玩家进入副本后,这些数据就从world库中提取出来,创建一个新的副本。【world db】是他比较详细的介绍,一般说来,每次升级,或者增加新的副本,都是修改world库中的数据,基本上不会涉及到realmd和characters库。

world库有几个部分:

1、生物(creatures)相关,包括生物的基本信息,装备、相关声望、相关任务、人工智能。

2、玩家(player)相关,包括种族、职业相关的基本属性、每级经验、创建期信息

3、宠物(pet)相关,包括级别相关的信息。

4、NPC相关,训练师,对白,任务、魔法等

5、物品(item),属性以及和职业种族相关的东西

6、任务(quest)相关.

7、魔法(spell)相关,范围、属性、过程、要求、脚本等。

8、技能(skill)相关。

9、游戏事件(game event)相关,这个比较复杂,相关的表也很多。

10、游戏物品(game object)相关,item是静态,game object可以是动态的,还包含有脚本。

11、寻径(waypoint)相关。

 

DBC是从客户端提取出来一些比较特殊的数据库文件,他的具体描述[dbc db]介绍比较详细。

客户端的所有基础数据都是在DBC中放着,在服务端使用DBC也是从客户端解压出来,所以DBC的数据和表十分庞大。我粗略估算了下解压出来的DBC文件,有464个之多。包含的内容也可以归纳入world那样的各个种类。

原创粉丝点击