zoukankan      html  css  js  c++  java
  • 完美国际坐标查看器(可更新)

     EXE下载:http://files.cnblogs.com/xe2011/EXE_wmgjZBViewer2014-3-5-101313.7z

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

    [人物配置]
    ;默认为1.5.1的游戏数据
    ;当游戏版本升级时可以手动修改基址,2级偏移有时会改变
    ;PosX=[[[C0C68C]+1C]+34]+3c//主角坐标X 取整(坐标/10)+400
    ;PosY=[[[C0C68C]+1C]+34]+40//主角坐标Z 取整(坐标/10)
    ;PosZ=[[[C0C68C]+1C]+34]+44//主角坐标Y 取整(坐标/10)+550
    
    
    ;【1.5.1 游戏数据】
    ;hpmin=[[[00C7ABCC]+1c]+2c]+4a8
    ;二级偏移地址改变了
    游戏基址=$00C7ABCC
    一级偏移地址=$1C
    二级偏移地址=$2C
    X坐标偏移地址=$3C
    Y坐标偏移地址=$40
    Z坐标偏移地址=$44
    
    
    ;【1.4.8 游戏数据】
    ;游戏基址=$C0C68C
    ;一级偏移地址=$1C
    ;二级偏移地址=$34
    ;X坐标偏移地址=$3C
    ;Y坐标偏移地址=$40
    ;Z坐标偏移地址=$44
    
    
    ;【1.4.6 游戏数据】
    ;游戏基址=$BBC26C
    ;一级偏移地址=$1C
    ;二级偏移地址=$34
    ;X坐标偏移地址=$3C
    ;Y坐标偏移地址=$40
    ;Z坐标偏移地址=$44

    完美国际坐标查看器(可手动更新数据)
    提供源码下载
    默认是1.4.8的数据
    其他的版本请自行修改游戏基址=$C0C68C;
    比如1.4.6 游戏基址=$BBC26C;
    基址会有CE找的就用CE找 不会用的就找K25外挂里面也有基地把他的基址抄过来

    本程序的功能
    配合 NPC编辑器可以发挥最大的功能 复制坐标功能

    可以转换坐标把游戏内部的坐标转换成当前显示的坐标

     

     

    附个 NPC面向坐标
    面向说明
    NPC面向  DirX     DirY     DirZ
    东    0.000    0.000    0.000
    西    -1.000    0.000    0.000
    南    0.000    0.000    -1.000
    北    0.000    0.000    1.000

    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
    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 游戏基址=$C0C68C


    游戏基址=$C0C68C
    一级偏移地址=$1C
    二级偏移地址=$34
    X坐标偏移地址=$3C
    Y坐标偏移地址=$40
    Z坐标偏移地址=$44

  • 相关阅读:
    服务器Jmail配置问题
    Silverlight视频教程、资源下载。如果你觉得看图文不够形象,不够生动,那就看看视频吧。
    AspNetPager,asp.net分页的最终解决方案!
    VS2008的Web Application——net 1.1 CodeBehind 模式的回归(非编译模式)
    修复Jscript(IE浏览器脚本引擎)异常
    SQL Server中查看SQL句子执行所用的时间
    SilverLight开发系列第1步:搭建开发环境
    SilverLight开发系列第2步:使用vs2008和Blend 2.5打造Hellow World程序
    谨慎使用Paypal一类的 支付 中介公司
    一个典型的数据库操作事务死锁分析
  • 原文地址:https://www.cnblogs.com/xe2011/p/3570018.html
Copyright © 2011-2022 走看看