Skip to content
AlcanyaseaPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

明日方舟 MAA 自动挂机系统

一键自动完成多个账号(官服/B服任意组合)的每日任务,含自动切换账号。

新电脑部署:想让 AI 助手代劳安装与配置,把整个仓库给它并让它读 AI_SETUP.md——照做即可补齐缺失组件并验证可用。

后续优化:待办项、技术债与已知的环境坑见 OPTIMIZATION.md。

首次使用:配置账号密码(重要)

仓库中不包含任何真实账号密码:config.json(本地配置,含账号密码)和 scripts\accounts\(登录 token/uid 等账号数据)都被 .gitignore 排除,不会上传到仓库。下载代码后需要自己配置:

  1. 将 config.example.json 复制为 config.json(两文件同目录 D:\1\)
  2. 用文本编辑器打开 config.json,在 accounts 中填写自己的游戏账号(手机号/邮箱)和密码(推荐直接在控制台「账号管理」里输入,密码会加密保存,见下);paths 里没写的官服 MAA 路径会自动探测(D:\软件\MAA\ 下 MAA-v*-win-x64 目录取版本号最新),MAA/模拟器装在非默认位置时才需要手动填写
  3. 启动 GUI 控制台(启动控制台.bat),或在「账号管理」页面维护账号

提示:不手动创建 config.json 也可以——GUI 首次保存设置时会自动生成空白的 config.json,在「账号管理」页面输入账号密码即可。登录后程序会把 token/uid 写入 scripts\accounts\(仅本机使用,不会上传)。

密码存储(DPAPI):accounts[].password 保存为 dpapi:<base64> 密文 (Windows DPAPI,CurrentUser 范围),只有当前 Windows 用户能解密,明文只存在于 内存和输入框里。旧版明文配置在手填或控制台下一次保存设置时自动加密; 手写的明文同样可用,保存一次即完成迁移。密文与 Windows 用户绑定——换电脑、 重装系统或换登录用户后需要重新输入密码:登录校验会提示「密码无法解密」并转人工 登录,不会拿空密码反复尝试,控制台账号详情里也会留空并提示重填(不输入则保留原 密文,不会被空值覆盖)。回退到旧版本程序时,旧版会把 dpapi: 前缀当成密码原文, 需使用当前版本或重新手填明文。捕获登录时密码仍经进程环境变量传给 capture_account.ps1(读完立即清除),这一点 DPAPI 不改变。迁移后旧的 config.json.daily.bak 可能仍是明文版本,最多保留到下一次每日备份(次日首次 启动);想立即消除可删除该文件,GUI 下次启动会自动重建。

搬迁项目时请整目录移动(包含 config.json、scripts\accounts\ 和运行时)。GUI、 PowerShell 子脚本和插件读取配置时,会按配置文件所在目录重新推导 paths.script_dir 及原默认日志路径 scripts\master_log.txt,即使旧目录还在也不会调用旧副本;读取时 不改写配置文件。单独指定的日志位置和 MAA、模拟器等外部软件路径保持原值。 Windows 计划任务和 MAA 内保存的完成回调属于外部配置:项目搬迁后仍需在控制台 重新同步班次/收菜计划,并分别执行官服/B 服「MAA 服务器配置」。

