Item.dbc
物品定义表(物品),对应数据库表 item_template。包含物品的基础分类、子分类、材质(-1到8)、显示编号(模型列)、装备槽类型、鞘类型等核心字段。CHM 详解指出前8列与数据库表 item_template 字段一一对应。
文件概述
Item.dbc 是客户端侧的物品定义文件,与服务器端的 item_template 表紧密关联。根据 CHM 中文详解,Item.dbc 定义了客户端渲染物品所需的最小信息集:编号对应 item_template.ID、分类对应 Class、子分类对应 Subclass、声音重写子分类(-1到20,一般是-1)、材料(-1到8 对应 Material 列)、显示编号(对应物品的模型列)、装备槽类型(确定物品怎么装 对应 InventoryType 列)、鞘类型(0到4,主要是0 对应 sheath 列)。而 item_template 包含了更全面的游戏逻辑数据。
数据库对应表:world.item_dbc。Item.dbc 中的每一行对应 item_template 中的 entry。
重要:修改 item_template 时,若涉及 Class/Subclass/DisplayID/InventoryType 等客户端渲染字段,Item.dbc 中的对应字段也必须同步修改。
列结构
| 序号 | DBC字段 | item_template字段 | 类型 | 说明 |
|---|---|---|---|---|
| 1 | ID | entry | int | 编号(CHM:编号,对应数据库表item_template的ID)。物品唯一ID (主键) |
| 2 | ClassID | class | int | 分类(CHM:分类,对应数据库表item_template的第2列分类)。0=消耗品 1=容器 2=武器 3=宝石 4=护甲 5=试剂 6=弹药 7=商品 9=配方 11=箭袋 12=任务 13=钥匙 15=杂项 16=雕文 |
| 3 | SubclassID | subclass | int | 子分类(CHM:子分类,对应数据库表item_template的第3列子分类)。根据 ClassID 有不同含义 |
| 4 | Sound_Override_Subclassid | SoundOverrideSubclass | int | 声音重写子分类(CHM:声音重写子分类,-1到20,一般是-1,对应数据库表item_template的第4列声音)。用于特殊物品的声音效果 |
| 5 | Material | Material | int | 材料(CHM:材料,-1到8,对应 Material 列)。-1=消耗品 1=金属 2=木头 3=液体 4=珠宝 5=锁甲 6=板甲 7=布甲 8=皮甲 |
| 6 | DisplayInfoID | displayid | int | 显示编号(CHM:显示编号,对应物品的模型列)。关联 ItemDisplayInfo.dbc,控制物品的3D模型和图标 |
| 7 | InventoryType | InventoryType | int | 装备槽类型(CHM:装备槽类型,确定物品怎么装,对应 InventoryType列)。详见下方装备槽类型对照表 |
| 8 | SheatheType | sheath | int | 鞘(CHM:鞘,0到4,主要是0,对应 sheath列)。武器收起/佩戴方式 |
重要字段详解
装备槽类型对照表(CHM详解)
CHM 提供了完整的装备槽类型对照:
CHM 提供了完整的装备槽类型对照:
| 编号 | 槽类型 | 编号 | 槽类型 | 编号 | 槽类型 |
|---|---|---|---|---|---|
| 0 | 无 | 9 | 手腕 | 18 | 袋子 |
| 1 | 头部 | 10 | 手套 | 19 | 徽章 |
| 2 | 颈部 | 11 | 手指 | 20 | 战袍 |
| 3 | 肩膀 | 12 | 饰品 | 21 | 主手 |
| 4 | 衬衣 | 13 | 单手 | 22 | 副手 |
| 5 | 胸部 | 14 | 副手(盾) | 23 | 书 |
| 6 | 腰部 | 15 | 弓 | 24 | 弹药 |
| 7 | 裤子 | 16 | 后背 | 25 | 投掷武器 |
| 8 | 脚 | 17 | 双手 | 26 | 枪 |
物品大类 (ClassID/分类) 速查
| ClassID | 类别 | 常用子类 |
|---|---|---|
| 0 | 消耗品 | 0=消耗品 1=药水 2=药剂 3=合剂 5=食物/饮料 7=绷带 |
| 1 | 容器 | 0=容器(背包) |
| 2 | 武器 | 0=单手斧 1=双手斧 2=弓 3=枪 4=单手锤 5=双手锤 6=长柄 7=单手剑 8=双手剑 10=法杖 13=拳套 15=匕首 17=弩 18=魔杖 19=鱼竿 |
| 4 | 护甲 | 0=杂项 1=布甲 2=皮甲 3=锁甲 4=板甲 5=小圆盾 6=盾牌 |
| 9 | 配方 | 0=工程学 1=制皮 2=炼金术 3=锻造 等 |
Item.dbc 与 item_template 的关系
CHM 详解明确指出该表"对应数据库表item_template":
CHM 详解明确指出该表"对应数据库表item_template":
- Item.dbc(客户端):控制物品在背包、装备栏、角色模型上的外观显示
- item_template(服务端):控制物品的完整属性、价格、使用效果等游戏逻辑
- 修改 DisplayInfoID 会改变物品的图标和3D外观
- 修改 InventoryType 会影响物品在哪个装备栏位装备
- 关键规则:Item.dbc 和 item_template 的 Class/Subclass/DisplayID/InventoryType 必须保持一致
SheatheType / 鞘(武器佩戴方式)
CHM 说明鞘类型取值范围0到4,主要是0:
CHM 说明鞘类型取值范围0到4,主要是0:
| 值 | 佩戴方式 | 适用武器 |
|---|---|---|
| 0 | 无 | 非武器物品(默认值) |
| 1 | 双手背在背上 | 双手剑/双手斧/双手锤/法杖/长柄 |
| 2 | 单手挂在腰间 | 单手剑/单手斧/单手锤/匕首 |
| 3 | 盾牌背在背上 | 盾牌 |
| 4 | 魔杖/权杖 | 法系武器 |
使用技巧
查询所有双手武器的 DBC 信息:
SELECT ID, ClassID, SubclassID, InventoryType, SheatheType
FROM item_dbc
WHERE InventoryType = 17; -- 17=双手武器
同步 item_template 和 Item.dbc:
-- 查看不一致的数据
SELECT it.entry, it.name, it.class, it.InventoryType,
idc.ClassID, idc.InventoryType
FROM item_template it
LEFT JOIN item_dbc idc ON it.entry = idc.ID
WHERE it.class != idc.ClassID
OR it.InventoryType != idc.InventoryType;
- 新增自定义物品:先在 item_template 创建物品,再在 item_dbc 中创建对应行(ID必须匹配)
- 修改物品外观:修改 DisplayInfoID 指向新的 ItemDisplayInfo.dbc 条目
- 武器类型转换:修改 SubclassID 可改变武器在技能限制中的类别
- 注意:如果 Item.dbc 缺少相应条目,物品在客户端可能显示为问号图标或无法正确显示模型