[按键精灵教程]学了这个你也能做出稳定的脚本
金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,win10自带按键精灵,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想制作脚本和学习按键精灵的朋友可以添加按键精灵学习交流群:554127455 学习路上不再孤单,金猪脚本伴你一同成长.
游戏吸引人的地方在于他的不确定性,有可能赶路的时候顺手干掉一个野怪,居然爆出了屠龙宝刀(→_→),但是脚本不同,我们希望的是:他能完全按照我们的逻辑进行,就算偏离了后也能自动扭正回来,继续当前的逻辑。
脚本的稳定性是所有作者最关心的问题,可能你的脚本能运行1个小时,2个小时,但是由于各种因素,甚至有的并不是因为你脚本的问题而产生的逻辑进行不下去的情况,最典型的例子就是网络延时的弹窗,当然这个要处理很简单,因为他属于可预测的问题(游戏本身的),只需要在每一个含有联网操作的地方都加上判定即可(写一个函数大家一起用)。但是有一类是无法预测的,比如有的游戏会有全服公告的喇叭,时不时就出现一次,即使他只出现一会也会影响我们的判定,一个判定的错误会导致一连串的错误,导致游戏实际状态和我们逻辑处理到的地方不一致,然后。。。就没有然后了,等着用户发现并吐槽你吧。
设置方式:1、点击设置按钮 2、点击热键,即跳转到热键模式的设置界面 3、设置了其他热键模式之后,点击确定按钮 4、点击确定按钮之后,会弹出提示,提示需要重启按键精灵,点击确定,重新开启按键精灵,更改的热键模式即生效。
对于这类型的问题:先来分析一下第一种处理方法----在所有的操作循环中加入判定,看看代码:
Dim 计数器 = 0
Do
If CmpColorEx("当前界面特征",0.9)=1 Then
将键盘上的功能键设成多个按键的组合方法如下: 在按键精灵界面,点击要修改热键脚本的属性,点击修改热键。 2. 在弹出的窗口中,可以蓝岛启动、终止热键等,点击要修改热键后面的按钮。 3. 选择修改后热键的选项。
Tap 相应功能的位置
End If
Delay 100
If CmpColorEx("操作之后的界面特征",0.9)=1 Then
Exit Do
End If
1、打开按键精灵,点击新建。2、接着,截屏(按printscreen键)桌面(因为我的电脑在桌面上)。然后点击按键精灵页面中的‘抓抓’。3、在出现的按键抓抓辅助工具中点击‘图像’,就会出现我们刚截的屏,接下来在‘计算机’。
If 计数器 > 50 Then
TracePrint "超时了"
Call 超时处理()
Else
计数器= 计数器+1
End If
Loop
复制代码
按键精灵鼠标连点器设置的方法 01首先应该做的就是下载软件“按键精灵”。02下载完按键精灵后就可以打开它了,然后点击“新建”,就可以新建一个脚本了。03在新建的脚本里打开“鼠标命令&rdquo。
分析完了功能之后,我们再来分析一下优缺点,优点显而易见,基本能处理所有我们预测不到的问题,并且超时时间可以调整,添加的位置很自由,超时的处理方式也可以自己设置。缺点就是工作量大,一个脚本可能含有大量的循环,他们或多或少有点区别,这段代码没法复用。
好了,我们再来看看第二种处理方式----多线程检测,直接看代码:
Thread.SetShareVar("进度值",0)
Dim 超时 = 8 //秒
Dim 主逻辑线程
Function 主逻辑函数()
Do
Dim 任务时间 = Cint(Rnd()*5)+5
Delay 任务时间 * 1000
有两种方法:1.直接在脚本中设定变量的值,例如:a=1b=22.另一种是在脚本里设定用户自定义变量,例如:UserVar renshu=427 "人数自定义"意思是设定人数的初始值为427,但是运行用户自行修改初始值。按键精灵是一款模拟鼠标。
Loop
End Function
Function 超时处理()
TracePrint "此次任务耗时超过"&超时&"秒,等待5秒后重新启动,继续上次的进度"
Thread.Stop (主逻辑线程)
Delay 5000
主逻辑线程 = Thread.Start(主逻辑函数)
End Function
Function 判断超时函数()
Dim 判定计数 = 0
Do
Dim 初始进度 = Thread.GetShareVar("进度值")
Delay 1000
If 初始进度 = Thread.GetShareVar("进度值") Then
判定计数 = 判定计数 + 1
TracePrint "超时计数器:"&判定计数
Else
判定计数 = 0
End If
If 判定计数 >= 8 Then
超时处理()
判定计数 = 0
End If
Loop
End Function
主逻辑线程 = Thread.Start(主逻辑函数)
Call 判断超时函数()
复制代码
使用多线程来做定时,我们需要对任务时间做分析来设定超时时间,上面的代码中,设置每个任务的时间使用一个随机延时5-10秒,在多线程检测中,如果一个任务处理超过8秒,我们就认定这个任务超过了预计的时间,有可能发生问题了(卡在某个地方之类的),那么我们直接做超时处理。我们来看看处理的结果:
继续讨论优缺点,优点是处理简单,通过一个共享变量在游戏线程中变动,而超时判断线程中检测此变动来判定是否卡住,只算单个任务或者全部任务的总耗时,偏差小(一个任务如果偏差1-10秒,当有10种任务时,我们用第一种方式可能会允许100秒的超时,但是实际上平均时间只有50秒,我们计算总耗时可以设定70秒,偏差相对较小,在任务越多,耗时差距越大时候越明显),缺点就是可控性差,甚至无法针对一个任务中的一部分操作做超时检测。