-
Active Member
For lovers of C++ and copy-paste, the most simplified
and an easily portable updated object manager 
Code:
////////////////////////////////////Simple "new" Object Manager/////////////////////////////////////////////////////
OM_Puls()
{
//unsigned int ObjectManagerBase = Object manager offset for your patch;
DWORD_PTR OmBase = Memory->Read<DWORD_PTR>(Memory->WowInfo.WowBaseAdrtess + ObjectManagerBase);
DWORD_PTR entityArrayPointer = Memory->Read<DWORD_PTR>(OmBase + 0x8);
int entityArrayCount = Memory->Read<int>(OmBase + 0x10);
int hashArrayMaximum = Memory->Read<int>(OmBase + 0x40);
DWORD_PTR hashArrayPointer = Memory->Read<DWORD_PTR>(OmBase + 0x48);
int hashArrayCount = Memory->Read<int>(OmBase + 0x50);
for (int i = 0; i < hashArrayMaximum; ++i)
{
ULONG_PTR EntryGuidLow = Memory->Read<DWORD_PTR>(hashArrayPointer + (i * 24));
ULONG_PTR EntryGuidHight = Memory->Read<DWORD_PTR>(hashArrayPointer + (i * 24) + 0x8);
long EntityIndex = Memory->Read<DWORD_PTR>(hashArrayPointer + (i * 24) + 0x10) & 0x3FFFFFFF;
if (!(EntryGuidHight == 0 && EntryGuidLow == 0) && !(EntryGuidLow == 1 && EntryGuidHight == 0x400000000000000))
{
if (EntityIndex > 0)
{
DWORD_PTR entityBuilderPtr = Memory->Read<DWORD_PTR>(entityArrayPointer + ((int)EntityIndex * 0x8));
//Here's everything we need
DWORD_PTR entity_ptr = Memory->Read<DWORD_PTR>(entityBuilderPtr + 0x20);
int objType = (int)Memory->Read<BYTE>(entity_ptr + 0x8);
ULONG_PTR Guid_Low = Memory->Read<ULONG_PTR>(entityBuilderPtr + 0x10);
ULONG_PTR Guid_Hight = Memory->Read<ULONG_PTR>(entityBuilderPtr + 0x10+0x8);
//Here we fill out structures for different types of objects
...
//NPC
if (objType == 5) {
}
//Player
if (objType == 6) {
}
//Local Player
if (objType == 7) {
}
//GameObject
if (objType == 8) {
}
...
}
}
}
}
//The end)
Based on the code from Razzue and garenmain, for which many thanks to them
Last edited by Hrap; 12-27-2024 at 10:30 PM.
Reason: nothing else matters
-
Post Thanks / Like - 3 Thanks
-
Member
Originally Posted by
hb123220
the file is no longer available, can you re-upload the unpakced 1.15.5.57638 bin ? thanks~
Here is the newest client unpacked that I have access to right now (1.15.5.57979).
Filebin | vo3agk0rzvzofdhy
Also 1.15.4.57134:
Filebin | yqec1a26ekn2laue
Reuploaded 1.15.5.57638 and 1.15.5.57716 as requested:
Filebin | dvlsxxxcunbv496q
Maybe someone else has a better, more permanent file host and can reupload them there. This was just quick and easy.
Hope that helps!
Last edited by dreadcraft; 12-28-2024 at 02:43 AM.
-
Member
Originally Posted by
Razzue
Just use UnitFamily / UnitRank subs to get unit info offset, then npc name will be somewhere in there just slightly beyond family/rank offsets. Player names are grabbed from the name cache, and most everything else from the db2's
For example: Here's the internal of UnitCreatureFamily from 57638
Code:
__int64 __fastcall sub_141BD1220(__int64 a1)
{
__int64 result; // rax
result = *(_QWORD *)(a1 + 0x4E0);
if ( result )
result = *(unsigned int *)(result + 0x7C);
return result;
}
So *(int*)((*(IntPtr*)(eb.Pointer + 0x4E0)) + 0x7C); should get you close to where the name is also located
Code:
*(IntPtr*)((*(IntPtr*)(eb.Pointer + 0x4E0)) + 0x168); -> Unit Name Pointer
*(int*)((*(IntPtr*)(eb.Pointer + 0x4E0)) + 0x170); -> Unit Name Length
Attachment 87739
Thanks a lot for sharing that Razzue - very helpful as always!
I'm focusing on the "Fishing Bobber" - do you have a similar function for Game Objects you would recommend?
If not I'll probably end up pouring thru older builds for the relevant function(s)/offset(s) and then try to port them to 1.15.5.57979 if at all possible. I just don't have access to all my IDBs right now since I'm not at home.
-
Active Member
Originally Posted by
dreadcraft
files are gone again 
would be interested in 57979 and current one (58555)
-
Member
Originally Posted by
mazer
files are gone again

would be interested in 57979 and current one (58555)
Try this mega link. Hopefully it will last longer than filebin:
https://mega.nz/folder/9NVxlDbA#alv2ct3R82LsETPd0PJ1Pg
-
Post Thanks / Like - 1 Thanks
mazer (1 members gave Thanks to dreadcraft for this useful post)
-
Member
This is more intuitive, thank you.
-
Member
Apologies for bumping an older thread, but I felt the need to say thanks for everyone’s information here. I had been searching over a decade’s worth of ObjectManager threads here on the forum and was seriously confused as to why what I was seeing in memory did not seem to line up with the structures shared around here for years. I figured, “hey, I’m sure 1.15’s layout is more similar to 1.12 than it is 11.0” … guess not!