首先,说明一下。这是一个非常迂回且效果不佳的方法,小弟不才,安卓以及苹果手机上的脚本没啥研究,PC的按键精灵略懂,因此才有一下脚本。觉得有用拿去参考,大佬勿喷。
我一直都是有玩蚂蚁森林的,一开始也只是普通的收下能量。后来换了台iPhone 11,把闲置出来的iPhone 7越狱后发现 AlipaySteps 插件可以直接改支付宝步数(10W步一下)然后就开始每天7点准时收296克的步数能量。后来出了能量雨玩法,每天3次能量雨,第一次最多120,二、三次最多70,直接就把每天上限翻倍,于是我天天能量雨。一段时间后按的有点累,用iPhone 11去能量雨把,屏幕大,手指顾不上;用小7去能量雨吧,屏幕小,容易点不着。结果不理想又在15秒前返回冲进,一天3次机会通常要点4、5次。。。后来想着能不能用按键精灵解决这问题哇,毕竟这点点点无脑操作,按键精灵图色功能就很好解决 ,说干就干!
前面也说到我对手机脚本没啥研究,与其重新弄一门脚本语言还不如直接用按键精灵(实际上是苹果手机的按键精灵或触控精灵都要付费,不舍得)。首先想到的就是直接安卓模拟器进入蚂蚁森林,按键精灵脚本模拟器;但结果要不是模拟器不能能量登录支付宝,要不无法加载蚂蚁森林以及能量雨画面,只能直接放弃。后来想到华为手机与华为电脑的多屏互联,把手机投到PC,PC脚本控制。然而我的笔记本是联想,并不是华为;手机是iPhone并不是华为。只能寻找多屏互联软件来达到效果。通过各种百度,我找到了 Dell Mobile Connect 以及 虫洞Pro 两款软件。 Dell Mobile Connect 是戴尔推出的免费软件,通过无线局域网、蓝牙以及蓝牙连接,那个延迟,我找到破解后试了三秒就放弃了。 虫洞Pro 是一个控安卓免费,控苹果收费的软件,但可以免费体验3天,收费也只是一次收费永久使用(没有手机按键精灵按月,按年付费恶心)。虫洞Pro 的连接方式可以通过数据线,也可以通过无线局域网,无线局域网控制的话延迟稍大,但比 Dell Mobile Connect 对比是好多了,数据线连接画面、鼠标点击简直无延迟,完全实现手机投到PC,PC脚本控制。后来通过测试安卓、苹果实现的难度,还是选择了虫洞Pro 控小7来跑脚本。完事具备,只欠脚本,开写。
脚本思路也很简单呀,不就是找图?找图不可能全屏找吧,软件就那么大,全屏找浪费时间。所以直接查找虫洞Pro 句柄,只在软件内找图。根据任务管理器,轻松查到虫洞Pro 的标题是Blackhole
Hwnd = Plugin.Window.Find(0, "Blackhole") //找到标题含有Blackhole的程序句柄赋值Hwnd
TracePrint Hwnd //F5调试时回显Hwnd变量内容
找到句柄后,肯定之在句柄后台找这个能量球哇
通过按键精灵抓抓大致能判断出虫洞Pro 打开时575*875这样的一个窗口,通过按键精灵后台区域找图对虫洞Pro 的全窗口找图,找到并点击坐标,再通过鼠标左键单击该点。由于能量雨是动态的,找到的图识别出来后实际位置会比识别位置稍下一点,因此Y需要+50-60(别问我怎么知道这个值的,+10不行就+20)。
Hwnd = Plugin.Window.Find(0, "Blackhole")
iCoord = Plugin.Bkgnd.FindPic(Hwnd,0,0,575,875, "C:\dm_test\photo\1.bmp", 0, 0.8)
XY = Split(iCoord,"|")
X = XY(0)
Y = XY(1) + 50
Call Plugin.Bkgnd.LeftClick(Hwnd, X, Y)
一直循环该脚本能达到预期目标,但是会发现这个点漏太多了吧。想了一下,一次判断只点一个球,那么同时出现3个球岂不是要判断3次?这样的效率的确太低了,于是想要一次判断得出此刻所有小球,再一次点击多个。但后来发现按键精灵自带的方法实现不了,于是转战大漠插件,因为早有耳闻大漠插件的图色功能比按键精灵要强,又是一顿百度。
首先就是要使用按键精灵大漠3.12插件在使用的电脑上注册一下咯
这是注册脚本,百度一堆,然后自己小改。
PutAttachment "d:\大漠插件\plugin","RegDll.dll"
PutAttachment "d:\大漠插件\plugin\dm", "dm.dll"
Plugin.RegDll.Reg ("d:\大漠插件\plugin\dm\dm.dll")
Set dm = createobject("dm.dmsoft")
ver = dm.ver()
//判断插件是否成功
If len(ver) = 0 Then
//如果返回值"ver"的长度为0,则插件注册失败
TracePrint "插件注册失败,检查系统是否禁用了vbs脚本权限"
//结束脚本
EndScript
Else
//否则,注册成功
TracePrint "插件注册成功"
MsgBox "插件注册成功"
End If
然后就是使用大漠插件找到虫洞Pro程序句柄,绑定程序句柄,从句柄中识别能量球
Plugin.RegDll.Reg ("D:\大漠插件\plugin\dm\dm.dll")
Set dm = createobject("dm.dmsoft")
Hwnd = dm.FindWindow("", "Blackhole")
dm_ret = dm.BindWindow(Hwnd, "normal", "windows", "windows", 0)
dm_ret = dm.FindPicEx(0, 0 575, 875, "C:\dm_test\photo\1.bmp", "000000", 0.1, 0)
XY = split(dm_ret,"|")
index = 0
count = UBound(XY)
TracePrint count
Do While index < count
NewXY = split(XY(index), ",")
x = int(NewXY(1))
y = int(NewXY(2))
//TracePrint x&":"&y
dm.MoveTo x, y+60
dm.LeftClick
index = index + 1
Loop
哎,这效果就出来了,但是唯一缺点就是脚本需要无限循环,还要自己终止,后来小改一下,把识别的过程写进shou的子程序里面,加入点击开始,然后静止三秒后识别小球收,最后检测到结束提示就自动停止,下面是最终成品脚本。
Sub shou
dm_ret = dm.FindPicEx(0.2*W, 0.1*H, 0.9*W, 0.6*H, "C:\dm_test\photo\1.bmp", "000000", 0.1, 0)
XY = split(dm_ret,"|")
index = 0
//count = UBound(XY) + 1
count = UBound(XY)
TracePrint count
Do While index < count
//NewXY = split(XY(count-index-1), ",")
NewXY = split(XY(index), ",")
x = int(NewXY(1))
y = int(NewXY(2))
//TracePrint x&":"&y
dm.MoveTo x, y+60
dm.LeftClick
index = index + 1
Loop
End Sub
Plugin.RegDll.Reg ("D:\大漠插件\plugin\dm\dm.dll")
Set dm = createobject("dm.dmsoft")
Hwnd = dm.FindWindow("", "Blackhole")
dm_ret = dm.GetClientSize(Hwnd, W, H)
//TracePrint hwnd
dm_ret = dm.BindWindow(Hwnd, "normal", "windows", "windows", 0)
dm.MoveTo 0.5*W,0.7*H
dm.LeftClick
Delay 2800
Rem 开始
dm_ret = dm.CmpColor(208,346,"FFFFFF",0.9)
If dm_ret = 1 Then
Call shou
Delay 10
Goto 开始
End If