ChrRaces.dbc
种族定义表(角色种族),定义了魔兽世界中所有可玩种族的属性。包含种族编号、标识、阵营编号(参考Faction.dbc)、男女模型、队伍编号(7=联盟,1=部落)、电影序列、多语言名称以及扩展标识(0=原种族,1=TBC增加)。
文件概述
ChrRaces.dbc 定义了游戏中的可玩种族,每个种族有唯一的编号(ID)和完整的属性集。该文件控制着角色创建界面中种族的显示、男女角色模型、种族特有语言、以及所属阵营等核心游戏元素。根据 CHM 中文详解,第8列为队伍编号(7=联盟,1=部落),第14列为阵营标识(0=联盟,1=部落),两个字段从不同角度控制阵营归属。
数据库对应表:world.chrraces_dbc。
列结构
| 序号 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 1 | ID | int | 种族编号(主键)。1=人类 2=兽人 3=矮人 4=暗夜精灵 5=亡灵 6=牛头人 7=侏儒 8=巨魔 9=地精(未用) 10=血精灵 11=德莱尼 |
| 2 | Flags | int | 标识(CHM:标识)。种族标志位,控制种族特殊功能(如是否可骑乘) |
| 3 | FactionID | int | 阵营编号(CHM:阵营,参考Faction.dbc)。关联 FactionTemplate.dbc,决定该种族的默认阵营关系 |
| 4 | ExplorationSoundID | int | 探索地图音效(CHM:未使用)。部分实现中可能为空 |
| 5 | MaleDisplayId | int | 男性模型(CHM:模型,男性使用)。男性角色默认显示ID,关联 CreatureDisplayInfo.dbc |
| 6 | FemaleDisplayId | int | 女性模型(CHM:模型,女性使用)。女性角色默认显示ID |
| 7 | ClientPrefix | varchar(100) | 客户端种族前缀(CHM:未使用)。如 "Human"、"Orc" |
| 8 | TeamID | int | 队伍编号(CHM:队伍编号,7=联盟,1=部落)。用于队伍归属判断 |
| 9-12 | Unused_Block1 | int | 未使用(CHM 标记为未使用,共4个字段) |
| 13 | CinematicSequenceID | int | 电影序列(CHM:电影序列,参考CinematicSequences.dbc的编号)。开场动画序列ID |
| 14 | Alliance | int | 阵营(CHM:阵营,0=联盟,1=部落)。阵营标识位 |
| 15-30 | Name_Lang_* | varchar(100) | 种族名称(CHM:名称)。多语言文本(16种语言),通用名称 |
| 31 | Name_Mask1 | int | 名称分隔标识(CHM:未使用,貌似总为0xFF01FF)。固定值 |
| 32-47 | Name_Female_Lang_* | varchar(100) | 女性角色使用名称(CHM:名称,女性角色使用)。多语言文本(16种语言) |
| 48 | Name_Mask2 | int | 女性名称分隔标识(CHM:标识,未使用,貌似总为0xFF01EC)。固定值 |
| 49-64 | Name_Neutral_Lang_* | varchar(100) | 中性角色使用名称(CHM:名称,中性角色使用)。多语言文本(16种语言) |
| 65 | Name_Mask3 | int | 中性名称分隔标识(CHM:标识,未使用,貌似总为0xFF01EC)。固定值 |
| 66-68 | Unused_Block2 | int | 未使用(CHM 标记为未使用,共3个字段) |
| 69 | Required_Expansion | int | 扩展(CHM:扩展,0=原种族(经典旧世),1=TBC增加)。控制资料片限制 |
重要字段详解
种族ID与阵营对照
| ID | 种族 | 队伍编号(8列) | 阵营标识(14列) | 扩展 |
|---|---|---|---|---|
| 1 | 人类 | 7 (联盟) | 0 (联盟) | 0 (原种族) |
| 2 | 兽人 | 1 (部落) | 1 (部落) | 0 (原种族) |
| 3 | 矮人 | 7 (联盟) | 0 (联盟) | 0 (原种族) |
| 4 | 暗夜精灵 | 7 (联盟) | 0 (联盟) | 0 (原种族) |
| 5 | 亡灵(被遗忘者) | 1 (部落) | 1 (部落) | 0 (原种族) |
| 6 | 牛头人 | 1 (部落) | 1 (部落) | 0 (原种族) |
| 7 | 侏儒 | 7 (联盟) | 0 (联盟) | 0 (原种族) |
| 8 | 巨魔 | 1 (部落) | 1 (部落) | 0 (原种族) |
| 10 | 血精灵 | 1 (部落) | 1 (部落) | 1 (TBC增加) |
| 11 | 德莱尼 | 7 (联盟) | 0 (联盟) | 1 (TBC增加) |
CHM 详解揭示:第8列"队伍编号"用 7/1 标识阵营,第14列"阵营"用 0/1 标识阵营,两个字段从不同角度提供阵营信息。
RaceMask 位掩码计算
在其他表中使用 RaceMask 时,值为 2^(raceID-1):
在其他表中使用 RaceMask 时,值为 2^(raceID-1):
- 人类(1) = 1, 兽人(2) = 2, 矮人(3) = 4, 暗夜精灵(4) = 8
- 亡灵(5) = 16, 牛头人(6) = 32, 侏儒(7) = 64, 巨魔(8) = 128
- 血精灵(10) = 512, 德莱尼(11) = 1024
- 所有联盟: 1+4+8+64+1024 = 1101
- 所有部落: 2+16+32+128+512 = 690
- 全种族: 1101+690 = 1791 (或 item_template 中用 -1)
名称列的结构说明
CHM 详解指出名称分为三组,由固定分隔值分隔:
CHM 详解指出名称分为三组,由固定分隔值分隔:
- 第15-30列:通用名称(16种语言),最常见使用
- 第31列:分隔值 0xFF01FF(未使用)
- 第32-47列:女性角色使用名称(16种语言)
- 第48列:分隔值 0xFF01EC(未使用)
- 第49-64列:中性角色使用名称(16种语言),最通用的种族名称
- 第65列:分隔值 0xFF01EC(未使用)
- 第66-68列:未使用(3个字段)
扩展标识(扩展)
根据 CHM 详解,第69列控制种族是否为资料片新增:
根据 CHM 详解,第69列控制种族是否为资料片新增:
- 0 原种族(经典旧世):人类、兽人、矮人、暗夜精灵、亡灵、牛头人、侏儒、巨魔
- 1 TBC增加:血精灵、德莱尼
使用技巧
查询某种族的所有初始职业:
SELECT DISTINCT cc.Name_Lang_zhCN AS 职业
FROM charstartoutfit_dbc cso
JOIN chrclasses_dbc cc ON cso.ClassID = cc.ID
WHERE cso.RaceID = 1; -- 1=人类
查询种族对应的阵营关系(含CHM字段):
SELECT cr.Name_Lang_zhCN AS 种族,
CASE WHEN cr.Alliance = 0 THEN '联盟' WHEN cr.Alliance = 1 THEN '部落' END AS 阵营标识(14列),
CASE WHEN cr.TeamID = 7 THEN '联盟' WHEN cr.TeamID = 1 THEN '部落' END AS 队伍编号(8列)
FROM chrraces_dbc cr;
- 自定义种族:在 chrraces_dbc 表中插入新种族数据,设置 MaleDisplayId/FemaleDisplayId 关联自定义模型
- 阵营控制:修改第8列队伍编号(7/1)或第14列阵营标识(0/1)可改变种族的阵营归属
- 语言系统:不同种族有不同的基础语言,由游戏代码根据种族ID自动分配
- 注意:ID=9 地精在 3.3.5a 中未实现,保留为未来的资料片内容