最近玩了一个手机网游《刀塔传奇》,感觉画面很好看,而且技能挺丰富的,操作也比较简单。
但是玩游戏太浪费时间了,所以写了一段lua代码来自动刷副本。
请别误会,我玩游戏只是为了测试这款游戏的性能,而不是沉迷其中。
脚本测试环境:
- 设备:iPod 4(没钱买iPod 5)
- 系统:ios 6.1.6(越狱)
- 屏幕分辨率:640 * 960
- 游戏版本:1.8.2
首先设备需要越狱,然后在Cydia里面搜索“触动精灵”并安装。
触动精灵这个应用类似于电脑上的按键精灵,可以执行lua脚本,自带有丰富的函数库,可以很方便地实现各种功能。
但是未注册版只能执行5分钟,如果在5分钟内刷不完体力的话,再多执行几次。也可以配合烧饼加速器使用,这样一般5分钟内能刷完。
视频演示地址:
http://v.youku.com/v_show/id_XNzA3NzYyMzQ4.html
脚本实现方法:
一、操作步骤
脚本需要模拟玩家的操作,操作流程如下:
- 处于【关卡界面】,点击按钮进入【选择英雄界面】,若提示体力不足则结束。
- 处于【选择英雄界面】,点击按钮进入【战斗界面】。
- 处于【战斗界面】,点击自动战斗按钮。
- 处于【战斗结算界面】,点击继续战斗按钮进入【关卡界面】。
- 循环第一步操作。
网络游戏是需要联网的,假设你处于【选择英雄界面】,点击进入副本的按钮后游戏就会请求网络,客户端收到数据后才会跳转到战斗界面。
这个请求网络的响应时间和网速有关,网速慢的话可以要转一两秒的菊花才能进入战斗界面。
如果脚本点击了进入副本的按钮后就马上点击自动战斗按钮是不可以的,因为这时可能还没进入战斗界面。
所以脚本需要判断是否进入了战斗界面,可以通过判断界面某个坐标点是否出现了某个颜色来确定进入了战斗界面。
二、提取关键点颜色
下面以【关卡界面】为例子来说明怎么获取颜色的值:
首先要确定取哪个坐标的颜色,这个坐标的颜色值必须是固定的,而且该坐标在相邻两个界面的颜色不能相同。
因为【战斗结算界面】会跳转到【关卡界面】,所以要找出这两个界面不相同的颜色的坐标点,通过观察可发现左上角那个点(44, 55)符合条件:
那么怎么知道这个点的坐标呢,我的做法是把iPod通过usb连接到电脑,然后iPod截屏,电脑用图片处理软件打开截屏图片,就可以获取坐标了。
然后把下面的代码另存为lua文件:
1 | --获取某个坐标的颜色 |
再通过PP助手或者iTools把lua文件复制到/var/mobile/Media/TouchSprite/lua/
文件夹里,如下图所示:
在触动精灵里点击lua文件,设为启动脚本,再回到游戏按音量键运行脚本,就会弹出坐标(44, 55)处的颜色,如上上图所示。
为什么不在电脑的图片编辑软件里取色呢,因为截图的颜色有偏差,会导致代码判断出错,也可以用代码实现判断两个颜色是否相近来解决这个问题。
三、脚本源码
全部代码如下,目前只在iPod4测试过:
1 | -- 保存游戏处于某个界面时,某个坐标点的颜色 |