当前位置:   article > 正文

基于图片识别的游戏脚本(暴走英雄坛老乞丐提示)_图像识别做游戏脚本

图像识别做游戏脚本

 本人以前从类没有编写过脚本之类的,倒是小说爬虫写过几次

本项目完成仓促,稳定性较低

本次游戏脚本是基于python的(我不会go),主要使用了图片识别(opencv)和人工确认点位来对电脑上的安卓虚拟机进行操作(也可以使用网易的airtest框架,听说好用方便,我没用过)

为了加快运行速度,我把许多图片识别改为了人工点位确认,灵活性大大下降,很容易操作出错,但是换来速度提升了一些

先说一下账号要求:必须再平安新村买金条房或者破茅草房子(切换账号后,必须再这个房子里),经验不到40w得也行,慢慢挂上去连,反正上线检查是会结束打桩,并且去打桩。

首先直接在 暴走英雄坛官网上下载夜魔模拟器,

然后分别率设置必须像我这样  540*900,手机版,否则失效 ,别的随便

这个夜魔处理器自带了adb

需要把这个adb加入到环境变量里,例如我的文件为Nox,把bin放到环境变量里

D:\Program Files\Nox\bin

 然后再模拟器里开启开发者模式和USB调试

连续点几下版本号出现开发者模式

然后进入打开USB调试

后打开cmd输入

adb devices -l

 得到设备名