功能

  • 每天按设定的时间点自动启动(默认 4:00 / 16:00,可在控制台增删改,Windows 计划任务)
  • 班次级账号筛选(可选):每个启动时间可单独勾选本次跑哪些号(如 4:00 全跑、 16:00 只跑还想刷第二把理智的号);不勾 = 全部账号(含以后新增的号)
  • 自动开启 MuMu 模拟器
  • 槽位切号(非点击):每个账号的登录数据(token/uid)保存在 scripts\accounts\<slot>\,切换 = 停游戏 → 推入数据文件 → 重启游戏,全程不点击
  • 游戏更新检测:切号后若游戏在更新(资源下载/校验/安装/强制重装客户端),自动等待更新完成再进入登录校验,避免对着更新界面误操作;更新超时该号判失败、不空跑
  • MAA 前登录校验:每个号跑 MAA 前屏幕级确认已登录;官服与 B服 分开校验 (官服 token 预检 + 失效自动输账号密码重登并刷新槽位;B服 开屏剧情自动跳过 + 观察窗判定,登录界面不可自动化直接快速失败),失败则跳过该号。 屏幕识别为 MAA 同款能力:OpenCV 模板匹配 + PaddleOCR ONNX(模板与模型 拷自 MAA resource,720p 基准),实现见 scripts\vision\ 与 vision_lib.ps1
  • 官服 ↔ B服 自动切换客户端
  • 每个号完成后自动启动 MAA 执行每日任务
  • 失败自动重试:有账号失败时(部分失败或全部失败),整轮跑完后等 60 秒对失败号 按原顺序完整重试一遍(切号 → 登录校验 → MAA 同一管线);重试的号无论成败都 推送通知:成功标「重试成功」(正文带首跑失败原因),仍失败标「重试后仍失败」。 全部失败常见于系统性问题(游戏维护/更新),重试等于赌维护在两轮之间结束;手动切号 (人在电脑前)不走自动重试。运行历史给重试过的号带 retried 标记
  • 任务队列:公开招募 → 基建换班 → 剿灭(周六) → 刷1-7 → 信用商店 → 领奖励
  • 基建收菜(控制台一键):逐号快速收一波——收制造站产物与贸易站订单(生产 房间 skip:不换干员、不用无人机、不动班次计划),宿舍自动换休:计划里 宿舍留空 + autofill,MAA 按心情把最疲惫的空闲干员换进宿舍休整、满心情的换出 (只从未进驻干员里选,不抽走在岗干员,生产不受影响);收完自动切回常规方案; 支持定时收菜(仪表盘「收菜计划」增删时间,独立计划任务到点自动收: 跑全部启用账号、不做班次账号筛选,每个时间点可单独设置收菜后是否关机, GUI 关闭后照常触发;手动按钮收菜永不关机)
  • 精确基建派驻(可选插件):按账号为 6 类设施指定进驻干员(批次随启动时间 自动划分,如 8点/12点/24点三批;333/243 布局),MAA 运行前自动套用;不启用则 继续用 MAA 自带基建换班
  • 菲亚梅塔心情恢复(并入精确基建,按批次):换班开始前先把目标干员与满心情的 菲亚梅塔放进宿舍互换心情(菲亚梅塔随后留在宿舍恢复),先恢复心情、再执行 换班;每个班次可单独开关(有的批次开、有的不开),配置在「精确基建配置」 窗口里跟着「批次」下拉切换,也可用「导入排班文件」按各计划的 Fiammetta 字段分别导入
  • 完成后自动关闭模拟器;成功时不弹窗,仅失败时弹出提示窗口(每号耗时 + 失败详情)
  • 通知推送(可选):按账号逐步骤检查(切号 → 登录校验 → 任务自检 → MAA), 某个步骤失败的账号单独推送一条(标题含账号名与失败步骤),成功默认不推送 (「运行设置 → 通知推送 → 成功也推送」开启后,全部号成功也发一条极简汇总); 模拟器启动失败也会推送。渠道支持 Server酱 / PushPlus / 企业微信机器人, 控制台「运行设置 → 通知推送」里配置渠道与密钥,并可一键发送测试消息
  • 运行历史:每轮(挂机/收菜/切号)结果留存为 scripts\run_history\run_<时间戳>.json (保留 60 天),控制台新增「运行历史」页,可回溯每号成功/失败、耗时与失败原因 (无进展超时 / 中途退出 / 登录校验失败 / MAA 任务链报错——MAA「正常退出」但 个别任务失败(如资源过期导致全链报错)也按失败处理并推送,不再误报成功); 失败现场归档:失败账号的截图与调试日志同时复制到 scripts\run_history\<时间戳>\<槽位>\,跟历史一起保留 60 天——debug 目录每轮 开头会被清空,归档后事后才能回看当时那一帧,而不是只有一行错误文字; 证据总量有上限(默认 200MB,config.cleanup.evidence_limit_mb 可调):每轮 归档后统计超限就从最老的轮次删起,只删截图/日志、run_*.json 记录不动,当前轮 永不删除
  • 一键切号不跑日常(「账号管理 → 账号详情 → 切换到此账号」):切号 + 登录校验完成 即停,模拟器保持运行,可直接手动游戏;与挂机/收菜/导出互斥
  • 每个启动时间可单独设置是否关机(仪表盘「班次计划」每行一个开关):该班次 运行结束后 60 秒自动关机(无需确认,失败也关——失败通知会先推送到手机); GUI 手动运行传 -NoShutdown 永不自动关机
  • GUI 控制台(gui\,PySide6):仪表盘实时状态、账号管理(增删账号/启停/捕获登录)、图形化改配置、日志查看、一键运行/停止

GUI 控制台

打开方式(任选):

  • 桌面快捷方式「MAA 挂机控制台」(已创建,带图标)
  • 双击 D:\1\启动控制台.bat
  • 命令行:D:\1\gui\.venv\Scripts\python.exe D:\1\gui\main.py
