Giter VIP home page Giter VIP logo

maa-cli's Introduction

LOGO

MaaAssistantArknights


C++
platform
license commit
stars GitHub all releases

简体中文 | 繁體中文 | English | 日本語 | 한국어

MAA 的意思是 MAA Assistant Arknights

一款明日方舟游戏小助手

基于图像识别技术,一键完成全部日常任务!

绝赞更新中 ✿✿ヽ(°▽°)ノ✿

亮点功能

  • 刷理智,掉落识别及上传 企鹅物流一图流
  • 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 自定义排班
  • 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 企鹅物流一图流
  • 支持手动识别公招界面,方便对高星公招做出选择 (你的这个高姿回费出的是推王呢还是推王呢)
  • 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示;
  • 支持识别养成材料,并导出至 企鹅物流刷图规划明日方舟工具箱ARK-NIGHTS 干员培养表
  • 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草;
  • 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度;
  • 选择作业 JSON 文件,自动抄作业, 视频演示
  • 支持 C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 等多种接口,方便集成调用,自定义你的 MAA!

话不多说,看图!

zh1 zh2 zh3 zh4

下载地址

使用说明

基本说明

请参阅 新手上路详细介绍

常见问题

  • 软件一打开就闪退;
  • 连接错误、不知道 adb 路径怎么填写;
  • 连接成功了,但没反应;
  • 如何连接自定义端口;
  • 下载速度慢,且镜像站无法打开网页;
  • 下载到一半提示“登陆”/“鉴权”;
  • 连接正常,任务开始了,但是没反应。

请参阅 常见问题

外服支持

目前国际服(美服)、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足,很多功能并没有进行全面的测试,所以请自行体验。
若您遇到了 Bug,或对某个功能有强需求,欢迎在 Issues讨论区 催更;或加入我们一起建设 MAA!请参阅 外服适配教程

CLI支持

MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 CLI 使用指南

加入我们

主要关联项目

目前项目组非常缺前端大佬,若您有相关经验,欢迎加入我们!

多语言 (i18n)

MAA 支持多国语言,并使用 Weblate 进行本地化管理。如果您通晓多门语言,欢迎前往 MAA Weblate 帮助我们进行翻译。

MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)为准。

Weblate

Windows

  1. 下载预构建的第三方库

    python maadeps-download.py
  2. 使用 Visual Studio 2022 打开 MAA.sln,右键 MaaWpfGui,设为启动项目

  3. VS 上方配置选择 RelWithDebInfo x64 (如果编译 Release 包 或 ARM 平台,请忽略这步)

  4. 右键 MaaWpfGui - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了)

  5. (可选)若准备提交 PR,建议启用 clang-format 支持

Linux | macOS

请参阅 Linux 编译教程

API

外服适配

请参阅 外服适配教程,对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。

想参与开发,但不太会用 GitHub?

GitHub Pull Request 流程简述

Issue bot

请参阅 Issue bot 使用方法

致谢

开源库

数据源

贡献/参与者

