step 1) StrRes.ini
look up 100023=You can't stop here!
hex(100023) = 186B7
step 2) Search PUSH 186B7 in olly
step 3) Backtrack and look at all functions before it, to find which ones retrieves player coords.
Note: For your current coords, not the ones ur jumping too.
Hint: Track back to make sure ur looking at lines that can eventually end up producing the [System] message, be patience and careful of JMPs. And breakpoint one line after the CALLs for their return values.
step 4) Remembering the value of ECX, Breakpoint inside that function call on a DIFFERENT value of ECX. (You may need to breakpoint b4 the function call and trace your way inside of it first.)
This function just found is used for retrieving the map coordinates for ANY mob/player. And it is called continously for all the mobs (DIFFERENT VALUES OF ECX, WHERE ECX IS A POINTER TO YOUR MOB STRUCTURE)
Step 5) After finding a different value of ECX on a breakpoint inside that function, trace your way out again to find the LOOP for the MOBS.
The call to get the mobs coordinates in the MOB LOOP.
Step 6) Add breakpoints on function calls above it but STILL IN THE LOOP, and find the functions for retrieving the number of mobs and the mob by its index. (LOL, i lied a little bit. The number of mobs will be JUST ABOVE THE BEGINING OF THE LOOP, BUT THE MOB BY INDEX IS INSIDE THE LOOP).
NOTE THAT THE VALUE OF ECX IN BOTH THESE CALLS IS THE POINTER TO YOUR NEW MOBS LIST (6502E4 for version 5127+)
This might come in handy after the next patch for mounts.
look up 100023=You can't stop here!
hex(100023) = 186B7
step 2) Search PUSH 186B7 in olly
Code:
CPU Disasm Address Hex dump Command Comments 004F71A1 |. 68 D5070000 PUSH 7D5 004F71A6 |. 68 B7860100 PUSH 186B7 004F71AB |. 8BCE MOV ECX,ESI
Note: For your current coords, not the ones ur jumping too.
Hint: Track back to make sure ur looking at lines that can eventually end up producing the [System] message, be patience and careful of JMPs. And breakpoint one line after the CALLs for their return values.
Code:
CPU Disasm (EDX,ECX) is your current map coordinate after this CALL. Address Hex dump Command Comments 004F7021 |. 8BCE MOV ECX,ESI 004F7023 |. FF50 14 CALL DWORD PTR DS:[EAX+14] 004F7026 |. 6A 01 PUSH 1 ; /Arg5 = 1
Code:
CPU Disasm Address Hex dump Command Comments 004F4CC4 /. 8B4424 04 MOV EAX,DWORD PTR SS:[ARG.1] 004F4CC8 |. 8B91 98020000 MOV EDX,DWORD PTR DS:[ECX+298] 004F4CCE |. 8910 MOV DWORD PTR DS:[EAX],EDX 004F4CD0 |. 8B89 9C020000 MOV ECX,DWORD PTR DS:[ECX+29C] 004F4CD6 |. 8948 04 MOV DWORD PTR DS:[EAX+4],ECX 004F4CD9 \. C2 0400 RETN 4
Step 5) After finding a different value of ECX on a breakpoint inside that function, trace your way out again to find the LOOP for the MOBS.
The call to get the mobs coordinates in the MOB LOOP.
Code:
CPU Disasm Address Hex dump Command Comments 00515904 |. 52 |PUSH EDX 00515905 |. FF50 14 |CALL DWORD PTR DS:[EAX+14] 00515908 |. FF75 DC |PUSH DWORD PTR SS:[EBP-24] ; /Arg4 => [ARG.EBP-24]
Code:
Gets the number of mobs. CPU Disasm Address Hex dump Command Comments 0051587D |. 53 PUSH EBX ; /Arg1 0051587E |. 8D4B 10 LEA ECX,[EBX+10] ; | 00515881 |. E8 7A0FF0FF CALL 00416800 ; \Conquer.00416800 Gets the mob by its index. CPU Disasm Address Hex dump Command Comments 00515892 |> /8BF3 /MOV ESI,EBX 00515894 |. |8D7D C8 |LEA EDI,[EBP-38] 00515897 |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E 00515898 |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E 00515899 |. |FF75 F0 |PUSH DWORD PTR SS:[EBP-10] ; /Arg1 => [ARG.EBP-10] 0051589C |. |8D4D C8 |LEA ECX,[EBP-38] ; | 0051589F |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E ; | 005158A0 |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E ; | 005158A1 |. |E8 DD53FFFF |CALL 0050AC83 ; \Conquer.0050AC83
This might come in handy after the next patch for mounts.