文件概述

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字段类型说明
1IDentryint编号(CHM:编号,对应数据库表item_template的ID)。物品唯一ID (主键)
2ClassIDclassint分类(CHM:分类,对应数据库表item_template的第2列分类)。0=消耗品 1=容器 2=武器 3=宝石 4=护甲 5=试剂 6=弹药 7=商品 9=配方 11=箭袋 12=任务 13=钥匙 15=杂项 16=雕文
3SubclassIDsubclassint子分类(CHM:子分类,对应数据库表item_template的第3列子分类)。根据 ClassID 有不同含义
4Sound_Override_SubclassidSoundOverrideSubclassint声音重写子分类(CHM:声音重写子分类,-1到20,一般是-1,对应数据库表item_template的第4列声音)。用于特殊物品的声音效果
5MaterialMaterialint材料(CHM:材料,-1到8,对应 Material 列)。-1=消耗品 1=金属 2=木头 3=液体 4=珠宝 5=锁甲 6=板甲 7=布甲 8=皮甲
6DisplayInfoIDdisplayidint显示编号(CHM:显示编号,对应物品的模型列)。关联 ItemDisplayInfo.dbc,控制物品的3D模型和图标
7InventoryTypeInventoryTypeint装备槽类型(CHM:装备槽类型,确定物品怎么装,对应 InventoryType列)。详见下方装备槽类型对照表
8SheatheTypesheathint(CHM:鞘,0到4,主要是0,对应 sheath列)。武器收起/佩戴方式

重要字段详解

装备槽类型对照表(CHM详解)
CHM 提供了完整的装备槽类型对照:
编号槽类型编号槽类型编号槽类型
09手腕18袋子
1头部10手套19徽章
2颈部11手指20战袍
3肩膀12饰品21主手
4衬衣13单手22副手
5胸部14副手(盾)23
6腰部1524弹药
7裤子16后背25投掷武器
817双手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":
  • Item.dbc(客户端):控制物品在背包、装备栏、角色模型上的外观显示
  • item_template(服务端):控制物品的完整属性、价格、使用效果等游戏逻辑
  • 修改 DisplayInfoID 会改变物品的图标和3D外观
  • 修改 InventoryType 会影响物品在哪个装备栏位装备
  • 关键规则:Item.dbc 和 item_template 的 Class/Subclass/DisplayID/InventoryType 必须保持一致
SheatheType / 鞘(武器佩戴方式)
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;