本帖最后由 总代 于 2012-3-23 14:01 编辑 第二季 :区域找多图 这里解释一下有些朋友理解的错误 这里找多图 是同一图片在 指定范围内出现N次 并不是找多张图片!找多张不同图片插件里面有 我何必在写呢? 进入正题 第二季 适用于矩阵!比如:一个 背包格子 我们要知道哪些格子里面的物品是我们要的物品!然后把坐标记录下来!当然用处很多!自己摸索! 第二季图片示例 这里只是高级难度!大家可以自己思考下!这是我测试的结果 还剩下大师级难度!大师级难度适用于任何 指定范围的 同一图片 任何排列!这里先保密! 高级源码我隐藏下 大家顶吧!部分地方 没有修改1可以自己修改! 这个应该是首发吧!大家可以自己扩展思路和用法!等会加注释! 本帖隐藏的内容hx=0:a=0:b=0:i=0:k=0:cs=0:ax=0:by=0:for i=1 to 900/5 FindPic 0,hy,1440,900,"E:\360data\重要数据\桌面\找到我1.bmp",1.0,intX,intY If a = 0 and b = 0 Then Goto 哪里 End If If intx <> a or inty <> b Then Call Plugin.File.WriteFileEx("E:\3.txt", a) Call Plugin.File.WriteFileEx("E:\3.txt", b) End If rem 哪里 If intX >= 0 and intY >= 0 Then a = intx b = inty hy = hy + 5 Else Exit For End If Next Text = Plugin.File.ReadFileEx("E:\3.txt") zb = split(text, "|") ds = UBound(zb) dc =UBound(zb)/2 jj =zb(3)-zb(1) Do While dc <> 0 zb(0) = 0 For K=1 to 1440/5 ty = zb(1) FindPic zb(0),zb(1),1400,zb(1)+jj,"E:\360data\重要数据\桌面\找到我1.bmp",1,intX,intY If ax = 0 and by = 0 Then Goto 这里 End If If intx <> ax or inty <> by Then Call Plugin.File.WriteFileEx("E:\3.txt", ax & "," &zb(1)) End If rem 这里 If intX >= 0 and intY >= 0 Then ax = intx by = inty zb(0) = zb(0) + 5 Else zb(1) = zb(1) + jj: dc = dc - 1: ax = 0:by =0 Exit for End If Next loop EndScrip 初级找多图 记住每个点坐标 判断 个数 源码已经发了,见下面 思路解释:首先理解按键的找图原理 他是怎么找图的 我们会发现他是从上到下 从左到右 识别 这个就是依据了 就像我们在记事本打字一样 第一排打满了 回车打下一排 他的扫描顺序也是这样的(当然一些插件里面有多种模式供选择) 所以 我们会发现 用自带的找到得图 就是哪一个呢?我这里我不说了 ,你们自己测试 写脚本就是自己动手的过程! 当我们找到一个坐标 intX intY 我们就和上次的INTx和INTY比较 如果相等的话说明我们找到的点是重复的 那么我们就不记录这个点! 、继续 +上 N个象素 往下扫描 到一旦扫描不到图片 说明我们剩下的区域已经吗没有了 所以就 EXIT FOR 跳出循环 中级找多图 记住每个点坐标 判断个数 晚上 上次此图找法 师级找多图 记住每个点坐标 判断个数 这个图我就自己保留了!其实是第一图和第二图的组合 大家发挥吧! 呵呵!给大家留点自己发挥的空间! 经做成小精灵 随后起床上传 后面两个也做好了 你到什么级别了?要源码?帖子顶起来!! 源码 15行 最精简化了!我这个人喜欢精简!越短的脚本我越喜欢! 不隐藏了!晚上传矩阵识别, 比这个精彩 哦 、 注释:00000 这个保存的坐标 第一个是0.0 为了让脚本达到最简单化 一共 15行 我就没有把第一个去掉了 分割取数组的时候 从 (1)开始吧! 高级难度 测试通过了!准备整理上传!由于是区域找图 所以速度慢 测试记录 10个图 平均时间 4秒! 目前支持前台 后台稍微改下就OK了 hx=0:a=0:b=0:i=0: //都是变量 md 是扫描图片密度 其实就是一个数字 图片散得很快的话用 15-10基本就可以全部扫描 // MD 为1 时 只要是凌乱 没有任何图片在一条X轴上 那么就绝对能完全识别出来 但是不建议使用 1 因为速度会最慢 10秒左右 for i=1 to 900/md 这里 900/是 屏幕的 Y值 当然你可以用获取 屏幕高度和宽度的命令来智能实现,也可以 把值直接定义到 2000但是 FindPic 0,hx,1440,900,"E:\360data\重要数据\桌面\找到我.bmp",1.0,intX,intY 这个不解释了 ↓下面的语句就要去理解变量了 这里我就不解释了 If intx <> a or inty <> b Then Call Plugin.File.WriteFileEx("E:\3.txt",a & "," & b) End If If intX >= 0 and intY >= 0 Then a = intx b = inty hx = hx + md Else Exit For End If Next 高级难度.JPG (10.4 KB, 下载次数: 76) |
|