CharStartOutfit.dbc
角色初始装备表(玩家出生时得到的物品),定义了每个种族/职业/性别组合在创建角色时的初始装备、武器和背包物品。这是控制角色出生时携带什么物品的核心文件。CHM 说明:貌似服务端有相同的数据表实现这个功能。
文件概述
CharStartOutfit.dbc 是角色创建的基石之一。每一行定义一个特定的"种族-职业-性别"组合的初始装备套装。它指定了新角色出生时背包中的物品ID(最多24件)、这些物品的显示模型ID(服务端不需要),以及它们对应的装备库存类型(服务端不需要)。根据 CHM 中文详解,第5列为"未使用",第30-53列为"物品模型编号,服务端不需要",第54-77列为"物品库存,服务端不需要"。
数据库对应表:world.charstartoutfit_dbc。
列组说明:ItemID_1~24 (实际物品ID,参考item_template表的entry字段), DisplayItemID_1~24 (物品模型编号,服务端不需要), InventoryType_1~24 (物品库存信息,服务端不需要)。
列结构
| 序号 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 1 | ID | int | 套装编号(主键)。每条记录的编号 |
| 2 | RaceID | tinyint | 种族(CHM:种族,参考ChrRaces.dbc)。关联 ChrRaces.dbc 的编号 |
| 3 | ClassID | tinyint | 职业(CHM:职业,参考ChrClasses.dbc)。关联 ChrClasses.dbc 的编号 |
| 4 | SexID | tinyint | 性别(CHM:性别,0=男,1=女) |
| 5 | OutfitID | tinyint | 套装外观ID(CHM:未使用)。控制外观变体,部分实现可能为空 |
| 6-29 | ItemID_1 ~ ItemID_24 | int | 物品编号(CHM:物品编号,参考item_template表的entry字段)。初始物品ID(最多24个槽位),关联 item_template.entry |
| 30-53 | DisplayItemID_1~24 | int | 物品模型编号(CHM:物品模型编号,服务端不需要)。对应物品的显示模型ID,关联 ItemDisplayInfo.dbc |
| 54-77 | InventoryType_1~24 | int | 物品库存(CHM:物品库存,服务端不需要)。对应物品的装备栏位/库存类型信息 (1=头部 3=肩部 5=胸部 13=单手武器 17=双手武器 21=主手 等) |
重要字段详解
初始装备示例(人类战士,男性)
一个典型的人类战士初始装备:
一个典型的人类战士初始装备:
| 槽位 | ItemID | 物品名称 | InventoryType |
|---|---|---|---|
| ItemID_1 | 38 | 新兵衬衣 | 4 (衬衣) |
| ItemID_2 | 39 | 新兵短裤 | 7 (腿部) |
| ItemID_3 | 40 | 新兵的靴子 | 8 (脚部) |
| ItemID_4 | 25 | 短剑 | 21 (主手) |
| ItemID_5 | 2362 | 木盾 | 14 (副手/盾牌) |
种族-职业-性别组合
并非所有种族和职业都有全套男女组合:
并非所有种族和职业都有全套男女组合:
- 部分种族/职业只对特定性别定义了单独的行
- SexID=0 (男性) 和 SexID=1 (女性) 可能使用不同的 OutfitID
- 同一套装可能有不同的外观变体(OutfitID)用于区分男女模型
- 一行覆盖所有性别的情况通常 SexID 设为特定值
三组24栏位数据的区别
CHM 详解指出了三组24栏位数据的不同性质:
CHM 详解指出了三组24栏位数据的不同性质:
- 第6-29列(物品编号):实际初始物品ID,引用 item_template.entry,服务端和客户端都使用
- 第30-53列(物品模型编号):物品的显示模型ID,仅客户端使用,服务端不需要
- 第54-77列(物品库存):物品在背包/装备栏中的位置信息,仅客户端使用,服务端不需要
InventoryType 装备栏位对照
| 值 | 栏位 | 值 | 栏位 |
|---|---|---|---|
| 1 | 头部 | 8 | 脚部 |
| 3 | 肩部 | 13 | 单手武器 |
| 5 | 胸部 | 15 | 副手/盾牌 |
| 7 | 腿部 | 17 | 双手武器 |
| 10 | 手指 | 21 | 主手武器 |
使用技巧
查询人类战士男性初始装备:
SELECT ItemID_1, ItemID_2, ItemID_3, ItemID_4, ItemID_5
FROM charstartoutfit_dbc
WHERE RaceID = 1 AND ClassID = 1 AND SexID = 0;
配合 item_template 查询物品详情:
SELECT cso.RaceID, cso.ClassID, cso.SexID,
it.entry, it.name, it.Quality
FROM charstartoutfit_dbc cso
JOIN item_template it ON it.entry IN (
cso.ItemID_1, cso.ItemID_2, cso.ItemID_3,
cso.ItemID_4, cso.ItemID_5, cso.ItemID_6,
cso.ItemID_7, cso.ItemID_8, cso.ItemID_9,
cso.ItemID_10
)
WHERE cso.RaceID = 1 AND cso.ClassID = 1;
- 修改初始装备:直接修改 ItemID_* 字段为新物品的 entry 值
- 添加自定义物品:在空的 ItemID 槽位填入新物品ID,显示模型和库存字段服务端不需要管
- 删除初始物品:将对应 ItemID 设为 0 即可移除
- 注意:24个物品槽位中通常只使用前 5-8 个,其余为 0 的槽位表示不使用
- 注意事项:修改后需要重启服务器或重新加载 charstartoutfit_dbc 表