选择最近的怪物的一些思路
选择最近的怪物的一些思路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传给选怪函数,
定一个变量A保存距离 初始化成10000 当然这个最大距离随便你定
定一个变量B保存最近怪ID
遍历一次所有怪
如果某个怪的距离小于A的话,就给A记录成这个怪的距离 B保存这个怪ID
循环完了以后,B就是最近的怪,A就是最近怪的距离 比方 怪物数量为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;
}
}
循环完之最近的怪物位置出来了 着玩意还是很有用处的。。。 支持一下~~~~~~~~~太牛了 谢谢楼主分享,支持 海论坛 很邦德样子不错,非常好,谢谢了 不知道说些什么了,太鸡冻了 楼主给力啊,不错顶一个 好东西。拿走了,感谢楼主分享 硬实厉害啊
页:
[1]
2