首页 > 其他 > 详细

完美国际坐标查看器(可更新)

时间:2014-02-27 17:43:53      阅读:630      评论:0      收藏:0      [点我收藏+]

 EXE下载:http://files.cnblogs.com/xe2011/EXE_wmgjZBViewer2014-2-26-195325.7z

源码下载:http://files.cnblogs.com/xe2011/PASCAL_wmgjZBViewer2014-2-26-195325.7z

 bubuko.com,布布扣

bubuko.com,布布扣

 bubuko.com,布布扣

bubuko.com,布布扣
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Label7: TLabel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Timer2: TTimer;
    Label5: TLabel;
    Button4: TButton;
    Label4: TLabel;
    Button5: TButton;
    Edit4: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Edit3Click(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Label4MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label4MouseLeave(Sender: TObject);
    procedure Label5MouseLeave(Sender: TObject);
    procedure Label5MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Label5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
 IniFiles, Unit2,ShellAPI;
{$R *.dfm}
var
    BaseAddress,
        Offset1,
        Offset2,
      PosOffsetX,
      PosOffsetY,
      PosOffsetZ:DWORD;

//    BaseAddress=$C0C68C;
//        Offset1=$1C;
//        Offset2=$34;
//      PosOffsetX=$3c;
//      PosOffsetY=$40;
//      PosOffsetZ=$44;


procedure LoadIni;
var
  IniFile: TInifile;
begin
  IniFile := TInifile.Create(Application.ExeName + ‘.ini‘);
  BaseAddress := IniFile.ReadInteger(‘人物配置‘, ‘游戏基址‘,$C0C68C);
  Offset1 := IniFile.ReadInteger(‘人物配置‘, ‘一级偏移地址‘,$1C);
  Offset2 := IniFile.ReadInteger(‘人物配置‘, ‘二级偏移地址‘,$34);

  PosOffsetX := IniFile.ReadInteger(‘人物配置‘, ‘X坐标偏移地址‘,$3C);
  PosOffsetY := IniFile.ReadInteger(‘人物配置‘, ‘Y坐标偏移地址‘,$40);
  PosOffsetZ := IniFile.ReadInteger(‘人物配置‘, ‘Z坐标偏移地址‘,$44);
end;

procedure WriteIni;
var
  IniFile: TInifile;
begin
    IniFile := TInifile.Create(Application.ExeName + ‘.ini‘);
    IniFile.WriteInteger(‘人物配置‘, ‘游戏基址‘,$C0C68C);
    IniFile.WriteInteger(‘人物配置‘, ‘一级偏移地址‘,$1C);
    IniFile.WriteInteger(‘人物配置‘, ‘二级偏移地址‘,$34);

    IniFile.WriteInteger(‘人物配置‘, ‘X坐标偏移地址‘,$3C);
    IniFile.WriteInteger(‘人物配置‘, ‘Y坐标偏移地址‘,$40);
    IniFile.WriteInteger(‘人物配置‘, ‘Z坐标偏移地址‘,$44);

end;

procedure DsplyRolePosXYZ();

// PosX=[[[924E0C]+1C]+20]+3c//主角坐标X 取整(坐标/10)+400
// PosY=[[[924E0C]+1C]+20]+40//主角坐标Z 取整(坐标/10)
// PosZ=[[[924E0C]+1C]+20]+44//主角坐标Y 取整(坐标/10)+550
var
  h:HWND;
  PID:Dword;
  hProcess:Thandle;
  MyPointer:Integer;
  Readbyte:DWORD;//Size_T
  PosX,PosY,PosZ:Single;//
begin
  h:=FindWindow(‘ElementClient Window‘,NIL);
  if h=0 then
  begin
      Form1.Caption:=‘没有找到游戏‘;
  end
  else
  begin
    Form1.Caption:=‘坐标查看器‘;
    GetWindowThreadProcessId(h,@PID);
    hProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
    ReadProcessMemory(hProcess,Pointer(BaseAddress),@MyPointer,4,Readbyte);
    ReadProcessMemory(hProcess,Pointer(MyPointer+Offset1),@MyPointer,4,Readbyte);
    ReadProcessMemory(hProcess,Pointer(MyPointer+Offset2),@MyPointer,4,Readbyte);
    ReadProcessMemory(hProcess,Pointer(MyPointer+PosOffsetX),@PosX,4,Readbyte);
    ReadProcessMemory(hProcess,Pointer(MyPointer+PosOffsetY),@PosY,4,Readbyte);
    ReadProcessMemory(hProcess,Pointer(MyPointer+PosOffsetZ),@PosZ,4,Readbyte);
    CloseHandle(hProcess);

    form1.Edit1.text:= Format(‘%0.3f‘,[posX]);
    form1.Edit2.text:= Format(‘%.3f‘,[posY]);
    form1.Edit3.text:= Format(‘%.3f‘,[posZ]);

    //显示数值
    PosX:=Trunc(PosX/10+400); //x坐=取整数部分(坐标/10)+400
    PosY:=Trunc(PosY/10);     //z坐标=取整数部分(坐标/10)
    PosZ:=Trunc(PosZ/10+550); //Y坐标=取整数部分(坐标/10)+550

  //  form1.Edit1.text:=FloatToStr(PosX)+‘,‘+FloatToStr(PosY)+‘↑‘+FloatToStr(PosZ);//使用format

    form1.Label1.Caption:= Format(‘X坐标:%.f‘,[posX]);
    form1.Label2.Caption:= Format(‘Y坐标:↑%.f‘,[posY]);
    form1.Label3.Caption:= Format(‘Z坐标:%.f‘,[posZ]);
    form1.Edit4.Text:=Format(‘%.f %.f %.f‘,[posX,posZ,posY]);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
    Edit1.SetFocus;
    Edit1.SelectAll;
    Edit1.CopyToClipboard;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    Edit2.SetFocus;
    Edit2.SelectAll;
    Edit2.CopyToClipboard;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    Edit3.SetFocus;
    Edit3.SelectAll;
    Edit3.CopyToClipboard;
end;

procedure TForm1.Button4Click(Sender: TObject);
VAR
  EDT:TEdit;
begin
    EDT:=TEdit.Create(SELF);
    EDT.Parent:=Form1;
    EDT.Text:=Edit1.Text +‘ ‘+EDIT2.Text +‘ ‘+EDIT3.Text;
    EDT.SelectAll;
    EDT.CopyToClipboard;
    EDT.Free;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin

  Edit4.SelectAll;
  Edit4.CopyToClipboard;
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
    Edit1.SelectAll;
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
    Edit2.SelectAll;
end;

procedure TForm1.Edit3Click(Sender: TObject);
begin
   Edit3.SelectAll;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   if not FileExists(Application.ExeName + ‘.ini‘) then
   WriteIni;

   LoadIni;

end;

procedure TForm1.Label4Click(Sender: TObject);
begin
    Hide;
    Form2.Edit1.Text:=Edit1.Text;
    Form2.Edit2.Text:=Edit2.Text;
    Form2.Edit3.Text:=Edit3.Text;

    Form2.ShowModal;
    Show;
end;


procedure TForm1.Label4MouseLeave(Sender: TObject);
begin
   Label4.Font.Color:=clBlack;
   Label4.Font.Style:=[];
end;

procedure TForm1.Label4MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   Label4.Font.Color:=clRed;
   Label4.Font.Style:=[fsUnderline];
end;

procedure TForm1.Label5Click(Sender: TObject);
begin
    ShellExecute(Handle, ‘open‘, ‘www.baidu.com‘, 0, 0, SW_SHOWNORMAL);
end;

procedure TForm1.Label5MouseLeave(Sender: TObject);
begin
   Label5.Font.Color:=clBlack;
   Label5.Font.Style:=[];
end;

procedure TForm1.Label5MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   Label5.Font.Color:=clRed;
   Label5.Font.Style:=[fsUnderline];
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  try
      DsplyRolePosXYZ;
      Label7.Visible:=False;
  except
      Label7.Caption:=‘读取游戏数据失败‘;
      Label7.Visible:=tRUE;
  end;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
 // if Form2.Visible then
 //   form2.BringToFront;
end;

end.
UNIT1

 

bubuko.com,布布扣
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Timer1: TTimer;
    GroupBox2: TGroupBox;
    Edit4: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Edit3Click(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Transform1;
    procedure Transform2;

  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}
//    PosX:=Trunc(PosX/10+400); //x坐=取整数部分(坐标/10)+400
//    PosY:=Trunc(PosY/10);     //z坐标=取整数部分(坐标/10)
//    PosZ:=Trunc(PosZ/10+550); //Y坐标=取整数部分(坐标/10)+550
//
//游戏显示坐标
procedure TForm2.Timer1Timer(Sender: TObject);
begin
  FormStyle:=fsStayOnTop;
end;

procedure TForm2.Transform1;
var
  x,y,z:Single;
  x1,y1,z1:string;
begin
     x:= StrToFloat(Edit1.Text);
     x1:=Format(‘%d‘,[Round(x/10)+400]);  //X坐=取整数部分(坐标/10)+400

     y:= StrToFloat(Edit2.Text);
     y1:=Format(‘%d‘,[Round(y/10)]);  //Y坐标=取整数部分(坐标/10)

     z:= StrToFloat(Edit3.Text);
     z1:=Format(‘%d‘,[Round(z/10)+550]);  //Z坐标=取整数部分(坐标/10)+550

     Edit4.Text:=x1+‘ ‘+z1;
     Label5.Caption:=‘ ↑‘+y1;
end;

//游戏内部实际坐标
procedure TForm2.Transform2;
begin

end;


procedure TForm2.Button1Click(Sender: TObject);
begin
  Transform1;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Edit4.SelectAll;
  Edit4.CopyToClipboard;
end;

procedure TForm2.Edit1Click(Sender: TObject);
begin
     Edit1.SelectAll;
end;

procedure TForm2.Edit2Click(Sender: TObject);
begin
    Edit2.SelectAll;
end;

procedure TForm2.Edit3Click(Sender: TObject);
begin
     Edit3.SelectAll;
end;

procedure TForm2.Edit4Click(Sender: TObject);
begin
    Edit4.SelectAll;
end;

end.
UNIT2

 

[人物配置]
;完美国际数据可以手动修改
;默认为1.4.8服务端的数据
;PosX=[[[C0C68C]+1C]+34]+3c//主角坐标X 取整(坐标/10)+400
;PosY=[[[C0C68C]+1C]+34]+40//主角坐标Z 取整(坐标/10)
;PosZ=[[[C0C68C]+1C]+34]+44//主角坐标Y 取整(坐标/10)+550
;1.4.6 游戏基址=BBC26C;1.4.8游戏基址=bubuko.com,布布扣bubuko.com,布布扣 C0C68C


游戏基址=$C0C68C
一级偏移地址=1Cbubuko.com,布布扣二级bubuko.com,布布扣偏移bubuko.com,布布扣地址bubuko.com,布布扣=bubuko.com,布布扣bubuko.com,布布扣 34
X坐标偏移地址=3CY坐标偏移地址=bubuko.com,布布扣bubuko.com,布布扣 40
Z坐标偏移地址=$44

完美国际坐标查看器(可更新),布布扣,bubuko.com

完美国际坐标查看器(可更新)

原文:http://www.cnblogs.com/xe2011/p/3570018.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!