赞
踩
本人以前从类没有编写过脚本之类的,倒是小说爬虫写过几次
本项目完成仓促,稳定性较低
本次游戏脚本是基于python的(我不会go),主要使用了图片识别(opencv)和人工确认点位来对电脑上的安卓虚拟机进行操作(也可以使用网易的airtest框架,听说好用方便,我没用过)
为了加快运行速度,我把许多图片识别改为了人工点位确认,灵活性大大下降,很容易操作出错,但是换来速度提升了一些
先说一下账号要求:必须再平安新村买金条房或者破茅草房子(切换账号后,必须再这个房子里),经验不到40w得也行,慢慢挂上去连,反正上线检查是会结束打桩,并且去打桩。
首先直接在 暴走英雄坛官网上下载夜魔模拟器,
然后分别率设置必须像我这样 540*900,手机版,否则失效 ,别的随便
这个夜魔处理器自带了adb
需要把这个adb加入到环境变量里,例如我的文件为Nox,把bin放到环境变量里
D:\Program Files\Nox\bin
然后再模拟器里开启开发者模式和USB调试
连续点几下版本号出现开发者模式
然后进入打开USB调试
后打开cmd输入
adb devices -l
得到设备名
之后可以在python中运行
- #连接设备
- process = subprocess.Popen("adb devices -l", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- command_output = process.stdout.read().decode('utf-8')
- print(command_output)
得到输出结果
之后有几个函数
- take_screenshot(filename)
- # 截取当前虚拟机屏幕并传输到计算机上
-
- cv_imread(filepath)
- # 读取图像,解决imread不能读取中文路径的问题
-
- find_image_in_larger(image_small_path,image_large_path)
- # 查找小图在大图中的位置,返回,最大的可能的概率,以及中心的位置
-
- recognize_number_in_image(image_path,start_x,start_y,end_x,end_y)
- #对指定位置图片进行数字识别(也可以识别文字,把之后string转为int去掉就行)
-
- tap_screen(x, y)
- #对x,y坐标点击
-
- swipe_screen(start_x, start_y, end_x, end_y, duration_ms=300)
- #拖动
-
- compare_images(image1_path, image2_path)
- #计算结构相似性指数(SSIM)得到相似程度
其中几个对手机进行操作的函数主要就是,-s是对指定设备操作
adb -s name operation
本项目需要的依赖,自己看吧,需要一一安装,就是pip install -
- import subprocess
- from io import BytesIO
- from PIL import Image, ImageChops
- import cv2
- import numpy as np
- import schedule
- import time
- from datetime import datetime, timedelta
- from wxpusher import WxPusher
- import pytesseract
- from skimage import io, color, metrics
下面我介绍其中几个工具,需要进行安装
1、文字识别——pytesseract
首先安装库,然后下载一个软件
2、消息推送——Wxpusher,
可以非常方便的把你的消息通过wx发送出去
现在wx中搜索wxpusher,点推送服务介绍,里面有使用教程,之后打开管理后台,创建应用,创建主题管理,通过主体管理即可发送消息到一个主题(这个主题就类似一个单方面发消息的群)
创建应用后,记录下app_token,创建主题后,记住topicid
最简单的使用实例如下,topic_ids为你想要发送的主题(目标),也可以发个人,token为唯一确认,注意不要泄露
- 内容='混十老乞丐来了'
- WxPusher.send_message(内容,
- topic_ids=['the topic'],
- token='your token')
3、定时重复任务——schedule
对于定时任务使用的是schedule框架,下属是一个简单使用,即在每天21:30执行job函数,更多使用可以去网上搜素教程
- schedule.every().day.at("21:30").do(job)
-
- while True:
- schedule.run_pending()
- time.sleep(1)
4、adb中文输入:
https://blog.51cto.com/u_15249893/2849095?articleABtest=0
因为adb不支持Unicode编码,需要添加
5、adb启动关闭应用
adb shell dumpsys window | findstr mCurrentFocus
查看当前运行的应用
- adb shell am start packname#启动应用
-
- adb shell am force-stop packname#关闭应用
最后本次游戏脚本功能非常简单,也不完善。网络延迟非常可能会影响效果,应用卡死也没有处理
详细项目可以从github上下载
你需要修改的内容就只有文件‘老乞丐.py’中从346-447行的内容
如下
- 全局_可用_账号={
- '官1':[],
- '官2':[],
- '官3':[],
- '混1':[],
- '混2':[],
- '混3':[],
- '混4':[],
- '混5':[],
- '混6':[],
- '混7':[],
- '混8':[],
- '混9':[],
- '混10':[],
- '混11':[],
- '混12':[],
- '混13':[],
- '混14':[]
- }
- 全局_区服_总帐号={
- '官1':[],
- '官2':[],
- '官3':[],
- '混1':[],
- '混2':[],
- '混3':['小号1','小号2','小号3','小号4'],
- '混4':[],
- '混5':[],
- '混6':[],
- '混7':[],
- '混8':[],
- '混9':[],
- '混10':['小号1','小号2','小号3','小号4'],
- '混11':['小号1','小号5'],
- '混12':[],
- '混13':['小号1'],
- '混14':['小号4']
- }
- 全局_账号={
- '小号1':['your_account',#0为账号,1为密码
- 'your_password'],
- '小号2':['your_account',#0为账号,1为密码
- 'your_password'],
- '小号3':['your_account',#0为账号,1为密码
- 'your_password'],
- '小号4':['your_account',#0为账号,1为密码
- 'your_password'],
- }
-
- 全局_topic={
- '官1':'your_topic_id',
- '官2':'your_topic_id',
- '官3':'your_topic_id',
- '混1':'your_topic_id',
- '混2':'your_topic_id',
- '混3':'your_topic_id',
- '混4':'your_topic_id',
- '混5':'your_topic_id',
- '混6':'your_topic_id',
- '混7':'your_topic_id',
- '混8':'your_topic_id',
- '混9':'your_topic_id',
- '混10':'your_topic_id',
- '混11':'your_topic_id',
- '混12':'your_topic_id',
- '混13':'your_topic_id' ,
- '混14':'your_topic_id'
- }
-
-
- 全局_EMULATOR_NAME = "your_EMULATOR_NAME" # 模拟器的名称
- 全局_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不定期查看
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。