感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! (*´▽`)ノノ

Contributors

声明

  • 本软件使用 GNU Affero General Public License v3.0 only 开源。
  • 本软件 logo 并非使用 AGPL 3.0 协议开源,耗毛、vie 两位画师及软件全体开发者保留所有权利。不得以 AGPL 3.0 协议已授权为由在未经授权的情况下使用本软件 logo,不得在未经授权的情况下将本软件 logo 用于任何用途。
  • 本软件开源、免费,仅供学习交流使用。若您遇到商家使用本软件进行代练并收费,可能由于设备或时间等原因,产生的任何问题及后果与本软件无关。

广告

用户交流 QQ 群:MAA 使用 & 粥游交流 QQ 群
用户交流 TG 群:Telegram 群
自动战斗 JSON 作业分享:prts.plus抄作业.com
Bilibili 直播间:直播间 每晚直播敲代码,近期很长一段时间应该都是在写本软件~

技术群(舟无关、禁水):内卷地狱!(QQ 群)
开发者群:QQ 群

如果觉得软件对你有帮助,帮忙点个 Star 吧!~(网页最上方右上角的小星星),这就是对我们最大的支持了!

maa-cli's People

Contributors

cryolitia avatar dependabot[bot] avatar horror-proton avatar hzxjy1 avatar wangl-cc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

maa-cli's Issues

Check `config::task::condition::tests::active::time` fails at midnight

If cargo test was runned between 23:50:00 and +1 00:10:00, assertion

assert!(Condition::DateTime {
start: Some(now_datetime + Duration::minutes(-10)),
end: Some(now_datetime + Duration::minutes(10)),
}
.is_active());

would fail.

now_datetime =         00:05:07.980003710
now_datetime - 10min = 23:55:07.980003710
now_datetime + 10min = 00:15:07.980003710

perhaps date was not compared here

可以添加musl的静态编译版本吗?

我尝试把maa-cli放进alpine镜像中,但是由于他需要一些libc的链接库,所以使用不了,我尝试apk add gcompat, glibc ,但是并没有什么卵用,所以能否添加一个静态编译的版本。

Arch Linux packaging issue


  • maa-cli/maa-cli/src/dirs.rs

    Lines 519 to 525 in ae8f151

    if let Some(extra_share) = option_env!("MAA_EXTRA_SHARE_NAME") {
    let extra_share_dir = test_root.join("share").join(extra_share);
    let extra_resource_dir = extra_share_dir.join("resource");
    create_dir_all(&extra_resource_dir).unwrap();
    assert_eq!(dirs.find_resource(&bin_exe).unwrap(), extra_resource_dir);
    remove_dir_all(&extra_share_dir).unwrap();
    }

    This test item should be removed, MAA_EXTRA_SHARE_NAME is not managed by maa-cli itself, it
    would fail for requiring write permission to /usr/share

    ---- dirs::tests::get_dir::data_relative stdout ----
    thread 'dirs::tests::get_dir::data_relative' panicked at maa-cli/src/dirs.rs:522:53:
    called `Result::unwrap()` on an `Err` value: Os { code: 13, kind: PermissionDenied, message: 
    "Permission denied" }
    

生息演算功能错误

maa-cli v0.4.4
MaaCore v5.2.0-beta.2

任务配置
rec.toml

[[tasks]]
type = "ReclamationAlgorithm"
[tasks.params]
mode = 1

启动命令 maa run rec

运行结果:
成功进入到了生息演算内,但是一进图就报错推出

错误信息:

[2024-03-09 16:00:52 ERROR] ReclamationAlgorithm Error
Summary
----------------------------------------
[ReclamationAlgorithm] 15:59:49 - 16:00:52 (1m 2s) Error
Error: Some error occurred during running task!

feat: 在运行时交互式输入参数

我们可否增加一项功能,通过允许在配置文件中将参数的值设置为“Input”,以使得maa-cli在读取配置时如遇到此值则在标准输入中读取外部输入配置并使用外部输入替换此值。我们相信,这项功能将减少对配置文件的频繁修改,给用户更好的使用体验。

热更新资源镜像维护

自 3.6(周三)下午3点起,MAA集群将实施跨地区迁移,根据基础网络设施搭建和域名备案所需的时间长短,预计维护时间在 7-14 天左右。对于简体中文用户,CLI 默认使用 MAA 集群的资源镜像,因此在此期间可能无法进行热更新。为了避免您的使用,请在此期间暂时切换到其他的远程仓库,如MaaResource.

注意,设置中的 resource.remote.url 只在第一次安装热更新资源时生效,后续更新从仓库的默认远端更新。因此你想临时更改请使用 git 命令行工具:

cd "$(maa dir hot-update)"
git remote set-url origin https://github.com/MaaAssistantArknights/MaaResource.git

[feature request] 日志输出内容的改进/任务总结报表

原本是想着像maa-gui那样调用远程控制协议,通过QQbot来下发和通知任务结果(文字和截图)的,但是maa-cli似乎尚未实现。

转而尝试定时使用SSH相关指令发起任务,但是通知结果的时候面对输出日志的解析比较麻烦,总不能一股脑把日志发到QQ上。

因此请求加强日志信息的规范性/可解析性与详细程度,或者能够提供最终的总结报表,可参考形如:

2023/12/11 17:39 任务【daily】报表
[启动] 耗时 1 min
--------------------
[公招] 耗时 3 min
公招发起: ★★★ 群攻, 近战位
公招发起: ★★★★ 快速复活
公招开包:★★★ 梓兰
公招开包:★★★ 安德切尔
---------------------------
[基建] 耗时 10 min
 制造站(赤金) 进驻 XXX XXX XXX
 制造站(赤金) 进驻 XXX XXX XXX
 制造站(经验) 进驻 XXX XXX XXX
 制造站(源石) 进驻 XXX XXX XXX
贸易站(龙门币) 进驻 XXX XXX
贸易站(源石) 进驻 XXX XXX
会客室 进驻 XXX XXX
...
---------------------------
[作战] 耗时 20 min
RS-5 * 4次 掉落 驮兽盲盒*12, 酮凝集*1, 固源岩*1 , 龙门币*144
1-7 * 2次 掉落 XXXXXXXXXXXXX
-----------------------
[信用商店] 耗时 3 min
购入 招聘许可、固源岩、装置、龙门币
-----------------------
[奖励] 耗时 2min
邮件收取 合成玉*20
每日任务 已全部完成
每周任务 已全部完成

客户端选项

确定客户端可以用来加载外服资源和确定在PlayCover关闭时候的App名。
我们应该继续保持用StartUp任务里面的,每次声明了客户端的时候去专门加载外服资源,PlayCover关闭的时候没有App名就警告。
还是在asst配置里面加一个client选项,用这个选项来做对应的操作,然后在StartUp里面没有声明的时候吧StartUp里面的补上。这就有一个问题,如果一个人同时玩不同服,可能就不行。

CC: @horror-proton

在macos下 maa-cli 启动的游戏无法正常代理作战

复现方法: 使用 maa-cli 配置task startup start_game_enable=true 此时运行 maa-cli 稳定复现
* 代理作战时弹战斗记录失效
* 肉鸽时报400错误

此时 手动重启客户端 可以正常进行代理,关闭客户端后使用maamacui启动 可以正常执行代理作战 关闭客户端后再次尝试使用maa-cli启动 上述问题复现

运行环境: mac mini m2 playcover 官服

feat: 在任务执行失败时让maa-cli以非0值退出

我在云服务器和云手机上运行maa-cli,由于服务器和云手机之间连接的不稳定性,StartUp任务在识别用户名时有比较高的概率会失败
当前我采用的方法是把StartUp抽出来编排成了一个单独的Task,反复重试直到成功后再执行别的Task
目前maa-cli似乎不管任务执行过程中是否存在任务失败都会固定返回0,我只能通过在任务台输出中查找“TaskError”来确定StartUp有没有成功,但感觉这种方式不是很好,希望能直接从程序的返回中知道是否有任务失败了

Error when running "maa hot-update": No such file or directory (os error 2)

OS: Arch Linux, running on Userland application on an Android device
Arch: aarch64

I'm using compiled version of maa-cli downloaded from github release and put it under the /usr/local/bin, the MaaCore was successfully installed but the MaaResource failed to clone with the following output:

[userland@localhost ~]$ maa hot-update -vvvv     
[2024-04-25 09:00:56 DEBUG] Cloning resource repository...
Error: Failed to clone resource repository

Caused by:
    No such file or directory (os error 2)

I managed to install the AUR package version and it worked fine, but to install AUR package in userland version of archlinux required quite long time.

关于编写tasks脚本时condition中Weekday获取时间的问题

复现方法:
下面是我写的一段task的脚本,我想在运行maa命令时根据星期几选择刷哪个关卡:

[[tasks.variants]]
condition={type="Weekday", weekdays=["Mon"]}
[tasks.variants.params.stage]
alternatives=[
	{value="SK-5", desc="碳"},
	{value="AP-5", desc="红票"},
	{value="LS-5", desc="经验"},
	{value="PR-A-1", desc="医疗重装芯片"},
	{value="PR-A-2", desc="医疗重装芯片组"},
	{value="PR-B-1", desc="狙击法术芯片"},
	{value="PR-B-2", desc="狙击法术芯片组"}
]
default_index=1
description="周一关卡"
allow_custom=true

问题出在这里weekday获取的是本地的时间。如果我在国外,而玩的官服的话,当我周日晚上运行脚本的时候,官服已经开启了周一的关卡,这时候就会列出错误的关卡;但如果我错开一天编写的话,早上运行脚本就会列出错误的关卡……我可以看到源代码中用的是Local::now(),但我不会用rust,不知道怎么改时区……所以我想提个小建议:可以把时间上的判定改成与服务器同步。感谢大佬!

Aur中的maa-cli包未启用core_installer特性

Aur中的maa-cli包未启用core_installer特性,导致无法使用maa install 和maa update命令,只能安装Aur中的另一个包maa-assistant-arknights或maa-assistant-arknights-bin,以下是打包的maa-cli的PKGBUILD
图片

maa install 报错

操作系统:Arch Linux
glibc: 2.38-3

file maa

maa: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=772cd007cd3a66a684c8226359183710265564d9, for GNU/Linux 3.2.0, with debug_info, not stripped

Installing package (channel: stable)...
Speed test for mirrors...
Error: request or response body error: error reading a body from connection: cannot decrypt peer's message

我的网络应该是正常的

Roadmap

This issue serves as a to-do list for the project. It enumerates tasks that I intend to tackle but haven't addressed yet. If you'd like to contribute, please select an item from the list and submit a pull request.

TODO

High Priority

This section lists items that I intend to address in the near future.

Lower Priority

In this section, you'll find tasks that I intend to address at some point.

TBD

This section is reserved for items that remain undecided. Please feel free to initiate discussions on these topics.

  • REST API based on interactive mode.
  • Refactor the callback message parsing handler.
  • Incorporate version compatibility checks for MaaCore. For instance, if a user wants to set static options, ensure that their MaaCore version is greater than 4.26.0.

Known issue

无法在任务中配置当期SS活动关卡名进行作战

在任务列表中填写银心湖列车SS的关卡“RS-5”后无法正常执行作战任务,会被直接跳过,没有错误信息输出。
任务配置:

tasks:
  - type: StartUp
    params:
      client_type: Official
      start_game_enabled: true

  - type: Fight
    strategy: first
    params:
    variants:
      - params:
          stage: Annihilation
          expiring_medicine: 1000
          times: 5
        condition:
          type: Combined
          conditions:
            - type: Weekday
              weekdays:
                - Mon
            - type: Time
              end: 12:00:00
      - params:
          stage: RS-5
          expiring_medicine: 1000

  - type: CloseDown

使用版本:

2023-12-11 16:22:21 Up to date: MaaCore v4.27.1.
2023-12-11 16:22:26 Up to date: maa-cli v0.4.0-alpha.1702239035.

运行输出:

root@NAS:/volume1/maa# maa run daily -v
2023-12-11 16:36:21 Connected
2023-12-11 16:36:31 StartTask StartUp
2023-12-11 16:36:37 CompleteTask StartUp
2023-12-11 16:36:38 StartTask Award
2023-12-11 16:36:43 CompleteTask Award
2023-12-11 16:36:44 AllTasksCompleted

把RS-5改成1-7是可以正常作战的,1-7作战日志如下:

root@NAS:/volume1/maa# maa run daily -v
2023-12-11 16:31:52 Connected
2023-12-11 16:32:00 StartTask StartUp
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init       Runtime initialized with Backend::ORT in Device::CPU.
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init       Runtime initialized with Backend::ORT in Device::CPU.
libpng warning: sBIT: invalid
2023-12-11 16:32:17 CompleteTask StartUp
2023-12-11 16:32:17 StartTask Fight
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init       Runtime initialized with Backend::ORT in Device::CPU.
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init       Runtime initialized with Backend::ORT in Device::CPU.
2023-12-11 16:32:33 MissionStart 1 times
2023-12-11 16:35:09 Drops Unknown: 12 (+12), 酮凝集: 1 (+1), 固源岩: 1 (+1), 龙门币: 144 (+144)
2023-12-11 16:35:33 CompleteTask Fight
2023-12-11 16:35:33 StartTask Award
^CError: Interrupted by user!

是哪里没更新吗?

运行时出现神秘日志

❯ maa run u
[2024-03-13 17:11:20 INFO ] Connected
[2024-03-13 17:11:21 INFO ] FastestWayToScreencap RawByNc 123
[2024-03-13 17:11:21 INFO ] StartUp Start
[2024-03-13 17:11:24 INFO ] StartUp Completed
[2024-03-13 17:11:24 INFO ] Recruit Start
[WARNING] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(246)::UseGpu    The FastDeploy didn't compile with GPU, will force to use CPU.
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.
[INFO] /home/runner/work/MaaDeps/MaaDeps/vcpkg/buildtrees/maa-fastdeploy/src/7b46ddfce2-ca3f4b205b.clean/fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.
[2024-03-13 17:11:28 INFO ] Recruit Completed
[2024-03-13 17:11:28 INFO ] Infrast Start
[2024-03-13 17:11:39 INFO ] EnterFacility
……

中间这段日志不像是由 cli 正常产生。请问有没有办法关闭或重定向。

该问题在运行任何任务时均出现。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.