页面 功能
仪表盘 账号状态卡片(数量随列表变化)、班次计划(增删改启动时间、每项启用/关机开关、「账号」勾选该班次跑哪些号,立即生效)、收菜计划(基建收菜每日定时,独立计划任务,每项启用/关机开关)、最近一次运行汇总、连接状态(含 MAA RunDirectly 检查)
账号管理 增删账号、拖动卡片调整运行顺序、每号启用开关、每号第二理智候选关卡、捕获登录数据、「切换到此账号」(只切号不跑日常)、精确基建派驻开关与配置(含无人机与菲亚梅塔心情恢复)(输入账号密码自动登录并保存槽位;特殊字符密码/验证码自动转人工登录)
运行设置 MAA/ADB/MuMu CLI 路径、超时、关模拟器开关、MAA 服务器一键配置(官服/B服独立按钮)、通知推送(渠道/密钥/成功也推送/发送测试)、数据清理(含 Python 缓存与生成的基建计划文件)
运行历史 每轮运行结果列表(挂机/收菜/切号,保留 60 天):逐号成功/失败、耗时、失败原因;支持打开记录目录与清空;工具栏显示失败现场占用(如「失败现场 12.4 MB」)并可单独「清空失败现场」(只删截图/日志,历史记录保留;挂机运行中禁止清理)
日志 深色日志视图(灰阶高亮),自动 tail、关键字过滤、清空、打开文件
  • 所有设置写入 D:\1\config.json,master.ps1 等脚本启动时读取(字段缺失时回退脚本内硬编码)
  • 「运行设置 → MAA 服务器配置」:官服 / B服 各一个按钮,一键修正该服 MAA 的 客户端类型、ADB 路径与地址、RunDirectly、结束脚本、常用任务启用;若该服 MAA 目录不存在,会自动从另一服复制一份再修正(修改前先备份原配置)
  • GUI 点「立即运行」时自动加 -NoShutdown:手动运行即使成功也不关机(符合人工操作预期);计划任务照常关机逻辑不变
  • 「停止」会结束 master.ps1 与 MAA 进程,并执行 shutdown /a 取消已排定的自动关机
  • 控制台为单实例:重复启动时新进程自动退出,已开着的窗口被带到前台 (gui\console.lock 原子锁 + PID 存活校验;崩溃残留的锁下次启动自动清理)。 两份控制台同时运行会互相覆盖 config.json(各自持有加载时的旧快照,任何一次 保存都会整份写回)——推送密钥曾被这样抹掉过,故加此保护
  • 「通知推送 → 发送测试」成功时会自动保存当前通知设置(渠道/密钥/开关), 不必再点「保存配置」;成功气泡里会注明「通知设置已自动保存」
  • 计划任务为 1 个任务(MAA_明日方舟自动挂机),内含 config.schedule.times 的 全部启用时间触发(默认 04:00 / 16:00);仪表盘「班次计划」增删改后自动同步, 更新需要管理员权限(否则会弹提示)。定时收菜另有 1 个任务(MAA_基建收菜, 触发来自 config.schedule.collect_times,仪表盘「收菜计划」维护,动作只带 -InfrastCollect);收菜后是否关机由 master.ps1 按启动时刻匹配「收菜计划」 最近一个已到的启用时间点的关机开关判定(任务动作无法按触发器带参数,与挂机 班次同一套机制;GUI 手动收菜带 -NoShutdown 永不关机);没有配置收菜时间时 该任务不会创建
  • --smoke 参数:加载全部页面后自动退出,用于无交互自检

执行流程

启动模拟器 → 对每个启用账号循环:
 槽位切号(停游戏 → 推入该账号登录数据 → 重启游戏,非点击)
  → 游戏更新等待(检测到更新界面则等待下载/校验/安装完成,不点击)
  → 登录校验(官服/B服 各自独立流程:官服 token 预检 + 停在登录界面时自动输入
    账号密码重新登录并刷新槽位数据;B服 开屏剧情自动跳过后观察窗放行,登录界面
    不可自动化直接快速失败;失败则跳过该号防 MAA 空跑)
  → 跑该服务器的 MAA
→ 有号失败时等 60 秒对失败号整体重试一遍(部分失败、全部失败都重试)
→ 关模拟器 → 弹窗通知

执行链可靠性

  • MAA 启动前记录日志位置并清除旧信号,启动后立即监测;收到完成信号后先检查 本次新增日志中的任务链错误,避免快速完成信号丢失或“报错却显示成功”。
  • 登录校验、收菜、关卡及排班配置按阶段检查结果;必须应用的配置失败时停止该号, 不继续使用上一账号或另一运行模式的配置。失败历史记录实际耗时和具体阶段。
  • 每个账号回拉完登录快照后才开始下一号切换,同一模拟器的账号数据操作保持串行。 子脚本参数独立传递,槽位名称含空格或引号时不会被拆开;看门狗超时会结束子进程树并保留诊断输出。
  • 登录后刷新与任务后回拉共用 slot_snapshot.ps1:暂存下载、检查 ADB 退出码、 校验 XML 与 UID,再备份和发布。原件保存在各槽位的 .refresh-backup/,该目录不会推入游戏。 写入失败会尝试恢复所有已修改文件。若写入被中断或回滚不完整,会留下 recovery-required.txt 并阻止该槽位再次切号和覆盖备份;确认相关进程已停止后, 按备份内相对路径恢复原件,确认完整再移除此标记。

测试通过临时目录、假 ADB 和假 MAA 进程验证以上时序,不使用真实账号或游戏数据。

config.json 的 accounts 必须为数组(GUI「账号管理」页维护);非数组或缺失时 master.ps1 拒绝运行(防止用旧格式跑错账号;旧点击切号流程已废弃)。

账号槽位机制

每个账号的登录数据(含 SDK token、uid)在首次登录后保存到 scripts\accounts\<slot>\:

