I don't quite see what you are trying to say, but I don't think robot is wrong. If you have a pointer to the base of the structure, you just add what I have in the comments to it and you'll get the address of the field. Best yet just to use the structure I posted and you don't have to do any more math.
Also, robot, I don't believe the structs i posted have changed for v2.3.2. I also haven't checked though but I have some code that is being used by a lot of people that has not crashed =)
I was using this as a cheap Struct until I finished my bot
Using your struct for alot of it, you can see the math needed for a simple memory reading off the Player base.Code:Structure Player Private pUID As Integer Public Shared pName As Integer = &HCF9F50 Public Shared pHealth As Integer = &H2548 Public Shared pMaxHealth As Integer = &H2560 Public Shared pRage As Integer = &H2550 Public Shared pMaxRage As Integer = &H2568 Public Shared pEnergy As Integer = &H2558 Public Shared pMaxEnergy As Integer = &H2570 Public Shared pMana As Integer = &H254C Public Shared pMaxMana As Integer = &H2564 Public Shared pLevel As Integer = &H2578 Public Shared pExperience As Integer = &H3268 Public Shared pRotation As Integer = &HBF4 Public Shared pTarget As Integer = &H2530 Public Shared pMoveState As Integer = &HC18 End Structure
Which backs up my post.
BTW - This Struct was for 2.3 - It probably works for 2.3.2, but I have not checked yet. Worried about leveling my new main.
Ok just made my checks, the stracture itself may not have changed but the pointer for its adress is not working for 2.3.2
All that math is actually not needed here since you just need to read from the pointer, the address of the player stracture and
then add the numbers raindog says for each variable.
I have investigated the matter of the pointer not being same and i've noticed that there IS a pointer for the stracture again
BUT its not static...wonder why...so i need to find out what the hell is going on there with a debugger and find a lead..till
then cya around
Last edited by robotkid; 01-13-2008 at 04:44 PM.
do a simple 4byte search using the Static YPos. Then subtract the B84 (or whatever the YPos extension is) and you got a player base.
Its easy. And all that math IS Required. Trust me, I spent a couple long nights toying with stuff.
And what are you talking about pointer? There is no pointer in the Struct I posted, the only standalone Address in that struct was the Player Name for debug purposes.
EDIT:
That math is required because for example:
Say the Player Base is 1ADE8000 - The XP Address then is 1ADE8CC4.
When adding in Decimal form, to replicate that you must convert it back to decimal [ 1ADE8CC4 - 1ADE8000 = CC4 ] or ( 0xCC4 = 3268 )
And sorry to confuse you but when adding the the address in decimal for and not true hex, you MUST convert it over.
Last edited by suicidity; 01-14-2008 at 08:40 AM.
*sigh*
Dude, for once more im telling you. I actually provided the address where
the player base is stored...
Pointer=Player Base address
Which in 2.3.0 was static. So you had the players base with no math by
simple reading the pointer. That's it. Then with raindogs stracture you just
had to add in hex the corresponding value to the players base. Simple as
that. That's the only part you need math. NOT to find the players base.
So insted of reading ypos and substract B84 or whatever you simply read
the address (pointer) which contain the exact address of the player base.
Thing is that in 2.3.2 there IS a pointer also but its NOT static also. So
with a NON static player base AND pointer i need to find another pointer or
something which IS static.
Last edited by robotkid; 01-14-2008 at 10:40 AM.
Which would be the old 4byte YPos search. If you do it right the search wont take more than 1/2 seconds and you can do a simple check on it.
Or you could poke around aimlessly trying the find the static pointer address.
Yea it will be but if you want to code a clean quality bot program you will
find this way inconvinient. Just for the record im not just poking around the
memory with Cheat Engine, im debugging it which makes much difference
since this way i might find such a pointer again.
The problem with 2.3.2 is that both player base AND pointer are inside a
thread which is created at the loading screen which means different
addresses every time Im on my way to find a way have the pointer of
the players base but it would be harder than in 2.3.0 since it seems they
really try to avoid this.
Robot, the struct can be found using Greyman's TLS method I believe. Once you have the base pointer from TLS transverse through the object manager to find the pointer to the player struct.
xmm i just found some paper about this and it seems my theory about threads
is true indeed. Thanx to point me to the right direction. What he actually
does here is searching in each thread for some stuff (haven't read it all).
I'll try finding a similar yet easier way for this. (i just like to spend my free
time with this kind of stuff :P) i'll +Rep you thx
This n00b reading the whole thread didn't understand a word you all just said. What does this information do?
It's the definition of the structure for player data. I think i might have also posted the code for reading/swapping TLS data so that you could access the TLS data easily.
Robotkid, I would suggest that you read directly from the TLS data, as there are a whole slew of things that require TLS that you would otherwise have to find.
I need to have a look at this TLS
Ya raindog, i put some effort finding anything about getting the pointer more
easier than TLS searching but i dont think it really worth it at this point. I
have to find more important things in there Im also lucky cause the thread about
how to read all this stuff i found in wow.dev has some code in delphi and that's good
cause im far better at it than with C++