TC官方合作论坛
标题:
关于完美世界就近打怪的一点想法。。。。
[打印本页]
作者:
爱上老公
时间:
2015-4-10 01:24
标题:
关于完美世界就近打怪的一点想法。。。。
本帖最后由 爱上老公 于 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)
跳出
如果结束
循环结束
作者:
爱上老公
时间:
2015-4-10 01:38
先顶自己一下
作者:
sam7894604
时间:
2015-4-10 03:35
这样写的选怪效率有点低...
TAB 默认是选最近怪物吧 ?...
作者:
爱上老公
时间:
2015-4-10 09:41
sam7894604 发表于 2015-4-10 03:35
这样写的选怪效率有点低...
TAB 默认是选最近怪物吧 ?...
不是的,随机的,要是默认最近的话,我也不会这么费神了,效率的话还过得去,在打怪线程执行前,怪就已经选好了,1到2秒
作者:
爱上老公
时间:
2015-4-10 09:42
本帖最后由 爱上老公 于 2015-4-10 09:57 编辑
sam7894604 发表于 2015-4-10 03:35
这样写的选怪效率有点低...
TAB 默认是选最近怪物吧 ?...
求大神指导,还有一个问题,怎么样检测出附近(指定范围)怪物数量??比如说附近怪物超过一个,用到群怪技能。。。,一个怪物用单刷技能。。
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1