accounts\<slot>\
├── uid.txt                          # 登录 UID(切换后校验用)
└── shared_prefs\                    # 镜像设备 /data/data/<pkg>/ 相对路径
│   ├── <pkg>.v2.playerprefs.xml     # 含 u8sdk_cached_uid 等登录态
│   └── HypergryphSdkPreferences.xml # 含 USER_CACHE token
└── files\zx\lc.cache
  • 切号(slot_switch.ps1):强制停止两个客户端 → adb push 数据文件并修正 owner/权限/SELinux 上下文 → 重启目标客户端 → 轮询校验 uid 与槽位一致(一致即通过, 通常 3 秒内;不一致或超时该号判失败,防止跑到错误账号)。需要 adb root(MuMu 12 自带)。
  • 游戏更新等待(自 v1.3.2 起内置于 login_check.ps1): 识别游戏更新界面特征(正在获取更新/下载更新/正在校验/正在安装/版本更新等,特征取自 官方更新公告与模拟器官网资料)并检测系统包安装器(强制更新重装客户端场景);更新中只等待 不点击,回到标题/登录/主界面后放行;更新失败立即判该号失败,不空跑。
  • 登录校验(官服 login_check.ps1 / B服 login_check_bilibili.ps1,master.ps1 在切号后、MAA 前按账号的服务器分别调用):屏幕级确认游戏实际已登录 (文件级 uid 校验通过不代表真在登录态——token 失效时游戏会回到登录界面)。 识别能力为 MAA 同款:vision\vision.py 常驻进程做 OpenCV 模板匹配(开始唤醒、 公告关闭 X、主界面判定等,模板拷自 MAA resource)+ PaddleOCR det/rec ONNX 文字识别(更新标记/表单字段/弹窗按钮),截图走 gzip 快速通道(~100-170ms/帧)。 官服:token 预检(不点开始唤醒先向官方接口校验槽位缓存的通行证 token,失效快速 失败)+ 检测到登录界面时自动用 config.accounts 里的账号密码登录(点掉首次启动 弹窗/标题画面 → 账号登录 → 密码登录 → 输入 → 登录),成功后校验 uid 与槽位一致 并刷新槽位数据(token 续期)。B服:走 B站 SDK,槽位镜像文件里无可离线校验的 会话凭据(无官服式 token 预检);启动先播开屏世界观剧情,自动点 START 逐页跳过, 开屏消失后 10 秒内未出现登录界面即放行(开屏剧情只在登录态出现);检测到 B站 登录界面(扫码/短信/验证码,无法自动化)则快速失败。两服的设备/槽位刷新函数 共用 login_device_lib.ps1。任一服失败均跳过该号防止 MAA 对着登录界面空跑。
  • 捕获(capture_account.ps1,由控制台「添加账号」触发):清空登录态 → 重启游戏 → OCR 自动点掉首次启动弹窗(配音包下载/选择)→ 登录界面 → 自动输入账号密码 → 轮询登录成功 → 拉取文件保存到槽位。密码含特殊字符或出现验证码时自动转「人工登录」: 提示你在模拟器窗口手动登录,脚本检测成功后自动拉取。失败自动恢复原登录态。 拉取时会在槽位 playerprefs 补写全部「界面首次进入引导·已看过」标记 (key_GB_viewed#*,清单见 scripts/login_device_lib.ps1 的 $guideViewedKeys, 覆盖基建建筑管理/干员信息/危机合约/集成战略/作战主页等 16 项), 新账号进这些界面不再弹「第一次进入」引导,且后续每次都不会再出现。
  • B 服单账号无需捕获也可以正常运行(槽位缺失时仅切客户端);官服槽位缺失会拒绝运行 该号(防止用错账号数据跑错号)。

关键机制

机制 文件 说明
互斥锁 master.lock 存当前运行的 PID + 进程启动时间(原子创建,防重复启动与 PID 复用误判)
完成信号 maa_done.signal MAA 跑完后由 signal_done.ps1 创建,master.ps1 轮询检测
MAA 回调 signal_done.ps1 / signal_done.bat 在 MAA 设置中配置为「任务结束后执行脚本」,指向 signal_done.bat

环境要求

项目 说明
系统 Windows 10/11
PowerShell PowerShell 7+(pwsh,全部脚本以此运行;不再使用系统内置 5.1)
模拟器 MuMu 模拟器 12(1280×720 横屏)
游戏 明日方舟 官服 + B服
MAA v6.11.1,已配置两套(官服/B服各一套)

文件结构

D:\1\
├── README.md                      # 本文件
├── 启动挂机.bat                    # 手动启动(双击运行)
├── config.json                    # GUI 生成的统一配置(脚本启动时读取,可缺省)
├── scripts\
│   ├── master.ps1                 # 主控入口(班次判定 + 账号循环/重试 + 收尾)
│   ├── master_lib.ps1             # 主控基础设施层(进程锁/日志/配置/模拟器启停/数据清理)
│   ├── master_plugins.ps1         # Python 插件调用与输出读取
│   ├── master_process.ps1         # 子脚本参数传递/看门狗/进程树清理
│   ├── master_maa.ps1             # MAA 启动、日志游标、完成及失败判定
│   ├── master_pipeline.ps1        # 账号阶段管线与统一结果
│   ├── master_history.ps1         # 主控留痕与通知层(运行历史 JSON/通知推送)
│   ├── refresh_slot.ps1           # 同步槽位回拉入口
│   ├── slot_snapshot.ps1          # 登录快照暂存/校验/备份/发布与异常回滚
│   ├── slot_switch.ps1            # 槽位切号(停游戏→推登录数据→重启游戏→校验uid,非点击)
│   ├── login_check.ps1            # 官服登录校验(token预检+屏幕确认+自动登录+刷新槽位)
│   ├── login_check_bilibili.ps1   # B服登录校验(开屏剧情跳过+观察窗放行;登录界面快速失败)
│   ├── login_device_lib.ps1       # 登录校验共用设备/槽位函数(点击/uid/槽位刷新/安装器检测/表单录入)
│   ├── config_lib.ps1             # config.json 统一读取(全部 PS 脚本共用)
│   ├── vision_lib.ps1             # MAA 同款识别封装(常驻 vision.py + gzip 截图)
│   ├── vision\                    # 识别模块(vision.py + MAA 模板 + PaddleOCR ONNX 模型)
│   ├── capture_account.ps1        # 账号捕获(清登录态→过弹窗→输入账号密码→拉取槽位数据)
│   ├── accounts\                  # 账号槽位目录(每个槽位一份登录数据 + uid.txt)
│   ├── switch_to_B服.ps1           # 关官服App → 开B服App
│   ├── switch_to_官服.ps1           # 关B服App → 开官服App(独立工具,主流程未使用)
│   ├── switch_to_B服.bat           # B服切换快捷方式
│   ├── signal_done.ps1            # MAA 完成信号(创建 maa_done.signal)
│   ├── signal_done.bat            # MAA 完成信号 bat 包装(供 MAA 调用)
│   ├── 启动挂机.bat                # 手动启动(同上)
│   ├── maa_done.signal            # 信号文件(MAA 完成后自动生成)
│   ├── master.lock                # 互斥锁(运行时自动生成,防止重复启动)
│   ├── master_log.txt             # 运行日志(自动生成)
│   └── run_history\               # 运行历史(每轮一个 JSON + 失败现场目录,保留 60 天,GUI「运行历史」页读取)
├── plugins\base_schedule\         # 精确基建派驻插件
│   ├── base_schedule.py           # 计划生成 + MAA 配置切换(独立于 MAA 版本)
│   └── plans\                     # 生成的计划 JSON(每个槽位一个文件)
├── plugins\fight_stage\           # 账号级第二理智候选关卡插件
│   └── fight_stage.py             # 运行前把账号候选关卡写入 MAA 第二个 FightTask
├── plugins\fiammetta\             # 菲亚梅塔心情恢复插件(精确基建关闭时走常规模式)
│   └── fiammetta.py               # 运行前把精确基建里的菲亚梅塔设置写进 MAA 基建任务
├── plugins\common.py              # 插件公共工具(config 读取/账号定位/MAA 目录/原子写/日志)
├── plugins\notify\                # 通知推送插件(发送逻辑全项目仅此一份)
│   └── notify.py                  # Server酱 / PushPlus / 企业微信机器人;master.ps1 与 GUI 测试共用
├── tests\                         # 单元测试(unittest 标准库零依赖;python -m unittest discover -s tests)
├── gui\
│   ├── main.py                    # GUI 入口(--smoke 自检模式)
│   ├── config.py                  # config.json 读写与默认值
│   ├── theme.py / widgets.py      # 调色板与通用组件(状态徽章/卡片等)
│   ├── core\                      # adb / 运行控制 / 日志解析 / 计划任务 / 通知
│   ├── pages\                     # 仪表盘 / 账号管理 / 运行设置 / 运行历史 / 日志
│   ├── mockup.html                # 界面设计草图(浏览器打开预览)
│   └── requirements.txt           # PySide6 + PySide6-Fluent-Widgets
├── 软件\
│   ├── MAA\                       # 官服 MAA(Official 客户端)
│   └── MAA(b)\                   # B服 MAA(Bilibili 客户端)
└── MuMu模拟器\
    └── MuMu Player 12\            # MuMu 模拟器

安装步骤

1. 安装 MuMu 模拟器

  • 下载安装 MuMu 模拟器 12
  • 设置分辨率:1280×720(横屏)
  • 安装明日方舟(官服)和明日方舟(B服)
  • 官服内登录两个账号

2. 安装 MAA

  • 下载 MAA(MaaAssistantArknights),版本不限(新版目录自动识别)
  • 解压到 D:\软件\MAA\ 下,保持默认目录名 MAA-v<版本号>-win-x64; 官服 MAA 路径会自动探测该目录(多套并存取版本号最新),装在别处时在 控制台「运行设置 → 路径」里指定即可。MAA 自身的版本更新是原地升级、 目录名不变,无需改配置
  • 运行 MAA,配置连接 MuMu 模拟器(ADB: 127.0.0.1:16384;挂机脚本每轮启动会按 MuMu 实例配置自动发现实际端口并回写 MAA 与 config.json,手动配置保持默认即可)
  • 配置任务队列:公开招募、基建换班、剿灭、刷1-7、信用商店、领奖励
  • 在 MAA 设置 → 「任务结束后」→ 执行脚本,填入 D:\1\scripts\signal_done.bat
  • 复制一份到 D:\软件\MAA(b)\,将客户端类型改为 Bilibili,同样配置结束脚本

3. 部署脚本

  • 将本项目 scripts\ 目录下所有文件放到 D:\1\scripts\
  • 将 启动挂机.bat 放到 D:\1\(根目录)

4. 设置定时任务

推荐直接在控制台「仪表盘 → 班次计划」增删改启动时间(保存时自动同步计划任务, 需要管理员权限)。基建收菜的定时在「仪表盘 → 收菜计划」维护,保存时会自动 创建/同步第二个计划任务 MAA_基建收菜(到点只收菜,收菜后是否关机按每项的 「关机」开关)。也可以手动用 schtasks 创建(以管理员运行,示例为每天 4:00 / 16:00 两个时间点):

schtasks /Create /TN "MAA_明日方舟自动挂机" /TR "D:\1\启动挂机.bat" /SC DAILY /ST 04:00
schtasks /Create /TN "MAA_明日方舟自动挂机_2" /TR "D:\1\启动挂机.bat" /SC DAILY /ST 16:00

修改时间:

schtasks /Change /TN "MAA_明日方舟自动挂机" /ST 08:00

注意:手动创建的任务与 GUI 保存的配置互不感知;建议只用一种方式维护。 每次运行属于哪一班(基建批次/关机选项)由 config.json 中最近一个已过的启用 时间点决定,例如 8点/12点/24点 三班:08:00–11:59 属 8点班,12:00–23:59 属 12点班,00:00–07:59 属 24点班。

使用方式

管理账号(推荐用控制台)

打开「MAA 挂机控制台」→「账号管理」页:

  • 账号卡片:每个账号一张卡片,每行放 2 个,以后新增账号也自动按这个 格式排。卡片表面只保留「精确基建」和「启用」两个开关,点击卡片空白处打开 该账号的详细控制界面:重新捕获登录数据、删除账号、候选关卡、基建配置等 不常用的功能都集中在里面,保持列表干净。
  • 添加账号:点「+ 添加账号」,输入名称/服务器/账号/密码 →「开始捕获」。 脚本会自动启动模拟器(如未运行)、清空登录态、重启游戏、点掉首次弹窗、 输入账号密码登录,登录成功后继续点掉公告/配音选择等剩余首次弹窗、等主界面 与「已处理」标记写入后再拉取登录数据,保证下次启动不再重复弹窗。 密码含特殊符号(% ^ _ + = [ ] 等)或出现验证码时自动转人工登录:脚本会提示你在 模拟器窗口手动登录,检测到登录成功后自动继续。
  • 启停 / 精确基建:卡片上直接切换(立即生效,master.ps1 会跳过关闭的号)。
  • 调整运行顺序:按住卡片(或账号名)拖动——被拖的卡片会浮在鼠标位置(原位 让出空位),其他账号实时平滑让位、预览最终排列,松手即落位并自动保存;也可以在 账号详情里用「↑ 上移 / ↓ 下移」。卡片左上角数字就是运行顺序,顺序保存进 config.json 的 accounts 数组,master.ps1 就按这个顺序逐个切号运行 (正在挂机时改动从下次运行开始生效)。
  • 候选关卡(账号详情):仿 MAA 的候选关卡窗口,每一行一个关卡下拉框,支持 「+ 添加候选关卡 / ✕ 删除 / ↑↓ 调整顺序」和「使用备选关卡」开关;新添加的 关卡自动排在最前(顺序即尝试顺序),1-7 固定为保底关卡、永远排在最后 (其他关卡未开放或没选其他关卡时兜底,写入 MAA 前自动规范化); 没单独设置时自动映射 MAA 当前候选,保存后运行前原样写回 MAA。
  • 重新捕获 / 删除(账号详情):重新拉取登录数据 / 从列表移除账号。

精确基建派驻(可选)

在「账号管理」页,每个账号卡片上都有「精确基建」开关;点卡片空白处打开 「账号详情 → 精确基建配置」即可打开配置窗口:

  • 基建开关:打开后,该账号运行 MAA 时使用配置好的自定义计划;关闭则继续 使用 MAA 自带基建换班(Rotation)。
  • 基建配置(账号详情):打开配置窗口。
  • 导入排班文件(基建配置窗口左下角):选一图流基建排班表 / MAA 自定义基建 导出的 JSON,控制台自动识别布局(333/243)、换班时段与干员配置,按当前班次 计划填入对应批次(如 03:00–05:00 的 A班 → 4点批),并保留产品类别、无人机 与菲亚梅塔(每个计划的 plan["Fiammetta"] 只落到它自己那个批次,窗口顶部 「菲亚梅塔」一行跟着「批次」下拉就能逐批检查)。导入后点「保存并生成计划」 才写入配置并生成 MAA 计划文件。 文件中带 candidates/编组等进阶字段或 skip 条目时,控制台会在提示里说明仅导入 可表达的部分。
  • 导出排班文件(基建配置窗口左下角「导入排班文件」旁):把当前弹窗里的排班按 一图流 / MAA 自定义基建相同的 JSON 格式保存(默认存到桌面),可用于备份或转给 其它工具 / MAA;只写文件,不修改配置。

配置窗口里可以:

  • 选布局(名称按贸易站/制造站/发电站顺序读):333(贸易3台·制造3台·发电3台)或 243(贸易2台·制造4台·发电3台)
  • 选产品类别:制造站每台可选 赤金 / 原石碎片 / 作战记录,贸易站每台可选 赤金订单 / 原石碎片订单;计划应用时 MAA 会按类别匹配游戏内对应设施并 设置对应配方(生成到计划 JSON 的 product 字段)
  • 切换批次:批次随启动时间自动划分(如 8点/12点/24点)。本次运行发生在哪个 时间点之后就用哪个批次(如 08:00–11:59 用 8点批,12:00–23:59 用 12点批, 00:00–07:59 用 24点批),不会因为 MAA 实际执行基建时跨过整点而选错批次
  • 逐个设施填写进驻干员:控制中枢 5 人、会客室 2 人、制造站 3 人/台、 贸易站 3 人/台、发电站 1 人/台、办公室 1 人、加工站 1 人(可留空)
  • 顶部还有两行设置:无人机(全局:启用/目标站台/投放时机)与 菲亚梅塔心情恢复(按批次:跟着「批次」下拉切换,启用/恢复目标,详见下一节)

注意事项:

  • 干员名必须与游戏内名称一致(MAA 靠截图识别干员,例如「银灰」「澄闪」)
  • 某一项全部留空时,MAA 会自动按默认算法把该设施补满;只填了一部分 时,MAA 只派你填的人,剩余位置保持空着(不会自动补位)
  • 干员休整(宿舍):弹窗里可指定 4 间宿舍、每间最多 5 名进驻干员;全部 留空时 MAA 按默认算法自动安排休整;填了干员的宿舍,剩余空位也会自动补满。 生成计划时会把指定了干员的宿舍排到前面、空宿舍排后面,且宿舍一律不带排序 (sort=false,规避 MAA 宿舍「清空→按序重选」失败导致留空位的已知问题)。 计划始终包含 4 间宿舍——自定义模式下计划文件缺少宿舍会导致「清空宿舍但不补人」
  • 已进驻干员不进宿舍:应用精确换班时脚本会自动开启 MAA 的「不将已进驻的 干员放入宿舍」(DormFilterNotStationed),宿舍自动补位只从「未进驻」干员里选, 训练室/加工站等已在岗干员不会被拉进宿舍破坏排班;本轮被设施换下的干员仍会 正常进宿舍休整。恢复 MAA 自带 Rotation 时不改动该开关。
  • 加工站:自定义模式下 MAA 不会自动给加工站派人,想派驻就填 1 个干员, 留空则跳过加工站
  • 保存后即生成计划文件(D:\1\plugins\base_schedule\plans\<槽位>.json), master.ps1 在每次跑该账号前自动应用,无需手动改 MAA
  • 插件只依赖 MAA 官方稳定的自定义基建协议,MAA 升级不影响

菲亚梅塔心情恢复(精确基建里的一项)

按批次独立设置:配置位置是「账号管理」页点账号卡片空白处 →「账号详情」→ 「精确基建配置」→ 顶部「菲亚梅塔」一行(和「无人机」并排)。这一行跟着上面的 「批次」下拉切换——切到哪个批次就编辑哪个批次,后面会显示「(仅 X点批 生效)」:

  • 开关 + 恢复目标:目标可选 清流 / 可露希尔 / 但书 / 巫恋 / 龙舌兰 / 歌蕾蒂娅(与 MAA 界面同一份候选)。保存在 config.json 的 accounts[].base_schedule.batches[<批次>].fiammetta = {enable, target}, 所以有的批次开、有的批次不开都可以。
  • 导入排班文件:一图流 / MAA 自定义基建导出的 JSON 里每个计划的 Fiammetta (含 target)只落到它自己那个批次上,其余批次保持原样;文件里某批次写着不用, 那个批次就是关的;某批次压根没写 Fiammetta,该批次沿用你原来的设置。 导出排班文件时也按批次写回去。
  • 时机固定为「换班前」:MAA 的做法是把恢复目标与满心情的菲亚梅塔放进宿舍 互换心情(菲亚梅塔随后留在宿舍恢复),完成后再执行换班。
    • 账号开着精确基建(自定义模式):base_schedule.py 生成计划时,只给开启了 该批次的计划写入 plan["Fiammetta"] = {enable, target, order: "pre"}, MAA 会把该任务插到这套换班任务的最前面。
    • 账号没开精确基建(常规模式):plugins\fiammetta\fiammetta.py 把 当前班次那一条设置(按启动时间判断本次跑哪一批)写进 MAA 的基建任务 (FiammettaRecoveryEnabled / FiammettaTarget1),对应 MAA 的「宿舍前置轮」, 同样排在换班设施之前。 两条路径互斥(MaaCore 在自定义模式不读任务级参数、常规模式不读计划级 Fiammetta),所以不会重复恢复。
  • 会覆盖 MAA 界面里的同名设置:控制台按账号/批次写入,关闭时也会把 MAA 的 「启用菲亚梅塔心情恢复」关掉,避免两边不一致(没配置过该字段的老配置不碰)。
  • 注意:
    • 需要该账号拥有菲亚梅塔且她当前心情是满的,否则 MAA 会记 full-mood Fiammetta was not found 并跳过本次恢复——这是 MAA 内部行为, 控制台无法绕过或补偿;
    • MAA 明确不推荐恢复巫恋 / 龙舌兰(理论上可以 007,自动换班下难以实现);
    • 自定义模式(精确基建)下 MAA 每个计划只能指定 1 个恢复目标,所以面板上 只给一个目标;
    • 依赖 MAA 自带能力(本机实测 v6.17.5:InfrastTask.cpp 的计划级 Fiammetta 与 常规模式参数)。MAA 升级若改掉这些字段,需要重新适配。

手动运行

双击 D:\1\启动挂机.bat,或控制台右上角「▶ 立即运行」(不会触发自动关机)。

自动运行

计划任务到时间自动执行。前提:

  • 电脑开机且不休眠
  • 用户已登录 Windows

查看进度

打开 D:\1\scripts\master_log.txt 查看实时日志。

配置参数

在 master_lib.ps1 顶部(默认路径段)可修改以下参数;config.json 的 paths/timeouts 同名键优先于这些默认值:

参数 默认值 说明
$maaStallTimeoutSec 180 (3分钟) MAA 无战斗/任务进展判超时(秒);正常打关不限制单号总时长
$retryFailedDelaySec 60 有号失败时、重试前的等待秒数(部分失败、全部失败都重试)
$device 127.0.0.1:16384 MuMu ADB 地址;每轮启动按实例配置自动发现端口(vms\<实例>\configs\vm_config.json),发现到不同地址会自动回写 config 与两份 MAA 配置
$adb D:\软件\MuMu模拟器\...\adb.exe ADB 路径
$maaOfficial 自动探测 D:\软件\MAA\MAA-v*-win-x64(取版本号最新) 官服 MAA 路径
$maaBilibili D:\软件\MAA(b)\MAA.exe B服 MAA 路径

常见问题

Q: 双击 bat 没反应? A: 检查 PowerShell 执行策略:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass

Q: MAA 连接不上模拟器? A: 确认 MuMu 模拟器已开启;挂机脚本启动时会自动发现 ADB 端口(日志里的 ADB port source / ADB connected),若仍失败,检查 MuMu 实例是否正常、 或在控制台「运行设置」里把 ADB 地址改成实际值(adb devices 里显示的地址)。

Q: 想改任务内容? A: 分别打开官服 MAA 和 B服 MAA,修改任务队列后保存

Q: MAA 报超时(长时间没有战斗/任务进展)? A: 现在超时只看“进展心跳”:只要 MAA 一直在正常进战斗/结算就不会超时;只有超过 $maaStallTimeoutSec(默认 180 秒,即 3 分钟)没有任何战斗/任务推进才放弃该账号。 常见卡死原因:MAA 任务配置问题、模拟器卡顿、游戏更新/弹窗未被处理。

Q: 运行完成后怎么知道结果? A: 成功不弹窗、无需确认;只有失败时弹出提示窗口,显示每号耗时和状态。启用了 「运行设置 → 通知推送」的话,失败/成功会推送到手机(模拟器启动失败也会推)。 每轮结果另存于 scripts\run_history\,控制台「运行历史」页可随时回溯; 也可以查看 D:\1\scripts\master_log.txt

Q: 提示"已在运行中"无法启动? A: 上一次运行可能未正常结束,删除 D:\1\scripts\master.lock 后重试

Q: 控制台偶尔点了没反应(比如点关闭没反应)、窗口有些位置拖不动? A: 有三个原因,已全部修复:

  1. 界面主线程每 2~5 秒反复调用 tasklist / adb devices / 查询计划任务,系统命令偶尔 卡几秒就会让界面“点了没反应”。已改为本地毫秒级进程检测,并把计划任务/ADB 检查 挪到后台线程。
  2. 布局改造时内容层把标题栏盖住了,导致关闭/最小化按钮和大部分标题栏拖拽区域点不到。 已重新把标题栏置顶。
  3. 右上角“操作成功”之类的提示条会临时盖住关闭按钮。已把提示条下移到控制栏下方。 另外,顶部白色控制栏现在按住空白处也能拖动窗口(按钮区域除外)。

Q: 切号/登录后游戏总弹「维持原有配置」「确认」这类首次启动提示,影响 MAA? A: 这是游戏的首次启动/配音包弹窗,根因是槽位里的登录数据缺少游戏写入的「已处理」标记。 脚本已自动处理:登录校验和 MAA 跑完后会把设备上最新的登录数据拉回槽位,已保存的官服槽位 也补上了标记。之后切号不会再弹;若游戏大版本更新后弹窗重现一次,脚本会在本轮自动记住, 下一轮起不再弹出。

Q: 进基建界面会弹一次指引,导致 MAA「基建换班」卡住/跳过? A: 这是「基建站管理」的首次引导弹窗,同样是因为槽位数据缺「已看过」标记 (key_GB_viewed#BUILDING_STATION_MANAGE)。脚本在捕获和每轮登录校验后会把 $guideViewedKeys 清单里全部 16 项引导标记(基建/干员信息/危机合约/集成战略/ 作战主页等)补写进槽位,四个账号槽位已一次性补齐;若游戏更新后出现清单外的 新引导弹窗一次,下一轮把新键名加进清单即可。

Q: 如何手动切回官服? A: 运行 D:\1\scripts\switch_to_官服.ps1

构建安装包(可选)

仓库附带自解压安装包构建脚本(7-Zip SFX:引导程序 + 压缩的项目文件 + setup.bat → install.ps1 安装逻辑)。安装包内置 Python 运行环境与 GUI 依赖 (体积约数百 MB),不包含 MuMu/MAA 本体;安装时无需预装 Python,也不用联网安装依赖。

  • 本地构建:
    pwsh -ExecutionPolicy Bypass -File build\build_installer.ps1
    版本号默认取最近的 git 标签(如 v1.1.3 → 1.1.3),也可 -Version 1.1.3 指定。首次运行会自动引导 7-Zip(无需管理员:官方 MSI 用 msiexec /a 解压到 build\tools,自解压模块 7zS.sfx 从官方 Extra 包下载)。产物在 build\dist\MAA-Farm-Console-v<版本>-Setup.exe。
  • 自动构建(推荐):推送 v*.*.* 标签后,GitHub Actions(.github/workflows/release.yml) 会在 Windows 构建机上自动打包,并把 Setup.exe 挂到对应 Release;也可在 Actions 页手动触发(workflow_dispatch,填要挂载的标签名)。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages