- 小学一年级
- 3010342
- 2120
- 0
- 359 朵
- 8864 个
- 390 个
- 54940
- 2015-01-15
|
1#
t
T
发表于 2015-07-31 19:51
|
|只看楼主
本帖最后由 66球 于 2015-7-31 20:03 编辑
安卓按键初体验—乱斗西游2自动签到
本文由按键学院提供技术支持
按键学院交流①群(1群已满):376122403 按键学院交流②群(2群):372671254 按键学院交流③群(3群):170084238
纵观现在的游戏市场,手机游戏现在占有的比重越来越高,在按键精灵推出安卓版本之后,也越来越多人去转战写手游脚本了,小编最近也刚开始学习和了解安卓版命令,为了加深理解尝试去写了个乱斗西游2的手游脚本,其中感觉自动签到思路是在大部分手游里算是比较通用的,特此分享下 |
在制作一款游戏的脚本某个功能的时候,首先我们需要知道这个功能如果让我们手动操作的话具体应该是怎样做的,然后尽可能的让脚本模拟人为手动去操作就好了,就拿我们手游乱斗西游2最简单的自动签到功能来说
- 您所在的用户组无法下载或查看附件
代码思路: 1、判断游戏是否在主界面,即签到图标是否正常显示 2、签到图标存在则判断是否已经签到过,已经签到则直接跳过该功能,没有签到则点击签到图标 3、判断弹出的签到界面上哪一天可以进行签到,点击签到 4、弹出签到成功获取了某某物品,确认点击后返回主界面继续下一个功能 |
要判断游戏是否处于主界面的话,我们肉眼一看就知,但是脚本就完全不知道,所以我们初始应该先找一个主界面固有的特征让脚本启动后就先去找下这个固有特征,能找到就说明在主界面,没有找到就说明不在,在我们安卓按键命令中判断一个固定的特征是否存在一般都是用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 Then
- TracePrint "在游戏主界面"
- Else
- ShowMessage "不在游戏主界面,请返回到游戏主界面再启动脚本"
- EndScript
- Delay 3000
- End If
- Function 多点比色(坐标颜色组, 模式, x坐标, y坐标)
- 多点比色=False
- Dim 对比结果
- 对比结果 = CmpColorEx(坐标颜色组, 0.9)
- If 对比结果 = 1 Then
- 多点比色=true
- If 模式 = 1 Then
- Tap x坐标, y坐标
- End If
- End If
- End Function
复制代码
- 您所在的用户组无法下载或查看附件
如图没签到过这边会有个圆形的红点且这个红点是固定位置的,所以我们这边可以考虑用单点比色命令来判断它某点坐标的颜色值是否近似等于红色,等于的话就点击签到图标的位置,弹出签到界面,同样的把单点比色封装成一个函数
相关代码
- If 单点比色(607, 81, "周签到状态", "0C0CFF-050505") = true Then '判断是否已进行过周签到
- Call 自动周签到()
- Delay 1500
- End If
- Function 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)
- 单点比色=False
- Dim 对比结果
- 对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)
- If 对比结果 > -1 Then
- 单点比色=true
- TracePrint "找到:" & 输出内容
- End If
- End Function
复制代码
- 您所在的用户组无法下载或查看附件
如图签到界面是这样的,可以进行签到的地方相比其他地方只有一个特效光圈会一直转动,所以小编这边用的是区域模糊找色(找多个颜色)命令来查找,为防止误判,相似度弄得比较高
相关代码
- 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 Then
- TracePrint "找到的颜色序号为:", 序号, ",坐标在", intX & ", " & intY
- Tap intX, intY
- Exit Do
- End If
- Delay 1000
- Loop
- End Function
复制代码 是通过判断游戏箭头的状态,循环点击某个可对话坐标点,如果发现箭头就点击箭头返回主界面
相关代码
- 返回箭头="697|31|A8790F,681|56|6B4B1B,671|34|4C3B19,702|56|DED239"
- Function 返回主界面(横坐标,纵坐标)
- Do
- If 多点比色(返回箭头, "点击返回箭头", 1, 695, 41) = true Then
- Exit Function
- Else
- Tap 横坐标,纵坐标
- End If
- Delay 1000
- Loop
- End 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 1500
- End If
- If 单点比色(606, 231, "活动状态", "0202FA-050505") = true Then '判断是否已进行过月签到
- Call 自动月签到()
- Delay 1500
- End If
- Function 自动周签到
- Call 多点比色(签到图标, 1, 582,52)'点击签到图标
- Delay 1000
- Call 区域找色(80,243,456,980,"D3FFFF|D4FEFE|D0FDFF",0.99) '进行签到
- Delay 1000
- Call 返回主界面(525,608)
- End Function
- Function 自动月签到
- Tap 577, 205 '点击活动图标
- Delay 2000
- If 单点比色(599,428, "月签到状态", "1B1BFF-050505") = true Then
- Call 区域找色(197,448,535,963,"D3FFFF|D4FEFE|D0FDFF",0.99) '进行签到
- Delay 1500
- Tap 524, 625
- Delay 1500
- tap 337,200
- Delay 500
- Else
- TracePrint "已签到过"
- Delay 1000
- Tap 372,227
- Exit Function
- End If
- End Function
- Function 判断是否处于游戏主界面()
- If 多点比色(签到图标, 0, 582, 52) = True Then
- TracePrint "在游戏主界面"
- Else
- ShowMessage "不在游戏主界面,请返回到游戏主界面再启动脚本"
- EndScript
- Delay 3000
- End If
- End Function
- Function 返回主界面(横坐标,纵坐标)
- Do
- If 多点比色(返回箭头, 1, 695, 41) = true Then '判断箭头是否存在,存在则点击返回
- Exit Function
- Else
- Tap 横坐标,纵坐标
- End If
- Delay 1000
- Loop
- End Function
- Function 多点比色(坐标颜色组, 模式, x坐标, y坐标)
- 多点比色=False
- Dim 对比结果
- 对比结果 = CmpColorEx(坐标颜色组, 0.9)
- If 对比结果 = 1 Then
- 多点比色=true
- If 模式 = 1 Then
- Tap x坐标, y坐标
- End If
- End If
- End Function
- Function 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)
- 单点比色=False
- Dim 对比结果
- 对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)
- If 对比结果 > -1 Then
- 单点比色=true
- TracePrint "找到:" & 输出内容
- End If
- End Function
- Function 找多点(数组,输出内容,模式)
- 找多点 = False
- Dim arr,intX,intY
- arr = 数组
- FindMultiColor arr(0), arr(1), arr(2), arr(3), arr(4), arr(5), 0, 0.9, intX, intY
- If intX > -1 Then
- 找多点 = True
- TracePrint 输出内容
- If 模式 = 1 Then
- Tap intX, intY
- End If
- Else
- TracePrint "找多点没找到"
- End If
- End Function
- Function 区域找色(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,颜色组,相似度)
- Dim intX, intY, 序号
- Do
- 序号 = FindColor(左上角X坐标, 左上角Y坐标, 右下角X坐标,右下角Y坐标, 颜色组, 1, 相似度, intX, intY)
- If 序号 > -1 Then
- TracePrint "找到的颜色序号为:", 序号, ",坐标在", intX & ", " & intY
- Tap intX, intY
- Exit Do
- End If
- Delay 1000
- Loop
- End Function
复制代码
脚本是在720.1280的分辨率模拟器下编写的,第一次安卓脚本,写的很烂,但是还请友情回复支持下哈~
系列院刊: 安卓实战教学第二波——天天酷跑(2) showtopic.aspx?topicid=577909&forumpage=1&page=1
安卓实战——让脚本适应多种分辨率 showtopic.aspx?topicid=578339&forumpage=1&page=1
院刊目录 showtopic.aspx?topicid=549014&forumpage=1&page=1
谢谢大家阅读,记得给小编送支花花 ! 顺手点个赞
[tr=rgb(143,188,143)] | 按键精灵实战班开始报名啦! | 腾讯课堂视频课程 | 1、时间:7月1日——7月25日接受报名 2、时长:每周二、周四、周六 3、地点:实战班 4、项目准备:安装按键精灵2014,安装镇魔曲、按键精灵会员卡(报名会提供3个月)。 5、关于项目课程的安排:周一至周天白天可自行学习与实践,学院会提供为学员准备助教与老师进行解答,周二、周四、周六晚上8点开始授课,请各位学员到场学习。 6、学费费用:512(人民币) 7、本次实战课程全国招募66人,名额有限。
| 【招生对象】:零基础用户,快速学会按键精灵安卓版 【招生人数】:70人 【报名时间】:3/18——4/6 【学费】:128RMB 【学习日期】:1个月(2015.4.6-2015.4.27) 【上课时间】:周1、周3、周5 19:30--21:30 【上课导师】:梦幻小飞侠 【实战游戏】:[天天富翁]、[三国之刃]、[梦幻西游]、[天 龙 八 部] | 点我进入按键学院报名啦招生细节进群咨询招生办主任 |
|
|