黄金脚本按钮精灵安卓按钮初体验——乱斗西游2自动签到
按键精灵安卓按键初体验—乱斗西游2自动签到金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想制作脚本和学习按键精灵的朋友可以添加按键精灵学习交流群:554127455 学习路上不再孤单,金猪脚本伴你一同成长.
纵观现在的游戏市场,手机游戏现在占有的比重越来越高,在按键精灵推出安卓版本之后,也越来越多人去转战写手游脚本了,小编最近也刚开始学习和了解安卓版命令,为了加深理解尝试去写了个乱斗西游2的手游脚本,其中感觉自动签到思路是在大部分手游里算是比较通用的,特此分享下
思路
在制作一款游戏的脚本某个功能的时候,首先我们需要知道这个功能如果让我们手动操作的话具体应该是怎样做的,然后尽可能的让脚本模拟人为手动去操作就好了,就拿我们手游乱斗西游2最简单的自动签到功能来说
代码思路:
1、判断游戏是否在主界面,即签到图标是否正常显示
2、签到图标存在则判断是否已经签到过,已经签到则直接跳过该功能,没有签到则点击签到图标
3、判断弹出的签到界面上哪一天可以进行签到,点击签到
4、弹出签到成功获取了某某物品,确认点击后返回主界面继续下一个功能
1.判断游戏是否在主界面
要判断游戏是否处于主界面的话,我们肉眼一看就知,但是脚本就完全不知道,所以我们初始应该先找一个主界面固有的特征让脚本启动后就先去找下这个固有特征,能找到就说明在主界面,没有找到就说明不在,在我们安卓按键命令中判断一个固定的特征是否存在一般都是用CmpColorEx多点比色命令
命令名称CmpColorEx命令功能同时比较指定的多个坐标点的颜色,支持多色、偏色、相似度比较命令参数mul_color:字符串,需要对比的点xy坐标和16进制颜色,格式为(X坐标|Y坐标|16进制颜色),多个颜色用“|”号分隔,需要偏色用“-”号分隔,多个点信息用“,”号分隔,比如\"100|200|FFFFFF|123456-000000,300|500|FFFFFF\"sim:双精度浮点数,相似度,取值范围0-1
该命令是脚本中要经常用到的命令所以我们把它封装成一个单独的函数,需要的时候直接调用下即可,同理多点找色、单点找色、单点比色命令也是挺经常用到的都可以考虑把它们封装起来
相关代码
Dim 签到图标签到图标 = \"584|54|2B4380,583|61|8BBDD1,603|37|5DAECA,603|62|80E2EE\"Call 判断是否处于游戏主界面()If 多点比色(签到图标, 0, 582, 52) = True ThenTracePrint \"在游戏主界面\"ElseShowMessage \"不在游戏主界面,请返回到游戏主界面再启动脚本\"EndScriptDelay 3000End IfFunction 多点比色(坐标颜色组, 模式, x坐标, y坐标)多点比色=FalseDim 对比结果对比结果 = CmpColorEx(坐标颜色组, 0.9)If 对比结果 = 1 Then多点比色=trueIf 模式 = 1 ThenTap x坐标, y坐标End IfEnd IfEnd Function复制代码
2.判断是否已签到过
如图没签到过这边会有个圆形的红点且这个红点是固定位置的,所以我们这边可以考虑用单点比色命令来判断它某点坐标的颜色值是否近似等于红色,等于的话就点击签到图标的位置,弹出签到界面,同样的把单点比色封装成一个函数
相关代码
If 单点比色(607, 81, \"周签到状态\", \"0C0CFF-050505\") = true Then '判断是否已进行过周签到Call 自动周签到()Delay 1500End IfFunction 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)单点比色=FalseDim 对比结果对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)If 对比结果 > -1 Then单点比色=trueTracePrint \"找到:\" & 输出内容End IfEnd Function复制代码
3.签到界面进行签到
如图签到界面是这样的,可以进行签到的地方相比其他地方只有一个特效光圈会一直转动,所以小编这边用的是区域模糊找色(找多个颜色)命令来查找,为防止误判,相似度弄得比较高
相关代码
Call 区域找色(197,448,535,963,\"D3FFFF|D4FEFE|D0FDFF\",0.99) '进行签到Function 区域找色(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,颜色组,相似度)Dim intX, intY, 序号Do序号 = FindColor(左上角X坐标, 左上角Y坐标, 右下角X坐标,右下角Y坐标, 颜色组, 1, 相似度, intX, intY)If 序号 > -1 ThenTracePrint \"找到的颜色序号为:\", 序号, \",坐标在\", intX & \", \" & intYTap intX, intYExit DoEnd IfDelay 1000LoopEnd Function复制代码
4.返回游戏主界面
是通过判断游戏箭头的状态,循环点击某个可对话坐标点,如果发现箭头就点击箭头返回主界面
相关代码
返回箭头=\"697|31|A8790F,681|56|6B4B1B,671|34|4C3B19,702|56|DED239\"Function 返回主界面(横坐标,纵坐标)DoIf 多点比色(返回箭头, \"点击返回箭头\", 1, 695, 41) = true ThenExit FunctionElseTap 横坐标,纵坐标End IfDelay 1000LoopEnd Function复制代码
整体代码
Dim 结果1,结果2,签到图标,领取按钮,返回箭头,闯关按钮,关卡锁,闯关4,自动挂机按钮签到图标 = \"584|54|2B4380,583|61|8BBDD1,603|37|5DAECA,603|62|80E2EE\"返回箭头=\"697|31|A8790F,681|56|6B4B1B,671|34|4C3B19,702|56|DED239\"//结果1 = ReadUIConfig(\"自动领取任务奖励\")//结果2 = ReadUIConfig(\"自动闯关\")Call 判断是否处于游戏主界面()If 单点比色(607, 81, \"周签到状态\", \"0C0CFF-050505\") = true Then '判断是否已进行过周签到Call 自动周签到()Delay 1500End IfIf 单点比色(606, 231, \"活动状态\", \"0202FA-050505\") = true Then '判断是否已进行过月签到Call 自动月签到()Delay 1500End IfFunction 自动周签到Call 多点比色(签到图标, 1, 582,52)'点击签到图标Delay 1000Call 区域找色(80,243,456,980,\"D3FFFF|D4FEFE|D0FDFF\",0.99) '进行签到Delay 1000Call 返回主界面(525,608)End FunctionFunction 自动月签到Tap 577, 205 '点击活动图标Delay 2000If 单点比色(599,428, \"月签到状态\", \"1B1BFF-050505\") = true ThenCall 区域找色(197,448,535,963,\"D3FFFF|D4FEFE|D0FDFF\",0.99) '进行签到Delay 1500Tap 524, 625Delay 1500tap 337,200Delay 500ElseTracePrint \"已签到过\"Delay 1000Tap 372,227Exit FunctionEnd IfEnd FunctionFunction 判断是否处于游戏主界面()If 多点比色(签到图标, 0, 582, 52) = True ThenTracePrint \"在游戏主界面\"ElseShowMessage \"不在游戏主界面,请返回到游戏主界面再启动脚本\"EndScriptDelay 3000End IfEnd FunctionFunction 返回主界面(横坐标,纵坐标)DoIf 多点比色(返回箭头, 1, 695, 41) = true Then '判断箭头是否存在,存在则点击返回Exit FunctionElseTap 横坐标,纵坐标End IfDelay 1000LoopEnd FunctionFunction 多点比色(坐标颜色组, 模式, x坐标, y坐标)多点比色=FalseDim 对比结果对比结果 = CmpColorEx(坐标颜色组, 0.9)If 对比结果 = 1 Then多点比色=trueIf 模式 = 1 ThenTap x坐标, y坐标End IfEnd IfEnd FunctionFunction 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)单点比色=FalseDim 对比结果对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)If 对比结果 > -1 Then单点比色=trueTracePrint \"找到:\" & 输出内容End IfEnd FunctionFunction 找多点(数组,输出内容,模式)找多点 = FalseDim arr,intX,intYarr = 数组FindMultiColor arr(0), arr(1), arr(2), arr(3), arr(4), arr(5), 0, 0.9, intX, intYIf intX > -1 Then找多点 = TrueTracePrint 输出内容If 模式 = 1 ThenTap intX, intYEnd IfElseTracePrint \"找多点没找到\"End IfEnd FunctionFunction 区域找色(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,颜色组,相似度)Dim intX, intY, 序号Do序号 = FindColor(左上角X坐标, 左上角Y坐标, 右下角X坐标,右下角Y坐标, 颜色组, 1, 相似度, intX, intY)If 序号 > -1 ThenTracePrint \"找到的颜色序号为:\", 序号, \",坐标在\", intX & \", \" & intYTap intX, intYExit DoEnd IfDelay 1000LoopEnd Function