Its close to 1am here and I'm beat so sorry if I miss understood your question.
Code:
enum eObjectManager : DWORD
{
eObjectManager = 0xDC9598,
eManagerOffset = 0x462C,
eLocalGUIDOffset = 0xD0,
eFirstObjectOffset = 0xCC,
eNextObjectOffset = 0x3C,
eDescriptorFieldOffset = 0x8,
eObjectTypeOffset = 0x10, // might be descriptors + 0x10
ePlayerName = 0xDC95D8
};
//Get an objects base, based off of shynds old stuff. its how I learned so here it is
//Easily use it to get every object currently in the manager
Code:
DWORD WoWObject::dwGetObjectBase(UINT64 GUID)
{// assumes descriptor fields were already set!
DWORD cObj, nObj;
cObj = pObjectManager->ReadDWORD(pObjectManager->returnSCurMgr() + eFirstObjectOffset);
while(cObj != 0 && (cObj & 1) == 0)
{
DWORD descriptorField = pObjectManager->ReadDWORD(cObj + eDescriptorFieldOffset);
if(pObjectManager->ReadUINT64(descriptorField + eGUID) == GUID) { return cObj; }
else {nObj = pObjectManager->ReadDWORD(cObj + eNextObjectOffset); }
if(nObj == cObj) { return 1;}
cObj = nObj;
}
return 0; //failed
}
//Get its type
Code:
int WoWObject::sGetType(DWORD ObjectBaseAddress)
{
return pObjectManager->ReadInt32(ObjectBaseAddress + eObjectTypeOffset);
}
//Types, as far as I know still true
Code:
enum WowObjectType
{
OBJECT = 0,
ITEM = 1,
CONTAINER = 2,
UNIT = 3,
PLAYER = 4,
GAMEOBJECT = 5,
DYNAMICOBJECT = 6,
CORPSE = 7,
AREATRIGGER = 8,
SCENEOBJECT = 9,
NUM_CLIENT_OBJECT_TYPES = 0xA
};
if I missed anything let me know.