//\¦΅½’ξρΜAhXΖl struct _ad{ int zeny; int exp; int maxexp; int job; int maxjob; int weight; int maxweight; int baselv; int joblv; int name; int xorindex; int xortable; int statindex; int stattable; } ad; struct _val{ int zeny; int exp; int maxexp; int job; int maxjob; int weight; int maxweight; int baselv; int joblv; char name[MAX_PATH]; int xorindex; int xortable; int statindex; int stattable; int xor;//0x77777777 int xorval;//xorindex*4+xortable int hp; int maxhp; int sp; int maxsp; } val; { HWND hrag, hfor; DWORD dwProcessID = NULL; DWORD dwThreadID = NULL; HANDLE hProcess = NULL; hfor = GetForegroundWindow(); hrag = FindWindow(NULL,"Ragnarok"); dwThreadID = GetWindowThreadProcessId( hrag, &dwProcessID ); hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); if(hProcess){ //test ReadProcessMemory(hProcess, (LPVOID)ad.zeny, (LPVOID)&val.zeny, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.exp, (LPVOID)&val.exp, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.maxexp, (LPVOID)&val.maxexp, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.weight, (LPVOID)&val.weight, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.baselv, (LPVOID)&val.baselv, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.joblv, (LPVOID)&val.joblv, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.job, (LPVOID)&val.job, 4, 0); if(val.joblv < 50){ ReadProcessMemory(hProcess, (LPVOID)ad.maxjob, (LPVOID)&val.maxjob, 4, 0); } else { val.maxjob=99999999; } ReadProcessMemory(hProcess, (LPVOID)ad.baselv, (LPVOID)&val.baselv, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.name, (LPVOID)&val.name, MAX_PATH, 0); ReadProcessMemory(hProcess, (LPVOID)ad.xorindex, (LPVOID)&val.xorindex, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(val.xorindex*4+ad.xortable), (LPVOID)&val.xorval, 4, 0); ReadProcessMemory(hProcess, (LPVOID)ad.statindex, (LPVOID)&val.statindex, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(val.statindex*4+ad.stattable), (LPVOID)&val.hp, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(ad.statindex+0x4), (LPVOID)&val.statindex, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(val.statindex*4+ad.stattable+0x30), (LPVOID)&val.maxhp, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(ad.statindex+0x8), (LPVOID)&val.statindex, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(val.statindex*4+ad.stattable+0x60), (LPVOID)&val.sp, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(ad.statindex+0xC), (LPVOID)&val.statindex, 4, 0); ReadProcessMemory(hProcess, (LPVOID)(val.statindex*4+ad.stattable+0x90), (LPVOID)&val.maxsp, 4, 0); val.hp ^= val.xorval; val.hp ^= val.xor; val.maxhp ^= val.xorval; val.maxhp ^= val.xor; val.sp ^= val.xorval; val.sp ^= val.xor; val.maxsp ^= val.xorval; val.maxsp ^= val.xor; sprintf(bufStr, "%s [έΒ©θά΅½][%s Lv%d job%d]", szTitle, val.name, val.baselv, val.joblv); SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)&bufStr); sprintf(bufStr, "%d/%d", val.exp, val.maxexp); SetDlgItemText(hWnd, IDC_S_EXP1, bufStr); sprintf(bufStr, "%d/%d", val.job, val.maxjob); SetDlgItemText(hWnd, IDC_S_JOB1, bufStr); sprintf(bufStr, "%d/%d", val.hp, val.maxhp); SetDlgItemText(hWnd, IDC_S_HP, bufStr); sprintf(bufStr, "%d/%d", val.sp, val.maxsp); SetDlgItemText(hWnd, IDC_S_SP, bufStr); //o±lΜ\¦A¦Δ’½Ύ―\¦π«·¦½’B if(!dwStart){ dwStart = GetTickCount(); dwCurrent = dwStart; ft.exp = val.exp; ft.job = val.job; lt.exp = val.exp; lt.job = val.job; } else { dwCurrent = GetTickCount(); if(lt.exp != val.exp && val.exp>lt.exp){ sprintf(bufStr, "+%d", val.exp - lt.exp); SetDlgItemText(hWnd, IDC_S_EXP3, bufStr); sprintf(bufStr, "+%d", val.job - lt.job); SetDlgItemText(hWnd, IDC_S_JOB3, bufStr); } lt.exp = val.exp; lt.job = val.job; if(lt.exp != val.exp && val.exp>lt.exp){ sprintf(bufStr, "+%d/h", (lt.exp - ft.exp)*1000*60*60/(dwCurrent - dwStart)); SetDlgItemText(hWnd, IDC_S_EXP2, bufStr); sprintf(bufStr, "+%d/h", (lt.job - ft.job)*1000*60*60/(dwCurrent - dwStart)); SetDlgItemText(hWnd, IDC_S_JOB2, bufStr); } } } else { sprintf(bufStr, "%s [έΒ©θάΉρ]", szTitle); SendMessage(hWnd, WM_SETTEXT, NULL, (LPARAM)&bufStr); dwStart = 0; dwCurrent = 0; } }