12.05 更新
制作脚本所需电脑上的软件:按键精灵手机助手;安卓模拟器(这里我是用的是逍遥模拟器,其它能正常运行按键精灵的模拟器也可以用)
下载地址:
按键精灵手机助手:http://m.anjian.com/
逍遥模拟器:http://www.xyaz.cn/
先把稷下战场的脚本源码放上
- For 100 //循环次数,其实稷下战场最高难度只需要 80 次
- Dim intX, intY
- Do
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY //寻找闯关按钮并点击
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 1000
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY //寻找跳过按钮并点击
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 5000
- FindPic 0, 0, 0, 0, "Attachment:图案.png", "000000", 0, 0.9, intX, intY //通过检测场景是否变化判断是否需要点击自动按钮
- If intX > -1 And intY > -1 Then
- Tap 1192,21 //如果隔了五秒还没动就点击自动
- End If
- Delay 8000
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY //寻找跳过按钮并点击
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY //寻找跳过按钮并点击
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY //寻找跳过按钮并点击
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:点击屏幕继续.png", "000000", 0, 0.9, intX, intY //点击屏幕以跳过评分界面
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:再次挑战.png", "000000", 0, 0.9, intX, intY //寻找并点击再次挑战
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 200
- Next
12.06 更新
今天介绍写一个自动刷金币脚本需要用到的命令代码
首先,要实现自动刷冒险模式,需要脚本自己点几个键,这几个键分别是:开始闯关按钮、跳过剧情的跳过按钮、自动刷图的自动按钮、图刷完后的点击屏幕继续,还有一次副本刷完的再次挑战按钮,然后就回到了最初的开始闯关,刚好构成一个循环
那么要想实现脚本点击这几个按钮,可以直接用 Tap x 坐标,y 坐标 的命令,但直接用这个命令会有很多问题,因为此命令是只要代码运行到此命令就会自动进行点击,而王者荣耀的加载时间和刷图时间的随机性,我们不能确定具体哪个时间点去进行点击的操作,所以需要换另一个命令实现
这一命令的意思是在屏幕中寻找与“图片”相似度 90%以上的图像,如果找到就会把图像的坐标赋给 x,y 如果找不到会给 x,y 赋值-1,我们可以给这一命令加上循环,来让脚本一直寻找图像,直到 x,y 坐标不为-1,然后点击这一坐标并退出循环
实现这一完整功能的代码如下
- Dim intX, intY //定义 x y 变量,变量使用前必须要先定义
- Do //开始循环
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY //寻找图像:闯关.png
- If intX > -1 And intY > -1 Then //如果 x y 大于-1,进行如下操作
- Delay 500 //Delay 500 为脚本暂停 500 毫秒
- Tap intx, inty //点击 (x,y)
- Exit Do //跳出循环
- End If //结束如果
- Loop //循环结束
其实只用这一个命令就可以实现很多功能,我写的自动刷金币最主要的命令也是这一命令,甚至通篇只用了这一命令
既然这个命令如此重要,我今天只更新这一个命令也就合情合理了吧#太开心
12.08 日更新
这次介绍一下如何从零写一个脚本
安装完按键精灵手机助手和安卓模拟器之后,启动这两个软件(需要注意的是使用安卓模拟器务必要开启电脑的 VT 虚拟化功能,开启这个功能可以有效提高模拟器的运行速度,开启 VT 虚拟化需要进入 bios 设置,不同电脑机型进入 bios 的方法不同,可以百度一下自己机型具体的 VT 虚拟化开启方法)
如果连接失败,可以参考这个方法解决按键精灵连接不上模拟器的解决方法
点击新建脚本开始编写代码,点击源文件查看并输入源码
界面的左侧可以直接插入模块化的命令
再介绍一下一个很关键的功能 手机抓抓, 前面提到的寻找图像并点击的功能需要它来实现
以第一条,查找闯关图像为例,介绍一下怎么实现
- Dim intX, intY
- Do
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
首先将模拟器内的游戏处于这个界面
点击手机抓抓内左上角的截屏键
用裁剪功能将闯关这一按钮图片框选出来,点击确定即可裁剪
裁剪完后点击保存,将图片存在随便一个位置,反正一会要导入到脚本里面去,注意保存图片的时候名字不要乱取,像闯关的图片文件名最好就起闯关,因为代码中会引用图片的文件名
点击按键精灵界面左侧的附件,把刚才截取的图片添加到里面,可以点添加,也可以直接把文件拖进去
图片添加到附件中我们才能像这样在代码中真正对图片进行引用
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY
这句代码的意思是在整个屏幕中寻找与 闯关.png 偏色 000000 相似度 0.9 的图像(一般情况下这个偏色 000000 和相似度 0.9 都是不用改的,至少写刷金币脚本不需要改动这两个数据),如果找到会把坐标赋值给 x y,如果找不到会给 x y 赋值为-1,所以我们可以设置当 x y 不为-1 的时候点击 x y 的坐标,实现脚本点击 闯关 的操作,点击的命令是
- Tap x,y
当 x y 不为-1 就要用到 IF 语句,具体实现就是
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Tap intx, inty
- End If
这段代码就可以实现寻找闯关按钮,如果找到就点击这一操作了,不过这还不够,因为这段代码是一次性的,到了该它运行它就运行,如果运行过程中找不到闯关按钮,那它只会给 x y 赋值-1,然后运行后面的命令,王者荣耀各种加载时间、通关时间的随机性又决定了我们不可能知道到底哪个时间点会刚好到这个界面,所以我们还需要一个循环的命令,来让脚本循环运行,找不到图片就一直找,直到找到并点击为止
具体实现代码就是
- Do //如果前面没有定义 x y,还要加上 Dim intX, intY
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
掌握了这段代码就可以做很多事了,本刷金币脚本也不过是重复了几次这段代码而已
当然,这只是实现了点击「闯关」这一个按键,以稷下战场为例,完成一个刷图循环需要依次进行「闯关」「跳过」「自动」「跳过」「跳过」「跳过」「点击屏幕继续」「再次挑战」这八个点击操作,所以要把这几个按钮的图片截取并添加到附件中,再把代码改动复制粘贴几次,恭喜你这个刷金币脚本就初步完成了。
- Dim intX, intY
- Do
- FindPic 0, 0, 0, 0, "Attachment:闯关.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 1000
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:自动.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx,inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:跳过.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:点击屏幕继续.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 500
- Do
- FindPic 0, 0, 0, 0, "Attachment:再次挑战.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Delay 500
- Tap intx, inty
- Exit Do
- End If
- Loop
- Delay 200
这个脚本已经可以实现自己一次自动刷图了,要想实现自动多次刷图只需要在代码的最开始加一个 For 200 末尾加一个 Next 就可以了,详情可以看前面放出的全代码
代码全部输入按键精灵后,在连接到模拟器,并且模拟器处于这个界面时就可以点击按键精灵界面的调试查看效果了
注意:如果出现上面这种情况,八成是引号的全角半角错了,把原来的引号删了,重新用英文键盘输一遍,我放到文章里时是半角,不知道为什么复制粘贴到按键精灵里变成了全角。。。
正常情况下,你的脚本是可以正常运行的,但也有可能出意外,就是在进入副本时,有可能系统帮你点了「自动」而脚本又会再点一次「自动」,这样就会出问题,(可能形容的以不太清楚,碰到了就会明白了)所以我们要先判定一下系统有没有把自动给点上
我的解决方法是事先把进入副本后的场景图片截取下来一部分,比如这一块
然后在脚本中改动一条命令,功能是点击完第一次「跳过」五秒后,检测屏幕中有没有这块图像。如果有,说明系统没有点击「自动」,那么就让脚本点击一次自动;如果五秒后屏幕里没有这块图案,说明系统已经点了「自动」,脚本就可以跳过点击「自动」的步骤,具体的代码就是
- FindPic 0, 0, 0, 0, "Attachment:场景图案.png", "000000", 0, 0.9, intX, intY
- If intX > -1 And intY > -1 Then
- Tap 1192,21 //坐标为「自动」按钮的坐标
- End If
代码放的位置参考我最前面放的代码
除了这个系统自己点自动的问题,还有个问题就是大概隔两个小时系统会弹出该休息的弹窗,这个问题因为出现频率有限,我在代码中并没有解决这一问题,如果你想优化这一问题,可以用自动点击实现,也可以用按键精灵的另一对命令 KillApp 和 RunApp 这两个命令,功能就是结束进程和启动进程
我可以为大家提供一个思路:当检测到一段命令循环超过五分钟,就结束王者荣耀进程,过一段时间再打开
好了,到此脚本编写的问题已经全部介绍完了,还有最后一个是脚本打包,脚本打包之后每次运行脚本,只需要在模拟器中运行打包之后软件即可
点击发布,选择制作按键小精灵,按提示操作即可
至此所有操作都介绍完毕,还算是比较详细吧,有时间我再把排版优化一下
宣传一波我的公众号:不务正业的挖煤工(bwzydwmg)
会不定期分享好用的软件、技巧,明天也会把这篇文章重新排版发到公众号