ProcessMemoryReaderLib.ProcessMemoryReader myMemReader = new ProcessMemoryReaderLib.ProcessMemoryReader();
System.Diagnostics.Process D2Process = System.Diagnostics.Process.GetProcessesByName("Diablo II")[0];
Console.WriteLine("Process for d2: " + D2Process.Id) ;
//player unit D2Client + 0x11C1E0
//0x6FAB0000 + 0x11C1E0
IntPtr memAddr = (IntPtr)(0x6FAB0000 + 0x11C1E0);
IntPtr Handle = D2Process.Handle;
int ptrBytesRead;
//get unit pointer
byte[] ptrBytes = myMemReader.ReadProcessMemory(Handle,memAddr,4,out ptrBytesRead);
uint ptrUnitAdress = BitConverter.ToUInt32(ptrBytes, 0);
//get player id
ptrBytes = myMemReader.ReadProcessMemory(Handle, ptrUnitAdress + 0x0c, 4, ptrBytesRead);
uint PlayerUID = BitConverter.ToUInt32(ptrBytes, 0);
//get act pointer
ptrBytes = myMemReader.ReadProcessMemory(Handle, ptrUnitAdress + 0x1c, 4, ptrBytesRead);
uint ptrActAdress = BitConverter.ToUInt32(ptrBytes, 0);
//we need to read unit adress + 0x2c to get a pointer, wich we then offset with 0x1c to get Room adress
ptrBytes = myMemReader.ReadProcessMemory(Handle, ptrUnitAdress + 0x2c, 4, ptrBytesRead);
uint ptrRoomBase = BitConverter.ToUInt32(ptrBytes, 0);
//we get our pointer we now just need to offset it with 0x1c
ptrBytes = myMemReader.ReadProcessMemory(Handle, ptrRoomBase + 0x1c, 4, ptrBytesRead);
uint ptrRoomAdress = BitConverter.ToUInt32(ptrBytes, 0);
uint ptr = 0;
//here we should be able to gather map info
//here we use the uint ptr and change it at each memory reading.
//each memory call change the ptr (exception for the first memory is to get our base ptr from
// ptrUnitAdress + 0x2c
//ptr gets read from ptrRoomBase + 0x2c
//ptr = read ptr += 0x1c
//ptr = read ptr += 0x38
//ptr = read ptr += 0x1c
//the values below dosent seem to get stored anywhere
//after this point we should be able to retrieve map info (posX, poxY, sizeX, sizeY and level number)
//posX = ptr + 0x04
//posY = ptr + 0x08
//sizeX = ptr + 0x0c
//sizeY = ptr + 0x10;
//level number = ptr +0x14
//here we should have enough info to create a collusion map, loop thru all Room2 struct
//not sure bout next step...