挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 6477|回复: 11
打印 上一主题 下一主题

[讨论交流] 选择最近的怪物的一些思路

[复制链接]
3正式会员
146/300

146

积分

58

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
88
海币
831
交易币
0
跳转到指定楼层
楼主
发表于 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[4]={0};
    byte anns;
    _asm
    {
            mov eax,0x0F20DA8
        mov eax,[eax]
        mov i,eax     //取出角色身边怪物数量
    }
    i=i-1;            //减去角色自己
    _asm
    {
            mov eax,0xEFB43C
        mov ebx,0xEFB444
        mov eax,[eax]
        mov [ebx],eax
    }
        for(int j=0;j<i;j++)   
    {
        _asm
        {
            mov eax,0xEFB444   
            mov ebx,0xEFB444
            mov eax,[eax]
            mov eax,[eax+0xc]
            mov [ebx],eax
            lea esi,[eax-0xdc]
            mov edi,esi
            add edi,0x254              //取怪物与角色距离
                    mov PDistance,edi   
            mov bl,byte ptr [esi+1ch]  //取怪物死活状态
            mov anns,bl
            add esi,0xF8               //取怪物ID
            mov esi,[esi]
            mov id,esi
        }
        buff[0]=PDistance[0];
        buff[1]=PDistance[1];
        buff[2]=PDistance[2];
        buff[3]=PDistance[3];
        ff=(float*)&buff[0];
        ReadTrueDistance=*ff;   //取出浮点型距离变量

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

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

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



联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:笑傲江湖门徒卖物CALL ,没反应的解决办法
下一篇:诛仙3 ID选怪call dephi写法
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

3正式会员
217/300

217

积分

119

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
98
海币
1773
交易币
0
沙发
发表于 2015-4-20 14:33:02 | 只看该作者
定一个变量A保存距离   初始化成10000   当然这个最大距离随便你定
定一个变量B保存最近怪ID

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

217

积分

119

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
98
海币
1773
交易币
0
板凳
发表于 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;
    }
}
循环完之最近的怪物位置出来了

13

积分

7

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
6
海币
309
交易币
0
地板
发表于 2015-4-20 14:33:13 | 只看该作者
着玩意还是很有用处的。。。

1

积分

0

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
-43
交易币
0
5#
发表于 2015-4-20 16:21:00 | 只看该作者
支持一下~~~~~~~~~太牛了 谢谢楼主分享,支持 海论坛

1

积分

0

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
-43
交易币
0
6#
发表于 2015-4-20 16:25:23 | 只看该作者
很邦德样子不错,非常好,谢谢了

1

积分

0

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
-43
交易币
0
7#
发表于 2015-4-20 16:35:27 | 只看该作者
不知道说些什么了,太鸡冻了

1

积分

0

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
-43
交易币
0
8#
发表于 2015-4-20 16:37:31 | 只看该作者
楼主给力啊,不错顶一个

83

积分

23

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
60
海币
653
交易币
0
9#
发表于 2015-4-25 21:56:22 | 只看该作者
好东西。拿走了,感谢楼主分享
6高级会员
1050/1100

1050

积分

346

主题

9

听众
已帮网友解决0 个问题
好评
0
贡献
704
海币
3347
交易币
0
10#
发表于 2015-4-28 14:21:23 | 只看该作者
硬实厉害啊  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 03:09 , Processed in 0.081688 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表