- UID
- 468
- 帖子
- 149
- 积分
- 97
- 紫菀
- 0 朵
- 花瓣
- 171 片
- 花蕊
- 22 朵
- 野草莓
- 0 个
- 蒲公英
- 0 朵
- 社区等级
- 8 级
- 在线时间
- 21 小时
- 注册时间
- 2006-9-4
- 登录状态
-
当前离线
|
楼主
发表于 2006-11-9 21:58
| 只看该作者
网络游戏找怪思路详解
学习按键有段时间了 对一些找怪的思路小有体会 简单来说找怪就是找怪与背景不同的独有的特征 可以通过找怪的颜色/图片,怪名字颜色/图片,怪血条颜色/图片,内存找怪(没试过),渐开线扫描,小地图找怪等等的方法来实现 具体看游戏而定 下面就介绍几种找怪的方法:
1。区域找色
应该说是最简单的找怪方法了 在区域里查找怪的特有颜色,名字颜色,血条颜色等等 如果找到移动鼠标到怪身上进行攻击 (推荐用区域模糊找色或从区域中间向外找色)
例子(区域模糊找色):
VBSCall FindColorEx(0,0,1024,768,"FFFFFF",1,0.8,x,y)
//区域模糊找色 0,0,1024,768为区域范围 "FFFFFF"为颜色 1为查找方式(中间向外) 0.8为模糊值 x,y为找到颜色后的坐标变量
If x>=0 and y>=0
//如果找到颜色 比如找到颜色就会赋值给坐标变量 通过判断坐标变量可以知道有没有找到怪
MoveTo x y
//把鼠标移动到该色的坐标 如果找的是怪名字或血条 可能移动不到怪身上 这时就要用鼠标偏移 如:MoveTo x+10 y+10
Delay 50
//延时
LeftClick 1
//左键单击进行攻击
EndIf
//条件结束
(如果要在区域内查找多色可以用数组来写 在16楼有个例子 可以参考一下)
2。区域找图
在区域里查找怪的图形,怪的名字图片,血条图片等等 语法与区域找色相似 需要注意的是图片的制作 这里有两个教程可以参考一下
教程①
,
教程②
图片做好之后可以放在按键文件夹里的script文件夹中 就可以不用在脚本里写图片路径 只需图片名就行了 写脚本的时候比较方便
例子:
VBSCall FindPic(0,0,1024,768,"1.bmp",0.9,x,y)
//区域找图 0,0,1024,768为区域范围 "1.bmp"为图片名(路径) 0.9为找图的相似度 x,y为找到图片后的坐标变量
If x>=0 and y>=0
MoveTo x y
Delay 50
LeftClick 1
EndIf
3。圆形渐开线扫描找怪法
此法效率较低 这里有个以前的例子可以参考一下
http://bbs.vrbrothers.com/viewthread.php?tid=14105
4。圆形渐开线扫描找变色怪
这个是我以前收集的一个找变色怪的例子(原帖找不到了):
VBS dim x0,n,y0,x,color0,color
//声明变量
Rem start
//标记渐开线找怪开始
VBS x0=400:n=1:y0=300:x=400
//变量初始化
While x//限定横坐标范围不超过800
VBS x=x0+4*(cos(n)+n*sin(n))
//根据渐开线公式计算下一个点的横坐标并赋值给x
VBS y=y0+3*(sin(n)-n*cos(n))
//根据渐开线公式计算下一个点的纵坐标并赋值给y
VBSCall color0=GetPixelColor(x,y)
//在鼠标移动之前,获取目标点色值并赋值给color0
VBSCall Call SetCursorPos(x,y)
//马上移动鼠标到目标点
VBSCall color=GetPixelColor(x,y)
//获取鼠标移动后该点色值并赋值给color
If colorcolor0
//同一点取得的两次色值比较,不同,则执行以下的打怪脚本
LeftClick 1
//左键单击
Delay 3000
//打怪延时
EndIf
//该点判断结束
Delay 10
//循环延时
VBS n=n+0.2
//渐开线参数增量,其中0.2代表点间距,数值越小,渐开线散开点间距越小
EndFor
//一次渐开线取点判断结束
Goto start
/转到开始,重复渐开线搜索
5。小地图找怪
公式:大地图怪坐标=(小地图怪坐标 - 小地图人物坐标)*比例 + 大地图人物坐标
比例是(大地图怪坐标和大地图人物坐标之间的距离)与(小地图怪坐标和小地图人物坐标之间的距离)这两者的比例 如下图 A线与B线的比例 图做的不好 莫怪
用小地图找怪计算数据必需要很准确
然后用区域找色查找小地图上怪的小点(最好用从区域中心向外找色) 找到怪的小点后再计算坐标 计算得出大地图坐标后 移动鼠标到怪身上打怪
例子:
VBSCall FindCenterColor(858,66,996,192,"0000FF",x,y)
//区域从中间向外找色 858,66,996,192是小地图的区域范围
If x>=0 and y>=0
//如果找到颜色
x0=(x-926)*10+512
y0=(y-129)*10+389
//计算大地图怪的坐标
MoveTo x0 y0
//移动到大地图怪的坐标
Delay 50
//延时
LeftClick 1
//左键单击进行攻击
EndIf
//条件结束
暂时就写这几个了 当然找怪的方法不止这几种而已 欢迎大家一起来讨论与分享 |
|