Getting pointer to your own structure
CALL 0051BC20 (after this call a pointer to ur structure is in EAX)
Maybe something can be done w/ this 0x0051BC20 address by calling it with AutoIt / AHK (CreateRemoteProcessEx), and retrieving the return value for the macro programmers.
Role Stuff (For Players, Yourself, NPCs & Monsters)
int RoleID = *(int*)(RoleBase + 0x88)
char* RoleName = (char*)*(int*)(RoleBase + 0x10C);
int RoleX = *(int*)(RoleBase + 0x2C8);
int RoleY = *(int*)(RoleBase + 0x2CC);
bool RoleIsAlive = (*(char const*)(RoleBase + 0x58) != 0x20);
Mob Stuff
Code:
EBX: 00692054
Get the number of items:
CPU Disasm
Address Hex dump Command Comments
0053C864 |. 53 PUSH EBX ; /Arg1
0053C865 |. 8D4B 10 LEA ECX,[EBX+10] ; |
0053C868 |. E8 E3D4FAFF CALL 004E9D50 ; \Conquer.004E9D50
Get item by index:
CPU Disasm
Address Hex dump Command Comments
0053C879 |> /8BF3 /MOV ESI,EBX
0053C87B |. |8D7D C8 |LEA EDI,[EBP-38]
0053C87E |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E
0053C87F |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E
0053C880 |. |FF75 F0 |PUSH DWORD PTR SS:[EBP-10] ; /Arg1 => [ARG.EBP-10]
0053C883 |. |8D4D C8 |LEA ECX,[EBP-38] ; |
0053C886 |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E ; |
0053C887 |. |A5 |MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[E ; |
0053C888 |. |E8 2D33FFFF |CALL 0052FBBA ; \Conquer.0052FBBA
Jump Function
Code:
Jump(X,Y) function:
CPU Disasm
Address Hex dump Command Comments
004BF2F6 |. FF75 E0 PUSH DWORD PTR SS:[EBP-20] ; /Arg2 => [ARG.EBP-20]
004BF2F9 |. FF75 DC PUSH DWORD PTR SS:[EBP-24] ; |Arg1 => [ARG.EBP-24]
004BF2FC |. E8 1FC90500 CALL 0051BC20 ; |
004BF301 |. 8BC8 MOV ECX,EAX ; |
004BF303 |. E8 83540500 CALL 0051478B ; \Conquer.0051478B
Skill Functions
Code:
Skill(SkillID, TargetID): (Self Target for staminer skill also)
CPU Disasm
Address Hex dump Command Comments
004DA6B6 |> \50 PUSH EAX ; |Arg2
004DA6B7 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] ; |
004DA6BA |. FFB0 A8CA0A00 PUSH DWORD PTR DS:[EAX+0ACAA8] ; |Arg1
004DA6C0 |. E8 5B150400 CALL 0051BC20 ; |
004DA6C5 |. 8BC8 MOV ECX,EAX ; |
004DA6C7 |. E8 63D70700 CALL 00557E2F ; \Conquer.00557E2F
CPU Stack
Address Value ASCII Comments
0012ED9C /000003E9 .. ; Arg1 = 3E9
0012EDA0 |00065066 fP. ; Arg2 = 65066
0012EDA4 |00000000 .... ; Arg3 = 0
Skill(SkillID, X, Y):
CPU Disasm
Address Hex dump Command Comments
004DA333 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; /Arg3 => [ARG.EBP+10]
004DA336 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] ; |
004DA339 |. FF75 0C PUSH DWORD PTR SS:[EBP+0C] ; |Arg2 => [ARG.EBP+0C]
004DA33C |. FFB0 A8CA0A00 PUSH DWORD PTR DS:[EAX+0ACAA8] ; |Arg1
004DA342 |. E8 D9180400 CALL 0051BC20 ; |
004DA347 |. 8BC8 MOV ECX,EAX ; |
004DA349 |. E8 0ED50700 CALL 0055785C ; \Conquer.0055785C
CPU Stack
Address Value ASCII Comments
0012ED9C /00001F41 A.. ; Arg1 = 1F41
0012EDA0 |000001B5 .. ; Arg2 = 1B5
0012EDA4 |000001D3 .. ; Arg3 = 1D3
Loot Function
Code:
LootItem(ItemID, X, Y):
CPU Disasm
Address Hex dump Command Comments
004BEE01 |> \50 PUSH EAX ; /Arg3 => [ARG.EBP-88]
004BEE02 |. 51 PUSH ECX ; |Arg2 => [ARG.EBP-8C]
004BEE03 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |Arg1 => [ARG.EBP+10]
004BEE06 |. 8BCE MOV ECX,ESI ; |
004BEE08 |. E8 5CA40100 CALL 004D9269 ; \Conquer.004D9269
CPU Stack
Address Value ASCII Comments
0012EB98 /00062BCD +. ; Arg1 = 62BCD
0012EB9C |0000024B K.. ; Arg2 = 24B
0012EBA0 |0000030B .. ; Arg3 = 30B
Find role by ID function (used by melee function)
Code:
FindRoleByID(int* numPair, int roleId, 1)
Code
00577CE3 |. 6A 01 PUSH 1
00577CE5 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00577CE8 |. FFB6 B4010000 PUSH DWORD PTR DS:[ESI+1B4]
00577CEE |. BF 48206900 MOV EDI,Conquer.00692048
00577CF3 |. 8BCF MOV ECX,EDI
00577CF5 |. 50 PUSH EAX
00577CF6 |. E8 0942FCFF CALL <Conquer.RolePtrFromID>
Stack
0012EF70 0012EFB0
0012EF74 00067436
0012EF78 00000001
Start of code.
0053BF04 > $ B8 F83C6000 MOV EAX,Conquer.00603CF8 ; RolePtrFromID(int* pair, int roleID, 1)
0053BF09 . E8 C2130600 CALL Conquer.0059D2D0
0053BF0E . 83EC 18 SUB ESP,18
Melee function (Takes 4 parameters, the first two from the last function, the last two both 1s)
Code:
begining of melee function:
0051691E > $ B8 37076000 MOV EAX,Conquer.00600737 ; Attack(a,b,c,d)
00516923 . E8 A8690800 CALL Conquer.0059D2D0
00516928 . 81EC 40060000 SUB ESP,640
Reading the ground
Code:
ECX = 006903D0
CPU Disasm
Address Hex dump Command Comments
00514985 |> \FF75 0C PUSH DWORD PTR SS:[EBP+0C] ; /Arg2 => [ARG.EBP+0C]
00514988 |. 8BCE MOV ECX,ESI ; |
0051498A |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1 => [ARG.EBP+8]
0051498D |. E8 B122FDFF CALL 004E6C43 ; \Conquer.004E6C43
Ground spot object pointer in EAX... then
CPU Disasm
Address Hex dump Command Comments
005149B6 |. FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; /Arg1 => [ARG.EBP-10]
005149B9 |. 8BCE MOV ECX,ESI ; |
005149BB |. E8 2635FDFF CALL 004E7EE6 ; \Conquer.004E7EE6
005149C0 |. 83F8 01 CMP EAX,1
When pushing ground pointer back on the stack, it sees if u can jump there.