• 0,4捡物


    1 {人物可以捡起的物品最大范围 <=9}
    2 跑去捡
     
     
     
    {此段代码需要hook的支持}
    /// <summary>
    /// 捡物
    /// </summary>
    /// <param name="Id1">物品IDparam>
    /// <param name="Id2">系统物品ID/param>
    procedure pickUpGoods(Id1:DWORD;Id2:DWORD);
    begin
      ASM
        MOV ECX,[$924e0c]
        PUSH Id1 //4FAA {物品ID}
        PUSH Id2 //0C01014BD {系统ID}
        MOV ECX,[ECX+$20]
        ADD ECX,$0EC
        MOV EBX,$00583060
        CALL EBX
      END;
    end;

    {此段代码需要hook的支持}
    /// <summary> 
    /// {人物是在游戏当中还是小退} 
    /// </summary> 
    function InGame():Boolean; 
    var gameretn:DWORD; 
    begin 
      asm 
       mov eax,[$00924D48] 
       mov gameretn,eax 
      end; 
      if gameretn=0  then Result:=true{在游戏当中} 
      else if gameretn>=1 then  Result:=False; {人物在角色选择界面} 
    end; 

    procedure TForm1.Button1Click(Sender: TObject); 
    {本段代码的目的 捡物}
    var
      I:Integer;
      L:Integer;
      pGds           :PDWORD;
      gdsTmp         :DWORD;
      Gds_id1        :PDWORD;
      Gds_id2        :PDWORD;
      Gds_distance   :PSingle;
      Gds_name       :PDWORD;
      Gds_name1      :PWideChar;
      gds_posx       :PSingle;
      gds_posy       :PSingle;
      gds_posz       :PSingle;
      Gds_A_B        :Single;
      Gds_id1tmp     :DWORD;
      Gds_id2tmp     :DWORD;
      Gds_distance1  :Single;
    begin
       if InGame=False then  Exit;
      asm
       mov eax,[$924E0C]
       mov eax,[eax+$1c]
       mov eax,[eax+$8]
       mov eax,[eax+$28]
       mov ecx,[eax+$18]
       mov gdsTmp,ecx
      end;
      for I:=0 to 768 do
      begin
        pGds:=pointer(gdsTmp+I*4);
        if pGds^>0 then
        begin
          pGds        :=Pointer(pGds^+$4);
          Gds_id1     :=Pointer(pGds^+$110); {物品ID}
          Gds_id2     :=Pointer(pGds^+$10C); {系统物品ID}
          Gds_name    :=Pointer(pGds^+$164);
          Gds_name1   :=Pointer(Gds_name^+$0);
          Gds_distance:=Pointer(pGds^+$154);
          for L:=0 to  ListBox1.Count-1 do {}
          begin           {}
            if Gds_name1<>ListBox1.Items[L] then continue;
            Gds_id1tmp:=Gds_id1^;
            Gds_id2tmp:=Gds_id2^;
            Gds_distance1:=Gds_distance^;
          end;
        end;
      end;
       if Gds_distance1<=9 then pickUpGoods(Gds_id1tmp,Gds_id2tmp);{捡物}
    end;
     





    附件列表

  • 相关阅读:
    代理与反向代理
    Spring Batch 远程分区和远程分块的区别
    XWIKI部署安装
    想写一些与技术无关的
    1104报表
    ARQC与ARPC的生成和校验方法
    学习开源框架的一些总结
    linux java -version 和 javac -version 不一致
    spring boot 概念
    Unable to open socket file: target process not responding or HotSpot VM not loaded
  • 原文地址:https://www.cnblogs.com/xe2011/p/2524198.html
Copyright © 2020-2023  润新知