明日方舟自动挂机脚本

0.脚本说明

当前脚本版本:1.2.4

功能包含:

  1. 三种模式刷关卡:模式1:自定义关卡(通常针对活动)。模式2:刷钱ce。模式3:刷经验ls。三种模式优先级从高到低
  2. 访问好友
  3. 收邮件
  4. 领取信用,自动买打折的商品
  5. 自动公开招募(自动选9小时,没有资深出现的情况下选第一个种类,有资深则停止自动招募(仅python版支持),待手动操作)
  6. 处理会客室线索:上线索、足够后解锁线索、送多出2个的同种线索中一个、领新线索
  7. 领取任务奖励
  8. 基建收货,收信赖,傻瓜式换人
  9. 基建中使用无人机加速贸易站赚钱

每个功能可以自己配置是否开启,执行顺序,以及其重复运行的周期

主要目的省掉重复的日常工作,专注于 挑战/抄作业 哈哈哈

经过一年左右运行,基本没问题,可以连续多天一直挂机。

脚本基于 python 实现,脚本逻辑代码都在 main.py 中,基本实现方式是 opencv 图像匹配 + adb控制点击滑动等操作

B站演示录屏:https://www.bilibili.com/video/BV1q24y1A7pq/?vd_source=7ffad06122799551b43206476b6a5d90

有问题可留言,我看到后回复

0.1 近期更新日志

时间版本更新内容
2023/11/301.3.0直接将截屏数据读为python cv2的img对象,跳过了硬盘的读写。增加脚本灵敏度,且更稳定,同时免去对硬盘的伤害
2022/5/311.2.2增加对CE-6与LS-6的配置支持
2022/5/31.2.1优化自定义关卡逻辑,增加对刷周年庆关卡的支持
2022/4/301.2.0加整体打包为exe的支持,配置由settings.py的python文件改为settings.txt
2022/4/261.1.2解决基建换人报错的bug
调整代码结构
加入 OCR 模块(同时换Python版本为3.8)
加入在公开招募时发现资深干员、高级资深干员则停止自动公开招募,等待未来手动操作的功能(其他挂机选项照旧运行)
2022/4/161.1.1解决明日方舟新版本调整UI后,刷关卡的bug
2022/4/131.1.0增加挂机功能:基建中使用无人机加速贸易站赚钱

1.下载

1.1 带EXE版本

链接:https://pan.baidu.com/s/1-TUE00ARbOgqbCJPNs35Qg?pwd=7i9m
提取码:7i9m

由 Python 版本打包而来, 500M 左右,大部分都是 python 库文件占的体积,本文针对EXE版本

1.2 Python版本

仅 1M 左右,但需要配一下 Python 环境,有基础的可以自己调代码,Python 版下载和配置教程见:https://pangruitao.com/post/3725

2.配置准备

2.1 夜神模拟器配置

建议使用夜神模拟器,其自带 adb 比较方便,且我测试时是用的夜神模拟器。

夜神官网:https://www.yeshen.com/

安装明日方舟,且登录至少一次。

再将模拟器的分辨率设置为 1280*720

运行脚本前,先保持模拟器的运行

3 脚本设置

用文本编辑器打开脚本路径下的 settings.txt

3.1 adb_path

由于脚本使用 adb 控制模拟器。需修改 adb 相关的配置:

使用夜神模拟器的话,可以直接在夜神安装路径下的 bin 文件夹下找到 adb.exe

将其路径修改进去就行(允许有空格和括号,但最好没中文,因为没测过)

注意保留双引号

3.2 device_address

Win+R 运行 cmd

cmd 命令行进到夜神 adb.exe 所在文件夹

(不熟悉 cmd 命令的话,也可以把夜神的 adb.exe 复制到 cmd 打开后的默认文件夹)

输入命令 adb.exe devices 查看各个设备的地址:

如果没有多开模拟器,应只会看到一个 127 开头的本地地址

把 IP带冒号加端口 一起复制到 settings.txt 中的 device_address

3.3 资源关卡配置

修改 settings.txt 中的

填自己账号能代理的对应关卡等级(我还只能打 4 )

3.4 功能开关和顺序配置(非必要)

注:自动公开招募功能当前仅 python 版可用,由于其有用到 easyocr,但打包成exe后运行会缺环境报错,我还没研究出来怎么处理。所以用 exe 的都加 #屏蔽掉

