爬文找到程式碼如下: 測試後仍無法找出玩家資訊, 請會的大大看一下:
ReadProcessMemory(GAME,Pointer(DYNAMIC_BASE_ADDR+$08),@ENVIRON_BASE_ADDR,4,iread); //取得環境基址
ReadProcessMemory(GAME,Pointer(ENVIRON_BASE_ADDR+$20),@PLAYER_BASE_ADDR,4,iread); //取得週圍玩家基址
ReadProcessMemory(GAME,Pointer(PLAYER_BASE_ADDR+$18),@PLAYER_LIST_ADDR,4,iread); //取得週圍玩家列表基址
ReadProcessMemory(GAME,Pointer(ROLE_BASE_ADDR+$b0c),@ROLE_SN,4,iread); //人物選中sn
請問 ROLE_BASE_ADDR 從哪裡算出的??
ReadProcessMemory(GAME,Pointer(PLAYER_LIST_ADDR+((ROLE_SN Mod 769))*4),@PLAYER_ADDR,4,iread );//相應位置玩家基址
ReadProcessMemory(GAME,Pointer(PLAYER_ADDR+$4),@PLAYER_OBJ,4,iread); //相應位置玩家指針
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$3C),@PLAYER_X,4,iread); //相應位置玩家X座標
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$44),@PLAYER_Y,4,iread); //相應位置玩家y座標
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$40),@PLAYER_Z,4,iread); //相應位置玩家Z座標
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$4B4),@PLAYER_MAXHP,4,iread); //相應位置玩家最大血量
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$474),@PLAYER_CURHP,4,iread); //相應位置玩家當前血量
ReadProcessMemory(GAME,Pointer(PLAYER_OBJ+$618),@PLAYER_NAME_ADDR,4,iread); //相應位置玩家名稱基址
ReadProcessMemory(GAME,pointer(PLAYER_NAME_ADDR),@PLAYER_NAME,SizeOf(PLAYER_NAME), iread);//讀取人物名稱
Label15.Caption := '玩家名稱:' + string(PLAYER_NAME);
Label16.Caption := '座標:'+Formatfloat('0',(PLAYER_X/10+400))+', '+Formatfloat('0',(PLAYER_Y/10+550))+
'#' + Formatfloat('0',(PLAYER_Z/10));
Label17.Caption := '玩家血量:'+IntToStr(PLAYER_CURHP)+' / '+IntToStr(PLAYER_MAXHP); |