haifon 发表于 2015-4-20 14:32:30

选择最近的怪物的一些思路

选择最近的怪物的一些思路

void ReadMonsterID()
{
      DWORD id=0;    //存储怪物ID
    int i=0;       //存储角色周围怪物数量
    char *PDistance=NULL;
    float ReadTrueDistance;//存储程序读出的角色与怪物的距离//INTUserConfigDistance是 界面玩家设置的距离,全局变量.
    float *ff;
    char buff={0};
    byte anns;
    _asm
    {
            mov eax,0x0F20DA8
      mov eax,
      mov i,eax   //取出角色身边怪物数量
    }
    i=i-1;            //减去角色自己
    _asm
    {
            mov eax,0xEFB43C
      mov ebx,0xEFB444
      mov eax,
      mov ,eax
    }
      for(int j=0;j<i;j++)   
    {
      _asm
      {
            mov eax,0xEFB444   
            mov ebx,0xEFB444
            mov eax,
            mov eax,
            mov ,eax
            lea esi,
            mov edi,esi
            add edi,0x254            //取怪物与角色距离
                  mov PDistance,edi   
            mov bl,byte ptr //取怪物死活状态
            mov anns,bl
            add esi,0xF8               //取怪物ID
            mov esi,
            mov id,esi
      }
      buff=PDistance;
      buff=PDistance;
      buff=PDistance;
      buff=PDistance;
      ff=(float*)&buff;
      ReadTrueDistance=*ff;   //取出浮点型距离变量

      if (anns==1) //如果怪物是活的
      {
         if ((ReadTrueDistance<INTUserConfigDistance)&&(id!=0)) //如果怪物与角色的距离小于玩家设置的距离,并且怪物ID不等于0
         {
               ChooesTheMonster(id);    //选怪函数
               break;
         }
      }
    }
}

以上代码无误有效,但不会选择离角色最近的怪物。
求大神帮助提供一个思路来实现选择离角色最近的怪物。

我个人的想法是遍历怪物的“ID”和“怪物角色的距离”分别存储到一个二维数组内,
然后使用冒泡排序找出最小的距离,再取出对应的怪物ID传给选怪函数,

zhang_game 发表于 2015-4-20 14:33:02

定一个变量A保存距离   初始化成10000   当然这个最大距离随便你定
定一个变量B保存最近怪ID

遍历一次所有怪   
如果某个怪的距离小于A的话,就给A记录成这个怪的距离   B保存这个怪ID
循环完了以后,B就是最近的怪,A就是最近怪的距离

zhang_game 发表于 2015-4-20 14:33:13

比方 怪物数量为10
b=0x10;
float c=100;
for (DWORD a=0x0;a<b;a++)
{
    float d=*(float*)(*(DWORD*)(*(DWORD*)(xxx)+a*0x4)+0xxxx);
    if (d<c)
    {
      c=d;
    }
}
循环完之最近的怪物位置出来了

仅剩的微笑 发表于 2015-4-20 14:33:13

着玩意还是很有用处的。。。

30929718 发表于 2015-4-20 16:21:00

支持一下~~~~~~~~~太牛了 谢谢楼主分享,支持 海论坛

30929718 发表于 2015-4-20 16:25:23

很邦德样子不错,非常好,谢谢了

30929718 发表于 2015-4-20 16:35:27

不知道说些什么了,太鸡冻了

30929718 发表于 2015-4-20 16:37:31

楼主给力啊,不错顶一个

luori 发表于 2015-4-25 21:56:22

好东西。拿走了,感谢楼主分享

win765 发表于 2015-4-28 14:21:23

硬实厉害啊
页: [1] 2
查看完整版本: 选择最近的怪物的一些思路