Compare commits
243 Commits
fix/quick-
...
feat/Copil
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a30f9a7dd | ||
|
|
61345d8126 | ||
|
|
07e01367e7 | ||
|
|
b9274e1904 | ||
|
|
9dcfeb28fd | ||
|
|
e21a6630f4 | ||
|
|
fccaf06d6d | ||
|
|
c99f05fbd9 | ||
|
|
4ed401f1f4 | ||
|
|
c9c8e9751d | ||
|
|
6119232486 | ||
|
|
c9085e7d23 | ||
|
|
5814f1a6ca | ||
|
|
c59397b377 | ||
|
|
cccbef1637 | ||
|
|
1bcafbc718 | ||
|
|
c322b532be | ||
|
|
532e775359 | ||
|
|
8780642041 | ||
|
|
a1115031c0 | ||
|
|
dad687c360 | ||
|
|
d3809b5b83 | ||
|
|
b7da52dbe8 | ||
|
|
fca1966320 | ||
|
|
f3424510a2 | ||
|
|
ce14b73f23 | ||
|
|
80d4856901 | ||
|
|
48243c1990 | ||
|
|
3f6fa475ff | ||
|
|
5960bcff7f | ||
|
|
ce271403b9 | ||
|
|
2239a47229 | ||
|
|
28f588ec87 | ||
|
|
5473b1ba94 | ||
|
|
8815af5533 | ||
|
|
11e0836aa0 | ||
|
|
6b5c8af57e | ||
|
|
eb3d386014 | ||
|
|
6c9b907ffe | ||
|
|
1cd98d5c21 | ||
|
|
c0e82a346e | ||
|
|
083e4338f4 | ||
|
|
0e4d577add | ||
|
|
8bc39a22f5 | ||
|
|
e529e5d934 | ||
|
|
d0f57f11c8 | ||
|
|
1a848c4416 | ||
|
|
ef96d2828b | ||
|
|
8a1ceafaa0 | ||
|
|
48e007035f | ||
|
|
38c5e74404 | ||
|
|
77d6ac7118 | ||
|
|
d63e6d5d8d | ||
|
|
5b8ae926c2 | ||
|
|
8289328484 | ||
|
|
b117ace40e | ||
|
|
1efa4e2574 | ||
|
|
54e9bc97b9 | ||
|
|
112b242020 | ||
|
|
792214af34 | ||
|
|
5295f63a27 | ||
|
|
728f9ca077 | ||
|
|
22f3175b42 | ||
|
|
4bc96d57da | ||
|
|
1d60c2363b | ||
|
|
be568fbc1e | ||
|
|
505c8e9d10 | ||
|
|
26972c2769 | ||
|
|
3c88f16dde | ||
|
|
70235d7fd5 | ||
|
|
b38e1b46ba | ||
|
|
4083e21521 | ||
|
|
1d909ea38a | ||
|
|
e5365c1447 | ||
|
|
4e35863be0 | ||
|
|
9d5ab6d7c5 | ||
|
|
469c1e670c | ||
|
|
c4c15ef103 | ||
|
|
3c20e21182 | ||
|
|
9a2d43ca7e | ||
|
|
f831d19c57 | ||
|
|
d345466992 | ||
|
|
4dc9a4ed27 | ||
|
|
736bab5427 | ||
|
|
a8ceb64f16 | ||
|
|
3d4a3eb578 | ||
|
|
38494fa461 | ||
|
|
e3570d17e8 | ||
|
|
4c9c1d12ce | ||
|
|
a0588e7da6 | ||
|
|
0404959bd1 | ||
|
|
a387d5f8a4 | ||
|
|
d913335886 | ||
|
|
08f71fcfc0 | ||
|
|
cac4c27bbc | ||
|
|
3ef75d587c | ||
|
|
4a14245283 | ||
|
|
b3122fbd94 | ||
|
|
5445962a7b | ||
|
|
20d257f6f4 | ||
|
|
7cc6cbf5ce | ||
|
|
8f425bebf1 | ||
|
|
aaa0818c45 | ||
|
|
2cb0be8630 | ||
|
|
4ff7c5f01d | ||
|
|
0a5b8e66a7 | ||
|
|
e644e10d80 | ||
|
|
c75eeb93bc | ||
|
|
ef0e4958bf | ||
|
|
cfa3fedb0c | ||
|
|
3b909f3959 | ||
|
|
6d18eaa47c | ||
|
|
0518c61e87 | ||
|
|
925ff331a1 | ||
|
|
65a5566c9e | ||
|
|
a4e2b12e06 | ||
|
|
a7548d7612 | ||
|
|
a5d95e5fbe | ||
|
|
e83e49f61b | ||
|
|
bdffc8cd1a | ||
|
|
9227357ea7 | ||
|
|
540c8acbf5 | ||
|
|
1c05ff9bc8 | ||
|
|
6c6117ddb2 | ||
|
|
013c899d34 | ||
|
|
0df451b7d9 | ||
|
|
0fab39caff | ||
|
|
73f8ebb8f1 | ||
|
|
a99294ef90 | ||
|
|
e884491a93 | ||
|
|
df0e271611 | ||
|
|
edd564088b | ||
|
|
2182951ed0 | ||
|
|
cc0163edd9 | ||
|
|
a6523b01d5 | ||
|
|
a8245441a3 | ||
|
|
a34da437d0 | ||
|
|
094ff47873 | ||
|
|
ffd98e800e | ||
|
|
d504e074ce | ||
|
|
c7d1fe686d | ||
|
|
cf30d71067 | ||
|
|
2216175e5c | ||
|
|
a91286f41d | ||
|
|
2061050857 | ||
|
|
a20351fcf1 | ||
|
|
84152a88f3 | ||
|
|
9adf423aa4 | ||
|
|
426c964e59 | ||
|
|
b1659e0a70 | ||
|
|
ef614156d0 | ||
|
|
d56ecf73b9 | ||
|
|
b4429c4b6f | ||
|
|
719d04f53d | ||
|
|
5f2d547998 | ||
|
|
e9d8f6a844 | ||
|
|
4215a05371 | ||
|
|
dd7ec5cd20 | ||
|
|
a62258f74e | ||
|
|
de4476b545 | ||
|
|
e6b3223e29 | ||
|
|
be77d7b1bc | ||
|
|
34d1f8413a | ||
|
|
04a793e6ce | ||
|
|
5619aefa10 | ||
|
|
d2ee76d2f6 | ||
|
|
8f1b7fd087 | ||
|
|
ea22cbab4a | ||
|
|
f733530b67 | ||
|
|
33885b1294 | ||
|
|
893793efff | ||
|
|
8161976869 | ||
|
|
60cbc68e59 | ||
|
|
b65b37fba8 | ||
|
|
7d3f8bfa2d | ||
|
|
4a77baba13 | ||
|
|
b9fca6f03d | ||
|
|
1b1bc15aca | ||
|
|
54f07fc3ad | ||
|
|
ce9fc40ef5 | ||
|
|
fa5929a5f5 | ||
|
|
adcf581ab3 | ||
|
|
7567ca7950 | ||
|
|
83ce081ac5 | ||
|
|
d6cdfc6c77 | ||
|
|
b0f46de1e6 | ||
|
|
a1064f7c21 | ||
|
|
ac3b986d7a | ||
|
|
f08793369e | ||
|
|
8da0b89e6e | ||
|
|
0913148a69 | ||
|
|
5eb161a390 | ||
|
|
0c4bcf6aae | ||
|
|
f90cc11100 | ||
|
|
f1be7f5711 | ||
|
|
e6fad34468 | ||
|
|
4a3780528a | ||
|
|
c45b476a30 | ||
|
|
3214aa96e7 | ||
|
|
9c1ac90446 | ||
|
|
a1fb539856 | ||
|
|
31fdcf191f | ||
|
|
f888adb99a | ||
|
|
2976930308 | ||
|
|
4fb1570f91 | ||
|
|
beedbd37cc | ||
|
|
3d29fcb8ed | ||
|
|
3e5691fe1b | ||
|
|
3a050d301a | ||
|
|
5788be68d3 | ||
|
|
0487ff3288 | ||
|
|
478de0cccb | ||
|
|
b7598d8f66 | ||
|
|
4ce5e9bf97 | ||
|
|
e68a07feff | ||
|
|
9b7624da39 | ||
|
|
7df2736fbc | ||
|
|
92192d969b | ||
|
|
3645360869 | ||
|
|
f607149e4c | ||
|
|
a3fd3055c0 | ||
|
|
d9991239b7 | ||
|
|
af783dd558 | ||
|
|
df92aa2716 | ||
|
|
0336b45de8 | ||
|
|
7bd54ce7e9 | ||
|
|
b355c6cbc5 | ||
|
|
42473f1ede | ||
|
|
b3f9ecc259 | ||
|
|
e0564099b2 | ||
|
|
5b6dfc3d50 | ||
|
|
d8df4e753e | ||
|
|
8b287f36c7 | ||
|
|
39960ed8ef | ||
|
|
1e0d04fe48 | ||
|
|
1a689cbf0b | ||
|
|
110db7ab85 | ||
|
|
d88d4ad484 | ||
|
|
8e4e4c16ee | ||
|
|
d9c793cfd3 | ||
|
|
733ce5bd81 | ||
|
|
50000b988a | ||
|
|
98dd6f7ba1 |
11
.clangd
@@ -1,5 +1,14 @@
|
||||
If:
|
||||
PathMatch: unit_test/.*\.(c|cc|cpp|cxx|h|hh|hpp)$
|
||||
CompileFlags:
|
||||
CompilationDatabase: build/unit_test
|
||||
Add: [-Wunused-variables]
|
||||
---
|
||||
If:
|
||||
PathExclude: unit_test/.*\.(c|cc|cpp|cxx|h|hh|hpp)$
|
||||
CompileFlags:
|
||||
CompilationDatabase: build
|
||||
Add: [-Wunused-variables]
|
||||
---
|
||||
Diagnostics:
|
||||
UnusedIncludes: None
|
||||
UnusedIncludes: None
|
||||
|
||||
29
.claude/skills/maa-issue-log-analysis/KNOWLEDGE.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# MAA Issue Log Analysis Knowledge Base
|
||||
|
||||
## Stateful UI Automation Checks
|
||||
|
||||
- 分析 issue 时,先区分三层东西,不要混为一谈:
|
||||
- 游戏规则
|
||||
- MAA 当前自动化流程
|
||||
- 用户对最终状态的预期
|
||||
- 遇到“一键/快捷/批量”按钮时,先看资源任务和日志里的真实控制路径,不要只看现象。
|
||||
- 对状态型 UI,重点核对三件事:
|
||||
- 前置条件是什么
|
||||
- 流程中哪些状态会被临时改写
|
||||
- 结束条件满足后应停在哪个状态
|
||||
|
||||
## Reception Clue Analysis
|
||||
|
||||
- 会客室线索问题先对照当前资源任务和日志,不要只凭体感下结论。
|
||||
- 取下线索 -> 赠送重复线索 -> 当前线索数量够开启线索交流时才统一放置,这是 by design。
|
||||
- 因此,“送完重复线索后线索板暂时为空”或“用户自己放的线索被统一取下”本身不能直接判成 bug。
|
||||
- 真正需要继续确认的是:
|
||||
- 日志里的控制路径是否和资源任务定义一致
|
||||
- 明明已经满足开启线索交流的条件,却没有触发统一放置
|
||||
- 流程是否停在了不该停的位置,或提前退出
|
||||
|
||||
## Guardrails For Future Analysis
|
||||
|
||||
- 不要把维护者评论、机器人评论、或单张截图当成最终结论;必须回到日志和代码确认状态是怎么变化的。
|
||||
- 对状态型 UI,先回答“日志里的行为是否符合设计”,再回答“这个设计是否符合用户预期”。
|
||||
- 不要只看最终现象;要结合配置、`gui.log`、`asst.log`、资源任务和当前代码一起判断。
|
||||
@@ -5,6 +5,11 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
|
||||
# MAA Issue Log Analysis
|
||||
|
||||
## Required Reading
|
||||
|
||||
- 开始分析前,先读取同目录的 `KNOWLEDGE.md`,先用其中的通用误判规则校正自己的分析路径,再读 issue 和日志。
|
||||
- 如果 issue 涉及会客室、线索、快捷按钮、批量按钮、自动领取/赠送/放置这类“会先改变界面状态再继续执行”的流程,必须先套用 `KNOWLEDGE.md` 中的 `Stateful UI Automation Checks` 与 `Reception Clue Analysis`。
|
||||
|
||||
## Scope
|
||||
|
||||
- 仅用于上游公开仓库 `https://github.com/MaaAssistantArknights/MaaAssistantArknights`。
|
||||
@@ -25,6 +30,7 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- 读取正文和评论。
|
||||
- 提取这些信息:UI/Core/Resource 版本、资源时间、模拟器类型、分辨率、截图增强、GPU 推理、任务名、关卡名、是否有 `-hard`、用户现象、复现步骤、维护者或机器人评论。
|
||||
- 不要把评论结论当成唯一证据;仍要用日志和代码自行验证。
|
||||
- 如果 issue 文本或评论里已经有人下了“这是游戏设计 / 不是 bug / 本来就这样”的结论,先暂存,不要直接复述成最终判断;先核对日志、资源任务和当前代码是否真的支持这个结论。
|
||||
|
||||
3. 提取报告附件。
|
||||
|
||||
@@ -60,6 +66,10 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- 先在 `gui.log` 确认 `AttachWindow: Found window`
|
||||
- 再在 `asst.log` 里看 `Win32Controller::screencap`、`Win32Controller::click`
|
||||
- 不要再按 ADB 端口或 `ConnectionInfo.ConnectFailed` 的思路分析
|
||||
- 如果问题属于状态型 UI 自动化(例如会客室线索、批量按钮、快捷按钮、先拆后放一类流程),时间线里必须单独标出:
|
||||
- 自动化在什么时刻先修改了用户原状态
|
||||
- 后续进入下一步或恢复终态由哪个条件控制
|
||||
- 条件不满足时流程是停止、跳过,还是按设计停在别的状态
|
||||
|
||||
6. 区分 issue 当时环境和当前分支。
|
||||
|
||||
@@ -245,6 +255,12 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- 摘几十行足够支撑结论的片段即可。
|
||||
- 不要把整份日志倾倒进回复。
|
||||
|
||||
8. 对状态型 UI 问题,结论前先做一次“设计一致性检查”。
|
||||
|
||||
- 先判断日志中的状态变化是否符合游戏规则、资源任务定义和当前实现。
|
||||
- 如果流程与设计一致,不要把用户不喜欢的中间状态直接归为 bug。
|
||||
- 只有当日志、资源任务和代码彼此冲突,或流程没有达到设计要求的终态时,再归类为实现缺陷。
|
||||
|
||||
## Common Patterns
|
||||
|
||||
- `gui.log` 只显示“连接失败”,但 `asst.log` 里已经给出 `adb devices`、`adb connect`、端口轮询和 `ConnectionInfo`。连接类问题必须以 `asst.log` 为准。
|
||||
@@ -254,6 +270,8 @@ description: 分析 MaaAssistantArknights 上游仓库公开 Issue(`https://gi
|
||||
- `part02` 可以是空包,也可以只包含图片;不要因为没有文本日志就把它判成“无用分卷”。
|
||||
- issue 机器人评论“日志没有上传成功”时,不要自动当真;先验证正文附件是否仍可下载。
|
||||
- 如果 `gui.log` 说“任务出错”,但对应 `taskid` 的 `asst.log` 实际 `AllTasksCompleted`,要明确写“本次日志未复现用户描述的问题”。
|
||||
- 对会客室 / 线索 issue,如果 `asst.log` 里出现 `InfrastClueQuickInsert`、`remove_clue`、`SendClues` 或 `InfrastClueQuickSendDuplicates`,先对照资源任务判断这是不是当前设计流程,不要只看线索板中途是否为空。
|
||||
- 如果线索流程里出现“取下线索 -> 赠送重复线索 -> 条件满足后统一放置”,默认先按 by design 处理;只有当日志显示本应统一放置却没有发生时,再继续追实现问题。
|
||||
- 用户日志里的任务流程与当前主线代码明显不一致,且当前代码看起来已经修掉了该问题:
|
||||
|
||||
- 先确认用户版本,必要时切到对应 tag(例如 `git checkout vXXX`)核对旧逻辑。
|
||||
|
||||
209
.devin/wiki.json
@@ -1,117 +1,212 @@
|
||||
{
|
||||
"repo_notes": [
|
||||
{
|
||||
"content": "【语言要求】所有 wiki 页面的标题、正文、说明文字必须使用简体中文撰写。涉及到的外部链接如有中文版本,优先使用中文链接(如 https://docs.maa.plus/zh-cn/ 而非英文版)。仅在中文名不通用时保留英文术语(如 OCR、ADB、CLI、JSON 等缩写),其余一律使用中文。",
|
||||
"author": "maintainer"
|
||||
"content": "所有 wiki 页面标题、正文、说明文字必须使用简体中文;涉及外部链接时优先使用中文文档,如 docs.maa.plus 的 zh-cn 页面;仅在中文名不通用时保留 OCR、ADB、CLI、JSON、API 等缩写。"
|
||||
},
|
||||
{
|
||||
"content": "MAA(MAA Assistant Arknights)是一款基于图像识别的《明日方舟》自动化助手,支持 Windows / Linux / macOS 三平台。核心部分 MaaCore 使用 C++20 编写,位于 src/MaaCore/;Windows 图形界面 MaaWpfGui 位于 src/MaaWpfGui/(C# + WPF);命令行工具 maa-cli 位于 src/maa-cli/(Rust,子模块);macOS 界面 MaaMacGui 位于 src/MaaMacGui/(子模块)。项目使用 CMake 构建,第三方依赖在 3rdparty/,对外 C 头文件在 include/。项目许可证为 AGPL-3.0-only。",
|
||||
"author": "maintainer"
|
||||
"content": "MAA 是基于图像识别的《明日方舟》自动化助手,仓库中的主要实现集中在 src/MaaCore、src/MaaWpfGui、resource、docs、tools、include;文档应围绕这些主干说明系统关系。"
|
||||
},
|
||||
{
|
||||
"content": "resource/ 目录包含游戏相关的识别资源与任务数据,体量很大,含大量 JSON 任务定义文件和模板图片。这是 MAA 功能实现的关键数据层——所有任务流程(作战、公招、基建等)的识别模板、任务流程 JSON 均在此目录下。需要重点说明 resource 的目录结构和任务 JSON 的编写规则。",
|
||||
"author": "maintainer"
|
||||
"content": "src/maa-cli、src/MaaMacGui、src/MAAUnified、src/MaaUtils、test、3rdparty/EmulatorExtras 是子模块或边界模块;说明它们与主仓库的集成关系即可,不要假设所有内部实现都在当前仓库。"
|
||||
},
|
||||
{
|
||||
"content": "MAA 提供多语言集成接口:C(include/AsstCaller.h)、Python(src/Python/)、Java(src/Java/)、Rust(src/Rust/)、Golang(src/Golang/)、Dart(src/Dart/)、Woolang(src/Woolang/)等。协议文档详见 https://docs.maa.plus/zh-cn/protocol/integration.html 。tools/ 目录包含丰富的内部工具脚本,用于资源更新(ResourceUpdater)、OTA 打包(OTAPacker)、模板优化(OptimizeTemplates)、海外客户端适配(OverseasClients)、肉鸽相关工具等。",
|
||||
"author": "maintainer"
|
||||
"content": "MaaCore 需要按 Assistant、Controller、Vision、Task、Config 的协作关系来写,而不是仅按目录逐个罗列;重点说明任务调度、设备控制、视觉识别、任务执行和资源加载如何配合。"
|
||||
},
|
||||
{
|
||||
"content": "docs/ 目录是基于 VuePress 的多语言文档站点(https://docs.maa.plus),包含用户手册、开发指南、协议文档等。.github/ 目录包含 CI/CD 工作流(ci.yml、release-*.yml 等)、Issue 模板、自动化机器人配置。test/ 为 Git 子模块 MaaTestSet,用于回归测试。",
|
||||
"author": "maintainer"
|
||||
"content": "resource/tasks 目录是任务定义的主入口,加载时会递归合并目录内 JSON;旧的 tasks.json 只是兼容旧结构的 deprecated fallback,不应继续作为主要入口来描述。"
|
||||
},
|
||||
{
|
||||
"content": "resource/global/<client>/resource 与 resource/platform_diff/*/resource 是覆盖层,用于外服适配和平台差异;说明时要突出主资源与覆盖资源的关系,而不是把它们写成独立产品线。"
|
||||
},
|
||||
{
|
||||
"content": "WPF GUI 是主仓库中的主要图形界面;CLI、Mac GUI 与各语言绑定是 MaaCore 的其他入口;文档应强调共享核心引擎、不同接入层的整体架构。"
|
||||
},
|
||||
{
|
||||
"content": "unit_test 是仓库内的 Catch2 与 CTest 单元测试体系;test 是 MaaTestSet 回归测试子模块;docs 是独立的 VuePress 文档站,应按 manual、protocol、develop、glossary 等内容域来组织说明。"
|
||||
},
|
||||
{
|
||||
"content": "interface.json 定义 controller 与 resource 变体,package-definition.json 定义发布包形态;构建、发布和资源相关页面需要覆盖这两个入口文件的作用。"
|
||||
}
|
||||
],
|
||||
"pages": [
|
||||
{
|
||||
"title": "项目总览",
|
||||
"purpose": "介绍 MAA 项目的整体定位、核心功能(自动作战、基建换班、公招识别、肉鸽自动化等)、支持平台、许可证,以及仓库的高层目录结构概览。引用链接使用中文文档 https://docs.maa.plus/zh-cn/"
|
||||
"purpose": "介绍 MAA 的产品定位、支持平台、许可证、顶层目录结构,以及 MaaCore、resource、前端入口、自动化功能和工程体系之间的阅读路径;本页只做导航与高层概览,不展开实现细节。",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "本页只负责建立阅读路径和高层认知,不重复 MaaCore、resource、自动化功能或工程体系子页中的实现细节。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "系统架构",
|
||||
"purpose": "描述 MAA 的整体系统架构:MaaCore(C++ 核心库)作为后端引擎,通过 C 接口对外暴露功能;上层由 WPF GUI / macOS GUI / CLI 等前端调用。说明 Controller(连接控制)、Vision(图像识别)、Task(任务流水线)三大子系统的关系,以及 resource 数据层如何驱动任务执行",
|
||||
"parent": "项目总览"
|
||||
"title": "MaaCore 引擎",
|
||||
"purpose": "说明 src/MaaCore 的整体运行时结构,重点描述 Assistant、Controller、Vision、Task、Config 五个核心部分如何协作构成自动化引擎。",
|
||||
"parent": "项目总览",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "优先围绕 Assistant、Controller、Vision、Task、Config 的协作关系展开,并用 src/MaaCore 中的实际类型和目录说明运行时结构。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "MaaCore 核心库",
|
||||
"purpose": "详细文档化 src/MaaCore/ 的内部结构,包括:Assistant 主类与任务调度、Controller 子系统(ADB 连接、Minitouch/MaaTouch 触控)、Vision 子系统(模板匹配、OCR 识别、特征检测)、Task 子系统(任务流水线、AbstractTask 基类和各具体任务实现)。重点说明任务是如何由 JSON 定义驱动的",
|
||||
"parent": "系统架构"
|
||||
},
|
||||
{
|
||||
"title": "任务流水线与任务 JSON",
|
||||
"purpose": "文档化 MAA 的任务流程协议:resource/ 中的 tasks.json 文件如何定义识别-动作流程,包括模板匹配(TemplateMatch)、OCR 识别(OcrDetect)、各种 action 类型、next/timeout/onError 跳转逻辑等。参考协议文档 https://docs.maa.plus/zh-cn/protocol/task-schema.html",
|
||||
"parent": "MaaCore 核心库"
|
||||
},
|
||||
{
|
||||
"title": "图像识别与 OCR",
|
||||
"purpose": "文档化 src/MaaCore/ 中 Vision 子系统的实现:OpenCV 模板匹配、PaddleOCR 文字识别、ONNX Runtime 推理加速、DirectML GPU 加速、特征点检测等。说明识别流程如何与任务流水线配合",
|
||||
"parent": "MaaCore 核心库"
|
||||
"title": "Assistant 与公共 API",
|
||||
"purpose": "文档化 Assistant 的任务队列、线程模型和生命周期管理,以及 include/AsstCaller.h 暴露的公共 C 接口如何作为各类前端和绑定层的统一调用入口。",
|
||||
"parent": "MaaCore 引擎"
|
||||
},
|
||||
{
|
||||
"title": "设备连接与控制器",
|
||||
"purpose": "文档化 Controller 子系统:ADB 连接管理、截图方式(screencap)、触控方式(Minitouch、MaaTouch、ADB input)、模拟器适配。涵盖 src/MaaCore/ 中 Controller 相关代码和 3rdparty/EmulatorExtras 子模块",
|
||||
"parent": "MaaCore 核心库"
|
||||
"purpose": "文档化 Controller 子系统,包括 ADB 连接、截图链路、触控链路、模拟器适配、Minitouch 与 MaaTouch,以及控制器实现如何为任务执行提供设备 I/O。",
|
||||
"parent": "MaaCore 引擎"
|
||||
},
|
||||
{
|
||||
"title": "资源目录结构",
|
||||
"purpose": "文档化 resource/ 目录的完整结构:各客户端(国服、国际服、日服、韩服、繁中服)的资源组织方式、模板图片目录、tasks.json 的分层结构、基建数据、公招数据、关卡导航数据、肉鸽相关资源等",
|
||||
"parent": "系统架构"
|
||||
"title": "图像识别与 OCR",
|
||||
"purpose": "文档化 Vision 子系统中模板匹配、OCR、特征检测、ONNX 推理和 PaddleOCR 等识别能力,以及各类分析器如何为任务执行提供决策输入。",
|
||||
"parent": "MaaCore 引擎"
|
||||
},
|
||||
{
|
||||
"title": "任务引擎与执行模型",
|
||||
"purpose": "文档化 AbstractTask、PackageTask、InterfaceTask、ProcessTask、任务插件和流程控制机制,说明任务定义如何转换为可执行的自动化流程。",
|
||||
"parent": "MaaCore 引擎"
|
||||
},
|
||||
{
|
||||
"title": "资源与配置系统",
|
||||
"purpose": "说明 resource 目录与 MaaCore 配置加载体系的关系,概述任务数据、模板、模型、外服覆盖和专用数据包如何共同驱动自动化逻辑。",
|
||||
"parent": "项目总览"
|
||||
},
|
||||
{
|
||||
"title": "资源加载与覆盖规则",
|
||||
"purpose": "文档化 ResourceLoader、TaskData、TemplResource 和 WPF 侧资源加载流程,说明主资源、缓存资源、外服资源和平台差异资源的搜索路径与叠加顺序。",
|
||||
"parent": "资源与配置系统",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "以 src/MaaCore/Config/ResourceLoader.cpp、src/MaaCore/Config/TaskData.cpp、src/MaaWpfGui/Main/AsstProxy.cs 和 interface.json 为主要事实锚点,明确目录优先、覆盖叠加和外服差异的加载规则。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "任务 JSON 与任务树",
|
||||
"purpose": "文档化 resource/tasks 目录中的任务定义结构、任务 JSON 的识别与动作协议、next、timeout、onError 等跳转规则,以及任务树的组织方式。",
|
||||
"parent": "资源与配置系统",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "强调 resource/tasks 是主入口、目录会递归合并 JSON、旧的 tasks.json 是 deprecated fallback,并说明任务树与模板资源之间的关系。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "模板、OCR 模型与识别资源",
|
||||
"purpose": "文档化 resource/template、resource/onnx、resource/PaddleOCR、resource/PaddleCharOCR、resource/ocr_config.json、resource/battle_data.json 等识别资源的职责分工,以及它们如何支撑视觉分析。",
|
||||
"parent": "资源与配置系统"
|
||||
},
|
||||
{
|
||||
"title": "外服与平台差异资源",
|
||||
"purpose": "文档化 resource/global 与 resource/platform_diff 的目录结构、覆盖逻辑与适配用途,说明国际服、日服、韩服、繁中服以及 PC 平台差异资源如何在主资源之上叠加。",
|
||||
"parent": "资源与配置系统"
|
||||
},
|
||||
{
|
||||
"title": "专用数据包与玩法资源",
|
||||
"purpose": "文档化 resource/copilot、resource/custom_infrast、resource/roguelike、resource/Arknights-Tile-Pos、resource/recruitment.json、resource/infrast.json、resource/stages.json 等专用数据包的职责,以及它们与自动化功能页的关系。",
|
||||
"parent": "资源与配置系统"
|
||||
},
|
||||
{
|
||||
"title": "前端与集成",
|
||||
"purpose": "概述 WPF GUI、CLI、Mac GUI 和多语言绑定等接入层如何共享 MaaCore,以及本仓库实现与子模块边界之间的关系。",
|
||||
"parent": "项目总览"
|
||||
},
|
||||
{
|
||||
"title": "WPF 图形界面",
|
||||
"purpose": "文档化 src/MaaWpfGui/ 的结构:MVVM 架构(基于 Stylet 框架)、主要 ViewModel(TaskQueueViewModel、SettingsViewModel 等)、界面功能模块(任务队列、设置页面、公招识别、远程控制等)、本地化与多语言支持",
|
||||
"parent": "系统架构"
|
||||
"purpose": "文档化 src/MaaWpfGui 的 MVVM 结构、主要 ViewModel 与 Services、界面功能模块、本地化资源,以及它如何与 MaaCore 交互。",
|
||||
"parent": "前端与集成"
|
||||
},
|
||||
{
|
||||
"title": "命令行工具 maa-cli",
|
||||
"purpose": "文档化 src/maa-cli/ 子模块:Rust 实现的命令行工具,支持 Linux/macOS/Windows,用于无 GUI 环境下运行 MAA 任务。说明其配置文件格式、任务调度方式、与 MaaCore 的集成方式。参考 https://docs.maa.plus/zh-cn/manual/cli/",
|
||||
"parent": "系统架构"
|
||||
"purpose": "文档化 src/maa-cli 子模块作为 Rust CLI 的定位、配置与调度角色,以及它与 MaaCore 和无 GUI 使用场景的关系。",
|
||||
"parent": "前端与集成"
|
||||
},
|
||||
{
|
||||
"title": "多语言集成接口",
|
||||
"purpose": "文档化 MAA 对外提供的多语言 API 接口:C 接口(include/AsstCaller.h)、Python(src/Python/)、Java(src/Java/)、Rust(src/Rust/)、Golang(src/Golang/)、Dart(src/Dart/)等。说明回调消息协议和集成方法。参考 https://docs.maa.plus/zh-cn/protocol/integration.html",
|
||||
"parent": "系统架构"
|
||||
"purpose": "文档化 include/AsstCaller.h 作为统一接口入口,以及 src/Python、src/Java、src/Rust、src/Golang、src/Dart、src/Woolang 等绑定层如何在不同语言环境中接入 MaaCore。",
|
||||
"parent": "前端与集成",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "以 include/AsstCaller.h 为统一入口,按统一 C 接口加各语言封装层的方式组织内容,不按语言逐一展开成平行小页面。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "核心功能详解",
|
||||
"purpose": "按功能模块分别介绍 MAA 的核心自动化能力,包括:自动作战(关卡导航与掉落识别)、智能基建(干员效率计算与排班)、自动公招(标签识别与策略选择)、肉鸽自动化(Roguelike 策略与干员选择)、自动抄作业(Copilot JSON)等"
|
||||
"title": "自动化功能",
|
||||
"purpose": "概述 MAA 主要自动化能力的功能分区与实现入口,包括作战、基建、公招、肉鸽、抄作业和专项玩法等主题。",
|
||||
"parent": "项目总览"
|
||||
},
|
||||
{
|
||||
"title": "自动作战与关卡导航",
|
||||
"purpose": "文档化自动作战功能的实现:关卡选择与导航、理智管理、代理指挥、掉落物识别与数据上传(企鹅物流、一图流)。涵盖 MaaCore 中 FightTask 及相关代码",
|
||||
"parent": "核心功能详解"
|
||||
"purpose": "文档化 Fight 相关任务的关卡选择、导航、理智管理、代理指挥、掉落识别与数据上传流程,以及对应的数据资源与任务链路。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "基建自动换班",
|
||||
"purpose": "文档化基建功能的实现:干员效率计算、单设施最优解换班、自定义排班 JSON 支持。参考 https://docs.maa.plus/zh-cn/protocol/base-scheduling-schema.html",
|
||||
"parent": "核心功能详解"
|
||||
"purpose": "文档化 Infrast 相关任务的效率计算、排班与换班逻辑、自定义排班数据,以及基建资源与任务执行之间的关系。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "自动公招与标签识别",
|
||||
"purpose": "文档化公招标签 OCR、标签组合策略、识别结果处理与 recruitment 数据的关系,以及公招自动化的主要任务链路。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "肉鸽自动化",
|
||||
"purpose": "文档化肉鸽(Roguelike)自动化功能:自动刷源石锭和等级、烧水和凹直升策略、干员识别与练度评估、分队选择与招募逻辑。涵盖 MaaCore 中 Roguelike 相关代码和 resource 中的肉鸽资源数据",
|
||||
"parent": "核心功能详解"
|
||||
"purpose": "文档化 Roguelike 相关任务的主题配置、招募、练度识别、商店、遭遇、策略参数和不同主题之间的资源差异。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "自动抄作业",
|
||||
"purpose": "文档化 Copilot(自动抄作业)功能:作业 JSON 格式、干员部署与技能释放逻辑、与 prts.plus 作业站的配合。参考 https://docs.maa.plus/zh-cn/protocol/copilot-schema.html",
|
||||
"parent": "核心功能详解"
|
||||
"purpose": "文档化 Copilot 作业数据格式、干员部署与技能释放逻辑、作业资源的组织方式,以及与外部作业站的关系。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "构建系统与 CI/CD",
|
||||
"purpose": "文档化项目的构建配置:CMake 构建系统、maadeps 依赖管理、各平台编译流程(Windows/Linux/macOS)、.github/workflows/ 中的 CI 工作流(ci.yml、smoke-testing.yml、release-*.yml 等)、自动化发布流程"
|
||||
"title": "专项玩法自动化",
|
||||
"purpose": "文档化 SSS、Reclamation、MiniGame 等不适合并入主功能页的专项玩法任务族群,以及它们在 Task 与 resource 中的组织方式。",
|
||||
"parent": "自动化功能"
|
||||
},
|
||||
{
|
||||
"title": "工程体系",
|
||||
"purpose": "概述构建、发布、测试、文档站、内部工具与子模块边界之间的工程协作关系。",
|
||||
"parent": "项目总览"
|
||||
},
|
||||
{
|
||||
"title": "构建系统、CI/CD 与发布包",
|
||||
"purpose": "文档化 CMake 构建体系、依赖管理、跨平台构建流程、.github/workflows 中的持续集成流程,以及 package-definition.json 定义的发布包形态。",
|
||||
"parent": "工程体系"
|
||||
},
|
||||
{
|
||||
"title": "测试体系与回归资源",
|
||||
"purpose": "文档化 unit_test 的 Catch2 与 CTest 单元测试体系、test 子模块的回归测试角色、suite 组织方式,以及 CI 中的测试选择逻辑。",
|
||||
"parent": "工程体系",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "必须显式区分 unit_test 与 test 子模块,分别说明它们的定位、运行方式与 CI 集成方式,避免混写为单一测试体系。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "内部工具集",
|
||||
"purpose": "文档化 tools/ 目录下的开发与维护工具:ResourceUpdater(资源更新)、OTAPacker(OTA 打包)、OptimizeTemplates(模板优化)、OverseasClients(海外客户端适配)、RoguelikeRecruitmentTool(肉鸽招募工具)、ImageCropper(图片裁剪)等",
|
||||
"parent": "构建系统与 CI/CD"
|
||||
"purpose": "文档化 tools 目录下用于资源更新、模板优化、OTA 打包、海外客户端适配、肉鸽辅助和图像处理的内部工具及其维护用途。",
|
||||
"parent": "工程体系"
|
||||
},
|
||||
{
|
||||
"title": "外服适配",
|
||||
"purpose": "文档化如何为国际服、日服、韩服、繁中服适配 MAA 功能:资源替换流程、截图与 JSON 修改方法、多客户端资源目录结构。参考 https://docs.maa.plus/zh-cn/develop/overseas-client-adaptation.html",
|
||||
"parent": "核心功能详解"
|
||||
"title": "文档站、协议与开发指南",
|
||||
"purpose": "文档化 docs 目录作为 VuePress 文档站的结构,串联 manual、protocol、develop、glossary 等内容域,以及它们与外部中文文档站的关系。",
|
||||
"parent": "工程体系",
|
||||
"page_notes": [
|
||||
{
|
||||
"content": "优先使用 docs 目录内部结构解释文档体系,再引用 docs.maa.plus 中文页面;不要按不同语言版本重复讲述相同主题。"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "开发指南",
|
||||
"purpose": "面向贡献者的开发入门文档:环境搭建、编译步骤、代码规范、Git 工作流(dev-v2 分支)、Issue Bot 使用、PR 流程。参考 https://docs.maa.plus/zh-cn/develop/development.html"
|
||||
"title": "仓库结构与子模块边界",
|
||||
"purpose": "文档化顶层目录、include、3rdparty、resource、docs、src 等入口的职责分工,并明确各个子模块或边界模块在仓库中的定位。",
|
||||
"parent": "工程体系"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/cn-bug-report.yaml
vendored
@@ -45,8 +45,6 @@ body:
|
||||
**若待上传压缩包大于 25MB,请转而上传该压缩包同日期文件夹中的若干小压缩包**
|
||||
**若为 MAA 闪退问题,如果 %LOCALAPPDATA%\CrashDumps 中存在 MAA.exe.dmp 文件,请一并上传**
|
||||
若正在使用 macOS,请点击屏幕左上角的“文件”,点击“打开日志文件夹”
|
||||
placeholder: |
|
||||
请确认上传文件前已关闭 MAA
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/cn-ld-report.yaml
vendored
@@ -49,8 +49,6 @@ body:
|
||||
**请在 MAA -> 设置 -> 问题反馈中找到生成日志压缩包按钮,点击并上传压缩包**
|
||||
|
||||
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
|
||||
placeholder: |
|
||||
请确认上传文件前已关闭 MAA
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/cn-mumu-report.yaml
vendored
@@ -49,8 +49,6 @@ body:
|
||||
**请在 MAA -> 设置 -> 问题反馈中找到生成日志压缩包按钮,点击并上传压缩包**
|
||||
|
||||
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
|
||||
placeholder: |
|
||||
请确认上传文件前已关闭 MAA
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/en-bug-report.yaml
vendored
@@ -47,8 +47,6 @@ body:
|
||||
**If the archive to upload is larger than 25MB, please upload smaller archives from the same date folder instead.**
|
||||
**If the issue is related to MAA crashing, please upload the MAA.exe.dmp file found in %LOCALAPPDATA%\CrashDumps if it exists**
|
||||
If you are using macOS, please click the "File" option in the top-left corner of the screen, then click "Open Log Folder".
|
||||
placeholder: |
|
||||
Please confirm that MAA is not running before uploading files.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
68
.github/scripts/sync-optional-submodules.sh
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
mode="init"
|
||||
depth=""
|
||||
declare -a paths=()
|
||||
|
||||
while (($# > 0)); do
|
||||
case "$1" in
|
||||
--init)
|
||||
mode="init"
|
||||
shift
|
||||
;;
|
||||
--remote)
|
||||
mode="remote"
|
||||
shift
|
||||
;;
|
||||
--depth)
|
||||
depth="$2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
paths+=("$@")
|
||||
break
|
||||
;;
|
||||
*)
|
||||
paths+=("$1")
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if ((${#paths[@]} == 0)); then
|
||||
echo "Usage: $0 [--init|--remote] [--depth N] path [path ...]" >&2
|
||||
exit 64
|
||||
fi
|
||||
|
||||
is_submodule_path() {
|
||||
local path="$1"
|
||||
|
||||
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' 2>/dev/null \
|
||||
| awk '{ print $2 }' \
|
||||
| grep -Fxq "$path"
|
||||
}
|
||||
|
||||
for path in "${paths[@]}"; do
|
||||
if ! is_submodule_path "$path"; then
|
||||
echo "Skipping $path: not configured as a submodule in .gitmodules."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "$mode" == "remote" ]]; then
|
||||
echo "Updating submodule: $path"
|
||||
git submodule update --remote "$path"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -n "$depth" ]]; then
|
||||
echo "Initializing submodule: $path (depth=$depth)"
|
||||
git submodule update --init --depth "$depth" "$path"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Initializing submodule: $path"
|
||||
git submodule update --init "$path"
|
||||
done
|
||||
189
.github/workflows/ci-avalonia.yml
vendored
Normal file
@@ -0,0 +1,189 @@
|
||||
name: Build MAAUnified (Avalonia + MaaCore Runtime)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "src/MAAUnified"
|
||||
- "src/MAAUnified/**"
|
||||
- "src/MaaCore/**"
|
||||
- "src/MaaUtils/**"
|
||||
- "include/**"
|
||||
- "resource/**"
|
||||
- "tools/maadeps-download.py"
|
||||
- "CMakeLists.txt"
|
||||
- "CMakePresets.json"
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
paths:
|
||||
- "src/MAAUnified"
|
||||
- "src/MAAUnified/**"
|
||||
- "src/MaaCore/**"
|
||||
- "src/MaaUtils/**"
|
||||
- "include/**"
|
||||
- "resource/**"
|
||||
- "tools/maadeps-download.py"
|
||||
- "CMakeLists.txt"
|
||||
- "CMakePresets.json"
|
||||
|
||||
jobs:
|
||||
meta:
|
||||
name: Resolve version tag
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
tag: ${{ steps.out.outputs.tag }}
|
||||
steps:
|
||||
- id: out
|
||||
run: |
|
||||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
||||
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "tag=preview-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
build:
|
||||
name: Build ${{ matrix.name }}
|
||||
needs: meta
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: windows-x64
|
||||
os: windows-latest
|
||||
rid: win-x64
|
||||
self_contained: true
|
||||
cmake_preset: windows-publish-x64
|
||||
maadeps_triplet: x64-windows
|
||||
- name: linux-x64
|
||||
os: ubuntu-latest
|
||||
rid: linux-x64
|
||||
self_contained: true
|
||||
cmake_preset: linux-publish-x64
|
||||
maadeps_triplet: x64-linux
|
||||
- name: macos-x64
|
||||
os: macos-latest
|
||||
rid: osx-x64
|
||||
self_contained: true
|
||||
cmake_preset: macos-publish-x64
|
||||
maadeps_triplet: x64-osx
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Fetch required submodules
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MAAUnified src/MaaUtils
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: "10.0.x"
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.x"
|
||||
|
||||
- name: Restore app
|
||||
run: dotnet restore src/MAAUnified/App/MAAUnified.App.csproj
|
||||
|
||||
- name: Restore tests
|
||||
if: matrix.name != 'macos-x64'
|
||||
run: dotnet restore src/MAAUnified/Tests/MAAUnified.Tests.csproj
|
||||
|
||||
- name: Run Linux baseline consistency gate
|
||||
if: matrix.name == 'linux-x64'
|
||||
run: >
|
||||
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
|
||||
--results-directory TestResults/${{ matrix.name }}
|
||||
--logger "trx;LogFileName=baseline-consistency.trx"
|
||||
--filter "FullyQualifiedName~BaselineContractTests|FullyQualifiedName~BaselineCoverageTests|FullyQualifiedName~BaselineRenderSyncTests|FullyQualifiedName~ParityMatrixSyncTests"
|
||||
|
||||
- name: Run Linux full MAAUnified test gate
|
||||
if: matrix.name == 'linux-x64'
|
||||
run: >
|
||||
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
|
||||
--results-directory TestResults/${{ matrix.name }}
|
||||
--logger "trx;LogFileName=full-maaunified-tests.trx"
|
||||
|
||||
- name: Run Windows platform capability contract gate
|
||||
if: matrix.name == 'windows-x64'
|
||||
run: >
|
||||
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
|
||||
--results-directory TestResults/${{ matrix.name }}
|
||||
--logger "trx;LogFileName=platform-capability-contract.trx"
|
||||
--filter "FullyQualifiedName~PlatformCapabilityContractTests"
|
||||
|
||||
- name: Run Windows native capability smoke gate
|
||||
if: matrix.name == 'windows-x64'
|
||||
run: >
|
||||
dotnet test src/MAAUnified/Tests/MAAUnified.Tests.csproj -c Release --no-restore --disable-build-servers -m:1
|
||||
--results-directory TestResults/${{ matrix.name }}
|
||||
--logger "trx;LogFileName=platform-windows-native-smoke.trx"
|
||||
--filter "FullyQualifiedName~PlatformWindowsNativeSmokeTests"
|
||||
|
||||
- name: Upload test result artifacts on failure
|
||||
if: failure() && matrix.name != 'macos-x64'
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: MAAUnified-TestResults-${{ matrix.name }}
|
||||
path: TestResults/${{ matrix.name }}/*.trx
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Bootstrap MaaDeps
|
||||
run: python tools/maadeps-download.py ${{ matrix.maadeps_triplet }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build MaaCore runtime
|
||||
run: |
|
||||
cmake --preset ${{ matrix.cmake_preset }} -DINSTALL_PYTHON=OFF -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.cmake_preset }}
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Publish MAAUnified app
|
||||
run: dotnet publish src/MAAUnified/App/MAAUnified.App.csproj -c Release -r ${{ matrix.rid }} --self-contained ${{ matrix.self_contained }} -o publish
|
||||
|
||||
- name: Merge MaaCore runtime (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: |
|
||||
Copy-Item install\* publish\ -Recurse -Force
|
||||
if (!(Test-Path "publish\MaaCore.dll")) { throw "MaaCore.dll not found in publish output." }
|
||||
if (!(Test-Path "publish\resource")) { throw "resource directory not found in publish output." }
|
||||
|
||||
- name: Merge MaaCore runtime (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
cp -a install/. publish/
|
||||
if [[ "$RUNNER_OS" == "Linux" ]]; then
|
||||
test -f publish/libMaaCore.so
|
||||
else
|
||||
test -f publish/libMaaCore.dylib
|
||||
fi
|
||||
test -d publish/resource
|
||||
|
||||
- name: Package (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: pwsh
|
||||
run: |
|
||||
New-Item -ItemType Directory -Path release -Force | Out-Null
|
||||
$name = "MAAUnified-${{ needs.meta.outputs.tag }}-${{ matrix.name }}"
|
||||
Compress-Archive -Path publish\* -DestinationPath "release\$name.zip"
|
||||
|
||||
- name: Package (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p release
|
||||
name="MAAUnified-${{ needs.meta.outputs.tag }}-${{ matrix.name }}"
|
||||
tar -czf "release/${name}.tar.gz" -C publish .
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: MAAUnified-${{ matrix.name }}
|
||||
path: release/*
|
||||
65
.github/workflows/ci.yml
vendored
@@ -110,9 +110,8 @@ jobs:
|
||||
show-progress: false
|
||||
|
||||
- name: Fetch submodules
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
git submodule update --init --depth 1 3rdparty/EmulatorExtras
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras
|
||||
|
||||
- name: Cache MaaDeps
|
||||
id: cache-maadeps
|
||||
@@ -134,27 +133,32 @@ jobs:
|
||||
run: |
|
||||
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --build build --target MAA.Updater --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Download MaaFramework
|
||||
if: matrix.arch == 'x64'
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
tag: v5.9.2
|
||||
fileName: "*win-x86_64*.zip"
|
||||
fileName: ${{ matrix.arch == 'arm64' && '*win-aarch64*.zip' || '*win-x86_64*.zip' }}
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Copy MaaWin32ControlUnit
|
||||
if: matrix.arch == 'x64'
|
||||
- name: Copy ControlUnits
|
||||
run: |
|
||||
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
|
||||
cp MaaFramework-temp/bin/*AdbControlUnit* install/
|
||||
|
||||
- name: Generate global.json
|
||||
shell: bash
|
||||
run: |
|
||||
echo '{"sdk":{"version":"10.0.203","rollForward":"disable"}}' > global.json
|
||||
|
||||
- name: Setup .NET SDK
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: '10.0.202'
|
||||
global-json-file: global.json
|
||||
|
||||
- name: Cache .nuke/temp, ~/.nuget/packages
|
||||
id: cache-nuget
|
||||
@@ -212,6 +216,7 @@ jobs:
|
||||
rm -rf install/*.pdb
|
||||
rm -rf install/msvc-debug
|
||||
rm -rf install/*.h
|
||||
rm -rf install/*.bak
|
||||
|
||||
cp tools/DependencySetup_依赖库安装.bat install
|
||||
|
||||
@@ -241,10 +246,8 @@ jobs:
|
||||
show-progress: false
|
||||
|
||||
- name: Fetch submodules
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
git submodule update --init --depth 1 3rdparty/EmulatorExtras
|
||||
git submodule update --init --depth 1 src/maa-cli
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras src/maa-cli
|
||||
|
||||
- name: Cache MaaDeps
|
||||
id: cache-maadeps
|
||||
@@ -269,6 +272,19 @@ jobs:
|
||||
env:
|
||||
CLICOLOR_FORCE: 1
|
||||
|
||||
- name: Download MaaFramework
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
latest: true
|
||||
fileName: '*linux-${{ matrix.arch }}*.zip'
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Copy ControlUnits
|
||||
run: |
|
||||
cp MaaFramework-temp/bin/*AdbControlUnit* install/
|
||||
|
||||
- name: Setup cross compile toolchains for CLI
|
||||
uses: ./src/maa-cli/.github/actions/setup
|
||||
with:
|
||||
@@ -291,7 +307,7 @@ jobs:
|
||||
mkdir -pv release
|
||||
mkdir -pv Maa.AppDir/usr/share/maa
|
||||
cp -r install/* Maa.AppDir/usr/share/maa/
|
||||
wget -c https://raw.githubusercontent.com/MaaAssistantArknights/design/main/logo/maa-logo_512x512.png -O Maa.AppDir/maa.png
|
||||
wget -c https://raw.githubusercontent.com/MaaAssistantArknights/design/main/v2/icons/maa-logo_512x512.png -O Maa.AppDir/maa.png
|
||||
mkdir -pv Maa.AppDir/usr/share/icons/hicolor/512x512/apps/
|
||||
cp -v Maa.AppDir/maa.png Maa.AppDir/usr/share/icons/hicolor/512x512/apps/
|
||||
cp -v appimage-maa Maa.AppDir/usr/share/maa/maa
|
||||
@@ -348,8 +364,8 @@ jobs:
|
||||
show-progress: false
|
||||
|
||||
- name: Fetch submodules
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
|
||||
|
||||
# ninja 1.13.1 is already installed and up-to-date.
|
||||
# - name: Install dependencies
|
||||
@@ -376,6 +392,19 @@ jobs:
|
||||
cmake --build --preset ${{ matrix.arch == 'x86_64' && 'macos-publish-x64' || 'macos-publish-arm64' }} --parallel $(sysctl -n hw.logicalcpu)
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Download MaaFramework
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
latest: true
|
||||
fileName: ${{ matrix.arch == 'x86_64' && '*macos-x86_64*.zip' || '*macos-aarch64*.zip' }}
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Copy ControlUnits
|
||||
run: |
|
||||
cp MaaFramework-temp/bin/*AdbControlUnit* install/
|
||||
|
||||
- name: Upload MAA to GitHub
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
@@ -416,14 +445,14 @@ jobs:
|
||||
|
||||
- name: Install Developer ID certificate
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
uses: apple-actions/import-codesign-certs@v6
|
||||
uses: apple-actions/import-codesign-certs@v7
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.HGUANDL_SIGN_CERT_P12 }}
|
||||
p12-password: ${{ secrets.HGUANDL_SIGN_CERT_PASSWD }}
|
||||
|
||||
- name: Download provisioning profiles
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
uses: apple-actions/download-provisioning-profiles@v5
|
||||
uses: apple-actions/download-provisioning-profiles@v6
|
||||
with:
|
||||
bundle-id: "com.hguandl.MeoAsstMac"
|
||||
issuer-id: ${{ secrets.HGUANDL_APPSTORE_ISSUER }}
|
||||
@@ -562,7 +591,7 @@ jobs:
|
||||
find . -type f | while read f; do mv -fvt . $f; done
|
||||
|
||||
- name: Publish release to GitHub
|
||||
uses: softprops/action-gh-release@v2.6.1
|
||||
uses: softprops/action-gh-release@v3.0.0
|
||||
with:
|
||||
body_path: CHANGELOG.md
|
||||
files: |
|
||||
|
||||
8
.github/workflows/issue-checkbox-checker.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
steps:
|
||||
- name: Check for duplicate issues in last hour
|
||||
id: duplicate-check
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
|
||||
- name: Check for issue checkboxes
|
||||
id: unread-checkbox-check
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
// 找不到###就算了
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
|
||||
- name: Close low-quality issue
|
||||
if: steps.unread-checkbox-check.outputs.result == 'true'
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
await github.rest.issues.update({
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
|
||||
- name: Fold checkboxes
|
||||
if: steps.unread-checkbox-check.outputs.result == 'false'
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const originalBody = context.payload.issue.body;
|
||||
|
||||
4
.github/workflows/pr-checker.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clean up previous comment
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const { data: comments } = await github.rest.issues.listComments({
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
});
|
||||
}
|
||||
- name: Check commits
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const { data: commits } = await github.rest.pulls.listCommits({
|
||||
|
||||
13
.github/workflows/release-nightly-ota.yml
vendored
@@ -52,9 +52,8 @@ jobs:
|
||||
git fetch --depth=250 --tags
|
||||
|
||||
- name: Fetch submodules
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
git submodule update --init --depth 1 3rdparty/EmulatorExtras
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils 3rdparty/EmulatorExtras
|
||||
|
||||
- name: Checkout ref (if provided)
|
||||
if: inputs.ref != ''
|
||||
@@ -189,6 +188,7 @@ jobs:
|
||||
run: |
|
||||
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ steps.set_tag.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --build build --target MAA.Updater --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Download MaaFramework
|
||||
@@ -206,10 +206,15 @@ jobs:
|
||||
run: |
|
||||
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
|
||||
|
||||
- name: Generate global.json
|
||||
shell: bash
|
||||
run: |
|
||||
echo '{"sdk":{"version":"10.0.203","rollForward":"disable"}}' > global.json
|
||||
|
||||
- name: Setup .NET SDK
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: '10.0.202'
|
||||
global-json-file: global.json
|
||||
|
||||
- name: Cache .nuke/temp, ~/.nuget/packages
|
||||
id: cache-nuget
|
||||
|
||||
@@ -129,7 +129,7 @@ jobs:
|
||||
maa_cos:
|
||||
name: Upload to MAA COS
|
||||
needs: meta
|
||||
if: ${{ github.event.inputs.maa_cos == 'true' && !contains(needs.meta.outputs.RELEASE_TAG, '-') }}
|
||||
if: false
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
env:
|
||||
@@ -145,9 +145,9 @@ jobs:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload to COS
|
||||
uses: zkqiang/tencent-cos-action@v0.1.0
|
||||
uses: zkqiang/tencent-cos-action@v1.0.0
|
||||
with:
|
||||
args: upload -rs downloads/${{ env.FILENAME }} MAA/${{ env.FILENAME }}
|
||||
args: sync -r downloads/${{ env.FILENAME }} cos://default/MAA/${{ env.FILENAME }}
|
||||
secret_id: ${{ secrets.MISTEO_MAA_COS_SECRET_ID }}
|
||||
secret_key: ${{ secrets.MISTEO_MAA_COS_SECRET_KEY }}
|
||||
bucket: ${{ secrets.MISTEO_MAA_COS_BUCKET }}
|
||||
|
||||
42
.github/workflows/res-update-game.yml
vendored
@@ -165,8 +165,8 @@ jobs:
|
||||
|
||||
- name: Fetch submodules
|
||||
if: steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
|
||||
|
||||
- name: Cache MaaDeps
|
||||
if: steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
@@ -204,7 +204,7 @@ jobs:
|
||||
./tools/ResourceUpdater/res_updater
|
||||
|
||||
- name: Wait for resource cloning
|
||||
uses: yogeshlonkar/wait-for-jobs@v0
|
||||
uses: yogeshlonkar/wait-for-jobs@v1
|
||||
with:
|
||||
ignore-skipped: 'false'
|
||||
jobs: |
|
||||
@@ -235,10 +235,23 @@ jobs:
|
||||
run: |
|
||||
./tools/ResourceUpdater/res_updater
|
||||
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.11"
|
||||
cache: pip
|
||||
cache-dependency-path: |
|
||||
tools/TaskSorter/requirements.txt
|
||||
tools/OptimizeTemplates/requirements.txt
|
||||
|
||||
- name: Install TaskSorter dependencies
|
||||
run: |
|
||||
python -m pip install -r tools/TaskSorter/requirements.txt
|
||||
|
||||
- name: Sort tasks
|
||||
id: task_sorting
|
||||
run: |
|
||||
python3 tools/TaskSorter/TaskSorter.py
|
||||
python tools/TaskSorter/TaskSorter.py
|
||||
echo "gitdiff=$(echo $(git diff --name-only --diff-filter=ACM 2>/dev/null | grep '\.json$'))" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Run prettier
|
||||
@@ -251,25 +264,10 @@ jobs:
|
||||
run: |
|
||||
sh ./tools/ResourceUpdater/version.sh
|
||||
|
||||
- name: Setup python
|
||||
if: steps.update_version.outputs.contains_png == 'True'
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- name: Cache python packages
|
||||
if: always() && steps.update_version.outputs.contains_png == 'True'
|
||||
id: cache_python
|
||||
uses: actions/cache@v5
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ${{ env.pythonLocation }}/Lib/site-packages
|
||||
key: ${{ runner.os }}-pip-optimize-templates-${{ hashFiles('./tools/OptimizeTemplates/requirements.txt') }}
|
||||
|
||||
- name: Install dependencies
|
||||
if: steps.cache_python.outputs.cache-hit != 'true' && steps.update_version.outputs.contains_png == 'True'
|
||||
if: steps.update_version.outputs.contains_png == 'True'
|
||||
run: |
|
||||
pip install -r tools/OptimizeTemplates/requirements.txt
|
||||
python -m pip install -r tools/OptimizeTemplates/requirements.txt
|
||||
|
||||
- name: Setup oxipng
|
||||
if: steps.update_version.outputs.contains_png == 'True'
|
||||
@@ -280,7 +278,7 @@ jobs:
|
||||
- name: Optimize png images
|
||||
if: steps.update_version.outputs.contains_png == 'True'
|
||||
run: |
|
||||
python3 tools/OptimizeTemplates/optimize_templates.py --no-cleanup -p resource/template/items/ resource/template/infrast/
|
||||
python tools/OptimizeTemplates/optimize_templates.py --no-cleanup -p resource/template/items/ resource/template/infrast/
|
||||
|
||||
- name: Commit changes
|
||||
if: steps.update_version.outputs.changes == 'True'
|
||||
|
||||
4
.github/workflows/smoke-testing.yml
vendored
@@ -70,8 +70,8 @@ jobs:
|
||||
|
||||
- name: Fetch submodules
|
||||
if: steps.smoke-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git submodule update --init --depth 1 src/MaaUtils
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --init --depth 1 src/MaaUtils
|
||||
|
||||
- name: Cache MaaDeps
|
||||
if: steps.smoke-cache.outputs.cache-hit != 'true'
|
||||
|
||||
122
.github/workflows/unit-tests.yml
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
name: Unit Tests
|
||||
|
||||
on:
|
||||
# push:
|
||||
# branches:
|
||||
# - "dev-v2"
|
||||
# paths:
|
||||
# - ".github/workflows/unit-tests.yml"
|
||||
# - "unit_test/**"
|
||||
# - "src/**"
|
||||
# pull_request:
|
||||
# paths:
|
||||
# - ".github/workflows/unit-tests.yml"
|
||||
# - "unit_test/**"
|
||||
# - "src/**"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
select-tests:
|
||||
name: Select Unit Test Suites
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
has_tests: ${{ steps.select.outputs.has_tests }}
|
||||
matrix: ${{ steps.select.outputs.matrix }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
show-progress: false
|
||||
|
||||
- name: Select affected test suites
|
||||
id: select
|
||||
env:
|
||||
EVENT_NAME: ${{ github.event_name }}
|
||||
BEFORE_SHA: ${{ github.event.before }}
|
||||
HEAD_SHA: ${{ github.sha }}
|
||||
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
run: |
|
||||
python3 - <<'PY'
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def matches(path: str, rule: str) -> bool:
|
||||
if rule.endswith('/**'):
|
||||
return path.startswith(rule[:-3])
|
||||
return path == rule
|
||||
|
||||
with open('unit_test/test-suites.json', encoding='utf-8') as f:
|
||||
mapping = json.load(f)
|
||||
|
||||
event_name = os.environ['EVENT_NAME']
|
||||
changed_files = []
|
||||
run_all = event_name == 'workflow_dispatch'
|
||||
|
||||
if not run_all:
|
||||
if event_name == 'pull_request':
|
||||
base_sha = os.environ['PR_BASE_SHA']
|
||||
head_sha = os.environ['PR_HEAD_SHA']
|
||||
else:
|
||||
base_sha = os.environ['BEFORE_SHA']
|
||||
head_sha = os.environ['HEAD_SHA']
|
||||
|
||||
if not base_sha or set(base_sha) == {'0'}:
|
||||
run_all = True
|
||||
else:
|
||||
diff = subprocess.check_output(
|
||||
['git', 'diff', '--name-only', base_sha, head_sha],
|
||||
text=True,
|
||||
)
|
||||
changed_files = [line for line in diff.splitlines() if line]
|
||||
|
||||
print('Changed files:')
|
||||
for file_path in changed_files:
|
||||
print(f' - {file_path}')
|
||||
|
||||
if run_all or any(any(matches(path, rule) for rule in mapping['runAllOnChanges']) for path in changed_files):
|
||||
selected = mapping['suites']
|
||||
else:
|
||||
selected = []
|
||||
for suite in mapping['suites']:
|
||||
if any(any(matches(path, rule) for rule in suite['paths']) for path in changed_files):
|
||||
selected.append(suite)
|
||||
|
||||
matrix = {'suite': selected}
|
||||
with open(os.environ['GITHUB_OUTPUT'], 'a', encoding='utf-8') as f:
|
||||
f.write(f"has_tests={'true' if selected else 'false'}\n")
|
||||
f.write(f"matrix={json.dumps(matrix, separators=(',', ':'))}\n")
|
||||
PY
|
||||
|
||||
unit-tests:
|
||||
name: ${{ matrix.suite.name }} Unit Tests
|
||||
needs: select-tests
|
||||
if: ${{ needs.select-tests.outputs.has_tests == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(needs.select-tests.outputs.matrix) }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
show-progress: false
|
||||
|
||||
- name: Configure unit tests
|
||||
run: |
|
||||
cmake -S unit_test -B build/unit_test -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
- name: Build selected unit test target
|
||||
run: |
|
||||
cmake --build build/unit_test --parallel --target ${{ matrix.suite.buildTarget }}
|
||||
|
||||
- name: Run selected unit tests
|
||||
run: |
|
||||
ctest --test-dir build/unit_test --output-on-failure -R '${{ matrix.suite.ctestRegex }}'
|
||||
7
.github/workflows/update-submodules.yml
vendored
@@ -17,15 +17,14 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
git submodule update --remote src/MaaMacGui
|
||||
git submodule update --remote src/maa-cli
|
||||
shell: bash
|
||||
run: bash ./.github/scripts/sync-optional-submodules.sh --remote src/MAAUnified src/MaaMacGui src/maa-cli
|
||||
|
||||
- name: Commit and push changes
|
||||
uses: actions-js/push@master
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
message: "feat: Update Submodules MaaMacGui, maa-cli
|
||||
message: "feat: Update Submodules MAAUnified, MaaMacGui, maa-cli
|
||||
|
||||
https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
|
||||
|
||||
2
.gitignore
vendored
@@ -421,7 +421,7 @@ FodyWeavers.xsd
|
||||
.history/
|
||||
|
||||
# Claude Code
|
||||
.claude/
|
||||
.claude/*
|
||||
!.claude/skills/
|
||||
|
||||
# Windows Installer files from build outputs
|
||||
|
||||
4
.gitmodules
vendored
@@ -13,3 +13,7 @@
|
||||
[submodule "src/MaaUtils"]
|
||||
path = src/MaaUtils
|
||||
url = https://github.com/MaaXYZ/MaaUtils
|
||||
[submodule "src/MAAUnified"]
|
||||
path = src/MAAUnified
|
||||
url = https://github.com/MaaAssistantArknights/MaaUnified.git
|
||||
branch = main
|
||||
|
||||
243
CHANGELOG.md
@@ -1,58 +1,225 @@
|
||||
## v6.8.0-beta.1
|
||||
## v6.9.4
|
||||
|
||||
## OS 1101 whatever event
|
||||
### 许愿墙前挂满愿签,牛牛顺手把更新器、作战流程和海外服体验都打磨了一遍 | Highlights
|
||||
|
||||
Quick beta release to implement the Karlan Trade R&D minigame for all Global servers (EN, KR, JP)
|
||||
Stable will come soon™ uuh.
|
||||
这一版的重点仍然是把日常使用体验打磨得更顺手、更稳定。我们一边补齐周年活动与海外服适配,一边继续清理那些会打断长时间挂机流程的细碎问题。
|
||||
|
||||
Also, implementation of reception all clue fast selection.
|
||||
#### 启动流程与更新可视化
|
||||
|
||||
Enjoy.
|
||||
MAA 现在会在重复启动时直接唤起已经打开的主窗口,不再额外弹出警告打断操作。与此同时,更新器补上了暗色模式、进度条与控制台输出,避免后台更新时因看不到进度而被重复打开,进一步降低更新流程出问题的概率。
|
||||
|
||||
#### 自动作战更稳,也更懂得何时停下
|
||||
|
||||
这一版为关卡未解锁、剿灭未启用全权代理等场景补上了提前停止检查,也支持保存代理指挥记录,并在合成玉 0 掉落时自动结束任务。针对 5.1 七周年版本更新后理智上限调整带来的影响,本次还修复了理智汇报与代理倍率选择异常;此前生息演算容易卡住的问题,同样也是由 5.1 更新后的变更引起,现在也已一并处理。
|
||||
|
||||
技能识别准确率也在这一版中大幅提升。默认情况下,MAA 会在 debug/skill_ready 下仅保留最近 50 次技能识别结果;如果你在自动战斗中遇到技能识别错误,欢迎及时携带日志和截图反馈。若根目录下存在 DEBUG_skill_ready.txt,则会无限保存相关截图;如果你愿意帮助我们训练技能识别模型,可以创建该文件,将错误分类的文件放入 对应标签_err 文件夹后发送至 uye[at]maa-org.net。
|
||||
|
||||
#### 七周年与海外服内容继续补齐
|
||||
|
||||
本次更新适配了七周年许愿墙、“重构”界面主题与争锋频道「绿藤城」,也补齐了 Yostar JP、EN、KR 小游戏相关的 SPA、资源与模板优化,让活动期间和海外服环境下的使用体验更完整。
|
||||
|
||||
----
|
||||
|
||||
### Highlights
|
||||
|
||||
This release continues to focus on making everyday use smoother and more reliable. Alongside support for anniversary content and overseas servers, we kept cleaning up the small but disruptive issues that can break long unattended runs.
|
||||
|
||||
#### Better Launch Flow and Update Visibility
|
||||
|
||||
MAA now re-activates the existing main window on repeated launches instead of interrupting users with an extra warning dialog. The updater also gains dark mode, a progress bar, and console output, helping users avoid reopening it while an update is still running in the background without visible feedback.
|
||||
|
||||
#### More Reliable Automation, with Smarter Stop Conditions
|
||||
|
||||
This version adds early-stop checks for locked stages and annihilation runs without proxy enabled, and it can now save auto-command records while ending runs automatically when 0 Orundum is detected. It also fixes incorrect sanity reporting and proxy multiplier selection caused by the sanity cap changes introduced in the 5.1 anniversary update. The Reclamation Algorithm freeze issue was caused by the same 5.1 update and has been fixed as well.
|
||||
|
||||
Skill recognition accuracy has also been significantly improved. By default, MAA keeps only the most recent 50 skill-recognition results under debug/skill_ready. If you encounter incorrect skill recognition during auto-battle, please report it together with the relevant logs and screenshots. If DEBUG_skill_ready.txt exists in the root directory, related screenshots will be saved without limit. If you would like to help train the skill-recognition model, you can create that file, move misclassified files into the corresponding label_err folder, and send them to uye[at]maa-org.net.
|
||||
|
||||
#### Continued Anniversary and Overseas Server Coverage
|
||||
|
||||
This update adapts to the 7th anniversary wishing wall, the “Reclamation” interface theme, and the Green Vine channel in SSS. It also rounds out Yostar JP, EN, and KR minigame SPA support together with related resource and template optimizations, making event-period and overseas-server usage more complete.
|
||||
|
||||
----
|
||||
|
||||
以下是详细内容:
|
||||
|
||||
## v.6.9.4
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 非法Enum值将使用属性设置的默认值作为替代 (#16138) @status102
|
||||
* 手动输入关卡名支持使用 -Normal/-Hard 切换 常规/险地 难度 @ABA2396
|
||||
* use v2 version of icons (#16556) @Constrat @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 自动编队预编队后检查选中情况 @status102
|
||||
* 优化提示元素展示效果 @ABA2396
|
||||
* 作业版本号需求允许省略patch @status102
|
||||
* 使用SemaphoreSlim替换Lock @status102
|
||||
* 分辨率不支持时打印当前分辨率 @ABA2396
|
||||
* 移除 NotificationImplWinRT 中二次进入 UI 线程 (#16196) @EzraRT
|
||||
* 提升 Algorithm.hpp 算法性能及其鲁棒性 (#16235) @lhhxxxxx
|
||||
* 干员数据重构, 支持跨职业重名干员 (#16084) @status102
|
||||
* optimize templates @Constrat
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* KR OSChapterToOS OCR @Daydreamer114
|
||||
* yj 怎么还暗改老主题 @ABA2396
|
||||
* 自动战斗鼠标长按分页时, 可能会反复触发切换 @status102
|
||||
* EN IS6 DLC1 regexes @Constrat
|
||||
* 在定时任务触发时, 固定等待UpdateStageList @status102
|
||||
* 修复LinkStart期间UpdateStageList内进入SetFightParams导致死锁 @status102
|
||||
* prts.plus改为zoot.plus @status102
|
||||
* 調整繁中服部分幹員名稱 OCR (#16561) @momomochi987
|
||||
* 繁中服肉鴿薩卡滋事件辨識 聚思成塔 (#16541) @CC-creator2026
|
||||
* LogWarn 等宏在 Release 下依旧输出 scope 导致额外间隔 @status102
|
||||
* 修复通宝交换/投钱任务链以适配交换通宝/投钱后获得藏品的情况 (#16553) @travellerse
|
||||
* 外部通知设置界面调整 (#16552) @2436238575
|
||||
* 界园肉鸽投资模式也启用通宝插件 (#16551) @travellerse
|
||||
* 修复窗体关闭过程中再次启动时报“关闭期间无法设置可见性或调用 Show/Close”的异常 @ABA2396
|
||||
* 繁中服肉鴿辨識 (#16535) @CC-creator2026
|
||||
* 修复删除 debug 截图时因文件被占用导致应用闪退的问题 @ABA2396
|
||||
* 远程控制启动任务未记录开始时间 (#16522) @March7th-OvO
|
||||
* 部分成就分期错误 @ABA2396
|
||||
* IS6 encounter trailing `o` and `-` fix #16525 @Constrat
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* i18n for install.md (#16214) @JasonHuang79 @HX3N @Manicsteiner @momomochi987 @Constrat
|
||||
* 更新 wiki 文档,增强内容结构与描述 @AnnAngela
|
||||
* update zh-tw preview image (#16517) @momomochi987
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* implement Quickly Place Clues for Global (#14966) @Constrat
|
||||
* EN @Constrat
|
||||
* EN OS minigame (#16283) @Constrat
|
||||
* YostarJP OS stages and more ocr @Manicsteiner
|
||||
* YostarKR OS ocr and minigame (#16268) @HX3N
|
||||
* YostarJP OS ocr and minigame (#16267) @Manicsteiner
|
||||
* 肉鸽添加怒潮凛冬招募逻辑 (#16217) @Reverse0xCC
|
||||
* 添加贝洛内、怒潮凛冬基建技能数值 (#16260) @drway
|
||||
* git ignore 添加 claude code @Daydreamer114
|
||||
* Revert "ci: issue bot skills 添加 at 符号检测 (#16239)" @MistEO
|
||||
* Revert "fix: prts.plus改为zoot.plus" @status102
|
||||
* AnnihilationName @status102
|
||||
* pc 端禁用完成后退出模拟器 @ABA2396
|
||||
* 繁中服「次生方案」小活動 (#16216) @momomochi987
|
||||
* 重新将natvis添加到MaaCore (#16133) @status102
|
||||
* 繁中服「快速放入線索」與「一鍵贈送重複線索」 (#16562) @momomochi987
|
||||
* Lucky 的概率改为 0.0799% @ABA2396
|
||||
* 使用 PC 端时不传账号 @ABA2396
|
||||
* 增加 issue 分析知识库 @ABA2396
|
||||
* 修改手动输入关卡名的悬浮描述 @ABA2396
|
||||
* 生成日志压缩包时的缓存目录改为本地 reports 目录 @ABA2396
|
||||
* 提前最小截图间隔的检查,小于间隔时跳过识别 @ABA2396
|
||||
* 繁中服界園肉鴿 DLC1 & sss 9 炭火安保派駐 (#16516) @momomochi987
|
||||
* 繁中服「界園」主題與「齊聚」主題 (#16515) @momomochi987
|
||||
* restore JP StageAnnihilation.png @Manicsteiner
|
||||
* YostarKR PV minigame @HX3N
|
||||
* fix JP time ocr (#16557) @Manicsteiner
|
||||
* YostarJP PV templates and ocr (#16505) @Manicsteiner
|
||||
* EN PV minigame @Constrat
|
||||
* Add context7.json with URL and public key @AnnAngela
|
||||
|
||||
## v6.9.3
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 优先使用更新包中的 updater @ABA2396
|
||||
* 添加因为缺少 MAA.Updater.exe 导致更新失败的弹窗提示 @ABA2396
|
||||
* 更新 153-4 基建作业 @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 自动战斗结束增加LoadingIcon等待项 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* Analyzer执行前未检查 m_roi 是否未空 @status102
|
||||
* 修复小游戏界面的开始按钮在连接模拟器失败时仍然发送开始信号 @ABA2396
|
||||
* 自动战斗进入等待过长 @status102
|
||||
* OF-1 战斗后等待过长导致部分后续流程失败 @status102
|
||||
* 修复部分成就判断条件错误 @ABA2396
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* update JP preview image (#16485) @Manicsteiner
|
||||
* 更新 README 预览图片 @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* local-install 使用 ci 同款处理方法 @ABA2396
|
||||
|
||||
## v6.9.2
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 剿灭入口检测支持代理卡耗尽情况 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 开始唤醒流程 @status102
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 添加 DLL 注入问题解决方案并优化 FAQ 描述 (#16404) @ocsin1
|
||||
|
||||
## v6.9.1
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 新增完整包更新时的强制提示,安装在根目录或部分特殊目录根目录时禁止启动与更新 (#16435) @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 支持沙盘战斗结束识别,重构战斗失败识别逻辑 (#16449) @status102
|
||||
* 修正应用宝连接时额外的 ClientType 设置 @status102 @ABA2396
|
||||
* 优化自动编队在 Elite 图标匹配失败或无精英化干员时的判定 @status102 @ABA2396
|
||||
* 临期理智药到期时间 OCR 与处理逻辑进一步优化,遇到时效识别失败时会取消本次吃药 @status102
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 修复部分场景下无法自动启动游戏,以及开始唤醒后过早切换账号的问题 (#16422) @1b2c @status102
|
||||
* 修复临期理智药库存位数、日期前缀与剩余时间输出等识别问题,并移除不再生效的日服 ROI 覆盖 @status102
|
||||
* 修复绿票商店稳定性问题,并调整信用商店识别区域以支持 4 位数信用识别 (#16369) @Roland125 @ABA2396 @ZiyinLin
|
||||
* 修复剿灭入口图片资源与结算合成玉基线识别问题 (#16458) (#16460) @Roland125
|
||||
* 修复凯尔希与 GALLUS² 识别问题 @Saratoga-Official
|
||||
* 修复设置指引中连接设置“每次重新检测”提示块隐藏错误 @ABA2396
|
||||
* 修复自动战斗多作业模式导航 retry_time 异常 @status102
|
||||
* 修复公招计数返回值,适配更精细的招募计数 (#16355) (#16371) @Roland125
|
||||
* 修复若干正确性问题(含肉鸽投资存款校验、pixel analyzer 灰度阈值、rect 越界裁剪、肉鸽招募时间解析、密文板识别等) @status102 @FireflySentinel
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 补全连接阶段的 ClientType 参数说明 @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* PC 端连接跳过数据上报 @ABA2396
|
||||
|
||||
## v6.9.0
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 重复启动时通过跨进程事件激活主窗口,替代弹窗警告提示 (#16363) @ABA2396
|
||||
* 新增关卡未解锁代理或剿灭未启用全权代理时的错误停止检查 (#16357) @ABA2396
|
||||
* 新增保存代理指挥记录功能,并支持合成玉掉落检查,0 掉落时自动结束任务 (#16356) @Roland125
|
||||
* 掉落物识别额外输出剿灭进度信息 @status102
|
||||
* 适配“重构”界面主题 (#16349) @SherkeyXD
|
||||
* 支持腾讯应用宝 5.10.56.xx (#16292) @srdr0p
|
||||
* 新增 updater 暗色模式支持 @ABA2396
|
||||
* 新增 updater 进度条与控制台输出支持 @ABA2396
|
||||
* 支持 PC 端 `完成后退出明日方舟` (#16351) @glimmertouch
|
||||
* 新增争锋频道「绿藤城」支持 (#16345) @Daydreamer114
|
||||
* 适配七周年许愿墙 @Copilot
|
||||
* YostarJP/EN/KR MiniGame SPA @Manicsteiner @Constrat @HX3N
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 统一 CheckComboBox 样式 @ABA2396
|
||||
* 大幅提升技能就绪识别准确率,优化技能截图保存策略 (#16393) @ABA2396
|
||||
* 合并并简化任务状态逻辑 @status102
|
||||
* 统一 ProcessTask 匹配命中状态更新逻辑 @status102
|
||||
* 优化 1 星词条选项操作描述 @status102
|
||||
* 理智上限提升至 210 @status102
|
||||
* 调整完整后 `无其他 MAA` 选项绑定逻辑,不再强制勾选退出模拟器 @ABA2396
|
||||
* 调整选项 `IsEnabled` 逻辑 @ABA2396
|
||||
* 使用 PC 端连接方式时,自动禁用不支持的完成后操作 @ABA2396
|
||||
* optimize templates yostarkr SPA @Constrat
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 修复 3 星 tag 标题显示异常 @ABA2396
|
||||
* 修复 CheckComboBox 不显示标题的问题 @ABA2396
|
||||
* 修复生息演算 5.1 更新后无法使用无存档刷分的问题 (#16402) @ABA2396
|
||||
* 修复剿灭后出现升级界面导致任务无法继续的问题 (#16255) (#16370) @Roland125
|
||||
* 修复干员仓储识别中升变阿米娅的识别问题 @status102
|
||||
* 修复若干正确性问题(含 null check / race / clamp / retry 等 9 处) (#16332) @FireflySentinel
|
||||
* 修复干员仓储识别未跳过数据查找失败干员的问题 @status102
|
||||
* 修复 EN IS6 trail 正则匹配问题 @Constrat
|
||||
* 修复月度小队隐藏分队选择的问题 @SherkeyXD
|
||||
* 修复小游戏列表中下拉框偶现无法展开的问题 @ABA2396
|
||||
* 修复蓝叠模拟器关闭失败的问题 (#16388) @lengyanyu258
|
||||
* 升级结算时闪退 @ABA2396
|
||||
* lower YoStarJP office mini threshold (#16390) @Rememorio
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 更新部分代码注释 (#16215) @JasonHuang79
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* 任务排序支持 JSONC @ABA2396
|
||||
* 调整资源更新环境 @ABA2396
|
||||
* 修改 issue template @ABA2396
|
||||
* 更新周年月卡相关文本 @SherkeyXD
|
||||
|
||||
@@ -34,9 +34,12 @@ target_include_directories(HeaderOnlyLibraries INTERFACE 3rdparty/include)
|
||||
add_subdirectory(src/MaaCore)
|
||||
|
||||
if(BUILD_WPF_GUI)
|
||||
add_subdirectory(src/MaaUpdater)
|
||||
|
||||
include_external_msproject(MaaWpfGui ${PROJECT_SOURCE_DIR}/src/MaaWpfGui/MaaWpfGui.csproj)
|
||||
|
||||
add_dependencies(MaaWpfGui MaaCore)
|
||||
add_dependencies(MaaWpfGui MAA.Updater)
|
||||
if(DEFINED ENV{VSCODE_PID})
|
||||
add_custom_target(run-MaaWpfGui
|
||||
COMMAND "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/MAA.exe"
|
||||
|
||||
@@ -181,6 +181,9 @@
|
||||
"publish-base",
|
||||
"windows-x64"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"BUILD_WPF_GUI": "ON"
|
||||
},
|
||||
"$comment": [
|
||||
"github actions only support Visual Studio 17 2022",
|
||||
"see https://github.com/actions/runner-images/issues/13291"
|
||||
@@ -194,6 +197,9 @@
|
||||
"publish-base",
|
||||
"windows-arm64"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"BUILD_WPF_GUI": "ON"
|
||||
},
|
||||
"$comment": [
|
||||
"github actions only support Visual Studio 17 2022",
|
||||
"see https://github.com/actions/runner-images/issues/13291"
|
||||
|
||||
4
context7.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"url": "https://context7.com/maaassistantarknights/maaassistantarknights",
|
||||
"public_key": "pk_jDwwiGY7WKDA3WnLQzoWX"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 170 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/1-dark.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 87 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/2-dark.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 59 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/3-dark.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/3-light.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/4-dark.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
docs/.vuepress/public/images/ja-jp/readme/4-light.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 246 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 138 KiB |
@@ -78,7 +78,9 @@ We've preset several different development environments for you to choose from:
|
||||
- Press F5 to run
|
||||
|
||||
::: tip
|
||||
To debug Win32Controller (Windows window control) features, you need to manually download the corresponding platform package from [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases), and place `MaaWin32ControlUnit.dll` from the `bin` directory into MAA's DLL directory (e.g. `build/bin/Debug`). PRs for an auto-download script are welcome!
|
||||
To run Win32Controller (Windows window control) / MaaFwAdbController (MaaFramework touch mode) features, you need to manually download the package for your platform from [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases), and place `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` from the `bin` directory into MAA's DLL directory (e.g. `build/bin/Debug`). PRs for an auto-download script are welcome!
|
||||
|
||||
To debug these features, [compile the Debug version of MaaFramework yourself](https://maafw.com/docs/4.1-BuildGuide) and use the corresponding DLLs, or it will randomly crash at breakpoints.
|
||||
:::
|
||||
|
||||
9. Now you're ready to happily ~~mess around~~ start developing!
|
||||
|
||||
@@ -8,7 +8,8 @@ icon: teenyicons:linux-alt-solid
|
||||
**This tutorial requires readers to have some Linux environment configuration ability and programming foundation!** If you only want to directly install MAA instead of compiling it yourself, please read [User Manual - Linux Emulators and Containers](../manual/device/linux.md).
|
||||
|
||||
::: info Note
|
||||
MAA's build method is still under discussion. The content of this tutorial may be outdated. Please refer to the scripts in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134). You can also refer to [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights), [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix).
|
||||
MAA's build method is still under discussion. The content of this tutorial may be outdated. Please refer to the scripts in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A).
|
||||
You can also refer to [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) or [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix).
|
||||
:::
|
||||
|
||||
::: info
|
||||
@@ -73,6 +74,8 @@ Mac can use the `tools/build_macos_universal.zsh` script for compilation. It's r
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
4. To debug MaaFwAdbController (MaaFramework touch mode) features, you need to [compile the Debug version of MaaFramework yourself](https://maafw.com/docs/4.1-BuildGuide) and put `libMaaAdbControlUnit.so` in the installation directory.
|
||||
|
||||
## Integration Documentation
|
||||
|
||||
[~~Perhaps not really documentation~~](../protocol/integration.md)
|
||||
@@ -85,8 +88,6 @@ You can refer to the implementation of `__main__` in [Python demo](https://githu
|
||||
|
||||
You can refer to the implementation in [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)
|
||||
|
||||
### C Sharp
|
||||
|
||||
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
|
||||
### C\#
|
||||
|
||||
You can refer to the implementation in [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)
|
||||
|
||||
@@ -16,6 +16,7 @@ As of MAA v5.22.3, the following emulators and connection addresses are supporte
|
||||
- LDPlayer 9: `emulator-5554/5556/5558/5560`, `127.0.0.1:5555/5557/5559/5561`
|
||||
- NoxPlayer: `127.0.0.1:62001/59865`
|
||||
- MEmu Play: `127.0.0.1:21503`
|
||||
- Tencent App Store (after 5.10.56.xx): `127.0.0.1:5555`
|
||||
|
||||
If detection fails, try launching MAA with UAC administrator privileges and detect again. If it still fails, refer to the manual setup instructions below and verify that your emulator and connection address are included in the list above.
|
||||
|
||||
@@ -57,6 +58,7 @@ Emulators running on your local machine should use addresses like `127.0.0.1:<po
|
||||
- [LDPlayer 9](https://help.ldmnq.com/docs/LD9adbserver) `emulator-5554`
|
||||
- [NoxPlayer](https://support.yeshen.com/zh-CN/qt/ml) `127.0.0.1:62001`
|
||||
- [MEmu Play](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `127.0.0.1:21503`
|
||||
- [Tencent App Store](https://sj.qq.com/faq/3878): ADB port is fixed at `127.0.0.1:5555`. ADB path example: `C:\Program Files\Tencent\Androws\Application\<version>\adb.exe`.
|
||||
|
||||
For other emulators, refer to [Zhao Qingqing's blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html).
|
||||
|
||||
@@ -180,17 +182,28 @@ Requires official or international LDPlayer 9 V9.1.32 or newer. <!-- Official V9
|
||||
|
||||
3. Enter the number (ID) of the corresponding emulator in the LDPlayer multi-instance manager in `Instance Number`, such as `0` for the main instance.
|
||||
|
||||
### AVD Screenshot Enhanced Mode
|
||||
|
||||
Requires Android Emulator v27.2.9 or newer. (You should be fine as long as you got the emulator after Arknights launched.)
|
||||
|
||||
AVD Screenshot Enhanced Mode is implemented in MaaFramework. Touch mode must be set accordingly for Screenshot Enhanced Mode to work.
|
||||
|
||||
1. In `Settings` - `Connection` - `Connection Preset`, select `Android Virtual Device (AVD)`.
|
||||
|
||||
2. For `Touch Mode`, select `MaaFramework`.
|
||||
|
||||
## Touch Mode
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch): An Android touch event handler written in C that operates on `evdev` devices and provides a Socket interface for external programs to trigger touch events and gestures. Starting with Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode.<sup>[source](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch): MAA's Java reimplementation of Minitouch that uses Android's native `InputDevice` and adds extra features. Compatibility with newer Android versions is still being tested. ~~Help us test it~~
|
||||
3. Adb Input: Directly calls ADB to use Android's `input` command for touch operations. Most compatible but slowest.
|
||||
4. [MaaFramework](https://maafw.com/): Delegates screenshot and touch commands to MaaFramework's control unit. Still being tested. ~~Help us test it x2~~
|
||||
|
||||
## ADB Lite
|
||||
|
||||
MAA's independent ADB Client implementation that communicates directly with the ADB Server via TCP. Compared to the original ADB, it avoids constantly launching multiple ADB processes, reducing performance overhead, but some screenshot methods aren't available.<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
|
||||
|
||||
We recommend enabling it, but specific pros and cons need feedback. ~~Help us test it x2~~
|
||||
We recommend enabling it, but specific pros and cons need feedback. ~~Help us test it x3~~
|
||||
|
||||
## Running multiple MAA and emulator instances
|
||||
|
||||
|
||||
@@ -121,6 +121,8 @@ Requirements: 16:9 screen resolution larger than 720p
|
||||
|
||||
Recommended configuration: x86_64 architecture (R - 30 - x86_64 - Android 11.0) with MAA's Linux x64 dynamic library
|
||||
|
||||
Also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
|
||||
|
||||
Note: Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
@@ -35,7 +35,9 @@ Supported, but less thoroughly tested. Requires using a touch mode other than `M
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
Supported, but starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
|
||||
Supported; also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
|
||||
|
||||
From Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
|
||||
|
||||
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (Free, optimized for Apple M-series chips)
|
||||
|
||||
@@ -61,4 +63,6 @@ Note: On macOS, the Nox ADB binary is located at `/Applications/NoxAppPlayer.app
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
Supported, but starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
|
||||
Supported; also supports [Screenshot Enhanced Mode](../connection.md#avd-screenshot-enhanced-mode).
|
||||
|
||||
Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.
|
||||
|
||||
@@ -40,6 +40,11 @@ const fullySupport = [
|
||||
note: 'Fully compatible. Need to turn on ADB Connectivity in the emulator `Settings` → `Advanced` → `Android Debug Bridge` → `Enable`. Known to be compatible with Hyper-V.\n\n- Recommended to download [Offline Installer](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer) to avoid slow and bundled installation; recommend installing [Android 11](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer#:~:text=To%20install%20BlueStacks%205%20Android%2011) version; to uninstall it, please use the official [Uninstall Tool](https://support.bluestacks.com/hc/en-us/articles/360057724751-How-to-uninstall-BlueStacks-5-BlueStacks-X-and-BlueStacks-Services-completely-from-your-PC) to get rid of residues.\n- If the ADB port number keeps changing irregularly and is different every time you start it, it may be because your computer has [Hyper-V](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11) enabled. MAA will now try to automatically read the port number from the BlueStacks emulator configuration file. If this doesn\'t work, or you need to use multiple instances, or have installed multiple emulator cores, please refer to [Connection Settings](../connection.html#bluestacks-emulator-hyper-v-port-number-changes-every-startup) to make adjustments. Since Hyper-V runs as administrator, operations that don\'t involve ADB such as automatic emulator shutdown or connection detection also need MAA to run as administrator.',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: 'Tencent App Store',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: 'Supports versions after 5.10.56.xx. Select `Tencent App Store` connection configuration in `Settings` - `Connection Settings`. Known to be compatible with Hyper-V.\n\n- ADB port is `127.0.0.1:5555`.\n- ADB path example: `C:\\Program Files\\Tencent\\Androws\\Application\\<version>\\adb.exe`.\n\n- You need to first [enable ADB debugging](https://sj.qq.com/faq/3878) in the app.',
|
||||
},
|
||||
{
|
||||
name: 'Nox Player',
|
||||
link: 'https://www.bignox.com/',
|
||||
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: 'Theoretically supported.\n\n- Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.\n- AVD is designed for development debugging, not gaming. Other emulators specifically designed for gaming are recommended instead.',
|
||||
note: 'Theoretically supported, with additional support for [Screenshot Enhanced Mode](../connection.html#avd-screenshot-enhanced-mode).\n- Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode. Please switch to other touch modes, or **temporarily** switch SELinux to `Permissive` mode.\n- AVD is designed for development debugging, not gaming. Other emulators specifically designed for gaming are recommended instead.',
|
||||
},
|
||||
{
|
||||
name: 'Google Play Games (Developer)',
|
||||
|
||||
@@ -54,6 +54,13 @@ For Windows N/KN (European/Korean versions), you also need to install the [Media
|
||||
|
||||
Due to runtime libraries and system components requiring Windows 10 or above, MAA no longer supports Windows 7/8/8.1 systems.
|
||||
|
||||
### Flagged by Windows Defender / antivirus software (PUA / malware)
|
||||
|
||||
- First verify the download source. Only use official channels (official website, GitHub Releases, Winget, or official community distribution channels), and make sure you downloaded the full package (for example, `MAA-<version>-win-x64.zip`).
|
||||
- Automation tools may trigger heuristic detections in some antivirus engines. A detection result does not always mean the program is malicious.
|
||||
- If the source is trusted, submit a false-positive sample to the security vendor and wait for signature updates.
|
||||
- While waiting, you can temporarily add the MAA installation directory to antivirus allowlists. Avoid disabling real-time protection entirely.
|
||||
|
||||
## Connection errors
|
||||
|
||||
### Verify ADB and connection address are correct
|
||||
|
||||
@@ -40,7 +40,7 @@ icon: hugeicons:brain-02
|
||||
Ensure you're on the stage details screen with the stage name and remaining sanity in the upper right and auto-deploy/start buttons in the lower right.
|
||||
- If you're not on this screen, `Current/Last` will automatically enter the "last operation" stage shown on the bottom right of the terminal home screen.
|
||||
- You can also enable `Manual entry of stage names` in `Task Settings` - `Sanity Farming` - `Advanced Settings` to manually input stage codes. Currently supported stages include:
|
||||
- All main story stages. You can add `-NORMAL` or `-HARD` at the end to switch between normal and challenge modes.
|
||||
- All main story stages. You can add `-NORMAL` or `-HARD` at the end to switch difficulty: Chapters 10-14 map to Standard/Adverse, while Chapters 15+ map to Normal/Raid.
|
||||
- Resource stages like CE-6/LS-6 (LMD/EXP). Enter the exact code like `CE-6` or `LS-6`. MAA will automatically switch to level 5 if level 6 isn't available.
|
||||
- Skill summary, voucher, and carbon stages (level 5 only). Enter exact codes like `CA-5`, `AP-5`, or `SK-5`.
|
||||
- All chip stages. Enter complete stage codes like `PR-A-1`.
|
||||
|
||||
@@ -829,14 +829,6 @@ For farming hidden Collapsal Paradigms, N10 difficulty is recommended, with the
|
||||
|
||||
MAA automatically handles copper pickup and exchange in JieGarden I.S.:
|
||||
|
||||
::: tip Enable Conditions
|
||||
Copper exchange functionality is only enabled in the following modes:
|
||||
|
||||
- Investment Mode: Requires "Investment mode enable shopping, recruitment, advance 2 floors" option enabled
|
||||
- Other Modes: Enabled by default
|
||||
|
||||
:::
|
||||
|
||||
1. **Pickup Dropped Coppers**: After battle ends, if copper drop selection interface appears, MAA will select the copper with highest `pickup_priority`
|
||||
|
||||
2. **Exchange Wallet Coppers**: When a newly picked copper needs to be exchanged with coppers in the wallet:
|
||||
|
||||
@@ -118,7 +118,7 @@ Whether to enable this task.
|
||||
Stage name, by default empty, recognizes current/last stage. Editing in run-time is not supported.
|
||||
Currently supported stages for navigation include:
|
||||
|
||||
- All mainline stages. You can add `-NORMAL` or `-HARD` at the end of the stage to switch between standard or challenge mode.
|
||||
- All mainline stages. You can add `-NORMAL` or `-HARD` at the end of the stage to switch difficulty: Chapters 10-14 map to Standard/Adverse, while Chapters 15+ map to Normal/Raid.
|
||||
- For LMD and Battle Record stages 5/6, must input `CE-6` / `LS-6`. MAA will automatically switch to stage 5 if stage 6 cannot be delegated.
|
||||
- Skill Summary, Voucher, and Carbon stage 5, must input `CA-5` / `AP-5` / `SK-5`.
|
||||
- All chip stages. Must input complete stage code, e.g. `PR-A-1`.
|
||||
@@ -1146,10 +1146,10 @@ value
|
||||
Invalid placeholder. Enum value: 0.
|
||||
:::
|
||||
::: field name="MinitouchEnabled" type="boolean" optional
|
||||
Deprecated. Originally for enabling minitouch; "1" - on, "0" - off. Note that the device may not support it. Enum value: 1 (deprecated).
|
||||
Deprecated. Originally for enabling Minitouch; "1" - on, "0" - off. Note that the device may not support it. Enum value: 1 (deprecated).
|
||||
:::
|
||||
::: field name="TouchMode" type="string" optional default="minitouch"
|
||||
Touch mode setting. Options: minitouch | maatouch | adb. Default minitouch. Enum value: 2.
|
||||
Touch mode setting. Options: minitouch | maatouch | adb | MaaFwAdb. Default minitouch. Enum value: 2.
|
||||
:::
|
||||
::: field name="DeploymentWithPause" type="boolean" optional
|
||||
Whether to pause when deploying operators (affects IS, Copilot and Stationary Security Service). Options: "1" | "0". Enum value: 3.
|
||||
@@ -1160,4 +1160,7 @@ Whether to enable AdbLite or not. Options: "0" | "1". Enum value: 4.
|
||||
::: field name="KillAdbOnExit" type="boolean" optional
|
||||
Release Adb on exit. Options: "0" | "1". Enum value: 5.
|
||||
:::
|
||||
::: field name="ClientType" type="string" optional
|
||||
Client channel. Most connection configs do not need this option. Set it before `AsstConnect` / `AsstAsyncConnect` only when the selected `config` uses `[PackageName]` in commands executed during connect. In the built-in configs, only `Androws` and `WSA` currently require it for `displayId` lookup. This does not replace the `client_type` task parameter used by StartUp / CloseDown tasks. Enum value: 6.
|
||||
:::
|
||||
::::
|
||||
|
||||
@@ -84,7 +84,9 @@ icon: iconoir:developer
|
||||
- F5 キーを押して実行
|
||||
|
||||
::: tip
|
||||
Win32Controller(Windows ウィンドウ制御)関連機能をデバッグする場合は、[MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) から対応プラットフォームのアーカイブをダウンロードし、`bin` ディレクトリ内の `MaaWin32ControlUnit.dll` を MAA の DLL と同じディレクトリ(例:`build/bin/Debug`)に配置してください。自動ダウンロードスクリプトの PR 歓迎!
|
||||
Win32Controller(Windows ウィンドウ制御)/ MaaFwAdbController(MaaFramework のタッチモード)関連機能を実行する場合は、[MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) から対応プラットフォームのアーカイブをダウンロードし、`bin` ディレクトリ内の `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` を MAA の DLL と同じディレクトリ(例:`build/bin/Debug`)に配置してください。自動ダウンロードスクリプトの PR 歓迎!
|
||||
|
||||
関連機能をデバッグする場合は、[MaaFramework の Debug バージョンを自分でコンパイル](https://maafw.com/docs/4.1-BuildGuide)し、対応する DLL ファイルを使用する必要があります。そうしないと、ブレークポイントデバッグ中に謎のクラッシュが発生します。
|
||||
:::
|
||||
|
||||
9. これで自由に ~~改造~~ 開発を始められます
|
||||
|
||||
@@ -8,7 +8,8 @@ icon: teenyicons:linux-alt-solid
|
||||
**このチュートリアルでは、読者にLinux環境の構成能力とプログラミングの基礎が必要です!**
|
||||
|
||||
::: info 注意
|
||||
MAAの構築方法はまだ議論されていますが、このチュートリアルの内容は古くなる可能性があります。 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) のスクリプトに準拠してください
|
||||
MAAの構築方法はまだ議論されていますが、このチュートリアルの内容は古くなる可能性があります。[GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) のスクリプトに準拠してください。
|
||||
また、[AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) や [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix) も参照可能です。
|
||||
:::
|
||||
|
||||
## コンパイルプロセス
|
||||
@@ -56,6 +57,8 @@ MAAの構築方法はまだ議論されていますが、このチュートリ
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
4. MaaFwAdbController(MaaFramework のタッチモード)関連機能をデバッグする場合は、[MaaFramework の Debug バージョンを自分でコンパイル](https://maafw.com/docs/4.1-BuildGuide)し、`libMaaAdbControlUnit.so` をインストールディレクトリにコピーする必要があります。
|
||||
|
||||
## その他のインストール方法
|
||||
|
||||
- AUR: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights)
|
||||
|
||||
@@ -43,6 +43,7 @@ icon: mdi:plug
|
||||
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
|
||||
- [逍遥](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
|
||||
- [夜神](https://support.yeshen.com/zh-CN/qt/ml) `62001`
|
||||
- [テンセントアプリストア](https://sj.qq.com/faq/3878) (5.10.56.xx 以降):ADB ポートは `127.0.0.1:5555` 固定。ADB パス例:`C:\Program Files\Tencent\Androws\Application\バージョン番号\adb.exe`。
|
||||
|
||||
他のエミュレータについては[Zhaoqingqing's Blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)を参照してください。
|
||||
|
||||
@@ -224,14 +225,25 @@ LDPlayerの正式版9 V9.1.32 以降を使用する必要があります。<!--
|
||||
|
||||
3. `インスタンス番号` には LD マルチインスタンス内でのエミュレーターの番号を入力してください。主インスタンスの場合は `0` です。
|
||||
|
||||
### AVD スクリーンショット強化モード
|
||||
|
||||
Android Emulator v27.2.9 以降が必要です。(アークナイツのリリース以降にダウンロードしたエミュレーターであれば大丈夫です。)
|
||||
|
||||
AVD スクリーンショット強化モードは MaaFramework 内で実装されているため、MaaFramework のタッチモードを有効にすることが、この機能を利用する前提となります。
|
||||
|
||||
1. `設定` - `接続設定` - `接続構成` で `Android Virtual Device (AVD)` を選択します。
|
||||
|
||||
2. `タッチモード` で `MaaFramework` を選択します。
|
||||
|
||||
## タッチモード
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):Android タッチイベントを操作するための C 言語で書かれたツールで、`evdev` デバイスを操作し、外部プログラムがタッチイベントとジェスチャーをトリガーできる Socket インターフェースを提供します。Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できなくなりました。<sup>[出典](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):MAA による Java で Minitouch を再実装し、Android の `InputDevice` を使用し、追加の機能を付加しました。高バージョンの Android での利用可能性はまだテスト中です。~~テストを手伝ってください~~
|
||||
3. Adb Input:直接 ADB を呼び出して、Android の `input` コマンドを使用してタッチ操作を行います。最も互換性があり、最も遅い速度です。
|
||||
4. [MaaFramework](https://maafw.com/):MaaFramework の制御ユニットのスクリーンショットとタッチ機能を呼び出します。利用可能性はまだテスト中です。~~テストを手伝ってください x2~~
|
||||
|
||||
## ADB Lite
|
||||
|
||||
MAA によって独自に実装された ADB クライアントで、オリジナルの ADB よりも多重の ADB プロセスを開始せずに済み、パフォーマンスの低下を抑えることができますが、一部のスクリーンショット方法は使用できません。
|
||||
|
||||
推奨されますが、具体的な利点と欠点はまだフィードバックを得ていません。~~テストを手伝ってください x2~~
|
||||
推奨されますが、具体的な利点と欠点はまだフィードバックを得ていません。~~テストを手伝ってください x3~~
|
||||
|
||||
@@ -121,6 +121,8 @@ MAA Wine Bridge で生成された `MaaDesktopIntegration.so` を `MAA.exe` と
|
||||
|
||||
推奨構成: x86_64 のフレームワーク (R - 30 - x86_64 - Android 11.0) と MAA のLinux x64 ダイナミック ライブラリ
|
||||
|
||||
[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります。
|
||||
|
||||
- Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive` モードに切り替え。
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
@@ -39,7 +39,9 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
サポートされています。Android 10 以降、SELinux が\`Enforcing\`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** \`Permissive\`モードに切り替え。
|
||||
サポートされています。[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります。
|
||||
|
||||
Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive` モードに切り替え。
|
||||
|
||||
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (無料、Apple Mシリーズチップ向けに最適化されたバージョン)
|
||||
|
||||
@@ -69,4 +71,4 @@ Mac 版の開発は人手不足のため、更新速度が比較的遅いです
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
サポートされています。
|
||||
サポートされています。[スクリーンショット強化モード](../connection.md#avd-スクリーンショット強化モード)の追加サポートもあります。
|
||||
|
||||
@@ -25,12 +25,12 @@ const fullySupport = [
|
||||
{
|
||||
name: 'MuMu Player',
|
||||
link: 'https://www.mumuplayer.com/',
|
||||
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもある。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。\n- `ビデオメモリ使用ポリシー`を`リソース使用量が少ない`に設定しないでください。',
|
||||
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもあります。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。\n- `ビデオメモリ使用ポリシー`を`リソース使用量が少ない`に設定しないでください。',
|
||||
},
|
||||
{
|
||||
name: 'LDPlayer',
|
||||
link: 'https://www.ldplayer.net/',
|
||||
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#LDPlayer スクリーンショット強化モード)の追加サポートもある。 Hyper-Vとの互換性が確認されています。\n\n- LDPlayer 9のインストーラーは、インストールプロセス中に自動的にHyper-Vをサイレントで無効にしますので、必要な場合は注意してください。',
|
||||
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#LDPlayer スクリーンショット強化モード)の追加サポートもあります。 Hyper-Vとの互換性が確認されています。\n\n- LDPlayer 9のインストーラーは、インストールプロセス中に自動的にHyper-Vをサイレントで無効にしますので、必要な場合は注意してください。',
|
||||
},
|
||||
]),
|
||||
// keep internal sorting for bluestacks.
|
||||
@@ -40,6 +40,11 @@ const fullySupport = [
|
||||
note: 'サポートされています。エミュレーターの `設定` - `上位設定` で `Android Debug Bridge`をONにする必要があります。\n\n- ネットワーク環境が悪い場合は [オフラインパッケージ](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F)をダウンロードしてください。\n- adbポート番号が不規則に変化し続け、起動するたびに同じでない場合は、お使いのコンピュータが [Hyper-V](https://support.bluestacks.com/hc/ja/articles/4415238471053-BlueStacks-5-Hyper-V%E3%81%8C%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8BWindows-10%E3%81%A8Windows-11%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A6%81%E4%BB%B6)を有効にしている可能性があります,\nこのような状況に対して、MAAはポート番号を自動的に取得する小さなバックドアを提供しています。この機能がは動作しません/複数のエミュレータが必要/複数のエミュレータコアがインストールされているの場合は [よくある質問](../よくある質問.html#blue-stackエミュレータが起動するたびにポート番号が異なるhyper-v) を参照して変更してください。Hyper-V は管理者として実行されるため、エミュレーターの自動シャットダウンや接続の自動検出など、adb を伴わない操作でも MAA を管理者として実行する必要があります。',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: 'テンセントアプリストア',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: 'バージョン 5.10.56.xx 以降をサポートしています。`設定` - `接続設定` で `テンセントアプリストア` 接続設定を選択してください。Hyper-V との互換性が確認されています。\n\n- ADB ポートは `127.0.0.1:5555` です。\n- ADB パス例:`C:\\Program Files\\Tencent\\Androws\\Application\\バージョン番号\\adb.exe`。\n\n- 事前にアプリストアで [ADB デバッグを有効化](https://sj.qq.com/faq/3878) する必要があります。',
|
||||
},
|
||||
{
|
||||
name: 'NOX',
|
||||
link: 'https://www.yeshen.com/',
|
||||
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: '理論的なサポートされています。\n\n- Android 10 以降、SELinux が`Enforcing`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive`モードに切り替え。\n- AVD はデバッグ用に構築されており、ゲーム用に設計された他のエミュレーターを使用することをおすすめします。',
|
||||
note: '理論的なサポートされています。\n\n- [スクリーンショット強化モード](../connection.html#avd-スクリーンショット強化モード)の追加サポートもあります。\n- Android 10 以降、SELinux が`Enforcing`モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive`モードに切り替え。\n- AVD はデバッグ用に構築されており、ゲーム用に設計された他のエミュレーターを使用することをおすすめします。',
|
||||
},
|
||||
{
|
||||
name: 'Google Play ゲーム(開発者)',
|
||||
|
||||
@@ -40,7 +40,7 @@ icon: hugeicons:brain-02
|
||||
画面は、右上にステージ名と残り理性、右下に自動指揮と作戦開始が表示されるステージ詳細に留めてください。
|
||||
- この画面にいない場合、`現在/前回` は端末ホーム右下の「前回作戦」のステージへ自動で入ります。
|
||||
- `作戦` → `高度な設定` で `ステージ名を入力する` を有効にし、手動でステージ番号を入力することもできます。現在ナビ可能なステージは以下の通りです:
|
||||
- すべてのメインステージ。末尾に `-NORMAL` または `-HARD` を付けて標準/磨難を切り替え可能。
|
||||
- すべてのメインステージ。末尾に `-NORMAL` または `-HARD` を付けて難易度を切り替え可能(10〜14章は標準/厄難、15章以降は通常/険地)。
|
||||
- 龍門幣・作戦記録の 5 / 6 ステージ。ただし `CE-6` / `LS-6` を入力してください。6 が連戦不可の場合、自動で 5 に切り替えます。
|
||||
- アーツ学・購買資格証・炭素材の第 5 ステージ。`CA-5` / `AP-5` / `SK-5` を入力してください。
|
||||
- すべてのSoCステージ。`PR-A-1` のように完全な番号を入力してください。
|
||||
|
||||
@@ -12,7 +12,7 @@ icon: ic:baseline-article
|
||||
- ステージ選択に必要なステージがない場合ならば、MAAで `現在/前回` を選択し、ゲーム内で手動でステージを選択し、**任務開始**と**自動指揮**がゲーム画面に存在することを確認してください。
|
||||
- 現在この画面が表示されていない場合、 `現在/前回` は自動的に端末のホームページの右下隅にある「前回の参加作戦へ」ステージに入ります。
|
||||
- `タスク設定` - `作戦` - `高度な設定` の `ステージ名を入力する` を有効にすることで、ステージ番号を手動で入力することもできます。 現在サポートされているナビゲーションステージは以下の通りです:
|
||||
- すべてのメインストーリーステージ。通常または厄難奮戦に切り替えるには、ステージの末尾に `-NORMAL` または `-HARD` を追加します。
|
||||
- すべてのメインストーリーステージ。ステージ末尾に `-NORMAL` または `-HARD` を付けて難易度を切り替え可能(10〜14章は標準/厄難、15章以降は通常/険地)。
|
||||
- 龍門幣、作戦記録の5/6ステージ。ただし、 `CE-6` / `LS-6` を入力する必要があります。6ステージを実行できない場合は、自動的に5ステージに移行します。
|
||||
- アーツ学、購買資格証、建築資材。 `CA-5` / `AP-5` / `SK-5` を入力する必要があります。
|
||||
- SoCの場合のみ、完全なステージ番号を入力する必要があります。例: `PR-A-1` 。
|
||||
|
||||
@@ -775,14 +775,6 @@ OCRで思わぬ遭遇イベントを認識しますが、選択肢は固定さ
|
||||
|
||||
MAAは界園テーマで通宝の拾取と交換を自動処理します:
|
||||
|
||||
::: tip 有効条件
|
||||
通宝交換機能は以下のモードでのみ有効:
|
||||
|
||||
- 投資モード:「投資モードで購買、募集、2層進出を有効化」オプションを有効にする必要があります
|
||||
- その他のモード:デフォルトで有効
|
||||
|
||||
:::
|
||||
|
||||
1. **ドロップ通宝の拾取**:戦闘終了後、通宝ドロップ選択画面が表示された場合、MAAは `pickup_priority` に基づいて最も優先度の高い通宝を選択
|
||||
|
||||
2. **銭匣通宝の交換**:新しく拾った通宝を銭匣内の通宝と交換する必要がある場合:
|
||||
|
||||
@@ -118,7 +118,7 @@ Bilibili:`张三`、入力可能:`张三`、`张`、`三`
|
||||
ステージ名。デフォルトは空で、現在/最後のステージを認識します。実行中の設定はサポートされていません。
|
||||
ナビゲーション対象のステージは以下の通りです:
|
||||
|
||||
- すべてのメイン ストーリー ステージ。ステージの最後に `-NORMAL` または `-HARD` を追加して、標準または困難なステージを切り替えることができます。
|
||||
- すべてのメイン ストーリー ステージ。ステージ末尾に `-NORMAL` または `-HARD` を付けて難易度を切り替えできます(10〜14章は標準/厄難、15章以降は通常/険地)。
|
||||
- 龍門幣、作戦記録の 5/6 関。ただし `CE-6` / `LS-6` と入力する必要があります。MAA は 6 関が代理できない場合は自動的に 5 関に切り替わります。
|
||||
- スキル本、購買資格証、碳素材の第 5 関。`CA-5` / `AP-5` / `SK-5` と入力する必要があります。
|
||||
- すべてのチップ本。完全なステージ番号を入力する必要があります(例:`PR-A-1`)。
|
||||
@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
|
||||
無効なプレースホルダ。列挙値:0。
|
||||
:::
|
||||
::: field name="MinitouchEnabled" type="boolean" optional
|
||||
廃止済み。元は minitouch を有効にするかどうか。"1" オン、"0" オフ。デバイスがサポートされていない可能性がります。列挙値:1(廃止済み)。
|
||||
廃止済み。元は Minitouch を有効にするかどうか。"1" オン、"0" オフ。デバイスがサポートされていない可能性がります。列挙値:1(廃止済み)。
|
||||
:::
|
||||
::: field name="TouchMode" type="string" optional default="minitouch"
|
||||
タッチ モード設定。可能な値:minitouch | maatouch | adb。デフォルト minitouch。列挙値:2。
|
||||
タッチ モード設定。可能な値:minitouch | maatouch | adb | MaaFwAdb。デフォルト minitouch。列挙値:2。
|
||||
:::
|
||||
::: field name="DeploymentWithPause" type="boolean" optional
|
||||
暫停状態でオペレーターを配置するかどうか。自動戦闘、統合戦略、保全駐在に同時に影響。可能な値:"1" または "0"。列挙値:3。
|
||||
@@ -1159,4 +1159,7 @@ AdbLite を使用するかどうか。可能な値:"0" または "1"。列挙
|
||||
::: field name="KillAdbOnExit" type="boolean" optional
|
||||
終了時に Adb プロセスをキルするかどうか。可能な値:"0" または "1"。列挙値:5。
|
||||
:::
|
||||
::: field name="ClientType" type="string" optional
|
||||
クライアント種別(ゲームチャネル)。ほとんどの接続設定では不要です。`AsstConnect` / `AsstAsyncConnect` に渡す `config` が、接続時に実行するコマンド内で `[PackageName]` を使用する場合にのみ、接続前に `AsstSetInstanceOption(..., ClientType, ...)` を設定してください。現在の組み込み設定では、`Androws` と `WSA` の `displayId` 取得のみがこの値に依存します。このオプションは StartUp / CloseDown などのタスクパラメータ `client_type` を置き換えるものではありません。列挙値:6。
|
||||
:::
|
||||
::::
|
||||
|
||||
@@ -83,7 +83,9 @@ icon: iconoir:developer
|
||||
- F5 키를 눌러 실행
|
||||
|
||||
::: tip
|
||||
Win32Controller(Windows 창 제어) 관련 기능을 디버깅하려면 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases)에서 해당 플랫폼 압축 파일을 다운로드하고, `bin` 디렉토리의 `MaaWin32ControlUnit.dll`을 MAA DLL과 같은 디렉토리(예: `build/bin/Debug`)에 배치해야 합니다. 자동 다운로드 스크립트 PR 환영!
|
||||
Win32Controller(Windows 창 제어) / MaaFwAdbController(MaaFramework 터치 수행 방식) 관련 기능을 실행하려면 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases)에서 해당 플랫폼 압축 파일을 다운로드하고, `bin` 디렉토리의 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll`을 MAA DLL과 같은 디렉토리(예: `build/bin/Debug`)에 배치해야 합니다. 자동 다운로드 스크립트 PR 환영!
|
||||
|
||||
若需调试相关功能,则需要自行编译 MaaFramework 的 Debug 版本,使用对应的 DLL 文件,否则在断点调试时会神秘闪退。
|
||||
:::
|
||||
|
||||
9. 이제 자유롭게 ~~개조~~ 개발 시작!
|
||||
|
||||
@@ -8,7 +8,7 @@ icon: teenyicons:linux-alt-solid
|
||||
**이 가이드는 독자가 일정한 Linux 환경 설정 능력과 프로그래밍 기초를 가지고 있다고 가정합니다!** MAA를 직접 컴파일하는 대신 단순히 설치하길 원한다면 [사용자 매뉴얼 - Linux 지원](../manual/device/linux.md)를 참고하세요.
|
||||
|
||||
::: info 주의
|
||||
MAA의 빌드 방법은 여전히 논의 중입니다. 이 가이드의 내용은 최신 내용이 아닐 수 있으므로 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134)의 스크립트를 참고하는 것이 좋습니다.
|
||||
MAA의 빌드 방법은 여전히 논의 중입니다. 이 가이드의 내용은 최신 내용이 아닐 수 있으므로 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A)의 스크립트를 참고하는 것이 좋습니다.
|
||||
또한 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 또는 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)를 참고할 수도 있습니다.
|
||||
:::
|
||||
|
||||
@@ -80,7 +80,7 @@ MaaAssistantArknights/MaaMacGui 프로젝트의 [README.md](https://github.com/M
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
4. 완료, 디렉터리에서 빌드 파일을 확인할 수 있을 것입니다.
|
||||
4. 若需调试 MaaFwAdbController(MaaFramework 触控模式)相关功能,需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,将 `libMaaAdbControlUnit.so` 放到安装目录下。
|
||||
|
||||
::::
|
||||
|
||||
@@ -96,8 +96,6 @@ MaaAssistantArknights/MaaMacGui 프로젝트의 [README.md](https://github.com/M
|
||||
|
||||
[CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)의 구현을 참고하세요.
|
||||
|
||||
### C Sharp
|
||||
|
||||
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
|
||||
### C\#
|
||||
|
||||
[MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)의 구현을 참고하세요.
|
||||
|
||||
@@ -16,6 +16,7 @@ MAA v5.22.3까지 지원하는 감지 가능한 에뮬레이터 및 연결 주
|
||||
- LDPlayer 9: `emulator-5554/5556/5558/5560`, `127.0.0.1:5555/5557/5559/5561`
|
||||
- 逍遥(Xiaoyao): `127.0.0.1:62001/59865`
|
||||
- 夜神(Yeshen): `127.0.0.1:21503`
|
||||
- 텐센트 앱스토어 (5.10.56.xx 이후): `127.0.0.1:5555`
|
||||
|
||||
감지에 실패하면 UAC 관리자 권한으로 MAA를 시작하여 다시 감지해보세요. 여전히 실패한다면 아래 수동 설정을 참고하고, 에뮬레이터와 연결 주소가 위 목록에 포함되어 있는지 확인하세요.
|
||||
|
||||
@@ -59,6 +60,7 @@ MAA 폴더에 직접 압축을 푸는 것을 권장합니다. 그러면 ADB 경
|
||||
- [LDPlayer 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc) `emulator-5554`
|
||||
- [逍遥(Xiaoyao)](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
|
||||
- [夜神(Yeshen)](https://support.yeshen.com/zh-CN/qt/ml) `62001`
|
||||
- [텐센트 앱스토어](https://sj.qq.com/faq/3878): ADB 포트는 `127.0.0.1:5555` 고정. ADB 경로 예시: `C:\Program Files\Tencent\Androws\Application\버전번호\adb.exe`.
|
||||
|
||||
기타 에뮬레이터는 [赵青青의 블로그](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)를 참고하세요.
|
||||
|
||||
@@ -194,11 +196,22 @@ MAA 폴더에 직접 압축을 푸는 것을 권장합니다. 그러면 ADB 경
|
||||
|
||||
3. `인스턴스 번호`에 LD 멀티플레이어에서 해당 에뮬레이터의 일련번호(ID)를 입력합니다. 예: 메인 멀티플레이어의 경우 `0`
|
||||
|
||||
### AVD 스크린샷 향상 모드
|
||||
|
||||
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟开服之后下载的就没问题。)
|
||||
|
||||
因为 AVD 截图增强模式在 MaaFramework 中实现,所以必须选择 MaaFramework 触控模式才能启用 AVD 截图增强。
|
||||
|
||||
1. `设置` - `连接设置` - `连接配置` 选择 `Android 虚拟设备(AVD)`。
|
||||
|
||||
2. `触控模式` 选择 `MaaFramework`。
|
||||
|
||||
## 터치 모드
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch): C로 작성된 Android 터치 이벤트 핸들러로, 외부 프로그램이 터치 이벤트와 제스처를 트리거할 수 있는 소켓 인터페이스를 제공합니다. Android 10부터는 SELinux가 `Enforcing` 모드일 때 Minitouch가 더 이상 사용되지 않습니다.
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch): MAA가 Java 기반으로 Minitouch를 재구현한 것입니다. 높은 버전의 Android에서도 사용 가능성이 테스트 중입니다.
|
||||
3. Adb Input: ADB 명령어를 직접 호출하여 터치 작업을 수행하며, 호환성이 가장 좋지만, 속도는 가장 느립니다.
|
||||
4. [MaaFramework](https://maafw.com/): 调用 MaaFramework 控制单元的截图和触控功能。可用性尚待测试。~~帮我们做做测试 x2~~
|
||||
|
||||
## ADB Lite
|
||||
|
||||
|
||||
@@ -121,6 +121,8 @@ MAA Wine Bridge에서 생성된 `MaaDesktopIntegration.so`를 `MAA.exe`와 같
|
||||
|
||||
권장 구성: MAA의 리눅스 x64 동적 라이브러리와 함께 x86_64 프레임워크 (R - 30 - x86_64 - Android 11.0) 사용
|
||||
|
||||
[스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
|
||||
|
||||
참고: Android 10 이상에서는 SELinux가 `Enforcing` 모드인 경우 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 전환하세요.
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
@@ -35,7 +35,9 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
지원됩니다. 그러나 Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
|
||||
지원됩니다, [스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
|
||||
|
||||
Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
|
||||
|
||||
### ✅ [블루스택 에어](https://www.bluestacks.com/mac) (무료, Apple M 시리즈 칩에 최적화된 버전)
|
||||
|
||||
@@ -65,4 +67,6 @@ Mac 버전 개발에 인력이 부족하여 업데이트 속도가 비교적 느
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
지원됩니다. 그러나 Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
|
||||
지원됩니다, [스크린샷 향상 모드](../connection.md#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.
|
||||
|
||||
Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요.
|
||||
|
||||
@@ -40,6 +40,11 @@ const fullySupport = [
|
||||
note: '완전히 호환됩니다. 에뮬레이터의 `설정` - `고급 설정`에서 `ADB 기능`을 켜야 합니다. Hyper-V와 호환되는 것으로 알려져 있습니다.\n\n- 느리고 번들로 제공되는 설치를 피하기 위해 [오프라인 설치 프로그램](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer)을 다운로드하는 것이 좋습니다; [Android 11](https://support.bluestacks.com/hc/en-us/articles/4402611273485-BlueStacks-5-offline-installer#:~:text=To%20install%20BlueStacks%205%20Android%2011) 버전 설치를 권장합니다; 제거하려면 공식 [제거 도구](https://support.bluestacks.com/hc/en-us/articles/360057724751-How-to-uninstall-BlueStacks-5-BlueStacks-X-and-BlueStacks-Services-completely-from-your-PC)를 사용하여 잔여물을 제거하세요.\n- adb 포트 번호가 계속 불규칙하게 변경되고 시작할 때마다 다르다면 컴퓨터에 [Hyper-V](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11)가 활성화되어 있기 때문일 수 있습니다. MAA는 이제 BlueStacks 에뮬레이터 구성 파일 내에서 포트 번호를 자동으로 읽으려고 시도할 것입니다. 이 방법이 작동하지 않거나 다중 실행/둘 이상의 에뮬레이터 커널이 설치된 경우 [연결 설정](../connection.md#bluestacks-에뮬레이터-hyper-v-포트-번호-변경)을 참조하여 변경하세요. Hyper-V는 관리자로 실행되므로 에뮬레이터 자동 종료, 자동 연결 감지 등 adb와 관련 없는 작업도 MAA를 관리자로 실행해야 합니다.',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: '텐센트 앱스토어',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '5.10.56.xx 이후 버전을 지원합니다. `설정` - `연결 설정`에서 `텐센트 앱스토어` 연결 구성을 선택하세요. Hyper-V와 호환되는 것으로 알려져 있습니다.\n\n- ADB 포트는 `127.0.0.1:5555`입니다.\n- ADB 경로 예시: `C:\\Program Files\\Tencent\\Androws\\Application\\버전번호\\adb.exe`.\n\n- 먼저 앱스토어에서 [ADB 디버깅을 활성화](https://sj.qq.com/faq/3878)해야 합니다.',
|
||||
},
|
||||
{
|
||||
name: 'Nox',
|
||||
link: 'https://kr.bignox.com/',
|
||||
@@ -67,7 +72,7 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: '이론적으로 지원됩니다.\n\n- Android 10부터 SELinux가 `Enforcing` 모드일 때 Minitouch를 사용할 수 없으므로 다른 터치 모드로 전환하거나 SELinux를 **임시로** `Permissive` 모드로 전환하세요.\n- AVD는 디버깅을 위해 만들어졌으므로 게임용으로 설계된 다른 에뮬레이터를 사용하는 것이 더 좋습니다.',
|
||||
note: '이론적으로 지원됩니다.\n\n- [스크린샷 향상 모드](../connection.html#avd-스크린샷-향상-모드)에 대한 추가 지원이 있습니다.\n- Android 10부터 SELinux가 `Enforcing` 모드일 때 Minitouch를 사용할 수 없으므로 다른 터치 모드로 전환하거나 SELinux를 **임시로** `Permissive` 모드로 전환하세요.\n- AVD는 디버깅을 위해 만들어졌으므로 게임용으로 설계된 다른 에뮬레이터를 사용하는 것이 더 좋습니다.',
|
||||
},
|
||||
{
|
||||
name: 'Google Play Games (개발자용)',
|
||||
|
||||
@@ -40,7 +40,7 @@ icon: hugeicons:brain-02
|
||||
스테이지 이름, 정보, 소모 이성이 뜨고 오른쪽 하단에 대리지휘와 시작 버튼이 표시된 화면으로 가세요.
|
||||
- 해당 화면이 아닌 경우 `현재/이전`은 자동으로 가장 최근에 실행한 스테이지로 이동합니다.
|
||||
- 또는 작업 `설정` - `이성 사용` - `고급 설정`에서 `스테이지 코드 수동 입력`을 체크해 스테이지 코드를 직접 입력할 수 있습니다. 현재 내비게이션할 수 있는 스테이지는 다음과 같습니다:
|
||||
- 모든 메인 스토리 스테이지. 표준 또는 어려움 난이도를 전환하려면 스테이지 코드 뒤에 -NORMAL 또는 -HARD를 추가하세요.
|
||||
- 모든 메인 스토리 스테이지. 스테이지 코드 끝에 `-NORMAL` 또는 `-HARD`를 추가해 난이도를 전환할 수 있습니다 (10-14장은 표준/재앙, 15장 이후는 일반/험지).
|
||||
- 용문폐 혹은 작전 기록의 5/6스테이지는 `CE-6`/`LS-6`를 입력해야 합니다. MAA는 6스테이지가 대리 지휘가 불가능할 경우 자동으로 5스테이지로 전환합니다.
|
||||
- 스킬 북, 구매 증명서, 카본 부품 5스테이지는 `CA-5`/`AP-5`/`SK-5`를 입력해야 합니다.
|
||||
- 모든 칩 스테이지. 완전한 스테이지 코드를 입력해야 합니다. 예: `PR-A-1`.
|
||||
|
||||
@@ -793,12 +793,6 @@ OCR로 이벤트 이름을 인식하지만, 선택지는 **고정된 위치**를
|
||||
|
||||
MAA는 쉐이 통합 전략에서 자동으로 주화를 줍고 교환합니다.
|
||||
|
||||
::: tip 활성화 조건
|
||||
|
||||
- 투자 모드: "투자 모드에서 쇼핑/모집/2층진입 켜기" 옵션 필요
|
||||
- 기타 모드: 기본 활성화
|
||||
:::
|
||||
|
||||
1. **주화 줍기**: 전투 종료 후 주화 드랍 창에서 `pickup_priority`가 가장 높은 것을 선택.
|
||||
2. **주화 교환**: 주머니가 꽉 찼을 때 새 주화를 주우면:
|
||||
- 주머니 속 주화들의 유형/이름/투척상태 식별
|
||||
|
||||
@@ -119,7 +119,7 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
|
||||
<br>
|
||||
`"1-7"`, `"S3-2"` 등 모든 메인 스토리 스테이지 지원
|
||||
<br>
|
||||
스테이지명 끝에 `Normal`/`Hard`를 입력하여 일반/하드 난이도 전환 가능
|
||||
스테이지명 끝에 `-NORMAL`/`-HARD`를 추가해 난이도 전환 가능 (10-14장은 표준/재앙, 15장 이후는 일반/험지)
|
||||
<br>
|
||||
섬멸 작전의 경우 반드시 `"Annihilation"` 입력
|
||||
<br>
|
||||
@@ -1134,10 +1134,10 @@ Value
|
||||
무효 점유. 열거값: 0
|
||||
:::
|
||||
::: field name="MinitouchEnabled" type="boolean" optional
|
||||
폐기됨. 원 minitouch 활성화 여부; "1" 켜기, "0" 끄기. 장치가 지원하지 않을 수 있음. 열거값: 1 (폐기됨)
|
||||
폐기됨. 원 Minitouch 활성화 여부; "1" 켜기, "0" 끄기. 장치가 지원하지 않을 수 있음. 열거값: 1 (폐기됨)
|
||||
:::
|
||||
::: field name="TouchMode" type="string" optional default="minitouch"
|
||||
터치 모드 설정. 옵션: minitouch | maatouch | adb. 기본값 minitouch. 열거값: 2
|
||||
터치 모드 설정. 옵션: minitouch | maatouch | adb | MaaFwAdb. 기본값 minitouch. 열거값: 2
|
||||
:::
|
||||
::: field name="DeploymentWithPause" type="boolean" optional
|
||||
오퍼레이터 배치 시 일시정지 여부, 자동지휘/통합 전략/보안파견에 모두 영향. 옵션: "1" 켜기, "0" 끄기. 열거값: 3
|
||||
@@ -1148,4 +1148,7 @@ AdbLite 사용 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 4
|
||||
::: field name="KillAdbOnExit" type="boolean" optional
|
||||
종료 시 ADB 프로세스 종료 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 5
|
||||
:::
|
||||
::: field name="ClientType" type="string" optional
|
||||
클라이언트 종류(게임 채널). 대부분의 연결 설정에서는 필요하지 않습니다. `AsstConnect` / `AsstAsyncConnect` 에 전달하는 `config` 가 연결 단계에서 실행되는 명령에 `[PackageName]` 을 사용할 때만, 연결 전에 `AsstSetInstanceOption(..., ClientType, ...)` 를 호출해 설정해야 합니다. 현재 내장 설정 중에서는 `Androws` 와 `WSA` 의 `displayId` 조회만 이 값에 의존합니다. 이 옵션은 StartUp / CloseDown 등의 작업 파라미터 `client_type` 를 대체하지 않습니다. 열거값: 6
|
||||
:::
|
||||
::::
|
||||
|
||||
@@ -78,7 +78,9 @@ icon: iconoir:developer
|
||||
- 按 F5 运行
|
||||
|
||||
::: tip
|
||||
若需调试 Win32Controller(Windows 窗口控制)相关功能,需要自行从 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) 下载对应平台的压缩包,将 `bin` 目录中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目录下(如 `build/bin/Debug`)。欢迎 PR 一个自动下载脚本!
|
||||
若需运行 Win32Controller(Windows 窗口控制)/ MaaFwAdbController(MaaFramework 触控模式)相关功能,需要自行从 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) 下载对应平台的压缩包,将 `bin` 目录中的 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` 放到 MAA 的 DLL 同目录下(如 `build/bin/Debug`)。欢迎 PR 一个自动下载脚本!
|
||||
|
||||
若需调试相关功能,则需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,使用对应的 DLL 文件,否则在断点调试时会神秘闪退。
|
||||
:::
|
||||
|
||||
9. 到这里,你就可以愉快地 ~~瞎 JB 改~~ 发电了
|
||||
|
||||
@@ -8,8 +8,8 @@ icon: teenyicons:linux-alt-solid
|
||||
**本教程需要读者有一定的 Linux 环境配置能力及编程基础!**,若您仅希望直接安装MAA而非自行编译,请阅读[用户手册 - Linux 模拟器与容器](../manual/device/linux.md)。
|
||||
|
||||
::: info 注意
|
||||
MAA 的构建方法仍在讨论中, 本教程的内容可能过时, 请以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的脚本为准
|
||||
你也可参考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
|
||||
MAA 的构建方法仍在讨论中, 本教程的内容可能过时, 请以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) 中的脚本为准。
|
||||
你也可参考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)。
|
||||
:::
|
||||
|
||||
::: info
|
||||
@@ -80,9 +80,8 @@ Mac 可以使用 `tools/build_macos_universal.zsh` 脚本进行编译
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
4. 结束,你应该能在目录下看到构建文件了
|
||||
|
||||
::::
|
||||
4. 若需调试 MaaFwAdbController(MaaFramework 触控模式)相关功能,需要[自行编译 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,将 `libMaaAdbControlUnit.so` 放到安装目录下。
|
||||
::::
|
||||
|
||||
## 集成文档
|
||||
|
||||
@@ -96,8 +95,6 @@ Mac 可以使用 `tools/build_macos_universal.zsh` 脚本进行编译
|
||||
|
||||
可参考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的实现
|
||||
|
||||
### C Sharp
|
||||
|
||||
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
|
||||
### C\#
|
||||
|
||||
可参考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的实现
|
||||
|
||||
@@ -16,6 +16,7 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
|
||||
- 雷电模拟器 9:`emulator-5554/5556/5558/5560`、`127.0.0.1:5555/5557/5559/5561`
|
||||
- 夜神模拟器:`127.0.0.1:62001/59865`
|
||||
- 逍遥模拟器:`127.0.0.1:21503`
|
||||
- 腾讯应用宝 (5.10.56.xx之后):`127.0.0.1:5555`
|
||||
|
||||
若检测失败,请尝试使用 UAC 管理员权限启动 MAA 并再次检测。若仍失败,则请阅读下文手动设置,并参考上述列表进行反馈。
|
||||
|
||||
@@ -57,6 +58,7 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
|
||||
- [雷电模拟器 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc)
|
||||
- [夜神模拟器](https://support.yeshen.com/zh-CN/qt/ml)
|
||||
- [逍遥模拟器](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537)
|
||||
- [腾讯应用宝](https://sj.qq.com/faq/3878):ADB 端口固定为 `127.0.0.1:5555`,ADB 路径示例:`C:\Program Files\Tencent\Androws\Application\版本号\adb.exe`。
|
||||
|
||||
其他模拟器可参考 [赵青青的博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
|
||||
|
||||
@@ -186,17 +188,28 @@ MAA 可以通过当前**正在运行的单个模拟器**自动检测并填充 AD
|
||||
|
||||
3. `实例编号` 填写雷电多开器内对应模拟器的编号(ID),如主多开为 `0`。
|
||||
|
||||
### AVD 截图增强模式
|
||||
|
||||
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟开服之后下载的就没问题。)
|
||||
|
||||
AVD 截图增强模式在 MaaFramework 中实现,必须选择 MaaFramework 触控模式才能启用 AVD 截图增强。
|
||||
|
||||
1. `设置` - `连接设置` - `连接配置` 选择 `Android 虚拟设备(AVD)`。
|
||||
|
||||
2. `触控模式` 选择 `MaaFramework`。
|
||||
|
||||
## 触控模式
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):使用 C 编写的 Android 触控事件器,操作 `evdev` 设备,提供 Socket 接口供外部程序触发触控事件和手势。从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。<sup>[源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基于 Java 对 Minitouch 的重新实现,使用安卓原生的 `InputDevice`,并添加了额外特性。高版本 Android 可用性尚待测试。~~帮我们做做测试~~
|
||||
3. Adb Input:直接调用 ADB 使用安卓的 `input` 命令进行触控操作,兼容性最强,速度最慢。
|
||||
4. [MaaFramework](https://maafw.com/):调用 MaaFramework 控制单元的截图和触控功能。可用性尚待测试。~~帮我们做做测试 x2~~
|
||||
|
||||
## ADB Lite
|
||||
|
||||
由 MAA 独立实现的 ADB Client,使用 TCP 直接与 ADB Server 通信。相较原版 ADB 可以避免不停开启多个 ADB 进程,减少性能开销,但部分截图方式不可用。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
|
||||
|
||||
推荐启用,但具体优缺点尚待反馈。~~帮我们做做测试 x2~~
|
||||
推荐启用,但具体优缺点尚待反馈。~~帮我们做做测试 x3~~
|
||||
|
||||
## MAA 和模拟器多开
|
||||
|
||||
|
||||
@@ -121,6 +121,8 @@ MAA WPF GUI 当前可以通过 Wine 运行。MAA 已采用自包含部署方式
|
||||
|
||||
推荐配置: x86_64 的框架 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 动态库
|
||||
|
||||
额外支持[截图增强模式](../connection.md#avd-截图增强模式)。
|
||||
|
||||
注意:从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
@@ -35,11 +35,13 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支持,但从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
|
||||
支持,且额外支持[截图增强模式](../connection.md#avd-截图增强模式)。
|
||||
|
||||
### ✅ [蓝叠模拟器air版](https://www.bluestacks.com/mac) (免费,针对 Apple M 系列芯片进行优化的版本)
|
||||
从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
|
||||
|
||||
支持,经测试,可用 maatouch 经`127.0.0.1:5555`连接。
|
||||
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (免费,针对 Apple M 系列芯片进行优化的版本)
|
||||
|
||||
支持,经测试,可使用 MaaTouch 通过 `127.0.0.1:5555` 连接。
|
||||
|
||||
需要在模拟器 `设置` - `高级` 中打开 `Android调试(ADB)`。
|
||||
|
||||
@@ -61,8 +63,10 @@ icon: basil:apple-solid
|
||||
|
||||
完美支持。
|
||||
|
||||
补充:mac 下夜神模拟器的 ADB 二进制文件的位置为 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` ,在父目录 `MacOS` 下可使用 `adb devices` 命令查看 ADB 端口。
|
||||
补充:macOS 下夜神模拟器的 ADB 二进制文件的位置为 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` ,在父目录 `MacOS` 下可使用 `adb devices` 命令查看 ADB 端口。
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支持,但从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
|
||||
支持,且额外支持[截图增强模式](../connection.md#avd-截图增强模式)。
|
||||
|
||||
从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。
|
||||
|
||||
@@ -45,6 +45,11 @@ const fullySupport = [
|
||||
note: '完美支持,需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥`。已知兼容 Hyper-V。\n\n- 推荐下载 [离线安装包](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免缓慢和捆绑安装;推荐安装 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;卸载请使用官方提供的 [卸载工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除残留。\n- 若 ADB 端口号不断的无规律变动,每次启动都不相同,可能是因为您的电脑开启了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 现在会尝试自动读取蓝叠模拟器配置文件内的端口号,若该功能失效/你有多开需求/安装了多个模拟器核心,请参考 [连接设置](../connection.html#蓝叠模拟器-hyper-v-每次启动端口号都不一样) 做出修改。由于 Hyper-V 以管理员身份运行,如自动关闭模拟器、自动检测连接等不涉及 ADB 的操作同样需要以管理员身份运行 MAA。',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: '腾讯应用宝',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '支持 5.10.56.xx之后的版本。在 `设置` - `连接设置` 中选择 `腾讯应用宝` 连接配置。已知兼容 Hyper-V。\n\n- ADB 端口为 `127.0.0.1:5555`,\n- ADB路径示例:`C:\\Program Files\\Tencent\\Androws\\Application\\版本号\\adb.exe`。\n\n- 需要先在应用宝中 [开启 ADB 调试](https://sj.qq.com/faq/3878)。',
|
||||
},
|
||||
{
|
||||
name: '夜神模拟器',
|
||||
link: 'https://www.yeshen.com/',
|
||||
@@ -72,12 +77,12 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: '理论支持。\n\n- 从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。\n- AVD 是为调试而生的,更建议使用其他为游戏而设计的模拟器。',
|
||||
note: '理论支持,且额外支持[截图增强模式](../connection.html#avd-截图增强模式)。\n- 从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用,请切换至其他触控模式,或将 SELinux **临时**切换为 `Permissive` 模式。\n- AVD 是为调试而生的,更建议使用其他为游戏而设计的模拟器。',
|
||||
},
|
||||
{
|
||||
name: 'Google Play 游戏(开发者)',
|
||||
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-cn',
|
||||
note: '理论支持。必须开启 Hyper-V,且必须登录谷歌账户。\n\n- 需要使用 [自定义连接](../connection.html) 的方式来连接,ADB 端口为 `6520`。\n- 由于 Android 10 及更新版本的 SELinux 策略,Minitouch 无法正常工作,请切换到其他触控模式。\n- 每次启动模拟器后的首次连接都会失败,需勾选 `连接失败后尝试关闭并重启ADB进程`。',
|
||||
note: '理论支持。必须启用 Hyper-V,且必须登录谷歌账户。\n\n- 需要使用 [自定义连接](../connection.html) 的方式来连接,ADB 端口为 `6520`。\n- 由于 Android 10 及更新版本的 SELinux 策略,Minitouch 无法正常工作,请切换到其他触控模式。\n- 每次启动模拟器后的首次连接都会失败,需勾选 `连接失败后尝试关闭并重启ADB进程`。',
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -87,11 +92,6 @@ const notSupport = shuffleArray([
|
||||
link: 'https://play.google.com/googleplaygames',
|
||||
note: '不支持,[玩家客户端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)无法连接 ADB。',
|
||||
},
|
||||
{
|
||||
name: '腾讯应用宝',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '不支持,腾讯应用宝没有给出adb连接选项,无法连接 ADB。',
|
||||
},
|
||||
]);
|
||||
|
||||
const md = new MarkdownIt();
|
||||
|
||||
@@ -54,6 +54,21 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
|
||||
|
||||
由于 MAA 依赖的运行库和系统组件要求 Windows 10 及以上版本,MAA 不再支持 Windows 7 / 8 / 8.1 系统。
|
||||
|
||||
### 被 Windows Defender / 杀毒软件误报(PUA / 病毒)
|
||||
|
||||
- 请先确认下载来源可信,仅使用官网、GitHub Releases、Winget 或官方群文件;并确认下载的是完整安装包(如 `MAA-<版本>-win-x64.zip`)。
|
||||
- 自动化工具可能会触发部分杀毒软件的启发式检测,出现误报并不一定代表软件存在恶意行为。
|
||||
- 若确认来源可信,建议向对应安全厂商提交误报样本,等待其病毒库修正。
|
||||
- 在等待修正期间,可临时将 MAA 安装目录加入杀毒软件白名单;不建议直接关闭系统实时防护。
|
||||
|
||||
### DLL 注入问题
|
||||
|
||||
MAA 启动时弹出悲报:MAA 路径的 DLL 注入可能会导致 MAA 闪退或界面渲染异常
|
||||
(主要是 Nahimic 等程序引起的)
|
||||
可以在资源管理器中导航至 MAA 给出的路径,右键该 DLL 并重命名,把扩展名改为 `dll1` 等无效扩展名
|
||||
(如果没有扩展名或者你找不到这个文件,就点击页面上的`查看--显示--文件扩展名`和`查看--显示--隐藏的项目`)
|
||||
**该方法可能会导致相关程序出错,请谨慎使用,想了解问题原因可以查看[相关动态](https://t.bilibili.com/1133690423484612615)和 [blog](https://blog.walterlv.com/post/wpf-renders-wrong-because-of-nahimicosd.html)**
|
||||
|
||||
## 连接错误
|
||||
|
||||
### 确认 ADB 及连接地址正确
|
||||
|
||||
@@ -40,7 +40,7 @@ icon: hugeicons:brain-02
|
||||
确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。
|
||||
- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。
|
||||
- 也可以在 `任务设置` - `理智作战` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有:
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 切换难度:10-14 章对应标准/磨难,15 章及以后对应常规/险地。
|
||||
- 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。
|
||||
- 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。
|
||||
|
||||
@@ -8,7 +8,7 @@ icon: ph:sword-bold
|
||||
`resource/copilot/*.json` 的使用方法及各字段说明
|
||||
|
||||
::: tip
|
||||
请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用
|
||||
请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用。注释中的 **作业站** 均指 [PRTS plus](https://prts.plus/) 。
|
||||
:::
|
||||
|
||||
## 完整字段一览
|
||||
@@ -64,7 +64,7 @@ icon: ph:sword-bold
|
||||
"type": "部署", // 操作类型,可选,默认为 "Deploy"
|
||||
// "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera" | "ResetStopwatch"
|
||||
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" | "重置全局计时器"
|
||||
// 中英文皆可,效果相同
|
||||
// 中英文皆可,效果相同,但目前作业站发布只支持英文
|
||||
// 若为 "部署", 当费用不够时,会一直等待到费用够(除非 timeout)
|
||||
// 若为 "技能", 当技能 cd 没转好时,一直等待到技能 cd 好(除非 timeout)
|
||||
// "二倍速" 是可切换的,即使用一次变成二倍速,再次使用又变回一倍速
|
||||
@@ -106,7 +106,7 @@ icon: ph:sword-bold
|
||||
"direction": "左", // 部署干员的干员朝向。 type 为 "部署" 时必选
|
||||
// "Left" | "Right" | "Up" | "Down" | "None"
|
||||
// "左" | "右" | "上" | "下" | "无"
|
||||
// 中英文皆可,效果相同
|
||||
// 中英文皆可,效果相同,但目前作业站发布只支持英文
|
||||
"skip_if_not_ready": false, // 仅在 type 为 "技能" 时有效, 允许在技能不可用时跳过当前行动,主要用于关闭未打完的弹药技能。可选,默认为 false
|
||||
"skill_usage": 1, // 修改技能用法。当 type 为 "技能用法" 时必选
|
||||
// 举例:刚下桃金娘需要她帮忙打几个怪,不能自动开技能,中后期平稳了需要她自动开技能
|
||||
@@ -155,7 +155,7 @@ icon: ph:sword-bold
|
||||
"type": "二倍速"
|
||||
}
|
||||
],
|
||||
"minimum_required": "v4.0", // 最低要求 maa 版本号,必选。
|
||||
"minimum_required": "v6.7.0", // 最低要求 maa 版本号,必选;例如 v6.7.0, v6.8.0-beta.1
|
||||
"doc": {
|
||||
// 描述,可选。
|
||||
"title": "低练度高成功率作业",
|
||||
|
||||
@@ -799,14 +799,6 @@ OCR 识别不期而遇事件名称,但是选项是操作固定的位置
|
||||
|
||||
MAA 在界园肉鸽中会自动处理通宝的拾取和交换:
|
||||
|
||||
::: tip 启用条件
|
||||
通宝交换功能仅在以下模式中启用:
|
||||
|
||||
- 投资模式:需要开启"投资模式启用购物、招募、进2层"选项
|
||||
- 其他模式:默认启用
|
||||
|
||||
:::
|
||||
|
||||
1. **拾取掉落通宝**:在战斗结束后,如果出现通宝掉落选择界面,MAA 会根据 `pickup_priority` 选择优先级最高的通宝
|
||||
|
||||
2. **交换钱盒通宝**:当新拾取的通宝需要与钱盒中的通宝交换时:
|
||||
|
||||
@@ -118,7 +118,7 @@ B服:`张三`,可输入 `张三`、`张`、`三`
|
||||
关卡名,默认为空,识别当前/上次的关卡。不支持运行中设置。
|
||||
目前支持导航的关卡有:
|
||||
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 切换难度:10-14 章对应标准/磨难,15 章及以后对应常规/险地。
|
||||
- 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。
|
||||
- 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。
|
||||
@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
|
||||
无效占位。枚举值:0。
|
||||
:::
|
||||
::: field name="MinitouchEnabled" type="boolean" optional
|
||||
已弃用。原为是否启用 minitouch;"1" 开,"0" 关。注意设备可能不支持。枚举值:1(已弃用)。
|
||||
已弃用。原为是否启用 Minitouch;"1" 开,"0" 关。注意设备可能不支持。枚举值:1(已弃用)。
|
||||
:::
|
||||
::: field name="TouchMode" type="string" optional default="minitouch"
|
||||
触控模式设置。可选值:minitouch | maatouch | adb。默认 minitouch。枚举值:2。
|
||||
触控模式设置。可选值:minitouch | maatouch | adb | MaaFwAdb。默认 minitouch。枚举值:2。
|
||||
:::
|
||||
::: field name="DeploymentWithPause" type="boolean" optional
|
||||
是否暂停下干员,同时影响抄作业、肉鸽、保全。可用值:"1" 或 "0"。枚举值:3。
|
||||
@@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
|
||||
::: field name="KillAdbOnExit" type="boolean" optional
|
||||
退出时是否杀掉 Adb 进程。可用值:"0" 或 "1"。枚举值:5。
|
||||
:::
|
||||
::: field name="ClientType" type="string" optional
|
||||
客户端类型(游戏渠道)。大多数连接配置不需要设置。仅当传给 `AsstConnect` / `AsstAsyncConnect` 的 `config` 在连接阶段命令里使用 `[PackageName]` 时,才需要在连接前调用 `AsstSetInstanceOption(..., ClientType, ...)`。当前内置配置仅 `Androws` 和 `WSA` 的 `displayId` 查询依赖该值。该选项不替代 StartUp / CloseDown 等任务参数里的 `client_type`。枚举值:6。
|
||||
:::
|
||||
::::
|
||||
|
||||
@@ -78,7 +78,9 @@ icon: iconoir:developer
|
||||
- 按 F5 執行。
|
||||
|
||||
::: tip
|
||||
若需針對 Win32Controller(Windows 視窗控制)相關功能進行除錯,需要自行從 [MaaFramework Releases](https://github.com/MaaModular/MaaFramework/releases) 下載對應平台的壓縮檔案,將 `bin` 目錄中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目錄下(例如 `build/bin/Debug`)。歡迎 PR 一個自動下載腳本!
|
||||
若需執行 Win32Controller(Windows 視窗控制)/ MaaFwAdbController(MaaFramework 觸控模式)相關功能,需要自行從 [MaaFramework Releases](https://github.com/MaaModular/MaaFramework/releases) 下載對應平台的壓縮檔案,將 `bin` 目錄中的 `MaaWin32ControlUnit.dll` / `MaaAdbControlUnit.dll` 放到 MAA 的 DLL 同目錄下(例如 `build/bin/Debug`)。歡迎 PR 一個自動下載腳本!
|
||||
|
||||
若需針對相關功能進行除錯,則需要自行編譯 MaaFramework 的 Debug 版本,使用對應的 DLL 檔案,否則在斷點除錯時會神秘閃退。
|
||||
:::
|
||||
|
||||
9. 到這裡,你就可以愉快地 ~~瞎雞巴改~~ 發電了
|
||||
|
||||
@@ -8,7 +8,7 @@ icon: teenyicons:linux-alt-solid
|
||||
**本教學需要讀者具備一定的 Linux 環境配置能力與程式設計基礎!** 若您僅希望直接安裝 MAA 而非自行編譯,請參閱[用戶手冊 - Linux 模擬器與容器](../manual/device/linux.md)。
|
||||
|
||||
::: info 注意
|
||||
MAA 的建置方法仍在討論中,本教學內容可能過時,請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的腳本為準。
|
||||
MAA 的建置方法仍在討論中,本教學內容可能過時,請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev-v2/.github/workflows/ci.yml#L224#:~:text=ubuntu%3A) 中的腳本為準。
|
||||
您也可以參考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)。
|
||||
:::
|
||||
|
||||
@@ -80,7 +80,7 @@ Mac 使用者可以使用 `tools/build_macos_universal.zsh` 腳本進行編譯
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
4. 結束,您現在應該能在目錄下看到建置完成的檔案了。
|
||||
4. 若需針對 MaaFwAdbController(MaaFramework 觸控模式)相關功能進行除錯,需要[自行編譯 MaaFramework](https://maafw.com/docs/4.1-BuildGuide) 的 Debug 版本,將 `libMaaAdbControlUnit.so` 放到安裝目錄下。
|
||||
|
||||
::::
|
||||
|
||||
@@ -96,8 +96,6 @@ Mac 使用者可以使用 `tools/build_macos_universal.zsh` 腳本進行編譯
|
||||
|
||||
可參考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的實作方式。
|
||||
|
||||
### C Sharp
|
||||
|
||||
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
|
||||
### C\#
|
||||
|
||||
可參考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的實作方式。
|
||||
|
||||
@@ -16,6 +16,7 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
|
||||
- 雷電模擬器 9:`emulator-5554/5556/5558/5560`、`127.0.0.1:5555/5557/5559/5561`
|
||||
- 夜神模擬器:`127.0.0.1:62001/59865`
|
||||
- 逍遙模擬器:`127.0.0.1:21503`
|
||||
- 騰訊應用寶 (5.10.56.xx 之後):`127.0.0.1:5555`
|
||||
|
||||
若偵測失敗,請嘗試以系統管理員權限啟動 MAA 並再次偵測。若仍失敗,請參考下文進行手動設定,並參考上述清單向我們回報。
|
||||
|
||||
@@ -57,6 +58,7 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
|
||||
- [雷電模擬器 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc)
|
||||
- [夜神模擬器](https://support.yeshen.com/zh-CN/qt/ml)
|
||||
- [逍遙模擬器](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537)
|
||||
- [騰訊應用寶](https://sj.qq.com/faq/3878):ADB 連接埠固定為 `127.0.0.1:5555`,ADB 路徑範例:`C:\Program Files\Tencent\Androws\Application\版本號\adb.exe`。
|
||||
|
||||
其他模擬器可參閱 [趙青青的博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
|
||||
|
||||
@@ -186,17 +188,28 @@ MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填
|
||||
|
||||
3. `執行個體編號` 填寫雷電多開器內對應的模擬器序號(ID),主多開為 `0`。
|
||||
|
||||
### AVD 截圖增強模式
|
||||
|
||||
需使用 Android Emulator v27.2.9 及更新版本。(只要是方舟開服之後下載的就沒問題。)
|
||||
|
||||
AVD 截圖增強模式在 MaaFramework 中實現,必須選擇 MaaFramework 觸控模式才能啟用 AVD 截圖增強。
|
||||
|
||||
1. `設定` - `連線設定` - `連線配置` 選擇 `Android 虛擬裝置(AVD)`。
|
||||
|
||||
2. `觸控模式` 選擇 `MaaFramework`。
|
||||
|
||||
## 觸控模式
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):基於 C 語言編寫的 Android 觸控事件驅動程式,透過操作 `evdev` 裝置,提供 Socket 介面供外部程式觸發觸控事件與手勢。自 Android 10 開始,若系統的 SELinux 為 `Enforcing`(強制)模式,Minitouch 將無法運作。<sup>[來源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基於 Java 對 Minitouch 的重新實作,改用 Android 原生的 `InputDevice`介面,並加入額外特性。目前在高版本 Android 上的相容性仍待測試,~~幫我們做做測試~~。
|
||||
3. Adb Input:直接呼叫 ADB 執行 Android 內建的 `input` 指令來進行觸控操作。此方式的相容性最強,但執行速度最慢。
|
||||
4. [MaaFramework](https://maafw.com/):呼叫 MaaFramework 控制單元的螢幕截圖和觸控功能。可用性尚待測試。~~幫我們做做測試 x2~~
|
||||
|
||||
## ADB Lite
|
||||
|
||||
由 MAA 獨立實現的 ADB 用戶端,使用 TCP 直接與 ADB Server 通信。相較原版 ADB 可避免頻繁開啟 ADB 程序並減少效能開銷,但部分截圖方式不支援。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
|
||||
|
||||
推薦開啟,但具體表現尚待回饋。~~幫我們做做測試 x2~~
|
||||
推薦開啟,但具體表現尚待回饋。~~幫我們做做測試 x3~~
|
||||
|
||||
## MAA 與模擬器多開
|
||||
|
||||
|
||||
@@ -121,6 +121,8 @@ MAA WPF GUI 當前可以透過 Wine 執行。MAA 已採用自包含部署方式
|
||||
|
||||
推薦配置:x86_64 的架構 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 動態函式庫
|
||||
|
||||
額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)。
|
||||
|
||||
請注意:從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
@@ -35,11 +35,13 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支援,但從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
支援,且額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)。
|
||||
|
||||
### ✅ [BlueStacks 藍疊模擬器 Air 版](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
|
||||
從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
支援,經測試,可用 maatouch 透過 `127.0.0.1:5555` 連線。
|
||||
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
|
||||
|
||||
支援,經測試,可用 MaaTouch 透過 `127.0.0.1:5555` 連線。
|
||||
|
||||
需要在模擬器 `設定` - `進階` 中打開 `Android 調試 (ADB)`。
|
||||
|
||||
@@ -61,8 +63,10 @@ icon: basil:apple-solid
|
||||
|
||||
完美支援。
|
||||
|
||||
補充:mac 下夜神模擬器的 ADB 執行檔路徑為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 指令查看 ADB 連接埠。
|
||||
補充:macOS 下夜神模擬器的 ADB 執行檔路徑為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 指令查看 ADB 連接埠。
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支援,但從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
支援,且額外支援[截圖增強模式](../connection.md#avd-截圖增強模式)。
|
||||
|
||||
從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
@@ -45,6 +45,11 @@ const fullySupport = [
|
||||
note: '完美支援,需要在模擬器 `設定` - `進階` 中打開 `Android 調試橋 (ADB)`。已知相容 Hyper-V。\n\n- 推薦下載 [離線安裝程式](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免下載緩慢或綑綁安裝;推薦安裝 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;解除安裝請使用官方提供的 [解除安裝工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除殘留。\n- 若 ADB 連接埠號碼不斷無規律變動,每次啟動都不相同,可能是因為您的電腦開啟了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 目前會嘗試自動讀取藍疊模擬器配置檔案內的連接埠號碼,若該功能失效、有分身多開需求或安裝了多個模擬器核心,請參考 [連線設定](../connection.html#藍疊模擬器-hyper-v-每次啟動連接埠號都不一樣) 進行修改。由於 Hyper-V 以管理員身分執行,如自動關閉模擬器、自動偵測連線等不涉及 ADB 的操作同樣需要以系統管理員身分執行 MAA。',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: '騰訊應用寶',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '支援 5.10.56.xx 之後的版本。在 `設定` - `連線設定` 中選擇 `騰訊應用寶` 連線配置。已知相容 Hyper-V。\n\n- ADB 連接埠為 `127.0.0.1:5555`。\n- ADB 路徑範例:`C:\\Program Files\\Tencent\\Androws\\Application\\版本號\\adb.exe`。\n\n- 需要先在應用寶中 [開啟 ADB 除錯](https://sj.qq.com/faq/3878)。',
|
||||
},
|
||||
{
|
||||
name: '夜神模擬器 (NoxPlayer)',
|
||||
link: 'https://www.yeshen.com/',
|
||||
@@ -72,7 +77,7 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: '理論支援。\n\n- 從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為開發除錯而生的,更建議使用其他為遊戲設計的模擬器。',
|
||||
note: '理論支援,且額外支援[截圖增強模式](../connection.html#avd-截圖增強模式)。\n- 從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為開發除錯而生的,更建議使用其他為遊戲設計的模擬器。',
|
||||
},
|
||||
{
|
||||
name: 'Google Play 遊戲(開發者版本)',
|
||||
@@ -87,11 +92,6 @@ const notSupport = shuffleArray([
|
||||
link: 'https://play.google.com/googleplaygames',
|
||||
note: '不支援,[一般玩家版客戶端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-tw#installing-game-consumer)無法連線 ADB。',
|
||||
},
|
||||
{
|
||||
name: '騰訊應用寶',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '不支援,騰訊應用寶沒有提供 ADB 連線選項,無法連線 ADB。',
|
||||
},
|
||||
]);
|
||||
|
||||
const md = new MarkdownIt();
|
||||
|
||||
@@ -42,7 +42,7 @@ icon: hugeicons:brain-02
|
||||
確保畫面停留在「右上角有關卡名稱和剩餘理智,右下角有代理指揮和開始行動」的關卡詳情介面。
|
||||
- 若目前不處於此介面,則 `目前/上次` 會自動進入終端首頁右下角「上次作戰」的關卡。
|
||||
- 也可以在 `設定 - 刷理智 - 進階設定` 中啟用 `手動輸入關卡名稱` 手動輸入關卡編號。目前支援導航的關卡有:
|
||||
- 全部主線關卡。可在關卡末尾添加 `-NORMAL` 或 `-HARD` 來切換標準或磨難關卡。
|
||||
- 全部主線關卡。可在關卡末尾添加 `-NORMAL` 或 `-HARD` 切換難度:10-14 章對應標準/磨難,15 章及以後對應常規/險地。
|
||||
- 龍門幣、作戰記錄的 5 / 6 關,但必須輸入 `CE-6` / `LS-6`。MAA 會在第六關無法代理的情況下自動切換至第五關。
|
||||
- 技能書、採購憑證、碳本第 5 關,必須輸入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有晶片本。必須輸入完整關卡編號,如 `PR-A-1`。
|
||||
|
||||
@@ -798,14 +798,6 @@ icon: ri:game-fill
|
||||
|
||||
MAA 在界園肉鴿中會自動處理通寶的拾取與交換:
|
||||
|
||||
::: tip 啟用條件
|
||||
通寶交換功能僅在以下模式中啟用:
|
||||
|
||||
- 投資模式:需要開啟 `投資模式啟用購物、招募、進入第 2 層` 選項。
|
||||
- 其他模式:預設啟用。
|
||||
|
||||
:::
|
||||
|
||||
1. **拾取掉落通寶**:在戰鬥結束後,若出現通寶掉落選擇介面,MAA 會根據 `pickup_priority` 選擇優先級最高的通寶。
|
||||
|
||||
2. **交換錢盒通寶**:當新拾取的通寶需要與錢盒中的通寶交換時:
|
||||
|
||||
@@ -118,7 +118,7 @@ B 服:`張三`,可輸入 `張三`、`張`、`三`
|
||||
關卡名稱。預設為空,將辨識 `目前/上次` 關卡。不支援在執行中更改設定。
|
||||
目前支援導航的關卡包含:
|
||||
|
||||
- **全部主線關卡**:可在關卡末尾新增 `-NORMAL` 或 `-HARD` 以切換標準或磨難難度。
|
||||
- **全部主線關卡**:可在關卡末尾新增 `-NORMAL` 或 `-HARD` 切換難度:10-14 章對應標準/磨難,15 章及以後對應常規/險地。
|
||||
- **資源收集**:
|
||||
- 龍門幣、作戰記錄: 支援第 5 / 6 關,但必須輸入 `CE-6` / `LS-6`。若第六關無法代理,MAA 會自動切換至第五關。
|
||||
- 技能書、採購憑證、碳本:支援第 5 關,必須輸入 `CA-5` / `AP-5` / `SK-5`。
|
||||
@@ -1145,10 +1145,10 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
|
||||
無效佔位。列舉值:0。
|
||||
:::
|
||||
::: field name="MinitouchEnabled" type="boolean" optional
|
||||
已棄用。原為是否啟用 `minitouch`;"1" 開,"0" 關。請注意設備可能不支援。列舉值:1(已棄用)。
|
||||
已棄用。原為是否啟用 Minitouch;"1" 開,"0" 關。請注意設備可能不支援。列舉值:1(已棄用)。
|
||||
:::
|
||||
::: field name="TouchMode" type="string" optional default="minitouch"
|
||||
觸控模式設定。可選值:`minitouch` | `maatouch` | `adb`。預設為 `minitouch`。列舉值:2。
|
||||
觸控模式設定。可選值:minitouch | maatouch | adb | MaaFwAdb。預設為 minitouch。列舉值:2。
|
||||
:::
|
||||
::: field name="DeploymentWithPause" type="boolean" optional
|
||||
是否暫停下幹員,同時影響抄作業、肉鴿、保全派駐。可用值:"1" 或 "0"。列舉值:3。
|
||||
@@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key,
|
||||
::: field name="KillAdbOnExit" type="boolean" optional
|
||||
退出時是否結束 ADB。可用值:"0" 或 "1"。列舉值:5。
|
||||
:::
|
||||
::: field name="ClientType" type="string" optional
|
||||
客戶端類型(遊戲渠道)。大多數連線設定不需要設定。僅當傳給 `AsstConnect` / `AsstAsyncConnect` 的 `config` 在連線階段命令中使用 `[PackageName]` 時,才需要在連線前呼叫 `AsstSetInstanceOption(..., ClientType, ...)`。目前內建設定中僅 `Androws` 與 `WSA` 的 `displayId` 查詢依賴該值。此選項不取代 StartUp / CloseDown 等任務參數中的 `client_type`。列舉值:6。
|
||||
:::
|
||||
::::
|
||||
|
||||