so i can get to the player struct, but unfortunately i cannot seem to find the objects address like i should be able to. is there a way to point to the objects address once you have the player struct address? or do you HAVE to do the TLS method, which apparently I am doing wrong here since the values aren't showing what they should-
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 3
Posts: 43
Join Date: May 2008
05-27-2008
Quote:
Originally Posted by KOS0937
it's nice to see your enthusiasm, but please use the search function.... [Only registered and activated users can see links. ]
i looked at that page (and several others regarding TLS) before posting my question. there's alot of great information on that page and i am sure i will find it useful as i move forth. i don't wish to sound ungrateful or even lazy, but where on that page or in the following code segment is the answer to my question(s)?
struct mob_struct
{
__int64 guid; // unique mob identifier
int unknown1; // always 9?
int id; // mob id, can look up on www.thottbot.com/c<this number>
float selection_circle_size; //last patch prevents changing this to take effect
char zero[0x2c];
__int64 target; // mob current target
char zero2[0x10];
int current_health;
int zero3[2]; // mana %?
int health2;
int zero4;
int unknown3; // 40 42 0f 00
int health3; // not health
int unknown4; // 3c = 60, sometimes 79
int zero5;
int health4; // not health
int zero6;
int unknown5; // 40 42 0f 00
int level;
int con; // 07 = yellow, 14 = red, 1604 = green
int unknown7; // 00 02 02 00
int zero7[0x24];
int combat; // 00 00 00 00 = OOC, 00 08 08 00 = IC (526336)
};
i need to find the address that points to the list of objects around the player. perhaps i missed something glaring in that thread? i posted alot of info up there and maybe i am going down the wrong path, but i see nothing that helps me along here. that mob struct is useful once i get to the pointer that points to the mobs. thanks again for the speedy replies, but i am still lost here:
i am not doing the TLS correctly to begin with so there's no need to know the mob structure if i am not accessing the mob addresses correctly. please help!
i also see this:
TWoWObject = record
DontCare1: Integer;//0x00
DontCare2: Integer;//0x04
DontCare3: Integer;//0x08 pointer to compl. struct i.e. eObjectFields
DontCare4: Integer;//0x0C end of compl. struct
DontCare5: Integer;//0x10
ObjectType: Integer; //0x14 == 1..7
DontCare7: Integer;//0x18
DontCare8: Integer;//0x1C
DontCare9: Integer;//0x20
DontCare10: Integer;//0x24 ptr to item-struct?
PtrCheck: Integer;//0x28 PtrCheck == NextPtr while NextPtr --> WoWObject
DontCare12: Integer;//0x2C
GUID: Int64; //0x30 GUID
DontCare13: Integer;//0x38 end of each item-struct element (ptr to the next)?
NextPtr: Integer; //0x3C
end;
but don't really know what this is referring to. is:
DontCare3: Integer;//0x08 pointer to compl. struct i.e. eObjectFields
the pointer to the stuff around the player? if so then:
if [E8AA38] = 19c10008
then 19c10008+08 = pointer to objects around player?
Last edited by ShoniShilent; 05-27-2008 at 05:18 PM.
exactly, [E8AA38]+8 points to eObjectFields. If it's a player this eObjectFields struct will be followed by eUnitFields and ePlayerFields. So to find the health of a unit, you have to:
-follow [E8AA38]+8 to the eObjectFields
-add the size of eObjectFields (0x18)
-add UNIT_FIELD_HEALTH (from the eUnitFields struct; = 0x40)
and you've got the pointer to the HP:
[[E8AA38]+8]+58
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 3
Posts: 43
Join Date: May 2008
05-27-2008
Quote:
Originally Posted by KOS0937
exactly, [E8AA38]+8 points to eObjectFields. If it's a player this eObjectFields struct will be followed by eUnitFields and ePlayerFields. So to find the health of a unit, you have to:
-follow [E8AA38]+8 to the eObjectFields
-add the size of eObjectFields (0x18)
-add UNIT_FIELD_HEALTH (from the eUnitFields struct; = 0x40)
and you've got the pointer to the HP:
[[E8AA38]+8]+58
ok, now we are getting somewhere! thanks very much!
this shows MY health and so i assume as the PLAYER that my info is always first. so my last question is how to access the NEXT object/data, etc. and then how do i know we are complete running throught the list?
also, is this how you determine the size of eObjectFields as (0x18)? note:
that'S exactly how i've got 0x18 as the structs size.
To get the next object / unit / mob you have to follow the pointer at 0x3C.
That is [E8AA38]+3C points to the next object so
[[E8AA38]+3C] + 8 points to the eObjectFields struct of the first object that is not the player (yes, the first one is always the current player).
You can follow this pointer at 0x3C as long as it is the same as the pointer at 0x28. As soon as ?+28 differs from ?+3C (by exactly 0xA0) you have reached the end of the list (usually something between 50 and 150 objects are in this list)
Site n00b.. (A leecher if I've been here for more than a month and can't earn 5 rep)
Rep Power: 1
Reputation: 2
Posts: 12
Join Date: Mar 2008
Location: Russia, Moscow
05-27-2008
WOWbase + 8 = Player GUID 8 byte long ( __int64 ) <-- It no pointer, it 8 byte integer, read 8 bytes
WOWbase + 16 = Addres of Objects list around player
Sorry for not fully answer.
After you got address, add 0xC to him and read 4 byte integer, now you got address where Object list begin.
From new address, start read this structure.