character_inventory表记录了角色物品栏位的分配信息,定义了每个物品实例在角色背包、装备栏、银行等不同容器中的具体位置。这个表是连接角色和物品实例的桥梁,管理着物品的存储位置和组织结构。
序号 | 字段名 | 数据类型 | 默认值 | 是否为空 | 键类型 | 说明 |
---|---|---|---|---|---|---|
1 | guid | int(10) unsigned | 0 | NOT NULL | PRIMARY KEY | 角色GUID,关联characters表,复合主键之一 |
2 | bag | tinyint(3) unsigned | 0 | NOT NULL | PRIMARY KEY | 容器ID,标识物品所在的背包或容器,复合主键之一 |
3 | slot | tinyint(3) unsigned | 0 | NOT NULL | PRIMARY KEY | 槽位编号,物品在容器中的具体位置,复合主键之一 |
4 | item | int(10) unsigned | 0 | NOT NULL | INDEX | 物品实例GUID,关联item_instance表的guid字段 |
中文意思:角色全局唯一标识符
作用:标识拥有此物品栏位的角色
常见值:1, 2, 3, 4, 5... (对应characters表中的guid)
示例应用:查询指定角色的所有物品栏位分配,角色删除时清理相关数据
中文意思:背包或容器编号
作用:标识物品存放的容器类型和位置
常见值:
示例应用:区分物品是在背包、银行还是装备栏中
中文意思:容器内的槽位位置
作用:定义物品在指定容器中的具体位置
常见值:
示例应用:确定物品在界面中的显示位置,装备限制检查
中文意思:物品实例全局唯一标识符
作用:关联到具体的物品实例,获取物品的详细信息
常见值:1, 2, 3, 4, 5... (对应item_instance表中的guid)
示例应用:通过此ID查询物品的属性、耐久度、附魔等详细信息
装备栏使用特殊的bag值255,slot值对应不同的装备部位:
-- 查询角色的所有装备 SELECT ci.slot, ii.itemEntry, it.name FROM character_inventory ci JOIN item_instance ii ON ci.item = ii.guid JOIN world.item_template it ON ii.itemEntry = it.entry WHERE ci.guid = 1 AND ci.bag = 255 ORDER BY ci.slot; -- 查询角色背包中的所有物品 SELECT ci.bag, ci.slot, ii.itemEntry, it.name, ii.count FROM character_inventory ci JOIN item_instance ii ON ci.item = ii.guid JOIN world.item_template it ON ii.itemEntry = it.entry WHERE ci.guid = 1 AND ci.bag BETWEEN 0 AND 22 ORDER BY ci.bag, ci.slot; -- 查询银行中的物品 SELECT ci.slot, ii.itemEntry, it.name FROM character_inventory ci JOIN item_instance ii ON ci.item = ii.guid JOIN world.item_template it ON ii.itemEntry = it.entry WHERE ci.guid = 1 AND ci.bag BETWEEN 23 AND 45 ORDER BY ci.bag, ci.slot; -- 统计角色的背包使用情况 SELECT CASE WHEN bag = 0 THEN '主背包' WHEN bag BETWEEN 19 AND 22 THEN '额外背包' WHEN bag BETWEEN 23 AND 38 THEN '银行' WHEN bag = 255 THEN '装备栏' ELSE '其他' END as container_type, COUNT(*) as used_slots FROM character_inventory WHERE guid = 1 GROUP BY container_type;