文件概述

ChrRaces.dbc 定义了游戏中的可玩种族,每个种族有唯一的编号(ID)和完整的属性集。该文件控制着角色创建界面中种族的显示、男女角色模型、种族特有语言、以及所属阵营等核心游戏元素。根据 CHM 中文详解,第8列为队伍编号(7=联盟,1=部落),第14列为阵营标识(0=联盟,1=部落),两个字段从不同角度控制阵营归属。

数据库对应表:world.chrraces_dbc

列结构

序号字段名类型说明
1IDint种族编号(主键)。1=人类 2=兽人 3=矮人 4=暗夜精灵 5=亡灵 6=牛头人 7=侏儒 8=巨魔 9=地精(未用) 10=血精灵 11=德莱尼
2Flagsint标识(CHM:标识)。种族标志位,控制种族特殊功能(如是否可骑乘)
3FactionIDint阵营编号(CHM:阵营,参考Faction.dbc)。关联 FactionTemplate.dbc,决定该种族的默认阵营关系
4ExplorationSoundIDint探索地图音效(CHM:未使用)。部分实现中可能为空
5MaleDisplayIdint男性模型(CHM:模型,男性使用)。男性角色默认显示ID,关联 CreatureDisplayInfo.dbc
6FemaleDisplayIdint女性模型(CHM:模型,女性使用)。女性角色默认显示ID
7ClientPrefixvarchar(100)客户端种族前缀(CHM:未使用)。如 "Human"、"Orc"
8TeamIDint队伍编号(CHM:队伍编号,7=联盟,1=部落)。用于队伍归属判断
9-12Unused_Block1int未使用(CHM 标记为未使用,共4个字段)
13CinematicSequenceIDint电影序列(CHM:电影序列,参考CinematicSequences.dbc的编号)。开场动画序列ID
14Allianceint阵营(CHM:阵营,0=联盟,1=部落)。阵营标识位
15-30Name_Lang_*varchar(100)种族名称(CHM:名称)。多语言文本(16种语言),通用名称
31Name_Mask1int名称分隔标识(CHM:未使用,貌似总为0xFF01FF)。固定值
32-47Name_Female_Lang_*varchar(100)女性角色使用名称(CHM:名称,女性角色使用)。多语言文本(16种语言)
48Name_Mask2int女性名称分隔标识(CHM:标识,未使用,貌似总为0xFF01EC)。固定值
49-64Name_Neutral_Lang_*varchar(100)中性角色使用名称(CHM:名称,中性角色使用)。多语言文本(16种语言)
65Name_Mask3int中性名称分隔标识(CHM:标识,未使用,貌似总为0xFF01EC)。固定值
66-68Unused_Block2int未使用(CHM 标记为未使用,共3个字段)
69Required_Expansionint扩展(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):
  • 人类(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 详解指出名称分为三组,由固定分隔值分隔:
  • 第15-30列:通用名称(16种语言),最常见使用
  • 第31列:分隔值 0xFF01FF(未使用)
  • 第32-47列:女性角色使用名称(16种语言)
  • 第48列:分隔值 0xFF01EC(未使用)
  • 第49-64列:中性角色使用名称(16种语言),最通用的种族名称
  • 第65列:分隔值 0xFF01EC(未使用)
  • 第66-68列:未使用(3个字段)
扩展标识(扩展)
根据 CHM 详解,第69列控制种族是否为资料片新增:
  • 0 原种族(经典旧世):人类、兽人、矮人、暗夜精灵、亡灵、牛头人、侏儒、巨魔
  • 1 TBC增加:血精灵、德莱尼
该字段用于控制种族对资料片的要求,0值种族在经典旧世即可选择。

使用技巧

查询某种族的所有初始职业:
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;