目前这样的游戏工作室在国内遍地开花 , 游戏工作室的大量兴起也催生了辅助软件行业,挂机辅助工具的开发、外包、分销也形成了完整的产业链 。朋友的工作室属于整条产业链的最底层,从分销商手里买脚本,脚本按终端数量收费,每个终端每月10块钱 , 每台服务器20开,10台服务器每月要在脚本上投入2000元 , 随着网游收益的逐渐降低,朋友渐渐感觉吃力,想找我帮他写些简单的脚本 。?
一、选择方案
虽然我平时也写些小代码自娱自乐,但从未涉及游戏辅助脚本这一领域 , 碍于情面只好答应下来 。承诺的时候胸脯拍得啪啪响 , 可真到动手的时候却犯了难,不知道从哪里入手,网上能找到的资料也少的可怜 。目前能想到的解决方案有两种,一个是读取游戏在内存中的数据,原理类似于当年PC端风靡全国的金山游侠;另外一种是模拟用户行为 , 原理类似于按键精灵 。
第一种方案功能很强大,但实现起来比较复杂,而且很容易被检测并导致封号;第二种方案看似蠢笨,但实现起来相当简单,通用性好,最重要的是安全 。对比之下,我决定从模拟鼠标键盘的操作入手,其实最重要的原因是第一种方案太难了,我不会 。
二、确定思路
方案定下来之后,下面就是确定解决问题的思路 。朋友对脚本的要求并不是很高,无非是定时自动切换游戏账号 , 自动完成游戏任务等等 。简单试玩了一下 , 思路也渐渐清晰了:账号和密码输入框的位置是固定的,模拟鼠标点击输入框是很容易的事,把账户和密码批量存储在csv文件中,从文件中读取出来粘贴到输入框中 , 然后点击确定就搞定了 。
自动完成任务要稍微复杂一点 , npc的位置是固定的,跟npc对话的窗口也是固定的,鼠标按照一定的顺序在指定的位置依次点击就能实现任务的受领和执行,任务完成后界面的固定位置会有提醒图标,这里涉及到一些简单的图像识别知识 。需要在指定位置截图,然后对图像进行分析判断,任务完成则退出当前任务,返回npc处接下一个任务 。
三、牛试小刀
简单考虑之后我迫不及待地想一试身手 , “鼠标点击” “图像识别”,我第一想到的是大家来找茬和连连看这两款经典的小游戏 。大家来找茬的脚本思路:对两幅图片分别截图,并对每个像素点进行依次比对,将比对不一致的连续像素点进行汇聚,设定阈值,当汇聚的像素点的数量超过阈值,则表明这一区域存在不同 。连连看的脚本思路:对游戏区域截图并切割,找出相同的图标 , 将二维的图标矩阵转换成二维的数字矩阵,编写算法找到解决方案,最后控制鼠标依次点击,消除图标 。【如何用python做一个游戏辅助脚本】