CharTitles.dbc
头衔定义表(PVP等级或其他头衔),定义了游戏中玩家可以获得的所有头衔。包含头衔编号、标识(客户端不使用,也许是服务端使用的)、多语言名称(含男女性别变体)、头衔排列编号(最大不超过186)等信息。
文件概述
CharTitles.dbc 存储了玩家可以在游戏中获得并使用的所有头衔(如"纳鲁的勇士"、"火车王"等)。每个头衔有唯一的编号(ID),通过第2列的标识关联服务端获取条件,并通过第37列的头衔排列编号控制在角色界面的头衔下拉菜单中的显示顺序(最大不能超过186)。根据 CHM 中文详解,第2列为"标识",客户端不使用,也许是服务端使用的,第37列为"头衔排列编号",上限186。
数据库对应表:world.chartitles_dbc。服务端通过 character_titles 表记录玩家已获得的头衔。
列结构
| 序号 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 1 | ID | int | 头衔编号(主键)。头衔的唯一编号 |
| 2 | Condition_ID | int | 标识(CHM:标识,客户端不使用,也许是服务端使用的)。在 AzerothCore 中用作获取条件ID,关联 conditions 表 |
| 3-18 | Name_Lang_* | varchar(100) | 头衔名称(CHM:头衔名称,男性角色使用)。多语言文本(16种语言) |
| 19 | Name_Lang_Mask | int | 名称分隔标识(CHM:未使用)。固定值标记 |
| 20-35 | Name_Female_Lang_* | varchar(100) | 女性角色使用的头衔名称(CHM:头衔名称,女性角色使用)。多语言文本(16种语言) |
| 36 | Female_Name_Mask | int | 女性名称分隔标识(CHM:未使用)。固定值标记 |
| 37 | Mask_ID | int | 头衔排列编号(CHM:头衔排列编号,在游戏中的头衔下拉菜单里使用,最大不能超过186)。用于排序和分组 |
重要字段详解
头衔名称结构
CHM 详解指出名称分男性/女性两组:
CHM 详解指出名称分男性/女性两组:
- 前后缀模式:名称为 "%s, 部落的勇士" 表示前缀 "部落的勇士 %s",格式为 "位置标记, 头衔名" 则头衔在前
- 普通模式:名称不含 %s,直接显示为头衔文本
- 大多数头衔使用 "%s" 占位符来表示角色名的位置
- 第3-18列:男性角色使用的头衔名称(16种语言)
- 第20-35列:女性角色使用的头衔名称(16种语言),某些头衔在不同性别下有不同表述
Condition_ID / 标识(获取条件)
CHM 指出该列为"标识,客户端不使用,也许是服务端使用的"。在 AzerothCore 中关联 conditions 表定义头衔的获取条件:
CHM 指出该列为"标识,客户端不使用,也许是服务端使用的"。在 AzerothCore 中关联 conditions 表定义头衔的获取条件:
| 常见条件类型 | 说明 |
|---|---|
| CONDITION_ACHIEVEMENT (25) | 完成特定成就后获得 |
| CONDITION_QUESTREWARDED (8) | 完成特定任务后获得 |
| CONDITION_RANK_REPUTATION (14) | 达到特定声望等级 |
| 0 | 无条件获得或通过脚本授予 |
Mask_ID / 头衔排列编号
CHM 详解说明该列用于"在游戏中的头衔下拉菜单里使用",最大不能超过186。在游戏中用于:
CHM 详解说明该列用于"在游戏中的头衔下拉菜单里使用",最大不能超过186。在游戏中用于:
- 头衔下拉列表的排序和分组
- 同一位掩码区域内的头衔按 ID 顺序排列
- PvP 头衔、成就头衔、声望头衔各分配不同的排列编号区域
- 该编号相当于游戏内头衔下拉菜单的位置索引
使用技巧
查询所有中文头衔名称:
SELECT ID, Name_Lang_zhCN AS 头衔名, Condition_ID, Mask_ID AS 排列编号
FROM chartitles_dbc
ORDER BY Mask_ID, ID;
授予玩家头衔(GM命令):
-- 方法1: GM命令
.character titles known 1 -- 获得ID=1的头衔
.character titles set 1 -- 设置当前头衔为ID=1
.character titles current 1 -- 同上
-- 方法2: 直接修改数据库
INSERT INTO character_titles (guid, title, known)
VALUES (玩家GUID, 头衔ID, 1)
ON DUPLICATE KEY UPDATE known = 1;
- 自定义头衔:在 chartitles_dbc 插入新行,设置 Condition_ID=0 可通过脚本手动授予
- 头衔授予流程:条件满足 → conditions 表验证 → 服务器授予头衔 → character_titles 记录 → 客户端显示
- 多语言支持:第3-18列设置男性名称,第20-35列设置女性名称,可为男女角色提供不同头衔文本
- 注意:头衔的 %s 格式必须与客户端期望一致,否则显示异常;Mask_ID(排列编号)不能超过186