按键精灵脚本制作教程能制作考验眼力的脚本吗

按键精灵学习引导中心 _ 脚本制作教程 - 按键精灵论坛
腾讯微博:
软件版本:2014.03软件大小:71.2M更新时间:10-25
软件版本:3.1.5软件大小:52.1M更新时间:10-24
软件版本:1.2.3软件大小:29.2M更新时间:09-02
软件版本:1.0.1软件大小:11.1M更新时间:10-19
查看: 7507|回复: 21
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
按键精灵学习引导中心学习中心的介绍与作用:如果您还在迷茫,不知如何进步,那么您来到这里都可以找到新的学习方向,无论您处于什么水平或层次。按键精灵一级纯正菜鸟:顾名思义,如果您想了解脚本,并且使用自己编写出的脚本来解放双手,希望这里将会是您的启蒙。掌握知识:了解按键精灵周边产品信息,对脚本的概念有个基本的认知,可以编写较为简单的脚本,实现基本的键鼠操作,鼠标连点或键盘连按,图像识别操作。1、按键精灵是什么。按键精灵的宗旨:一键启动,解放双手!您所在的用户组无法下载或查看附件按键精灵可以帮您操作电脑,支持动作录制和回放功能。不需要任何编程知识就可以做出功能强大的脚本。只要您在电脑前用双手可以完成的动作,按键精灵都可以替您完成。按键精灵内置上百个命令,提供全界面化的操作。脚本还可以生成独立的小精灵软件,发给朋友分享。放飞您的双手,点亮您的创意,自己做软件,也可以如此简单!按键精灵提供了强大的插件功能扩展,已经有数百位高手制作了上千个插件命令供您使用。只有您想不到的功能,没有您找不到的功能。按键精灵已推出通用的小精灵注册系统以及网络游戏专用的简单游脚本销售平台,脚本不再是自娱自乐的玩具,而是您创业的利器。视频:2、从录制功能上了解按键是如何进行键鼠操作模拟。按键精灵可以帮您操作电脑,支持动作录制和回放功能。不需要任何编程知识就可以做出功能强大的脚本。只要您在电脑前用双手可以完成的动作,按键精灵都可以替您完成。在主界面按下“录制”按钮即可进入录制界面
录制工具的介绍:录制工具的使用:视频:3、基本命令讲解按键精灵内置上百个命令,提供全界面化的操作,可以实现基本的键鼠操作,图色识别,组合成一个灵活的脚本来代替您完成那些枯燥无味的重复操作。键盘命令介绍:鼠标命令介绍:制作一个鼠标连点器:视频:控制命令介绍:IfColor命令介绍:4、标记跳转实现脚本循环执行鼠标连点功能鼠标连点源码Rem 开始'标记一个记号
LeftClick 1'鼠标左键点击
Delay 500'延时500毫秒,就是半秒
Goto 开始'返回之前标记的记号“开始”
复制代码提示:这里“开始”只是一个标记代号,用来后面Goto命令找到这个标记跳回。*标识符命名规则:视频:5、制作按键小精灵按键精灵“小精灵”是把按键精灵中已编写完成的脚本打包生成一个可单独的exe程序,便于传播以及提供给他人使用。图文:视频:按键精灵二级新手略懂:如果想让您的脚本更加智能,可以处理各种意外情况并做出您设定的处理方案,那么请进来看看。掌握知识:学会基础的条件判断,让脚本可以判断各种情况执行不同的操作,显得更加智能,实现基本自动打怪、定时操作、补血补篮、自动采集等等功能。1、标识符命名规则与关键字的讲解标识符命名:第一个为英文大、小写字母,后面跟着若干数字、英文大小写字母,下划线'_',总长度不要超过255个。标识符不分字母大小写。另外,在电脑语言中,预先定义了一些标识符,以作专门用途,我们称之为关键字,所以,您命名的标识符不能与关键字相同。还有一种情况也必须注意,那就是在同一个作用域内不允许定义相同的标识符。我们也支持中文名字。例:W_absd1234 就是一个正确的标识符A12@34 就是一个错误的标识符,因为字符@不能组成标识符1234 就是一个错误的标识符,因为它不是以字母打头LLLLl 就是一个正确的标识符LLlll 与 LLLLl指的是同一个标识符。ab2cd3ef4 就是一个正确的标识符AB2cd3ef4 与 ab2cd3ef4指的是同一个标识符中国龙 也是一个正确的标识符if 就是一个错误的标识符,因为它是一个关键字。*如果在按键精灵中命名时,名字与上表列出的关键字相同,在调试或运行时会提示标识符或符号错误。标识符百科:*关键字与标识符的约定:*关键字列表查阅:2、常量、变量与自定义变量的讲解*如果您不了解,就请您把它读一遍即可~什么是常量:什么是变量:什么是自定义变量:什么是脚本注释:什么是调试输出:3、条件判断、脚本停止与脚本重置。If … ElseIf … Else … End If:Select Case:EndScript:强制结束脚本的执行,在这个语句之后的所有命令都不会执行。ExitScript:强制结束脚本的执行,包括子线程中,在这个语句之后的所有命令都不会执行。RestartScript:强制结束脚本的执行,包括子线程中,重新启动脚本运行。4、循环语句应用,标记跳转的缺点介绍。(1)For …… Next:(2)While …… Wend:(3)Do …… Loop:(4)Rem …… Goto:*重要提示,建议认真看完。goto语句的争论:在60年代末和70年代初,关于GOTO语句的用法的争论比较激烈。主张从高级程序语言中去掉GOTO语句的人认为,GOTO语句是对程序结构影响最大的一种有害的语句,他们的主要理由是:GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错。去掉GOTO语句后,可直接从程序结构上反映程序运行的过程。这样,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明。持反对意见的人认为,GOTO语句使用起来比较灵活,而且有些情形能提高程序的效率。若完全删去GOTO语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量。   关于goto语句的解决方法:1974年,D·E·克努斯对于GOTO语句争论作了全面公正的评述,其基本观点是:不加限制地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。但在另外一些情况下,为了提高程序的效率,同时又不至于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的。用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句。”从此,使这场长达10年之久的争论得以平息。后来,G·加科皮尼和C·波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。百度相关介绍:5、子程序与函数语句的应用与调用。(1)Sub …… End Sub:(2)Function …… End Function:(3)Call 调用过程:(4) OnScriptExit:(5) OnScriptLoad:局部变量定义使用演示例子与本小节例子演示:变量是一段有名字的连续存储空间。在源代码中通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。 变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。全局变量也称为外部变量,它是在外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。指在程序中,只在特定过程或函数中可以访问的变量,是相对与全局变量而言的。6、全部命令官方插件命令的介绍与应用。系统窗口后台控制颜色内存进程文件多媒体图像加解密办公文档网络网页控制台信息提示系统信息后台取色找色颜色(增加)WQM按键精灵浏览器介绍网页按键精灵是什么:网页元素特征字符串:Html系列命令使用技巧:机箱报警例子:window插件获取窗口坐标:WQM浏览与Web插件配合例子:按键精灵三级初期入门:让您的脚本功能更加丰富,增加精简美观的设置界面,更加精确设置功能。掌握知识:对QUI界面的基础应用,增加完善的界面设置,学会编辑更为复杂的代码逻辑判断,对变量以及数据类型有足够的了解,实现智能防卡打怪、定点或多点坐标打怪、简单自动任务功能、验证图像识别报警等等功能。1、QUI界面基础应用祥解。QUI介绍:什么是QUI:(1)控件“指针”:(2)控件“标签”:(3)控件“输入框”:(4)控件“按钮”:(5)控件“单选框”:暂缺(6)控件“多选框”:(7)控件“组合框”:(8)控件“图像”:(9)控件“下拉框”:(10)控件“选项卡”:(11)控件“容器”:(12)控件“定时器”:实战例子暂空2、标准VBS命令介绍。(1)常数:(2)函数:①数学函数②字符串函数③数组函数④类型转换函数⑤时间日期函数⑥其他函数(3)方法:(4)对象:(5)运算符:(6)属性:(7)语句:函数小例子3、基础结构规范介绍,例子讲解。1、变量名命名规范统一格式的重要性。'自定义变量,常用类型有三种。'字符串 txt_UserVar txt_hp=30 "当HP<多少%时,使用红药"
UserVar txt_mp=30 "当MP<多少%时,使用蓝药"
'下拉框 lis_UserVar lis_hpkey=DropList{"关闭喝药(点击设置)":0|"F1":1|"F2":2|"F3":3|"F4":4|"F5":5|"F6":6|"F7":7|"F8":8}=0 "按键喝红药"'勾选框 val_UserVar val_hp=DropList{"关闭喝药":0|"开启喝药":1}=1 "是否开启喝药设置"'////////////////////////////////////////////////////////////////////////////////'代码中执行的变量,有以下几种。'字符串类型 str_'数组类型 arr_'临时类型 temp_'数值类型 num_'还有临时小范围应用的变量 For i = 0 To 9
'……NextFor i_x = 0 To 9
For i_y = 0 To 9
Next'临时记录数值常用变量名n '临时记录坐标常用变量名x与y2、变量使用规范。3、Function与Sub的优点缺点。内容描述介绍与各个例子暂空。4、实践内容引导练习。按键精灵实验室,通过图色识别判断数字、文字等字符。跳舞例子:背包物品格子过滤例子:单点颜色识别判断数字:多点找色判断数字:按键精灵四级1、多线程结构教程例子讲解,环境变量与多线程的应用讲解。多线程操控多个窗口同步执行例子:多线程多开窗口同步执行与子线程间的数值如何传递:单线程启动与停止:多线程五开操作:环境变量环境是一个具有特定名字的对象,它包含了一个或者多个应用所将使用到的信息。例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。2、VBScript编程系统学习。VBScript介绍:VBScript大全:VBScript例子:按键精灵五级1、API介绍大全,可百度相关资料。API介绍:API大全:API例子:提示:更多例子可以直接查看“按键精灵→全部命令→我的命令”中介绍的常用API命令例子。2、各种大型脚本的结构例子解析并借鉴。打怪主循环结构例子:自动任务脚本代码结构例子:采集脚本代码结构例子:按键精灵六级1、拓展类实践。高级例子3~10个,从经典推荐板块中筛选:如:验证码图像识别、编写游戏俄罗斯方块等……A*算法1:拓扑寻路、A*算法:用按键编写俄罗斯方块:
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
条件判断单点颜色识别。命令名称IfColor 颜色判断命令功能判断屏幕某点的颜色命令参数参数1 整数型,屏幕X坐标 参数2 整数型,屏幕Y坐标 参数3 字符串型,颜色16进制值 参数4 整数型,判断条件返 回 值无脚本例子按键精灵8及以上语法
例子1:a = 1 : b = 1
IfColor 650, 118, "78F0E8", 2 Then
MessageBox "a"
ElseIf b = a Then
MessageBox "b"
复制代码例子2:a = 1 : b = 1
IfColor 650, 118, "78F0E8", 2 Then
MessageBox "a"
ElseIf b = a Then
MessageBox "b"
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
局部变量定义使用演示例子Dim a
MessageBox "这里是外面a=" & a
Call 函数()
MessageBox "这里是外面a=" & a
Function 函数()
MessageBox "这里是里面范围使用a=" & a
End Function
复制代码本小节例子演示使用Randomize命令,配合Rnd函数生成一个随机数字,然后大家来测试下几次可以猜中答案。以下有使用到的新命令,都属于比较常用到的VBS命令中的函数。Rnd函数命令介绍:Int函数命令介绍:IsNumeric函数命令介绍:InputBox函数命令介绍:Randomize'使用 number 参数初始化 Rnd 函数的随机数生成器,赋给它新的种子值。如果省略 number,则使用系统计时器返回的值作为新的种子值。
n = Int(101 * Rnd)'返回随机数字,范围0~100
TracePrint n'调试中用来查看相关变量的值
temp = InputBox("猜数字,当前答案范围是(" & a & "~" & b & ")")
temp = Int(temp)'由于InputBox函数返回值类型为字符串,需要使用Int数学函数进行类型转换才可进行变量之间的对比。
MessageBox "输入范围超出(" & a & "~" & b & "),请重新输入!"
ElseIf temp >= 0 and temp <= 100 Then
num = num + 1'记录猜测次数
TracePrint temp & "|" & n
If temp > n Then
MessageBox temp & "大于答案!范围缩小(" & a & "~" & b & ")"
ElseIf temp < n Then
MessageBox temp & "小于于答案!范围缩小(" & a & "~" & b & ")"
ElseIf temp = n Then
MessageBox "恭喜您!才对了!猜测次数为:" & num
MessageBox "输入字符非纯数字!请重新输入!"
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
机箱报警例子第一种:Do
复制代码第二种:Do
//下面这句是音阶(标准(M))音符(DO(1))节拍(1/16拍)
Call Plugin.Media.Beep(523, 200)
//下面这句是音阶(标准(M))音符(RE(2))节拍(1/16拍)
Call Plugin.Media.Beep(578, 200)
//下面这句是音阶(标准(M))音符(MI(3))节拍(1/16拍)
Call Plugin.Media.Beep(659, 200)
//下面这句是音阶(标准(M))音符(FA(4))节拍(1/16拍)
Call Plugin.Media.Beep(698, 200)
//下面这句是音阶(标准(M))音符(SO(5))节拍(1/16拍)
Call Plugin.Media.Beep(784, 200)
//下面这句是音阶(标准(M))音符(LA(6))节拍(1/16拍)
Call Plugin.Media.Beep(880, 200)
//下面这句是音阶(标准(M))音符(SI(7))节拍(1/16拍)
Call Plugin.Media.Beep(988, 200)
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
window插件获取窗口坐标Call RunApp("notepad.exe")
Delay 1500
//0表示忽略
//下面这句是查找窗口类名("Notepad")或者标题(0),返回找到的句柄Hwnd
Dim Hwnd, str_win
Hwnd = Plugin.Window.Find("Notepad", 0)
//下面这句是得到窗口句柄的客户区大小
str_win = Plugin.Window.GetClientRect(Hwnd)
TracePrint "得到窗口句柄的客户区大小为:" & str_win
//下面这句用于分割字符串,将横坐标和纵坐标分成两个字符串
Dim arr_win, win_a, win_b, win_c, win_d
arr_win = Split(str_win, "|")
//下面这句将字符串转换成数值
win_a = Clng(MyArray(0)) : win_b = Clng(MyArray(1))
win_c = Clng(MyArray(2)) : win_d = Clng(MyArray(3))
MessageBox "窗口左上角坐标:" & win_a & "," & win_b
MessageBox "窗口右下角坐标:" & win_c & "," & win_d
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
WQM浏览与Web插件配合例子Call Plugin.Web.Bind("wqm.exe")
Call Plugin.Web.Go("/")
Delay 3000
Call Plugin.Web.HtmlInput("按键精灵", "id:kw")
Txt = Plugin.Web.HtmlGet("value", "id:kw")
MessageBox "您输入了[" & Txt & "]点击搜索!"
Call Plugin.Web.HtmlClick("id:su")
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
画圆例子:Call 画圆(500, 500)
EndScript'脚本停止,下面是函数内容,不需要执行,上面执行中可调用。
Function 画圆(x, y)
'定义局部使用变量,当执行命令离开该Function的时候,与外部同名变量的值不会有干扰
Do While n < 3.1415926 * 2
MoveTo x + r * cos(n), y - r * sin(n)
n = n + 1 / r'增加偏移
Delay 3'每个点移动间隔
End Function
复制代码获取某月天数例子:TracePrint GetDateLong("2012-08")
Function GetDateLong(str)
Dim arr, nian, yue
arr = Split(str, "-")
nian = Int(arr(0))
If Int(arr(1)) = 12 Then
nian = nian + 1
yue = Int(arr(1)) + 1
GetDateLong = DateDiff("d", str & "-01 上午 00:00:00", nian & "-" & yue & "-01 上午 00:00:00")
End Function
复制代码获取一个范围内的随机整数Randomize
MessageBox Getrandom(50, 100)
Function Getrandom(a, b)
Getrandom = Int((b - a + 1) * Rnd) + a
End Function
复制代码随机获取10个整数存为数组,并过滤数组中的值取得最小5个值:Randomize
Dim arr_num(9)
For i = 0 To UBound(arr_num)
arr_num(i) = Round(20 * Rnd + 1, 4)
TracePrint arr_num(i)
Dim temp, str
str = vbNullString
temp = arr_num(0)
For i = 1 To UBound(arr_num)
If InStr(str, arr_num(i)) = 0 Then
If temp > arr_num(i) Then temp = arr_num(i)
If str = vbNullString Then
str = temp
str = str & "|" & temp
TracePrint str
复制代码执行带移动轨迹的鼠标移动例子:MoveToXY 100, 500
Function MoveToXY(x, y)
If x < 0 Then
ElseIf x > Plugin.Sys.GetScRX() Then
x = Plugin.Sys.GetScRX()
If y < 0 Then
ElseIf y > Plugin.Sys.GetScRY() Then
y = Plugin.Sys.GetScRY()
GetCursorPos tempx, tempy
Do While tempx 过滤获取字符串中数值整数的例子: x or tempy 计算数组平均值: y
If tempx > x Then
MoveR - 1 , 0
ElseIf tempx < x Then
MoveR 1, 0
If tempy > y Then
MoveR 0, - 1
ElseIf tempy < y Then
MoveR 0, 1
GetCursorPos tempx, tempy
End Function
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
跳舞例子:'定义一个变量用来记录句柄数值
'由于实验室演示是个网页flash窗口,所以这里我们用获取鼠标指向窗口的句柄,以免出错。
Hwnd = Plugin.Window.MousePoint()
'为了核对获取的句柄是否是要测试的窗口,我们可以用按键抓抓工具使用获取下该窗口相关信息
'得到窗口类名为 MacromediaFlashPlayerActiveX 标题为空,那么直接判断下类名是否正确即可确认。
'以下是通过窗口句柄得到类名进行对比,不相等则会激活以下命令终止脚本。
'GetClass命令功能介绍,请在左边全部命令中搜索查阅。
If "MacromediaFlashPlayerActiveX"
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
背包物品格子过滤例子:Dim intX, intY
'背包特征,判断“主”字,用来定位
arr_Fm_Bag = array("5AC3EF", "-4|3|6BC3E7,-2|3|6BC3E7,0|3|5AC3EF,2|3|5AC3EF,-2|6|4A96B5,0|6|63D7FF,3|6||9|5AC3EF,-5|10|3F7C92,3|10|5AC3EF,5|11|5ABADE")
'背包要判断物品数组
Dim arr_Fm_WuPin(0)
arr_Fm_WuPin(0) = array("526D08", "-1|-15|92B870,1|-15|CED3D6,0|-14|8CBE73,-1|-13|5D7C15,1|-13|9CC37B,-2|-7|CEA294,2|-7|A7C47B,2|-4|7BBA52,-2|-4|8EAE55,-3|2|94B663,0|2|97AD5B,3|2|B5B376,3|4|B5BA84,0|4|D6D4D3,-2|6|849447")
'全局定义变量,这里定义主要是让自己知道哪些变量是全局使用,以免重复命令,默认的变量就是全局类型。
Dim Hwnd, arr_win, win_a, win_b, win_c, win_d
Hwnd = Plugin.Window.Foreground()
'获取窗口坐标大小
arr_win = Plugin.Window.GetClientRect(Hwnd)
win_a = Int(arr_win(0))
win_b = Int(arr_win(1))
win_x = Int(arr_win(2))
win_y = Int(arr_win(3))
win_c = win_x + win_a
win_d = win_y + win_b
If FindBag() = True Then
MessageBox "发现物品"
/////////////////////////分割线/////////////////////////
Function FindBag()
FindBag = False
Dim x, y, i_x, i_y, i_pic
If Fm(win_a, win_b, win_c, win_d, arr_Fm_Bag) = True Then'判断背包界面是否存在,判断那“主”字。
x = intX - 251 : y = intY - 192'定位背包窗口物品格式的起点
For i_y = 0 To 4'背包物品五行
For i_x = 0 To 7'背包物品8列
For i_pic = 0 To UBound(arr_Fm_WuPin)'循环过滤判断每个特征是否存在
If Fm(x + i_x * 38, y + i_y * 38, x + 38 + i_x * 38, y + 38 + i_y * 38, arr_Fm_WuPin(i_pic)) = True Then
TracePrint "发现物品,坐标为:" & intX & "," & intY
FindBag = True
Exit Function'跳出函数
End Function
Function Fm(a, b, c, d, arr_Fm)
Fm = False : intX = - 1
: intY = - 1
Dim str, arr
str = Plugin.Color.FindMutiColorEx(a, b, c, d, arr_Fm(0), arr_Fm(1), 0.9, 0)
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
单点颜色识别判断数字:'赋值下十个特征码,开头代码执行一次就可以了,以下是8*5的数字特征
NO0="1110"
NO1="1110"
NO2="1111"
NO3="1110"
NO4="0011"
NO5="1110"
NO6="1110"
NO7="0100"
NO8="1110"
NO9 = "1110"
If GetShu(687, 469, 6, 3, "CCCCCC") >= 100 Then
'条件满足,执行相关操作
EndScript'脚本结束
'以下是写好的函数模块,写好基本就不用修改了,需要的时候调用执行即可
Function GetShu(x, y, z, n, col)'传入要识别的数字左上角坐标xy,间距z,数量n,字体颜色col
GetShu = ""
Dim code, temp_x, i_x, i_y, num
For temp_x = 0 To n - 1
For i_y = 0 To 7'字高8像素
For i_x = 0 To 4'字宽5像素
If GetPixelColor(x + i_x + temp_x * z, y + i_y) = col Then
code = code & "1"
code = code & "0"
If code = NO0 Then
ElseIf code = NO1 Then
ElseIf code = NO2 Then
ElseIf code = NO3 Then
ElseIf code = NO4 Then
ElseIf code = NO5 Then
ElseIf code = NO6 Then
ElseIf code = NO7 Then
ElseIf code = NO8 Then
ElseIf code = NO9 Then
GetShu = GetShu & num
If IsNumeric(GetShu) = True Then
GetShu = Int(GetShu)'识别完整转换为数值类型
GetShu = - 1'有数字认不出来,获取不完整返回-1
End Function
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
多线程操控多个窗口同步执行例子:RunApp "notepad.exe"
RunApp "notepad.exe"
RunApp "notepad.exe"
Delay 2000
Dimenv temp_Hwnd
temp_Hwnd = 0
Dim str, arr, i
str = Plugin.Window.Search("无标题 - 记事本")
arr = Split(str, "|")
For i = 0 To UBound(arr) - 1
temp_Hwnd = Plugin.Window.FindEx(arr(i), 0, "Edit", 0)
BeginThread WriteString
While temp_Hwnd
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
多线程多开窗口同步执行与子线程间的数值如何传递:Dimenv IsThread, i
Dim arr_Thread
For i = 0 To 2
IsThread = False'未启动线程
Redim Preserve arr_Thread(i)
arr_Thread(i) = BeginThread(EnterThread)
While IsThread = False'未启动成功,等待中
'跳出循环说明 IsThread = True,已经执行到了,循环继续启动下一个
EndScript'结束主线,但子线程还会继续运行
'函数调用//////////////////////////////////////////
Function EnterThread()
IsThread = True
TracePrint "运行线程:" & n
End Function
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
单线程启动与停止:'环境变量声明
Dimenv Hwnd, IsThread
IsThread = False
Hwnd = Plugin.Window.Find("Notepad", "无标题 - 记事本")
If Hwnd = 0 Then
RunApp "notepad.exe" : Delay 2000
TracePrint "运行记事本"
Loop While Hwnd = 0
'获得记事本中输入子窗口句柄,以便按键输入内容
Hwnd = Plugin.Window.FindEx(Hwnd, 0, "Edit", 0)
'全局变量声明
Dim IdThread
If WaitKey() = 81 Then
If IsThread = False Then
IdThread = BeginThread(WriteString)
TracePrint "等待线程启动!"
Loop While IsThread = False
TracePrint "线程启动成功!"
TracePrint "线程停止操作!"
StopThread IdThread
IsThread = False
'以下是函数区域↓
Function WriteString()
IsThread = True
Call Plugin.Bkgnd.KeyPress(Hwnd, 65)
End Function
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
多线程五开操作:'五开操作
Dim str_Hwnd
str_Hwnd = vbNullString'记录都有哪些窗口句柄在运行
DimEnv IsHwnd
IsHwnd = 0
For i_win = 0 To 4
RunApp "notepad.exe"
str = Plugin.Window.Search("无标题 - 记事本")
arr = Split(str, "|")
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
跳出一个窗口界面选择路径:Set ObjFSO = CreateObject("monDialog")'创建名为ObjFSO的对象,用于打开文件以获取路径
ObjFSO.Filter = "位图文件(*.bmp)|*.bmp|GIF(*.gif)|*.gif|文本(*.txt)|*.txt|所有文件(All Files)|*.*"'类型设置
ObjFSO.FilterIndex = 1'类型初始选项
ObjFSO.InitialDir = "c:"'设置对话框初始目录
InitFSO = ObjFSO.ShowOpen'打开路径选择框
If InitFSO = False Then
msgbox "脚本错误:请选择一个文件"
ExitScript
MessageBox ObjFSO.FileName
复制代码进程是否存在:If CheckExeIsRun("notepad.exe") = True Then
MessageBox "存在"
MessageBox "不存在"
Function CheckExeIsRun(exeName)
Dim WMI, Obj, Objs
CheckExeIsRun = False
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Process")
For Each Obj In Objs
If InStr(UCase(exeName), UCase(Obj.Description)) 获取网络时间: 0 Then
CheckExeIsRun = True
If Not Objs Is Nothing
Then Set Objs = Nothing
If Not WMI Is Nothing
Then Set WMI = Nothing
Exit Function
If Not Objs Is Nothing Then Set Objs = Nothing
If Not WMI Is Nothing Then Set WMI = Nothing
End Function
复制代码本机网卡MAC地址:Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "Get", "/", False
XmlHttp.send
网络时间 = DateAdd("h", 8, CDate(Mid(XmlHttp.getResponseHeader("Date"), 5, 21)))
Set XmlHttp = Nothing
TracePrint 网络时间
复制代码判断网络是否通畅:MessageBox "本机网卡MAC地址是: " & GetMAC
Function GetMAC()
GetMAC = vbNullString
Dim mc, mo
Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled = True Then
'MsgBox "本机网卡MAC地址是: " & mo.MacAddress
GetMAC = mo.MacAddress
End Function
复制代码执行弹窗功能并延时自动关闭:If 判断网络是否畅通() = True Then
MsgBox "连接成功!"
MsgBox "网络连接失败!"
Function 判断网络是否畅通()
Dim WebAddress, OBJWMIService, OBJStatus, colPings
WebAddress = ""
If WebAddress
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
通过API命令判断窗口是否卡死现象://应用API函数
Hwnd = 200536
Private Declare Function IsHungAppWindow Lib "user32.dll" ( ByVal hWnd As Long) As Long
Hwnd = Plugin.Window.MousePoint()
If IsHungAppWindow(Hwnd) = 1 Then
MsgBox "程序无响应"
复制代码通过API命令置顶窗口:Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal Hwnd As Long, ByVal HwndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Hwnd = Plugin.Window.Foreground()
Call WinTop(hwnd, - 1 )
Sub WinTop(hwnd,n)
//qingkuang=-1 ze 置顶 =-2 取消置顶
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
打怪主循环结构例子:UserVar txt_map="无量山" "输入打怪地图名称"
'主循环,主线,相当于一本书的目录,目录里该写什么,不该写什么我想大家都明白
If 人物死亡() = True Then
If 复活操作() = True Then
Call 买药补给()
If 判断地图(txt_map) = True Then
If 选怪() = True Then
TracePrint "选怪成功"
If 打怪操作() = True Then
TracePrint "怪物死亡,开始捡物"
Call 捡物操作()
TracePrint "怪物未死,打怪超时或异常,前往下个坐标"
Call 前往下个坐标(x, y)
TracePrint "选怪失败,前往下个坐标"
Call 前往下个坐标(x, y)
Call 执行跨地图寻路()
'以下都是各个函数功能模块分好的,各个功能都要清晰合理的写好,需要的时候主循环调用
Function 人物死亡()
人物死亡 = False
If 获得血量() = 0 Then
人物死亡 = True
End Function
Function 复活操作()
复活操作 = False
'点击确认复活等操作
If 获得血量() > 0 Then
复活操作 = True
End Function
Function 买药补给()
If 前往NPC("药店商人") = True Then
'购买药品操作等……
End Function
Function 前往NPC(name)
前往NPC = False
'判断自动寻路列表,寻找药店NPC点击寻路等操作
If 判断到打开交易界面() = True Then
前往NPC = True
End Function
Function 判断地图(name)
判断地图 = False
If 判断右上角地图名称是否为(name) = True Then
判断地图 = True
End Function
Function 执行跨地图寻路()
'计算路线,打开寻路列表操作,等等……
End Function
Function 前往下个坐标(x, y)
If 补给不足() = True Then
If 回城寻路() = True Then
'到达买药等等操作……
'执行当前地图坐标寻路
End Function
'后面就不写了,例子差不多大家看明白了吧……
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
自动任务脚本代码结构例子:'主循环,相当于一本书的目录,目录中该写什么不该什么就不多说了。
Dim str_renwu, arr_renwu, arr_renwu_xy, i_renwu
str_renwu = 获取任务进度()
'str_renwu 返回格式可以这样
'x,y|对话=新手指导
第1个任务|前往这个坐标,与NPC对话
'x,y|杀怪=猪猡兽
第2个任务|前往这个坐标,杀怪猪猡兽
'x,y|杀怪=食人花|采集
第3个任务|前往这个坐标,与NPC对话
'x,y|采集=金银花 第4个任务|前往这个坐标,与NPC对话
'x,y|采集=金银花 第4个任务|前往这个坐标,与NPC对话
If str_renwu
兄弟工程师05
鹰眼勋章鹰眼注册用户专属勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章黄金之翼黄金之翼勋章潜水员按键潜水员勋章天使勋章天使一样的用户按键元老资深按键用户的尊贵荣誉勋章教程达人教程达人管理人员按键论坛的管理团队专属勋章按键精灵开发者6级可通过提升认证等级来升级勋章:
采集脚本代码结构例子:'//////////////////////////我是分割线//////////////////////////
// "主循环"
If 清空货仓() = True Then
txt "货柜已清空!"
If 前往地点() = True Then
txt "到达目的地!"
If 锁定目标() = True Then
txt "锁定目标!"
If 正在采集() = True Then
txt "采集成功!"
txt "错误:采集失败!"
txt "错误:没找到目标!"
txt "错误:前往目的地失败!"
txt "错误:货柜未清空,继续!"
'//////////////////////////我是分割线//////////////////////////
'Function 区域,主要把一个个功能模块化编写
Function 清空货仓()
'清空仓库操作……
清空货仓 = False
If 货仓已清空 = 清空 Then
清空货仓 = True
End Function
Function 前往地点()
'前往地点操作……
前往地点 = False
If 已到达目的地 = 到达 Then
前往地点 = True
End Function
'剩余例子就不用写了……
'//////////////////////////我是分割线//////////////////////////
按键精灵开发者4级可通过提升认证等级来升级勋章:十周年勋章(360天)十周年纪念勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章
感谢分享,收藏备用.}

我要回帖

更多关于 按键精灵脚本制作教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信