本帖最后由 爱上老公 于 2015-4-10 01:37 编辑
完美世界属于典型的3D网游了,人物永远在地图中间,同时有个小地图左上角,游戏中按tab键选怪,选中怪物后,小地图上显示红点,
这就为就近打怪及其他功能的实现提供了基础,下面是小地图,蓝色线是怪物离人物X坐标距离(取绝对值),黑色线是怪物离人物Y坐标距离(取绝对值),
红色线就是人物和怪物的直线距离了,用勾股求出红色线的长度(数值),重复按tab选怪,就得到一个数组(且这么说吧!本人也是小白)下面就简单了,用到数组空间排列等,
找出里面的一个最小值,然后循环对比,直到取到这个最小值的怪,跳出循环,然后打怪。。。。判断怪物死亡(找图找色或者其他)。。。。再执行上面。。。。
说的不好,清见谅。。。
其实就是2个步骤
1.得到附近怪物离人物的直线距离,保存在数组空间
2.找出最小直线距离值,按选怪键再次匹配这个值。
功能 搜索怪物()
dm.setpath(辅助.获取资源路径("rc:"))
dm_ret1 = dm.SetDict(0,"数字1.txt")
范围=类型.转整型(编辑框.获得文本("编辑框5"))
变量 人物X坐标=1213
变量 人物Y坐标=92
变量 怪物X坐标
变量 怪物Y坐标
变量 距离X
变量 距离Y
辅助.等待(500) //定义一个数组,把周围怪物于人物的直线距离放进数组
变量 怪物集合=数组[4]
遍历(i=0;i<4;i++)
dm.KeyPress(9)
辅助.等待(200) //“怪物”其实就是小地图上的红点,选中怪物小地图上就有红点,
dm_ret = dm.FindStr(1151,33,1273,158,"怪物","ff4f2c-000000",1.0,怪物X坐标,怪物Y坐标)
//1213是人物在小地图上的X坐标,92是Y坐标,求出两条直角边的绝对值
距离X=数学.绝对值(1213-怪物X坐标)
距离Y=数学.绝对值(92-怪物Y坐标)
//求出斜线长度(直线距离)
怪物集合=类型.取整(数学.开方((距离X*距离X)+(距离Y*距离Y)))
遍历结束
//排序,小的放前面,也就是“怪物集合[0]”最小
数组空间.排序(怪物集合,2)
循环(真)
辅助.等待(300)
dm.KeyPress(9)
辅助.等待(100) //“怪物”其实就是小地图上的红点,选中怪物小地图上就有红点,
dm_ret = dm.FindStr(1151,33,1273,158,"怪物","ff4f2c-000000",1.0,怪物X坐标,怪物Y坐标)
距离X=数学.绝对值(1213-怪物X坐标)
距离Y=数学.绝对值(92-怪物Y坐标)
s=类型.取整(数学.开方((距离X*距离X)+(距离Y*距离Y)))
//调试输出(s)
//保存后在循环对比,找到小于等于最小值就跳出
如果(s<=怪物集合[0]+1)
跳出
如果结束
循环结束
|