zoukankan      html  css  js  c++  java
  • 0,1选怪

    { 选怪条件
    1. 只选择列表框中的怪物_____
    2. 当选中的对象死亡时,选择下1个怪物
    3. 选择距离自己最近的那个怪
    4. 只在半径____范围内选怪
    5. BOSS不选
    }
     
     
     

     

    (*修正
    1 选列表框中的怪物
    2 选最近的怪物*)
     
    {此段代码需要hook的支持} 
    /// <summary> 
    /// 选怪 
    /// </summary> 
    /// <param name="ID1">目标的ID号,所有可以选中的对象/param> 
    procedure SelMonster(ID1:DWORD); 
    begin 
       ASM 
          MOV EAX,[$924E0C] 
          PUSH ID1  //目标ID号 
          MOV ECX,[EAX+$20] 
          ADD ECX,$0EC 
          MOV EBX,$005830D0 
          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;
      _idtm       :DWORD;
      pMonster    : PDWORD;
      Mon_id      : PDWORD;
      Mon_kind    : PDWORD;
      Monbase     : DWORD;
      SelObjId    : DWORD;
      Mon_amount  : PDWORD;
      Mon_hpMin   : PDWORD;
      Mon_hpMax   : PDWORD;
      Mon_level   : PDWORD;
      Mon_distance: PSingle;
      Mon_name    : PDWORD;
      Mon_name1   : PWideChar;
      Mon_name2   : string;
    begin
     if InGame=False then  Exit;
      asm                  //prc  monster
        mov eax,[$924E0C]
        mov eax,[eax+$1c]
        mov eax,[eax+$8]
        mov eax,[eax+$24]
        mov ecx,[eax+$18]
        mov Monbase,ecx
      end;
         _idtm:=0;
      for I := 0 to 768 do
      begin
        pMonster := pointer(Monbase + I*4);
        if pMonster^ > 0 then //当对象数组列表不为0的时候才添加
        begin
          pMonster     :=Pointer(pMonster^ + $4); // 怪物对象指针=[怪物列表基址]+04
          Mon_kind     :=Pointer(pMonster^+$0B4);
          Mon_id       :=Pointer(pMonster^+$11c);
          Mon_distance :=Pointer(pMonster^+$254); //距离
          Mon_name     :=Pointer(pMonster^ + $230); //名称
          Mon_name1    :=Pointer(Mon_name^ + $0);
         for L:= 0 to listbox1.Count-1 do
          begin
           if (Mon_name1<>listbox1.items[L]) then Continue;
           if (Mon_distance^<=50)then _idtm:= Mon_id^;
           {这里需要排序 每次选最近的那个 这样效率高可以和别人抢怪}
          end;
        end;
      end;
       SelMonster(_idtm);
    end;
     





    附件列表

  • 相关阅读:
    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(二)
    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦
    C# 获取当前登录IP
    清除ios系统alert弹出框的域名
    在线文档预览示例
    lnmp1.5一键安装包安装lnmpa后,添加站点
    解决sql server2008数据库安装之后,web程序80端口被占用问题(终极方案)
    码云上传项目流程
    SQLServer2008不允许保存更改错误解决办法
    tp5 使用phpword 替换word模板并利用com组件转换pdf
  • 原文地址:https://www.cnblogs.com/xe2011/p/2524201.html
Copyright © 2011-2022 走看看