Hey guys, i posted here a while back, but I'm still having problems and nothing has really helped except to teach me new reasons to beat my head against the wall. Pretty much, I'm trying to find the moblist in conquer's memory. I can find individual elements of whatever data structure they are stored in (seems almost like a linked list, except that the list isn't re-ordered when an element is deleted, but instead just marked as free for use by whatever needs to be added to the list), my main problem is i cannot find a static pointer to any of the elements themselves. The elements themselves seem to be seperated by an offset of 0x988.
Pretty much what i have so far is that when there is a mob actively stored in the list(?) element, the first value turns to a fixed number (7373896) and otherwise it changes to a seemingly random number (2XXXXXXX). The way i actually found the elements was to go to a secluded area (moon platform works nicely) and then go there also with another character and search the other character's coords in cheat engine until i got it down to the memory address of their coords. This then traces back to the start of that element. My problem from here is that i cannot backtrack to find where it actually points to the moblist structure, or how to use it.
Seeing as clint has turned into a ghost in the last week or two, if anyone has any experience in this and would like to help me i would greatly appreciate it!
[] = The integer value of the address (ReadProcessMemory(pHandle, Address, retval, 4, 4)
I'm bad at explaining things, I know
that is just amazing could you possibly explain how you got the ptrptr? all i could find were the individual elements :x lol i've used that to kludge together a hardcoded moblist which just checks the first 50 elements in the moblist to see whether or not it has something currently inside of it and if so puts it at that index in an array :P
that is just amazing could you possibly explain how you got the ptrptr? all i could find were the individual elements :x lol i've used that to kludge together a hardcoded moblist which just checks the first 50 elements in the moblist to see whether or not it has something currently inside of it and if so puts it at that index in an array :P
I just found the base address of the first mob in the moblist, searched for all addresses that stored the base address, and them I did the same with those addresses until I found a static address. There's lots of other ways to find it though
IamHawtness,
Do you program,idk if you do :P,"if" you do "then" pm me and tell me which language you use and if you could teach meh!
"Else" Do not pm me
End if.
[] = The integer value of the address (ReadProcessMemory(pHandle, Address, retval, 4, 4)
I'm bad at explaining things, I know
can you possibly show me how you actually use this to form some kind of list? i'm just not sure what to check to make sure there's actually a mob there, because neither of the values ever go to 0, even when the screen is empty.
class Monster { private uint Base; public Monster(uint Base) { this.Base = Base; } public uint UID { get { return ReadDWord(Base); // Assuming it's the first value. } }
class Monster { private uint Base; public Monster(uint Base) { this.Base = Base; } public uint UID { get { return ReadDWord(Base); // Assuming it's the first value. } }
class Program { public static void Main(string[] args) { Monster[] Monsters = Monster.GetMonsters(0x7AEF24); } }
Yeah, here's what I've got:
Code:
public List<Mob> mobList
{
get
{
List<Mob> temp = new List<Mob>();
int index = ReadDword(MobListPtr);
int mobelem = ReadDword(index);
while (this.ReadDword(mobelem) == 7373896)
{
Mob m = new Mob(this, this.ReadDword(index));
temp.Add(m);
index += 8;
mobelem = ReadDword(index);
}
return temp;
}
}
for some reason, the first element is the static number 7373896 if it is being used. This works almost fully, but misses a few mobs every now and then for no apparent reason :/