lua脚本,触动精灵找色?
网友解答: 我们在用找色的时候比较头痛的问题是很难找到一个色值能准确的和其它目标区别,如果想用多点找色又得把区域定得很小,只能判断是还是不是。我这个函数解决了上面的两个问题,我们可以用多
我们在用找色的时候比较头痛的问题是很难找到一个色值能准确的和其它目标区别,如果想用多点找色又得把区域定得很小,只能判断是还是不是。我这个函数解决了上面的两个问题,我们可以用多个色值,进行大范围查找,这样既可以用多个色值减小误差,也可以在大的区域内找目标,而且因为用了以找主色为主线,找到才确定辅色的方式,效率大大提高,当然还有找图所没有的兼容性和便利性,辅色的数量可变更增加了函数应用范围。函数使用不多,难免有考虑不周的地方,发现BUG请跟帐说明或者纠正,联系本人也可以。
--H.R制作,H.R LUA脚本教学群:165488683--参数说明:一个主色值,相似度及查找范围,这个和一般找色没差别 --W,H这两个参数为主色找到后找辅色的范围,W表示主色前后的距离,H表示主色上下的距离,这样找辅色的区域总大小是2W*2H --ARG用来存放辅助色的数组,我也不知道什么原因,触摸使用可变参数总是报错,不得于只有使用一个数组来做参数,这样我们的辅助色数量也是可变的,只是在调用的时候,得用{}把色值包起来。如:{0xDBEEFA,0xDCEFFC,0xDDEEFB,0x1295E9,0xff0000}。--返回值说明:返回三个参数,分别是成功标志,找到是TRUE,找不到是FALSE,主色值坐标,找到就是有效点坐标点,找不到返回-1.function mutifindcolor(zhusezhi,xsd,x1,y1,x2,y2,w,h,arg)cgbj=0;repeat xz,yz=findColorInRegionFuzzy(zhusezhi,xsd,x1,y1,x2,y2); if xz0 then for i,v in pairs(arg) do local xf,yf=findColorInRegionFuzzy(arg[i],xsd,xz-w,yz-h,xz+w,yz+h); if xf0 then cgbj=1; else cgbj=0; break; end end if cgbj==1 then return true,xz,yz; end xtmp,ytmp=xz+1,yz; repeat xz1,yz1=findColorInRegionFuzzy(zhusezhi,xsd,xtmp,ytmp,x2,ytmp); if xz10 then for i,v in pairs(arg) do local xf,yf=findColorInRegionFuzzy(arg[i],xsd,xz1-w,yz1-h,xz1+w,yz1+h); if xf0 then cgbj=1; else cgbj=0; break; end end if cgbj==1 then return true,xz1,yz1; end xtmp=xz1+1; end until xz1<0 y1=yz+1; enduntil xz<0return false,-1,-1;endfunction main()f,x,y=mutifindcolor(0xDBEEFB,85,700,0,1023,590,10,10,{0xDBEEFA,0xDCEFFC,0xDDEEFB,0x1295E9,0xff0000}); if f then click(x,y); else notifyMessage("没找到!"); mSleep(2000); endendfunction click(x,y) touchDown(0, x, y); mSleep(90); touchUp(0); end