Dear Enigma
Maybe you can help me - again.
I found some new offsets, but they are pretty idiot...
those are relative to tObData
public readonly int player_ofs__actor_id = 0x8;
public readonly int player_ofs__skills = 0xB4;
public readonly int player_ofs__passives = 0xA08;
public readonly int player_ofs__seed = 0x7448;
public readonly int player_ofs__name = 0x7450;
public readonly int player_ofs__class = 0x78FC;
public readonly int player_ofs__area = 0x78F8;
The new ones are class and area. But they are very silly
1) Area does not change when you leave game, it keeps the last known value
2) class is the usual index you found in the Character list, but it is set to -1 when your party member leaves the game
So, what I think that I know:
- tObData is the container of a party member (or you)
- tObData is maintained only when YOU are in the game and the corresponding player is in the game
- when a party member leaves the game, but not the party, many of his tObData instance's fields are changing
- when the party member leaves the party from the menu, NONE of his tObData fields are changed
- the sad thing is that when a party member completely leaves the party, his SEED and every other values are kept in the corresponding tObData
- the ActorID and AcdID in tObData are always -1 when the character is a) not in game, b) too far from you so it has no actor/acd
The question is that do you have any place in D3 memory where I can read the PROPER party data ? A list of character seed+battleTag+state (ingame, inmenu) values would be awesome.
I hope you can help me sir, I'm getting mad because of this...
Last edited by KillerJohn; 03-10-2013 at 08:34 PM.
Do not send me private messages unless it is absolutely necessary or the content is sensitive or when I ask you to do that...
I made a small memory-change detector, and nothing changes in the following areas when a party member is already in menu and leaves the party:
- the one and only tObLocal structure
- the 4 tObDataContainer (size is 4* 0x8598 )
- the entire ObjectManager structure
I'm starting to think that there should be some kind of PartyManager structure, because it seems that ObjectManager do not hold anything about the current party member list.
Do not send me private messages unless it is absolutely necessary or the content is sensitive or when I ask you to do that...
Hi
I'll look for it whenever I find time. Been quite busy these past days + SimCity launched so all spare time has been spent on that
In some cases objects are "cleaned" out, setting everything to zero (or -1) when removed from a container or larger structure. This is not always the case though, and if something starts to get random values it is most likely due to some other structure being allocated to the same bytes. When you're in the menu, there isn't the same need to allocate memory which might explain why the data is just left there, while in a game it starts to go crazy instead.
I haven't invested much time in ObData, but I believe it is only valid inside a game. You probably have a count property to determine how many items to retrieve, but it could be that the container has one value while the "real" value is read elsewhere, just like with CharacterManager. If the last indexes seems to be invalid that is probably the case. Otherwise it could possibly be a linked list.