CODE人物坐标

////////////////////////////////////////
 
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(结构化内存监视器)找到人物坐标地址
 




附件列表

    原文地址:https://www.cnblogs.com/xe2011/p/2525945.html