Quote:
Originally Posted by kynox Yes, its a linked list. |
BTW, it's a double linked list:
[currObjPtr + 0x38] = prevObjPtr + 0x38
[firstObjPtr + 0x38] = [ [g_clientConnection] + 0x285C ] + 0xA8
[ [ [g_clientConnection] + 0x285C ] + 0xA8] = lastObjectPtr + 0x38
You can iterate over the whole list from any one object. Of course, with the ease of finding g_clientConnection, it's not really needed.
I also found the adresses I was looking for, thanks to Cypher's info (and finally learning how to reverse a VMT). The object name is found at [ [currObj + 0x1f4] + 0x078 ], and the object type is now the second byte of GAMEOBJECT_BYTES_1 (offset 0x045 from the start of the gameObject structure).