为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

按键精灵教程

2012-04-22 39页 doc 1MB 502阅读

用户头像

is_452564

暂无简介

举报
按键精灵教程 【新手必学】前台找图、专为新手而写【淡蓝】 此脚本是据一位朋友反映而写得 在此分享希望各位新手能够学会 因为是写给新手的、便从最简单的学起:前台 尽可能的详细讲述、如有什么疑问欢迎发信息给我(在帖中回复可能无法注意到) 1、首先我们打开抓抓、复制你的游戏窗口。。(可以先缩小挡在游戏窗口前面的窗口、然后按下Print Screen SysRq键,复制游戏窗口图片。。)接着图像中会出现你的游戏窗口了、 2、这是我们就可以抓图啦、(如何抓图?)对着你需要的图像按下左键拖动划分出你要的图像,接着放开左键就好了。。接着我们选择位图...
按键精灵教程
【新手必学】前台找图、专为新手而写【淡蓝】 此脚本是据一位朋友反映而写得 在此分享希望各位新手能够学会 因为是写给新手的、便从最简单的学起:前台 尽可能的详细讲述、如有什么疑问欢迎发信息给我(在帖中回复可能无法注意到) 1、首先我们打开抓抓、复制你的游戏窗口。。(可以先缩小挡在游戏窗口前面的窗口、然后按下Print Screen SysRq键,复制游戏窗口图片。。)接着图像中会出现你的游戏窗口了、 2、这是我们就可以抓图啦、(如何抓图?)对着你需要的图像按下左键拖动划分出你要的图像,接着放开左键就好了。。接着我们选择位图另存为。。(自己选择一个位置、自己记得住即可>推荐桌面。易找)自己输入文件名、保存图片为BMP。。这样我们就完成第二步了 3、我们这时要把图片添加到附件里面、具体操作>点击按键界面的附件>点击添加>找到你保存的图片>然后点击保存 这样我们又完成第三步添加图片附件。。 4、我们这个时候就可以写找图命令了。首先在颜色/图形命令、把得到指定点颜色改成区域找色,然后按路径找到你的图片、(记住使用附件图片路径中打钩、否则无效)、接着我 插入。。这样我们就完成了找图的命令 5、完成的命令是: FindPic 0,0,1024,768,"Attachment:\未命名.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then End If 【循环找图】教你如何循环找图,查找多图!【总结脚本】 昨天看到的问题帖,估计不少新人会有同样的问题, 特发此贴鼓励新人们学习按键~ 【写法一】 1. Do 2. VBSCall FindPic(746,445,799,570,"Attachment:\马1.bmp",0.8,X1,Y1) 3. VBSCall FindPic(746,445,799,570,"Attachment:\马2.bmp",0.8,X2,Y2) 4. VBSCall FindPic(746,445,799,570,"Attachment:\马3.bmp",0.8,X3,Y3) 5. VBSCall FindPic(746,445,799,570,"Attachment:\马4.bmp",0.8,X4,Y4) 6. Delay 100 7. Select Case true 8. Case x1>=0 and y1>=0 9. x=x1:y=y1 10. Case x2>=0 and y2>=0 11. x=x2:y=y2 12. Case x3>=0 and y3>=0 13. x=x3:y=y3 14. Case x4>=0 and y4>=0 15. x=x4:y=y4 16. End Select 17. If x>0 and y>0 then 18.     MoveTo x+5 y+5 19.     LeftClick 1 20.     Exit do 21. Else 22. End If 23. Loop 【写法二】 1. //首先把bmp格式图片放到附件里 2. Dim a(3) 3. a(0)="Attachment:\马1.bmp" 4. a(1)="Attachment:\马2.bmp" 5. a(2)="Attachment:\马3.bmp" 6. a(3)="Attachment:\马4.bmp" 7. Call 查找图片数组 8. EndScript 9. Sub 查找图片数组 10. For i=0 to 3 11.         VBSCall FindPic(746,445,799,570,a(i),1,x,y) 12.         If x>0 and y>0 13.             MoveTo x+5 y+5 14.             LeftClick 1 15.             Goto 跳出循环 16.         EndIf 17. next 18. Rem 跳出循环 19. End Sub 【写法三】 1. picpath=array("马1","马2","马3","马4") 2. i=0 3. do 4.     FindPic 746,445,799,570,"Attachment:\"&picpath(i)&".bmp",0.8,X,Y 5.     If X > 0 And Y > 0 Then 6.         MoveTo x+5 y+5 7.         LeftClick 1 8.         Exit do   //找到图操作完就跳出循环 9.     End If 10.     i=i+1 11.     If 5=i 12.         i=0 13.     End if 14. loop 【写法四】 1. x1=746 2. y1=445 3. x2=799 4. y2=570 5. //先把上面找图范围写好 6. n=1 7. While 1=1 8.     If n=1 9.         FindPic x1,y1,x2,y2,"Attachment:\马1.bmp",0.8,x,y 10.     End If 11.     If n=2 12.         FindPic x1,y1,x2,y2,"Attachment:\马2.bmp",0.8,x,y 13.     End If 14.     If n=3 15.         FindPic x1,y1,x2,y2,"Attachment:\马3.bmp",0.8,x,y 16.     End If 17.     If n=4 18.         FindPic x1,y1,x2,y2,"Attachment:\马4.bmp",0.8,x,y 19.     End If 20.     //这里可自行添加更多图片判断 21.     If x>0 22.         Goto 找到 23.     End If 24.     n=n+1 25.     If n>4 26.         n=1 27.     End If 28. Wend 29. Rem 找到 30. MoveTo x+5 y+5 31. LeftClick 1 【写法5】 1. DO 2. DELAY 50 3. FOR I=1 TO 4 4. Call FindPic(746,445,799,570,"Attachment:\马" & I & ".bmp",0.8,X1,Y1) 5. IF X1>1 THEN  EXIT FOR 6. NEXT 7. LOOP WHILE X1<1 8. MSGBOX "找到图:" & X1 & "," & Y1 教你如何把一个图多个地方存在的时候如何把他们全部找出来。【淡蓝】 普通的找图我们都会的吧??不会的请去看看视频教程吧。 下面我们就是要查找一个图多个存在时,如何把他们全找出来!? 用大漠插件是可以直接找出的!在不用插件的情况下,按键是没有直接找出的功能的! INCLUDEPICTURE "http://bbs.vrbrothers.com/images/smilies/yct/yct_24.gif" \* MERGEFORMATINET 之前写过一个教程,由于没有图解加上本人的表达能力有限,就连很多高手也不懂我说的是什么意思! 所以在此重新改进下帖子,希望大家都能够正真的理解! 下面为大家举个例子: 在桌面 下载 (93.29 KB) 2011-3-19 10:32 查找 下载 (1.93 KB) 2011-3-19 10:33 ,并将鼠标依次移动到改位置处。设:图片宽:k,高度为:h 首先让我们稍微了解下按键的找图原理: 找图是按从左向右,从上往下的顺序找的图, 按键自带的循环:for y=0 to 768                           for x= 0 to 1024                                坐标每移动一处,并以此点为图片的起始点判断在(x,y,x+k,y+h)区域范围内的各个点是否和需要查找图片的各个点相对应,如果有90%满足(相似度0.9),则找图成功,并将坐标赋值intx,inty,找图结束。这也是为什么我们这么多朋友问如何让他继续找下去的原因了   有些朋友会问,这得花多久呢?! 跟您说,这还真花不了多久 。 下面,我们就是让它继续找下去。 第一步骤:          普通的找图。 FindPic 0,0,1024,768,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then MoveTo intx,inty       //找到第一个图的intx,inty ax=intx by=inty End If 第一步结束 第二步骤:继续查找 示意图: 下载 (92.69 KB) 2011-3-19 10:33 ,深蓝色区域是已经查找完的区域,下面我们就是要让它继续查找还没查找的区域(天空蓝色区域)。 简单的解析下图, 下载 (93.9 KB) 2011-3-19 10:33 ,没查找的区域分为区域1,和区域2.剩下的就是简单的几何问题了。 区域1查找:(区域1其实是一条直线) FindPic ax+1,by,1024,by+1,"Attachment:\txt.bmp",0.9,intX,intY 其实这句错了,大家肯定也是这么想的吧,当初我也是这么想的!因为区域范围一定要大于图片的高度h(除非图片高度为1)。 因此正确的写法应该是: FindPic ax+1,by,1024,by+h,"Attachment:\txt.bmp",0.9,intX,intY  //h为图片高度 示意图: 下载 (93.29 KB) 2011-3-19 10:33 如果在区域1又找到了符合要求的图片,那么就应该返回继续查找剩下的区域1了!又跟第二步骤开始一样了! Rem 继续 Delay 1000 FindPic ax+1,by,1024,by+30,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Delay 1000 ax=intx by=inty MoveTo intx,inty Goto 继续 End If 区域2查找就简单了: FindPic 0,by+1,1024,768,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Delay 1000 ax=intx by=inty MoveTo intx,inty Goto 继续         //如果找到,则这个问题又跟第二步骤开始一样了! End If 顺便提一下,返回标记应在条件里面,只有找到才返回的!写代码的时候请注意哦,别因为粗心大意导致脚本无法实现功能! 下面整理下代码: ax=0 by=0 FindPic 0,0,1024,768,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then MoveTo intx,inty End If Rem 继续 Delay 1000 FindPic ax+1,by,1024,by+30,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Delay 1000 ax=intx by=inty MoveTo intx,inty Goto 继续 End If FindPic 0,by+1,1024,768,"Attachment:\txt.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Delay 1000 ax=intx by=inty MoveTo intx,inty Goto 继续 End If 这样还没结束,我们还可以把第一步骤的代码并到第二步骤里面来,这样就得到了下面的代码 本帖隐藏的需要回复才可以浏览 希望我的表达能力还算过关!{:4_109:} 希望大家都能听的懂我说的意思 下面是 we似曾相识 对于同一个问题不同方法的连接,请大家顺便也去看看他是怎么写的 http://bbs.vrbrothers.com/viewthread.php?tid=213197&extra=page%3D2 桌面1.jpg (93.29 KB) 下载次数:5 2011-3-19 10:33 速度最快的【全屏找图】返回图片个数脚本在这里 UserVar cy="18" "图片高度" Dim ay, bx, by, sTime, qw, op dw=Plugin.Sys.GetScRX()  //dw->屏幕分辨率宽 dh=Plugin.Sys.GetScRY()  //dh->屏幕分辨率高 ax=0:ay = 0:sTime = Timer:bbs = 0 Do FindPic ax, ay, dw, dh, "Attachment:\我.bmp", 1, intX2, intY2 If intX2 > 0 and intY2 > 0 Then bbs=bbs+1:Ux=intX2+1:ay = inty2 + 1 qw=qw&intX2&","&intY2&vbcrlf Else Exit Do End If intX1=1 Do Until intX1<0 FindPic Ux, ay-1, dw, ay-1+cy, "Attachment:\我.bmp", 1, intX1, intY1 If intX1 > 0 and intY1 > 0 Then bbs=bbs+1:Ux=intX1+1 qw = qw & intX1 & "," & intY1 & vbcrlf End If Loop Loop MessageBox "查找到符合条件的图片"& bbs &"张!"&vbcrlf&" "&vbcrlf&"耗时"& Timer-sTime &"秒"&vbcrlf&" "&vbcrlf&"他们的坐标为:"&vbcrlf&qw 新手使用找图找色命令找图失败的原因分析 FindPic 0,0,200,200,"Attachment:\神盾.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Else Msgbox "找到了" End If 第一、也就是上面区域找图命令中的(红色部分)找图范围不正确,图不在该范围内则找不到 第二、路径有误或者附件未添加图片。(蓝色部分)无非有两种情况:1.附件放入图片保存找图。2.指定路径比如"C:\pic.bmp" 第三、找图相似度(0到1之间)(紫色部分)。1:最相似   找不到图请尝试调低相似度, 个人习惯用0.8,经测试0.6就可能有误判了(根据自己实际情况设定)    第四、已经找到自己却不知道(有可能是低级错误,条件句写错,上面的例子就是错的,这样的低级错误应该是很弱很可笑的尽力避免) 当找不到图时,区域找图命令返回坐标-1,-1。 Ifcolor的多重循环判断->多点找色 可以这么写, 为了让更多新人看到.. 代码很短别介意。老鸟请无视 IfColor 520,9, "E69F7F", 0 Then      IfColor 528,9, "E69F7F", 0 Then          IfColor 540,9, "E69F7F", 0 Then              MessageBox "可以这么写的"          End If      End If end if IfColor 中0:等于 1:不等于 2:近似于(这个近似的概念我也不大清楚) [按键精灵8.x]区域多点找色, 建库思想【新手 - 区域循环多点找色教程】 [前言]   本文将以休闲游戏泡泡堂的房号识别为例,向新手们讲解如何使用区域多点找色 和如何循环多点找色, 如用词不当、不确切的表述欢迎及时批评指正。 [寄语]   希望本文内容对新手们学习按键精灵区域多点找色有所帮助。 使用过验证码 识别插件(SR、 SVR、 91VR)的人应该很清楚库的概念了,  其实在用官方插件写脚本 时很多时候我们也可能用到库,所以希望本文能让新手们树立建库思想,写出更好的脚本。 后文中用到的库实际上是两个数组, 分别存放特征码和16进制色值。 [正文]    一、命令名称 FindMutiColor 区域多点找色        命令功能 范围区域内查找多点颜色(注意:这里的多点颜色是相同颜色,16进制值相同,不懂往下看)       下面是按键精灵8.0自带例子:屏幕范围多点找色例子(特征码已删减),范围:从左上到右下       //下面这句在屏幕区域范围内查找多点颜色,       XY = Plugin.Color.FindMutiColor(0, 0, 1024, 768, "FFFFFF", "2|0|FFFFFF,-6|1|FFFFFF,-3|1|FFFFFF", 1) 【说明】这一行命令中红色粗体的"FFFFFF"是你找到的这些点的16进制色值,绿色粗体部分是偏移的点,偏移点的16进制色值 必须与红色粗体部分色值相同,上面一行命令返回左上角第一点颜色位置坐标 【区域多点找色命令所在位置 和 游戏房间号例图】 下载 (25.63 KB) 2011-3-17 22:18 【第一步 - 截图】 用PrscrnSysRq全屏截图,取我们要的区域(房号), 之后在画图工具中编辑 选区我们要的房号的部分(Ctrl+G显示网格, 还可以更细致的选定房号区域) 下载 (29.89 KB) 2011-3-17 22:21 【第二步 - 描点】 将选区的部分保存到桌面(注意将其保存为.bmp格式图片),之后在按键精灵多点找色命令模块下图说明进行操作 下载 (34.01 KB) 2011-3-17 23:01 下载 (33.71 KB) 2011-3-17 23:01 下载 (34.67 KB) 2011-3-17 23:01 下载 (66.62 KB) 2011-3-17 23:01 //完成以上几步后房号"0"就描点好了点击【插入】在按键精灵中看到生成的脚本如下: //描点的数量和命令中代码长度成正比)    XY=Plugin.Color.FindMutiColor(0,0,1024,768,"652D00","4|0|652D00,7|0|652D00,-1|1|652D00,8|1|652D00,-        2|2|652D00,2|2|652D00,4|2|652D00,5|2|652D00,9|2|652D00,-2|7|652D00,2|7|652D00,9|7|652D00,-        2|8|652D00,2|8|652D00,9|8|652D00,-1|9|652D00,8|9|652D00,2|10|652D00",1) //上一行命令中红色的部分可以看作为特征码, "652D00"是所描点的16进制色值         ZB = InStr(XY,"|")         X = Clng(Left(XY, ZB - 1)): Y = Clng(Right(XY, Len(XY) - ZB))   MoveTo X, Y+20  //添加鼠标移动命令方便查看测试结果   Msgbox "鼠标已经移动到X, Y+20坐标位置" //添加提示方便查看测试结果 【第三步 - 测试】 点击插入后的脚本直接进行测试即可,添加一行命令MoveTo执行鼠标移动操作。 看鼠标是否会移动到左上角第一点颜色位置坐标. 测试结果如图 下载 (22.85 KB) 2011-3-17 23:17 说明我们通过多点找色命令找到了房号0的坐标 (如果没找到呢,鼠标应该会移动到坐标(0,20)) 通过上面的三步介绍你应该已经学会了多点找色的基本操作方法。 上面讲解测试已经成功识别了房号中的一位数字"0",房号数字为0~9 剩下的1~9和识别0操作一样逐一描点, 测试即可, 本文开始所说的库的思想其实是循环找色用到的数组, 将命令中的点偏移(或说是特征码)和色值分别放入数组 这个数组就是我们要的库,下面是整理好的库, 也可以有其他写法, 目的相同:循环多点找色 -> 返回数组下标 - > 得到房号的数字 请参考下面整理好的脚本『特征码数组 -> 库(数组) 和 循环找色脚本』 Dim CR(11),UR(11)  //定义两个数组(一个存放色值, 另一个存放特征码) 一共11组, 只发下S、1、2识别看下格式       //房号S       CR(0)="000000"       UR(0)="1|0|000000,2|0|000000,3|0|000000,-4|1|000000,4|1|000000,6|1|000000,-3|2|000000,7|2|000000,-      4|3|000000,0|4|000000,1|4|000000,2|4|000000,3|4|000000,7|5|000000,6|6|000000,5|7|000000"       //房号0       CR(1)="00FFFF"       UR(1)="5|0|00FFFF,-1|1|00FFFF,6|1|00FFFF,-2|3|00FFFF,-1|4|00FFFF,6|4|00FFFF,-2|5|00FFFF,-2|7|00FFFF,6|7|00FFFF"       //房号1       CR(2)="652D00"       UR(2)="2|0|672F00,-1|1|652D00,3|1|672F00,-1|4|672F00,3|4|672F00,-1|5|672F00,0|5|672F00,2|5|672F00,3|5|672F00,-      1|6|672F00,3|6|672F00,-1|9|672F00,3|9|672F00,0|10|672F00,2|10|672F00" //房号2到8       //...(省略内容为2到8色值和特征码, 你只要知道如何获取很容易写全) //房号9 CR(10)="672F00"      UR(10)="-2|2|672F00,2|2|672F00,-9|3|672F00,-5|4|672F00,-7|6|672F00,-2|8|672F00,2|8|672F00,-     8|9|672F00,0|10|672F00" //循环找色命令, 建立库就是为了在下面这行命令中使用 For i=0 to 10 XY=Plugin.Color.FindMutiColor(0,0,1024,768,CR(i), UR(i), 1) If XY<>"-1|-1" then //如果识别到了房号     If i=0 then     Msgbox "识别到字符S"     End If Msgbox "识别到的数字为" & i-1 End If Next 注意:识别区域越小, 识别速度越快。 房号例图3.jpg (43.65 KB) 下载次数:17 2011-3-17 22:22 测试2.jpg (4.47 KB) 下载次数:8 2011-3-17 23:59 测试3.jpg (4.89 KB) 下载次数:8 2011-3-17 23:59 测试4.jpg (5.1 KB) 下载次数:8 2011-3-17 23:59 写给那些卡在找图上的新手,详解固定点找色的强大~! 相信大家看过教程后都想用找图法一展拳脚,但事实并非如愿,因为游戏画面等诸多因素导致找图功能无法实现,或效率太低的问题。   我们用到找图功能一般有两种情况:一种是找固定位置的图案 看是否存在或出现 来判断接下来要执行什么,如果你属于这类,那么我接下来讲的就是替代这种情况;还有一种找图是判断一个比较大的区域内是否存在,如打怪爆出的东西等,此类找图需要根据具体情况找到替换的。看到这里大家应该能弄懂了,我讲解的都是怎样去替代找图的功能,从而让我们的脚本同样强大~! 下载 (17.48 KB) 2011-4-4 21:06 (图一) 这是该命令的位置······ 大家可以清楚的看到有三种情况,等于,不等于和约等于 三种判断情况,大家可以根据具体的情况随意选择 下载 (124.15 KB) 2011-4-4 21:09 (图二)   现在给大家讲解一下具体流程,首先打开按键的抓抓工具,在我们要判断的位置找一个点(该点最好色彩明显), 然后,将该点保存到下来。   以我这个为例 我选择了零上的一个点,它的坐标:564,130  颜色值为:020602 然后大家返回到图一该命令处     就可以调出你刚才保存那点的信息了,然后选好是等于,不等于还是约等于,插入 即可········等于不等于 就不用我说了,至于约等于我也没怎么试过,是用于点的色值与周围点差距不大 的情况,建议大家少用。(约等于是按键自带的一个偏色判断,偏色的色值差很小,对大多真正需要偏色的地方作用 不大,偏色是定点找色的终极形态,也是让定点找色发挥更大作用的凭借,废话少说,至于偏色目前有两种比较好的 办法,这两种我都测试过,第一种是使用插件,比较实用简单的就是大漠的,各种颜色判断命令都把偏色的情况考虑 在内了,第二种就是自己写函数完全靠按键自带的东西,说白了偏色就是对一段字符串进行处理,思路很简单,但是 对于新手来讲,自己写就太困难了,需要对很多函数都熟练运用,这里我们要感谢isaacc,我老哥把这块内容总结了, 做成了lib函数,大家只要添加进按键的lib文件夹下就可以调用了,具体使用方法可以参考下面: http://bbs.vrbrothers.com/viewthread.php?tid=220058,然后没了,掌握了这些,对于找色你就可以算作入 门了,如果你还不满足那就去搞RGB的相关函数,其实偏色可以使用RGB函数将颜色分解出来,进行判断,例如红色, 我们就分解出R然后判断0~255哪个范围段是我们需要的,只要加个if R>200 then 之类的就可以了,就补充这些吧, 争取下次能写个大漠的教程奉献给大家,O(∩_∩)O~) 总结:上述方法虽然大家都觉的很简单,但是如果你在需要找字或找图判断一个条件时,如果能想到这种方法,那 一定会节省大量时间的······为了提高准确性 一个图还可以选择多个点验证,从而确保万无一失。 第一次弄这个东西,希望大家不要见笑,我本来就是个菜鸟,希望对那些刚接触按键的朋友能有帮助,谢谢~! 如果又不懂或疑问,可以联系我,我尽量帮忙,只是能力有限,大家勿笑~! 后台 【命令介绍】所谓后台,就是向窗口发送键盘鼠标消息,只要这个窗口存在,无论是最小化还是隐藏,都可以进行操作 【使用领域】多窗口同时运行、在窗口最小化时也可运行脚本 新手后台教程【新手必学】【详细版、图解】本帖已更新。。【淡蓝】 首先我们都知道后台一定要获取句柄、 1、首先我们要打开抓抓(抓抓的位置在按键正上方) 下载 (5.38 KB) 2011-2-16 12:03 ,然后按句柄 2、然后按f8,获取窗口句柄、看见当前句柄出现数字了吗? 下载 (6.63 KB) 2011-2-16 12:03 看到就再按一下f8。。然后把那个数字复制下来 3、然后我们接着按抓抓的图像,在指定窗口句柄上打钩、然后把数字复制进去 下载 (17.29 KB) 2011-2-16 12:03 。。然后按下复制键、看到图像没有。。是不是只有你所指定的窗口?(如果不是从第一步重新开始) 4、一般的新手只是想做个后台点击。。所以我们只要在图像中找到你所要点击的坐标、然后右键点击,接着把坐标加入点1,记得把坐标记住(格式是:0,0) 下载 (5.52 KB) 2011-2-16 12:09 5、接着我们回到按键的界面、点击全部命令。。就是在左上角下面点点 下载 (17.63 KB) 2011-2-16 12:03 6、然后我们点击按键精灵插件命令。。找到窗口插件然后点击、然后点击找到得到鼠标指向的窗口 插入 下载 (56.44 KB) 2011-2-16 12:03 7、然后找到后台命令。。看见左键单击之类的命令吗? 然后看见下面的输入坐标没有 输入你要点击的坐标(就是刚才你记住的坐标。输进去 从左到右的顺序输入) 插入 下载 (55.58 KB) 2011-2-16 12:03 8、如果想后台按键的话、也在后台命令 然后输入代码就好啦。。 9、完成 下载 (10.09 KB) 2011-2-16 12:03 下面附2个例子给大家学习 后台鼠标单击 Hwnd = Plugin.Window.MousePoint() Call Plugin.Bkgnd.LeftClick(Hwnd, 0, 0)  自行修改下坐标 ________分割线______ 后台键盘操作 Hwnd = Plugin.Window.MousePoint() Call Plugin.Bkgnd.KeyPress(Hwnd, 0)  自行修改下按键码  按键码在基本命令中查询 随便做了2个新手简单案例给大家学习、希望新手技术能够更上一层楼 [命令] 按键精灵后台简明教程(后台找色,后台鼠标点击等) 按键精灵后台简明教程(后台找色,后台鼠标点击等) 使用按键精灵有一段时间了,从前台到后台看了很多帖子,加上自己的勤奋算是成功了,自己制作了一个练级的脚本,经一月余的使用完全正常,按键精灵升级至7.0后,很多需要从论坛下载才能使用的插件都集成了,这对于新手来说是个福音,我才开始使用时,为了找这些插件费了很多周折,现在的新手真是幸福啊!!呵呵,废话少说,下面把我的一些经验和教训在这里与大家分享,希望对“想后台”的朋友有所帮助。 1、游戏句柄 后台的意思就是当窗口被遮盖或移开的时候,仍能够正常的执行脚本动作,所以必须先找到该游戏的窗口句柄,这样可以保证我们编辑的脚本语句有正确的使用方向,获取窗口句柄的方法有很多,我一般使用以下的方法: Dim hwnd Plugin hwnd=Window.MousePoint() Plugin是调用插件命令,凡是调用插件都需要使用这个命令,hwnd就是得到的句柄,Window是插件的名称MousePoint()返回鼠标所在的窗口的句柄 关于窗口这里需要多说几句,以网页游戏为例,鼠标放在标题栏上和放在游戏窗口所得到的句柄是不一样的,游戏窗口是IE的一个子窗口,因此在运行脚本前,将你的鼠标放在游戏窗口的区域内再运行脚本。 得到句柄费函数很多,有兴趣的自己去试试看,不过知道一个就足够了。 2、模拟动作 得到窗口句柄后,你就可以向这个窗口模拟需要的动作了,在这里要用到按键精灵7的插件(既然已经有7了以前的插件就不作介绍了),模拟动作的函数有如下几个 -模拟鼠标点击 Plugin Bkgnd.LeftClick(句柄,横坐标,纵坐标) //模拟鼠标左键点击 Plugin Bkgnd.RightClick(句柄,横坐标,纵坐标) //模拟鼠标右键点击 其中的句柄就是上面我们已经得到的句柄,这里的横坐标和纵坐标是针对游戏窗口,而不是针对屏幕的(看晕了吧^_^关于这一点足足困扰了我一个礼拜的时间才弄明白)。 屏幕坐标,是以屏幕左上角为基点(0,0),右下角的坐标是和屏幕分辨率有关的,而窗口坐标,不是在屏幕的左上角,例如word中的编辑窗口的0,0位置是在工具栏下面的,看不懂也没关系,你只要记住下面的方法就行了,首先在得到窗口句柄后加上如下的代码: Plugin s = Window.GetClientRect(hwnd) XYArray = Split(s, "|", -1, 1) dx = XYArray(0) dy = XYarray(1) 其次,在横坐标和纵坐标的后面都分别减去dx和dy就行了,为什么!!不用去管他,反正这样做不会错,举例说明 例如你抓点得到的横坐标是x,纵坐标是y,那么模拟鼠标左键点击的语句应该是这样的: Plugin Bkgnd.LeftClick(句柄x-dx,y-dy) -模拟键盘动作 Plugin Bkgnd.KeyPress(句柄,按键码) //模拟键盘动作 这里的按键码可以很容易的在按键精灵中查到,包括组合键 -输入字符串 Plugin Window.SendString(句柄,字符串) 这个函数在登陆和喊话时是非常有用的,其中的字符串可以是字符串变量 3、后台找色 后台脚本尽量少用找色语句,否则你的游戏将“卡巴死机”,即使少用也会出现很多的“马赛克”幸运的是不影响找色功能,即使游戏图像已经乱七八糟,既然是要后台操作,难看就难看吧^_^。 Plugin c1=BkgndColor.GetPixelColor(hwnd,631-dx,121-dy) 强烈建议用这个函数,至于什么区域找色,区域照图之类,如果你的电脑速度足够快再去尝试吧。 找色是有技巧的,一定要找到一个不同画面分别对应不同颜色的点,当然只有一个点是不可靠的。我的思路是,找到几个点的颜色值记录下来,再根据这几个点的不同组合来决定脚本的走向,采取这种方法后,我在游戏时已经基本可以看到大体的画面了。 【小若】后台判断颜色、【淡蓝】 【小若】写的教程一向是以新手为准            所以命令都会很简单 希望新手们能够学会 前台的判断颜色是:IfColor 0,0,"0",0 Then Else End If 这个相信新手都已经学会了、所以我下面将的是后台判断颜色 首先我们要获得句柄、关于这个小若已经在前面教程教过了、所以就跳过了 我们要得到一个坐标的颜色值和坐标 例如:我们打怪的时候、经常用到判断是否进入战斗场面 这时便要用到了、 我们先要获取战斗场面的一个点、而不是战斗场外 如何获取? 右击某坐标加入点1 我们可以看到点1中出现了坐标以及颜色值、把它记下来 接着我们在按键精灵插件中的后台插件中找到“得到指定颜色” 下载 (61.28 KB) 2011-2-21 02:36 然后输入点1的坐标 接着我们返回到基本命令 在表达式中输入命令GetColor="(颜色值)" 把括号里面的颜色值改为点1的颜色值、注意颜色值必须为大写、还有颜色值的符号也要注意、不然会错误 这样我们就完成判断了 完成的命令例子:GetColor = Plugin.Bkgnd.GetPixelColor(Hwnd, 0, 0) If GetColor="FFFFFF" Then End If 给新手们一点后台批量登录经验 有些新手对批量登录没有经验做 今天我就把我的一点经验分享下把 大侠们看见不要笑了~  如果有错 勿介意 1. //下面这段指令是说在电脑上找标题为(无标题 - 记事本)的句柄,一直找到并赋值到Hwnd里面 2. Do 3. Hwnd = Plugin.Window.Find(0, "无标题 - 记事本") 4. if Hwnd<>0 then 5. exit do 6. end if 7. loop 8. //这里就是不要操作的脚本动作(假如我们后台按Tab)且加上点延迟 9. Delay 200 10. Call Plugin.Bkgnd.KeyPress(Hwnd, 9) 11. //输入你的账号,且加上点延迟 12. Delay 200 13. Call Plugin.Bkgnd.SendString(Hwnd, "按键精灵") 14. //再输入密码 15. Delay 200 16. Call Plugin.Bkgnd.KeyPress(Hwnd, 9) 17. Delay 200 18. Call Plugin.Bkgnd.SendString(Hwnd, "ajjl") 19. //确定 20. Call Plugin.Bkgnd.KeyPress(Hwnd, 13) 下面是我告诉新手们不用VB怎么写路径  虽然我也是新手 呵呵 1. //其实有的朋友问我有什么办法不用VB些路径没,其实很简单,我们就用自定义就可以了。 2. UserVar lj="C:\Program Files\按键精灵8\按键精灵8.exe" "程序的路径" 3. //下面这里是调用程序可以不加双引号的 4. RunApp lj 小精灵限制使用时间脚本 CALL  时间限制 //此处接正式脚本 //-------------- EndScript Sub 时间限制     VBSBegin         ' //获取百度原始时间         Set XmlHttp = CreateObject("Microsoft.XMLHTTP")         XmlHttp.Open "Get", "http://www.baidu.com/", False         XmlHttp.send         datetxt=XmlHttp.getResponseHeader("Date")         Set XmlHttp = Nothing         ' //将获取到的原始时间进行格式化 2010年03月11日 03:09:52         temdate = Split(datetxt, ",")         tempvar = Replace(temdate(1), "GMT", "")         temptim = Split(tempvar, " ")         Select Case temptim(2)         Case "Jan":         mon = "01"         Case "Feb":         mon = "02"         Case "Mar":         mon = "03"         Case "Apr":         mon = "04"         Case "Mar":         mon = "05"         Case "Jun":         mon = "06"         Case "Jul":         mon = "07"         Case "Aug":         mon = "08"         Case "Sep":         mon = "09"         Case "Oct":         mon = "10"         Case "Nov":         mon = "11"         Case "Dec":         mon = "12"         End Select         '//将获取到的时间转换为北京时间+8小时         timeGMT = CDate(temptim(3) & "年" & mon & "月" & temptim(1) & "日" & temptim(4))         GetNetTime = DateAdd("h",8, timeGMT)     VBSEnd     ShiJian = (Year(GetNetTime) & Right("0" & Month(GetNetTime),2) & Right("0" & Day(GetNetTime),2) & Right("0" & Hour(GetNetTime),2) & Right("0" & Minute(GetNetTime),2))     If ShiJian=189912300000         MessageBox "没有连接网络或者系统日期时间不正确!!"         EndScript //以下数字就是脚本到期时间     ElseIf ShiJian<201003111230         Delay 100     Else         MessageBox "试用期已过,请联系QQ:XXXXXXXX 购买,谢谢!"         EndScript     End If End sub 提供给新手的一个命令【时间限制源码】专家也可以来、给点意见【淡蓝】 今天无聊去逛逛论坛、 接着看到时间限制、但是我所看的限制都相对来说比较长 所以我特发布一个限制、绝对能用 如果无法用的话、请向我反馈 当然如果好用的话、同时也希望你回帖告诉别人,让别人也能用上 最后欢迎大家向我反应问题、或者提供意见  谢谢 1. DqTime = lib.网络.获取网络时间() 2. //获取网络时间,得到的时间格式为:2000-1-1 12:00:00 3. zzsj="2010-12-31 23:59:59" 4. //zzsj=终止时间 终止时间为脚本使用限定的最后时间! 5. If CDate(DqTime)方案
一: [WaitKey存入按键码并判断] 1. Rem 输入密码 2. MessageBox "请在回车后输入密码!" 3. WaitKey Key1 4. WaitKey Key2 5. WaitKey Key3 6. WaitKey Key4 7. WaitKey Key5 8. //下面的=后是按键码自行修改 9. If key1=32 and key2=32 and key3=32 and key4=32 and key5=32 10.     MessageBox "密码正确,欢迎使用!" 11.     Goto 验证通过 12. Else 13.     MessageBox "密码错误!" 14.     Goto 输入密码 15.     EndScript 16. EndIf 17. Rem 验证通过 方案二: [VBS Inputbox("内容","提示")的使用] 1. Dim mm 2. mm=Inputbox("请输入密码后, 点击确定","身份验证") 3. //下面一行字符串为密码可自行修改 4. If mm="123456" then 5. Msgbox "密码正确, 验证通过!" 6. ElseIf mm="" then 7. Msgbox "输入不能为空!" 8. EndScript 9. Else 10. Msgbox "密码错误, 验证失败!" 11. EndScript 12. End If 13. //接后面的程序 补一套超简洁方案(循环和WaitKey配合) 1. Do  //密码3个空格32是空格的按键码(可自行修改) 2. While WaitKey = 32 3.     While WaitKey = 32 4.         While WaitKey=32 5.           Exit Do 6.         Wend 7.     Wend 8. Wend 9. MessageBox "密码输入有误! 请重新输入" 10. Loop 11. MessageBox "密钥正确,已通过验证!" 多线程限制使用精灵时间原码 DimEnv c a = lib.网络.获取网络时间() b="2010-11-2 0:00" c=DateDiff("n",a,b) If c>0 Then     BeginThread 开始计时     Goto 开始执行脚本 End If MessageBox "版本期限以到,请联系作者" EndScript Rem 开始执行脚本 //主程式内容 //.......... //.......... Goto 开始执行脚本 Sub 开始计时()     Delay 60000*c     //第一方案命令:Call Plugin.Sys.ExitOS(1)意思时间到直接关机     //第二方案命令ockMouse意思锁定鼠标,不够通用性     //第三方案VB:懂VB的可以去除设置热键工能,用停止精灵的热键命令,不建意新手使用     //第四方案命令:Call Plugin.Memory.TerminateProc(Hwnd)意思是结束进程(Hwnd)句柄,用这个命令在主程式内容前先用命令:Hwnd = Plugin.Window.Find ("#32770",0)意思得到精灵的窗口句柄(有侍你的忧化)     //第..方案:.......等侍发现 End Sub 多线程 【命令介绍】可以使脚本边做某事边干某事,就是一心二用或者三用,或更多 【使用领域】所有按键脚本 单脚本多线程实现多开,想学习多线程的不要错过 1. UserVar k=DropList{"单开":1|"双开":2|"三开":3|"四开":4|"五开":5}=1 "设置窗口数" 2. Sub 多线程 3. ux="0" 4. //采集窗口句柄 5. fs=Plugin.Window.MousePoint() 6. Call 循环() 7. End Sub 8. d=0 9. //当循环条件成立的时候,反复执行循环体 10. While d<=k-1 11. MessageBox "确定后5秒内选择窗口" 12. Delay 5000 13. BeginThread 多线程 14. //激活下一个窗口 15. d=d+1 16. Wend 17. Sub 循环() 18. Dim uy 19. uy=1 20. yhm=InputBox("请输入用户名","用户名") 21. While 0<1 22. Plugin.Bkgnd.SendString fs,ux&"发送成功"&yhm&""&"线程"&fs 23. Plugin.Bkgnd.KeyPress fs,13 24. Delay 5000 25. Wend 26. End Sub 27. Do 28. Delay 500 29. Loop 30. EndScript 【江中游】多线程实战,最简单明了的教程(不再神秘的多线程) 论坛上关于多线程的教程很多,但多是越弄越糊涂,反而给多线程加上了神秘的面纱,现在我用实战的方法给大家讲解一下: 先说下多线程:(我理解的可能有一定的错误,请大家多提意见) 1、多线程就是多个子程序!本人感觉线程=子程序! 2、一般情况下调用子程序用CALL,但是指运行了一个子程序后再运行另一个;如果想两个子程序同
/
本文档为【按键精灵教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索