之后可以在python中运行

  1. #连接设备
  2. process = subprocess.Popen("adb devices -l", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  3. command_output = process.stdout.read().decode('utf-8')
  4. print(command_output)

 得到输出结果

之后有几个函数

  1. take_screenshot(filename)
  2. # 截取当前虚拟机屏幕并传输到计算机上
  3. cv_imread(filepath)
  4. # 读取图像,解决imread不能读取中文路径的问题
  5. find_image_in_larger(image_small_path,image_large_path)
  6. # 查找小图在大图中的位置,返回,最大的可能的概率,以及中心的位置
  7. recognize_number_in_image(image_path,start_x,start_y,end_x,end_y)
  8. #对指定位置图片进行数字识别(也可以识别文字,把之后string转为int去掉就行)
  9. tap_screen(x, y)
  10. #对x,y坐标点击
  11. swipe_screen(start_x, start_y, end_x, end_y, duration_ms=300)
  12. #拖动
  13. compare_images(image1_path, image2_path)
  14. #计算结构相似性指数(SSIM)得到相似程度

其中几个对手机进行操作的函数主要就是,-s是对指定设备操作

adb -s name operation

   本项目需要的依赖,自己看吧,需要一一安装,就是pip install -

  1. import subprocess
  2. from io import BytesIO
  3. from PIL import Image, ImageChops
  4. import cv2
  5. import numpy as np
  6. import schedule
  7. import time
  8. from datetime import datetime, timedelta
  9. from wxpusher import WxPusher
  10. import pytesseract
  11. from skimage import io, color, metrics

下面我介绍其中几个工具,需要进行安装

1、文字识别——pytesseract

首先安装库,然后下载一个软件

具体可以看http://t.csdn.cn/LF8Tz

2、消息推送——Wxpusher,

可以非常方便的把你的消息通过wx发送出去

现在wx中搜索wxpusher,点推送服务介绍,里面有使用教程,之后打开管理后台,创建应用,创建主题管理,通过主体管理即可发送消息到一个主题(这个主题就类似一个单方面发消息的群)

创建应用后,记录下app_token,创建主题后,记住topicid

 最简单的使用实例如下,topic_ids为你想要发送的主题(目标),也可以发个人,token为唯一确认,注意不要泄露

  1. 内容='混十老乞丐来了'
  2. WxPusher.send_message(内容,
  3. topic_ids=['the topic'],
  4. token='your token')

3、定时重复任务——schedule

对于定时任务使用的是schedule框架,下属是一个简单使用,即在每天21:30执行job函数,更多使用可以去网上搜素教程

  1. schedule.every().day.at("21:30").do(job)
  2. while True:
  3. schedule.run_pending()
  4. time.sleep(1)

4、adb中文输入:

https://blog.51cto.com/u_15249893/2849095?articleABtest=0

因为adb不支持Unicode编码,需要添加

5、adb启动关闭应用

adb shell dumpsys window | findstr mCurrentFocus

查看当前运行的应用

  1. adb shell am start packname#启动应用
  2. adb shell am force-stop packname#关闭应用

详情可见:http://t.csdn.cn/wATLX

最后本次游戏脚本功能非常简单,也不完善。网络延迟非常可能会影响效果,应用卡死也没有处理

详细项目可以从github上下载

你需要修改的内容就只有文件‘老乞丐.py’中从346-447行的内容

如下

  1. 全局_可用_账号={
  2. '官1':[],
  3. '官2':[],
  4. '官3':[],
  5. '混1':[],
  6. '混2':[],
  7. '混3':[],
  8. '混4':[],
  9. '混5':[],
  10. '混6':[],
  11. '混7':[],
  12. '混8':[],
  13. '混9':[],
  14. '混10':[],
  15. '混11':[],
  16. '混12':[],
  17. '混13':[],
  18. '混14':[]
  19. }
  20. 全局_区服_总帐号={
  21. '官1':[],
  22. '官2':[],
  23. '官3':[],
  24. '混1':[],
  25. '混2':[],
  26. '混3':['小号1','小号2','小号3','小号4'],
  27. '混4':[],
  28. '混5':[],
  29. '混6':[],
  30. '混7':[],
  31. '混8':[],
  32. '混9':[],
  33. '混10':['小号1','小号2','小号3','小号4'],
  34. '混11':['小号1','小号5'],
  35. '混12':[],
  36. '混13':['小号1'],
  37. '混14':['小号4']
  38. }
  39. 全局_账号={
  40. '小号1':['your_account',#0为账号,1为密码
  41. 'your_password'],
  42. '小号2':['your_account',#0为账号,1为密码
  43. 'your_password'],
  44. '小号3':['your_account',#0为账号,1为密码
  45. 'your_password'],
  46. '小号4':['your_account',#0为账号,1为密码
  47. 'your_password'],
  48. }
  49. 全局_topic={
  50. '官1':'your_topic_id',
  51. '官2':'your_topic_id',
  52. '官3':'your_topic_id',
  53. '混1':'your_topic_id',
  54. '混2':'your_topic_id',
  55. '混3':'your_topic_id',
  56. '混4':'your_topic_id',
  57. '混5':'your_topic_id',
  58. '混6':'your_topic_id',
  59. '混7':'your_topic_id',
  60. '混8':'your_topic_id',
  61. '混9':'your_topic_id',
  62. '混10':'your_topic_id',
  63. '混11':'your_topic_id',
  64. '混12':'your_topic_id',
  65. '混13':'your_topic_id' ,
  66. '混14':'your_topic_id'
  67. }
  68. 全局_EMULATOR_NAME = "your_EMULATOR_NAME" # 模拟器的名称
  69. 全局_wxapp_token='your_wxapp_token'

全局可用账号和全局区服账号为你想有查询的区服的老乞丐,把你有的账号填入到全局区服账号里面,你不需要的区服就可以直接删除掉了,你有别的区服也像上面一样添加,并且把你想要的区服名字在模拟其中截图,一定要是使用模拟器自带的截图,然后再裁剪出来,否则像素对不上,

全局账号就是你有的账号

全局topic就是,wxpusher里创建的对应的区服的topic

全局模拟器名字,就是你adb devices -l得出的名字

 全局token就是这个

改进,加快速度的方法:

1、因为网络延迟等问题,上面有许多time.sleep(),中间的数字就是秒数,可以改小,但是该校出问题的可能性非常大,如果你的网络较卡,还可以改大(非常不建议改小)

2、多开虚拟机,夜神模拟器也支持直接复制,把对应的模拟器名字改一下,如下,每个模拟器负责几个区服之类的,就是这样资源开销加大。

 

 3、因为登录走路需要时间所以可以把检查时间提前,提前30s之类的,控制刚好走到告示牌,刚好整点老乞丐刷新,有助于抢金蛇

4、有能力的还可以加上,网络延迟判断,应用卡死判断,重开应用等等,极大提高代码稳定性,有助于云服务器长期运行,减少维护次数

最后,本项目历时3天完成,测试了几天,运行基本正常,出现错误次数较少(遇到过应用卡死得情况),本人精力有限,正在备考,如果想要有改进得话(比如加上老乞丐所有物提示,提高稳定性),估计得等到明年了

 详细项目我会放在github:GitHub - Plke/prompter-of-beggar: 为暴走英雄坛玩家提供老乞丐提示

最后,你只需要在github下载项目,并按照如上修改就好,渠道服和暴服,就还需要在模拟器内下载相应得app,然后再区服选择里面截图制作图片放到图片文件夹里。

运行得话就在cmd里执行python 老乞丐.py就好了

如果有问题加我qq:2785929064,csdn和github不定期查看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/488786
推荐阅读
相关标签
  

闽ICP备14008679号