CODE人物坐标

CODE人物坐标_第1张图片
////////////////////////////////////////
 
procedure DsplyRolePosXYZ(); 

// PosX=[[[924E0C]+1C]+20]+3c//主角坐标X 取整(坐标/10)+400
// PosY=[[[924E0C]+1C]+20]+44//主角坐标Y 取整(坐标/10)+550
// PosZ=[[[924E0C]+1C]+20]+40//主角坐标Z 取整(坐标/10)
Const
    BaseAddress =$ 924E0C;
        Offset1 =$ 1C;
        Offset2 =$ 20;
      PosOffsetX =$ 3c;
      PosOffsetY =$ 44;
      PosOffsetZ =$ 40;
var
  MyHwnd:HWND;
  MyPid:Dword;
  MyProcess:Thandle;
  MyPointer:Integer;
  Readbyte:DWORD; //Size_T
  PosX,PosY,PosZ:Single; //
begin
  MyHwnd :=FindWindow( NIL, 'Element Client');
  // if myHwnd=0 then ShowMessage('No Found Element Client Window');
  GetWindowThreadProcessId(MyHwnd,@myPid);
  MyProcess :=OpenProcess(PROCESS_ALL_ACCESS,false,myPid);
  ReadProcessMemory(MyProcess,Pointer(BaseAddress),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +Offset1),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +Offset2),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +PosOffsetX),@PosX, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +PosOffsetY),@PosY, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +PosOffsetZ),@PosZ, 4,Readbyte);
  CloseHandle(MyProcess);
   //显示数值
  PosX :=Trunc(PosX / 10 + 400); //x坐=取整数部分(坐标/10)+400
  PosY :=Trunc(PosY / 10 + 550); //Y坐标=取整数部分(坐标/10)+550
  PosZ :=Trunc(PosZ / 10);     //z坐标=取整数部分(坐标/10)
  form1.Edit1.text :=FloatToStr(PosX) + ',' +FloatToStr(PosY) + '↑' +FloatToStr(PosZ); //使用format
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  DsplyRolePosXYZ;
end;

end.
  //找到这个地址
  //算出这个公式 》》》注意这个公式是如何算出来的
  //Trunc
  //使用format
 
 
/////////////////////////////////////////
使用MemView(结构化内存监视器)找到人物坐标地址
CODE人物坐标_第2张图片CODE人物坐标_第3张图片
 




附件列表

     

    你可能感兴趣的:(code)