you got all kind of items int the object manager. bagitems, equipped, bankitems so it´s no wonder numbers don´t match
at PLAYER_FIELD_INV_SLOT_HEAD begins an array of equipped item guids. these include your bags, but not your backpack.
Code:
enum eEquipLoc
{
EQUIP_LOC_HEAD = 0,
EQUIP_LOC_NECK,
EQUIP_LOC_SHOULDER,
EQUIP_LOC_SHIRT,
EQUIP_LOC_CHEST,
EQUIP_LOC_WAIST,
EQUIP_LOC_LEGS,
EQUIP_LOC_FEET,
EQUIP_LOC_WRISTS,
EQUIP_LOC_HANDS,
EQUIP_LOC_FINGER_1,
EQUIP_LOC_FINGER_2,
EQUIP_LOC_TRINKET_1,
EQUIP_LOC_TRINKET_2,
EQUIP_LOC_BACK,
EQUIP_LOC_MAINHAND,
EQUIP_LOC_OFFHAND,
EQUIP_LOC_RANGED,
EQUIP_LOC_TABARD,
EQUIP_LOC_BAG_1,
EQUIP_LOC_BAG_2,
EQUIP_LOC_BAG_3,
EQUIP_LOC_BAG_4,
EQUIP_LOC_SLOTS_TOTAL
};
at PLAYER_FIELD_PACK_SLOT_1 is the beginning of your 16 backpack item guids.
for container items:
containers got CONTAINER_FIELD_NUM_SLOTS items beginning at CONTAINER_FIELD_SLOT_1
or you could loop the mgr and check if ITEM_FIELD_CONTAINED == guidBag1,2,3,4