精灵主页上的那个关于QQ找茬的代码太过简陋 并且方法效率太低下 所以写一个 //最好的找茬脚本奉献上来 提供大家学习 //用8.x写的 //作者:tiger4 /// ///////////////////////////////// // //选择是美女找茬 还是 普通找茬 默认美女找茬 UserVar xuanze=DropList{"美女找茬":"1"|"普通找茬":"2"}=1 "QQ游戏找茬" //寻找定位点 这里的定位点是找茬游戏左上角的星星上的一个点 Call FindColor(0,0,1680,1024,"C8FCF8",X,Y) //定义两个数组来存 不同点的X坐标和Y坐标 dim kk(1850),kw(1850) // 定位左边画面起点坐标 dqx=x-5:dqy=y+187 //这里的IF是判断选择了美女找茬还是选择了普通找茬 If xuanze=1 then //美女找茬 游戏时间条上的一个点的坐标 这个点控制找不同脚本的停止与开始 d3x=x+135:d3y=y+174 //这里定义的是 美女找茬两副图之间的x坐标差 d2qx=509 //这里定义的是 美女找茬第一副图的X坐标终结点 dzx=x+488 //这里定义的是 美女找茬第一副图的Y坐标终结点 dzy=y+633 Else //普通找茬 游戏时间条上的一个点的坐标 标 这个点控制找不同脚本的停止与开始 d3x=x+350:d3y=y+31 //这里定义的是 普通找茬两副图之间的x坐标差 d2qx=393 //这里定义的是 普通找茬第一副图的X坐标终结点 dzx=x+371 //这里定义的是 普通找茬第一副图的Y坐标终结点 dzy=y+464 End If //将起点坐标复制一份 以便等下坐标的回归 dqxf=dqx:dqyf=dqy //用个大循环控制脚本开启后永远执行 While 1 //定义一些控制变量 来达到控制流程的目的 a=1:i=0:i1=0:ak=0:aa=0 //清空屏 Call Plugin.Msg.HideScrTXT() // 这里While 里面的内容是用时间条上的点来控制是否开始找茬 While aa=0 //得到时间条上点的颜色 GC1=GetPixelColor(d3x,d3y) //如果颜色为这两个色 就说明游戏已经开始 这时候就跳出循环执行下面脚本 If gc1="E0ECA0" or gc1="F8B400" then aa=1 Else //如果没有检测到时间条的颜色则加个延迟 然后循环执行直到颜色对才执行下面脚本 Delay 100 End If Wend //这里的While里面的内容是找茬的核心对比部分 While a=1 //获取第一幅图上的点的颜色 GetColor=GetPixelColor(dqx,dqy) //获取第二幅图上的对应 第一幅图的点的颜色 GetColor1=GetPixelColor(dqx+d2qx,dqy) //对比这两个颜色 如果一样则什么也不做 If GetColor1=GetColor then Else //如果两个点不一样 则分别将X坐标存到kk数组 y坐标存到kw数组 然后流程控制i+1 kk(i)=dqx:kw(i)=dqy:i=i+1 //这句可有可无 主要是将i的值显示出来看看执行到什么程度 Call Plugin.Msg.ShowScrTXT(x, y-30, x+300, y+20, "扫描不同中 "&i&"", "0000FF") End If //判断完一个点之后 x坐标加8 dqx=dqx+8 //如果x超出了第一幅图的长度则 x回归到图的左边y坐标加10 If dqx>dzx then dqx=dqxf:dqy=dqy+10 //如果y坐标超出图的下标 则用流程控制变量a=2跳出循环 并且把x,y回归到第一图的左上 ElseIf dqy>dzy a=2:dqx=dqxf:dqy=dqyf End If Wend //这句可有可无 主要是用来显示是否已经点的对比 Call Plugin.Msg.ShowScrTXT(x, y-30, x+200, y+20, "扫描完成 ", "00FF00") //这里的While 是控制将不同的点输出在图片上 因为游戏不断的刷新界面造成显示不能停留所以要循环 While a=2 //用这句将数组kk,kw里面的x,y坐标依次输出在屏幕相应x,y点上 Call Plugin.Msg.ShowScrTXT(kk(i1), kw(i1), kk(i1)+5, kw(i1)+5, "■", "000000") //流程控制变量i1+1 i1=i1+1 //如果i1大于1则数组里的点次输出了一次了 然后让i1归0,好循环显示 If i1>i then i1=0 //点都输出一次就ak+1 ak=ak+1 //如果连续输出20次后 则进行是否已经结束了的判断 If ak>20 then //不管怎样流程控制变量使用以后一定要归0 ak=0 //得到时间条上点的颜色 GC1=GetPixelColor(d3x,d3y) //判断该点颜色是否是 游戏正在执行中的颜色 如果是则不作为 If gc1="E0ECA0" or gc1="F8B400" then