【新手必学】前台找图、专为新手而写【淡蓝】
此脚本是据一位朋友反映而写得
在此分享希望各位新手能够学会
因为是写给新手的、便从最简单的学起:前台
尽可能的详细讲述、如有什么疑问欢迎发信息给我(在帖中回复可能无法注意到)
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,但是指运行了一个子程序后再运行另一个;如果想两个子程序同