• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.0
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.3
软件大小:29.2M
更新时间:06-14

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 49
发新话题 回复该主题

[按键精灵安卓版] 【院刊】-【201507期】 手游游戏通用智能签到思路 [复制链接]

1#
本帖最后由 66球 于 2015-7-31 20:03 编辑


安卓按键初体验—乱斗西游2自动签到


本文按键学院提供技术支持



按键学院交流①群(1群已满):376122403

按键学院交流②群(2群):372671254

按键学院交流③群(3群):170084238





纵观现在的游戏市场,手机游戏现在占有的比重越来越高,在按键精灵推出安卓版本之后,也越来越多人去转战写手游脚本了,小编最近也刚开始学习和了解安卓版命令,为了加深理解尝试去写了个乱斗西游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

该命令是脚本中要经常用到的命令所以我们把它封装成一个单独的函数,需要的时候直接调用下即可,同理多点找色、单点找色、单点比色命令也是挺经常用到的都可以考虑把它们封装起来

相关代码
  1. Dim 签到图标
  2. 签到图标 = "584|54|2B4380,583|61|8BBDD1,603|37|5DAECA,603|62|80E2EE"
  3. Call 判断是否处于游戏主界面()
  4. If 多点比色(签到图标, 0, 582, 52) = True Then
  5. TracePrint "在游戏主界面"
  6. Else
  7. ShowMessage "不在游戏主界面,请返回到游戏主界面再启动脚本"
  8. EndScript
  9. Delay 3000
  10. End If
  11. Function 多点比色(坐标颜色组, 模式, x坐标, y坐标)
  12. 多点比色=False
  13. Dim 对比结果
  14. 对比结果 = CmpColorEx(坐标颜色组, 0.9)
  15. If 对比结果 = 1 Then
  16. 多点比色=true
  17. If 模式 = 1 Then
  18. Tap x坐标, y坐标
  19. End If
  20. End If
  21. End Function
复制代码
2.判断是否已签到过


如图没签到过这边会有个圆形的红点且这个红点是固定位置的,所以我们这边可以考虑用单点比色命令来判断它某点坐标的颜色值是否近似等于红色,等于的话就点击签到图标的位置,弹出签到界面,同样的把单点比色封装成一个函数

相关代码
  1. If 单点比色(607, 81, "周签到状态", "0C0CFF-050505") = true Then '判断是否已进行过周签到
  2. Call 自动周签到()
  3. Delay 1500
  4. End If
  5. Function 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)
  6. 单点比色=False
  7. Dim 对比结果
  8. 对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)
  9. If 对比结果 > -1 Then
  10. 单点比色=true
  11. TracePrint "找到:" & 输出内容
  12. End If
  13. End Function
复制代码
3.签到界面进行签到


如图签到界面是这样的,可以进行签到的地方相比其他地方只有一个特效光圈会一直转动,所以小编这边用的是区域模糊找色(找多个颜色)命令来查找,为防止误判,相似度弄得比较高

相关代码
  1. Call 区域找色(197,448,535,963,"D3FFFF|D4FEFE|D0FDFF",0.99) '进行签到
  2. Function 区域找色(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,颜色组,相似度)
  3. Dim intX, intY, 序号
  4. Do
  5. 序号 = FindColor(左上角X坐标, 左上角Y坐标, 右下角X坐标,右下角Y坐标, 颜色组, 1, 相似度, intX, intY)
  6. If 序号 > -1 Then
  7. TracePrint "找到的颜色序号为:", 序号, ",坐标在", intX & ", " & intY
  8. Tap intX, intY
  9. Exit Do
  10. End If
  11. Delay 1000
  12. Loop
  13. End Function
复制代码
4.返回游戏主界面

是通过判断游戏箭头的状态,循环点击某个可对话坐标点,如果发现箭头就点击箭头返回主界面

相关代码
  1. 返回箭头="697|31|A8790F,681|56|6B4B1B,671|34|4C3B19,702|56|DED239"
  2. Function 返回主界面(横坐标,纵坐标)
  3. Do
  4. If 多点比色(返回箭头, "点击返回箭头", 1, 695, 41) = true Then
  5. Exit Function
  6. Else
  7. Tap 横坐标,纵坐标
  8. End If
  9. Delay 1000
  10. Loop
  11. End Function