说明见注释,没有需求可以不动

3.5 刷自定义关卡配置方式(非必要)

这一步略麻烦,可以不配置,如果不配置会默认刷 CE 或 LS 关卡。建议在正常能跑通的情况下再来考虑自定义关卡配置。

原理说明:截一系列需要点击的地方的图,脚本会依次匹配并点击,以进到对应关卡的位置。

示例配置方式(周年庆活动)如下,将从点击“终端”后的终端主页:

到对应关卡的“开始行动”的页面(最后一步一定是”开始行动“的截图):

对每个页面需要点击的地方依次截图,用于脚本匹配图并点击截图的中心

建议用夜神模拟器自带的截图工具,保证分辨率一致:

如我想刷 SN-4 关卡,则流程上依次需要点击以下四个地方:

第一步
第二步
第三步(注意这种情况需要往上多截一些,使中心能够点击有效,但图片特征是 “SN-4” 也需要截到,否则可能和SN-5混淆)

注:暂时我没加滑动等额外操作的配置支持,所以像周年庆活动暂只能刷点击后默认打开的位置能看到的关卡。

第四步

注:如果可能出现默认非代理指挥的情况,这一步之前可以再加一步点击”代理指挥“(截没有勾选代理指挥时的”代理指挥“图)

把这几步依次需要点击的地方进行裁剪,裁剪可用 win 自带的裁剪工具,避免图片压缩失真:

并把截图后的图放在脚本下的某文件夹中,如:

由于图像匹配是逐像素的,截图时尽量使其特征最大化(如少截大片白、大片灰之类的无差异背景)

最后编辑 settings.txt

将图片的路径按格式依次加进去就ok,用逗号间隔,引号用半角。

可以试运行以下看看是否正常,如果某一步匹配失败,可以尝试调整那一步的图

4 运行

启动 arknights_processor.exe 来运行

一切正常就能看到脚本在跑,且模拟器被控制运行了(EXE版刚开始可能会报个 WARRNING,实际没有影响,等十来秒应该就能正常运行):

《明日方舟自动挂机脚本》有17条评论

    • 嗯 我目前公招用 easyocr 也还挺好用的,不过exe打包后 ocr 功能有点问题,会报缺环境,我还没弄懂。
      基建选人的游戏逻辑感觉不算太简单,ocr 识别了之后逻辑还是会有点麻烦,可能需要每个建筑配置个候选干员 list 啥的,以后合适了搞一下

      回复
  1. 哭了QAQ,exe版本的也没办法用,每次都是match failed刷屏
    ImageProcessor: start to match temp_screenshot\screenshot.png by template_images\start0.png
    ImageProcessor: best match value :0.19200846552848816 match location:864 404
    ImageProcessor: match failed

    回复
    • 咦 我今天还在用。start0.png 是明日方舟app的图标。
      检查一下分辨率是否是 1280*720 呢。
      或者试试模拟器中先关闭所有 app,位于桌面,在能看到明日方舟app图标的位置运行脚本。
      还有问题再给我说一声,我了解下

      回复
    • 在arknight processor里搜start0后面的threadshold改成0.3差不多就ok, 增加容错率, 反正和方舟长得相似的app也不是特别多, 反正识别不了的就稍微把容错率调高一点

      回复
  2. 很早就想用tensorflow和YOLO去做个自动挂机的, 但是一直很懒, 我觉得YOLO效果会好很多, 不会受到分辨率限制, 也不需要OCR, 只是本身比较臃肿不适合分享, 而且前期人工智能的训练时间和投入也比较大, 想问下之后会有考虑支持多开模拟器吗, 还是说现在就有支持?

    回复
    • 现在就支持多开,多开的时候每个模拟器对应的ip端口不一样 可以分别独立控制,我平时就多开,同时跑其他游戏脚本
      YOLO我还没了解过,空了我去查下,哈哈哈

      回复
  3. 大佬,我在进行到收线索的时候,就卡住了,之前开启了线索交流,然后进去就是交流结束的画面,然后程序就动不了了,有什么解决办法吗

    回复
  4. 老实说刷自定义关卡最好还是不用orc, 不同活动排版变化大,截图什么的麻烦。因为方舟所有开始战斗的位置都是固定的,所以我就写了一个固定按键精灵代码,打开要打的关卡界面,把战斗时间改一下就ok了

    回复

发表评论