复制代码
整体代码
  1. Dim 结果1,结果2,签到图标,领取按钮,返回箭头,闯关按钮,关卡锁,闯关4,自动挂机按钮
  2. 签到图标 = "584|54|2B4380,583|61|8BBDD1,603|37|5DAECA,603|62|80E2EE"
  3. 返回箭头="697|31|A8790F,681|56|6B4B1B,671|34|4C3B19,702|56|DED239"
  4. //结果1 = ReadUIConfig("自动领取任务奖励")
  5. //结果2 = ReadUIConfig("自动闯关")
  6. Call 判断是否处于游戏主界面()
  7. If 单点比色(607, 81, "周签到状态", "0C0CFF-050505") = true Then '判断是否已进行过周签到
  8. Call 自动周签到()
  9. Delay 1500
  10. End If
  11. If 单点比色(606, 231, "活动状态", "0202FA-050505") = true Then '判断是否已进行过月签到
  12. Call 自动月签到()
  13. Delay 1500
  14. End If
  15. Function 自动周签到
  16. Call 多点比色(签到图标, 1, 582,52)'点击签到图标
  17. Delay 1000
  18. Call 区域找色(80,243,456,980,"D3FFFF|D4FEFE|D0FDFF",0.99) '进行签到
  19. Delay 1000
  20. Call 返回主界面(525,608)
  21. End Function
  22. Function 自动月签到
  23. Tap 577, 205 '点击活动图标
  24. Delay 2000
  25. If 单点比色(599,428, "月签到状态", "1B1BFF-050505") = true Then
  26. Call 区域找色(197,448,535,963,"D3FFFF|D4FEFE|D0FDFF",0.99) '进行签到
  27. Delay 1500
  28. Tap 524, 625
  29. Delay 1500
  30. tap 337,200
  31. Delay 500
  32. Else
  33. TracePrint "已签到过"
  34. Delay 1000
  35. Tap 372,227
  36. Exit Function
  37. End If
  38. End Function
  39. Function 判断是否处于游戏主界面()
  40. If 多点比色(签到图标, 0, 582, 52) = True Then
  41. TracePrint "在游戏主界面"
  42. Else
  43. ShowMessage "不在游戏主界面,请返回到游戏主界面再启动脚本"
  44. EndScript
  45. Delay 3000
  46. End If
  47. End Function
  48. Function 返回主界面(横坐标,纵坐标)
  49. Do
  50. If 多点比色(返回箭头, 1, 695, 41) = true Then '判断箭头是否存在,存在则点击返回
  51. Exit Function
  52. Else
  53. Tap 横坐标,纵坐标
  54. End If
  55. Delay 1000
  56. Loop
  57. End Function
  58. Function 多点比色(坐标颜色组, 模式, x坐标, y坐标)
  59. 多点比色=False
  60. Dim 对比结果
  61. 对比结果 = CmpColorEx(坐标颜色组, 0.9)
  62. If 对比结果 = 1 Then
  63. 多点比色=true
  64. If 模式 = 1 Then
  65. Tap x坐标, y坐标
  66. End If
  67. End If
  68. End Function
  69. Function 单点比色(横坐标x, 纵坐标y,输出内容,颜色值)
  70. 单点比色=False
  71. Dim 对比结果
  72. 对比结果 = CmpColor(横坐标x,纵坐标y,颜色值, 0.9)
  73. If 对比结果 > -1 Then
  74. 单点比色=true
  75. TracePrint "找到:" & 输出内容
  76. End If
  77. End Function
  78. Function 找多点(数组,输出内容,模式)
  79. 找多点 = False
  80. Dim arr,intX,intY
  81. arr = 数组
  82. FindMultiColor arr(0), arr(1), arr(2), arr(3), arr(4), arr(5), 0, 0.9, intX, intY
  83. If intX > -1 Then
  84. 找多点 = True
  85. TracePrint 输出内容
  86. If 模式 = 1 Then
  87. Tap intX, intY
  88. End If
  89. Else
  90. TracePrint "找多点没找到"
  91. End If
  92. End Function
  93. Function 区域找色(左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,颜色组,相似度)
  94. Dim intX, intY, 序号
  95. Do
  96. 序号 = FindColor(左上角X坐标, 左上角Y坐标, 右下角X坐标,右下角Y坐标, 颜色组, 1, 相似度, intX, intY)
  97. If 序号 > -1 Then
  98. TracePrint "找到的颜色序号为:", 序号, ",坐标在", intX & ", " & intY
  99. Tap intX, intY
  100. Exit Do
  101. End If
  102. Delay 1000
  103. Loop
  104. 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
【上课导师】:梦幻小飞侠
【实战游戏】:[天天富翁]、[三国之刃]、[梦幻西游]、[天 龙 八 部]
点我进入按键学院报名啦招生细节进群咨询招生办主任


点评

moon110sun2  非常实用,谢谢啦  发表于 2017/3/14 10:56:31

    已有4评分我要评分查看所有评分

    2#

    ddddd

    3#

    学习!@

    4#

    看看

    5#

    擦幅度反弹的司法手段

    6#

    鼠标检测到可以签到的面板然后把所有可能的签到地方都点一次 哈哈!

    WWW.92AJ.CN
    承接中小型 游戏/办公/投票/自动发货类 脚本
    如果回答对你有所帮助请不要吝啬手中的鲜花
    7#

    xuexixuexi

    8#

    好,多谢分享

    9#


    10#


    11#

    2222222222222222222222222

    12#

    是在720.1280的分辨率模拟

    13#

    学习学习

    14#

    前来学习 谢谢

    15#

    撒旦

    16#

    学习不停止

    17#

    谢谢分享,,,,,

    18#

    牛逼

    徵腳本項目合作
    1+1>2 這就是綜效
    19#

    感觉还不错·

    20#

    感谢分享

    发新话题 回复该主题