Compare commits

...

1273 Commits

Author SHA1 Message Date
uye
ba44ec6a40 Release v5.23.0 (#13754) 2025-08-17 19:46:38 +08:00
github-actions[bot]
db2e1ccf4e docs: Auto Update Changelogs of v5.23.0 (#13755)
* docs: Auto Generate Changelog of Release v5.23.0

* docs: Update CHANGELOG.md

* docs: Update CHANGELOG.md

* feat: Update CHANGELOG.md

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
2025-08-17 19:39:09 +08:00
萨拉托加
a8d293999e chore: 更新新保全 (#13756)
* chore: 更新新保全

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 迁移老保全

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-17 17:34:58 +08:00
uye
3ae526ff72 fix: 萨米肉鸽刷坍缩范式闪退
fix #13750
2025-08-17 15:06:51 +08:00
vcfch843875
e99e44ee91 docs: 修正“刷理智”文档表述错误 (#13745)
* docs: 修正表述错误

floor函数是向下取整函数,所以原表述有误。

* docs: 修正表述错误

floor函数是向下取整函数,所以原表述有误。

* docs: 表現の誤りを修正

floor 関数は切り捨て関数なので、元の表現は誤りです。
2025-08-17 13:44:54 +08:00
github-actions[bot]
ea55e0463b chore: Auto Update Game Resources - 2025-08-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17011048822

[skip changelog]
2025-08-16 17:28:40 +00:00
travellerse
b6a953cb1d fix: 修复界园树洞无可用节点时任务失败 (#13741)
* fix: 修复界园树洞无可用节点时任务自动结束

* style: 移除无用的空行
2025-08-17 01:18:39 +08:00
Constrat
38aa0618d0 Revert "fix: add slight delay before `InfrastEnteredFlag' in case of stutters in base rendering"
This reverts commit 90570fbad3.
2025-08-16 14:42:40 +02:00
uye
14963a21c4 Release v5.23.0-beta.2 (#13735) 2025-08-16 19:56:48 +08:00
github-actions[bot]
943cf646bf docs: Auto Update Changelogs of v5.23.0-beta.2 (#13737)
* docs: Auto Generate Changelog of Release v5.23.0-beta.2

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-16 19:48:00 +08:00
github-actions[bot]
693caf6781 chore: Auto Update Game Resources - 2025-08-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17008012425

[skip changelog]
2025-08-16 11:44:13 +00:00
travellerse
aed3f29598 feat: 适配界园树洞节点 (#13552)
* feat: 适配界园树洞节点 拾遗 传说

* fix: 修复卡在传说`应“蕴”而生`投钱

* fix: 将"_defaultBoskyPassage"改为"_boskyPassageDefault"  避免被识别为"_default"

* fix: 修复拾遗获得通宝卡住

* fix: 修复树洞内遇到集印概率卡住

* feat: 初步适配`易与`

* fix: 尝试替换一个更清晰的`易与`模板图

* feat: 添加`祸乱`识别,暂时不进入策略

* feat: 添加`故肆` `筹谋`占位

* feat: 添加`常乐`占位及相关事件选项

* feat: 添加`杂疑`和`筹谋`相关事件

* feat: 添加`杂疑`识别

* fix: 替换 `易与` `常乐` 模板图

* feat: 添加 `故肆` `筹谋` `常乐` `杂疑` 到策略

* fix: 将存在遮挡的 `故肆` `筹谋` `常乐` 识别阈值暂时调到0.65

* feat: 适配传说版`传讯`

* fix: 修复 掷地有声 概率识别错误

* fix: 替换 `故肆` 模板图

* fix: 修复传说版 `同心` 选择导致崩溃

* feat: 初步构建界园树洞地图

* fix: 优化 BoskyPassage 配置加载和节点处理逻辑

* fix: 删除passed属性,优化节点获取和日志输出

* fix: 修复因内存错误导致启动自动肉鸽时闪退

* feat: 支持按类型过滤获取节点

* fix: 移除重置函数中的中心节点创建逻辑

* fix: 优化树洞地图参数传递

* fix: 添加缺失的Grey模板图

* fix: 补上遗漏的NodeAnalyze

* fix: 清理没有使用到的树洞节点Task

* fix: 删除界园树洞多余的地图参数和adjacent函数

* fix: 重构pixel_to_grid_coords为成员函数

* fix: 删除多余的RoguelikeBoskyRoutingTaskPlugin.h引用
2025-08-16 19:43:13 +08:00
HX3N
22a806d699 i18n: KR tweak copilot option translation 2025-08-16 20:06:42 +09:00
Status102
baef3b8868 perf: 不同更新渠道加个描述 (#13734)
* perf: 不同更新渠道加个描述

* i18n: cn

* i18n: zh-tw

* i18n: EN

* i18n: typo

* i18n: JP

* i18n: KR

---------

Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-08-16 18:45:05 +08:00
uye
a7197084c5 feat: 设置排序 (#13699)
* feat: 新增设置排序

* chore: 布局计算延迟到 Loaded 之后

* chore: 提取 SettingItemViewModel,简化代码

* chore: 排序改为全局配置

* chore: 移除没用上的属性

* feat: 运行时允许调整设置顺序
2025-08-16 16:11:31 +08:00
status102
d50f86a9c7 fix: 移除未使用 2025-08-16 14:59:29 +08:00
uye
2d6eff9cb3 chore: catch 一下企鹅物流的上报错误请求,避免影响重试逻辑
fix #13730
2025-08-16 14:50:40 +08:00
uye
d9bd770a4a feat: 调整自动战斗页面布局
[skip changelog]
2025-08-16 12:47:54 +08:00
uye
9a3bdf18d9 feat: 调整自动战斗页面布局 2025-08-16 12:09:32 +08:00
status102
be6d7d7c88 perf(wpf): 自动战斗使用编队选择框UI 2025-08-16 11:35:33 +08:00
status102
1b789ec3c3 fix: 肉鸽投资在单次投资达到999时可能无法退出 2025-08-16 11:16:53 +08:00
husy8
7b6046b682 fix: 修复掉落上报消息类型没有在 Python 层定义导致外部脚本报错的问题 (#13723) 2025-08-16 10:02:35 +08:00
uye
6877941188 fix: debug version 拿不到活动关卡 2025-08-15 22:43:32 +08:00
status102
364f9886f7 fix: 干员识别输出遗漏干员持有情况、潜能
改回旧的, 感觉是写的时候写错了
2025-08-15 22:28:35 +08:00
uye
692c301dc0 style: 长判断换行 2025-08-15 17:28:29 +08:00
status102
b154022100 fix: 剿灭失败不报错 2025-08-15 17:23:00 +08:00
uye
89e71dce76 fix: 傀影卡在无法进行初始招募的深入探索欲月度小队
fix #13692
2025-08-15 15:31:00 +08:00
vcfch843875
beb561a94f docs: 文档日语化翻译 (#13713)
* docs: 翻译“开始唤醒”部分为日语

将“开始唤醒”的部分全文翻译成了日语。
Translated the entire "Wakeup" section into Japanese.
「ウェイクアップ」の部分を全て日本語に翻訳しました。

* docs: 翻译“公开招募”部分为日语

将“公开招募”部分全文翻译成了日语。
The entire "Public Recruitment" section has been translated into Japanese.
「公開募集」部分の全文を日本語に翻訳しました。

* docs: 将“刷理智”部分全文翻译成日语

将“刷理智”部分全文翻译成了日语。
Translated the entire combat section into Japanese.
「作戦」部分の全文を日本語に翻訳しました。

* docs: 翻译文档标题为日语

将中文文档的标题“基建换班”改成日语的「基地仕事」。
Change the title of the Chinese document "基建换班" to the Japanese 「基地仕事」.
中国語のタイトル「基建换班」を日本語の「基地仕事」に変更する。

* docs: 优化文档的日语表达

优化了此文档的日语表达。
Improved the Japanese expressions in this document.
このドキュメントの日本語表現を最適化しました。

* docs: 翻译文档“获取信用及购物”部分

将“获取信用点及购物”部分全文翻译成了日语。
Translated the entire "Get Credits & Shopping" section into Japanese.
「FP獲得と交換」セクションの全文を日本語に翻訳しました。

* docs: 优化文档的日语表达

优化了此文档的日语表达。
Improved the Japanese expressions in this document.
このドキュメントの日本語表現を最適化しました。

* docs: fix 一个锚点错误

./tools.md#公招识别
→  ./tools.md#公開求人認識

* docs: fix 笔误

修正笔误。

* docs: fix 笔误

修正笔误。
2025-08-15 15:13:55 +08:00
uye
59b4ace20b feat: 使用编队宽度自适应 2025-08-15 14:59:36 +08:00
status102
95d27786dd perf(wpf): 一键长草任务列表翻转按钮下拉框样式优化 2025-08-15 14:57:03 +08:00
MistEO
3bef81c23e Revert "ci: bump the github-actions group in /.github/workflows with 2 updates" (#13707) 2025-08-15 10:11:34 +08:00
uye
80fd44728b Release v5.23.0-beta.1 (#13682) 2025-08-15 00:36:52 +08:00
github-actions[bot]
63cfa6e17d docs: Auto Update Changelogs of v5.23.0-beta.1 (#13698)
* docs: Auto Generate Changelog of Release v5.23.0-beta.1

* docs: changelog

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-15 00:30:53 +08:00
SherkeyXD
02d646e9aa feat: 烧水模式启用快速退出 (#13690)
* feat: 烧水模式启用快速退出

* feat: 难度选择 + 导航插件支持

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 屎屎就试试

* fix: 可能修好了

* fix: 加点注释

* feat: 添加界园刷开局入口

* fix: 判断条件错误

* fix: 糊

* feat: 指挥烧水放弃招募

---------

Co-authored-by: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-15 00:02:11 +08:00
status102
e0c72a81d4 refactor: 迁移UpdateStageList 2025-08-14 23:37:42 +08:00
status102
25d2497a47 rft: _stageManager迁移 2025-08-14 23:37:41 +08:00
pre-commit-ci[bot]
892d46e640 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-14 15:12:59 +00:00
status102
e55c22d45a perf: 合并regex 2025-08-14 23:10:30 +08:00
uye
3c82f6894e feat: 支持 梦乡 主题 (#13693)
* feat: 支持 梦乡 主题

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-14 22:50:27 +08:00
github-actions[bot]
b80f2c45df chore: Auto Update Game Resources - 2025-08-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16968559153

[skip changelog]
2025-08-14 14:47:59 +00:00
Tsukiyowu
6e6ca1ef7d fix: 修复萨卡兹肉鸽部分字段无法正确识别的问题 (#13691)
* fix: 修复萨卡兹肉鸽部分字段无法正确识别的问题

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-14 22:37:37 +08:00
uye
3148354640 fix: 无法区分界园 3/5 层 boss 2025-08-14 19:57:12 +08:00
github-actions[bot]
15502a1d6d chore: Auto Update Game Resources - 2025-08-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16960910691

[skip changelog]
2025-08-14 09:10:03 +00:00
status102
ab312ec9fe refactor: binThreshold, useRaw直接写入task 2025-08-14 15:49:48 +08:00
uye
2b13f21908 feat: 优化标题栏显示效果 2025-08-14 14:21:55 +08:00
uye
8ef3e48492 feat: 版本后面也跟个日期 2025-08-14 10:29:16 +08:00
github-actions[bot]
df1c6b4fa7 chore: Auto Update Game Resources - 2025-08-13
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16941861653

[skip changelog]
2025-08-13 15:29:07 +00:00
uye
37600ac2d9 perf: 仓库识别改用二值化后的非char模型识别 (#13667)
* perf: 仓库识别改用二值化后的非char模型识别

* feat: unify large number display format to k/M/B

* chore: 通过开关控制万以下数量是否格式化
2025-08-13 23:20:00 +08:00
uye
140b041164 fix: 因招募动画卡预见密文板 (#13680)
* fix: 因招募动画卡预见密文板

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-13 23:19:22 +08:00
HY
17f5d9e2b1 chore: 繁中服「出蒼白海」導航入口文字調整 (#13681) 2025-08-13 21:57:58 +08:00
status102
646424347e fix: 修修ocr bin threshold 被task info 错误覆盖 2025-08-13 16:05:01 +08:00
uye
427f2996e0 fix: 获得排异反应的干员无法选择技能
fix #13618
2025-08-13 15:59:27 +08:00
uye
83f28cb49b chore: 调整 LDExtras 文件位置 2025-08-13 15:35:25 +08:00
Rbqwow
902a3e9ebe docs: mumu (#13658)
* docs: mumu删了两个数字 我改了二十个文件

* docs: 更新连接设置文档
2025-08-13 15:27:48 +08:00
uye
ca916c9455 chore: 自动战斗存图阈值改为0.75 2025-08-13 14:15:53 +08:00
uye
16968ee2ef fix: schema error 2025-08-13 14:15:53 +08:00
Status102
89f6330e48 fix: 移除使用empty.png当JustReturn屎 (#13652) 2025-08-13 11:23:36 +08:00
Rbqwow
597830850b docs: 文档站小修复 (#13659)
* fix: 去掉按tab可以选中的在页面左上角的`跳至主要内容`

* build: update turbo to 2.5.5

* fix: 干掉语言列表里面的根目录
2025-08-13 05:09:48 +08:00
uye
e1e57b99c0 feat: 幸运掉落用家具零件代替显示 2025-08-12 23:36:09 +08:00
uye
e7aed3250b feat: ADB 连接失败时尝试启动模拟器 勾选框在连接设置与启动设置中同时显示 2025-08-12 22:34:24 +08:00
uye
60eea0e176 style: format 2025-08-12 22:23:15 +08:00
uye
e1cc30b9db feat: 支持 mumu 5555 端口使用控制台退出与截图增强 2025-08-12 21:53:24 +08:00
status102
24e519bbe6 refactor(wpf): 刷理智任务指定材料不再使用双属性保存,仅保存物品id 2025-08-12 16:23:32 +08:00
status102
066c735967 fix: 保存截图加回来
[skip changelog]
2025-08-12 14:42:12 +08:00
status102
1e935aeda9 fix: 识别错误等待+200ms 2025-08-12 14:40:18 +08:00
status102
755a3b97ee fix: 肉鸽投资可能由于存款被长期遮挡导致提前退出 2025-08-12 14:33:48 +08:00
uye
0032b6834a feat: 反转网络桥接提示框的按钮位置,避免误勾选 2025-08-12 13:03:05 +08:00
status102
1f0cf7393c ci: 未提交多个issue时,当前issue也会错误添加rapid-submission标签 2025-08-12 11:59:25 +08:00
status102
fb63fdac56 fix: 未启用备选关卡也会输出剿灭提醒 2025-08-12 11:59:25 +08:00
uye
6c5870b146 chore: 密文板加一个进入后检查 2025-08-12 10:45:05 +08:00
dependabot[bot]
e01e4d2f90 ci: bump the github-actions group in /.github/workflows with 2 updates (#13648)
Bumps the github-actions group in /.github/workflows with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/download-artifact` from 4 to 5
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 09:32:59 +08:00
HY
b6e3df45c8 chore: 繁中服基建 + 保全派駐 7 相關更新 (#13643)
* chore: 繁中服基建更新

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: sss7 txwy

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 移除彩六主題通用截圖

* chore: 再...再補個圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-12 09:29:42 +08:00
Constrat
90570fbad3 fix: add slight delay before `InfrastEnteredFlag' in case of stutters in base rendering 2025-08-12 01:10:33 +02:00
Constrat
b26f6be364 fix: EN Phantom IS font change nextlevel fix 2025-08-11 18:13:22 +02:00
HY
23469665ea chore: 繁中服「出蒼白海」活動導航 (#13644) 2025-08-11 23:34:35 +08:00
uye
1874d187d6 fix: 合成密文板未进入合成页面导致卡死 2025-08-11 23:10:21 +08:00
HX3N
f1b3dadc54 chore: YostarKR CharsNameOcrReplace ocr edit 2025-08-11 23:35:49 +09:00
Constrat
d5f7c00cdd fix: start plugin task not enough delay (#13623) 2025-08-11 16:11:01 +02:00
SherkeyXD
9126d92774 chore: 添加null检测 2025-08-11 20:33:41 +08:00
SherkeyXD
5dd8ee8f55 chore: rename MinimumFeatureLevel to minimumFeatureLevel 2025-08-11 20:33:23 +08:00
SherkeyXD
4ed4e53f46 style: add line 2025-08-11 20:32:10 +08:00
SherkeyXD
e6f29ecac6 chore: 修复fody一直报warning 2025-08-11 19:51:08 +08:00
SherkeyXD
6983c9cab9 style: move annotation 2025-08-11 19:51:08 +08:00
SherkeyXD
ed4c7b3a2b chore: add copyright header 2025-08-11 19:51:07 +08:00
SherkeyXD
c00fa86d0b chore: add nullable flags 2025-08-11 19:51:07 +08:00
Status102
baff5b46a7 ci: 关issue+提示,反复提issue+tag (#13638) 2025-08-11 18:30:37 +08:00
Status102
be96b6a160 refactor: 合并ocrBinThreshold (#13635) 2025-08-11 12:12:41 +02:00
SherkeyXD
640bdfa72b chore: gitignore添加MaaBuilder相关内容 2025-08-11 17:54:41 +08:00
SherkeyXD
3b4917e9e1 chore: 更新nuke版本 2025-08-11 17:53:59 +08:00
SherkeyXD
3596eb284f chore: 更新nuke构建参数信息 2025-08-11 17:38:09 +08:00
SherkeyXD
3ca1d0a16c chore: 更新MaaBuilder中使用的过时方法 2025-08-11 17:38:03 +08:00
SherkeyXD
aeb9ebda3c chore: add missing png suffix to templates 2025-08-11 17:24:10 +08:00
status102
fb99df8a9f ci: CN issue检查单判断逻辑更新, 不再关闭issue 2025-08-11 17:12:05 +08:00
github-actions[bot]
09784802d4 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16873713908

[skip changelog]
2025-08-11 07:32:44 +00:00
uye
96011a2294 fix: 商店因为动画卡在源石锭不足
fix #13632
2025-08-11 15:14:37 +08:00
status102
f83f3c83fa fix: 理智药背景干扰使用数量识别
fix #13622
2025-08-11 14:40:33 +08:00
uye
b18d57923b fix: 第一层没出商店时会在第三层才退出
fix #13615
2025-08-11 14:28:49 +08:00
uye
43a38ff1d8 chore: TestLinkAndGetImage 不允许同时运行 2025-08-11 14:28:49 +08:00
github-actions[bot]
a6bad9b029 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16872296487

[skip changelog]
2025-08-11 06:12:50 +00:00
status102
a13a011580 ci: fix
[skip changelog]
2025-08-11 13:28:04 +08:00
status102
d46066a26d ci: fix
[skip changelog]
2025-08-11 13:21:53 +08:00
Status102
8b133ef43f chore: 模板轮换 (#13625) 2025-08-11 13:19:13 +08:00
github-actions[bot]
5e9ba974b4 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16871478867

[skip changelog]
2025-08-11 05:14:53 +00:00
status102
beb6711b82 refactor(wpf): 基建设施排序初始化 2025-08-11 11:19:19 +08:00
status102
172f33d093 refactor: wpf任务名字段统一 2025-08-11 10:27:51 +08:00
status102
b9f57a4c44 fix(wpf): 肉鸽任务高级设置界面xaml错误修复 2025-08-11 10:15:26 +08:00
status102
6f025d1480 fix(wpf): 肉鸽种子选择框visibility判断更新 2025-08-11 10:14:53 +08:00
status102
6e8ed67dc5 chore(wpf): 基建设施种类 2025-08-11 10:14:18 +08:00
status102
f68d8878e9 chore: CustomTask存储 2025-08-11 10:08:50 +08:00
uye
170d02f082 fix: 每次截图测试前断开模拟器连接以获取最新的最快截图耗时 2025-08-10 23:49:00 +08:00
Status102
612c66b010 perf: 代理倍率、肉鸽难度 使用 不切换 代替 当前不使用 以符合实际逻辑 (#13612)
* perf: 代理倍率、肉鸽难度 使用 `不切换` 代替 `当前`、`不使用` 以符合实际逻辑

* i18n: kr

* chore: use key

* i18n: EN

* i18n: JP

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-10 23:19:43 +08:00
uye
6f8e8e8ea4 fix: 锻冶旧迹 导航识别错误 2025-08-10 20:37:48 +08:00
uye
8c33554a2e feat: 自动编队支持指定使用编队 2025-08-10 16:56:09 +08:00
uye
99175acc30 feat: 调整自动战斗页面布局 2025-08-10 16:56:09 +08:00
uye
8137754462 feat: 调整编队界面翻译 2025-08-10 16:56:08 +08:00
status102
fd91375007 perf: wpf肉鸽难度初始化优化 2025-08-10 16:02:56 +08:00
status102
63a8fe5be4 fix: 追加自定干员职业与最后编入干员职业相同时, 误展开子职业列表
fix #13603
2025-08-10 15:45:47 +08:00
status102
6c3ec3130e chore: 浅调一下初始化顺序 2025-08-10 15:43:26 +08:00
status102
287d7e6597 fix: 肉鸽烧水选择当前难度时禁用 0难烧水切换 2025-08-10 10:51:21 +08:00
uye
5321cd9f42 Release v5.22.3 (#13605) 2025-08-09 23:06:44 +08:00
uye
8e0519f549 docs: Update CHANGELOG.md 2025-08-09 23:06:17 +08:00
uye
d82f230069 rft: 增加企鹅物流 .cn 备用域名,迁移上报逻辑到 UI 层 (#13602)
* chore: 企鹅物流上报添加 .cn 域名

* rft: 将企鹅物流的上报交给 ui 处理

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 上报移除 cpr version

* docs: 添加对应文档

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 获取新 id

* chore: 提取链接

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-09 22:48:38 +08:00
Hao Guan
cafd6d82f1 fix(mac): Mirror酱增量更新 2025-08-09 20:06:30 +08:00
status102
1aad8f7bc4 fix: 肉鸽烧水无法调整难度 2025-08-09 14:13:23 +08:00
uye
5a75870169 fix: 免费单抽剩余不足一小时无法使用
fix #13589
2025-08-09 13:34:30 +08:00
uye
f98ff9cc5e Release v5.22.2 (#13573) 2025-08-08 21:10:55 +08:00
uye
e3add87dc6 docs: Update CHANGELOG.md 2025-08-08 20:57:43 +08:00
uye
50f4f1612c chore: 调整chore: 调整 指点迷津 与 思维边界 的颜色范围
[skip changelog]
2025-08-08 19:36:55 +08:00
uye
3c959a32b8 chore: 调整 指点迷津 与 思维边界 的颜色范围 2025-08-08 18:15:09 +08:00
github-actions[bot]
e1ebfb255d chore: Auto Templates Optimization
Triggered by 48cb4ad49d

[skip changelog]
2025-08-08 09:54:45 +00:00
uye
48cb4ad49d chore: 调整节点识别范围 2025-08-08 17:54:09 +08:00
uye
ddb840d21f chore: stages 识别失败时放弃当前探索 2025-08-08 17:54:08 +08:00
uye
09840fc138 chore: 沉睡石像-战斗 2025-08-08 17:54:08 +08:00
status102
51d56151e6 perf: 肉鸽难度在首次进入后,仅在通关后才再次尝试调整 2025-08-08 15:46:21 +08:00
Status102
119e5c9ce5 feat: StartUp识别开始唤醒时最开始的完整性检测 (#13576)
* feat: StartUp识别开始唤醒时最开始的完整性检测

* chore: kr

* feat: YostarEN

* chore: zh-tw

* chore: YostarJP

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-08 15:39:14 +08:00
Constrat
490329fad8 i18n: fix EN task schema 2025-08-07 22:56:32 +02:00
github-actions[bot]
852c35c068 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16811845762

[skip changelog]
2025-08-07 17:48:38 +00:00
uye
eff86fb645 fix: 招募助战的确认多试几次 2025-08-08 01:45:46 +08:00
uye
670d855651 fix: 最后一个节点开到招募藏品
fix #13570
2025-08-08 01:25:48 +08:00
uye
0bf28fc7d7 chore: 扩大 ChooseDifficulty base 范围 2025-08-07 23:12:07 +08:00
uye
2053f14d55 fix: 选难度闪退
[skip changelog]
2025-08-07 23:12:06 +08:00
Constrat
40fd94d40d chore: update comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-07 17:06:21 +02:00
uye
a6a4c2c934 chore: ChooseDifficulty 还是留着吧
[skip changelog]
2025-08-07 22:44:56 +08:00
pre-commit-ci[bot]
48189efb4b chore: Auto update by pre-commit hooks [skip changelog] 2025-08-07 14:37:30 +00:00
uye
f52658609a feat: 首次使用肉鸽选难度 2025-08-07 22:34:41 +08:00
status102
0b9d0fbcdd fix: 漏了 2025-08-07 22:03:10 +08:00
status102
2d9624bbc6 fix: using 2025-08-07 22:01:25 +08:00
萨拉托加
f8c728fed9 fix: 诡谲断章有概率识别错误 2025-08-07 19:41:46 +08:00
status102
8db6c3c679 refactor: wpf拆分Enum 2025-08-07 19:40:06 +08:00
uye
c97bed87f6 fix: 抗干扰值识别错误时卡树洞
#13572
2025-08-07 19:39:37 +08:00
github-actions[bot]
913bef8329 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16802748917

[skip changelog]
2025-08-07 11:08:34 +00:00
Manicsteiner
e0bd8cf89b chore: YostarJP ocr fix (#13571) 2025-08-07 12:50:44 +02:00
status102
8868eeea98 perf: UseStoneDisplay绑定优化 2025-08-07 17:30:31 +08:00
github-actions[bot]
cf0849aed3 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16798075509

[skip changelog]
2025-08-07 07:32:24 +00:00
status102
89051521c9 style: format
[skip changelog]
2025-08-07 13:54:58 +08:00
status102
ff9f4b7207 perf: Use default config key 2025-08-07 13:54:58 +08:00
status102
a0b63cc67c chore: nullable update 2025-08-07 13:54:57 +08:00
status102
d3cbb31399 fix: 统一使用NotChooseLevel1 2025-08-07 13:54:57 +08:00
HX3N
7212f160ee chore: fix typo
[skip changelog]
2025-08-07 13:57:07 +09:00
HX3N
8e26f6e94a i18n: KR minigame tweak 2025-08-07 13:54:56 +09:00
HX3N
d66158482a chore: YostarKR tweak Roguelike@StartExploreCD text
Remove text to avoid misrecognition
2025-08-07 13:04:49 +09:00
status102
112e5d2ef9 styel: format
[skip changelog]
2025-08-07 11:47:41 +08:00
status102
b60f8ffd00 refactor: wpf刷理智UI变量rename 2025-08-07 11:46:03 +08:00
status102
dd51f70f6e refactor: wpf刷理智UI默认值类型 2025-08-07 11:38:26 +08:00
status102
2ee9743915 refactor: wpf移除不必要的null移除转换 2025-08-07 11:33:07 +08:00
status102
ebc149a755 refactor: 移除肉鸽非开局时的EnterAfterRecruit,完成开始探索状态分离 2025-08-07 10:42:25 +08:00
status102
bda4900ffc refactor: 肉鸽月度小队模式和深入探索开局招募流程状态与局内分离 2025-08-07 10:42:25 +08:00
Constrat
456a7aa8d4 i18n: EN AT minigame tweak 2025-08-07 01:48:32 +02:00
uye
05275bbc0a fix: 肉鸽招募完干员点击右上角时点到了动画结束后的开始探索
fix #13547
2025-08-07 02:05:38 +08:00
HX3N
56a45cec9e fix: YostarKR update ocrReplace and ocr_config (#13562) 2025-08-07 00:37:00 +09:00
bodayw
2495e01e1b feat: 更新 243 极限效率一天四换排班表(20250806 修订) (#13561) 2025-08-06 13:58:17 +02:00
github-actions[bot]
5bbe6c7427 chore: Auto Update Game Resources - 2025-08-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16775639024

[skip changelog]
2025-08-06 11:29:41 +00:00
uye
36eda14549 fix: 关闭骰子页面时点进藏品页
fix #13557
2025-08-06 19:25:17 +08:00
_Burnside
63187cfe83 fix: 干员识别时因特殊排序时的遮挡而导致识别异常 (#13538)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-08-06 19:12:07 +08:00
uye
577e23d961 chore: 调整 schema (#13554)
* chore: 调整 schema

* chore: required

* chore: 同步 en 版本

* chore: 移除 template 默认值

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: $schema require draft-07

* style: 格式化

* style: 格式化

* chore: 统一格式

* chore: 根据 schema 修改 tasks

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 18:37:08 +08:00
github-actions[bot]
01fd697276 chore: Auto Templates Optimization
Triggered by df880a55fa

[skip changelog]
2025-08-06 10:27:56 +00:00
Constrat
df880a55fa fix: EN Phantom IS updated Drop templates 2025-08-06 12:26:27 +02:00
HX3N
3f271f9bb6 docs: KR update and overhaul entire documentation (#13550)
* docs: manual

* docs: protocol

* docs: develop

* chore: fix typo

* chore: fix more typo

* docs: readme

readme image

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: corrected file name

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 18:33:38 +09:00
MistEO
69478a939c feat: u16 OCR replace (#13533)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 13:29:23 +08:00
cibimo
ed81d609f6 fix: 使 python 脚本支持从 github 获取文件长度并更新 (#13457) 2025-08-06 09:36:04 +08:00
Constrat
1176822d0e i18n: EN main readme 2025-08-06 01:36:20 +02:00
Constrat
abae2b77a2 i18n: EN overhaul entire documentation!
Thank you Claude
2025-08-05 19:40:51 +02:00
Constrat
6be474c67f fix: typo
[skip changelog]
2025-08-05 19:37:03 +02:00
Constrat
95c1138a74 docs: cache defaults to true in task-schema.md 2025-08-05 19:35:57 +02:00
Constrat
bff0c82b1e Merge branch 'dev' of https://github.com/MaaAssistantArknights/MaaAssistantArknights into dev 2025-08-05 18:49:11 +02:00
Constrat
0826607897 i18n: EN manual updates/fixes 2025-08-05 18:03:22 +02:00
Constrat
d7e42b0600 i18n: EN device updates/fixes 2025-08-05 18:03:14 +02:00
github-actions[bot]
52cc4971ff chore: Auto Templates Optimization
Triggered by 35fb0e0f4e

[skip changelog]
2025-08-05 15:42:02 +00:00
Constrat
35fb0e0f4e fix: EN IS5 missing template GetDrop4 2025-08-05 17:41:21 +02:00
Constrat
eebe0a9328 i18n: EN manual\cli updates/fixes 2025-08-05 17:13:22 +02:00
Constrat
b708dd9f98 i18n: EN develop updates/fixes 2025-08-05 17:11:27 +02:00
Constrat
ffa0699f89 i18n: ci tutorial for EN 2025-08-05 16:31:23 +02:00
uye
d0d691043e perf: 优化成就列表滚动条
fix #13543
2025-08-05 22:21:36 +08:00
Constrat
801bb5eb4e i18n: EN I.S. manual update 2025-08-05 15:46:09 +02:00
uye
e792af6d45 feat: 调整翻译 2025-08-05 21:42:23 +08:00
uye
8f47e000b7 Release v5.22.1 (#13539) 2025-08-05 21:00:40 +08:00
uye
812f918311 docs: Update CHANGELOG.md
[skip changelog]
2025-08-05 20:30:21 +08:00
status102
a285c3b518 rft: 调整部分UI绑定namespace 2025-08-05 18:21:49 +08:00
Bvicii
7f625e780d feat: 更新技能识别模型,采用更全面的数据集和使用focal loss训练 (#13498)
refactor:用新的数据集和loss function训练技能识别模型
2025-08-05 17:57:24 +08:00
uye
8d3e0e2231 fix: 傀影卡历史馈赠
fix #13511
2025-08-05 17:56:22 +08:00
uye
110eeb98c1 feat: Unhandled exception (#13535)
* feat: Unhandled exception

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-05 17:24:16 +08:00
uye
6e821d02d4 fix: 部分策略无法离开诡谲断章
fix #13526
2025-08-05 17:22:36 +08:00
status102
e5f8e3cdfc fix: wpf肉鸽投资N个源石锭NumericUpDown绑定失效 2025-08-05 16:51:22 +08:00
status102
558a03d6ce refactor: rename FreeRecruit -> FreeGacha 2025-08-05 16:45:38 +08:00
uye
a2593c6d61 fix: 购买商品时因动画导致点击无效
fix #13531
2025-08-05 12:03:06 +08:00
uye
05b6a6ca07 fix: 不开线索交流可能导致技能效率判断崩溃
fix #13493
fix #13508
2025-08-05 11:25:27 +08:00
HY
3f64adc6bc chore: 繁中服「詞祭」介面主題截圖 (#13521)
* chore: 繁中服「詞祭」介面主題截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-05 00:45:27 +08:00
github-actions[bot]
b2c06dd192 chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16728794274

[skip changelog]
2025-08-04 16:33:29 +00:00
HY
ee6877c111 chore: 再度調整繁中服「崔林特爾梅之金·復刻」活動導航 (#13519) 2025-08-05 00:22:31 +08:00
Manicsteiner
44ef5b5ab2 fix: RoutingRefreshNode roi expand (#13515) 2025-08-04 23:55:25 +08:00
github-actions[bot]
d20212dea0 chore: Auto Templates Optimization
Triggered by 788d9293a6

[skip changelog]
2025-08-04 13:13:12 +00:00
萨拉托加
788d9293a6 fix: 去伪存真卡在灵光乍现
fix: #13510
2025-08-04 21:12:25 +08:00
SherkeyXD
1874174a70 chore: 更新CropRoi的依赖 2025-08-04 20:42:22 +08:00
Constrat
e2a6b6644b fix: update YostarEN IS3 templates
fix #13502
2025-08-04 13:41:38 +02:00
_Burnside
e8bb1a97e3 docs: fix typo (#13503) 2025-08-04 17:55:00 +08:00
Manicsteiner
e2519114b6 chore: YostarJP ocr fix (#13500) 2025-08-04 17:24:27 +08:00
github-actions[bot]
0148492916 chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16717675999

[skip changelog]
2025-08-04 08:11:31 +00:00
uye
7845dab791 fix: 概率卡在出洞后的投钱 2025-08-04 15:36:52 +08:00
github-actions[bot]
0f83706c3f chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16716562587

[skip changelog]
2025-08-04 07:15:49 +00:00
status102
d05aae5b1c perf: wpf Win10+Toast通知使用系统内置通知声而不是独立播放 2025-08-04 15:12:42 +08:00
github-actions[bot]
a1025fa2c7 chore: Auto Templates Optimization
Triggered by 40163dacf4

[skip changelog]
2025-08-04 07:11:13 +00:00
uye
40163dacf4 fix: 界园卡通关结算页面 2025-08-04 15:10:43 +08:00
HX3N
f20da513b7 fix: YostarKR corrected ocrReplace in IS5 StrategyChange_mode1 2025-08-04 14:08:22 +09:00
uye
041d4f9525 perf: 手动点击查看公告时获取公告更新前先显示本地公告 2025-08-04 13:03:21 +08:00
uye
6ab772238c fix: 生息演算组装数量识别失败时取消组装 2025-08-04 10:36:37 +08:00
uye
792abcd180 fix: 其他肉鸽可能点到月度小队 2025-08-04 00:29:33 +08:00
uye
ffa8b4b2d4 feat: 不忽略肉鸽的报错 2025-08-04 00:18:57 +08:00
uye
bcd709265e perf: 优化 ComboBox 搜索 2025-08-03 23:54:40 +08:00
Hao Guan
62cbeba7fc fix: clang编译警告 (#13482) 2025-08-03 22:09:49 +08:00
Hao Guan
c6e491eada feat(mac): 新增小游戏 2025-08-03 20:47:37 +08:00
uye
3ac005d75a fix: 模拟器卸载/更新注册表残留可能导致截图增强弹窗死循环 2025-08-03 20:14:43 +08:00
uye
a979b7f33e i18n: 任务出错内容翻译 2025-08-03 15:57:50 +08:00
uye
678f076f60 fix: 仓库识别概率无法识别部分物品 2025-08-03 15:15:03 +08:00
uye
8bf856505b Release v5.22.0 (#13463) 2025-08-03 14:24:13 +08:00
uye
b7933ef7f2 fix: 多余符号 2025-08-03 14:22:43 +08:00
github-actions[bot]
41432ca341 docs: Auto Update Changelogs of v5.22.0 (#13455)
* docs: Auto Generate Changelog of Release v5.22.0

* docs: cahngelog

* feat: changelog

* fix: Update CHANGELOG.md

* fix: Update CHANGELOG.md

* fix: Update CHANGELOG.md

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-03 14:18:49 +08:00
HY
5bf78a9cba i18n: zh-tw tweak translations (#13467)
i18n: zh-tw tweak
2025-08-03 13:32:01 +08:00
萨拉托加
51619da8dd fix: 催债鬼夜叉二次选择 2025-08-03 12:52:37 +08:00
AimOwO
1d6b585c07 fix: 装置“斩”识别 (#13459)
* fix: 装置“斩”识别

* fix: 装置“斩”识别 

防止误识别为“斩”业星熊

* fix: 装置“斩”识别

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-03 12:47:00 +08:00
HX3N
226a45b8ff fix: YostarKR removes spaces in StrategyChange_mode and NextLevel 2025-08-03 05:57:25 +09:00
github-actions[bot]
6dba614726 chore: Auto Templates Optimization
Triggered by 3ebc095d37

[skip changelog]
2025-08-02 19:03:11 +00:00
pre-commit-ci[bot]
3ebc095d37 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-02 19:02:46 +00:00
Manicsteiner
3514651f75 i18n: JP edits (#13460) 2025-08-03 02:55:23 +08:00
uye
94d71b1db4 feat: 相谈室 小游戏 (#13461)
* feat: 相谈室小游戏

* feat: ui 添加小游戏入口

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-03 02:54:00 +08:00
uye
61b968c58f debug: hsv 影响原图 2025-08-03 02:09:22 +08:00
uye
e045adc4dc fix: 卡遇见板子 2025-08-02 23:12:08 +08:00
SherkeyXD
53b1032e24 feat: SideStory「墟」关卡导航 2025-08-02 21:46:39 +08:00
uye
b19c836e35 Release v5.22.0-beta.2 (#13454) 2025-08-02 20:34:27 +08:00
uye
107f67c3a7 docs: Update CHANGELOG.md 2025-08-02 20:33:48 +08:00
Lemon-miaow
2aa63c77e6 feat: 新增是否进行线索交流选项 (#13368)
* feat: 新增是否进行线索交流选项

* chore: Auto update by pre-commit hooks [skip changelog]

* docs: 文档添加参数

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-02 20:32:33 +08:00
uye
d339731987 docs: Update CHANGELOG.md 2025-08-02 20:31:40 +08:00
uye
b611b35248 fix: 无法使用连战 2025-08-02 20:24:31 +08:00
uye
aaefd75ef3 fix: 其他肉鸽的屎山爆炸了 2025-08-02 17:42:55 +08:00
uye
7aae2318f8 fix: 野鬃识别
现在应该没有其他野开头的干员吧
2025-08-02 17:17:01 +08:00
uye
906cb5624f fix: 野鬃识别 2025-08-02 17:11:46 +08:00
HY
36d44d7897 chore: 更新繁中服「崔林特爾梅之金」活動導航 (#13450)
* chore: 更新繁中服「崔林特爾梅之金」活動導航

* chore: update ZT.json

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-02 16:53:06 +08:00
github-actions[bot]
8cceb5ccd7 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16691605689

[skip changelog]
2025-08-02 08:09:30 +00:00
uye
1ba86d879c Release v5.22.0-beta.1 (#13428) 2025-08-02 12:19:57 +08:00
github-actions[bot]
cf930ef66a docs: Auto Update Changelogs of v5.22.0-beta.1 (#13451)
docs: Auto Generate Changelog of Release v5.22.0-beta.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-02 12:18:37 +08:00
Rbqwow
b1138f5b68 docs: 文~档~大~更~新,开始失败喽—— (#13410)
* fix: prettier 一定要能格式化文档✍️✍️✍️

* docs: 更新肉鸽用户文档

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 移除由 heroFullScreen: true 引入的 vp-hero-slide-down-button

主题组件叫 `@theme-hope/components/home/HeroSlideDownButton`
别管怎么移除的 看不到就行了)

* fix: 修复官网查看全部下载按钮动画

refer to 462bf51dce

* docs: 补充萨卡兹肉鸽点刺刷钱策略

* docs: 更新肉鸽新手教程描述

* fix: HomeActionsRelease.tsx typo

* docs: 更新难度选择按钮描述

* docs: Update integrated-strategy.md

* docs: Update integrated-strategy.md

* docs: 更新 integrated-strategy.md

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: DavidWang19 <dwang0340@gmail.com>
2025-08-02 12:15:12 +08:00
github-actions[bot]
da7f9ffbc6 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16689662848

[skip changelog]
2025-08-02 04:02:33 +00:00
github-actions[bot]
5ec8bbf5a0 chore: Auto Templates Optimization
Triggered by 8ffbf4e053

[skip changelog]
2025-08-02 03:01:56 +00:00
github-actions[bot]
8ffbf4e053 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16689151708

[skip changelog]
2025-08-02 03:01:27 +00:00
萨拉托加
f82257d2cb fix: 祠堂口事件识别失败 2025-08-02 10:54:14 +08:00
萨拉托加
695f6425c5 fix: 调整飞来横祸EW站位 2025-08-02 10:21:41 +08:00
萨拉托加
57f76ccb20 fix: 调整往事暗哑离域检查EW站位 2025-08-02 10:13:32 +08:00
uye
f100a7ba81 fix: 拾取关卡掉落后找不到节点时放弃 2025-08-02 09:44:33 +08:00
uye
fbf683480b chore: 调整安全屋颜色范围 2025-08-02 09:34:35 +08:00
uye
d79bf3724b fix: 祠堂口事件识别失败 2025-08-02 09:18:08 +08:00
Constrat
cd2d1c448c chore: update YostarEN OR navigation 2025-08-01 19:01:09 +02:00
HX3N
819014983c fix: YostarKR 海神的信者 ocr edit
yostar updated translation
2025-08-02 01:38:30 +09:00
uye
579e34bd50 fix: 夕娥忆 关卡名识别错误 2025-08-01 23:51:23 +08:00
uye
77ed38127e fix: 重复报关卡难度 2025-08-01 23:51:23 +08:00
uye
65311bbd6c fix: 禳解事件识别错误 2025-08-01 23:51:23 +08:00
uye
da16cc95ad chore: 调整颜色阈值 2025-08-01 23:51:23 +08:00
uye
22842034ae chore: 添加白色部分识别 2025-08-01 23:51:23 +08:00
uye
ffa6724397 debug: 调整边框粗细 2025-08-01 23:51:23 +08:00
pre-commit-ci[bot]
7b66511566 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-01 23:51:23 +08:00
Weiyou Wang
2ca5c83542 fix: JieGarden roguelike stage templates 2025-08-01 23:51:23 +08:00
萨拉托加
26703b0014 feat: 界园肉鸽补充战斗逻辑 (#13433)
* feat: 补充界园三层战斗逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 添加斩业星熊,遥招募分数

* feat: 补充界园四层战斗逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 补充界园五层战斗逻辑

* feat: 补充界园剩余战斗逻辑

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-01 23:50:48 +08:00
uye
4b6222b118 docs: useRaw 仅当 withoutDet 为 true 时生效 2025-08-01 23:27:58 +08:00
uye
7b765d8fdc docs: 更新文档与 maa_tasks_schema 2025-08-01 21:24:37 +08:00
pre-commit-ci[bot]
ec974f8648 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-01 13:05:14 +00:00
uye
c79856b81e perf: 优化界园层名识别 2025-08-01 21:02:51 +08:00
uye
22eb038a9e feat: PipelineAnalyzer 支持使用灰度图匹配文字 2025-08-01 21:02:19 +08:00
Weiyou Wang
7b40c11df4 fix: 修复层名识别问题 -- "云瓦亭" -> "云(瓦)?亭" 2025-08-01 21:54:11 +10:00
uye
64ac7f5d64 debug: 低于阈值 0.2 的 hsv 也保存一下 2025-08-01 16:57:04 +08:00
uye
aa8f02aa3e fix: 拥有时光之末战斗失败后无法跳过动画 2025-08-01 16:54:13 +08:00
github-actions[bot]
e27566deb5 chore: Auto Update Game Resources - 2025-08-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16670365761

[skip changelog]
2025-08-01 08:33:17 +00:00
uye
53a4e125ca chore: 调整返回主界面点击位置 2025-08-01 15:42:30 +08:00
uye
fbece132b0 fix: 战斗失败没进结算识别 2025-08-01 15:42:09 +08:00
uye
dd1328f2c1 fix: 汝吾门 识别 2025-08-01 14:49:45 +08:00
HX3N
7b841fca84 fix: YostarKR 黍 ocr edit
garbage text after 黍 when skin is applied
2025-08-01 06:33:11 +09:00
HX3N
dd3233ff34 i18n: KR dehardcode string names and tweak translations
follow 167ac2d2d5
2025-08-01 05:20:58 +09:00
github-actions[bot]
d2c159590d chore: Auto Templates Optimization
Triggered by c85849651f

[skip changelog]
2025-07-31 18:05:00 +00:00
uye
c85849651f chore: 更新截图 2025-08-01 02:04:20 +08:00
uye
dba8f4f3c4 chore: 怎么jb有个0.6的阈值 2025-08-01 01:23:47 +08:00
uye
ee64c2051b chore: 不期而遇失败时尝试放弃 2025-08-01 01:21:07 +08:00
uye
0ed14899f9 chore: 在事件中卡死时尝试放弃 2025-08-01 01:13:52 +08:00
uye
5452ed2a96 perf: 优化多层事件逻辑 2025-08-01 00:29:05 +08:00
Constrat
718026c513 i18n: dehardcode string names
follows b0a53cd5b0
2025-07-31 18:28:05 +02:00
萨拉托加
c2dab28d51 fix: 鲍老板连锁去掉引号 2025-08-01 00:17:02 +08:00
Constrat
1bd11a988c fix: remove leading digits in IS encounters for YostarEN
事件名识别错误(傀影)肉鸽
Fixes #13425
2025-07-31 18:00:36 +02:00
Constrat
e3d708f4a9 fix: i18n english key 2025-07-31 17:30:21 +02:00
uye
9b8c1b4e1e chore: 删除 999 2025-07-31 23:26:19 +08:00
uye
97b3f9af38 chore: 彻底卡住时记录截图后尝试放弃 2025-07-31 23:26:18 +08:00
铃语
a04760272b perf: 优化水月肉鸽招募&傀影战斗 (#13344)
* perf: 优化傀影肉鸽招募&战斗

* perf: 优化水月肉鸽招募

* 恢复鸿雪抓取并降低分数,降低假日威龙陈和蕾缪安分数

* 恢复鸿雪抓取并降低分数,降低假日威龙陈和肥鸭分数

* perf: 恢复黑并降低分数

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-31 23:05:35 +08:00
github-actions[bot]
64c349b75f chore: Auto Templates Optimization
Triggered by 7e8cc2d137

[skip changelog]
2025-07-31 15:02:09 +00:00
uye
7e8cc2d137 feat: 增加 hp 识别标志 2025-07-31 23:01:35 +08:00
uye
084bc5a6cd chore: 地镇事件选择 2025-07-31 22:49:59 +08:00
uye
fa90157c36 docs: Update CHANGELOG.md 2025-07-31 19:34:18 +08:00
github-actions[bot]
948ad064e3 chore: Auto Templates Optimization
Triggered by fd71f70d22

[skip changelog]
2025-07-31 11:32:58 +00:00
pre-commit-ci[bot]
fd71f70d22 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-31 11:32:35 +00:00
status102
38bf8af185 feat: wpf支持作业版本限制 2025-07-31 19:29:17 +08:00
github-actions[bot]
6c07625302 chore: Auto Update Game Resources - 2025-07-31
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16647720698

[skip changelog]
2025-07-31 11:28:48 +00:00
萨拉托加
2526f1465f feat: 界园肉鸽补充事件选择逻辑 (#13400)
* feat: 界园肉鸽补充事件选择逻辑

补充遗漏的安全角 狭路相逢 命运所指
鲍老板连锁改成跑路
去掉重复的岔路事件

* feat: 修改催债事件逻辑

* fix: 峥嵘战功识别

* feat: 同心事件逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: wiki上可查的事件逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 偏安三选项的情况

* fix: 烛堂孤钓不同选项的情况

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-31 19:27:45 +08:00
travellerse
299990833f fix: 对掉落信息进行排序 与ToolTip保持一致 (#13404)
* fix: 对掉落信息进行排序 与ToolTip保持一致

* fix: 在 wpf 里对掉落信息进行排序
2025-07-31 19:27:29 +08:00
uye
a60d6732f0 perf: 肉鸽节点识别 (#13427)
* perf: 节点统一 hsv

* perf: 普通战斗 hsv

* fix: 部分节点得分过低

* chore: 肉鸽节点不使用 colorWithClose

* chore: 调整安全屋模板

* perf: 优化绿色系识别
2025-07-31 19:21:20 +08:00
uye
b0a53cd5b0 chore: 调整翻译 2025-07-31 18:55:16 +08:00
uye
2fb58192a9 chore: 删除多余注释 2025-07-31 18:52:29 +08:00
uye
2fa1b2158c feat: 添加一键轮换说明 2025-07-31 18:51:08 +08:00
uye
4705cd7078 feat: 统一 TooltipBlock 位置 2025-07-31 18:34:53 +08:00
uye
643f2070c4 feat: 烧水分队不存在时自动替换为当前分队 2025-07-31 15:38:17 +08:00
uye
8b6da9b8bf style: 格式化 2025-07-31 15:37:38 +08:00
uye
d9788dba84 feat: 刷开局模式禁用源石锭达到上限时停止
fix #13420
2025-07-31 15:37:15 +08:00
uye
167ac2d2d5 perf: 优化成就排序与描述 2025-07-31 15:04:24 +08:00
Constrat
a2e8d82562 chore(tools): update ignore templates 2025-07-31 00:48:44 +02:00
uye
3538ab525c fix: ComboBox 的光标颜色不会随主题色变化 2025-07-30 17:45:16 +08:00
uye
810008d84b feat: 调整界面显示效果 2025-07-30 17:16:21 +08:00
uye
59aae8a055 chore: 强制替换 adb 改为使用本地 adb 2025-07-30 16:02:26 +08:00
uye
386264b689 feat: 完整显示注入 maa 的 dll 的路径 2025-07-30 15:51:51 +08:00
uye
fa0f3317f2 feat: 填写错误安装路径时重新弹窗提示 2025-07-30 14:52:56 +08:00
status102
e8798391d4 fix: wpf自动战斗干员模组选择默认值错误 2025-07-30 14:02:33 +08:00
uye
fbdba4a2c6 fix: 修复任务过程中修改剩余理智后导致关卡无法连续执行的问题
fix #13411
2025-07-30 13:27:42 +08:00
uye
4e10ff5a38 fix: 掌灯与引烛 事件识别 2025-07-30 13:20:33 +08:00
uye
85fe148d92 feat: 肉鸽使用助战新增需先填写开局干员的提示 2025-07-30 11:33:45 +08:00
uye
8ee8fc9e6b chore: 删除无用函数 2025-07-30 11:33:45 +08:00
Constrat
65941ee574 fix: typo for BattleStage Sarkaz EN 2025-07-29 18:01:56 +02:00
status102
8ca03b5dd7 fix: 肉鸽通关难度成就解锁判定错误 2025-07-29 22:23:43 +08:00
Constrat
00c9b053b1 docs: update IS for EN 2025-07-29 11:38:43 +02:00
萨拉托加
613da05a40 fix: 狭路相逢善恶同道识别 (#13383) 2025-07-29 11:38:39 +08:00
Weiyou Wang
3cb5318aa4 fix: 修复放弃招募任务链;避战识别不到得偿所愿 (#13395)
* fix: 修复放弃招募任务链

* fix: 怎么还有大小写问题啊

* fix: 划不到点刺

* fix: 肉鸽地图识别加入对界园得偿所愿节点的支持

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-29 11:35:18 +08:00
Constrat
acf81e46e5 fix: clang style 2025-07-28 21:57:56 +02:00
uye
e6efc49ddc fix: 无法选中 坚不可摧随心所欲 分队 2025-07-29 01:33:29 +08:00
uye
0078564a06 fix: 死循环 2025-07-29 01:02:59 +08:00
uye
b5c7bde5ac perf: 优化界面显示效果 2025-07-29 00:51:36 +08:00
uye
b8b3f57790 Release v5.21.2 (#13384) 2025-07-28 23:35:24 +08:00
uye
ee73e7609c docs: Update CHANGELOG.md 2025-07-28 23:34:05 +08:00
uye
5ce0a7ea4e docs: 更新文档 2025-07-28 21:50:28 +08:00
uye
a07d3cc7fc chore: 调整等级判断范围 2025-07-28 20:41:05 +08:00
status102
10f2268b1e chore: 加点注释 2025-07-28 20:01:17 +08:00
status102
0c96e22845 perf: 肉鸽满级检查CheckLevelMax增加isAscii=true 2025-07-28 20:01:16 +08:00
uye
17ca363515 feat: mumu 截图增强弹窗增加新版路径提示 2025-07-28 19:40:31 +08:00
uye
76816c4f8e chore: 调整 versionType
[skip changelog]
2025-07-28 18:35:52 +08:00
uye
db114a17b1 fix: 检测更新失败!!!!! 2025-07-28 18:29:02 +08:00
Hao Guan
1b14ff8d9a fix(mac): 修复默认客户端选项 2025-07-28 17:52:19 +08:00
uye
b84ba22c8f chore: 调整透明度笔刷 2025-07-28 17:29:00 +08:00
uye
8ca3df6d5c chore: 连接地址删除按钮居右 2025-07-28 17:28:46 +08:00
uye
bf6be133c5 fix: 字符串写错了 2025-07-28 16:25:49 +08:00
Weiyou Wang
8fcf9e13f7 fix: use HSVCount on JieGarden@Roguelike@StageEmergencyDps (#13380)
* fix: use HSVCount on JieGarden@Roguelike@StageEmergencyDps

* fix: hue 范围应该是0-179?

* fix: use recommended hsv range

* refactor: MaskRangeTool

* fix: 再用一个更好的色彩范围

* fix: 我听学姐的,把白色剔出激活范围

* fix: 只需要这一个就够了
2025-07-28 16:14:08 +08:00
github-actions[bot]
3caa2f8d7c chore: Auto Update Game Resources - 2025-07-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16563759329

[skip changelog]
2025-07-28 08:12:03 +00:00
uye
7937bbcb21 fix: 截图时间过长可能卡在进入下一层后 2025-07-28 15:49:34 +08:00
uye
aeb8ad36a7 chore: 访问 api 时如果本地不存在对应文件则不使用 etag 2025-07-28 14:57:35 +08:00
uye
604879eac1 chore: 日志压缩包打包 cache 文件夹 2025-07-28 14:47:36 +08:00
status102
7419ed762f ci: 文件未上传完成/成功正则追加 2025-07-28 11:29:50 +08:00
status102
c0cc7d119f perf: 自动编队干员属性要求未满足的提示输出等级上调至Error / Warning 2025-07-28 11:01:54 +08:00
萨拉托加
4d615dafd4 fix: 老戏骨非EW开局站位
fix #13376
2025-07-28 10:32:45 +08:00
uye
12fd336f8a feat: 修改文件被占用的解决方案 2025-07-28 01:55:32 +08:00
uye
983a511329 chore: 截图测试漏提示了 2025-07-28 00:15:29 +08:00
uye
3b5ebf8f24 Release v5.21.1 (#13371) 2025-07-27 23:28:37 +08:00
uye
f41174fd43 docs: Update CHANGELOG.md 2025-07-27 23:27:45 +08:00
uye
587c980621 docs: Update CHANGELOG.md 2025-07-27 23:21:46 +08:00
status102
78812d47f2 fix: 移除肉鸽开局选择分队后不应出现的地图检测 2025-07-27 23:16:11 +08:00
uye
b8c4f73da2 fix: 不知道为啥有人会开开局,修修看 2025-07-27 23:03:33 +08:00
uye
48412e2c92 chore: macos uuid 2025-07-27 22:45:41 +08:00
uye
4a68fac639 fix: 奇妙的模拟器卡启动 2025-07-27 22:11:55 +08:00
uye
4739feb8ff feat: 支持 mumu emulator-xxxx 格式地址关闭模拟器 2025-07-27 22:11:55 +08:00
uye
2eed3b87d4 Release v5.21.0 (#13359) 2025-07-27 16:28:39 +08:00
github-actions[bot]
e1caa6ebe8 docs: Auto Update Changelogs of v5.21.0 (#13363)
* docs: Auto Generate Changelog of Release v5.21.0

* docs: changelog

* docs: changelog

* docs: Update CHANGELOG.md

* docs: changelog

* docs: Update CHANGELOG.md

* docs: 米奇妙妙翻译

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-27 16:27:28 +08:00
uye
7ca1ed1d4e chore: 全用动态资源 2025-07-27 16:13:08 +08:00
uye
658e141dd5 perf: 公招识别显示使用动态资源 2025-07-27 15:49:41 +08:00
pre-commit-ci[bot]
62bd414ed7 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 06:57:32 +00:00
uye
bbe771dc1b fix: 开局招募 2025-07-27 14:54:58 +08:00
uye
68094ee2d9 fix: 商店刷新 2025-07-27 14:49:58 +08:00
uye
2884cdb808 fix: 切换语言时选择材料更新 2025-07-27 12:14:48 +08:00
uye
6c405305b9 feat: 优化主界面显示效果 2025-07-27 11:53:11 +08:00
uye
99befd7582 docs: 更新文档 2025-07-27 11:43:08 +08:00
status102
45eb731d30 perf: 更新日志界面Background前置 2025-07-27 11:39:14 +08:00
status102
37057885b9 perf: 简化长期剿灭任务名 2025-07-27 11:17:27 +08:00
status102
cc21ce7b9b fix: 移除未使用的AnnihilationWarning 2025-07-27 10:58:30 +08:00
status102
2472363b05 fix: 加回来删掉的提示 2025-07-27 10:58:30 +08:00
uye
3169d5826f chore: 关闭自定义剿灭时默认当期剿灭 2025-07-27 10:57:01 +08:00
uye
e14dcc4f48 feat: 添加自定义剿灭关卡勾选框 2025-07-27 10:55:09 +08:00
status102
467b32a324 perf: wpf剿灭关卡选择 2025-07-27 10:45:52 +08:00
status102
f6b019bbff chore: import 2025-07-27 10:18:29 +08:00
status102
b3310992db fix: 肉鸽开局招募状态
漏提交了
2025-07-27 10:14:09 +08:00
github-actions[bot]
5a0c35d4e7 chore: Auto Templates Optimization
Triggered by 950952e16c

[skip changelog]
2025-07-27 01:26:10 +00:00
status102
950952e16c fix: 界园肉鸽结算 2025-07-27 09:25:39 +08:00
uye
53f4cd9ead fix: 事件名错误 2025-07-27 09:19:33 +08:00
Drest
7c2e440b4e feat: 适配长期剿灭 (#13241)
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-07-27 01:28:28 +01:00
pre-commit-ci[bot]
f799924d9b chore: Auto update by pre-commit hooks [skip changelog] 2025-07-26 18:28:44 +00:00
uye
72acbd0ecf fix: 卡招募 卡电弧 2025-07-27 02:26:26 +08:00
uye
dd26bd55ea fix: 投钱 2025-07-27 01:52:09 +08:00
github-actions[bot]
bb5d155b08 chore: Auto Update Game Resources - 2025-07-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16542026013

[skip changelog]
2025-07-26 17:06:25 +00:00
pre-commit-ci[bot]
a7dbfad774 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 01:01:39 +08:00
uye
fbc16dc868 chore: 替换 JieGarden StageEncounterOptionUnknown模板图 2025-07-27 01:01:39 +08:00
uye
a93cbdcab6 fix: StageEncounterOptionUnknown 点到源石锭 2025-07-27 01:01:39 +08:00
Weiyou Wang
fe5d34c360 fix: 换用strategyChange 2025-07-27 01:01:39 +08:00
uye
ee7ca9cd22 feat: 进出洞 2025-07-27 01:01:39 +08:00
uye
1380ae172f fix: 饕餮廊事件识别错误 2025-07-27 01:01:39 +08:00
Weiyou Wang
671d72c5bc fix: 我就不明白了,为什么之前主题没有暴露出来问题? 2025-07-27 01:01:39 +08:00
Weiyou Wang
23b06335d7 fix: 我的问题 2025-07-27 01:01:39 +08:00
Weiyou Wang
7981c87b0c fix: 尝试修复卡进场 2025-07-27 01:01:39 +08:00
uye
77a7dbf6c0 chore: 护鸭金刚 选项 2025-07-27 01:01:39 +08:00
uye
676716494d Revert "feat: 界园屏蔽进二层"
This reverts commit 73ebf6f532a3634fd210d1b5b859255b36d6e35d.
2025-07-27 01:01:39 +08:00
uye
36ceaa34e8 chore: 多余的 ocrReplace 2025-07-27 01:01:39 +08:00
uye
7b1e14214a feat: ocr 任务暴露灰度阈值接口 2025-07-27 01:01:39 +08:00
uye
5a480f80e1 fix: 血量识别 2025-07-27 01:01:39 +08:00
Weiyou Wang
0ddf11c357 fix: 尝试修复 investment_with_more_score 2025-07-27 01:01:39 +08:00
uye
d39e342b3b feat: 添加选项 fallback 2025-07-27 01:01:39 +08:00
uye
14479cbee8 fix: 怎么多了个票卷生命值位置都变了 2025-07-27 01:01:39 +08:00
uye
7b00ccc9d3 feat: ui 添加刷等级入口 2025-07-27 01:01:39 +08:00
uye
549f5d19b5 fix: 无法点击树洞 2025-07-27 01:01:39 +08:00
uye
6d45acf7fb fix: 事件选择 2025-07-27 01:01:39 +08:00
uye
2b9dd49634 ci: 怎么报错了
[skip changelog]
2025-07-27 01:01:39 +08:00
uye
38cfee1437 feat: 界园屏蔽进二层 2025-07-27 01:01:39 +08:00
uye
86c00934d8 perf: 优化肉鸽难度选择逻辑 2025-07-27 01:01:39 +08:00
uye
0c1edc9626 feat: 增加快速刷钱时路线全是战斗的回调 2025-07-27 01:01:39 +08:00
uye
f49687fc1c fix: 卡退出战斗 2025-07-27 01:01:39 +08:00
uye
711ce7179d fix: 卡招募(? 2025-07-27 01:01:39 +08:00
uye
f161d855a4 chore: 防止没进 StrategyChange 的情况 2025-07-27 01:01:39 +08:00
uye
cd73d929fd fix: 截图保存报错 2025-07-27 01:01:39 +08:00
pre-commit-ci[bot]
c18dfa0335 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 01:01:39 +08:00
Weiyou Wang
2fbf3cc669 fix: 修修补补 2025-07-27 01:01:39 +08:00
Weiyou Wang
b4c8a6e1fb feat: 先复制一下之前的导航代码,能跑就行;以后再重构 2025-07-27 01:01:39 +08:00
Weiyou Wang
0f5ff16afe feat: 补充相关任务链 2025-07-27 01:01:39 +08:00
Weiyou Wang
8f215d1f5f feat: fast investment for JieGarden 2025-07-27 01:01:39 +08:00
Weiyou Wang
6cf152a151 feat: update map 2025-07-27 01:01:39 +08:00
Weiyou Wang
c0846a26cc fix: 修复换层后 StrategyChange 功能 2025-07-27 01:01:39 +08:00
Weiyou Wang
9b61fd611e fix: 修复换层识别 roi 2025-07-27 01:01:39 +08:00
Weiyou Wang
1c10a7b1ff feat: node templates 2025-07-27 01:01:39 +08:00
Weiyou Wang
0a7d51dcfb feat: skip recruitment 2025-07-27 01:01:39 +08:00
Weiyou Wang
fd91aebd42 feat: add new routing strategy -- FastInvestment_JieGarden 2025-07-27 01:01:39 +08:00
Weiyou Wang
37e1477948 refactor: polish code 2025-07-27 01:01:39 +08:00
status102
f443ce6580 perf: 肉鸽指定干员开局招募进入干员选择页状态监测追加首次进入的指导的监测 2025-07-27 00:08:36 +08:00
uye
4a9f39137c fix: 无法连接主站时无法通过备站更新
fix #13355
2025-07-26 23:57:29 +08:00
github-actions[bot]
903d7140f1 chore: Auto Update Game Resources - 2025-07-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16535361549

[skip changelog]
2025-07-26 02:59:25 +00:00
status102
f3448ff13c refactor: 肉鸽局内外招募流程拆分 (#13342)
* rft: 界园主题初始实现

* perf: 优化core_char, 移除反复擦写

* perf: 简化任务链, 移除RecruitMain的StartExplore前缀

* rft: 其余肉鸽适配

* fix: 修改不稳定生效的任务计数联动

* fix: 开局干员招募未点进
2025-07-26 10:29:40 +08:00
status102
86aced1930 feat: 界园肉鸽开始探索CD任务ocr追加 2025-07-25 23:35:49 +08:00
status102
9e9005099c fix: 肉鸽招募任务计数未能正确归0
助战招募可能不流经

fix #13320

Roguelike@RecruitWithoutButton
2025-07-25 23:35:30 +08:00
uye
55f03641aa fix: uuid 与 version 返回错误格式时崩溃
fix #13351
2025-07-25 21:20:29 +08:00
Sakurapainting
ed5a5327f9 feat: 禁用弹出成就气泡 (#13345)
* feat: 新增禁用自动弹出成就气泡勾选框设置

* feat: 适配jp, kr, trad-cn 语言(#13315)

* fix: suggested changes

* feat: 新增“成就气泡弹出后一段时间消失”设置勾选框

* feat: 适配本地化语言en jp kr trad-cn

* i18n: EN

* fix: rebase

* feat: 禁用弹出气泡时不等待解锁延迟

* feat: 调整键名、布局

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-25 17:59:44 +08:00
uye
2eb5f55f9f feat: 添加开机自启与系统通知相关注册表提示 2025-07-25 15:39:41 +08:00
uye
546e02f713 feat: 调整更新提示 2025-07-25 15:12:11 +08:00
uye
0a60709ea1 style: format 2025-07-25 14:29:19 +08:00
uye
523d2d0de3 chore: 仓库识别全局缓存,去除开方运算 2025-07-25 10:23:18 +08:00
uye
8732cbc131 feat: 扩大公告高度,更容易滑到底(了吗?)
[skip changelog]
2025-07-25 00:50:15 +08:00
uye
6e59f0cc83 feat: 扩大公告宽度,更容易滑到底(了吗?) 2025-07-25 00:46:36 +08:00
黄京
d90ed6d198 fix: YostarJP rogue OCR tweak for Mushikazu no Taki (#13346) 2025-07-24 23:01:30 +08:00
uye
2c997233f4 feat: 公招识别结果根据当前潜能排序 2025-07-24 22:12:58 +08:00
uye
86203e1292 fix: 公招识别按钮超出界面范围 2025-07-24 19:59:19 +08:00
uye
845ca36f5b refactor: 重构仓库识别逻辑,大幅提高识别速度 2025-07-24 18:26:26 +08:00
status102
663a5beeae chore: style
[skip changelog]
2025-07-24 16:21:15 +08:00
status102
e926beb206 fix: SA1136, SA1133 file header 2025-07-24 16:21:15 +08:00
status102
edda79aa6d perf: PerformanceUseGpu 读取替换 2025-07-24 16:21:14 +08:00
status102
e712053603 chore: SA1122 Use string.Empty for empty strings 2025-07-24 16:21:14 +08:00
uye
98e0bb6d1d fix: 分支条件判断错误 2025-07-24 16:14:59 +08:00
Sakurapainting
ff553f7c36 feat: 成就通知自动关闭选项
代替右键清空

link to #13343, #13323, #13345
2025-07-24 11:27:10 +08:00
SherkeyXD
91d6cdb099 ci: add ghtoken for codeql delete cache 2025-07-24 09:33:08 +08:00
uye
9a20625f07 fix: 仓库识别 x万 识别
糊屎
2025-07-24 02:39:13 +08:00
uye
8d19836739 feat: 调整界面描述 2025-07-23 19:37:31 +08:00
uye
05fddebb9c fix: 嵌套翻译 2025-07-23 19:07:42 +08:00
uye
30f582e908 feat: 公招结果支持彩色显示
fix #12458
2025-07-23 18:42:27 +08:00
uye
3d026d1b59 fix: 公开招募前三个槽均未招募时不会查看第四个槽
fix #12766
2025-07-23 16:34:14 +08:00
status102
0b4db32b53 i18n: wpf干员统一使用指定字符串资源 (#13333)
* i18n: wpf`干员`统一使用指定字符串资源

* i18n: EN

* i18n: JP

* i18n: KR

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-23 09:23:46 +08:00
github-actions[bot]
4e65ce5635 chore: Auto Templates Optimization
Triggered by 5586c00385

[skip changelog]
2025-07-22 18:52:44 +00:00
uye
5586c00385 fix: 勾选框状态错误显示 2025-07-23 01:14:57 +08:00
HY
937e3777f4 chore: 更新繁中服部分幹員 ocr + 補充截圖 (#13338)
* chore: 更新繁中服部分幹員 ocr + 補充截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-22 23:15:36 +08:00
HY
21a06e9011 chore: 繁中服「追跡日落以西」活動導航 (#13336) 2025-07-22 23:14:46 +08:00
Constrat
7f905d4e61 ci: delete stale cache for codeql (#13335) 2025-07-22 14:16:07 +02:00
github-actions[bot]
e85813902d chore: Auto Update Game Resources - 2025-07-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16439905362

[skip changelog]
2025-07-22 09:11:34 +00:00
status102
bc15d09557 chore: vs code jsonc 2025-07-22 16:51:45 +08:00
status102
4703656bf8 fix: 移除 investment_enter_second_floor 支持 2025-07-22 16:19:55 +08:00
status102
0508d56c78 perf: wpf不再允许通过Gui直接启用允许使用不推荐的GPU选项 2025-07-22 16:16:58 +08:00
uye
885ddc7b39 feat: 标题栏显示版本改为 ui 版本 2025-07-22 14:04:53 +08:00
MistEO
5c5867c2c0 chore: make GUI UserAgent simple 2025-07-22 10:16:10 +08:00
uye
6747c35e8b style: 格式化
[skip changelog]
2025-07-21 23:02:13 +08:00
uye
dbdb98a514 chore: warning CS8625: Cannot convert null literal to non-nullable reference type.
[skip changelog]
2025-07-21 22:58:30 +08:00
uye
af9507e373 chore: warning CS8602: Dereference of a possibly null reference.
[skip changelog]
2025-07-21 22:58:07 +08:00
uye
a36060125e chore: warning CS8601: Possible null reference assignment.
[skip changelog]
2025-07-21 22:56:46 +08:00
uye
1081d3e6e8 chore: warning CS8604: Possible null reference argument for parameter 'name' in 'bool TaskQueueViewModel.IsStageOpen(string name)'.
[skip changelog]
2025-07-21 22:53:50 +08:00
uye
03842af13d chore: warning CS8618: Non-nullable field '_connectedAddress' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
[skip changelog]
2025-07-21 22:51:30 +08:00
uye
4f518b6e52 chore: warning CS8604: Possible null reference argument for parameter 'name' in 'bool TaskQueueViewModel.IsStageOpen(string name)'.
[skip changelog]
2025-07-21 22:50:51 +08:00
uye
e7a273e9c8 perf: 优化客户端切换逻辑,官服B服切换无需重载 2025-07-21 22:41:53 +08:00
uye
e4bee97168 feat: 调整 gpu 提示 2025-07-21 20:30:10 +08:00
travellerse
782371d2ca perf: 添加自动编队选项 忽略干员属性要求 (#13250)
* perf: 添加自动编队选项 支持模组不满足时选择默认模组

* refactor: 修改“模组不满足时选择默认模组”为“跳过未满足的干员属性要求”

* rft: 忽略干员属性要求

* i18n: KR

* i18n: EN

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-07-21 20:16:07 +08:00
Manicsteiner
96b1c05ca0 fix(ci): fix AppImage build toolkit (#13324) 2025-07-21 13:49:21 +02:00
status102
46bb00b8e9 perf: range::copy替换 2025-07-21 19:07:04 +08:00
uye
6f38008240 feat: 置顶按钮鼠标悬浮背景色 2025-07-21 16:18:59 +08:00
github-actions[bot]
51fe97b5ac chore: Auto Templates Optimization
Triggered by 3be1dda845

[skip changelog]
2025-07-21 07:27:17 +00:00
uye
3be1dda845 fix: 萨卡兹肉鸽结算页识别错误 2025-07-21 15:26:51 +08:00
HX3N
b703b95048 fix: YostarKR InfrastReward ocrReplace
prevent max trust and trust gain mixing
2025-07-21 14:27:45 +09:00
uye
2fea17d261 refactor: 替换表合并使用 insert,保证顺序并提升可读性 2025-07-21 12:47:19 +08:00
status102
c21d15dde6 fix: 移除MaaCore的StartUp任务的client_type空值支持 (#13318)
* fix: 移除MaaCore的StartUp任务的client_type空值支持

* i18n: KR

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-21 11:03:35 +08:00
status102
2f48781396 fix: 使用理智药时恢复理智Ocr包含意外字符
fix #13316

180 o成 1.80 了
2025-07-21 10:55:27 +08:00
uye
4f775a04fd chore: 添加 gpu 日志 2025-07-21 01:14:08 +08:00
uye
699273b08a chore: 添加 Tencent EdgeOne 备用 CDN 2025-07-21 00:18:38 +08:00
status102
460253d5d3 fix: wpf TaskApi加载cache时缓存文件不存在 2025-07-21 00:15:05 +08:00
uye
9ee0aabf7b feat: 查看公告按钮添加检查时禁用 2025-07-20 22:45:47 +08:00
uye
f5301595cc feat: 调整模拟器分辨率不支持的描述 2025-07-20 22:24:09 +08:00
uye
86accdee86 feat: 移除肉鸽默认分队与默认职业组 2025-07-20 20:46:10 +08:00
Constrat
9a5b5fdc8d fix: missing OR-5 in main repository 2025-07-20 13:38:50 +02:00
status102
60630a8435 chore: 肉鸽加点注释 2025-07-20 10:25:11 +08:00
status102
ce088d8ee4 perf: MirrocCdk复制按钮接缝美化 2025-07-20 10:06:37 +08:00
status102
065bd3dde0 chore: 简中繁中截图耗时过长提示增加截图增强提醒 (#13309)
* chore: 简中繁中截图耗时过长提示增加截图增强提醒

* i18n: try

* i18n: JP translate

* i18n: EN

* i18n: missing EN translations

* i18n: KR

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-20 09:33:13 +08:00
uye
410c81c36c perf: 优化资源损坏弹窗描述,提供解决方案 2025-07-19 23:06:13 +08:00
Constrat
1bd416dcce docs: EN issue simplification 2025-07-19 12:30:12 +02:00
status102
517886234e chore: CN issue模板简化及Bot优化 (#13297)
* ci: 未阅读须知issue将添加low-quality-report并不再锁定

* chore: 简化CN issue模板
2025-07-19 15:54:31 +08:00
uye
7208f1b352 fix: 水月肉鸽卡商店刷新 2025-07-19 13:24:35 +08:00
uye
ab85561833 perf: 雷电注册表优先使用原版路径 2025-07-19 12:54:24 +08:00
uye
1c6ec1b47e chore: 添加请求耗时记录 2025-07-19 12:29:02 +08:00
uye
257d1c02b0 feat: cdk 边框圆角 2025-07-19 10:50:54 +08:00
uye
036be03459 feat: 新增是否启动客户端勾选框 2025-07-19 10:48:53 +08:00
status102
4974ab6535 refactor: 长草任务序列化重构已完成部分合并 (#13275)
* refactor: 长草任务序列化重构已完成部分打样

* perf: 计时

* perf: is int
2025-07-19 10:08:00 +08:00
uye
c3f1068edf fix: 更新日志与公告滚动条过于贴近窗口边缘
fix #13295
2025-07-19 09:52:48 +08:00
MistEO
6a4ade5093 Release v5.20.0 (#13290) 2025-07-19 00:26:34 +08:00
github-actions[bot]
0ef1501a53 docs: Auto Update Changelogs of v5.20.0 (#13291)
* docs: Auto Generate Changelog of Release v5.20.0

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* feat: changelog

* feat: 更新 CHANGELOG.md

* fix: 更新 CHANGELOG.md

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-07-19 00:26:21 +08:00
uye
ae744d05c8 feat: PreSelectThemeSwipeToTheRight 添加 reduceOtherTimes 2025-07-19 00:15:51 +08:00
github-actions[bot]
be8eaa57c7 chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16375174287

[skip changelog]
2025-07-18 16:10:33 +00:00
uye
1f7d83e5c4 feat: PreSelectThemeSwipeToLeft #self 2025-07-19 00:08:06 +08:00
uye
7b7875fa24 feat: PreSelectThemeSwipeToLeft 2025-07-19 00:05:50 +08:00
Lemon-miaow
00fa73551c fix: 肉鸽导航 (#13293) 2025-07-18 23:51:21 +08:00
uye
144ab609c5 feat: 临时屏蔽界园中除投资外的策略选项 2025-07-18 23:20:31 +08:00
MistEO
55f6620e0f chore: 整理一下刚糊的ua 2025-07-18 23:11:49 +08:00
MistEO
f6de7f4298 feat: Wpf UserAgent with UiVersion 2025-07-18 23:03:09 +08:00
status102
6a706c6f8a fix: 烧水仅精二在萨米主题被短路启动 2025-07-18 19:59:22 +08:00
status102
4ffc987f07 fix: 切换肉鸽主题时, 烧水奖励选择丢失 2025-07-18 19:21:12 +08:00
Constrat
7abc4086b0 fix. YostarEN OR navigation fix 2025-07-18 12:23:32 +02:00
Constrat
fb241c5cb9 chore: yostaren prepare leizi for alter 2025-07-18 11:59:43 +02:00
uye
28d9cf2a52 Release v5.20.0-beta.3 (#13274) 2025-07-18 17:35:28 +08:00
uye
b4479a2e4f feat: 添加 idle 状态切换记录 2025-07-18 17:32:54 +08:00
uye
02e5c3c9b7 fix: RunningState 无法记录日志 2025-07-18 17:32:54 +08:00
github-actions[bot]
ce9e0cfd04 chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16367222337

[skip changelog]
2025-07-18 09:32:17 +00:00
MistEO
b42d7d7d17 docs: Update CHANGELOG.md 2025-07-18 17:21:52 +08:00
uye
3273f7ec7a docs: 更新肉鸽文档 2025-07-18 17:03:54 +08:00
github-actions[bot]
991474debd docs: Auto Update Changelogs of v5.20.0-beta.3 (#13283)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-07-18 16:55:05 +08:00
github-actions[bot]
cde48162ea chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16366041667

[skip changelog]
2025-07-18 08:33:00 +00:00
uye
a63e637b55 fix: 手动改时间或睡眠跨日后关卡列表与提示未更新 2025-07-18 16:21:23 +08:00
uye
95d2eb374d chore: 界园肉鸽没有二希望开(?)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 16:09:33 +08:00
Manicsteiner
d1cedf57ad chore: YostarJP ocr edits (#13276) 2025-07-18 15:38:23 +08:00
Loong
e0641d165d chore: bump maa-cli to 0.5.7 (#13278) 2025-07-18 15:32:26 +08:00
status102
2d88e43139 perf: 优化加载顺序, 简化StageManager变量 (#13277) 2025-07-18 13:53:07 +08:00
uye
265aca3724 fix: v5.20.0-beta.2.d037 重启后概率闪退 2025-07-18 12:21:13 +08:00
status102
864f824d7b refactor: 肉鸽烧水参数rename
漏了漏了.jpg
2025-07-18 10:49:16 +08:00
status102
ea247333d0 refactor: 肉鸽开局奖励选择 2025-07-18 10:22:41 +08:00
status102
6f29ca0d8f perf: 肉鸽任务参数初始化简化 2025-07-18 10:22:41 +08:00
status102
83dd7b5914 fix: 刷理智代理倍率移除1000适配 2025-07-18 10:22:19 +08:00
Constrat
3a763fb12b fix: YostarEN OR navigation 2025-07-17 19:48:32 +02:00
github-actions[bot]
d0eedc7faf chore: Auto Update Game Resources - 2025-07-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16351416825

[skip changelog]
2025-07-17 17:08:30 +00:00
status102
b01cfaf9c4 refactor: TaskSettingVisibilityInfo.Current -> Instance 2025-07-17 23:41:10 +08:00
uye
f4864c7e5e style: format
[skip changelog]
2025-07-17 22:01:42 +08:00
Constrat
05387bf915 fix: YostarEN Eye for an Eye Sarkaz Encounter 2025-07-17 15:56:40 +02:00
HX3N
b3a3d88b1d fix: YostarKR 以血还血 ocr tweak
prevent mixing 以血还血 and 魂灵见闻:以血还血
2025-07-17 22:43:48 +09:00
SherkeyXD
fec780e3d8 fix: 尝试修复点击过头导致选到月度小队 2025-07-17 20:35:03 +08:00
SherkeyXD
ab92d12108 chore: 不期而遇子事件可读性优化 2025-07-17 20:24:06 +08:00
Constrat
8cfe4fd626 fix: yostaren sarkaz encouter ocr tweaks 2025-07-17 14:05:54 +02:00
uye
fb188b51a2 feat: 肉鸽支持多级事件选择 2025-07-17 20:00:27 +08:00
HX3N
0ec9573bef chore: YostarKR OR ocr edits 2025-07-17 18:20:50 +09:00
uye
404d11aad4 perf: 先筛选未进驻再清空队列
fix #13263
2025-07-17 16:57:16 +08:00
uye
4c4b24e573 fix: 缺 dll 和 resource 的时候没弹喜报 2025-07-17 16:11:34 +08:00
uye
f8077d6084 chore: 优化日志输出 2025-07-17 16:11:33 +08:00
github-actions[bot]
9b9dc35580 chore: Auto Update Game Resources - 2025-07-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16338983667

[skip changelog]
2025-07-17 07:31:00 +00:00
uye
927def4ed3 fix: 勾选「反转主任务右键单击效果」时,半选主任务在重启后无法还原选中状态 2025-07-17 12:45:47 +08:00
uye
0d5d03d580 fix: 最小化会在桌角留下一个小窗口 2025-07-17 12:20:24 +08:00
萨拉托加
f0219dc7a6 perf: 调整干员罗比菈塔在肉鸽使用的技能 2025-07-17 12:13:48 +08:00
uye
a538ed2291 fix: 勾选启动后直接最小化后无法拖动窗口 2025-07-17 12:09:30 +08:00
DavidWang19
54cf5ae7d6 perf: 界园肉鸽中停止招募锡人 2025-07-17 04:12:44 +01:00
DavidWang19
2b7f5f5e60 fix: 更新关卡ocr替换 2025-07-17 03:32:29 +01:00
萨拉托加
913aad2d6b feat: 界园肉鸽部分关卡自动战斗逻辑 (#13219) 2025-07-17 03:19:41 +01:00
Lemon-miaow
7078f1b8a1 fix: 肉鸽导航无法选择傀影肉鸽 (#13255) 2025-07-17 03:13:23 +01:00
github-actions[bot]
f2b34b29a3 chore: Auto Templates Optimization
Triggered by 29d66dc202

[skip changelog]
2025-07-17 01:58:10 +00:00
DavidWang19
29d66dc202 fix: 修复在得偿所愿或其他位置选择投钱后卡住的问题 2025-07-17 02:47:27 +01:00
DavidWang19
c901ba43c8 fix: 修复检测不到next的问题 2025-07-17 01:51:23 +01:00
github-actions[bot]
0273f1a940 chore: Auto Templates Optimization
Triggered by c52d6d66ce

[skip changelog]
2025-07-17 00:31:48 +00:00
DavidWang19
c52d6d66ce perf: 优化界园不期而遇默认逻辑 2025-07-17 01:31:17 +01:00
DavidWang19
e35512bd9d perf: 优化指点迷津节点task的复用 2025-07-17 01:25:29 +01:00
status102
64bcc201ee chore: 长草任务当前选中index 2025-07-17 08:10:27 +08:00
status102
319e384239 feat: 新Config任务参数读写, 界面刷新, 任务添改base 2025-07-17 08:10:26 +08:00
status102
1a41b53a49 feat: 新的添加任务 2025-07-17 08:10:26 +08:00
status102
08997048e0 chore: 重构部分预载 2025-07-17 08:10:26 +08:00
status102
210fb23e57 fix: typo 2025-07-17 08:10:05 +08:00
DavidWang19
4e2afb23e2 fix: 调整指点迷津节点阈值 2025-07-17 00:26:59 +01:00
Hao Guan
9e9fa712ef feat(mac): 添加界园入口 2025-07-17 03:41:20 +08:00
github-actions[bot]
6819e05642 chore: Auto Update Game Resources - 2025-07-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16328097180

[skip changelog]
2025-07-16 19:07:51 +00:00
MistEO
9559659d15 Release v5.20.0-beta.2 (#13251)
本次发版只进界园肉鸽问题修复,保证刷钱可用
新功能下次再进
2025-07-17 01:24:35 +08:00
DavidWang19
a8704bb862 docs: 更新changelog 2025-07-16 18:21:56 +01:00
DavidWang19
e00b601f12 fix: 去掉界园没有的刷2希望开局 2025-07-16 18:18:37 +01:00
github-actions[bot]
c0516089db docs: Auto Update Changelogs of v5.20.0-beta.2 (#13253)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-17 00:23:49 +08:00
SherkeyXD
8a751e4a2e feat: 刷开局wpf仅显示当前主题可用选项 2025-07-17 00:02:31 +08:00
SherkeyXD
6821899c84 chore: 刷开局保证传给core的只有本主题可用内容 2025-07-17 00:02:31 +08:00
pre-commit-ci[bot]
dd08f96419 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-17 00:02:31 +08:00
SherkeyXD
53a7deff9a feat: 界园肉鸽烧水支持票券 2025-07-17 00:02:31 +08:00
Rbqwow
74bb69b69d docs: 修复 readme logo
谁偷偷升依赖了?!
2025-07-16 23:02:29 +08:00
SherkeyXD
f5a747527e fix: 修复wpf主题检测错误 2025-07-16 22:53:49 +08:00
SherkeyXD
5aa369cdad chore: 刷开局精二仅为水月和萨米显示 2025-07-16 22:36:38 +08:00
SherkeyXD
5bc90917a6 chore: 移除未被使用的wpf文本 2025-07-16 22:21:24 +08:00
DavidWang19
232367afca chore: 删除界园多余的模板图和task 2025-07-16 14:59:16 +01:00
DavidWang19
87dd61b269 fix: 修复界园主题选择问题 2025-07-16 14:47:37 +01:00
Constrat
81e9bfa848 i18n: EN IS5 squads 2025-07-16 15:43:59 +02:00
uye
627ffed461 fix: 卡得偿所愿 2025-07-16 21:39:18 +08:00
github-actions[bot]
6721a575e7 chore: Auto Templates Optimization
Triggered by 13c7d43920

[skip changelog]
2025-07-16 13:16:27 +00:00
DavidWang19
13c7d43920 fix: 更新退出事件模板图 2025-07-16 14:14:32 +01:00
DavidWang19
dbd9f16627 docs: 还漏了两个 2025-07-16 13:55:46 +01:00
status102
7037991d56 chore: style
[skip changelog]
2025-07-16 20:11:37 +08:00
SherkeyXD
45465d8ad2 docs: 还漏了一个 2025-07-16 20:07:31 +08:00
SherkeyXD
aa07356b07 docs: 还有一只.png 2025-07-16 20:05:14 +08:00
SherkeyXD
e0b2b580b7 docs: 有猪.jpg 2025-07-16 19:52:13 +08:00
MistEO
35b060bb7a Release v5.20.0-beta.1 (#13217) 2025-07-16 19:49:03 +08:00
status102
d267bbc213 docs: changelog 2025-07-16 19:47:09 +08:00
SherkeyXD
bb7a03e1e9 docs: update changelog 2025-07-16 19:40:54 +08:00
github-actions[bot]
46c6392b82 docs: Auto Update Changelogs of v5.20.0-beta.1 (#13244)
* docs: Auto Generate Changelog of Release v5.20.0-beta.1

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-07-16 19:25:33 +08:00
HYY
3e374232f2 feat: 适配部分已知的不期而遇 (#13233)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-16 19:21:31 +08:00
status102
59b6a4050a fix: 刷理智界面设计器error 2025-07-16 18:20:19 +08:00
萨拉托加
116b953085 feat: 界园肉鸽二层作战逻辑 2025-07-16 17:30:36 +08:00
status102
3c85e0b745 refactor: 启动时成就打包 (#13221) 2025-07-16 17:27:43 +08:00
status102
008b194cee perf: 干员因模组不可选中时, 加个输出 (#13230)
* perf: 干员因模组不可选中时, 加个输出

临时措施,总感觉还要改

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-16 17:08:29 +08:00
uye
4e1d5982b1 chore: 调整肉鸽日志颜色 2025-07-16 16:18:36 +08:00
uye
d222a6df83 chore: 调整投资描述 2025-07-16 15:48:02 +08:00
SherkeyXD
7f3cac14bc rft: 移动所有主题的模板图 2025-07-16 15:34:35 +08:00
SherkeyXD
ef600c09c9 rft: 移动遗漏的肉鸽模板图 2025-07-16 15:34:35 +08:00
github-actions[bot]
688d036b34 chore: Auto Templates Optimization
Triggered by aa948748e9

[skip changelog]
2025-07-16 07:31:13 +00:00
uye
aa948748e9 fix: 新版肉鸽商店刷新 2025-07-16 15:30:20 +08:00
status102
40981a8063 refactor(wpf): 基建任务枚举引用路径统一, 修复设计器error 2025-07-16 15:18:32 +08:00
MistEO
f3c491c01b ci(fix): gh pages deploy condition 2025-07-16 15:13:45 +08:00
status102
b5753af639 fix: 移除ClientType未选择, 统一变更为官服 (#13220)
* fix: 移除ClientType未选择, 统一变更为官服

* chore: ver
2025-07-16 15:10:43 +08:00
SherkeyXD
4d780df455 chore(deps): bump dependencies (#13121) 2025-07-16 14:58:35 +08:00
HX3N
c71fd90868 i18n: KR JieGarden translation 2025-07-16 14:54:51 +09:00
github-actions[bot]
0db63172c6 chore: Auto Update Game Resources - 2025-07-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16309292348

[skip changelog]
2025-07-16 03:01:13 +00:00
DavidWang19
295782cfb8 feat: 初步适配界园肉鸽并初步实现存钱 (#13183)
* feat: 初步适配界园肉鸽并初步实现存钱

---------

Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: 不留 <weinibuliu@outlook.com>
Co-authored-by: HYY <95246895+HYY1116@users.noreply.github.com>
Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-16 03:20:33 +01:00
Huaxi Pan
ccc1dd65cc perf: 改进水月肉鸽干员部署逻辑 (#12671)
* feat: 更新水月肉鸽中维什戴尔的使用逻辑

* feat: 基本更新了维什戴尔在水月肉鸽中的使用逻辑

* fix: 修复recruitment 中蕾缪安划分错误

* feat: 优化了大君遗脉中开局漏怪的问题

* feat: 优化了精酿杀手关卡中开局漏怪的问题

* feat: 优化了瞻前顾后关卡中地面干员的位置

* feat: 优化了机械之灾中常态阻挡数不足的问题

* feat: 优化在铳与秩序关卡中维什戴尔容易被炮手炸死的问题

* feat: 删除了在"好梦在何方.json"中的对于蕾缪安的冗余逻辑, 将维什戴尔的放置时机后置避免开局漏怪

* perf: 修改高台C招募优先级

* feat: 后置"共生"中维什戴尔的放置时机, 避免开局漏怪

* feat: 补充了维什戴尔在"病症"中的使用逻辑

* feat: 优化了"机械之灾"中特殊情况下无常态阻挡的问题

* feat: 优化了"互助"关卡中部署在某些位置会导致MAA无法开启技能的问题

* feat: 前置在"瞻前顾后"中维什戴尔的部署时机, 避免盾前堆怪

* feat: 补充维什戴尔在"地下天途中的使用逻辑"

* feat: 补充维什戴尔在"回溯"中的使用逻辑

* fix: 修复了维什戴尔在"巢穴"中部署位置错误的问题

* feat: 优化了"海窟沙暴"中开局容易漏怪的问题

* feat: 删去海窟沙暴中的冗余语句, 再解决一下开局漏怪的问题

* feat: 优化了"分离与统一"中干员部署在某些位置导致无法开启技能的问题

* feat: 更新"大群所向"中的部署逻辑, 调整伊内丝的使用方式

* feat: 优化"大群所向"中输出时间不足的问题

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-16 09:56:07 +08:00
MistEO
a541da064a ci: deploy website to GitHub Pages (#13207) 2025-07-15 17:39:03 +08:00
github-actions[bot]
a2de7ac376 chore: Auto Templates Optimization
Triggered by 8cff328e92

[skip changelog]
2025-07-15 09:34:47 +00:00
github-actions[bot]
8cff328e92 chore: Auto Update Game Resources - 2025-07-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16289549499

[skip changelog]
2025-07-15 09:34:17 +00:00
uye
7c2072ee1f style: 格式化
[skip changelog]
2025-07-15 17:14:42 +08:00
uye
8052b16ca1 fix: ComboBox 剪贴板异常 2025-07-15 16:56:48 +08:00
uye
10765dfddb chore: 调整肉鸽日志颜色 2025-07-15 11:56:31 +08:00
uye
13fc438a62 fix: 公告及更新日志背景颜色异常 2025-07-15 10:55:12 +08:00
github-actions[bot]
0b7f8186ed chore: Auto Update Game Resources - 2025-07-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16276743684

[skip changelog]
2025-07-14 20:08:40 +00:00
uye
e57df86a00 Release v5.19.0-beta.1 (#13204) 2025-07-15 01:45:34 +08:00
uye
878100ef1b docs: 更新 CHANGELOG.md 2025-07-15 01:37:13 +08:00
uye
64d92dc3b3 Release v5.18.0-beta.1 (#13200) 2025-07-15 01:07:48 +08:00
github-actions[bot]
ec5c0afa29 docs: Auto Update Changelogs of v5.18.0-beta.1 (#13201)
docs: Auto Generate Changelog of Release v5.18.0-beta.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-15 01:03:24 +08:00
Lemon-miaow
2b0109127f feat: 优化会客室线索处理逻辑 (#13160)
* feat: 优化会客室线索处理逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-15 00:57:05 +08:00
uye
462bf51dce feat: 官网添加非当前电脑构架提示 2025-07-14 22:20:58 +08:00
uye
bf0943066a chore: 抽离 ToolTip 创建方法,统一 ToolTip 格式 2025-07-14 18:41:24 +08:00
uye
0153486afb chore: 日志栏使用 TooltipBlock 2025-07-14 17:51:57 +08:00
uye
c8e8b3949e chore: TooltipBlock 支持显示 svg 2025-07-14 16:54:20 +08:00
uye
6eda663bcf fix: TooltipBlock 无法使用 binding 2025-07-14 16:32:49 +08:00
HX3N
ef0864c084 chore: YostarKR SS@Store@CheckUnlimited.png 2025-07-14 10:50:51 +09:00
Constrat
12b8f46bd8 fix: optimize templates run
[skip changelog]
2025-07-13 16:14:08 +02:00
Constrat
ab0c9eb5bd chore: manual resource updater 2025-07-13 16:09:08 +02:00
status102
d2ff015c1c fix: 肉鸽, 生息演算 calcBinding枚举修复 2025-07-13 21:53:55 +08:00
Constrat
5bb12ce6e8 ci: manual optimize templates 2025-07-13 12:59:55 +02:00
Constrat
5135028df4 chore: YostarEN SS@Store@CheckUnlimited.png 2025-07-13 12:59:17 +02:00
Manicsteiner
1728a2bd8f chore: YostarJP SS_Store_CheckUnlimited (#13192)
* chore: YostarJP SS_Store_CheckUnlimited

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-13 18:59:06 +08:00
Constrat
263f6edd05 fix: style in json
[skip changelog]
2025-07-13 12:48:40 +02:00
eneen
c4fd6449fc perf: 添加萨卡兹肉鸽 机动队 溃乱魔典 盲盒广场 关卡策略 (#12636) 2025-07-13 17:46:42 +08:00
uye
5fa5b97399 fix: 商店功能错误购买商品
fix #13191
2025-07-13 17:40:23 +08:00
uye
b6896898ec chore: 移除导航 filters 2025-07-13 16:53:44 +08:00
uye
6bde9b97af fix: 小工具-公招识别 手动触发时不会改变显示状态 2025-07-13 15:19:58 +08:00
uye
ecf0d4e732 chore: 添加缺失的翻译与文档更新 2025-07-13 15:03:18 +08:00
uye
b1fc706a6a chore: 统一颜色 2025-07-13 14:21:35 +08:00
uye
24718ec243 chore: 使用自定义悬浮窗样式 2025-07-13 14:21:22 +08:00
nekosu
c876874cf5 feat: 支持MaaPipelineSupport插件 (#13189) 2025-07-13 14:11:07 +08:00
status102
a3cdc98031 fix: 移除Roguelike@GetDrop2中重复的Roguelike@DropsFlag任务 (#13180)
link to 2ed2376763
2025-07-13 12:37:27 +08:00
uye
cc995da6af chore: 使用 svg 代替 >,避免字体影响 2025-07-13 10:57:18 +08:00
uye
a41d4f7885 chore: 添加设计时预览 2025-07-13 00:07:52 +08:00
uye
a6e90ac65e feat: 添加悬浮窗标识符 2025-07-13 00:00:16 +08:00
uye
59e31663c4 feat: 添加任务及基建设施日志翻译 2025-07-12 22:44:25 +08:00
uye
bf759da599 chore: 日志栏 InitialShowDelay 改为 200,避免误触 2025-07-12 21:55:23 +08:00
uye
49753de8b8 feat: 新增公招星级悬浮提示 2025-07-12 21:51:06 +08:00
uye
763e5605cf feat: 新增通过 string 直接构造 Tooltip 方法 2025-07-12 21:50:32 +08:00
uye
7555119b03 feat: cdk 添加复制按钮 2025-07-12 19:49:04 +08:00
uye
8b5a60d79e chore: 使用 UsedImplicitly 2025-07-12 19:49:03 +08:00
Constrat
bb329afea0 style: clang
[skip changelog]
2025-07-12 13:38:47 +02:00
uye
62984d1026 feat: 新增资源仓库超链接 2025-07-12 19:06:35 +08:00
uye
034ecff647 feat: 为截图测试日志添加 Tooltip 展示所有截图方式耗时 2025-07-12 18:56:08 +08:00
HX3N
58b8e167ca chore: YostarKR BattleQuickFormationModulePage 2025-07-12 19:47:02 +09:00
Constrat
653fed53bb chore: YostarEN BattleQuickFormationModulePage 2025-07-12 12:40:44 +02:00
Manicsteiner
8e05cdaecb chore: YostarJP tasks edits (#13187) 2025-07-12 18:32:22 +08:00
uye
1e8d8ce91a chore: 优化掉落显示 2025-07-12 17:37:28 +08:00
status102
3f310ecede fix: 肉鸽界面设计器error (#13185) 2025-07-12 13:38:09 +08:00
status102
f14bf295c7 fix: typo & const ref 2025-07-12 12:39:57 +08:00
status102
7a8586a6d7 chore: style 2025-07-12 12:36:20 +08:00
status102
8acf9ececb refactor: 生息演算任务参数枚举 2025-07-12 10:09:08 +08:00
uye
4ea3900941 fix: 修复 ExpiringStatus 无法用于日志输出的问题 2025-07-12 00:54:54 +08:00
uye
ca81ddc4d9 chore: tooltip 顶部居中 2025-07-12 00:31:30 +08:00
status102
5a55b4d4dc fix: 理智药使用量ocr错误
fix #13132
2025-07-12 00:10:31 +08:00
travellerse
4e3c75b17b feat: 支持编队添加干员时选择模组 (#12811)
* feat: 支持编队添加干员时选择模组

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 更新模组编号和本地化字符串以支持新模组

* fix: 统一使用激活时的模组字符图像,将识别阈值下降至0.8以识别未激活时的模组字符

* perf: 省略不必要的参数

* perf: 修改模组默认值为`-1: 不修改`

* fix: 修复不使用模组时的点击区域, 使用模板图替换

* fix: roi

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: 优化部分文本

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 选择模组失败时反选干员

* fix: 选择模组失败时继续检查同组其他干员

* perf: 过个Rgb

Co-authored-by: status102<102887808+status102@users.noreply.github.com>

* chore: 不过灰度

* fix: 添加模板图片以匹配y模组字母的两种形式

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-11 23:56:37 +08:00
uye
0478306149 feat: 日志栏新增 ToolTip 提示 2025-07-11 23:31:05 +08:00
uye
3b40e07088 chore: 调整成就描述 2025-07-11 23:30:01 +08:00
uye
e38e8cf01a perf: 优化物品图显示缓存 2025-07-11 23:05:06 +08:00
uye
b0462076ea fix: 修复模板匹配遇到 inf 与 nan 时返回 0 的错误结果 2025-07-11 23:05:06 +08:00
github-actions[bot]
53e5c9b53d chore: Auto Update Game Resources - 2025-07-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16217034977

[skip changelog]
2025-07-11 09:46:55 +00:00
Constrat
f19d4631b0 chore: YostarEN OR Navigation 2025-07-11 11:43:20 +02:00
HX3N
96f8d25e47 chore: YostarKR OR navigation (#13179) 2025-07-11 11:43:03 +02:00
github-actions[bot]
e3f01f83da chore: Auto Update Game Resources - 2025-07-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16215141064

[skip changelog]
2025-07-11 08:10:18 +00:00
status102
ff18028781 chore: style 2025-07-11 15:44:19 +08:00
github-actions[bot]
9c0c4e6da0 chore: Auto Templates Optimization
Triggered by cfc7bfd02e

[skip changelog]
2025-07-11 07:42:34 +00:00
uye
cfc7bfd02e fix: 无法匹配活动商店部分商品 2025-07-11 15:42:05 +08:00
uye
ce96cef6ec fix: 外服训练室技能名可能被部分替换成干员名 2025-07-11 11:13:29 +08:00
status102
c3c69c7e1f rft: 肉鸽模式参数枚举 2025-07-11 10:33:16 +08:00
status102
7dd977f525 chore: file header 2025-07-11 10:20:09 +08:00
status102
7fb2d0686e fix: import 2025-07-11 10:17:06 +08:00
status102
8c8be278ea chore: 新Config长草任务存储已完成部分预载 2025-07-11 09:20:16 +08:00
status102
f4b71bd0be refactor: 新Config结构修改
部分迁移自 #12315
2025-07-11 09:09:51 +08:00
Lemon-miaow
d8515b15a2 fix: 更新肉鸽商店刷新按钮模板 (#13172)
* fix: 小家具

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-10 15:52:26 +01:00
uye
049f244a95 feat: 新增返回 bgr byte[] 数据接口,大幅降低 peep 性能占用 2025-07-10 21:35:43 +08:00
status102
0dc6af17a3 perf: 肉鸽参数显示简化, 开局干员空时不显示使用助战 2025-07-10 17:42:01 +08:00
uye
078ce0860d chore: 调整提示 2025-07-10 00:52:45 +08:00
晓丶梦丶仁
184bdd3dd1 fix: 一叶扁舟 choices
fix #13165
2025-07-10 00:28:23 +08:00
晓丶梦丶仁
5e165319e5 fix: JP 似是而非 OCR 2025-07-10 00:05:44 +08:00
SherkeyXD
47357b2baa chore: no overflow 2025-07-09 20:33:46 +08:00
晓丶梦丶仁
f5301faafb fix: 魂灵见闻:善恶同道 OCR
fix #13166
2025-07-09 18:55:18 +08:00
Constrat
f1d05cd70e fix: EN training room OCR 2025-07-09 11:47:20 +02:00
uye
edca2ea538 chore: 勾选手动填写实例号后查询一次实例 2025-07-09 17:35:37 +08:00
uye
6778ad4f6e fix: 获取雷电 pid 失败 2025-07-09 17:29:25 +08:00
uye
eb096e257c ci: ubuntu build 2025-07-09 16:49:56 +08:00
uye
6df743041f feat: 新增雷电专版注册表自动检测,新增雷电端口自动检测 2025-07-09 16:26:49 +08:00
uye
38cf01b66e chore: 避免使用 async void 2025-07-09 15:25:15 +08:00
uye
4cb6744e01 chore: 省略默认参数 2025-07-09 12:52:42 +08:00
uye
9ee3520634 chore: 优化窗口显示
fix #13161
2025-07-09 12:49:39 +08:00
uye
b16942cb2e chore: 调整成就描述 2025-07-09 09:20:52 +08:00
Constrat
72d1956643 fix: EN not enough space for SSS selection 2025-07-08 21:31:26 +02:00
uye
8293bcf978 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 22:39:14 +08:00
uye
c6e1e039bb feat: fetch 请求增加 If-Modified-Since 2025-07-08 21:54:43 +08:00
uye
bc998e4902 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 21:25:03 +08:00
github-actions[bot]
9bbde2199f chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16142758372

[skip changelog]
2025-07-08 12:08:10 +00:00
Constrat
9c991631f0 fix: EN InfrastTrainingOperatorAndSkill adaptation 2025-07-08 13:53:36 +02:00
uye
52f534cf43 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 18:02:10 +08:00
uye
270cfc19bc chore: 调整 ocrReplace 2025-07-08 17:55:03 +08:00
uye
9bed2f4bcc perf: 训练室继续专精使用特征匹配识别技能 2025-07-08 17:39:59 +08:00
uye
e3736bb4e4 chore: 添加 FeatureMatch schema 2025-07-08 17:39:59 +08:00
github-actions[bot]
4a8ace53cc chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16138144763

[skip changelog]
2025-07-08 08:33:18 +00:00
github-actions[bot]
d0374037fa chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16133813290

[skip changelog]
2025-07-08 04:16:27 +00:00
github-actions[bot]
4850da4acb chore: Auto Templates Optimization
Triggered by ba161b98eb

[skip changelog]
2025-07-08 03:00:12 +00:00
github-actions[bot]
ba161b98eb chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16132825324

[skip changelog]
2025-07-08 02:59:47 +00:00
uye
d1ff5c2400 fix: 训练室技能名识别 2025-07-08 00:45:29 +08:00
uye
442d7d5b70 chore: 米奇妙妙 ocr 2025-07-08 00:41:01 +08:00
uye
29f93616ff chore: 调整描述 2025-07-07 19:41:33 +08:00
Loong
aa7b5aeb77 chore: bump maa-cli to 0.5.6 (#13150) 2025-07-07 11:41:08 +08:00
uye
ec4f3f98f5 chore: 添加日志记录 2025-07-07 09:44:34 +08:00
uye
38ca800031 chore: 设置剪切板前先清空 2025-07-06 22:45:52 +08:00
uye
650a48b8a5 fix: 高版本检测到低版本更新时错误提示无更新包 2025-07-06 12:46:03 +08:00
uye
b16231698b chore: response.Log 添加 etag 日志 2025-07-06 00:20:37 +08:00
uye
13bef6c4b6 fix: 无法继续专精 2025-07-05 21:05:16 +08:00
uye
f6b0ca7754 perf: 优化热更逻辑 2025-07-05 12:48:07 +08:00
uye
f4489f4afb chore: 添加模拟器路径与附加命令的提示 2025-07-05 10:30:30 +08:00
uye
209da3da03 Release v5.18.3 (#13130) 2025-07-05 09:50:47 +08:00
uye
773a26fb1b docs: Update CHANGELOG.md 2025-07-05 09:50:17 +08:00
uye
bf2d6dcb5f fix: 公招刷新 2025-07-05 09:47:13 +08:00
uye
b5adf5b949 Release v5.18.2 (#13107) 2025-07-04 23:47:31 +08:00
uye
cd4b28cc59 chore: 漏了个 _mainTaskTypes 2025-07-04 23:36:42 +08:00
github-actions[bot]
ff2fc2e888 docs: Auto Update Changelogs of v5.18.2 (#13113)
* docs: Auto Generate Changelog of Release v5.18.2

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-04 23:35:04 +08:00
uye
f7f9d709b5 fix: 当首选关卡为剿灭时,后续备选关卡和剩余理智出现问题时不会报错 2025-07-04 23:31:24 +08:00
uye
a63bd7ffbf chore: 调整单击托盘图标动作,符合常规软件行为 2025-07-04 22:17:27 +08:00
uye
401cd76c2d fix: 修复因重定向导致 ETag 缓存与原始地址不符的问题 2025-07-04 19:18:52 +08:00
uye
4cef1b1a24 fix: 未勾选自动确认 3 星且有对应倾向 3 星 tag 时不会刷新 2025-07-04 18:30:23 +08:00
github-actions[bot]
7775e3889d chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16057199753

[skip changelog]
2025-07-03 17:46:49 +00:00
Constrat
1f132c7adc fix: YostarEN & YostarJP HS rerun navigation 2025-07-03 19:30:27 +02:00
vonnoq
af9eab239d fix: 繁中服無法識別荒蕪拉普蘭德 (#13125) 2025-07-03 19:15:13 +02:00
github-actions[bot]
43a5802652 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16056500208

[skip changelog]
2025-07-03 17:07:37 +00:00
uye
23743558ad fix: 存在更新时问题反馈提示显示不全
fix fafd1970be (commitcomment-161341748)
2025-07-03 23:29:55 +08:00
github-actions[bot]
cd6bd95445 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16053207061

[skip changelog]
2025-07-03 14:30:33 +00:00
HX3N
5ecec67bf2 fix: YostarKR HS rerun navigation (#13124)
* fix: YostarKR HS rerun navigation

* chore: add stages
2025-07-03 16:15:56 +02:00
SherkeyXD
e8bcf55546 chore: remove TaskTransitionVisualizer 2025-07-03 19:17:25 +08:00
uye
83bc2649a0 chore: 调整命名空间 2025-07-03 19:17:01 +08:00
github-actions[bot]
6102d7bf43 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16043883983

[skip changelog]
2025-07-03 07:08:58 +00:00
uye
c1b9a158a0 fix: typo
[skip changelog]
2025-07-03 12:18:13 +08:00
uye
a79980daf2 fix: 规避 WPF 剪贴板卡顿,修复剪切不清除文本的问题。支持 (Rich)TextBox 复制/剪切/粘贴 和 DataGrid 复制 2025-07-03 12:03:02 +08:00
晓丶梦丶仁
b7d8577023 fix: Mumu5.0 MumuExtra
mumu5.0 正式版似乎在根目录中留了一个 shell\sdk\xxxx.dll,部分用户反应这个 dll 无法连接模拟器,删除后可用;于是检测路径时优先检测 Mumu5.0 的路径,若不存在再向下兼容
2025-07-03 00:22:21 +08:00
uye
874db89c8a fix: 不知道为啥有时候肉鸽难度识别最后会多个0,ui打个补丁 2025-07-02 21:59:13 +08:00
SherkeyXD
f41356f683 fix: no unsigned subtraction 2025-07-02 19:33:17 +08:00
SherkeyXD
c285d53404 chore: use SecureZeroMemory for safety 2025-07-02 19:24:09 +08:00
鬼影233
b82081769f fix: 调整 YoStarEN 大荒城公招、抽卡的截图以修复识别失败的问题 (#13117)
* fix: 调整 YoStarEN 大荒城公招、抽卡的截图以修复识别失败的问题
2025-07-02 13:05:37 +02:00
github-actions[bot]
89969d2101 chore: Auto Templates Optimization
Triggered by 73f53e1f9c

[skip changelog]
2025-07-01 15:07:20 +00:00
pre-commit-ci[bot]
73f53e1f9c chore: Auto update by pre-commit hooks [skip changelog] 2025-07-01 15:06:19 +00:00
HY
5aff0583f7 chore: 更新繁中服線索與部分截圖 (#13094)
* chore: 更新線索圖片

* chore: 更新其他圖片

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 用更高的 DPI 再用一次截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-01 17:03:09 +02:00
github-actions[bot]
a4efe0aa3c chore: Auto Update Game Resources - 2025-07-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15997555493

[skip changelog]
2025-07-01 11:06:59 +00:00
github-actions[bot]
313e46153f chore: Auto Update Game Resources - 2025-07-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15992790429

[skip changelog]
2025-07-01 07:30:41 +00:00
github-actions[bot]
e76e21d986 chore: Auto Update Game Resources - 2025-06-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15981481318

[skip changelog]
2025-06-30 19:06:28 +00:00
github-actions[bot]
0d19298f4b chore: Auto Update Game Resources - 2025-06-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15976645788

[skip changelog]
2025-06-30 15:08:04 +00:00
晓丶梦丶仁
4bc67b33f5 feat: wpfgui 添加第三备选关卡 (stage4) (#13106) 2025-06-30 22:41:02 +08:00
晓丶梦丶仁
5ee2b96938 fix: KR SS@Store@Purchase OCR
[skip changelog]
2025-06-30 19:26:22 +08:00
晓丶梦丶仁
f6ee7f6ab4 fix: KR SS@Store@Purchase OCR 2025-06-30 19:25:16 +08:00
晓丶梦丶仁
4f3300fa17 fix: JP SS@Store@Purchase OCR 2025-06-30 19:15:55 +08:00
zhangweijian97
db9a402bd8 docs: 更新Linux开发环境配置教程 加入 Mac 开发建议 2025-06-30 14:02:59 +08:00
dantmnf
6ce5c5ca7d feat: warn about known problematic injected dlls 2025-06-30 11:50:31 +08:00
github-actions[bot]
8805d1a3f1 chore: Auto Update Game Resources - 2025-06-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15947736529

[skip changelog]
2025-06-28 20:07:41 +00:00
Constrat
d2bc88896c fix: wrong dossoles for global
[skip changelog]
2025-06-28 00:27:17 +02:00
Constrat
3e56b73283 chore: SSS#7 Dossoles global 2025-06-28 00:25:22 +02:00
HY
dc2754bf39 chore: 繁中服_周年月卡領取 &「揭幕者們」活動導航 (#13092)
* chore: 周年月卡領取

* chore: 「揭幕者們」活動導航
2025-06-27 23:13:52 +08:00
github-actions[bot]
9f9f0270a8 chore: Auto Update Game Resources - 2025-06-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15919471111

[skip changelog]
2025-06-27 06:11:07 +00:00
github-actions[bot]
a0dbca0816 chore: Auto Update Game Resources - 2025-06-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15918939109

[skip changelog]
2025-06-27 05:31:12 +00:00
status102
323d991308 fix: Toast遮挡右侧界面
fix #13088
2025-06-27 10:57:36 +08:00
Sherkey Asher
94f58586b7 ci: add codeql for security check 2025-06-27 09:26:25 +08:00
SherkeyXD
9c05d6e18b feat: 优化 CropRoi 使用体验 2025-06-26 17:38:39 +08:00
uye
fdeae7b28f chore: 资源日期使用本地时间显示 2025-06-25 22:57:37 +08:00
uye
399eb27360 chore: 删除错误提示
[skip changelog][skip ci]
2025-06-25 20:16:04 +08:00
status102
39a8e0c766 chore: 引航者试炼#5 TN-1 ~ TN-4地图view[1] & 干员部署修复 2025-06-25 20:05:41 +08:00
status102
e098c55223 ci: 禁止更新时重判 2025-06-25 20:03:31 +08:00
uye
bf80696a80 chore: 调整关卡选择中的剿灭显示 2025-06-25 19:55:32 +08:00
status102
bc560cf9af perf: SSReopen使用XX-OpenOpt代替SideStoryReopen导航 (#13078) 2025-06-25 19:16:09 +08:00
status102
e73635339d Revert "chore: 引航者试炼#5 TN-1 ~ TN-3地图views[1]修复"
This reverts commit ae38ad904b.
2025-06-25 12:02:46 +08:00
uye
d341d95372 chore: 显示错误 2025-06-25 00:43:04 +08:00
uye
e1ff78240e feat: 新增资源更新进度显示 2025-06-24 23:46:09 +08:00
status102
ae38ad904b chore: 引航者试炼#5 TN-1 ~ TN-3地图views[1]修复 2025-06-24 23:23:37 +08:00
status102
3f07bfc52d chore: meojson update to v4.4.1 & remove json5 (#13079) 2025-06-24 19:59:32 +08:00
status102
a1c11bdb32 chore: remove json5 2025-06-24 19:34:20 +08:00
status102
4a4b3fae3b chore: meojson update to v4.4.1 2025-06-24 19:33:30 +08:00
Constrat
5e435f2cd7 fix: txwy failed dataload 2025-06-24 13:11:43 +02:00
github-actions[bot]
eac28232a9 chore: Auto Update Game Resources - 2025-06-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15846236823

[skip changelog]
2025-06-24 09:10:39 +00:00
status102
6af04f4232 perf: 减少运行中Task修改 2025-06-24 16:55:43 +08:00
status102
96c007274d fix: 肉鸽结算Ocr 非数字替换 2025-06-24 16:55:42 +08:00
uye
fd4bdb6f4a fix: 写的什么jb导航 2025-06-24 16:29:43 +08:00
Constrat
be18f7304b style: fix clang 2025-06-23 23:45:21 +02:00
status102
eebcf78aaf fix: 肉鸽结算Ocr bin threshold 2025-06-23 23:03:53 +08:00
status102
1328545320 rft: 肉鸽callback中Int类型限定 2025-06-23 23:01:37 +08:00
Constrat
303c7bca17 feat: YostarEN Dahuang City theme 2025-06-23 14:54:10 +02:00
萨拉托加
56875aec85 feat: 肉鸽更新干员招募逻辑 (#13071)
* feat: 肉鸽更新干员招募逻辑

* feat: 肉鸽更新干员招募逻辑

* feat: 肉鸽更新干员招募逻辑
2025-06-23 19:02:43 +08:00
Lemon-miaow
1e3afd8c12 i18n: 用户文档基建换班添加队列轮换说明 (#13064)
* i18n: 用户文档基建换班添加队列轮换说明

* chore: Auto update by pre-commit hooks [skip changelog]

* i18n: 同步客户端文本

* i18n: JP texts edit

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-06-23 16:57:32 +08:00
uye
c1fcf95a49 fix: 难度识别出非数字时崩溃
#13069
2025-06-23 14:57:57 +08:00
Hao Guan
02964cd38e fix(mac): Mirror酱更新检测 2025-06-23 11:50:25 +08:00
Hao Guan
ff3a06cf71 feat(mac): 显示剩余理智 2025-06-23 11:49:48 +08:00
HY
17c98f18e4 chore: 繁中服「荒原安保派駐」定向導能元件 (#13057)
* chore: 繁中服「荒原安保派駐」定向導能元件

* chore: 搬移保全作業
2025-06-22 16:30:42 +02:00
status102
0f25adfd83 Release v5.18.1 (#13048) 2025-06-22 18:56:46 +08:00
Lemon-miaow
5dcfd8ce2a docs: 用户文档基建换班添加队列轮换说明 (#13058) 2025-06-22 16:34:37 +08:00
github-actions[bot]
cd3b0d9e08 docs: Auto Update Changelogs of v5.18.1 (#13050)
* docs: Auto Generate Changelog of Release v5.18.1

* docs: ahcneglog

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-22 16:14:48 +08:00
Manicsteiner
e0724ed92c chore: YostarJP infrast training room and IS4 squad (#13053) 2025-06-21 17:54:22 +02:00
status102
cf7c8e66bb fix: YoStarEN StageDrops-TimesRec roi 2025-06-21 23:29:06 +08:00
Constrat
cafb520b29 fix: YostarEN Sarkaz DLC2 2025-06-21 12:42:38 +02:00
github-actions[bot]
2e21799cc8 chore: Auto Templates Optimization
Triggered by 911f910990

[skip changelog]
2025-06-21 10:22:05 +00:00
MistEO
911f910990 chore: 更换 Mirrorc logo 2025-06-21 18:20:56 +08:00
uye
0b91daba21 perf: 自动替换连接地址中的中文冒号与空格 2025-06-21 12:32:19 +08:00
uye
eed13a6869 fix: 全选删除作业代码时底部连接不换回作业站链接
fix #13036
2025-06-21 10:30:06 +08:00
status102
b5798a8096 fix: 中断时刷理智, 基建任务参数无法修改 2025-06-21 10:15:44 +08:00
status102
b30f2eadc1 chore: 理智药加个输出 2025-06-21 10:15:44 +08:00
status102
14a3455ee8 fix: StageQueue战斗次数统计 2025-06-21 10:15:24 +08:00
HX3N
3e06cece23 chore: YostarKR IS4 dlc2 (#13047)
* chore: YostarKR IS4 dlc2 ocr

* i18n: is4 dlc squad

* chore: RoguelikeCustom-HijackSquad

* chore: 消失
2025-06-21 09:44:12 +08:00
HX3N
264a27e82b fix: skip blank stages in KR replacement on ResoureUpdater (#13045)
* fix: skip blank stages in KR replacement on ResoureUpdater

* docs: simple commenting

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-06-20 21:53:56 +02:00
Constrat
32a627d980 fix: YostarEN ocr for new IS 2025-06-20 21:40:13 +02:00
github-actions[bot]
17c93f91d4 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15784413397

[skip changelog]
2025-06-20 17:29:51 +00:00
Manicsteiner
70e6261a98 chore: YostarJP Dahuang city theme and ocr edits (#13044) 2025-06-20 17:46:18 +02:00
HX3N
bd8a2ee886 chore: YostarKR DahuangCity theme (#13043) 2025-06-20 17:46:05 +02:00
SherkeyXD
5af96ea1ce fix: 防止卡在傀影肉鸽剧作家手稿界面 2025-06-20 23:40:04 +08:00
github-actions[bot]
09432c2247 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15781231814

[skip changelog]
2025-06-20 14:30:31 +00:00
uye
d85c049ee3 fix: YoStarKR tasks ocrReplace 2025-06-20 22:07:26 +08:00
github-actions[bot]
40ae3a2866 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15773971592

[skip changelog]
2025-06-20 07:45:31 +00:00
Sherkey Asher
12fa8eba2c fix: 保证SSReopen不多刷 (#13029)
* fix: 保证SSReopen不多刷

* fix: 移除无用

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-20 15:08:28 +08:00
status102
8476d5bebe fix: StageQueue关闭理智药界面后delay 2025-06-20 15:00:32 +08:00
uye
4f9dcbbd42 chore: 调整 ssreopen 识别 2025-06-19 20:48:20 +08:00
uye
2db6c4a459 fix: 更新后第一次启动读取 SemVersion 失败
fix #13021
2025-06-19 20:40:53 +08:00
github-actions[bot]
7c3ac7066e chore: Auto Update Game Resources - 2025-06-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15756353451

[skip changelog]
2025-06-19 11:07:40 +00:00
github-actions[bot]
3355bf13b3 chore: Auto Update Game Resources - 2025-06-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15753670086

[skip changelog]
2025-06-19 08:49:36 +00:00
uye
f2fabb392e Release v5.18.0 (#13007) 2025-06-19 16:11:42 +08:00
status102
e209727448 fix: 成就view遮挡设置按钮 2025-06-19 16:08:06 +08:00
uye
27762ce24d docs: Update CHANGELOG.md 2025-06-19 16:06:43 +08:00
uye
335bf74e89 docs: Update CHANGELOG.md 2025-06-19 16:03:43 +08:00
uye
fece54bfb4 chore: 调整 margin 2025-06-19 15:52:11 +08:00
github-actions[bot]
7994bc2384 docs: Auto Update Changelogs of v5.18.0 (#13008)
* docs: Auto Generate Changelog of Release v5.18.0

* docs: chagnelog

* docs: ahcenglog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-19 15:01:10 +08:00
status102
a10e3be350 perf: 自动战斗作业点赞按钮禁用前置 2025-06-19 13:30:44 +08:00
github-actions[bot]
7af5574bf9 chore: Auto Update Game Resources - 2025-06-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15742563268

[skip changelog]
2025-06-18 20:09:25 +00:00
status102
9cf913dc3a perf: 不许成就遮挡设置 (#13012)
* perf: 不许成就遮挡设置

* perf: 套个scroll
2025-06-18 16:36:23 +08:00
dantmnf
14360ed869 fix: improper ifstream usage in adblite
https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/12199#issuecomment-2974975943
2025-06-18 16:32:54 +08:00
github-actions[bot]
02156ebb0c chore: Auto Update Game Resources - 2025-06-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15701766376

[skip changelog]
2025-06-17 08:11:33 +00:00
status102
a16e399ae1 perf: 公告内容变动检查 2025-06-17 15:49:47 +08:00
status102
7a658d4712 fix: Log宏不检查log rotate 2025-06-17 15:48:43 +08:00
uye
0b6c1ef843 chore: 窗口允许最大化 2025-06-17 10:10:24 +08:00
Lucien Shaw
54ed65fb9d i18n: 补全本地化文本中一处设置的完整引导路径 (#12997)
* i18n: 补全中文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全英文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全繁体中文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全日文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全韩文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径
2025-06-17 09:42:11 +08:00
Sherkey Asher
3289bbabb8 feat: 傀影肉鸽添加难度选择 (#12897)
* feat: 傀影肉鸽添加难度选择

* feat: 肉鸽难度选择不再显示不支持的选项
2025-06-17 09:28:34 +08:00
dependabot[bot]
219ec7278a ci: bump softprops/action-gh-release from 2.2.2 to 2.3.2 in /.github/workflows in the github-actions group (#13004) 2025-06-16 16:07:28 +00:00
Constrat
2b7b020b51 ci: fix my username? 2025-06-16 17:48:51 +02:00
晓丶梦丶仁
28a768a8f5 fix: IS1 投资策略 2025-06-16 16:14:18 +08:00
status102
66d2614d82 refactor(wpf): asst任务状态 (#12985)
* rft(wpf): asst任务状态监控

* rft: 迁移刷理智, 基建任务状态
2025-06-16 11:07:43 +08:00
status102
2b5857a955 i18n: 更正 指定材料 的提示 (#12977)
* i18n: 更正 指定材料 的提示

* i18n: KR tweak translation

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-06-16 11:07:29 +08:00
uye
4de3bf3fef feat: 翻译引用
fix #12996
2025-06-15 18:54:11 +08:00
uye
852a7da8eb feat: 更新繁中翻译 2025-06-15 18:04:50 +08:00
uye
7bc25bc952 chore: Load 时替换翻译引用 2025-06-15 18:01:45 +08:00
uye
268ee6ba0f feat: LocalizationHelper 支持 GetFormattedString 2025-06-15 15:49:53 +08:00
uye
117cbb4561 fix: Miss.Christine 识别错误 2025-06-15 13:16:16 +08:00
uye
7b550516cc fix: 恢复进度失败
fix #12992
2025-06-15 13:16:16 +08:00
Lucien Shaw
eec8880bd5 fix: 基建高级设置中部分元素未正确隐藏 (#12988)
当基建模式设置为“队列轮换”时,高级设置中的“不将已进驻的干员放入宿舍”项旁的提示图标未正确隐藏
2025-06-15 13:05:24 +08:00
uye
69ae0eaa1b fix: 不计算理智回复成就 2025-06-14 23:12:44 +08:00
status102
4c4b2e8510 refactor: 迁移理智, 战斗次数, 代理倍率, 关卡理智缓存 (#12986)
rft: 迁移理智, 战斗次数, 代理倍率, 关卡理智缓存
2025-06-14 16:26:21 +08:00
Lucien Shaw
649ca6452e i18n: 更正英文本地化文本中的两处错误 (#12987)
* i18n: 更正英文本地化文本中训练室提示文本的标点问题

在逗号后添加了缺失的空格;
将逗号连接的两个独立分句改为分号。
原句:"...Training Room,this will..." 改为 "...Training Room; this will..."

* i18n: 更正英文本地化文本中有关特别标记干员的语法问题

「Favourite」 operators maybe cannot be recognized中,maybe cannot be ... 并非常见语法,改为may not be.
2025-06-14 12:22:25 +08:00
status102
fe13df4806 fix: 仅主刷理智任务激活指定次数未消耗殆尽警告 2025-06-14 11:31:08 +08:00
status102
46f7ee6e33 perf: OF-1德克萨斯使用2技能
fix #12971
2025-06-14 09:45:09 +08:00
Constrat
948f38b2ac perf: remove duplicate templates from JP 2025-06-13 18:42:12 +02:00
晓丶梦丶仁
ac9a339d47 ci: issue-checkbox-checker 跳过已经折叠的 issue 2025-06-14 00:24:35 +08:00
晓丶梦丶仁
371f4e814a ci: issue-checkbox-checker.yml 2025-06-14 00:18:34 +08:00
晓丶梦丶仁
e8e9d7a38a fix: KR EP navigation 2025-06-13 23:55:40 +08:00
uye
907947a02e chore: 读取mumu新版注册表路径 2025-06-13 22:19:00 +08:00
Constrat
b40a18f591 feat: YostarEN gaming theme + JP optimization 2025-06-13 15:46:03 +02:00
Constrat
007b04eaf0 chore(tools): update ignore templates 2025-06-13 15:44:00 +02:00
status102
09a4931ba1 chore: 刷理智任务手动填写关卡名增加空关卡名对应关卡提示 2025-06-13 21:27:43 +08:00
uye
0da24487c9 feat: mumu 5.0 路径自动检测 2025-06-13 21:04:49 +08:00
Constrat
7ff2bbdbbf style: fix clang 2025-06-13 14:20:26 +02:00
status102
13ef0ca3fe perf: 自动编队跳过空干员职业组 2025-06-13 15:54:56 +08:00
status102
801afef4e5 fix: 自动战斗干员编队时, 若连续错误Ocr贴边干员名为_会导致跳过该职业 2025-06-13 15:54:47 +08:00
github-actions[bot]
124df0612c chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15616777606

[skip changelog]
2025-06-12 17:07:38 +00:00
Manicsteiner
f2eb22be4c chore: YostarJP Gaming theme (#12970) 2025-06-13 00:48:00 +08:00
HX3N
256feb33c7 chore: YostarKR Poly Vision Museum Theme
EnterInfrastGaming, OperBoxEnterGaming and  TaskGaming work well even without adding templates
2025-06-13 00:58:40 +09:00
status102
5b39e69317 perf: 减少预期外的error日志 2025-06-12 20:21:49 +08:00
github-actions[bot]
87ed43301c chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15606390837

[skip changelog]
2025-06-12 09:09:08 +00:00
HY
3c628e95dd fix: 繁中服 肉鴿助戰可能招募失敗 (#12966) 2025-06-12 10:57:32 +02:00
github-actions[bot]
21a40cc685 chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15603966383

[skip changelog]
2025-06-12 07:08:36 +00:00
uye
cbe1c991cc fix: 成就 id 错误 2025-06-12 02:57:15 +08:00
github-actions[bot]
f68d1dd308 chore: Auto Templates Optimization
Triggered by bbe22ea5a2

[skip changelog]
2025-06-11 14:46:27 +00:00
HX3N
bbe22ea5a2 chore: YostarKR ocr fix and update Infrast templates
Changed the Training template because the mastery symbol prevented recognition when training finished.
ocr fix for EP update.
2025-06-11 23:28:10 +09:00
dependabot[bot]
8d29464ed3 ci: bump actions/github-script from 6 to 7 in /.github/workflows in the github-actions group (#12946)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-11 21:29:35 +08:00
HX3N
c97c525d74 fix: UseReaminingSanityStageTip (#12959) 2025-06-11 08:21:24 +08:00
uye
c6536af73d fix: 午夜 0 点没算 0 点 2025-06-11 01:03:44 +08:00
uye
a903486c71 fix: 使用 Mirror 源的时候也显示了强制使用 Github 的TooltipBlock 2025-06-11 01:02:45 +08:00
uye
725a178708 Release v5.18.0-beta.1 (#12956)
sb gh 炸了()
2025-06-11 00:34:11 +08:00
uye
12cbc7d47b ci: Update ci.yml 2025-06-11 00:31:31 +08:00
uye
620c63c6b0 Release v5.18.0-beta.1 (#12954) 2025-06-11 00:11:29 +08:00
github-actions[bot]
bcd61de277 docs: Auto Update Changelogs of v5.18.0-beta.1 (#12955)
* docs: Auto Generate Changelog of Release v5.18.0-beta.1

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-11 00:07:08 +08:00
uye
53cb5cc3e8 chore: 多余文件描述 2025-06-10 23:59:07 +08:00
soundofautmn
839835fcba chore: 统一更新copyright 2025-06-10 23:56:27 +08:00
soundofautmn
466cd719d7 chore: 统一copyright 2025-06-10 23:56:23 +08:00
soundofautmn
ee9a44b957 chore: 修正注释warning
warning SA1512: Single-line comments should not be followed by blank line
2025-06-10 23:56:21 +08:00
uye
1b2df5ff5d feat: 成就系统 (#12823)
* feat: 成就系统

* chore: 调整时间

* feat: 追溯同类成就

* chore: 调整弹窗显示

* feat: 增加解锁条件

* feat: 使用静态类替代硬编码 id

* feat: 刷理智类成就实现

* chore: 抽离 CheckProgressUnlock

* chore: 加个保底

* feat: 手动停止

* chore: 修改描述

* feat: 成就列表(待翻译)

* i18n: english

* chore: 调整排序

* chore: 使用 DynamicResource 替代硬编码颜色,取消选中高亮

* feat: 可露希尔代理程序正常运转中(1000次刷理智)

* feat: 第一次启动软件

* feat: 使用理智药

* chore: 右键图标的停止也改成ManualStop

* feat: Growl 延迟到窗口显示时弹出

* chore: 默认 WindowState 为 null

* perf: 弹窗居中,虚拟化StackPanel

* chore: 定时执行

* chore: 解锁时间显示改为本地时间

* chore: 已完成的成就不显示进度条

* chore: 统一格式

* feat: 临期理智药

* chore: 你进行了一次能将大道磨灭的代理任务

* debug: 忘了删

* feat: 使用 MirrorChyan 更新 / 输入错误 cdk

* chore: 调整设置顺序

* chore: 截图测试显示在应用中心

* chore: 调整 AchievementListWindow 绑定

* chore: summary

* fix: 卡启动

* feat: 恢复进度后保存文件

* feat(#12823): 新增成就 (#12840)

* feat: 真正的抽卡

* feat: 窥屏

* feat: 喜报

* feat: 不速之客

* feat: 自定义达人

* feat: 火星人

* feat: 严重错讠

* feat: 这也能点?

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>

* chore: 火星人

* feat: 勋章颜色

* feat: 成就图标

* feat: 问题反馈

* feat: 成就等级

* feat: 急急国王

* feat: 自动战斗

* i18n: 打个框先

* i18n: KR translation

* feat: 公招

* i18n: 翻译

* chore: 隐藏吉吉国王

* feat: 借助战

* chore: 测试版

* feat: 作弊

* chore: 优化显示效果

* chore: 忽略返回值

* feat: 或许我应该换一份作业?

* feat: 平均截图速度

* feat: 验证成就合法性,新增 CustomData 字段

* chore: 调整延迟时间过长为隐藏成就

* feat: 今日宜抽卡

* feat: 分组

* feat: 彩色!

* chore: 忘加[JsonIgnore]了

* feat: 彩色!

* chore: 这玩意啥时候混进来了

* feat: 网络折磨人

* chore: 调整描述

* chore: httpService unused

* chore: debug 模式点一次触发

* feat: 新增成就 new 提示,仅本次关闭前生效

* chore: 隐藏未解锁的隐藏成就

* feat: 挂机

* feat: 一天启动 3 次任务

* chore: lock 时重置进度

* feat: 肉鸽相关成就

* chore: 调整放弃次数

* feat: 作业点赞

* feat: 立刻停止任务

* fix: RoguelikeRetreat

* chore: 不存非法成就

* feat: 代理指挥出现错误

* fix: 次数填错了

* feat: 新增 CustomData 类辅助函数,添加时长类成就

* chore: 调整 rare 逻辑

* chore: 注释

* chore: 调整成就分类

* chore: 调整描述

* i18n: 打个框

* fix: wpf binding error

* feat: 肉鸽通关难度

* perf: 解锁和锁定全成就时禁止保存

* chore: 调整成就显示

* chore: 调整 LinearGradientBrush

* feat: 新增肉鸽 n4

* i18n: fully Claude Sonnet 4 EN translation

* i18n: 繁中翻译

* i18n: KR translation

* i18n: JP translation

* feat: JsonDataHelper 支持自定义文件夹

* feat: 自定义备份路径

* chore: 哦这该死的 xaml designer

* fix: 避免设计时生成不必要的data文件夹

* feat: 触发牛牛时按钮位置移动

* Revert "fix: 避免设计时生成不必要的data文件夹"

This reverts commit 2ac878dbbd.

* fix: 不许save, 给你抽出来

* Reapply "fix: 避免设计时生成不必要的data文件夹"

This reverts commit 76985896cb.

* chore: 调整显示顺序

* feat: 添加搜索

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Lemon-miaow <61692393+Lemon-miaow@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-06-10 23:40:25 +08:00
status102
3db8613a43 chore: wpf各种提示 (#12930)
* chore: 给喜欢指定参数不看说明的加个提示

* chore: 给代理倍率加个?

* fix: 减重繁中

* chore: KR tweak translation

* i18n: EN dot symbol

* feat: 带提示控件使用 TooltipBlock

* chore: 调整无序列表显示

* chore: 调整显示效果

* perf: 简化自定干员提示

* fix: TooltipText 内容错误

* chore: 调整 TooltipBlock 默认 Margin

* chore: 重置 TextBox InitialShowDelay 默认行为

* chore: 修改描述

* chore: 修改自动战斗描述

* perf: 优化控件布局

* feat: 新增强制Github下载描述

* chore: 调整绑定

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-10 23:33:35 +08:00
status102
499564694c perf: 刷理智增加未耗尽战斗次数提示输出 2025-06-10 22:04:47 +08:00
HY
88eb57d63d fix: 繁中服 傀影肉鴿 卡在通關劇情 (#12952)
* fix: 繁中服 傀影肉鴿 卡在通關劇情

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-10 19:56:06 +08:00
HY
4aeeac2e65 chore: update txwy for update infrast training room (#12953) 2025-06-10 19:52:59 +08:00
uye
ce2031704f perf: 移除解决方案名
Signed-off-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-10 15:02:38 +08:00
uye
f2558002f0 perf: 移除解决方案名
Signed-off-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-10 15:01:06 +08:00
status102
99958533ef fix: rect width & height = 0 2025-06-10 14:54:22 +08:00
status102
b6e6080f36 fix: StageDrops-Item warning 2025-06-10 14:52:52 +08:00
status102
96df05800c fix: 未进入战斗期间检测技能使用 2025-06-10 09:10:29 +08:00
HX3N
625db77e00 chore: update KR for update infrast training room
ref 673b1b082f
2025-06-10 09:46:59 +09:00
github-actions[bot]
96d9cad344 chore: Auto Templates Optimization
Triggered by 12f165e08d

[skip changelog]
2025-06-10 00:28:00 +00:00
HX3N
12f165e08d fix: YostarKR changed EnterInfrastSami due to low recognition score 2025-06-10 09:27:02 +09:00
Constrat
d96143eab2 style: fix clang 2025-06-09 23:17:48 +02:00
Constrat
673b1b082f chore: update EN for update infrast training room 2025-06-09 21:42:29 +02:00
status102
3a15195178 fix: 还原外服的StageDrops-TimesRec 2025-06-09 22:57:23 +08:00
uye
59c632f628 fix: 代理次数 2025-06-09 22:53:51 +08:00
ABA2396
1d54b13f6d Merge tag 'v5.17.2' into dev
v5.17.2
2025-06-09 11:02:25 +00:00
uye
2e9408efa9 Release v5.17.2 (#12943) 2025-06-09 19:01:50 +08:00
status102
02ec0426f0 Release v5.17.2 (#12941)
fix: non ota package remove old resource
2025-06-09 17:47:54 +08:00
status102
5bc4a68a71 fix: non ota package remove old resource 2025-06-09 17:31:13 +08:00
Hao Guan
3682278967 fix(mac): 编译兼容Swift 6.0 2025-06-09 17:07:19 +08:00
Hao Guan
ff40ff6e91 fix(mac): 资源更新改进 2025-06-09 16:48:14 +08:00
uye
f329411768 docs: 高分辨率滑动修复文档 2025-06-09 16:15:13 +08:00
uye
7988229cba fix: 高分辨率下无法进入特定关卡(虽然修了但还是不建议用 2k 4k 2025-06-09 15:44:42 +08:00
uye
67eb0aa7ca style: 多余的空格
[skip changelog][skip ci]
2025-06-09 14:25:17 +08:00
uye
cd25bb9fa9 perf: 优化导航逻辑
link to #10691
2025-06-09 14:23:11 +08:00
status102
503029581a rft: 基建技能专精状态分析 2025-06-09 09:21:50 +08:00
Constrat
5b3d638048 fix: EPChapterToEP for EN 2025-06-08 19:26:07 +02:00
Constrat
edf4905733 perf: remove unneccesary InfrastTrainingTime from EN 2025-06-08 17:37:34 +02:00
Constrat
09de23dd26 style: clang format 2025-06-08 17:07:07 +02:00
status102
b96bcc2e2b perf: 合并Tooltip 2025-06-08 21:53:53 +08:00
status102
14d740afe3 fix: 使用传入的httpService代替全局引用 2025-06-08 21:50:28 +08:00
status102
7ac4fc6ccc feat: wpf TooltipBlock文本为空时, 不显示Tooltip文本框 2025-06-08 21:42:54 +08:00
status102
af3e4b144f fix: 刷理智掉落识别-代理倍率roi 2025-06-08 15:33:07 +08:00
uye
5aed8be27e chore: 调整依赖库安装脚本输出 2025-06-08 14:16:25 +08:00
status102
27516baf54 fix: 基建训练室技能专精剩余时间Ocr错误 2025-06-08 14:04:58 +08:00
status102
2609f159ab fix: 基建专精干员名及技能Ocr使用原图以提高ocr成功率 2025-06-08 13:59:43 +08:00
status102
d06535bf92 perf: 肉鸽战斗使用费用、击杀数缓存, 优化性能占用 2025-06-08 09:45:02 +08:00
github-actions[bot]
bb930cd341 chore: Auto Templates Optimization
Triggered by c27a03623b

[skip changelog]
2025-06-07 20:38:13 +00:00
Constrat
c27a03623b perf: use text ocr instead of template for battlequick 2025-06-07 22:37:45 +02:00
uye
33f850b0f7 chore: 怎么真有人看到 [Y] 确认 是用鼠标去点而不是输入 Y 回车 2025-06-08 00:06:29 +08:00
uye
8a2a93c543 fix: Roguelike@RecruitWithoutButton 2025-06-07 22:48:41 +08:00
uye
235f83acfb fix: 在招募干员的过程中闪退导致死循环 2025-06-07 22:46:09 +08:00
uye
ab36ae88d6 docs: 调整描述 2025-06-07 21:20:28 +08:00
status102
56c95f6891 fix: 刷理智战斗后掉落识别代理倍率次数中文关键词使用原图, 以避免阈值过滤造成的边缘细节丢失
fix #12910
2025-06-07 17:26:53 +08:00
uye
21435c8850 fix: microseconds -> milliseconds 2025-06-07 16:28:03 +08:00
uye
93a5392028 docs: 调整镜像下载失败描述 2025-06-07 16:13:39 +08:00
status102
7464b5fce3 perf: wpf属性监听简化 (#12725)
* perf: 绑定合并

* perf: 循环依赖检查

* perf: 循环依赖检查
2025-06-07 10:43:17 +08:00
github-actions[bot]
521ec62b4d chore: Auto Templates Optimization
Triggered by 4fa9639802

[skip changelog]
2025-06-06 20:36:33 +00:00
HX3N
4fa9639802 fix: YostarKR add ReceptionMessageBoard and update templates
Reception is not recognized by the existing templates. Probably Office and Training as well.
2025-06-07 05:35:25 +09:00
uye
eef39ba079 Release v5.17.1 (#12902)
@HX3N for ref
- #12901 
- #12895

---- 
- [x] JP new base
- [x] EN new base
- [x] KR new base
- [x] SSS#7 json
- [x] SSS#7 JP
- [x] SSS#7 EN
- [x] SSS#7 KR
2025-06-07 00:34:57 +08:00
uye
dcf816118f docs: Update CHANGELOG.md 2025-06-07 00:20:36 +08:00
github-actions[bot]
1056ad043c docs: Auto Update Changelogs of v5.17.1 (#12920)
* docs: Auto Generate Changelog of Release v5.17.1

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
2025-06-07 00:07:35 +08:00
Manicsteiner
3864b54b0f fix: YostarJP Infrast mini (#12919) 2025-06-06 23:39:10 +08:00
Lemon-miaow
dd21ff29db chore: feature-request增加陷阱选项 改进en-bug-report标题 (#12917)
* chore: cn-feature-request

* chore: en-feature-request

* chore: 呃呃怎么写description里了

* ci: issue-checkbox-checker

---------

Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
2025-06-06 23:11:12 +08:00
ksharperd
daaf9dc02e docs: update connection doc to reflect latest change. (#12689)
* docs: update connection doc to reflect latest change.

* doc: address pr feedback.
2025-06-06 19:14:07 +08:00
HX3N
89d16721df fix: YostarKR infrast mini (#12915) 2025-06-06 18:37:55 +09:00
github-actions[bot]
90b752fb81 chore: Auto Templates Optimization
Triggered by 8d6b16b200

[skip changelog]
2025-06-06 09:00:56 +00:00
Constrat
8d6b16b200 fix: revert ROI from e71e817577 2025-06-06 11:00:20 +02:00
Constrat
fd0dafcbd2 fix: update mini templates after base update (#12912)
* fix: update mini templates after base update

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-06 16:19:12 +08:00
HX3N
8141c9f197 chore: YostarKR SSS#7 and Infrast update (#12913)
* chore: YostarKR SSS#7 Buffchoose

* chore: YostartKR Infrast ui update
2025-06-06 16:18:20 +08:00
github-actions[bot]
58450ea856 chore: Auto Update Game Resources - 2025-06-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15484600517

[skip changelog]
2025-06-06 06:50:34 +00:00
uye
4a22870377 feat: 远程控制协议增加“轮询间隔”参数
fix #12904
2025-06-06 13:44:58 +08:00
status102
75f4c8d01e perf: 自动战斗编队固定优先编入所有干员, 且按照作业顺序 2025-06-06 13:24:55 +08:00
status102
5a235f92d0 revert 532acde4c3 2025-06-06 13:13:45 +08:00
status102
dfa722d6a9 Revert "fix: 漏了.jpg"
This reverts commit 532acde4c3.

Revert "fix: wpf更新完不重启"

This reverts commit 12c70a0fda.
2025-06-06 13:09:03 +08:00
status102
532acde4c3 fix: 漏了.jpg
[skip changelog]
2025-06-06 13:02:20 +08:00
uye
b4cdd15901 fix: 更新后不重启 2025-06-06 12:59:58 +08:00
status102
12c70a0fda fix: wpf更新完不重启 2025-06-06 12:55:57 +08:00
Constrat
916ad56431 fix: remove unneccesary EnterInfrastSiege for EN
(use default CN)
2025-06-06 03:23:24 +02:00
Constrat
bea6f015a4 feat: Global SSS#7 + EN buffchoose 2025-06-05 22:07:12 +02:00
github-actions[bot]
f616d89f5c chore: Auto Templates Optimization
Triggered by 63502600aa

[skip changelog]
2025-06-05 19:08:22 +00:00
Constrat
63502600aa feat: EN base no beta (#12901) 2025-06-05 20:17:06 +02:00
Manicsteiner
b56ed10424 chore: YostarJP Infrast edits (#12895) 2025-06-05 19:05:21 +02:00
AnnAngela
6b0ba2afed doc: Update CHANGELOG.md 2025-06-05 23:29:49 +08:00
AnnAngela
bd779697b7 doc: 这合的也太快了 2025-06-05 23:28:25 +08:00
uye
094f76f5e5 Release v5.17.0 (#12878) 2025-06-05 23:20:22 +08:00
github-actions[bot]
e7601b1fb7 docs: Auto Update Changelogs of v5.17.0 (#12893)
* docs: Auto Generate Changelog of Release v5.17.0

* docs: Update CHANGELOG.md

* docs: changelog

* docs: changelog

* docs: changelog

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-06-05 23:18:12 +08:00
uye
9b2c051758 chore: 调整 tasks 移动逻辑 2025-06-05 21:59:36 +08:00
status102
59ec169a9d fix: WebStages加载临时补救 2025-06-05 21:36:28 +08:00
status102
59dd27f209 fix: 补回遗漏的WebStages移动的path 2025-06-05 21:10:39 +08:00
status102
505823afbb fix: 补回遗漏的WebStages移动 2025-06-05 20:29:49 +08:00
uye
6f98f3600d feat: 日志压缩包打包 cache/resource 2025-06-05 20:17:38 +08:00
github-actions[bot]
950532604e chore: Auto Update Game Resources - 2025-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15466687154

[skip changelog]
2025-06-05 12:13:09 +00:00
status102
2d20c4e465 chore: 红丝绒 地图 2025-06-05 20:11:04 +08:00
status102
2e63cbfb56 chore: blank 2025-06-05 20:09:51 +08:00
status102
a78d875434 perf: 使用系统回收站替代强制删除 2025-06-05 20:02:08 +08:00
pre-commit-ci[bot]
3acbf33046 chore: Auto update by pre-commit hooks [skip changelog] 2025-06-05 11:35:15 +00:00
SherkeyXD
cd560f1ae1 feat: SideStory「红丝绒」 2025-06-05 19:32:56 +08:00
github-actions[bot]
baf25450ed chore: Auto Update Game Resources - 2025-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15465822477

[skip changelog]
2025-06-05 11:27:49 +00:00
status102
6965c7190a chore: MirrorChyan更新支持判断完整包 2025-06-05 19:08:33 +08:00
uye
ff3d416664 fix: 基建又双叒叕改了 2025-06-05 17:50:52 +08:00
status102
2bb47a5c55 chore: MirrorChyan更新支持判断完整包 2025-06-05 17:40:50 +08:00
status102
943f2bdea3 perf: 允许无OTA包更新 2025-06-05 17:40:10 +08:00
uye
b91bc9dfe8 chore: MirrorChyan更新支持判断完整包 2025-06-05 17:28:41 +08:00
status102
8f096c4aa6 fix: 自动更新无ota包时, 残留旧版本文件 2025-06-05 17:15:32 +08:00
uye
8e5709fa90 debug: IsDebugVersion 2025-06-05 17:11:22 +08:00
uye
6e68b488d0 feat: 跨10版本的情况下不提供自动更新 2025-06-05 17:05:51 +08:00
github-actions[bot]
34a1e8266b chore: Auto Update Game Resources - 2025-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15462342471

[skip changelog]
2025-06-05 08:32:47 +00:00
status102
b814961559 fix: Toast死锁 2025-06-05 16:02:07 +08:00
github-actions[bot]
87642f513d docs: Auto Update Changelogs of v5.17.0-beta.2 (#12886)
* docs: Auto Generate Changelog of Release v5.17.0-beta.2

* docs: changelog

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-05 14:09:21 +08:00
uye
586c87233f style: 格式化 2025-06-05 14:03:54 +08:00
pre-commit-ci[bot]
1d7832c152 chore: Auto update by pre-commit hooks [skip changelog] 2025-06-05 05:02:19 +00:00
uye
78a81f34c3 feat: 清理 map 中的 png 类型截图 2025-06-05 13:00:06 +08:00
github-actions[bot]
0a8f78858f chore: Auto Update Game Resources - 2025-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15458489390

[skip changelog]
2025-06-05 04:32:51 +00:00
github-actions[bot]
2c3d0fd8ec chore: Auto Templates Optimization
Triggered by 79174381b3

[skip changelog]
2025-06-05 03:05:33 +00:00
github-actions[bot]
79174381b3 chore: Auto Update Game Resources - 2025-06-05
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15457330597

[skip changelog]
2025-06-05 02:57:20 +00:00
晓丶梦丶仁
bb8a890194 ci: 折叠 checkboxes 改为正则匹配 2025-06-05 01:57:33 +08:00
晓丶梦丶仁
c609433c8f docs: issue-checkbox-checker 文档 2025-06-05 01:12:50 +08:00
晓丶梦丶仁
b1c9102a8f ci: 优化未读检查、增加 checkboxes 折叠 2025-06-05 01:06:42 +08:00
晓丶梦丶仁
ee66844d9c fix: RA2 Swipe Save 2025-06-05 00:10:33 +08:00
status102
eca2e41c99 feat: 自动战斗费用击杀数缓存, 减少性能消耗 (#12879)
测试条件:待部署1,无技能检测,单个部署等击杀数,不开GPU加速

一场`1-7`的score情况:
- 击杀数未变化
  - 1.0 (1128: 30.87%)
  - 0.99 (2519: 68.94%)
  - 0.98 (5: 0.14%)
  - 0.97 (2: 0.055%)
  - 0.95~0.96 未出现
- 击杀变化
  - 0.94 (1)
  - 0.93 (2)
  - 0.92 (1)
  - 0.86 (1)
  - ...
[asst.log](https://github.com/user-attachments/files/20582872/asst.log)

有缓存:CPU 15~17%

![image](https://github.com/user-attachments/assets/0aa62313-4418-4837-ba0d-c3768aeab04a)


无缓存:CPU 48~52%

![image](https://github.com/user-attachments/assets/b71b838d-089d-4aa0-9e78-23c7d65c52cf)
2025-06-04 22:05:30 +08:00
status102
70fc130f4a refactor: 干员识别存储 (#12881) 2025-06-04 22:04:38 +08:00
status102
68d7f4ab41 fix: 外服使用 AUTO模式 代理倍率等待战斗结束时间过长 2025-06-04 19:05:22 +08:00
status102
45765a3932 perf: 旧config移除简化 2025-06-04 18:37:28 +08:00
status102
4de88035be chore: 提高可读性 2025-06-04 18:37:28 +08:00
status102
e1fea2032a chore: mumu内测路径注释 2025-06-04 18:37:23 +08:00
晓丶梦丶仁
a0ef939648 fix: RA2 swipe save 2025-06-04 16:30:31 +08:00
uye
9ea2c8c8e5 fix: 放弃与驮兽同行,等谁想加识别了再改回来) 2025-06-04 15:15:39 +08:00
status102
4285132852 perf: 击杀数识别RegionOcr使用原图优化 2025-06-04 09:58:50 +08:00
status102
9c79a8d09c feat: 自动战斗费用击杀数缓存, 减少性能消耗 2025-06-04 09:56:49 +08:00
晓丶梦丶仁
fcf026104c chore: MuMuExtras 5.0+ (#12876) 2025-06-04 00:09:15 +08:00
Lemon-miaow
7baad81b84 chore: 移除因勾选"我未仔细阅读"的自动回复 增加文档描述 (#12875)
* chore: 移除自动回复

* docs: 添加issue-not-reading-checker的描述
2025-06-03 22:10:31 +08:00
status102
f72b834d12 fix: 绿票商店跳过赤金及家具灵茧
fix #12872
2025-06-03 20:23:17 +08:00
status102
2c8efbbcb9 fix: 修复feature match sence内无特征点时的死循环问题
c8516a7264
2025-06-03 20:23:17 +08:00
status102
d20b539f06 chore: 特征匹配调试绘制 2025-06-03 20:23:16 +08:00
uye
66d7659e9a fix: 界面窗口标题滚动失效
fix #12854
2025-06-03 20:11:15 +08:00
MistEO
8995b04a22 chore: add mirrorchyan url source (#12869)
* chore: add mirrorchyan url source

* perf: wpf link

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: link

* fix: 吐司通知转义

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-03 19:52:36 +08:00
HY
4d74da147a fix: 繁中服 薩卡茲肉鴿 月度小隊無法開始探索 (#12871)
* fix: 繁中服 薩卡茲肉鴿 月度小隊無法開始探索

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-03 12:29:35 +02:00
HY
4a6f357b73 chore: 繁中服「泰拉飯」活動導航 +「滋味」主題 (#12870)
* chore: 繁中服「泰拉飯」活動導航

* chore: 「滋味」主題截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-03 12:29:11 +02:00
晓丶梦丶仁
e2a9ed7bb0 fix: EN IS4 Squad Name 2025-06-03 18:25:07 +08:00
status102
ecd1153238 chore: warning 2025-06-03 17:56:03 +08:00
status102
2f5d5774be refactor: 持有费用缓存判定拆分 2025-06-03 17:56:03 +08:00
github-actions[bot]
8752da1c06 chore: Auto Update Game Resources - 2025-06-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15412469181

[skip changelog]
2025-06-03 08:33:07 +00:00
status102
a6de3f83ba perf: 特征匹配ASST_DEBUG增加匹配点位绘制 2025-06-03 14:07:21 +08:00
Lemon-miaow
4f2e9c6409 chore: 增加“我未仔细阅读”陷阱选项 (#12864)
* chore: 增加“我未仔细阅读”陷阱选项

* chore: 改进文本

* chore: typo

* chore: 拆分选项

* chore: 改进文本

* chore: ci

* chore: 改进文本

* ci: lock_reason

---------

Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
2025-06-03 12:18:20 +08:00
status102
09bbf1a2ed refactor: LogDebug, LogTrace, LogInfo, LogWarn, LogError补上scope输出 (#12855) 2025-06-02 21:23:53 +08:00
github-actions[bot]
25ecadf0d5 chore: Auto Update Game Resources - 2025-06-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15376777571

[skip changelog]
2025-06-01 15:44:50 +00:00
Constrat
ca2dfda207 chore: YostarEN EP navigation 2025-06-01 17:33:24 +02:00
status102
6e3f402dec style: Logger可读性优化 2025-06-01 22:50:33 +08:00
status102
7944608267 perf: Log.debug是否写入判断优化 2025-06-01 21:59:36 +08:00
HX3N
1663df1263 chore: YostarKR EP navigation (#12852) 2025-06-01 20:16:21 +08:00
github-actions[bot]
3fbc8655de chore: Auto Update Game Resources - 2025-06-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15374283831

[skip changelog]
2025-06-01 11:06:31 +00:00
Manicsteiner
81bc7a3a39 chore: YostarJP EP navigation and i18n changes (#12849) 2025-06-01 11:36:07 +02:00
uye
1d530522b0 chore: using ToastNotification 2025-06-01 16:16:02 +08:00
status102
a33535e073 fix: 7e9806e697 2025-06-01 14:43:57 +08:00
MistEO
7e9806e697 fix: findHomography should have at least 4 points, 优化性能
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-01 14:38:28 +08:00
status102
b814c76135 feat: FeatureMatcher muplti results
link to MaaXYZ/MaaFramework#645

Co-authored-by: MistEO <mistereo@hotmail.com>
2025-06-01 14:32:37 +08:00
status102
4b9098769e Revert "feat: 不允许通过吐司通知启动应用"
This reverts commit ad54d797d1.
2025-06-01 14:04:57 +08:00
status102
f8725f5cd2 perf: 阻止WinRT下Toast主体点击时的启动行为 2025-06-01 14:04:14 +08:00
uye
ad54d797d1 feat: 不允许通过吐司通知启动应用 2025-06-01 13:51:16 +08:00
uye
8fe23adba0 fix: WMI 无效类报错
fix #12844
2025-06-01 11:27:38 +08:00
status102
21fa83b749 docs: 连战次数 -> 代理倍率; 指定次数 描述优化 (#12835)
* docs: `指定次数` & `代理倍率` 描述优化

* chore: Auto update by pre-commit hooks [skip changelog]

* docs: format

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-01 08:52:14 +08:00
status102
5458ae642a perf: 刷理智任务每次开始行动时的文本优化 2025-05-31 23:56:38 +08:00
status102
df7cdf6608 perf: 自动战斗使用战斗列表执行单作业时, 增加一条警告; 追加部分提示的i18n (#12832) 2025-05-31 23:04:46 +08:00
晓丶梦丶仁
d25ac0990f feat: RA store (#12833)
* feat: RA store

* feat: 生息演算商店接入刷点数

* fix: 停止方式
2025-05-31 18:13:14 +08:00
status102
498736ec22 fix: Telegram外部通知请求日志uri调整
fix#11983

咋uri给明文token, 怪哎
2025-05-30 19:42:07 +08:00
status102
d42944e3b5 refactor(wpf): HttpService日志中uri统一使用UriPartial限制 2025-05-30 19:42:07 +08:00
HY
1ab6f93358 fix: 繁中服薩卡茲肉鴿 ocr (#12829) 2025-05-30 12:26:32 +02:00
status102
3f3262a82b i18n: wpf CN 修改描述连战次数 -> 代理倍率 (#12827)
i18n: wpf 修改描述`连战次数` -> `代理倍率`
2025-05-30 17:22:34 +08:00
status102
75464abd73 chore: 生成时清理template, tasks, global缓存 2025-05-30 15:15:51 +08:00
status102
a017fe9a9f fix: wpf任务状态并发修改 2025-05-30 10:59:46 +08:00
status102
3cfc853d10 fix: 非部署动作时, 动作前等待结束后不必要的部署区更新可能触发暂停识别, 导致动作滞后 2025-05-29 22:15:23 +08:00
status102
b516bbf7fd perf: 肉鸽投资达限时, 增加输出提示 (#12818) 2025-05-29 22:04:46 +08:00
uye
2b7ea316d1 feat: 新增 JsonDataHelper,抽离 gui.json 中巨大的 data 类型数据到 data 文件夹中 (#12795) 2025-05-29 21:40:27 +08:00
status102
a59219ea66 refactor: 迁移肉鸽任务部分回调 2025-05-29 10:36:29 +08:00
status102
4fec94f580 chore: else if替换独立if
[skip changelog]
2025-05-29 10:26:10 +08:00
status102
d50c4a4f82 feat: template重复检查 2025-05-28 23:41:51 +08:00
uye
ca65482ca8 Release v5.17.0-beta.1 (#12812)
This reverts commit 38b0742a4a.
2025-05-28 23:41:02 +08:00
uye
4bac9f6c71 Revert "chore: 还原 RA/Fire.json"
This reverts commit 38b0742a4a.
2025-05-28 23:39:07 +08:00
uye
332f890b11 Release v5.17.0-beta.1 (#12785) 2025-05-28 22:43:31 +08:00
uye
38a7f78dd7 docs: Update CHANGELOG.md 2025-05-28 22:43:10 +08:00
uye
38b0742a4a chore: 还原 RA/Fire.json 2025-05-28 22:35:50 +08:00
github-actions[bot]
03a966d66d docs: Auto Update Changelogs of v5.17.0-beta.1 (#12809)
* docs: Auto Generate Changelog of Release v5.17.0-beta.1

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-05-28 19:27:15 +08:00
HY
e1d81e40cb feat: 繁中服 薩卡茲肉鴿 (#12800)
* feat: 更新薩卡茲肉鴿的相關內容

* chore: 補充截圖

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 小修一點目前有遇到的 OCR 錯誤

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 繼續補充截圖 + 調整未開放分隊的名稱

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 最後一張圖片了

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 再修一點 ocr 問題

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-27 17:50:18 +02:00
github-actions[bot]
ef1da986b5 chore: Auto Update Game Resources - 2025-05-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15275374794

[skip changelog]
2025-05-27 12:34:37 +00:00
AnnAngela
8b144fe4de fix: 我面前站不下这许多人
```
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
```
2025-05-27 17:03:57 +08:00
晓丶梦丶仁
db18965bff fix: KR 驮兽旅行家 OCR 2025-05-27 15:08:38 +08:00
status102
59ba947489 Merge tag 'v5.16.10' into dev
v5.16.10
2025-05-26 10:50:30 +00:00
status102
d0abdde209 Release v5.16.10 (#12793) 2025-05-26 18:49:55 +08:00
status102
81c27e1a0a docs: changelog 2025-05-26 18:49:39 +08:00
status102
d7d438e067 fix: BattleQuickFormationOCR in EN 2025-05-26 17:13:13 +08:00
Manicsteiner
bc9afbd20c chore: YostarJP FormationOCR params (#12783) 2025-05-26 17:13:13 +08:00
status102
b9032ccf2e perf: Sync OperBoxNameOCR roi to EN 2025-05-26 17:13:12 +08:00
status102
5bab8053b2 fix: OperBox Roi for EN 2025-05-26 17:13:12 +08:00
status102
b1e064a5db Revert "fix: OperBox Roi for EN"
This reverts commit 4abecee9c7.
2025-05-26 17:13:12 +08:00
Constrat
8eb09c9992 fix: clang
[skip changelog]
2025-05-26 17:13:11 +08:00
status102
1f583c3cbe fix: OperBox Roi for EN 2025-05-26 17:13:11 +08:00
status102
99ea5dc070 fix: 自动编队添加自定义干员时, 点击位置错误 2025-05-26 17:13:11 +08:00
status102
07d2decb11 fix: OperBox ROI 更正
fix #12770
2025-05-26 17:13:10 +08:00
status102
e23c362cf3 refactor: 干员名识别封装 2025-05-26 17:13:10 +08:00
Constrat
4c9a19b81a i18n: EN tweak 2025-05-26 17:13:10 +08:00
github-actions[bot]
17fe445d50 chore: Auto Update Game Resources - 2025-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15192605330

[skip changelog]
2025-05-26 17:13:09 +08:00
uye
87bbd07ecf feat: 更新识别工具逻辑与显示效果 (#12791)
* feat: 仓库识别持久化储存

* feat: 干员识别数据支持启动时显示

* fix: 小工具初始化

* perf: 干员识别使用 VirtualizingWrapPanel,加快加载速度

* perf: 掉落识别使用 VirtualizingWrapPanel,加快加载速度

* feat: 逐项滚动
2025-05-26 16:48:24 +08:00
uye
1803f77325 chore: 重启函数添加 CallerMemberName,UntilIdleAsync 添加消抖 2025-05-26 14:38:38 +08:00
Manicsteiner
4b6c7319bd chore: YostarJP roguelike ocr edit (#12789) 2025-05-25 16:55:25 +02:00
HX3N
1c49ccaf23 fix: global templates are not loaded (#12787) 2025-05-25 15:49:31 +08:00
Loong
15d921e21d chore: bump maa-cli to 0.5.5 (#12664) 2025-05-25 10:13:25 +08:00
Sherkey Asher
515f8b2c5f feat: 模板图允许从子文件夹加载 (#12717)
* rft: 重构模板图位置

* rft: remove all Fire@Reclamation files

* feat: 支持从子文件夹加载模板

* chore: Auto update by pre-commit hooks [skip changelog]

* docs: 更新模板加载逻辑文档

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-24 23:00:18 +08:00
status102
295a6f8753 chore(WpfGui): 防止缓存的任务文件被意外覆盖 2025-05-24 15:46:54 +08:00
status102
3799d6cfd0 fix: BattleQuickFormationOCR in EN 2025-05-24 10:43:22 +08:00
Manicsteiner
13e69e09e9 chore: YostarJP FormationOCR params (#12783) 2025-05-23 20:47:19 +02:00
uye
c58f525155 chore: 调整技能识别保存截图的阈值 2025-05-23 21:52:36 +08:00
uye
f96e41da1d feat: 截图测试可以在自动检测的情况下使用 2025-05-23 20:11:50 +08:00
status102
6a697a7142 perf: Sync OperBoxNameOCR roi to EN 2025-05-23 18:18:11 +08:00
status102
023499b2ba fix: OperBox Roi for EN 2025-05-23 18:18:11 +08:00
status102
c921eafe48 Revert "fix: OperBox Roi for EN"
This reverts commit 4abecee9c7.
2025-05-23 18:18:10 +08:00
Constrat
3c547ebc7a fix: clang
[skip changelog]
2025-05-23 10:32:13 +02:00
status102
4abecee9c7 fix: OperBox Roi for EN 2025-05-23 16:15:08 +08:00
status102
c9d4a1bbac fix: 自动编队添加自定义干员时, 点击位置错误 2025-05-23 15:26:24 +08:00
status102
efe817d45a fix: OperBox ROI 更正
fix #12770
2025-05-23 15:26:15 +08:00
status102
1679cea5c5 refactor: 干员名识别封装 2025-05-23 15:17:55 +08:00
status102
75012b2252 feat: 自动战斗费用识别缓存, 减少性能消耗 (#12765)
* feat: 自动战斗费用识别缓存

* refactor: 返回值格式

* chore: 改个名字

* chore: rename

* fix: 改名改着改着改错了

* fix: var init

* perf: 简化返回值

* fix: template

* fix: platform
2025-05-23 09:02:00 +08:00
Constrat
bc6059b33c i18n: EN tweak 2025-05-22 21:01:27 +02:00
github-actions[bot]
a7f78b5650 chore: Auto Update Game Resources - 2025-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15192605330

[skip changelog]
2025-05-22 17:07:02 +00:00
status102
1d7efcd07b rft: TooltipBlock封装 (#12773)
* rft: TooltipBlock封装

* fix: TooltipText 绑定失败

* rft: 自动战斗提示替换

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-05-22 17:53:22 +08:00
status102
ec6c219673 Release v5.16.9 (#12771) 2025-05-22 17:23:24 +08:00
github-actions[bot]
7a86355a96 chore: Auto Update Game Resources - 2025-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15182548981

[skip changelog]
2025-05-22 09:08:30 +00:00
github-actions[bot]
ac4a1c6b4b chore: Auto Update Game Resources - 2025-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15181422645

[skip changelog]
2025-05-22 08:10:08 +00:00
github-actions[bot]
025c7fa72b chore: Auto Update Game Resources - 2025-05-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15180975779

[skip changelog]
2025-05-22 07:44:49 +00:00
github-actions[bot]
937ce54362 docs: Auto Update Changelogs of v5.16.9 (#12772)
docs: Auto Generate Changelog of Release v5.16.9

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-22 14:23:10 +08:00
status102
7a86697006 perf: 账号切换查找账号最大滑动次数增加到20 2025-05-22 11:01:18 +08:00
status102
4bf790ab3e fix: 理智药使用计数超过实际用量 2025-05-22 11:00:36 +08:00
Lemon-miaow
63fc00a077 feat: 为Copilot添加土司通知 (#12764)
feat: Copilot土司通知
2025-05-22 09:40:52 +08:00
Constrat
549e244605 ci:: remove stale update_resources logic from version script 2025-05-21 22:52:17 +02:00
github-actions[bot]
99d5cf63f8 chore: Auto Update Game Resources - 2025-05-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15171563568

[skip changelog]
2025-05-21 20:08:23 +00:00
status102
604ab8f603 docs: 特征匹配detector遗漏 2025-05-21 11:44:47 +08:00
uye
6840318470 Release v5.16.8 (#12756) 2025-05-21 11:32:27 +08:00
uye
b6a9c5e671 docs: Update CHANGELOG.md 2025-05-21 11:31:38 +08:00
uye
27f471fa07 feat: 别再把 maa 放在 Program Files 里了 2025-05-21 11:28:10 +08:00
github-actions[bot]
f3686ebbd3 docs: Auto Update Changelogs of v5.16.8 (#12757)
* docs: Auto Generate Changelog of Release v5.16.8

* docs: cahgnelgo

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-05-21 11:22:52 +08:00
status102
aa0eaea4dd fix: 自动编队干员Ocr左侧内缩过度 2025-05-21 11:08:49 +08:00
status102
566ff62cb0 fix: RegionOcr阈值过滤膨胀后超出原roi 2025-05-21 11:06:37 +08:00
status102
739110255b fix: 自动编队roi溢出闪退 2025-05-21 09:57:47 +08:00
status102
f6c6fca5ca chore: 修复roi超限
@Lemon-miaow
2025-05-21 09:42:32 +08:00
uye
cb9eae7bed chore: 更新 version.json
[skip changelog]
2025-05-21 01:31:15 +08:00
uye
913c4b1f8a chore: 更新 version.json
[skip changelog]
2025-05-21 01:29:52 +08:00
uye
4fe35cbb81 Release v5.16.7 (#12753) 2025-05-21 01:11:44 +08:00
github-actions[bot]
b9eea18342 docs: Auto Update Changelogs of v5.16.7 (#12754)
* docs: Auto Generate Changelog of Release v5.16.7

* docs: ahcneglog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-05-21 01:10:33 +08:00
uye
0552f8690b chore: 同一格式 2025-05-21 01:10:07 +08:00
pre-commit-ci[bot]
f06657867a chore: Auto update by pre-commit hooks [skip changelog] 2025-05-20 16:48:00 +00:00
status102
0ab8bf1b7a fix: 使用理智药后状态未能更新 2025-05-21 00:44:32 +08:00
status102
b259f13202 fix: 使用理智药超限后减少后无法确认使用理智药 2025-05-21 00:30:01 +08:00
status102
4d554f413e fix: 使用理智药后状态未能更新 2025-05-21 00:30:00 +08:00
uye
01d187a943 chore: 自动战斗循环 BattleStartPre retry 3次 2025-05-21 00:24:09 +08:00
SherkeyXD
e898eee450 chore: task schema update 2025-05-21 00:03:05 +08:00
status102
aeed5b4fa0 chore: 调整战斗列表说明 2025-05-20 20:17:51 +08:00
status102
162908dfdf perf: wpf版本不一致仅允许DebugVersion 2025-05-20 20:17:34 +08:00
uye
ee97a4528f perf: 地图截图改用 jpeg 2025-05-20 20:06:05 +08:00
uye
0228156cde perf: 地图截图使用 360p 保存坐标点,节省储存空间 2025-05-20 19:37:54 +08:00
uye
04a95fb27b chore: 怎么又忘了把 isDebug 还原
[skip changelog]
2025-05-20 18:44:44 +08:00
uye
b5d372ab52 chore: 调整界面提示 2025-05-20 18:44:01 +08:00
uye
32986f40c8 chore: 选择 Mirror酱 更新渠道更新软件版本但未填写 cdk 时 Fallback 至海外源 2025-05-20 17:30:38 +08:00
uye
e4aa0b7a11 perf: 优化 Placeholder 提示 2025-05-20 16:55:19 +08:00
uye
c7cd335a2e chore: 移除 debug
[skip changelog]
2025-05-20 16:24:57 +08:00
uye
81a98638b0 perf: 优化检查更新逻辑 2025-05-20 16:24:15 +08:00
Hao Guan
c92502aed1 fix(mac): 修复Mirror酱资源更新问题 2025-05-20 15:30:25 +08:00
status102
49d4dc78b1 perf: 自动战斗编队优化干员识别, 修复roi未包含完整干员名 (#12740)
* perf: 自动战斗编队优化干员识别

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: task

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-20 14:31:35 +08:00
晓丶梦丶仁
9d85c3c3b4 Release v5.16.6 (#12745) 2025-05-20 13:23:57 +08:00
github-actions[bot]
d96c26471b docs: Auto Update Changelogs of v5.16.6 (#12746)
* docs: Auto Generate Changelog of Release v5.16.6

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-05-20 10:12:06 +08:00
uye
bdc3630b7a feat: 显示资源关卡全开放剩余时间 2025-05-19 01:01:14 +08:00
status102
f76db36364 fix: mac platform 2025-05-18 23:36:54 +08:00
status102
7f4a95280c fix: 自动战斗编队时重复选中同一干员 2025-05-18 20:57:34 +08:00
status102
711041f190 perf: 自动战斗编队时增加干员组名输出 2025-05-18 19:56:25 +08:00
status102
21086dcf68 fix: 部分情况下刷理智连战使用AUTO模式时, 吃理智药溢出理智 2025-05-18 19:56:03 +08:00
uye
2c3b6ac50a feat: 更新解决方案 2025-05-18 19:54:40 +08:00
晓丶梦丶仁
743c51a4b5 fix: 开始行动 点击过快 2025-05-18 18:58:14 +08:00
github-actions[bot]
61ce039b12 chore: Auto Update Game Resources - 2025-05-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15095131924

[skip changelog]
2025-05-18 10:45:40 +00:00
晓丶梦丶仁
f6788e6029 fix: 开始行动 ocr replace 2025-05-18 18:42:09 +08:00
uye
a7ed964cb0 fix: 延迟停止按钮叠加显示 2025-05-18 17:40:28 +08:00
Constrat
a91fc84942 fix: formatting ci prettier and clang
[skip changelog]
2025-05-18 11:21:02 +02:00
萨拉托加
66ef1f0836 fix: ocr fix (#12736)
* fix: ocr fix

* fix: 还原
2025-05-18 15:24:21 +08:00
uye
f0a3bbf16a chore: 修改 not in deploy plan 提示 2025-05-18 15:05:39 +08:00
uye
529fedd95e chore: point_states 改用 unordered_map 2025-05-18 14:06:20 +08:00
uye
434932d39a fix: ci format 2025-05-18 13:35:33 +08:00
uye
6601c6621c chore: 调整截图保存逻辑 2025-05-18 12:23:26 +08:00
筱竹聽雨
7a65be5fa5 chore: 尚蜀夜市招募黑名单添加新约能天使 (#12734)
chore:优化黑名单

将新约能天使加入黑名单
2025-05-18 08:37:21 +08:00
github-actions[bot]
0ca0de9663 chore: Auto Update Game Resources - 2025-05-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15085694756

[skip changelog]
2025-05-17 13:31:06 +00:00
status102
c69ce8ca7a perf: 黄票绿票商店使用特征匹配 2025-05-17 21:21:40 +08:00
status102
9bccb24654 chore: 黄绿票商店任务整理 2025-05-17 21:11:25 +08:00
status102
0d4ffca813 fix: 指定战斗次数后剩余次数小于连战次数时,可能修改到非指定连战次数 2025-05-17 20:03:22 +08:00
晓丶梦丶仁
b13e4d022b Revert "perf: 黄票绿票商店使用特征匹配 (#12718)"
This reverts commit 57888f783e.
2025-05-17 18:54:29 +08:00
晓丶梦丶仁
110847e005 fix: IS4 竣工仪式 2025-05-17 15:13:46 +08:00
Manicsteiner
772424e920 chore: YostarJP ocr fix (#12729) 2025-05-17 11:34:49 +08:00
status102
57888f783e perf: 黄票绿票商店使用特征匹配 (#12718)
* perf: 黄票绿票商店使用特征匹配

* fix: task
2025-05-16 23:52:45 +08:00
Constrat
f4ee5356d1 fix: SSSBuffChoose for YostarEN 2025-05-16 11:42:54 +02:00
Loong
035fdaa6ca chore: find OpenCV features2d and xfeatures2d components (#12714) 2025-05-16 10:17:45 +01:00
status102
2d4c556bc6 perf: 简化基建任务自定义配置路径Readonly 2025-05-16 16:13:46 +08:00
status102
58a3157bb3 fix: FeatureMatch任务无法读取roi 2025-05-16 13:37:40 +08:00
status102
848ebeb747 feat: ProcessTask支持特征匹配 (#12701)
* feat: ProcessTask支持特征匹配

* chore: test

* fix: test

* docs: task文档
2025-05-16 13:13:48 +08:00
uye
989ba7ee52 chore: 矢量突破开始行动 2025-05-16 01:45:09 +08:00
vonnoq
53e3ec8273 fix: 繁中服悖論模擬 (#12711)
* fix: 繁中服悖論模擬

繁中服悖論模擬UI更新

* fix: 繁中服悖論模擬

繁中服悖論模擬UI更新
2025-05-16 00:39:26 +08:00
MistEO
dbc1f1f6da chore: ota.maa.plus -> api.maa.plus 2025-05-15 23:19:13 +08:00
github-actions[bot]
0d57e73bb4 chore: Auto Update Game Resources - 2025-05-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15043371741

[skip changelog]
2025-05-15 11:07:01 +00:00
github-actions[bot]
cf4553fa0a chore: Auto Templates Optimization
Triggered by 0af71a9f32

[skip changelog]
2025-05-15 10:08:39 +00:00
Constrat
0af71a9f32 fix: remove cachie from optimize templates
what's the issue?
2025-05-15 12:07:08 +02:00
pre-commit-ci[bot]
6ab3b6cc56 chore: Auto update by pre-commit hooks [skip changelog] 2025-05-15 18:04:31 +08:00
Constrat
ec1de48e42 fix: update-resources.yml removal from res-update-game 2025-05-15 12:01:30 +02:00
github-actions[bot]
87e43d91f0 chore: Auto Update Game Resources - 2025-05-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15041077348

[skip changelog]
2025-05-15 09:09:57 +00:00
uye
6104d0602b refactor: 重构干员识别
fix #12703
2025-05-15 14:17:53 +08:00
github-actions[bot]
f04b9a6409 chore: Auto Update Game Resources - 2025-05-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15037893648

[skip changelog]
2025-05-15 06:10:32 +00:00
github-actions[bot]
4fbb831c44 chore: Auto Update Game Resources - 2025-05-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15037365361

[skip changelog]
2025-05-15 05:30:34 +00:00
uye
9301ea44b1 chore: 调整 prts 颜色 2025-05-15 00:24:05 +08:00
uye
7e7beabb35 chore: 添加几个专精 ocrReplace 2025-05-14 23:39:13 +08:00
uye
eb5803fef7 Release v5.16.5 (#12688) 2025-05-14 23:22:28 +08:00
github-actions[bot]
24f2cb5cbf docs: Auto Update Changelogs of v5.16.5 (#12698)
* docs: Auto Generate Changelog of Release v5.16.5

* docs: changelog

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
2025-05-14 23:21:53 +08:00
uye
fb8f3b78ad fix: 凹开局干员直升精二选项显示时机错误 2025-05-14 22:25:27 +08:00
status102
abcaf2ee06 perf: 肉鸽不期而遇退出检测加个重试 2025-05-14 20:37:46 +08:00
萨拉托加
03188824f7 Revert "feat: 在肉鸽招募中增加m3作为群奶 (#12353)"
This reverts commit 76a007501a.
2025-05-14 16:54:48 +08:00
status102
340e2798a0 docs: 任务流color_scales注释优化 2025-05-14 16:18:02 +08:00
status102
f9d468f557 perf: 指定类型 2025-05-14 16:15:09 +08:00
status102
e71eb3985d fix: 连战次数乘号匹配失败 2025-05-14 15:55:33 +08:00
uye
5adb76e377 feat: 调整连战输出 2025-05-14 15:06:18 +08:00
Hao Guan
be0ff90b8a feat(mac): 新增基建配置 2025-05-14 13:57:25 +08:00
晓丶梦丶仁
cd723f2210 perf: store loading 2025-05-14 11:29:21 +08:00
晓丶梦丶仁
93ab1cc811 fix: yellow ticket items 2025-05-14 10:25:51 +08:00
uye
92421d464c chore: 简化代码 2025-05-14 10:18:02 +08:00
Loong
260ab6e839 ci: don't check github link (#12667)
* ci: don't check github link

* ci: remove cache

* chore: readd cache

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-05-13 16:39:44 +02:00
status102
7e3e43e81a fix: ocrTask text 2025-05-13 21:43:07 +08:00
status102
3b3056a65f chore: 提示补全 2025-05-13 19:56:45 +08:00
status102
5aa1d74b96 chore: NumberReplace 2025-05-13 19:56:44 +08:00
status102
b9f196c3a1 feat: 特征匹配 (#10966)
* feat: 特征匹配

* chore: 测试内容

* refactor: 根据最新版本重新迁移, 移除多模板

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 测试移除

* fix: platform

* chore: docs

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-13 18:24:16 +08:00
MistEO
c7a8191e03 chore: 再次调整官网细节 2025-05-13 14:27:32 +08:00
MistEO
3a87307bda chore: 调整官网标题 2025-05-13 14:21:05 +08:00
晓丶梦丶仁
f0ff035546 Revert "fix: github change string to int (#12574)"
This reverts commit 539e2b48b2.
2025-05-13 13:23:05 +08:00
晓丶梦丶仁
81504417c7 fix: Store@UnderfundedOCR 2025-05-13 11:37:09 +08:00
晓丶梦丶仁
771c3e53b7 i18n: 绿票、黄票、活动商店 (#12674)
* i18n: en

* i18n: temp

* i18n: jp

* chore: YostarJP buy items

* fix: template task

* fix: en

* i18n: kr

* i18n: tw

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-05-13 11:35:54 +08:00
晓丶梦丶仁
5cc7861d5c fix: store underfunded ocr full match 2025-05-13 00:46:51 +08:00
status102
61f25c94e5 fix: 再铲一屎 2025-05-13 00:03:02 +08:00
github-actions[bot]
8da46bf991 chore: Auto Update Game Resources - 2025-05-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/14973978510

[skip changelog]
2025-05-12 13:49:04 +00:00
晓丶梦丶仁
26f421418e feat: 绿票、黄票、活动商店 (#12586)
* feat: 绿票、黄票商店

* i18n: EN fix

* feat: 活动商店

* perf: baseTask

* perf: 非代币关联性模板

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: baseTask

* chore: sub

* chore: 修改截图

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 第一页买完之后无法进行活动商店购买

* fix: 买完皮肤、干员之后的 swipe

* chore: 修改描述

* perf: 购买商品确认next优化

* perf: 模板图复用

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: 合并部分task

* fix: 代币不足

* fix: 代币不足 ocr

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-05-12 21:45:19 +08:00
uye
82dbe28b5e fix: cache 移动逻辑 2025-05-12 19:42:53 +08:00
status102
cc7c740921 fix: 这回应该铲完了
[skip changelog]
2025-05-12 19:09:00 +08:00
status102
4396c71802 fix: ubuntu unused 2025-05-12 18:59:23 +08:00
status102
351529d4cf fix: 铲屎包了个try
[skip changelog]
2025-05-12 18:49:24 +08:00
status102
eeeca5aa0f fix: 铲屎 2025-05-12 18:44:47 +08:00
uye
37c712637c fix: 修复了屎遇上手动覆盖文件的大聪明爆炸的问题 2025-05-12 18:40:51 +08:00
status102
3c995514a6 chore: mark 2025-05-12 17:37:09 +08:00
uye
5038576b75 chore: 调整 UI 与 Core 版本不一致的解决方案提示 2025-05-12 17:17:15 +08:00
uye
43952444bb chore: 点击任意职业回正列表 2025-05-12 15:49:14 +08:00
uye
1848caf82a refactor: 基建先进行技能识别并返回列表首位,再清空选择
fix #12659
2025-05-12 13:36:01 +08:00
2986 changed files with 230112 additions and 17171 deletions

View File

@@ -5,16 +5,18 @@ body:
- type: checkboxes
id: checks
attributes:
label: 请确认自己完成了下列要求之后再进行勾选,若未完成但勾选将被直接关闭 Issue
label: 请确认自己完成了下列必选项之后再进行勾选,若未完成必选项或勾选了"我未仔细阅读"选项将视为自愿接受被直接关闭 Issue
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
required: false
- label: 我未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我使用的是当前更新版本的最新版,且已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: true
- label: 我已检查了[常见问题](https://maa.plus/docs/zh-cn/manual/faq.html)[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed)确认我的问题未被提及
required: true
required: false
- label: 我使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: false
- label: 我已检查了 [常见问题](https://maa.plus/docs/zh-cn/manual/faq.html), [公告](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) 确认我的问题未被提及
required: false
- type: textarea
id: describe
attributes:
@@ -54,7 +56,7 @@ body:
label: 配置信息
description: |
请说明操作系统及版本、模拟器品牌、模拟器分辨率、DPI、帧率
若正在使用 MuMu 12 或雷电 9请说明截图增强是否开启
若正在使用 MuMu 或雷电 9请说明截图增强是否开启
最后请说明 GPU 加速推理是否开启,若开启请提供 GPU 型号。
validations:
required: true

View File

@@ -5,16 +5,18 @@ body:
- type: checkboxes
id: checks
attributes:
label: 在提问之前...
label: 请确认自己完成了下列必选项之后再进行勾选,若未完成必选项或勾选了"我未仔细阅读"选项将视为自愿接受被直接关闭 Issue
options:
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我基本确定这是一个新功能/建议,而不是遇到了 Bug不确定的话请附上日志
required: true
- label: 使用的是当前更新版本的最新版,且已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) 和 [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容,确认我的建议未被提及
required: true
- label: 已检查了 [公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的建议未被提及
required: true
required: false
- label: 未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: false
- label: 我使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容,确认我的建议未被提及
required: false
- label: 我已检查了 [常见问题](https://maa.plus/docs/zh-cn/manual/faq.html), [公告](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) 确认我的建议未被提及
required: false
- type: textarea
id: describe
attributes:

View File

@@ -8,15 +8,17 @@ body:
label: 在提问之前...
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
required: false
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
required: false
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: true
required: false
- label: 我未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 我正在使用最新的 MAA 公测版本和最新的官版雷电 9 模拟器
required: true
required: false
- label: 我已参考文档确定安装路径、实例编号填写正确,并确认在关闭截图增强模式后问题消失
required: true
required: false
- label: 我未开启高帧率,且模拟器帧数设置为 60
required: false
- type: textarea

View File

@@ -8,16 +8,18 @@ body:
label: 在提问之前...
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
required: false
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
required: false
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: true
required: false
- label: 我未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 我正在使用最新的 MAA 公测版本和最新的官版或方舟专版 MuMu 模拟器
required: true
required: false
- label: 我已参考文档确定安装路径、实例编号、屏幕编号填写正确,并确认在关闭截图增强模式后问题消失
required: true
- label: 我未开启后台保活,模拟器帧数为 60显存使用策略为“画面表现更好”
required: false
- label: 我未开启动态帧率及后台保活,模拟器帧数为 60显存使用策略为“画面表现更好”
required: false
- type: textarea
id: describe

View File

@@ -1,24 +1,23 @@
name: Bug Report (in English)
description: >-
Recognition errors, operation abnormalities,
connection errors, etc.
description: Recognition errors, operation abnormalities, connection errors, etc.
labels: ["bug"]
body:
- type: checkboxes
id: checks
attributes:
label: Before raising the issue...
description: |
Please ensure that you have completed the requirements before checking the box.
Issues with the checkbox checked but not completed will be directly closed.
label: |
Please ensure that you have completed the required items before checking the boxes.
Issues with incomplete required items or with the 'I did not read carefully' option checked will be considered voluntary acceptance of direct closure.
options:
- label: I understand that Issues are for feedback and problem solving, not trolling the comments section, and will provide as much information as possible to help solve the problem.
required: true
- label: I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list. Instead of "Some suggestions", "Stuck", etc.
required: true
- label: I am using the latest version of the current update version and have reviewed both the [Unreleased changes](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) and there is no mention of the bug being fixed.
- label: I am using the latest version of the current update version, and have reviewed the [update content](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) released to date, [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) unreleased update content and there is no mention of the bug being fixed.
required: true
- label: I have reviewed the [FAQs](https://maa.plus/docs/en-us/manual/faq.html), [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my issue/bug has not been mentioned.
- label: I have checked all the options without carefully reading the content and believe this will not affect issue resolution.
required: false
- label: I have reviewed the [FAQs](https://maa.plus/docs/en-us/manual/faq.html), [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my issue has not been mentioned.
required: true
- type: textarea
id: describe
@@ -43,7 +42,7 @@ body:
id: logs
attributes:
label: Log and config files
description: >-
description: |
**Please locate the Generate Support Payload button under MAA Settings -> Issue Report, click the button, and upload the generated zip file**
**Please drag and drop the full file in, not your own cuttings or copies; compress it before uploading if too large.**
@@ -59,7 +58,7 @@ body:
label: Configuration information
description: |
Please specify the operating system and version, emulator brand, emulator resolution, DPI, and frame rate;
If you are using MuMu 12 or LDPlayer 9, please specify whether Screenshot Enhancement is enabled;
If you are using MuMu or LDPlayer 9, please specify whether Screenshot Enhancement is enabled;
Finally, please specify whether GPU accelerated inference is enabled, and if so, provide the GPU model.
validations:
required: true
@@ -67,7 +66,7 @@ body:
id: screenshots
attributes:
label: Screenshots or recordings
description: >-
description: |
In the `debug` directory, within the functionally categorized folders,
there are some error images captured automatically.
If related to this issue, please upload them together.
@@ -84,14 +83,13 @@ body:
and their aspect ratio and resolution are inconsistent,
which makes it harder for us to debug.
If the file siz is too large, you may compress it before uploading.
If the file size is too large, you may compress it before uploading.
validations:
required: false
- type: textarea
id: others
attributes:
label: Anthing else?
label: Anything else?
description: |
Anything that will give us more insight into the problem you are having.
validations:

View File

@@ -5,21 +5,19 @@ body:
- type: checkboxes
id: checks
attributes:
label: Before raising the issue...
label: |
Please ensure that you have completed the required items before checking the boxes.
Issues with incomplete required items or with the 'I did not read carefully' option checked will be considered voluntary acceptance of direct closure.
options:
- label: |
I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list.
Instead of "Some suggestions", "Stuck", etc.
- label: I'm probably sure this is a new feature/suggestion and not a bug encountered (please attach logs if you're not sure).
required: true
- label: |
I'm probably sure this is a new feature/suggestion and not a bug encountered (please attach logs if you're not sure).
- label: I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list. Instead of "Some suggestions", "Stuck", etc.
required: true
- label: |
I am using the latest version of the current update version and have reviewed both the [Unreleased changes](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) and the [Pull requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls),
but there is no mention of this feature/suggestion being added.
- label: I am using the latest version of the current update version, and have reviewed the [update content](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) released to date, [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) unreleased update content and there is no mention of this feature/suggestion being added.
required: true
- label: |
I have reviewed the [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my feature/suggestion has not been mentioned.
- label: I have checked all the options without carefully reading the content and believe this will not affect issue resolution.
required: false
- label: I have reviewed the [FAQs](https://maa.plus/docs/en-us/manual/faq.html), [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my feature/suggestion has not been mentioned.
required: true
- type: textarea
id: describe

View File

@@ -7,8 +7,8 @@ updates:
commit-message:
prefix: ci
assignees:
- constrat
- AnnAngela
- Constrat
groups:
github-actions:
patterns:

View File

@@ -552,7 +552,7 @@ comments:
Your log did not upload successfully, please re-upload it."
mode: add
- name: Upload failed
regexes: "^[^`]*(`[^`]+`[^`]*)*\\[Uploading[^\\]]*…\\]\\(\\)"
regexes: "^[^`]*(`[^`]+`[^`]*)*(\\[Uploading[^\\]]*…\\]\\(\\)|<!-- Failed to upload|<!-- Uploading)"
content: "你有一些文件没有上传成功,请重新上传。\n\n\
You have some files that did not upload successfully, please re-upload them."
mode: add

View File

@@ -90,7 +90,7 @@ jobs:
echo >> CHANGELOG.md
echo "**Full Changelog**: [$last_tag -> $this_tag](https://github.com/MaaAssistantArknights/MaaAssistantArknights/compare/${last_tag}...${this_tag})" >> CHANGELOG.md
echo >> CHANGELOG.md
echo "[已有 Mirror酱 CDK前往 Mirror酱 高速下载](https://mirrorchyan.com/zh/projects?rid=MAA)" >> CHANGELOG.md
echo "[已有 Mirror酱 CDK前往 Mirror酱 高速下载](https://mirrorchyan.com/zh/projects?rid=MAA&source=maagh-release)" >> CHANGELOG.md
- name: Upload changelog to Github
uses: actions/upload-artifact@v4
@@ -308,7 +308,7 @@ jobs:
ln -sv usr/share/maa/maa Maa.AppDir/AppRun
mkdir -pv Maa.AppDir/usr/share/metainfo/
cp -v tools/AppImage/io.github.maaassistantarknights.maaassistantarknights.metainfo.xml Maa.AppDir/usr/share/metainfo/
wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
# appimagetool with embedded runtime does not support cross build, till AppImage/appimagetool 7a10b8
wget "https://github.com/AppImage/type2-runtime/releases/download/old/runtime-fuse3-${{ matrix.arch }}"
chmod a+x appimagetool-x86_64.AppImage
@@ -560,7 +560,7 @@ jobs:
find . -type f | while read f; do mv -fvt . $f; done
- name: Release to Github
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v2.3.2
with:
body_path: CHANGELOG.md
files: |

91
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,91 @@
name: "CodeQL Advanced"
on:
pull_request:
branches: ["dev"]
schedule:
- cron: "45 11 * * *"
workflow_dispatch:
permissions:
actions: write
contents: read
packages: read
security-events: write
jobs:
analyze-none:
name: Analyze CI and MaaWebsite
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup CodeQL
uses: github/codeql-action/init@v3
with:
languages: javascript-typescript,actions
build-mode: none
- name: Run CodeQL
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-none"
analyze-manual:
name: Analyze MaaCore and MaaWpfGui
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
show-progress: false
- name: Setup build environments
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git submodule update --init --depth 1 3rdparty/EmulatorExtras
dotnet restore
python3 maadeps-download.py x64-windows
- name: Create fake event file
shell: bash
run: cp -v "$GITHUB_EVENT_PATH" ./event.json
- name: Setup CodeQL
uses: github/codeql-action/init@v3
with:
languages: c-cpp,csharp
build-mode: manual
- name: Build MAA
shell: pwsh
run: |
$env:GITHUB_WORKFLOW = 'dev-build-win'
$env:GITHUB_EVENT_PATH = "$pwd\\event.json"
$env:GITHUB_REF = "refs/heads/not_master"
$env:MAA_BUILDER_MAA_VERSION = 'v0.0.1'
./build.cmd DevBuild
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run CodeQL
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-manual"
- name: Delete old caches
shell: pwsh
run: |
$oldCaches = gh cache list --key codeql --order asc --json key | ConvertFrom-Json | Select-Object -SkipLast 1
foreach ($cache in $oldCaches) {
if ($cache.key) {
Write-Host "Deleting cache: $($cache.key)"
gh cache delete $cache.key
}
}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,152 @@
name: Auto Close not reading issues or Fold checkboxes
on:
issues:
types: [opened]
jobs:
check-then-close-or-fold:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Check for duplicate issues in last hour
id: duplicate-check
uses: actions/github-script@v7
with:
script: |
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
const currentIssueCreatedAt = new Date(context.payload.issue.created_at);
const issueAuthor = context.payload.issue.user.login;
// 重新获取该用户最近的 issues
const { data: userIssues } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
creator: issueAuthor,
state: 'all',
since: oneHourAgo.toISOString(),
per_page: 30
});
// 过滤出1小时内创建的其他 issues排除当前 issue
const recentIssues = userIssues.filter(issue => {
const issueCreatedAt = new Date(issue.created_at);
return issue.number !== context.issue.number &&
issueCreatedAt >= oneHourAgo &&
issueCreatedAt < currentIssueCreatedAt;
});
if (recentIssues.length > 0) {
// 给当前 issue 添加标签
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['rapid-submission']
});
// 给1小时内的其他 issues 也添加标签
for (const issue of recentIssues) {
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['rapid-submission']
});
console.log(`Added rapid-submission label to issue #${issue.number}`);
} catch (error) {
console.log(`Failed to add label to issue #${issue.number}: ${error.message}`);
}
}
}
- name: Check checkbox status
id: unread-checkbox-check
uses: actions/github-script@v7
with:
script: |
// 找不到###就算了
if (!/###([^#]+)###/.test(context.payload.issue.body)) {
return false;
}
var checkList = /###([^#]+)###/.exec(context.payload.issue.body)[1];
const UnreadRegexCn = /- \[x\]\s*.*?我.*未仔细阅读/i;
const UnreadRegexCn_ = /- \[ \]\s*.*?我.*未仔细阅读/i;
if (/- \[(x| )\]\s*.*?[\u4e00-\u9fa5]+/i.test(checkList)) { // 中英区分
if (UnreadRegexCn.test(checkList)) {
return true;
}
checkList = checkList.replace(UnreadRegexCn_, "");
return /- \[ \]\s*.*?[\u4e00-\u9fa5]+/i.test(checkList);
}
const texts = [
'I have checked all the options without carefully reading the content and believe this will not affect issue resolution.'];
return texts.some(text => new RegExp(`- \\[x\\]\\s*${text}`).test(context.payload.issue.body));
- name: Close and lock issue
if: steps.unread-checkbox-check.outputs.result == 'true'
uses: actions/github-script@v7
with:
script: |
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
state: 'closed',
state_reason: 'not_planned'
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['low-quality-report']
});
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: '因为未阅读模板提示并正确提交,触发了自动关闭规则\n\nBecause the template prompt was not read and submitted correctly, the automatic closing rule was triggered'
});
- name: Fold checkboxes
if: steps.unread-checkbox-check.outputs.result == 'false'
uses: actions/github-script@v7
with:
script: |
const originalBody = context.payload.issue.body;
if (originalBody.includes('<details><summary>Checkboxes</summary>\n\n')) {
return;
}
const checkboxSectionRegex_cn_bug = /([\s\S]*?)(### 问题描述\n\n)/;
const checkboxSectionRegex_cn_feat = /([\s\S]*?)(### 说说你遇到的问题?\n\n)/;
const checkboxSectionRegex_en_bug = /([\s\S]*?)(### Description\n\n)/;
const checkboxSectionRegex_en_feat = /([\s\S]*?)(### The problems you have encountered?\n\n)/;
const foldedBody_cn_bug = originalBody.replace(
checkboxSectionRegex_cn_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_cn_feat = foldedBody_cn_bug.replace(
checkboxSectionRegex_cn_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_en_bug = foldedBody_cn_feat.replace(
checkboxSectionRegex_en_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody = foldedBody_en_bug.replace(
checkboxSectionRegex_en_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: foldedBody
});

View File

@@ -45,14 +45,11 @@ jobs:
- name: Check dead links
uses: lycheeverse/lychee-action@v2
with:
# 仅检查内部链接和 Github 相关链接
# 仅检查内部链接,排除所有外部链接
args: >
--verbose --no-progress
--cache --max-cache-age 1d --cache-exclude-status '429, 500..599'
--exclude 'https?://.*'
--include 'https?://github\.com/.*'
--include 'https?://raw\.githubusercontent\.com/.*'
--include 'https?://user-images\.githubusercontent\.com/.*'
--exclude-path 'docs/zh-tw/manual/introduction/introduction_old.md'
--exclude-path 'docs/ja-jp/manual/introduction/introduction_old.md'
--exclude 'files/MAA_Runtime_Fix_Pwsh.ps1$'

View File

@@ -55,16 +55,17 @@ jobs:
with:
python-version: "3.11"
- name: Cache Python packages
id: cache_python
if: steps.check_push.outputs.is_pr != 'True' && always()
uses: actions/cache@v4
with:
path: ${{ env.pythonLocation }}/lib/python3.11/site-packages
key: ${{ runner.os }}-pip-optimize-templates-${{ hashFiles('./tools/OptimizeTemplates/requirements.txt') }}
# - name: Cache Python packages
# id: cache_python
# if: steps.check_push.outputs.is_pr != 'True' && always()
# uses: actions/cache@v4
# with:
# path: ${{ env.pythonLocation }}/lib/python3.11/site-packages
# key: ${{ runner.os }}-pip-optimize-templates-${{ hashFiles('./tools/OptimizeTemplates/requirements.txt') }}
- name: Install dependencies
if: steps.check_push.outputs.is_pr != 'True' && steps.cache_python.outputs.cache-hit != 'true'
# if: steps.check_push.outputs.is_pr != 'True' && steps.cache_python.outputs.cache-hit != 'true'
if: steps.check_push.outputs.is_pr != 'True'
run: |
pip install -r tools/OptimizeTemplates/requirements.txt

View File

@@ -16,12 +16,12 @@ on:
limit_maa:
description: "Number of releases to fetch from MaaAssistantArknights"
required: true
default: 10
default: "10"
type: number
limit_maarelease:
limit_mr:
description: "Number of releases to fetch from MaaRelease"
required: true
default: 10
default: "10"
type: number
jobs:
@@ -298,8 +298,17 @@ jobs:
run: |
mkdir -pv build-ota && cd build-ota
gh release list --repo 'MaaAssistantArknights/MaaAssistantArknights' --limit ${{ inputs.limit_maa }} | tee ./release_maa.txt
gh release list --repo "${{ github.repository_owner }}/MaaRelease" --limit ${{ inputs.limit_maarelease }} | tee ./release_mr.txt
# Convert inputs to integers
limit_maa=${{ inputs.limit_maa || 10 }}
limit_maa=${limit_maa%.*}
echo "Parsed limit_maa: $limit_maa"
limit_mr=${{ inputs.limit_mr || 10 }}
limit_mr=${limit_mr%.*}
echo "Parsed limit_mr: $limit_mr"
gh release list --repo 'MaaAssistantArknights/MaaAssistantArknights' --limit $limit_maa | tee ./release_maa.txt
gh release list --repo "${{ github.repository_owner }}/MaaRelease" --limit $limit_mr | tee ./release_mr.txt
echo ${{ needs.build-win-nightly.outputs.tag }} > ./config
cat ./release_maa.txt | awk '{ print $1 }' > ./tags_maa.txt

View File

@@ -323,20 +323,12 @@ jobs:
branch: ${{ github.ref }}
github_token: ${{ secrets.MAA_RESOURCE_SYNC }}
- name: Update OTA resource
if: steps.update_version.outputs.update_resources == 'True'
env:
GH_TOKEN: ${{ secrets.MISTEOWORKFLOW }}
run: |
gh workflow --repo MaaAssistantArknights/MaaRelease run update-resource.yml
# - name: Delete cache
# if: always()
# - name: Update OTA resource
# if: steps.update_version.outputs.update_resources == 'True'
# env:
# GH_TOKEN: ${{ github.token }}
# GH_TOKEN: ${{ secrets.MISTEOWORKFLOW }}
# run: |
# echo "Deleting the cache..."
# gh cache delete
# gh workflow --repo MaaAssistantArknights/MaaRelease run update-resource.yml
- name: Add cancelled status
if: steps.update_version.outputs.changes != 'True' || steps.add_files.outputs.have_commits != 'True'

View File

@@ -49,4 +49,3 @@ jobs:
git status
git commit -m "$commit_msg" || exit 0
git push

View File

@@ -79,6 +79,14 @@ jobs:
- name: Show environment
run: echo ${{ env.AZURE_TARGET_ENV }}
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
if: env.AZURE_TARGET_ENV == 'prod'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: "."
publish_branch: gh-pages
- name: Deploy to Azure (prod)
id: deploy-prod
uses: Azure/static-web-apps-deploy@v1

7
.gitignore vendored
View File

@@ -467,3 +467,10 @@ Thumbs.db
# macOS Finder Shit
.DS_Store
# MaaSupportExtension config
/config/maa_pi_config.json
# MaaBuilder
.github/workflows/release-maa-win.yml
.github/workflows/dev-build-win.yml

View File

@@ -1,127 +1,123 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Build Schema",
"$ref": "#/definitions/build",
"definitions": {
"build": {
"type": "object",
"properties": {
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
},
"Help": {
"type": "boolean",
"description": "Shows the help text for this build assembly"
},
"Host": {
"type": "string",
"description": "Host for execution. Default is 'automatic'",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitbucket",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
},
"NoLogo": {
"type": "boolean",
"description": "Disables displaying the NUKE logo"
},
"Partition": {
"type": "string",
"description": "Partition to use on CI"
},
"Plan": {
"type": "boolean",
"description": "Shows the execution plan (HTML)"
},
"Profile": {
"type": "array",
"description": "Defines the profiles to load",
"items": {
"type": "string"
}
},
"Root": {
"type": "string",
"description": "Root directory during build execution"
},
"Skip": {
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
"type": "string",
"enum": [
"Default",
"DevBuild",
"DevBuildDefault",
"DevBuildReleaseSimulation",
"ReleaseMaa",
"SetMaaChangeLog",
"SetPackageBundled",
"SetVersion",
"UseClean",
"UseCommitVersion",
"UseMaaChangeLog",
"UseMaaDevBundle",
"UseMaaRelease",
"UsePublishArtifact",
"UsePublishRelease",
"UseRsVersion",
"UseTagVersion",
"WithCompileCoreRelease",
"WithCompileWpfRelease",
"WithSyncRes"
]
}
},
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
"type": "string",
"enum": [
"Default",
"DevBuild",
"DevBuildDefault",
"DevBuildReleaseSimulation",
"ReleaseMaa",
"SetMaaChangeLog",
"SetPackageBundled",
"SetVersion",
"UseClean",
"UseCommitVersion",
"UseMaaChangeLog",
"UseMaaDevBundle",
"UseMaaRelease",
"UsePublishArtifact",
"UsePublishRelease",
"UseRsVersion",
"UseTagVersion",
"WithCompileCoreRelease",
"WithCompileWpfRelease",
"WithSyncRes"
]
}
},
"Verbosity": {
"type": "string",
"description": "Logging verbosity during build execution. Default is 'Normal'",
"enum": ["Minimal", "Normal", "Quiet", "Verbose"]
}
}
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"Host": {
"type": "string",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitbucket",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
},
"ExecutableTarget": {
"type": "string",
"enum": [
"Default",
"DevBuild",
"DevBuildDefault",
"DevBuildReleaseSimulation",
"ReleaseMaa",
"SetMaaChangeLog",
"SetPackageBundled",
"SetVersion",
"UseClean",
"UseCommitVersion",
"UseMaaChangeLog",
"UseMaaDevBundle",
"UseMaaRelease",
"UsePublishArtifact",
"UsePublishRelease",
"UseRsVersion",
"UseTagVersion",
"WithCompileCoreRelease",
"WithCompileWpfRelease",
"WithSyncRes"
]
},
"Verbosity": {
"type": "string",
"description": "",
"enum": [
"Verbose",
"Normal",
"Minimal",
"Quiet"
]
},
"NukeBuild": {
"properties": {
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
},
"Help": {
"type": "boolean",
"description": "Shows the help text for this build assembly"
},
"Host": {
"description": "Host for execution. Default is 'automatic'",
"$ref": "#/definitions/Host"
},
"NoLogo": {
"type": "boolean",
"description": "Disables displaying the NUKE logo"
},
"Partition": {
"type": "string",
"description": "Partition to use on CI"
},
"Plan": {
"type": "boolean",
"description": "Shows the execution plan (HTML)"
},
"Profile": {
"type": "array",
"description": "Defines the profiles to load",
"items": {
"type": "string"
}
},
"Root": {
"type": "string",
"description": "Root directory during build execution"
},
"Skip": {
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
"$ref": "#/definitions/ExecutableTarget"
}
},
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
"$ref": "#/definitions/ExecutableTarget"
}
},
"Verbosity": {
"description": "Logging verbosity during build execution. Default is 'Normal'",
"$ref": "#/definitions/Verbosity"
}
}
}
},
"allOf": [
{},
{
"$ref": "#/definitions/NukeBuild"
}
]
}

View File

@@ -6,7 +6,7 @@ src/maa-cli
src/MaaMacGui
website/
docs/
# docs/
resource/Arknights-Tile-Pos/
tools/OptimizeTemplates/optimize_templates.json

View File

@@ -12,6 +12,12 @@
"parser": "yaml",
"tabWidth": 2
}
},
{
"files": ["**/*.md"],
"options": {
"tabWidth": 2
}
}
]
}

View File

@@ -2,7 +2,8 @@
"json.schemas": [
{
"fileMatch": [
"resource/tasks.json"
"resource/tasks/**/*.json",
"resource/global/**/resource/tasks/**/*.json",
],
"url": "./docs/maa_tasks_schema.json"
}
@@ -11,5 +12,8 @@
"MaaDeps/vcpkg/buildtrees": true,
"MaaDeps/vcpkg/packages": true
},
"files.associations": {
"**/resource/tasks/**/*.json": "jsonc"
},
"C_Cpp.exclusionPolicy": "checkFilesAndFolders"
}

View File

@@ -1,8 +0,0 @@
#pragma once
// IWYU pragma: begin_exports
#include "common/types.hpp"
#include "parser5/parser5.hpp"
// IWYU pragma: end_exports

View File

@@ -19,6 +19,7 @@ namespace json
// ****************************
template <
bool accept_jsonc = false,
typename string_t = default_string_t,
typename parsing_t = void,
typename accel_traits = _packed_bytes::packed_bytes_trait_max>
@@ -56,6 +57,7 @@ private:
bool skip_string_literal_with_accel();
bool skip_whitespace() noexcept;
bool skip_comment() noexcept;
bool skip_digit();
bool skip_unicode_escape(uint16_t& pair_high, string_t& result);
@@ -74,14 +76,20 @@ auto parse(const parsing_t& content);
template <typename char_t>
auto parse(char_t* content);
template <typename parsing_t>
auto parsec(const parsing_t& content);
template <typename char_t>
auto parsec(char_t* content);
template <
typename istream_t,
typename = std::enable_if_t<
std::is_base_of_v<std::basic_istream<typename istream_t::char_type>, istream_t>>>
auto parse(istream_t& istream, bool check_bom);
auto parse(istream_t& istream, bool check_bom = false, bool with_commets = false);
template <typename ifstream_t = std::ifstream, typename path_t = void>
auto open(const path_t& path, bool check_bom = false);
auto open(const path_t& path, bool check_bom = false, bool with_commets = false);
namespace literals
{
@@ -105,15 +113,17 @@ const basic_value<string_t> invalid_value();
// * parser impl *
// *************************
template <typename string_t, typename parsing_t, typename accel_traits>
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>>
parser<string_t, parsing_t, accel_traits>::parse(const parsing_t& content)
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse(const parsing_t& content)
{
return parser<string_t, parsing_t, accel_traits>(content.cbegin(), content.cend()).parse();
return parser<accept_jsonc, string_t, parsing_t, accel_traits>(content.cbegin(), content.cend())
.parse();
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_traits>::parse()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse()
{
if (!skip_whitespace()) {
return std::nullopt;
@@ -135,8 +145,7 @@ inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_tr
return std::nullopt;
}
// After the parsing is complete, there should be no more content other than
// spaces behind
// After the parsing is complete, there should be no more content other than spaces behind
if (skip_whitespace()) {
return std::nullopt;
}
@@ -144,8 +153,8 @@ inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_tr
return result_value;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_value()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_value()
{
switch (*_cur) {
case 'n':
@@ -176,8 +185,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_va
}
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_null()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_null()
{
for (const auto& ch : _utils::null_string<string_t>()) {
if (_cur != _end && *_cur == ch) {
@@ -191,8 +200,9 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_nu
return basic_value<string_t>();
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_boolean()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_boolean()
{
switch (*_cur) {
case 't':
@@ -220,8 +230,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_bo
}
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_number()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_number()
{
const auto first = _cur;
if (*_cur == '-') {
@@ -259,8 +269,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_nu
return basic_value<string_t>(basic_value<string_t>::value_type::number, string_t(first, _cur));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_string()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_string()
{
auto string_opt = parse_stdstring();
if (!string_opt) {
@@ -271,8 +281,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_st
std::move(string_opt).value());
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_array()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_array()
{
if (*_cur == '[') {
++_cur;
@@ -296,6 +306,12 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ar
return invalid_value<string_t>();
}
if constexpr (accept_jsonc) {
if (*_cur == ']') {
break;
}
}
basic_value<string_t> val = parse_value();
if (!val.valid() || !skip_whitespace()) {
@@ -322,8 +338,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ar
return basic_array<string_t>(std::move(result));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_object()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_object()
{
if (*_cur == '{') {
++_cur;
@@ -347,6 +363,12 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ob
return invalid_value<string_t>();
}
if constexpr (accept_jsonc) {
if (*_cur == '}') {
break;
}
}
auto key_opt = parse_stdstring();
if (key_opt && skip_whitespace() && *_cur == ':') {
@@ -389,8 +411,9 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ob
return basic_object<string_t>(std::move(result));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<string_t> parser<string_t, parsing_t, accel_traits>::parse_stdstring()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<string_t>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_stdstring()
{
if (*_cur == '"') {
++_cur;
@@ -477,8 +500,8 @@ inline std::optional<string_t> parser<string_t, parsing_t, accel_traits>::parse_
return std::nullopt;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_unicode_escape(
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_unicode_escape(
uint16_t& pair_high,
string_t& result)
{
@@ -574,8 +597,9 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_unicode_escape(
return true;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_string_literal_with_accel()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool
parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_string_literal_with_accel()
{
if constexpr (sizeof(*_cur) != 1) {
return false;
@@ -602,8 +626,8 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_string_literal_with_
return _cur != _end;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcept
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_whitespace() noexcept
{
while (_cur != _end) {
switch (*_cur) {
@@ -613,6 +637,17 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcep
case '\n':
++_cur;
break;
case '/':
if constexpr (accept_jsonc) {
if (!skip_comment()) {
return false;
}
// else continue;
}
else {
return false;
}
break;
case '\0':
return false;
default:
@@ -622,8 +657,59 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcep
return false;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_digit()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
bool json::parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_comment() noexcept
{
if (_cur == _end || *_cur != '/') {
return false;
}
if (++_cur == _end) {
return false;
}
enum class comment_type
{
invalid,
line,
block,
} t = comment_type::invalid;
switch (*_cur++) {
case '/':
t = comment_type::line;
break;
case '*':
t = comment_type::block;
break;
default:
return false;
}
while (_cur != _end) {
switch (*_cur++) {
case '\n':
if (t == comment_type::line) {
return true;
}
break;
case '*':
if (t == comment_type::block && _cur != _end && *_cur == '/') {
++_cur;
return true;
}
break;
default:
break;
}
}
// _cur == _end
return t == comment_type::line;
}
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_digit()
{
// At least one digit
if (_cur != _end && std::isdigit(*_cur)) {
@@ -653,7 +739,7 @@ template <typename parsing_t>
auto parse(const parsing_t& content)
{
using string_t = std::basic_string<typename parsing_t::value_type>;
return parser<string_t, parsing_t>::parse(content);
return parser<false, string_t, parsing_t>::parse(content);
}
template <typename char_t>
@@ -663,7 +749,7 @@ auto parse(char_t* content)
}
template <typename istream_t, typename _>
auto parse(istream_t& ifs, bool check_bom)
auto parse(istream_t& ifs, bool check_bom, bool with_commets)
{
using string_t = std::basic_string<typename istream_t::char_type>;
@@ -686,11 +772,11 @@ auto parse(istream_t& ifs, bool check_bom)
str.assign(str.begin() + 3, str.end());
}
}
return parse(str);
return with_commets ? parsec(str) : parse(str);
}
template <typename ifstream_t, typename path_t>
auto open(const path_t& filepath, bool check_bom)
auto open(const path_t& filepath, bool check_bom, bool with_commets)
{
using char_t = typename ifstream_t::char_type;
using string_t = std::basic_string<char_t>;
@@ -701,11 +787,24 @@ auto open(const path_t& filepath, bool check_bom)
if (!ifs.is_open()) {
return return_t(std::nullopt);
}
auto opt = parse(ifs, check_bom);
auto opt = parse(ifs, check_bom, with_commets);
ifs.close();
return opt;
}
template <typename parsing_t>
auto parsec(const parsing_t& content)
{
using string_t = std::basic_string<typename parsing_t::value_type>;
return parser<true, string_t, parsing_t>::parse(content);
}
template <typename char_t>
auto parsec(char_t* content)
{
return parsec(std::basic_string_view<std::decay_t<char_t>> { content });
}
namespace literals
{
inline value operator""_json(const char* str, size_t len)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,108 +1,141 @@
## v5.16.4
## v5.23.0
### 修复 | Fix
### 夏活第二弹 | Highlight
* 修复台服基建干员列表回正错误 (#12652) @status102
本次更新带来了大家期盼已久的多项适配,一起来看看吧:
## v5.16.3
#### 集成战略 #6「岁的界园志异」
在这个版本,我们优化了自适应调整连战次数功能,每次开始前均调整为可用的最大次数,避免了理智溢出的风险.
本次更新我们对界园肉鸽做了多项适配:
> 典型流程示例:
> 当前20理智, 上限150, 关卡消耗21理智 (6连战需126理智)
>
> 情况1: 有2瓶80理智药, 设置吃2瓶, 吃完两瓶理智药超出上限 (20 + 160 = 180) → 先吃一瓶 (20 + 80 = 100) 并调整次数为4连战 (4 × 21 = 84), 完成后再吃一瓶并消耗完剩下的理智
> 情况2: 有2瓶80理智药, 设置只吃1瓶吃1瓶 (+80) 达到吃药上限,关闭窗口触发调整 → 自动调整为4连战
> 情况3: 有1瓶80理智药, 自动吃掉1瓶 (+80) 无药可吃触发调整 → 自动调整为4连战
1. 现在牛牛支持刷开局策略了,博士可以用来自动刷热水壶等等~
2. 刷等级策略下,牛牛支持进入道中的树洞层,而不是直接跳过。
并且指定次数将联动连战次数
#### 其他方面
> 示例: 假设当前 100 理智, 关卡消耗 6 理智
>
> 旧版本: 指定次数设为 3, 连战次数设为 5, 将作战 5 * 3 = 15 次, 消耗 15 x 6 = 90 理智
> 新版本: 指定次数设为 10, 连战次数设为 4, 将作战 4 * floor(10 / 4) = 8 次, 消耗 8 x 6 = 48 理智
> 新版本: 指定次数设为 10, 连战次数设为 AUTO, 将作战 6 * floor(10 / 6) + (10 % 6) = 10 次, 消耗 10 x 6 = 60 理智
本次更新,牛牛支持对新的动态主题「梦乡」进行识别,博士们可以尽情享受两年前的那个夏天啦~
如果您遇到任何意外行为,请通过【设置】→【问题反馈】生成日志并提交给我们~
以及~~虽然不知道有什么作用,但~~支持对设置的各个小节进行手动排序,拖动设置页左侧目录即可。
----
In this version, we've optimized the adaptive Serie count adjustment feature. Before each operation, the system will now automatically adjust to the maximum available Serie count, eliminating the risk of sanity overflow.
#### [CN ONLY] Integrated Strategies #6 "Sui's Garden of Grotesqueries"
> Typical workflow examples:
> Current sanity: 20, Max sanity: 150, Stage cost: 21 sanity (6-Serie requires 126 sanity)
>
> Case 1: Having 2×80 sanity potions, set to consume 2 potions. Full consumption would exceed max sanity (20 + 160 = 180) → First consume one potion (20 + 80 = 100) and adjust to 4-Serie (4 × 21 = 84). After completion, consume the second potion and expend remaining sanity.
> Case 2: Having 2×80 sanity potions, set to consume only 1 potion (+80) reaches consumption limit. Closing window triggers adjustment → Automatically adjusts to 4-Serie.
> Case 3: Having 1×80 sanity potion, auto-consume 1 potion (+80). With no remaining potions, triggers adjustment → Automatically adjusts to 4-Serie.
In this update, we've made several adaptations for the Garden I.S.:
Additionally, specified operation count will now coordinate with Serie count:
1. MAA now supports "Grind to obtain Hot Water Kettle or Elite II Operators" strategies, allowing Doctors to automatically obtain Hot Water Kettle~
2. Under Gaining Experience Points strategies, MAA can now enter the Wonderland Encounter(误入奇境) during the run instead of skipping them directly.
> Example: Current 100 sanity, stage cost 6 sanity
>
> Old version: Specified count set to 3, Serie count set to 5 → Would complete 5 * 3 = 15 operations, consuming 15 x 6 = 90 sanity.
> New version: Specified count set to 10, Serie count set to 4 → Will complete 4 * floor(10 / 4) = 8 operations, consuming 8 x 6 = 48 sanity.
> New version: Specified count set to 10, Serie count set to AUTO → Will complete 6 * floor(10 / 6) + (10 % 6) = 10 operations, consuming 10 x 6 = 60 sanity.
#### Other Aspects
If you encounter any unexpected behavior, please generate logs via [Settings] → [Issue Report] and submit them to us~
In this update, MAA now supports recognition of the new dynamic theme "Dreamland", allowing Doctors to fully relive that summer from two years ago~
Additionally~~though NiuNiu isnt quite sure what purpose it serves, but~~ manual sorting of various sections in the settings is now supported. Simply drag the directory on the left side of the settings page.
----
以下是详细内容: Changelog below:
以下是详细内容:
### 新增 | New
* 添加萨卡兹肉鸽劳作的清晨关卡策略 (#12626) @1286587265 @Daydreamer114 @Saratoga-Official
* 指定次数联动连战, 修复连战导致指定次数失效, Auto模式不再溢出理智 (#12592) @status102 @ABA2396 @Constrat
* 添加 自定义 webhook 功能 (#12602) @KagurazakaIris @ABA2396
* 肉鸽适配新干员 (#12599) @Saratoga-Official
* Mac AUTO连续作战 @hguandl
* 更新 333 搓玉一天三换排班表 (#12604) @E022-23093
* 更新 243 极限效率一天四换排班表20250507 修订) (#12598) @bodayw
* 新保全作业 (#13754) @Saratoga-Official
* 界园肉鸽烧水 (#13690) @SherkeyXD @ABA2396
* 支持 `梦乡` 主题 (#13693) @ABA2396
* 优化标题栏显示效果 @ABA2396
* 版本后面也跟个日期 @ABA2396
* 幸运掉落用家具零件代替显示 @ABA2396
* `ADB 连接失败时尝试启动模拟器` 勾选框在 `连接设置``启动设置` 中同时显示 @ABA2396
* 支持 MuMu 5555 端口使用控制台退出与截图增强 @ABA2396
* 反转网络桥接提示框的按钮位置,避免误勾选 @ABA2396
* 自动编队支持指定使用编队 @ABA2396
* 调整自动战斗页面布局 @ABA2396
* 调整编队界面翻译 @ABA2396
* 适配界园树洞节点 (#13552) @travellerse
* 设置排序 (#13699) @ABA2396
* 调整自动战斗页面布局 @ABA2396
* 使用编队宽度自适应 @ABA2396
### 改进 | Improved
* 日志压缩包压缩等级提升 (#12622) @BxFS
* 基建使用切换职业栏返回列表最左侧 (#12594) @ABA2396
* 合并 regex @status102
* 仓库识别改用二值化后的非 char 模型识别 (#13667) @ABA2396
* 繁中服基建 + 保全派駐 7 相關更新 (#13643) @momomochi987
* 更新 nuke 版本与构建 @SherkeyXD
* 更新 MaaBuilder 中使用的过时方法 @SherkeyXD
* 代理倍率、肉鸽难度 使用 `不切换` 代替 `当前``不使用` 以符合实际逻辑 (#13612) @status102 @HX3N @Constrat
* wpf 肉鸽难度初始化优化 @status102
* 不同更新渠道加个描述 (#13734) @status102 @momomochi987 @Constrat @HX3N
* 自动战斗使用编队选择框 UI @status102
* 一键长草任务列表翻转按钮下拉框样式优化 @status102
### 修复 | Fix
* 切换账号失败 @Daydreamer114
* 模拟器路径选择功能弹窗异常 @ABA2396
* 截图增强显示错误 @ABA2396
* 无法进入活动 @ABA2396
* 刷理智结束后卡在“理智药选择”界面 @ABA2396
* 萨米肉鸽刷坍缩范式闪退 @ABA2396
* 修复界园树洞无可用节点时任务失败 (#13741) @travellerse
* 修复萨卡兹肉鸽部分字段无法正确识别的问题 (#13691) @THSLP13
* 无法区分界园 3/5 层 boss @ABA2396
* 因招募动画卡预见密文板 (#13680) @ABA2396
* 修修 ocr bin threshold 被 task info 错误覆盖 @status102
* 获得排异反应的干员无法选择技能 @ABA2396
* 移除使用 empty.png 当 JustReturn 屎 (#13652) @status102
* 识别错误等待 +200ms @status102
* 肉鸽投资可能由于存款被长期遮挡导致提前退出 @status102
* 未启用备选关卡也会输出剿灭提醒 @status102
* 合成密文板未进入合成页面导致卡死 @ABA2396
* 修复 fody 一直报 warning @SherkeyXD
* 商店因为动画卡在源石锭不足 @ABA2396
* 理智药背景干扰使用数量识别 @status102
* 第一层没出商店时会在第三层才退出 @ABA2396
* 肉鸽任务高级设置界面 xaml 错误修复 @status102
* 肉鸽种子选择框 visibility 判断更新 @status102
* 每次截图测试前断开模拟器连接以获取最新的最快截图耗时 @ABA2396
* 锻冶旧迹 导航识别错误 @ABA2396
* 追加自定干员职业与最后编入干员职业相同时, 误展开子职业列表 @status102
* 肉鸽烧水选择当前难度时禁用 0 难烧水切换 @status102
* 移除未使用 @status102
* 肉鸽投资在单次投资达到 999 时可能无法退出 @status102
* 修复掉落上报消息类型没有在 Python 层定义导致外部脚本报错的问题 (#13723) @husy8
* debug version 拿不到活动关卡 @ABA2396
* 干员识别输出遗漏干员持有情况、潜能 @status102
* 剿灭失败不报错 @status102
* 傀影卡在无法进行初始招募的深入探索月度小队 @ABA2396
* schema error @ABA2396
* add slight delay before `InfrastEnteredFlag' in case of stutters in base rendering @Constrat
* EN Phantom IS font change nextlevel fix @Constrat
* start plugin task not enough delay (#13623) @Constrat
### 文档 | Docs
* 连战次数文档更新 @status102
* 更正保全派驻协议文档中的拼写错误 (#12578) @lucienshawls
* 更正主文档和中文文档中的两处错别字 (#12577) @lucienshawls
* 修正 `刷理智` 文档表述错误 (#13745) @vcfch843875
* MuMu 5.0 文档介绍 (#13658) @Rbqwow
* 文档站小修复 (#13659) @Rbqwow
* 文档日语化翻译 (#13713) @vcfch843875
### 其他 | Other
* 调整提示颜色 @ABA2396
* 开始战斗前闪退无限循环识别,关卡名检查放宽至一分钟 (#12580) @ABA2396
* 肉鸽招募 练度不够干员的 priority 可能为正 @Daydreamer114
* 战斗次数识别错误缓解 @status102
* 关闭连战列表点击 @status102
* 关闭连战列表 @status102
* 移除肉鸽难度hard code (#12587) @status102
* 连战次数修复, 减少hard code @status102
* 补上之前漏改的 tasks 路径修改 @ABA2396
* 连战减少不必要的次数调整 @status102
* 战斗次数识别错误处理 @status102
* 关卡理智识别流程通用化 @status102
* 减少一次不必要的连战次数变更 @status102
* 移除过旧的任务参数 @status102
* 优化提示 @ABA2396
* 连战新增 -1 表示禁用切换 @ABA2396
* 修改连接失败提示描述 @ABA2396
* YostarKR BattleStartPre add ocrReplace pattern @HX3N
* YostarJP ocr edits (#12607) @Manicsteiner
* HttpService调整, Post函数追加 (#12605) @status102
* 好像提示了也没人看 @ABA2396
* 加点常用的进来 @status102
* 调整超时提醒输出 @ABA2396
* 理智识别 @status102
* Reapply "feat:实现自适应调整连战次数 (#12555)" @Yoak3n @ABA2396
* 迁移 UpdateStageList @status102
* _stageManager 迁移 @status102
* binThreshold, useRaw 直接写入 task @status102
* 繁中服「出蒼白海」導航入口文字調整 (#13681) @momomochi987
* 调整 LDExtras 文件位置 @ABA2396
* 自动战斗存图阈值改为0.75 @ABA2396
* 刷理智任务指定材料不再使用双属性保存,仅保存物品 id @status102
* 密文板加一个进入后检查 @ABA2396
* 繁中服「出蒼白海」活動導航 (#13644) @momomochi987
* 添加 null 检测 @SherkeyXD
* 合并 ocrBinThreshold (#13635) @status102
* gitignore 添加 MaaBuilder 相关内容 @SherkeyXD
* TestLinkAndGetImage 不允许同时运行 @ABA2396
* 模板轮换 (#13625) @status102
* 基建设施排序初始化 @status102
* wpf 任务名字段统一 @status102
* 基建设施种类 @status102
* CustomTask 存储 @status102
* 浅调一下初始化顺序 @status102
* KR tweak copilot option translation @HX3N
* catch 一下企鹅物流的上报错误请求,避免影响重试逻辑 @ABA2396
* YostarKR CharsNameOcrReplace ocr edit @HX3N
* rename MinimumFeatureLevel to minimumFeatureLevel @SherkeyXD
* add copyright header @SherkeyXD
* add nullable flags @SherkeyXD
* add missing png suffix to templates @SherkeyXD

View File

@@ -81,7 +81,8 @@ if (BUILD_TEST)
target_link_libraries(test MaaCore)
endif (BUILD_TEST)
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs videoio)
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs videoio features2d)
find_package(OpenCV QUIET COMPONENTS xfeatures2d)
find_package(ZLIB REQUIRED)
find_package(cpr CONFIG REQUIRED)

View File

@@ -20,58 +20,61 @@ openfiles >nul 2>&1
if %errorlevel% neq 0 (
echo %YELLOW%正在获取管理员权限...%RESET%
echo %YELLOW%Obtaining administrator privileges...%RESET%
powershell -Command "Start-Process cmd.exe -ArgumentList '/c %~dpnx0' -Verb RunAs"
powershell -Command "Start-Process cmd.exe -ArgumentList '/c %~f0' -Verb RunAs"
exit /b
)
echo.
echo %BLUE%========================================%RESET%
echo %BLUE%====================================================================================================%RESET%
echo %BOLD%%CYAN%正在安装 Microsoft Visual C++ Redistributable%RESET%
echo %BOLD%%CYAN%Installing Microsoft Visual C++ Redistributable%RESET%
echo %BLUE%========================================%RESET%
echo.
echo %YELLOW%如果是第一次使用 winget可能会提示接受协议请输入 Y 并按回车继续%RESET%
echo %YELLOW%If this is your first time using winget, you may be prompted to accept the terms. %RESET%
echo %YELLOW%Please enter Y and press Enter to continue.%RESET%
echo.
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --uninstall-previous --accept-package-agreements --force
if %errorlevel% neq 0 (
echo.
echo %BOLD%%RED%错误: Microsoft.VCRedist.2015+.x64 安装失败%RESET%
echo %BOLD%%RED%Error: Microsoft.VCRedist.2015+.x64 installation failed%RESET%
set "ErrorOccurred=1"
)
echo %BLUE%====================================================================================================%RESET%
echo.
echo %BLUE%========================================%RESET%
echo %BLUE%====================================================================================================%RESET%
echo %BOLD%%CYAN%正在安装 .NET Desktop Runtime 8.0%RESET%
echo %BOLD%%CYAN%Installing .NET Desktop Runtime 8.0%RESET%
echo %BLUE%========================================%RESET%
echo.
winget install "Microsoft.DotNet.DesktopRuntime.8" --override "/repair /passive /norestart" --uninstall-previous --accept-package-agreements --force
if %errorlevel% neq 0 (
echo.
echo %BOLD%%RED%错误: Microsoft.DotNet.DesktopRuntime.8 安装失败%RESET%
echo %BOLD%%RED%Error: Microsoft.DotNet.DesktopRuntime.8 installation failed%RESET%
set "ErrorOccurred=1"
)
echo %BLUE%====================================================================================================%RESET%
echo.
if %ErrorOccurred% equ 0 (
echo %BOLD%%GREEN%运行库修复完成,请重启电脑后再次尝试运行 MAA。%RESET%
echo %BOLD%%GREEN%The runtime library repair is complete. Please restart your computer and try running MAA again.%RESET%
) else (
echo %RED%========================================%RESET%
echo %RED%====================================================================================================%RESET%
echo %BOLD%%RED%运行库修复过程中出现错误%RESET%
echo %BOLD%%RED%Errors occurred during runtime library repair%RESET%
echo.
echo %YELLOW%您可以尝试手动下载并安装以下组件:%RESET%
echo %YELLOW%You can try to manually download and install the following components:%RESET%
echo %YELLOW%如果提示%RESET% %WHITE%'winget' is not...%RESET% %YELLOW%说明您的电脑版本太老了,没有自带 winget%RESET%
echo %YELLOW%If the prompt shows%RESET% %WHITE%'winget' is not...%RESET% %YELLOW%it means your system is too old and don't include winget by default.%RESET%
echo.
echo %YELLOW%您可以手动将以下两个链接复制到浏览器中打开,下载并安装所需组件。如果安装成功,无需再次运行本依赖库安装脚本。%RESET%
echo %YELLOW%You can manually copy the following two links into your browser to download and install the required components.%RESET%
echo %YELLOW%If the installation is successful, you don't need to run this dependency installation script again.%RESET%
echo.
echo %WHITE%Microsoft Visual C++ Redistributable:%RESET%
echo %CYAN%https://aka.ms/vs/17/release/vc_redist.x64.exe%RESET%
echo.
echo %WHITE%.NET Desktop Runtime 8.0:%RESET%
echo %CYAN%https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe%RESET%
echo %RED%========================================%RESET%
echo %RED%====================================================================================================%RESET%
)
pause
pause

View File

@@ -1,4 +1,4 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EN/@EntryIndexedValue">EN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KR/@EntryIndexedValue">KR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JP/@EntryIndexedValue">JP</s:String>
@@ -69,6 +69,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=desp/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=dnplayer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ehem/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Epilog/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=esource/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Eyjafjalla/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Favourite/@EntryIndexedValue">True</s:Boolean>
@@ -83,6 +84,8 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gacha/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gavial/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Grandet/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=HKEY/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Hotkey/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=hwnd/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Infrast/@EntryIndexedValue">True</s:Boolean>
@@ -104,7 +107,9 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=mirrorc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mirrorchyan/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mizuki/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mrfz/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mumu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nahimic/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nemu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Netease/@EntryIndexedValue">True</s:Boolean>
@@ -121,6 +126,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Orundums/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=o_FF9Fv_FF9F/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pallas/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=penguinid/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=pidl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pormpt/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=powrprof/@EntryIndexedValue">True</s:Boolean>
@@ -166,5 +172,6 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Yahei/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=yituliu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Yostar/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ZOOT/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0020_0020_0020wp_002ELength_0020/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0020_003D_0020stri/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -202,7 +202,7 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
## 广告
用户交流 QQ 群:[MAA 使用 & 粥游交流 QQ 群](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
用户交流 QQ 群:[MAA 使用 & 粥游交流 QQ 群](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
Discord 服务器: [邀请链接](https://discord.gg/23DfZ9uA4V)
用户交流 TG 群:[Telegram 群](https://t.me/+Mgc2Zngr-hs3ZjU1)
自动战斗 JSON 作业分享:[prts.plus](https://prts.plus)

View File

@@ -1,5 +1,5 @@
import type { VNode } from "vue";
import { defineComponent, h } from "vue";
import { defineComponent, h, computed } from "vue";
import NavbarDropdown from "@theme-hope/modules/navbar/components/NavbarDropdown";
import { I18nIcon } from "@theme-hope/modules/navbar/components/icons/index";
@@ -11,17 +11,20 @@ export default defineComponent({
setup() {
const dropdown = useNavbarLanguageDropdown();
const filteredDropdown = () => {
const filteredDropdown = computed(() => {
if (!dropdown.value) return null;
const filteredConfig = { ...dropdown.value };
if (filteredConfig.children) {
filteredConfig.children = filteredConfig.children.filter(item => item.link !== '/');
filteredConfig.children = filteredConfig.children.filter(item => {
// 过滤掉跳转到根目录的项目
return item.link !== '/' && item.link !== '/docs/' && !item.link?.endsWith('/docs/');
});
}
return filteredConfig;
};
});
//console.log("OldLanguageDropdown", dropdown.value);
//console.log("NewLanguageDropdown", filteredDropdown());
@@ -33,11 +36,11 @@ export default defineComponent({
{ class: "vp-nav-item" },
h(
NavbarDropdown,
{ config: filteredDropdown() },
{ config: filteredDropdown.value },
{
title: () =>
h(I18nIcon, {
"aria-label": filteredDropdown()?.ariaLabel,
"aria-label": filteredDropdown.value?.ariaLabel,
style: {
width: "1rem",
height: "1rem",

View File

@@ -14,11 +14,6 @@ export default defineUserConfig({
port: 3001,
locales: {
"/": {
lang: " ",
title: " ",
description: " ",
},
"/zh-cn/": {
lang: "zh-cn",
description: "文档",

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -5,6 +5,16 @@ $vp-font: '-apple-system, BlinkMacSystemFont, "Noto Sans SC", "Segoe UI", Roboto
$vp-font-heading: 'Georgia, -apple-system, "Nimbus Roman No9 L", "PingFang SC", "Hiragino Sans GB", "Noto Serif SC", "Microsoft Yahei", "WenQuanYi Micro Hei", "ST Heiti", sans-serif';
$vp-font-mono: '"Sarasa Gothic", "Jetbrains mono", "Fira Code", "Noto Sans SC", Consolas, monospace, Menlo, "Courier New"';
.vp-hero-slide-down-button {
display: none !important;
visibility: hidden !important;
}
.vp-skip-link.sr-only {
display: none !important;
visibility: hidden !important;
}
html[lang="ja-JP"] {
$vp-font: "Helvetica Neue, Arial, Hiragino Kaku Gothic ProN, Hiragino Sans, Meiryo, sans-serif";
}

View File

@@ -0,0 +1,137 @@
---
order: 7
icon: devicon-plain:githubactions
---
# CI System Analysis
MAA leverages GitHub Actions to complete a large amount of automation work, including website building, automatic resource updates, final file building and release processes, etc. Over time, these CI workflows have gradually become nested, with some even pointing to other repositories. This document aims to provide a brief introduction for those who want to improve MAA's CI system.
Before reading this document, it's best to have a basic understanding of MAA's project structure and components.
::: tip
You can quickly navigate to the section you want to see by searching for CI file names within this page
:::
Workflow files are all stored under `.github/workflows`, and each file can be categorized into the following functional parts:
+ [Code Testing](#code-testing)
+ [Code Building](#code-building)
+ [Version Release](#version-release)
+ [Resource Updates](#resource-updates)
+ [Website Building](#website-building)
+ [Issues Management](#issues-management)
+ [Pull Requests Management](#pull-requests-management)
+ [MirrorChyan Related](#mirrorchyan-related)
+ [Others](#others)
Additionally, we use [pre-commit.ci](https://pre-commit.ci/) to implement automatic code formatting and image resource optimization, which runs automatically after creating PRs and generally requires no special attention.
## GitHub Actions Section
### Code Testing
`smoke-testing.yml`
This workflow is mainly responsible for basic testing of MaaCore, including resource file loading, simple task execution tests, etc.
Since test cases haven't been updated for a long time, this workflow is now basically used to ensure resource files don't contain errors and that MaaCore code doesn't have fatal errors (the kind that affects building).
### Code Building
`ci.yml`
This workflow is responsible for full code building work, including all MAA components. The build artifacts are runnable MAA instances.
In addition to the necessary MaaCore, Windows build artifacts include MaaWpfGui, macOS build artifacts include MaaMacGui, and Linux build artifacts include MaaCLI.
This workflow runs automatically on any new commit and PR. When triggered by a release PR, the build artifacts from this run will be used directly for release and will create a Release.
### Version Release
Version release is the necessary operation to publish updates to users, consisting of the following workflows:
+ `release-nightly-ota.yml` Release nightly builds
+ `release-ota.yml` Release stable/beta versions
+ `gen-changelog.yml` Generate changelog for stable/beta versions
+ `pr-auto-tag.yml` Generate tags for stable/beta versions
::: tip
The "ota" in the above file names stands for Over-the-Air, which is what we commonly call "incremental update packages". Therefore, MAA's release process actually includes building OTA packages for past versions.
:::
#### Nightly Builds
`release-nightly-ota.yml`
This workflow runs automatically at 22:00 UTC daily to ensure nightly build release frequency. Of course, you can also manually release when making changes that need verification.
Note that nightly builds are only released for Windows users; macOS and Linux users cannot receive nightly updates.
#### Stable/Beta Versions
The release process for these two channels is relatively more complex. We'll explain the role of each workflow by simulating a release process:
1. Create a PR from `dev` to `master` branch, and the PR name must be `Release v******`
2. `gen-changelog.yml` generates a changelog from the most recent stable/beta version to the current version (as a new PR)
3. Manually adjust the changelog and add brief descriptions
4. Merge the PR, triggering `pr-auto-tag.yml` to create tags and sync branches
5. The Release event triggers `release-ota.yml`, which builds OTA packages and uploads attachments after tagging master
### Resource Updates
This section of workflows is mainly responsible for MAA's resource updates and optimization, with the following specific workflows:
+ `res-update-game.yml` Executes periodically to pull game resources from specified repositories
+ `sync-resource.yml` Syncs resources to the MaaResource repository for resource updates
+ `optimize-templates.yml` Optimizes template image sizes
### Website Building
`website-workflow.yml`
This workflow is mainly responsible for building and publishing MAA's official website, including both the main page and documentation components.
Please note that website publishing is tightly bound to releases. Regular modifications to web components only trigger builds to ensure no errors occur, and actual deployment to Azure only happens during releases.
### Issues Management
`issue-checker.yml`
Uses regex matching to tag various Issues, categorizing and marking Issue content for easier viewing and management.
`issue-checkbox-checker.yml`
Uses regex matching to automatically close Issues that check "I have not read carefully".
If "I have not read carefully" is not checked, all checkboxes are collapsed.
`stale.yml`
Checks Bug Issues that have had no activity for more than 90 days, marks them and sends notifications, then closes them after 7 more days if still inactive.
### Pull Requests Management
`pr-checker.yml`
This workflow checks whether commit messages in PRs conform to [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) and whether they contain merge commits, providing reminders if these conditions are met.
### MirrorChyan Related
MirrorChyan is a paid update mirror service, with the following related workflows:
+ `mirrorchyan.yml` Sync update packages to MirrorChyan
+ `mirrorchyan_release_note.yml` Generate MirrorChyan Release Notes
### Others
`markdown-checker.yml`
Responsible for checking all Markdown files in the repository for invalid links.
`blame-ignore.yml`
Automatically ignores commits with commit messages containing `blame ignore` to keep repository history clean.
`cache-delete.yml`
Cleans up related caches after PR merges to save cache usage.

View File

@@ -5,11 +5,15 @@ icon: iconoir:developer
# Getting Started with Development
## Introduction to GitHub Pull Request flow
::: tip
This page mainly describes the PR workflow and MAA's file formatting requirements. If you want to learn specifically how to make changes to MAA's operational logic, please refer to the [Protocol Documentation](../protocol/)
:::
## Introduction to GitHub Pull Request Flow
### I don't know programming but just want to modify some JSON files/documents, how can I do it?
Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can understand (purely web-based on Github.com)
Welcome to the [Web-based PR Tutorial](./pr-tutorial.md) that anyone can understand (purely web-based on Github.com)
### I can program, but I've never used GitHub/C++/..., how do I get started?
@@ -27,7 +31,7 @@ Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can
4. Download prebuilt third-party libraries
**Python environment required - search for Python installation tutorials if needed**
_maadeps-download.py is located in the project root_
_(maadeps-download.py is located in the project root)_
```cmd
python maadeps-download.py
@@ -41,11 +45,11 @@ Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can
7. Configure Visual Studio settings
- Select `RelWithDebInfo` and `x64` in the top configuration bar (Skip for Release builds or ARM platforms)
- Right-click `MaaWpfGui` -> Properties -> Debug -> Enable native debugging (This enables breakpoints in C++ Core)
- Right-click `MaaWpfGui` Properties Debug Enable native debugging (This enables breakpoints in C++ Core)
8. Now you're ready to happily ~~mess around~~ start developing!
9. Commit regularly with meaningful messages during development
Beginners should create a new branch instead of committing directly to `dev`:
If you're not familiar with git usage, you might want to create a new branch for changes instead of committing directly to `dev`:
```bash
git branch your_own_branch
@@ -75,16 +79,16 @@ Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can
git fetch upstream
```
3. Rebase or merge:
3. Rebase (recommended) or merge:
```bash
git rebase upstream/dev
git rebase upstream/dev # rebase
```
or
```bash
git merge
git merge # merge
```
4. Repeat steps 7, 8, 9, 10.
@@ -93,15 +97,15 @@ Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can
After opening Visual Studio, Git operations can be performed using VS's built-in "Git Changes" instead of command-line tools.
:::
## MAA file formatting requirements
## MAA File Formatting Requirements
MAA uses a series of formatting tools to ensure that the code and resource files in the repository are visually unified for easy maintenance and reading.
Please ensure that it has been formatted before submission, or [enable Pre commit Hooks for automatic formatting](#use-pre-commit-hooks-to-automatically-format-code).
Please ensure that it has been formatted before submission, or [enable Pre-commit Hooks for automatic formatting](#use-pre-commit-hooks-to-automatically-format-code).
The currently enabled formatting tools are as follows:
|File Type | Format Tool|
| File Type | Format Tool |
| --- | --- |
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
| Json/Yaml | [Prettier](https://prettier.io/) |

View File

@@ -7,7 +7,9 @@ icon: bxs:bot
The action of Issue Bot is [issue-checker](https://github.com/zzyyyl/issue-checker), with configuration file [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml).
**Note that your merge request will be marked as `ambiguous` when you are not committing with Commitizen specification.**
::: warning
Your pull request will be marked as `ambiguous` when you are not committing with Conventional Commits specification.
:::
## Features
@@ -27,7 +29,7 @@ The action of Issue Bot is [issue-checker](https://github.com/zzyyyl/issue-check
Issue Bot will check the title of your pull request. Unless the title starts with one of the following keywords, the pull request will be marked as `ambiguous`.
- `build` `chore` `ci` `doc` `docs` `feat` `fix` `perf` `refactor` `rfc` `style` `test`
- `Merge` `merge` `Revert` `revert`
- `Merge` `merge` `Revert` `revert` `Reapply` `reapply`
### Triggering Manually
@@ -52,7 +54,9 @@ It is better to trigger Issue Bot with keywords instead of commands listed below
- `Duplicate of #{ISSUE_NUMBER}` will add `duplicate` label to the issue.
- **You can add some `skip` operations if your comment may confuse Issue Bot.**
_Note<sup>1</sup>: The `COMMIT_HASH` here is the full 40-character hash._
::: info Note
<sup>1</sup> The `COMMIT_HASH` here needs to be the full 40 characters
:::
#### Push

View File

@@ -3,24 +3,27 @@ order: 2
icon: teenyicons:linux-alt-solid
---
# Linux Compiling Tutorial
# Linux Compilation Tutorial
**The tutorial requires some basic knowledge about Linux OS!**
If you just want to install MAA directly instead of compiling it yourself, please read [Emulator Support for Linux](../manual/device/linux.md).
**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
Linux build of MAA is still under discussion, some of the content might be outdated, please follow the script in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134), also reference [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/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).
:::
## Compiling MAA
::: info
Mac can use the `tools/build_macos_universal.zsh` script for compilation. It's recommended to refer to the README.md of the [MaaAssistantArknights/MaaMacGui](https://github.com/MaaAssistantArknights/MaaMacGui) project.
:::
1. Download build depends
## Compilation Process
1. Download compilation dependencies
- Ubuntu/Debian
```bash
sudo apt install gcc-12 g++-12 cmake zlib1g-dev
```
```bash
sudo apt install gcc-12 g++-12 cmake zlib1g-dev
```
- Arch Linux
@@ -28,30 +31,30 @@ Linux build of MAA is still under discussion, some of the content might be outda
sudo pacman -S --needed gcc cmake zlib
```
2. Build or download third-party libraries
2. Build third-party libraries
You may either download pre-built dependencies or build them from scratch
You can choose to download pre-built dependency libraries or compile from scratch
- Download pre-built libraries (recommended)
- Download pre-built third-party libraries (recommended)
> **Note**
> It contains shared objects built on a relatively new linux distro (Ubuntu 22.04), which may cause ABI incompatibility if you are working on a system with older version of libstdc++.
> Contains dynamic libraries compiled on relatively new Linux distributions (Ubuntu 22.04). If your system's libstdc++ version is older, you may encounter ABI incompatibility issues.
```bash
python maadeps-download.py
```
If this does not work for you due to ABI issue, and containerization is not an option, you may build them from scratch
If you find the libraries downloaded above cannot run on your system due to ABI version issues and you don't want to use container solutions, you can also try compiling from scratch
- Build from source
- Build third-party libraries from scratch (will take considerable time)
```bash
git submodule update --init --recursive
cd MaaDeps
python build.py
python build.py
```
3. Build MAA
3. Compile MAA
```bash
CC=gcc-12 CXX=g++-12 cmake -B build \
@@ -61,24 +64,26 @@ Linux build of MAA is still under discussion, some of the content might be outda
cmake --build build
```
To install MAA to the target location, note that MAA is recommended to run by specifying `LD_LIBRARY_PATH`, do not use administrator privileges to load MAA into `/`
To install MAA to target location, note that MAA is recommended to run by specifying `LD_LIBRARY_PATH`, don't use administrator privileges to install MAA into `/usr`
```bash
cmake --install build --prefix <target_directory>
```
## Integration
## Integration Documentation
[~~Maybe not a doc~~](../protocol/integration.md)
[~~Perhaps not really documentation~~](../protocol/integration.md)
### Python
Refer to the implementation of `__main__` in [Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py)
You can refer to the implementation of `__main__` in [Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py)
### C
### C++
Refer to the implementation of [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)
You can refer to the implementation in [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)
### C Sharp
Refer to the implementation of [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
You can refer to the implementation in [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)

View File

@@ -3,114 +3,116 @@ order: 5
icon: ri:earth-fill
---
# Overseas Clients Adaptation
# Overseas Client Adaptation Tutorial
## Preparation
Before starting this tutorial, make sure you have:
1. Installed and properly configured the required software. There should be information in the `readme.md` of the ZH-CN client or the corresponding client to ensure that the supported features work properly.
2. Read [Task Schema](../protocol/task-schema.md) and have a basic understanding of the meaning and usage of each field. You should also understand the meaning and usage of `@` and `#` in the code.
3. Understand that the `task.json` file and template image of the ZH-CN client will be used as alternatives when they are unmentioned or missing for the overseas client. The content in the `task.json` for the overseas client should be rewritten according to the fields of the ZH-CN task.
4. Have some English ability, be able to read English logs, and be able to find missing pictures and other information through the logs.
5. Understand that it is recommended to perform the modification individually according to the task chain. For example, to modify the Award task, you should modify the `template image`, `text`, and `roi` step by step in accordance with the order in its `next` field. This will ensure that every task is working normally after modification and errors can be easily spotted. Additionally, this can prevent confusion and forgetting which task the software is stuck on when too much content is modified at once.
1. Installed and properly configured the required software. There should be relevant information in the CN client or corresponding client's `readme.md` to ensure that supported features work properly.
2. Read the [Task Schema](../protocol/task-schema.md) and have a basic understanding of the meaning and usage of each field, and understand the meaning and usage of `@` and `#` type tasks.
3. Understand that content not mentioned or missing in overseas client `task.json` and template images will use CN client `task.json` and template images as fallbacks. Content in overseas client `task.json` will override and rewrite corresponding fields of CN client tasks.
4. Have sufficient English ability to read English logs and find missing images and other information through logs.
5. It's recommended to modify according to task chains. For example, for the `Award` task, gradually replace `template images` / `text` / `modify roi` step by step according to the `next` order of the `Award` task in CN client `task.json`, ensuring each step works properly after modification or can quickly identify errors. This avoids confusion about which step the program is stuck on when too many changes are made at once.
### Preparation before making changes
### Pre-modification Preparation
Before making changes, there are several preparations that need to be noted:
Before making modifications, there are several preparation steps to note:
1. Refer to the ZH-CN client's `task.json` and make sure you have prepared the template images and text content for the overseas client.
2. Make sure you have ready access to these images and text content.
1. Refer to CN client task.json and ensure you have prepared template images and text content for overseas clients that differ from CN client.
2. Ensure you can access these images and text content at any time.
## Get screenshots
## Getting Screenshots
To get high-quality screenshots, please follow these guidelines:
1. Use the screenshot tool provided with the emulator to take and save screenshots.
2. Ensure that the size of the screenshot is at least `1280x720` and the aspect ratio is `16:9`.
3. Make sure the screenshot does not contain any extraneous content, such as the taskbar, status bar, or notification bar.
4. Make sure the screenshot includes all the content that needs to be recognized.
1. Use the emulator's built-in screenshot tool to take and save screenshots.
2. Ensure screenshot dimensions are larger than `1280*720` with aspect ratio `16:9`.
3. Ensure screenshots don't contain any irrelevant content, such as taskbar, status bar, notification bar, etc.
4. Ensure screenshots contain all content that needs to be recognized.
To crop the image and get the text/image region of interest (ROI), you will need to install `Python` and `OpenCV`, and download the `MaaAssistantArknights/tools/CropRoi/main.py` file.
To crop images and get text/image `roi`, you need to install `python` and `opencv`, and download the `MaaAssistantArknights/tools/CropRoi/main.py` file.
Then, follow these steps:
Then follow these steps:
1. Create new `src` and `dst` folders in the same directory as `main.py`.
2. Place the **complete screenshot** of the text/image that needs to be resized or in need of a new ROI value into the `src` folder.
2. Place **complete screenshots** that need resizing or text/image `roi` extraction into the `src` folder.
3. Run `main.py`.
4. Select the target range by dragging the mouse, making sure not to include extraneous content.
5. Once the range is determined, press `S` to save and `Q` to exit. The cropped image will be saved in the dst folder.
4. Use mouse drag to select target range, try not to include irrelevant content.
5. After determining the range, press `S` to save, press `Q` to exit. Cropped images will be saved in the `dst` folder.
For example, the output after completing a crop would be:
For example, output after completing one crop:
``` log
```log
src: Screenshot_xxx.png
dst: Screenshot_xxx.png_426,272,177,201.png
original roi: 476, 322, 77, 101,
amplified roi: 426, 272, 177, 201
```
In this example, `Screenshot_xxx.png` is the name of the full screenshot placed in the `src` folder, and `Screenshot_xxx.png_426,272,177,201.png` is the name of the cropped image.
Where:
The `original roi` is the area selected by the mouse, while the `amplified roi` is the enlarged area. You will need the enlarged area, so you should use the `amplified roi` value to fill in the roi field in task.json.
`Screenshot_xxx.png` is the name of the complete screenshot placed in the `src` folder. `Screenshot_xxx.png_426,272,177,201.png` is the cropped image.
## Modify the template image
`original roi` is the mouse-selected area. `amplified roi` is the enlarged area. You need the enlarged range, so fill the `roi` field in `task.json` with this value.
Before modifying the template image, you need to open the template image folder of the corresponding client and the template image folder of the ZH-CN client.
## Modifying Template Images
Before modifying template images, you need to open the corresponding client's template image folder and CN client's template image folder.
For example:
- The location of the template image folder for EN client is `MaaAssistantArknights\resource\global\YoStarEN\resource\template`.
- The location of the template image folder for the ZH-CN client is `MaaAssistantArknights\resource\template`.
- EN client template image folder location: `MaaAssistantArknights\resource\global\YoStarEN\resource\template`.
- CN client template image folder location: `MaaAssistantArknights\resource\template`.
Refer to the template images mentioned in the `task.json` file, compare the template images of the ZH-CN client and the overseas client, and identify any missing templates in the overseas client.
Refer to template images mentioned in `task.json`, compare CN client and overseas client template images, and find templates missing in overseas client.
Typically, template images containing text need to be replaced with screenshots, with the exception of images such as logos. If the size of the image is significantly larger than the corresponding template image in the ZH-CN client, you may need to modify the size of the `roi`.
Usually, except for logos and other images, templates containing text need to be replaced through screenshots. If image dimensions are significantly larger than corresponding CN client template images, you need to modify `roi` size.
Once you have captured and renamed the template image, you can place it in the template image folder of the corresponding client.
Place captured and renamed template images into the corresponding client's template image folder.
## Modify the text content
## Modifying Text Content
Before modifying the text content, you will need to open the `task.json` file for both the corresponding server and ZH-CN client.
Before modifying text content, you need to open the corresponding server's `task.json` and CN client's `task.json`.
For example:
- The location of `task.json` in EN client is `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`.
- The location of `task.json` for ZH-CN client is `MaaAssistantArknights\resource\tasks.json`.
- EN client `task.json` location: `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`.
- CN client `task.json` location: `MaaAssistantArknights\resource\tasks.json`.
To modify the text, locate the corresponding task and change the `text` field to the content displayed in the corresponding server. Keep in mind that the identified content can be a substring of the full content within the game. In general, you should replace any `text` containing text unless it is recognized as a pure ASCII character.
Find the corresponding task and modify the `text` field to content displayed in the corresponding server. Note that recognized content can be a substring of complete in-game content.
If the text length is significantly longer than the ZH-CN client version, you may need to modify the size of the `roi` field. For example, if the difference in length between the `"任务"`(Mission in chinese) and the English word `"Mission"` is too large, you may need to modify the size of the `roi` for that mission in the overseas client.
Usually, unless it's pure ASCII character recognition, `text` containing text needs to be replaced. If text length is significantly larger than CN client, you need to modify `roi` size, such as the length difference between `"任务"` and `"Mission"` being too large, requiring modification of overseas client task `roi` size.
If the task does not exist in the `task.json` file of the corresponding overseas server, you will need to add it. Simply fill in the `text` field with the appropriate content.
If the corresponding overseas client `task.json` doesn't have the task, you need to add the task, only filling in the `text` field.
## Modify ROI range
## Modifying ROI Range
To modify the ROI range:
1. Open the corresponding server's `task.json`, such as EN client location `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`
2. Find the corresponding task that needs `roi` range modification, use your prepared overseas game interface screenshots, and adjust `roi` range size according to `amplified roi`.
3. Usually, `roi` doesn't need modification, only when recognition content size difference with CN client is too large.
4. If the corresponding overseas client `task.json` doesn't have the task, add the task and write the `roi` field.
1. Open the `task.json` file for the corresponding server, for example, the location of the EN client's `task.json` file is `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`.
2. Find the task that corresponds to the ROI range you need to modify, and use a screenshot of the overseas game interface to adjust the size of the `roi` range according to the amplified ROI.
3. Normally, you should not need to modify the `roi` range, but you may need to do so if the difference in size between the text and the Chinese client version is too large.
4. If the task does not exist in the `task.json` file of the corresponding overseas client, add the task and write the `roi` field with the appropriate values.
## Save Settings and Restart Software
## Save the settings and restart the software
After modifications are complete, restart the software to reload files and make changes effective. Or create a `DEBUG.txt` file in the software directory before opening the software, so templates and files reload every time you click start, without needing restart.
After making the changes, you will need to save the settings and restart the software in order for the changes to take effect. To do this, you can either restart the software and reload the file, or create a new `DEBUG.txt` file in the software directory. This will cause the template and files to be reloaded every time you click the "Link Start" button, so you will not need to restart the software.
Check for success:
To check for success:
1. Check software operation to ensure it works normally on overseas clients.
2. If it doesn't work properly, check if modifications are correct or view log output to find error locations.
1. Test the operation of the software to ensure that it is functioning properly on the overseas server.
2. If it is not working properly, you will need to check if the changes are correct, or check the log output to determine what went wrong.
## Reading Logs
## Interpreting the logs
Sometimes after modifying `task.json`, we find the program still can't run correctly. In this case, we should check logs to find error locations and modify corresponding tasks.
If you have modified the `task.json` file but the program is still not functioning correctly, it may be helpful to check the logs to find any errors and modify the corresponding task accordingly. The log file is typically located in the root directory of the software, and is named `asst.log`. If you compiled MAA yourself, it may be located in the `\x64\Release` or `\x64\RelWithDebInfo` directory, depending on the compilation mode you selected when compiling.
Log file location is in the software root directory, filename `asst.log`. If you compiled MAA yourself, it's in `\x64\Release` or `x64\RelWithDebInfo`, depending on your compilation mode selection.
Interpreting the logs can be helpful in identifying any issues with the program. Here is an example log:
Here's a log example:
``` log
```log
[2022-12-18 17:43:17.535][INF][Px7ec][Tx15c8] {"taskchain":"Award","details":{"to_be_recognized":["Award@ReturnTo","Award","ReceiveAward","DailyTask","WeeklyTask","Award@CloseAnno","Award@CloseAnnoTexas","Award@TodaysSupplies","Award@FromStageSN"],"cur_retry":10,"retry_times":20},"first":["AwardBegin"],"taskid":2,"class":"asst::ProcessTask","subtask":"ProcessTask","pre_task":"AwardBegin"}
[2022-12-18 17:43:18.398][INF][Px7ec][Tx15c8] Call ` C:\Program Files\BlueStacks_nxt\. \HD-Adb.exe -s 127.0.0.1:5555 exec-out "screencap | gzip -1" ` ret 0 , cost 862 ms , stdout size: 2074904 , socket size: 0
[2022-12-18 17:43:18.398][INF][Px7ec][Tx15c8] Call ` C:\Program Files\BlueStacks_nxt\.\HD-Adb.exe -s 127.0.0.1:5555 exec-out "screencap | gzip -1" ` ret 0 , cost 862 ms , stdout size: 2074904 , socket size: 0
[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] OcrPack::recognize | roi: [ 500, 50, 300, 150 ]
[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | enter
[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | leave, 93 ms
@@ -122,20 +124,21 @@ Interpreting the logs can be helpful in identifying any issues with the program.
[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | enter
```
In this log, you can see that:
In this log, you can see:
- `"taskchain"` represents the task currently in progress.
- `"details"` is the content of the task, including the fields to be recognized (`to_be_recognized`) and the current number of retries (`cur_retry`) and the total number of retries (`retry_times`).
- `"first"` represents the start of the task.
- `"taskid"` is the task number.
- `"class"` and `subtask` represent the class and subtask of the task, respectively.
- `"pre_task"` represents the previous task.
In addition, the execution of the command (e.g. `Call`) and the `OCR` information (e.g. `OcrPack::recognize`) are recorded in the log.
- `taskchain` represents the currently running task.
- `details` is task content, including fields to be recognized (`to_be_recognized`), current retry count (`cur_retry`), and total retry count (`retry_times`).
- `first` represents task start.
- `taskid` is the task number.
- `class` and `subtask` represent task class and subtask respectively.
- `pre_task` represents the previous task.
For example, in this log, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` means that the task has been attempted to be recognized 10 times, and the maximum number of times is 20. After the maximum number of times is reached, the task will be skipped and an error will be reported, and the next task will be performed. If there are no issues with the previous task, it is likely that there is a problem with the recognition here. To troubleshoot this issue, you can check the tasks mentioned in the log to see if there is a corresponding template file, if the `text` field of the corresponding task is incorrect, or if the `roi` range for task recognition is incorrect, and make any necessary modifications.
Additionally, the log records command execution (like `Call`) and `OCR` information (like `OcrPack::recognize`).
By looking at the corresponding template image, you may find that there is a template for this image in the EN client template folder, but the size is larger than the image in template folder for the ZH-CN client . This could cause the `roi` in ZH-CN client to not be recognized in the EN client, so you may need to modify the corresponding task's `roi` in the EN client's `task.json` file to match the size of the image in the EN client.
In this log, `"to_be_recognized"`, `"cur_retry":3,"retry_times":20` indicates it has repeatedly tried recognition 3 times, with maximum recognition attempts of 20. After reaching maximum attempts, it will skip the task and report error, continuing to the next task. If previous tasks had no issues, we can basically determine there's a recognition problem here. We need to check tasks mentioned in the log to see if there's a corresponding `template file`, if the corresponding task's `text` is incorrect, if task recognition `roi` range is correct, to find and fix the problem.
## Submit your changes
By checking the corresponding template image, we found there's a template for this image in the EN client template folder, but it's significantly larger than the CN client image, causing CN client's `roi` to fail recognition on EN client. So we need to modify the corresponding task `roi` in EN client's `task.json` to match EN client image size.
Check out [Github Pull Request Guide](./pr-tutorial.md)
## Submit Your Changes
Please refer to [GitHub Pull Request Guide](./pr-tutorial.md)

View File

@@ -3,24 +3,24 @@ order: 3
icon: mingcute:git-pull-request-fill
---
# GitHub Pull Request User Guide
# Web-based PR Tutorial
This document is machine-translated. If you have the ability, please refer to the Chinese version. We would greatly appreciate any errors or suggestions for improvement.
A GitHub Pull Request guide that even beginners can understand (\*´▽ )
::: warning
Many concepts in this tutorial have been simplified in order to make it more accessible to a wider audience, even at the expense of some elegance and accuracy.
For those who have experience using Git and programming knowledge, you may refer to the more advanced tutorial in [Development](./development.md)
This tutorial simplifies many concepts to make them accessible to more people. It includes some ~~inelegant but simple~~ operations and not entirely accurate explanations. Please go easy on us, experts.
If you have some git experience and programming background, ~~then why are you reading this~~, you can check out the more advanced tutorial [GitHub Pull Request Process Overview](./development.md)
:::
## Basic concepts and terminology
## Basic Concepts and Terminology
This chapter contains slightly dry content. If you're not interested, you can skip directly to the practical section below. If there is anything you don't understand, you can come back to read this chapter later.
This section might be a bit dry. Feel free to skip to the practical section below and come back here if you need clarification.
### Repository
"Repo" is short for "repository", which is the place where we store our code and other resource files.
Abbreviated as "repo", the place where we store our code and other resource files.
👇 You can think of the current web page and all of its contents as the repository for MAA (we usually refer to it as MAA's main repository).
👇 You can simply understand this webpage and all its contents as MAA's repository (we generally call it MAA's main repository)
```component Image1
{
@@ -35,11 +35,12 @@ This chapter contains slightly dry content. If you're not interested, you can sk
### Fork
To fork, literally meaning to make a copy of MAA's code, and then perform subsequent modifications and operations to avoid damaging the original repository.
Literally means to copy. Fork a copy of MAA's code so you can make subsequent modifications without breaking the original.
Although "copy" in Chinese might first remind us of the "copy" operation, "fork" doesn't have a clear translation, so we usually use the English term directly, like "fork a copy of the code."
Since it's a copy, let's assume it's called `MAA (1)`.
To distinguish it from the original repository, we usually refer to the original MAA repository as "main repository" or "upstream".
Since everyone can make a copy of their own, the copied repository is called a "personal repository" or "origin".
Since it's a copy, it becomes `MAA (1)` (just kidding)
To distinguish from the original repository, we generally call the original MAA repository the "main repository" or "upstream repository."
Since everyone can fork their own copy, the copied version is called a "personal repository" or "origin repository."
```component Image1
{
@@ -54,11 +55,12 @@ Since everyone can make a copy of their own, the copied repository is called a "
### Pull Request
Continuing from the previous section, after you have made changes to your forked personal repository, how do you provide the changes to the main repository? This is when you can open a pull request (PR) to request that your modified content be added to the main repository.
Abbreviated as PR. "Pull request" sounds strange when literally translated, ~~and it's too many characters to type~~, so everyone usually just says "make a PR."
Following the above, after you fork your personal repository and make modifications, how do you contribute your changes to the main repository? This is when you can open a PR to request that your modifications be added to the main repository.
Of course, since it's a "request", it naturally requires approval. MAA Team may provide feedback on your modifications, but our feedback may not necessarily be entirely correct. Let's have a reasonable discussion together~
Of course, since it's a "request," it naturally needs approval. MAA Team members might provide feedback on your modifications, though our opinions aren't necessarily always correct - let's discuss reasonably~
👇 The following are the PRs currently submitted by contributors and awaiting approval from MAA Team.
👇 Below are PRs currently submitted by contributors, waiting for approval
```component Image1
{
@@ -73,12 +75,14 @@ Of course, since it's a "request", it naturally requires approval. MAA Team may
### Conflict
Assuming that there is a file called A in the main repository with the content 111. You forked a copy and changed its content to 222. However, just as you were about to submit the PR, another person named Zhangsan forked a copy and submitted a PR with changes to the A file, changing it to 333.
Now we have a conflict, as both of you have modified the A file but in different ways. This conflict can be difficult to resolve, and here we are only explaining the concept to help you understand what has happened when you encounter it, without going into the details of the solution.
Imagine there's a file A in the main repository with content "111."
You fork a copy and change its content to "222," but just as you're about to submit a PR, someone else also forks a copy, submits a PR, and changes file A to "333."
Now we see that both of you modified file A differently. Whose version should we listen to? This is a Conflict.
Conflicts are somewhat troublesome to resolve. This section only explains the concept to help you understand what's happening when you encounter one.
## Full Process of Pure Web-based PR Operation
## Complete Web-based PR Process
1. First, go to the MAA main repository and click the button in the top right corner to fork a copy of the code.
1. First, enter MAA's main repository and click the Fork button in the upper right corner to fork a copy of the code
```component Image1
{
@@ -91,7 +95,7 @@ Now we have a conflict, as both of you have modified the A file but in different
}
```
2. Then, click on 'Create Fork' directly.
2. Then directly click "Create Fork"
```component Image1
{
@@ -104,170 +108,49 @@ Now we have a conflict, as both of you have modified the A file but in different
}
```
3. You will be taken to your personal repository, which will have a title of "your_name/MaaAssistantArknights", with a small note below stating "forked from MaaAssistantArknights/MaaAssistantArknights" (copied from the MAA main repository).
3. You'll arrive at your personal repository. You can see the title is "YourName/MaaAssistantArknights" with small text below saying "forked from MaaAssistantArknights/MaaAssistantArknights"
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-3-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-3-dark.png"
}
]
}
```
4. Find the file you want to modify. You can click "Go to file" for global search, or browse through the folders below if you know where the file is
4. Find the file you want to edit. You can click 'Go to file' to search globally, or you can browse through the folders below if you know where the file is located.
5. After opening the file, directly click the ✏️ in the upper right corner of the file to edit
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-4-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-4-dark.png"
}
]
}
```
6. Start editing! (For resource files, we recommend testing modifications in your local MAA folder first, confirming they work before pasting into the webpage to avoid errors)
5. After opening the file, click on the ✏️ icon on the top right corner of the file to start editing.
7. After editing, click the button in the upper right corner to open the commit page and write what you changed
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-5-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-5-dark.png"
}
]
}
```
We have a simple commit title [naming format](https://www.conventionalcommits.org/en/v1.0.0/). It's best to follow it, but if you really can't understand it, you can write something simple first.
6. Make your changes! (If it's a resource file, we recommend testing the changes in your local MAA folder before pasting them in the web page to avoid errors).
7. Once you've finished editing, click the button 👇 in the top right corner to open the commit page and write a brief description of what you changed.
8. Have a second file to modify? Discovered an error after finishing? No problem! Just repeat steps 4-7!
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-7-1-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-7-1-dark.png"
}
]
}
```
9. After all modifications are complete, make a PR! Click "Code" to return to your **personal repository's** homepage
If there's a "Compare & Pull Request" button, that's great - click it directly!
If not, don't worry - click the "Contribute" button below, then "Open Pull Request" - it's the same thing.
We have a simple commit title [naming format](https://www.conventionalcommits.org/zh-hans/v1.0.0/), which you should try to follow. However, if you find it difficult to understand, you can just write something for now.
10. You'll arrive at the main repository's PR page. Please verify that what you want to PR is what you intend to submit.
As shown in the image, there's a leftward arrow in the middle, requesting to merge the right side's PersonalName/MAA dev branch into the main repository/MAA dev branch.
Scrolling down shows the differences between these two branches - what you've changed.
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-7-2-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-7-2-dark.png"
}
]
}
```
Then write a title and specific content of your modifications, then click confirm.
PR titles also need to follow the [naming format](https://www.conventionalcommits.org/en/v1.0.0/). If you still can't understand it, you can write something simple first.
8. Need to edit another file? Made a mistake and want to change it again? No problem! Simply repeat steps 4-7 for the other file.
9. When all changes are made, create a Pull Request by going to the Pull Request tab in your personal repository.
If there is a "Compare & Pull Request" button, that's great, just click it!
If not, don't worry, clicking "Open Pull Request" below is also the same.
11. Wait for MAA Team members to review! They might also provide feedback
👇 For example (purely for entertainment, don't take it seriously)
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-9-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-9-dark.png"
}
]
}
```
12. If team members say to modify some small issues, return to **your personal repository** and repeat steps 4-7!
Note: you don't need to repeat steps 1-2 (re-fork) and steps 9-10 (re-Pull Request). Your current Pull Request is still pending review, and subsequent modifications will directly enter this Pull Request.
👇 For example, you can see an additional modification entry at the bottom
10. Now you are in the main repository, please double-check the changes you want to PR.
As shown in the figure, there is a leftward arrow, which means you want to merge the dev branch from your forked repository "your_name/MAA" to the dev branch of the main repository "MAA".
Scrolling down shows the differences between these two branches, indicating what changes you have made.
13. Once team members approve, everything is complete! Your modifications have entered MAA's main repository!
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-10-1-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-10-1-dark.png"
}
]
}
```
14. Next time you want to submit another PR, first return to your personal repository's homepage and click "Sync fork" to synchronize your repository with the main repository.
Note here: if there's a red "Discard 1 commit," click the red one; if not, then click the green "Update branch."
You can then repeat steps 4-10 to make modifications again.
Then, write a title and description of your changes, and click "Create Pull Request".
The PR title should also follow the [naming format](https://www.conventionalcommits.org/zh-hans/v1.0.0/). However, if you still don't understand it, you can also just write something for now.
**After version release**, your GitHub avatar will automatically be added to the contributors list. Thank you very much for your selfless contributions!
~~Why are they all anime characters? Oh wait, I am too, never mind then~~
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-10-2-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-10-2-dark.png"
}
]
}
```
11. Just wait for the MAA Team members to review it! Of course, they may also provide some comments,
👇 for example (for entertainment purposes only, do not take it seriously):
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-11-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-11-dark.png"
}
]
}
```
12. If they request further changes, go back to **your personal repository** and repeat steps 4-7!
Note that you do not need to redo step 1-2 (re-fork) or step 9-10 (re-Pull Request), your current Pull Request is still pending review, and subsequent changes will be added directly to this Pull Request.
👇 For example, you can see that "revised demo" has been added at the bottom.
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-12-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-12-dark.png"
}
]
}
```
13. Once the experts approve the PR, you're all set! Your changes have been merged into the main MAA repository!
14. If you want to submit another PR next time, please first go back to the homepage of your personal repository and click 'Sync fork' to synchronize your repository with the main repository.
Note here: If there is a red 'Discard 1 commit', click the red one. If there isn't, then click the green 'Update branch'.
Next, you can repeat steps 4-10 to make further modifications.
```component Image1
{
"imageList": [
{
"light": "images/zh-cn/pr-tutorial/pr-14-1-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-14-1-dark.png"
},
{
"light": "images/zh-cn/pr-tutorial/pr-14-2-light.png",
"dark": "images/zh-cn/pr-tutorial/pr-14-2-dark.png"
}
]
}
```
**After the version is released**, your GitHub avatar will automatically be added to the contributors list. Thank you very much for your selfless dedication!
::: tip Contributors/Participators
Thank you to everyone involved in development and testing. Your help is going to ~~Make MAA Great Again~~! (\*´▽ )
::: tip Contributors
Thanks to all friends who participated in development/testing. Everyone's help makes MAA better and better! (\*´▽ )
[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=105&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
:::

View File

@@ -28,7 +28,7 @@ type = "StartUp" # The type of the task
params = { client_type = "Official", start_game_enabled = true } # The parameters of the task
```
The specific task types and parameters can be found in the [MAA Integration Document][task-types]. Note that maa-cli does not validate parameter names and values, and no error message will be generated even if an error occurs unless MaaCore` detects an error at runtime.
The specific task types and parameters can be found in the [MAA Integration Document][task-types]. Note that maa-cli does not validate parameter names and values, and no error message will be generated even if an error occurs unless MaaCore detects an error at runtime.
### Task variants and conditions
@@ -61,9 +61,9 @@ params = { plan_index = 2 }
The `condition` field is used to determine whether the variant should be used,
and the `params` field of the matched variant will be merged into the parameters of the task.
**Note**: If the `filename` field is a relative path, it will be relative to `$MAA_CONFIG_DIR/infrast`. Besides, the custom infrastructure plan file will not be read by `maa-cli` but MaaCore. So the format of the file must be `JSON` and the time period defined in the file will not be used to select the corresponding sub-plan. So you must specify the `plan_index` field in the parameters of the task to use the correct infrastructure plan in the corresponding time period. This will ensure that the correct infrastructure plan is used in the appropriate time period.
**Note**: If the `filename` field is a relative path, it will be relative to `$MAA_CONFIG_DIR/infrast`. Additionally, the custom infrastructure plan file will not be read by `maa-cli` but by MaaCore. Therefore, the file format must be `JSON` and the time period defined in the file will not be used to select the corresponding sub-plan. You must specify the `plan_index` field in the task parameters to use the correct infrastructure plan in the corresponding time period. This ensures that the correct infrastructure plan is used at the appropriate time.
Besides of `Time` condition, there are also `DateTime`, `Weekday`, `DayMod` conditions.
Besides the `Time` condition, there are also `DateTime`, `Weekday`, and `DayMod` conditions.
`DateTime` condition is used to specify a specific date-time period,
`Weekday` condition is used to specify some days in a week,
`DayMod` condition is similar to `Weekday`, but the period can be specified by `divisor` and `remainder`.
@@ -85,13 +85,13 @@ params = { stage = "CE-6" }
params = { stage = "1-7" }
```
All the above conditions related to time have a `timezone` field, which is used to specify the timezone of the condition. The value of `timezone` can be an offset of UTC, like `8` or `-7`, or a name of the client type of game, like `Official`. Note, even though the official server is in China, the timezone of the official server is `UTC+4` instead of `UTC+8`, because the start of the game day is `04:00:00` instead of `00:00:00`. When the `timezone` is omitted, the condition will be matched in the local timezone of the system.
Besides of above conditions, there is a condition `OnSideStory` which depends on hot update resource to check if there is any opening side story. Thus, the condition of fight `SL-8` can be simplified as `{ type = "OnSideStory", client = "Official" }`, where the `client` is the client type of game.
All the above conditions related to time have a `timezone` field, which can be an offset from UTC (e.g., `8` for UTC+8) or a client type (e.g., `"Official"`). Note that the official server timezone is UTC+4, not UTC+8, because the game day starts at 04:00:00 rather than 00:00:00. If timezone is omitted, your local system timezone is used.
Beside of above basic condition, `{ type = "And", conditions = [...] }` `{ type = "Or", conditions = [...] }`, and `{ type = "Not", condition = ... }` can be used for logical combination of conditions.
In addition to the above conditions, there's a `OnSideStory` condition that uses hot-update resources to check if there are any active events. For example, the condition to farm `SL-8` during a summer event can be simplified to `{ type = "OnSideStory", client = "Official" }`, where `client` is your game client type. Using this condition means you only need to update the stage to farm when an event changes, without manually editing event dates.
By the combination of of above conditions, you can define an infrastructure plan for multiple days,
here is an example of 6 plans for 2 days:
Besides the basic conditions, you can use `{ type = "And", conditions = [...] }`, `{ type = "Or", conditions = [...] }`, and `{ type = "Not", condition = ... }` for logical combinations.
By combining these conditions, you can define infrastructure plans spanning multiple days. Here's an example of 6 plans for 2 days:
```toml
[[tasks]]
@@ -109,16 +109,14 @@ filename = "normal.json"
condition = {
type = "And",
conditions = [
# The divisor use to specify the period, the remainder use to specify the offset
# The offset is equal to num_days_since_ce % divisor
# The num_days_since_ce is the number of days since the Common Era, 0001-01-01 is the first day
# The offset of current day can be got by `maa remainder <divisor>`
# for 2024-01-27, num_days_since_ce is 738,912,
# the offset of 2024-01-27 is 738,912 % 2 = 0
# so this condition will be matched on 2024-01-27
# The divisor specifies the period, the remainder specifies the offset
# The offset equals num_days_since_ce % divisor
# num_days_since_ce is the number of days since Common Era (0001-01-01 is day 1)
# You can get the current day's offset with `maa remainder <divisor>`
# For 2024-01-27, num_days_since_ce is 738,912
# The offset is 738,912 % 2 = 0, so this condition matches on 2024-01-27
{ type = "DayMod", divisor = 2, remainder = 0 },
{ type = "Time", start = "04:00:00", end = "12:00:00" },
]
}
params = { plan_index = 0 }
@@ -136,7 +134,7 @@ params = { plan_index = 1 }
# The third shift, 20:00:00 (first day) - 04:00:00 (second day)
[[tasks.variants]]
# Note, we must use Or condition here, otherwise the second day 00:00:00 - 04:00:00 will not be matched
# Note: we must use Or condition here to properly handle the time across midnight
condition = {
type = "Or",
conditions = [
@@ -192,9 +190,9 @@ condition = {
params = { plan_index = 5 }
```
With the default strategy, if multiple variants are matched, only the first one will be used. If the condition is not given, the variant will always be matched. So you can put a variant without condition at the end of variants.
With the default strategy, if multiple variants are matched, only the first one will be used. If no condition is given, the variant will always be matched. So you can put a variant without condition at the end as a default case.
The strategy of matching variants can be changed by `strategy` field:
The strategy for matching variants can be changed with the `strategy` field:
```toml
[[tasks]]
@@ -226,11 +224,11 @@ params = { stage = "SL-8" }
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
```
The outcome stage of this example should be identical to the previous one, but expiring medicine will be used on Sunday night additionally.
With the `merge` strategy, if multiple variants are matched, the parameters of all matched variants will be merged. If multiple variants have the same parameters, the last one will be used.
This example will yield the same stage selection as the previous one, but will additionally use expiring medicine on Sunday night.
With the `merge` strategy, if multiple variants are matched, the parameters of all matched variants will be merged. If multiple variants have the same parameter keys, the later ones will override earlier ones.
If no variant is matched, the task will not be executed,
which is useful when you want to only run a task in some conditions:
which is useful when you want to only run a task under certain conditions:
```toml
# Mall after 18:00
@@ -241,9 +239,9 @@ type = "Mall"
condition = { type = "Time", start = "18:00:00" }
```
### User input
### User Input
In some cases, you may want to input some value at runtime, instead of hard code it in the task file. Such as the stage to fight, the item to buy, etc. You can specify the value as `Input` or `Select` type:
For some tasks, you might want to input values at runtime rather than hardcoding them in the task file. You can set parameters to `Input` or `Select` type:
```toml
[[tasks]]
@@ -261,9 +259,9 @@ alternatives = [
"SL-7", # will be displayed as "1. SL-7"
{ value = "SL-8", desc = "Manganese Ore" } # will be displayed as "2. SL-8 (Manganese Ore)"
]
default_index = 1 # the index of default value, start from 1, if not given, empty value will be re-prompt
default_index = 1 # the index of default value, start from 1, if not given, empty input will re-prompt
description = "a stage to fight in summer event" # description of the input, optional
allow_custom = true # whether allow input custom value, default to false, if allow, non-integer value will be treated as custom value
allow_custom = true # whether to allow custom value input, default is false; if true, non-integer inputs are treated as custom values
# Task without input
[[tasks.variants]]
@@ -273,30 +271,29 @@ params = { stage = "CE-6" }
# Input a stage to fight
[[tasks.variants]]
# Set the stage to a `Input` type with default value and description
# Set the stage to an `Input` type with default value and description
[tasks.variants.params.stage]
default = "1-7" # default value of stage, optional (if not given, user can input empty value to re-prompt)
default = "1-7" # default value of stage, optional (if not given, empty input will re-prompt)
description = "a stage to fight" # description of the input, optional
# query the medicine to use only when stage is 1-7
[tasks.variants.params.medicine]
# a parameter can be optional with `optional` field
# if the condition is not matched, the parameter will be ignored
# the `condition` field can be used to specify the condition of the parameter
# where the condition can be a table, whose keys are name of other parameters and values are the expected value
# a parameter can be conditional based on other parameter values
# the condition uses a table where keys are other parameter names and values are the expected values
# this condition means "only prompt for medicine when stage is 1-7"
conditions = { stage = "1-7" }
default = 1000
description = "medicine to use"
```
For an `Input` type, a prompt will be shown to ask the user to input a value. If the default value is given, it will be used if the user inputs an empty value, otherwise, it will re-prompt.
For `Select` type, a prompt will be shown to ask the user to input an index or custom value (if `allow_custom` is `true`). If the default index is given, it will be used if the user inputs an empty value, otherwise, it will re-prompt.
For an `Input` type, a prompt will be shown to ask the user to input a value. If a default value is given, it will be used when the user inputs an empty value; otherwise, it will re-prompt.
For a `Select` type, a prompt will be shown to ask the user to input an index or custom value (if `allow_custom` is `true`). If a default index is given, it will be used when the user inputs an empty value; otherwise, it will re-prompt.
`--batch` option can be used to run tasks in batch mode, which will use the default value for all inputs and panic if no default value is given.
The `--batch` option can be used to run tasks in batch mode, which will use default values for all inputs and error if no default value is given.
## MaaCore related configurations
## MaaCore Related Configurations
The related configuration files of MaaCore is called "Profile" and located in `$MAA_CONFIG_DIR/profiles` directory. Each files in this directory is a profile, while the default profile is `default.toml`. If you want to use a profile other than the default one, you can specify it by `-p` or `--profile` option.
The MaaCore configuration files are called "Profiles" and located in the `$MAA_CONFIG_DIR/profiles` directory. Each file in this directory is a profile, with the default being `default.toml`. To use a different profile, specify it with the `-p` or `--profile` option.
The currently available configurations are:
@@ -325,150 +322,157 @@ kill_adb_on_exit = false
### Connection
The `connection` section is used to specify how to connect to the game:
The `connection` section specifies how to connect to the game:
```toml
[connection]
adb_path = "adb" # the path of adb executable, default to "adb", which means use adb in PATH
address = "emulator-5554" # the address of device, such as "emulator-5554" or "127.0.0.1:5555"
config = "General" # the config of maa, should not be changed most of time
adb_path = "adb" # path to adb executable, default is "adb" (uses PATH)
address = "emulator-5554" # device address like "emulator-5554" or "127.0.0.1:5555"
config = "General" # connection configuration, rarely needs changing
```
`adb_path` is the path of `adb` executable, you can set it to the absolute path of `adb` or or leave it empty if it is in PATH. The `address` is the address of the device used by `adb`, like `emulator-5554` or `127.0.0.1:[port]`, the port of some common emulators can be found in the [MAA FAQ][emulator-ports]. If the `address` is absent, the cli will try to find the device automatically by `adb devices`, if there are multiple online devices, the first one will be used. If cli can not find any device, it will try to use the default address `emulator-5554`. The `config` is used to specify some configurations of the host and emulator, whose default value is `CompatMac` on macOS, `CompatPOSIXShell` on Linux and `General` on other platforms. More optional configs can be found in `config.json` in the resource directory.
`adb_path` is the path to the `adb` executable - you can set its absolute path or leave it empty to use it from PATH. Most emulators include `adb`, so you can use their built-in version without installing separately. `address` is the address used by `adb`. For emulators, use `127.0.0.1:[port]` - common emulator ports are listed in the [FAQ][emulator-ports]. If no address is specified, maa-cli tries to find a device with `adb devices`, using the first one found or defaulting to `emulator-5554` if none are found. `config` specifies platform/emulator configurations - defaults to `CompatPOSIXShell` on Linux, `CompatMac` on macOS, and `General` on other platforms. More options are in the resource folder's `config.json`.
For some common emulators, you can use `preset` to use predefined configurations:
For common emulators, you can use `preset` for predefined configurations:
```toml
[connection]
preset = "MuMuPro"
adb_path = "/path/to/other/adb" # override predefined adb executable path
address = "127.0.0.1:7777" # override the predefined address
preset = "MuMuPro" # Use MuMu Pro emulator preset
adb_path = "/path/to/adb" # Override the preset's adb path if needed (optional)
address = "127.0.0.1:7777" # Override the preset's address if needed (optional)
```
Currently, there is only one preset `MuMuPro` for emulators. Issue and PR are welcome for the new preset.
Currently only `MuMuPro` preset is available. Issues and PRs for more presets are welcome.
There is a special preset `PlayCover`, used for the iOS app running on macOS by PlayCover. In this case, `adb_path` is ignored and `address` is used to specify the address of `MaaTools` set in `PlayCover`, more details can be found in the [PlayCover documentation][playcover-doc].
#### Special Presets
There are two special presets: `PlayCover (macOS)` and `Waydroid (Linux)`
- `PlayCover` is for connecting to iOS apps running natively on macOS through PlayCover. In this case, `adb_path` is ignored and `address` is the address of `PlayTools`. See [PlayCover documentation][playcover-doc] for details.
- `Waydroid` is for connecting to Android apps running natively on Linux through Waydroid. `adb_path` is still required. See [Waydroid documentation][waydroid-doc] for details.
### Resource
The `resource` section is used to specify the resource to use:
The `resource` section specifies which resources MaaCore should load:
```toml
[resource]
global_resource = "YoStarEN" # the global resource to use
platform_diff_resource = "iOS" # the platform diff resource to use
user_resource = true # whether use user resource
global_resource = "YoStarEN" # Non-Chinese resources
platform_diff_resource = "iOS" # Non-Android resources
user_resource = true # Whether to load user-defined resources
```
When your game is not in Simplified Chinese, you should set `global_resource` to non-Chinese resource. If you connect to the game with `PlayCover`, you should set `platform_diff_resource` to `iOS`.
Leave those two fields empty if you don't want to use global resource or platform diff resource. Besides, those two fields will also be set up automatically by maa-cli based on your task and connection type.
Lastly, if you want to use user resources, you should set `user_resource` to `true`. When `user_resource` is `true`, maa-cli will try to find user resources in `$MAA_CONFIG_DIR/resource` directory.
When using a non-Simplified Chinese game client, set `global_resource` to load non-Chinese resources. When using an iOS client, set `platform_diff_resource` to `iOS`. Both are optional - leave empty to not load these resources. These are also auto-set based on your `startup` task's `client_type` and when using `PlayTools` connection. To load user-defined resources, set `user_resource` to `true`, which loads resources from `$MAA_CONFIG_DIR/resource`.
### Static options
The `static_options` section is used to configure MAA static options:
The `static_options` section configures MaaCore static options:
```toml
[static_options]
cpu_ocr = false # whether use CPU OCR, CPU OCR is enabled by default
gpu_ocr = 1 # the ID of your GPU, leave it to empty if you don't want to use GPU OCR
cpu_ocr = false # Whether to use CPU OCR (enabled by default)
gpu_ocr = 1 # GPU ID for GPU OCR; leave empty to use CPU OCR
```
### Instance options
The `instance_options` section is used to configure MAA instance options:
The `instance_options` section configures MaaCore instance options:
```toml
[instance_options]
touch_mode = "ADB" # touch mode to use, can be "ADB", "MiniTouch", "MaaTouch" or "MacPlayTools" (only for PlayCover)
deployment_with_pause = false # whether pause the game when deployment
adb_lite_enabled = false # whether use adb-lite
kill_adb_on_exit = false # whether kill adb when exit
touch_mode = "ADB" # Touch mode: "ADB", "MiniTouch", "MaaTouch", or "MacPlayTools"
deployment_with_pause = false # Whether to pause game during deployment
adb_lite_enabled = false # Whether to use adb-lite
kill_adb_on_exit = false # Whether to kill adb on exit
```
Note: If you connect to the game with `PlayCover`, the `touch_mode` will be ignored and `MacPlayTools` will be used.
Note: When using `PlayTools` connection, `touch_mode` is forced to `MacPlayTools` regardless of setting.
## CLI related configurations
## CLI Related Configurations
The CLI related configurations should be located in `$MAA_CONFIG_DIR/cli.toml`. Currently, it only contains one section: `core`:
CLI-related configurations should be in `$MAA_CONFIG_DIR/cli.toml`. Current configurations include:
```toml
# MaaCore install and update configurations
# MaaCore install and update configurations
[core]
channel = "Stable" # update channel, can be "Stable", "Beta" or "Alpha"
test_time = 0 # the time to test download mirrors in seconds, 0 to skip
# the url to query the latest version of MaaCore, leave it to empty to use default url
apit_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
channel = "Stable" # Update channel: "Alpha", "Beta", or "Stable" (default)
test_time = 0 # Time to test mirror speeds in seconds; 0 to skip, default is 3
# API URL to query latest MaaCore version; leave empty for default
api_url = "https://github.com/MaaAssistantArknights/MaaRelease/raw/main/MaaAssistantArknights/api/version/"
# Component installation config (not recommended to change)
[core.components]
library = true # whether install MaaCore library
resource = false # whether install resource resource
library = true # Whether to install MaaCore library
resource = true # Whether to install MaaCore resources
# CLI update configurations
[cli]
channel = "Stable" # update channel, can be "Stable", "Beta" or "Alpha"
# the url to query the latest version of maa-cli, leave it to empty to use default url
channel = "Stable" # Update channel: "Alpha", "Beta", or "Stable" (default)
# API URL to query latest maa-cli version; leave empty for default
api_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
# the url to download prebuilt binary, leave it to empty to use default url
# URL to download prebuilt binaries; leave empty for default
download_url = "https://github.com/MaaAssistantArknights/maa-cli/releases/download/"
[cli.components]
binary = true # whether install maa-cli binary
binary = true # Whether to install maa-cli binary
# hot update resource configurations
# Resource hot update configurations
[resource]
auto_update = true # whether auto update resource before running task
warn_on_update_failure = true # Whether to warn on update failure instead of panic
backend = "libgit2" # the backend of resource, can be "libgit2" or "git"
auto_update = true # Whether to auto-update resources before running tasks
warn_on_update_failure = true # Whether to warn instead of error on update failure
backend = "libgit2" # Hot update backend: "git" or "libgit2"
# the remote of resource
# Remote repository configuration
[resource.remote]
branch = "main" # Branch of remote resource repository
# URL of remote resource repository, leave it empty to use the default URL
url = "git@github.com:MaaAssistantArknights/MaaResource.git"
# If you want to use ssh, a certificate is needed which can be "ssh-agent" or "ssh-key"
# To use ssh-agent, set `use_ssh_agent` to true, and leave `ssh_key` and `passphrase` empty
# use_ssh_agent = true # Use ssh-agent to authenticate
# To use ssh-key, set `ssh_key` to path of ssh key,
ssh_key = "~/.ssh/id_ed25519" # Path of ssh key
# A Passphrase is needed if the ssh key is encrypted
passphrase = "password" # Passphrase of ssh key
# Store plain text password in configuration file is unsafe, so there are some ways to avoid it
# 1. set `passphrase` to true, then maa-cli will prompt you to input passphrase each time
branch = "main" # Branch of remote repository
# Repository URL; leave empty for default
# GitHub repositories support both HTTPS and SSH; HTTPS recommended
url = "https://github.com/MaaAssistantArknights/MaaResource.git"
# url = "git@github.com:MaaAssistantArknights/MaaResource.git"
# If using SSH, you need to provide authentication:
# 1. Using ssh-agent (recommended)
# use_ssh_agent = true # Use ssh-agent for authentication
# 2. Using SSH key file
ssh_key = "~/.ssh/id_ed25519" # Path to SSH key
# If your key is password-protected:
passphrase = "password" # Passphrase for SSH key
# Storing plaintext passwords is insecure. Alternatives:
# 1. Set passphrase to true to be prompted each time
# passphrase = true
# 2. set `passphrase` to a environment variable, then maa-cli will use the environment variable as passphrase
# 2. Use an environment variable
# passphrase = { env = "MAA_SSH_PASSPHRASE" }
# 3. set `passphrase` to a command, then maa-cli will execute the command to get passphrase
# which is useful when you use a password manager to manage your passphrase
# 3. Use a command output (useful with password managers)
# passphrase = { cmd = ["pass", "show", "ssh/id_ed25519"] }
```
**NOTE**:
- The `Alpha` channel of MaaCore is only available on Windows;
- The hot update resource can not work separately, it should be used with basic resources installed with MaaCore;
- If you want to use `git` backend, `git` command is required;
- If you want to fetch resources with ssh, the `ssh_key` is required;
- The `resource.remote.url` only affects first-time installation, it will be ignored when updating resource. If you want to change the remote URL, you should change it manually or delete the resource directory and reinstall the resources. The directory of the repository can be located by `maa dir hot-update`.
- The `Alpha` channel for MaaCore is only available on Windows
- Hot update resources require the basic resources installed with MaaCore
- Using the `git` backend requires the `git` command to be available
- SSH authentication requires either `ssh_key` configuration or `ssh-agent`
- The `resource.remote.url` only affects first installation; to change it later, modify it manually or delete and reinstall resources. Get the repository location with `maa dir hot-update`.
## Example of config file
## Example Configuration Files
- [Example configuration][example-config];
- [Configuration used by maintainer][wangl-cc-dotfiles].
- [Example configurations][example-config]
- [Maintainer's configuration][wangl-cc-dotfiles]
## JSON schema
## JSON Schema
The JSON schema of configuration files can be found at [`schemas` directory][schema-dir]:
JSON schemas for configuration files are in the [`schemas` directory][schema-dir]:
- The schema of the task configuration is [`task.schema.json`][task-schema];
- the schema of the MaaCore configuration file is [`asst.schema.json`][asst-schema];
- the schema of the CLI configuration file is [`cli.schema.json`][cli-schema].
- Task configuration schema: [`task.schema.json`][task-schema]
- MaaCore configuration schema: [`asst.schema.json`][asst-schema]
- CLI configuration schema: [`cli.schema.json`][cli-schema]
With the help of JSON schema, you can get auto-completion and validation in some editors with plugins.
With these schemas, you can get auto-completion and validation in supported editors with plugins.
[task-types]: ../../protocol/integration.md#list-of-task-types
[emulator-ports]: ../../manual/connection.md#obtain-port-number
[playcover-doc]: ../../manual/device/macos.md#%E2%9C%85-playcover-the-software-runs-most-fluently-for-its-nativity-%F0%9F%9A%80
[waydroid-doc]: ../../manual/device/linux.md#✅-waydroid
[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/crates/maa-cli/config_examples
[wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa
[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/crates/maa-cli/schemas/

View File

@@ -7,7 +7,7 @@ icon: ph:question-fill
## 1. How to use `$HOME/.config/maa` as the configuration directory on macOS?
Due to the limitation of [Directories](https://github.com/dirs-dev/directories-rs/), maa-cli uses the Apple-style configuration directory on macOS by default. However, the XDG-style configuration directory is more suitable for command-line programs. If you want to use the XDG style configuration directory, you can set the `XDG_CONFIG_HOME` environment variable, such as `export XDG_CONFIG_HOME="$HOME/.config"`, this will make maa-cli use the XDG style configuration directory. Or you can use the below command to create a symbolic link:
Due to the Rust library [Directories](https://github.com/dirs-dev/directories-rs/) using Apple-style directories on macOS by default, maa-cli also uses Apple-style configuration directories by default. However, XDG-style directories are more suitable for command-line programs. If you want to use XDG-style directories, you can set the `XDG_CONFIG_HOME` environment variable, such as `export XDG_CONFIG_HOME="$HOME/.config"`, which will make maa-cli use XDG-style configuration directories. If you want to use XDG-style configuration directories but don't want to set environment variables, you can use the following command to create a symbolic link:
```bash
mkdir -p "$HOME/.config/maa"

View File

@@ -47,7 +47,7 @@ Homebrew users can install maa-cli via the unofficial [tap](https://github.com/M
nix run github:Cryolitia/nur-packages#maa-cli-nightly
```
Stable is the maa-cli packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix), using the nixpkgs's Rust toolchain; Nightly is in [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix), uses the Beta Channel of Rust toolchain, automatically updates and builds for verification by Github Action daily.
Stable is packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix), using the nixpkgs Rust toolchain; Nightly is in [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix), using the Beta Channel Rust toolchain, automatically updated and built daily by GitHub Actions.
- Users using Homebrew on Linux please refer to the macOS installation method above.
@@ -96,6 +96,14 @@ maa-cli only provides an interface for MaaCore, it needs MaaCore and resources t
maa install
```
For Windows platform users, before running the `maa install` command, please run the following command as administrator in Command Prompt or PowerShell to install the required VC++ toolset:
- Windows:
```bat
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --uninstall-previous --accept-package-agreements --force
```
For users who installed via package managers, MaaCore can also be installed via package managers:
- Homebrew

View File

@@ -5,96 +5,98 @@ icon: material-symbols:summarize
# Usage
maa-cli is a command-line interface for MaaCore that automates tasks in the game Arknights. Additionally, maa-cli can manage MaaCore.
maa-cli's main functionality is to automate Arknights game tasks by calling MaaCore. Additionally, for convenience, maa-cli also provides functions to manage MaaCore.
## Manage MaaCore
maa-cli can install and update MaaCore and resources, just run the following commands:
maa-cli can install and update MaaCore and resources by running the following commands:
```bash
maa install # Install MaaCore and resources
maa update # Update MaaCore and resources
```
## Update maa-cli itself
## Update maa-cli Itself
maa-cli can update itself, just run the following command:
maa-cli can update itself by running the following command:
```bash
maa self update
```
**Note**: Users who install maa-cli via a package manager should use the package manager to update maa-cli, this command is invalid for these users.
**Note**: Users who installed maa-cli via a package manager should use the package manager to update maa-cli. This command will not work for those users.
## Initialize Configuration
Once MaaCore is installed, you can run tasks directly without additional configuration. The default configuration may not be suitable for all users. Therefore, you can initialize the configuration by running the following command:
Once MaaCore is installed, you can typically run tasks directly without additional configuration. However, the default configuration may not be suitable for all users, so you can initialize the configuration with:
```bash
maa init
```
With this command, you can configure [the relevant configurations of MaaCore][config-core] interactively.
With this command, you can interactively configure [MaaCore-related settings][config-core].
## Run Tasks
After installing and configuring MaaCore, you can run tasks. maa-cli supports two types of tasks: predefined tasks and custom tasks.
### Predefined tasks
### Predefined Tasks
- `maa startup [client]`: start the game client and enter the main screen, the `client` is the client type of game, leave it empty to don't start the game.
- `maa closedown [client]`: close the game client, the `client` is the client type of game, default is `Official`.
- `maa fight [stage]`: run a "fight" task, the `stage` is the stage to fight, like `1-7`, `CE-6`, etc.; if not given, the user will be prompted to input one.
- `maa copilot <maa_uri>...`: run a "copilot" task, the `maa_uri` is the URI of a copilot task, multiple URIs will be executed in sequence, `maa_uri` can be `maa://1234` or local file path `./1234.json`.
- `maa sscopilot <maa_uri>`: run a "sscopilot" task, the `maa_uri` is the URI of a sscopilot task.
- `maa roguelike [theme]`: run a "roguelike" task, the `theme` is the theme of roguelike, and available themes are `Phantom`, `Mizuki`, `Sami` and `Sarkaz`.
- `maa reclamation [theme]`: run a "reclamation" task, the `theme` is the theme of reclamation, and available themes are `Tales`.
For common tasks, maa-cli provides several predefined options:
The above tasks accept some parameters, you can view the specific parameters by `maa <task> --help`.
- `maa startup [client]`: Start the game and enter the main interface. `[client]` is the client type; leave empty to not start any game client.
- `maa closedown [client]`: Close the game client. `[client]` is the client type, defaulting to `Official`.
- `maa fight [stage]`: Run a combat task. `[stage]` is the stage name like `1-7`; leave empty to select the last or current stage.
- `maa copilot <maa_uri>...`: Auto-run copilot tasks. `<maa_uri>` is the task URI, multiple URIs will execute in sequence. `maa_uri` can be `maa://1234` or a local file path like `./1234.json`.
- `maa sscopilot <maa_uri>`: Auto-run Stationary Security Service tasks. `<maa_uri>` is the task URI.
- `maa roguelike <theme>`: Auto-run Integrated Strategy. `<theme>` is the theme, with options including `Phantom`, `Mizuki`, `Sami`, `Sarkaz`, and `JieGarden`.
- `maa reclamation <theme>`: Auto-run Reclamation Algorithm. `<theme>` is the theme, currently only `Tales` is available.
For example, if you want to open the game, use 3 sanity medicines to farm BB-7, and then close the game, you can run the following command:
These tasks accept various parameters. You can view the specific parameters with `maa <task> --help`.
For example, if you want to open the game, use 3 sanity potions to farm BB-7, and then close the game, you can run:
```bash
maa startup YoStarEN && maa fight BB-7 -m 3 && maa closedown
maa startup Official && maa fight BB-7 -m 3 && maa closedown
```
### Custom Tasks
Due to the multitude of tasks supported by MAA, maa-cli cannot provide predefined options for all tasks. Additionally, you may need to run multiple tasks as shown in the example above. To address this issue, maa-cli offers custom task functionality. Custom tasks allow for the combination of different tasks and provide finer control over the parameters of each task as well as the execution order. Furthermore, custom tasks support conditional statements, enabling you to decide whether to execute a task based on certain conditions or to execute a task with specific parameters. This can be used to automate your daily tasks. A custom task is defined in a configuration file. The location and format of the configuration file are described in the [Custom Task Document][custom-task]. After defining the configuration file, you can run the custom task by `maa run <task>`, where `<task>` is the name of the custom task, excluding the extension.
Due to MAA's support for numerous tasks, maa-cli cannot provide predefined options for everything. Additionally, you may need to run multiple tasks as in the example above. To address this, maa-cli offers custom task functionality. Custom tasks can combine different tasks, providing finer control over parameters and execution order. They also support conditional execution based on specific criteria, automating your daily routines. Custom tasks are defined via configuration files—see the [Custom Task Documentation][custom-task] for details on location and format. After creating a configuration file, run your custom task with `maa run <task>`, where `<task>` is the filename without extension.
### Task Summary
maa-cli will output a summary of the task after the task is terminated, including the running time of each subtask (start time, end time, running time). For some tasks, it will also output a summary of the task results:
Both predefined and custom tasks output summary information upon completion, including each subtask's runtime (start time, end time, duration). For certain tasks, result summaries include:
- `fight` task: stage name, times, sanity cost, and drop statistics;
- `infrast`: operators stationed in each facility, for the factory and trading post, it also includes the type of product;
- `recruit`: tags, star ratings, and status of each recruitment, as well as the total number of recruitments;
- `roguelike`: exploration times, investment times.
- `fight` task: Stage name, number of runs, sanity potions used, and drop statistics
- `infrast`: Operators assigned to each facility, including product types for factories and trading posts
- `recruit`: Tags, star ratings, and status for each recruitment, plus total recruitment count
- `roguelike`: Exploration count, investment count
If you don't want the task summary, you can turn it off by `--no-summary`.
If you don't want task summaries, disable them with the `--no-summary` parameter.
### Loggings
### Task Logging
maa-cli will output logs, the log output levels from low to high are `Error`, `Warn`, `Info`, `Debug`, and `Trace`. The default log output level is `Warn`. The log level can be set by the `MAA_LOG` environment variable, for example, `MAA_LOG=debug`. You can also increase or decrease the log output level by `-v` or `-q`.
maa-cli outputs logs with the following levels (low to high): `Error`, `Warn`, `Info`, `Debug`, and `Trace`. The default level is `Warn`. Set the log level via the `MAA_LOG` environment variable (e.g., `MAA_LOG=debug`) or use `-v` to increase and `-q` to decrease the level.
maa-cli will output logs to stderr by default. The `--log-file` option can output logs to a file, the logs are saved in `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log`, where `$(maa dir log)` is the log directory, you can get it by `maa dir log`. You can also specify the log file path by `--log-file=path/to/log`.
By default, logs go to standard error (stderr). The `--log-file` option can redirect logs to a file at `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log`, where `$(maa dir log)` is the log directory obtainable via `maa dir log`. You can also specify a custom log path with `--log-file=path/to/log`.
By default, all output logs will include a timestamp and a log-level prefix. You can change this behavior by the `MAA_LOG_PREFIX` environment variable. When set to `Always`, the prefix will always be included, when set to `Auto`, the prefix will be included when writing to the log file, and not included when writing to stderr, and when set to `Never`, the prefix will not be included even when writing to the log file.
All logs normally include a timestamp and level prefix. The `MAA_LOG_PREFIX` environment variable controls this behavior: `Always` always includes prefixes, `Auto` includes prefixes in log files but not in stderr output, and `Never` omits prefixes even in log files.
### Other subcommands
### Other Subcommands
Except for the above subcommands, maa-cli also provides other subcommands:
Besides the above commands, maa-cli provides additional subcommands:
- `maa list`: list all available tasks;
- `maa dir <dir>`: get the path of a specific directory, for example, `maa dir config` can be used to get the path of the configuration directory;
- `maa version`: get the version information of `maa-cli` and `MaaCore`;
- `maa convert <input> [output]`: convert a file in `JSON`, `YAML`, or `TOML` format to another format;
- `maa complete <shell>`: generate an auto-completion script;
- `maa activity [client]`: get the current activity information of the game, the `client` is the client type, default is `Official`.
- `maa cleanup`: clean up the cache of `maa-cli` and `MaaCore`.
- `maa import <file> [-t <type>]`: import a configuration file, the `file` is the path of the configuration file. The `-t` option can specify the type of the configuration file, such as `cli`, `profile`, `infrast`, etc.
- `maa list`: List all available tasks
- `maa dir <dir>`: Get a specific directory path, such as `maa dir config` for the configuration directory
- `maa version`: Get version information for `maa-cli` and `MaaCore`
- `maa convert <input> [output]`: Convert between `JSON`, `YAML`, or `TOML` format files
- `maa complete <shell>`: Generate auto-completion scripts
- `maa activity [client]`: Get current in-game activity information, with `[client]` defaulting to `Official`
- `maa cleanup`: Clean `maa-cli` and `MaaCore` caches
- `maa import <file> [-t <type>]`: Import a configuration file, with `-t` specifying the type (e.g., `cli`, `profile`, `infrast`)
More command usage can be viewed by `maa help`, and the usage of specific commands can be viewed by `maa help <command>`.
For more command information, use `maa help`. For specific command details, use `maa help <command>`.
[config-core]: config.md#maacore-related-configurations
[custom-task]: config.md#custom-tasks

View File

@@ -3,192 +3,247 @@ order: 3
icon: mdi:plug
---
# Connection
# Connection Settings
## Automatic Detection
## Auto Detection
MAA can automatically detect and fill in the ADB path, connection address, and connection present through the **currently running single emulator**.
MAA can automatically detect and fill in the ADB path, connection address, and connection configuration for a **single currently running emulator**.
As of MAA v5.7.0, the supported emulators and connection addresses for detection are as follows:
As of MAA v5.22.3, the following emulators and connection addresses are supported for detection:
- BlueStacks 5: `127.0.0.1:5555/5556/5565/5575/5585/5595/5554`
- MuMu Player 12: `127.0.0.1:16384/16416/16448/16480/16512/16544/16576`
- MuMu Player: `127.0.0.1:16384/16416/16448/16480/16512/16544/16576`
- 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`
- MEmu Play: `127.0.0.1:21503`
If detection fails, try launching MAA with UAC administrator privileges and retry detection. If it still fails, please refer to the manual setup below and verify whether the emulator and connection address are included in the list above.
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.
## ADB Path
:::info Technical Details
Automatic detection uses the emulator's ADB, but sometimes problems occur with automatic detection, then manual settings are required.
`Replace ADB` is to download the ADB provided by Google and then replace it. If you set up Google's ADB yourself, you can do it once and for all.
:::info Technical details
Auto detection uses the emulator's ADB. Manual configuration is only required if auto detection fails.
`Force Replace ADB` will download Google's ADB and use it automatically.
If ADB is available in the environment variables, just fill in `adb`.
:::
### Use the ADB provided by the emulator
### Use emulator's ADB
Go to the emulator installation path. In Windows, when the emulator is running, right-click the process in the Task Manager and click `Open the location of the file`.
Go to your emulator's installation directory. On Windows, you can right-click the process in Task Manager while the emulator is running and select `Open file location`.
There should be an exe file with `adb` in its name in the top-level or lower directory. You can search and select it.
Look for an exe file with `adb` in its name in the top-level or subdirectories. You can use search to find it.
:::details Examples
`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe`
:::
### Use ADB provided by Google
### Use Google's ADB
[Click](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) to download and unzip, then select `adb.exe`.
[Download here](https://dl.google.com/android/repository/platform-tools-latest-windows.zip), extract it, and select `adb.exe`.
We are recommended to extract it directly to the MAA folder, so that you can directly fill in `.\platform-tools\adb.exe` in the ADB path, and move it with MAA.
We recommend extracting it directly to the MAA folder so you can enter `.\platform-tools\adb.exe` as the ADB path, allowing it to move with the MAA folder.
## Connection Address
::: tip
The connection address of the emulator running on this computer should be `127.0.0.1:<port>` `emulator-<four numbers>`
Emulators running on your local machine should use addresses like `127.0.0.1:<port number>` or `emulator-<four digits>`.
:::
### Emulator documents and addressess for reference
### Emulator documentation and reference addresses
:::warning
The following links are Chinese websites, cuz no English websites were found. Maybe.
:::
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `127.0.0.1:5555`
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D): Emulator settings show current multi-instance ports.
- [MuMu Player](https://mumu.163.com/help/20240807/40912_1073151.html?maa): Multi-instance manager shows running ports in the top-right corner.
- [MuMu Player Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `127.0.0.1:16384`
- [MuMu Player 12](https://mumu.163.com/help/20230214/35047_1073151.html) `127.0.0.1:16384`
- [LD Player 9](https://help.ldmnq.com/docs/LD9adbserver) `emulator-5554`
- [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`
- [MEmu Play](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `127.0.0.1:21503`
For other emulators, please check [Zhao Qingqing's blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html).
For other emulators, refer to [Zhao Qingqing's blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html).
### Obtain Port Number
::: details Alternative methods
- MuMu 12: The running emulator ports can be found in the upper right corner of the MultiPlayer.
- Bluestacks 5: The current emulator ports can be viewed in the emulator settings.
- _TODO_
- Method 1: Check emulator ports using ADB commands
::: details Alternatives
- Method 1: Use the adb command to view the running port directly
1. Launch **one** emulator and make sure no other Android devices are connected to this computer.
2. Launch a terminal in the folder where the adb executable is.
3. Execute the following command.
1. Launch **one** emulator and ensure no other Android devices are connected to your computer.
2. Open a terminal in the folder containing the ADB executable.
3. Run the following command:
```sh
# Windows CMD
# Windows command prompt
adb devices
# Windows PowerShell
.\adb devices
```
An example of output:
Example output:
```text
List of devices attached
127.0.0.1:<port> device
emulator-<four numbers> device
127.0.0.1:<port number> device
emulator-<four digits> device
```
Use `127.0.0.1:<port>` or `emulator-<four numbers>` as the connection address.
Use `127.0.0.1:<port>` or `emulator-<four digits>` as your connection address.
- Method 2: Find established adb connections
- Method 2: Find established ADB connections
1. Do method 1.
2. Press `Win+S` to open the search bar, type `Resource Monitor` and open it.
3. Switch to the `Network` tab and look for the emulator process name in the name column of `Listening Port`, such as `HD-Player.exe`.
4. Make a note of all listening ports for the emulator process.
5. Find `adb.exe` in the name column of `TCP connection`. The port in the remote port column that is consistent with the emulator listening port is the emulator debugging port.
1. Follow Method 1.
2. Press `Windows key+S` to open search, type `Resource Monitor` and open it.
3. Go to the `Network` tab and find the emulator process name in the `Listening Ports` name column, such as `HD-Player.exe`.
4. Note all listening ports for the emulator process.
5. In the `TCP Connections` name column, find `adb.exe` and identify the remote port matching the emulator's listening port - this is the emulator's debug port.
:::
### Automatically Start Multiple Emulators
### BlueStacks with Hyper-V port changes on every startup
- If you need to operate multiple emulators simultaneously, you can copy the MAA folder multiple times, and use **different MAAs**, **the same adb.exe**, and **different connection addresses** to connect.
- Taking `BlueStacks International Version` as an example, two ways to start multiple emulators are introduced.
In `Connection Settings`, set `Connection Configuration` to `BlueStacks`, then check both `Auto Detect Connection` and `Re-detect Each Time`.
- Perform multiple operations by attaching commands to `HD-Player.exe`.
This should work in most cases. If connection still fails, you may have multiple emulator cores or issues requiring additional settings as explained below.
1. Start the corresponding emulator separately.
2. Open the Task Manager, find the corresponding emulator process, go to the Details tab, right-click the column above, click `Select Columns`, and check `Command Line`.
3. In the newly added `Command Line` column, find the content after `"...\Bluestacks_nxt\HD-Player.exe"`.
4. Fill in the found content, similar to `--instance Nougat32`, in `Startup Settings` - `Additional Commands`.
#### Specifying `Bluestacks.Config.Keyword`
Note: After the operation is completed, it is recommended to hide the `Command Line` column opened in `Step 2` to prevent freezing.
- Example:
```bash
Multi-instance 1:
Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe
Additional Commands: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights"
Multi-instance 2:
Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe
Additional Commands: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili"
```
The `--cmd launchApp --package` part starts and automatically runs the specified package name application after startup, which can be changed as needed.
- Perform multi-instance operation by using the shortcut of emulators or apps.
1. Open the multi-instance manager and add the corresponding emulator's shortcut.
2. Fill in the path of the emulator shortcut in `Startup Settings` - `Emulator Path`.
Note: Some emulators support creating app shortcuts, which can directly launch the emulator and open Arknights with the app shortcut.
- Example:
```bash
Multi-instance 1:
Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 1.lnk
Multi-instance 2:
Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 2 - Arknights.lnk
```
If using `Emulator Path` for multi-instance operation, it is recommended to leave `Additional Commands` in `Startup Settings` empty.
### The port number of BlueStack emulator Hyper-V is different every time it is started
:::warning
TODO: replace these Chinese emulators links with English ones
::: info Note
If you're using multi-instance or have multiple emulator cores installed, you'll need additional settings to specify which emulator number to use
:::
## Connection Present
In `.\config\gui.json`, search for the `Bluestacks.Config.Keyword` field containing `"bst.instance.<emulator number>.status.adb_port"`. Find the emulator number in the `BlueStacks_nxt\Engine` folder in the emulator path.
You need to select the configuration of the emulator you are using. If it is not in the list, select General Mode. If General Mode is not available please try and select any of the other available presents.
::: details Examples
Nougat64 core:
For specific differences, you can read the [source code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L65).
```json
"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port",
```
Pie64_2 core: (the number after the core name indicates a multi-instance core)
```json
"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port",
```
:::
#### Specifying `Bluestacks.Config.Path`
::: info Note
MAA now attempts to read the `bluestacks.conf` storage location from the registry. When this fails, you need to manually specify the configuration file path
:::
1. Find the `bluestacks.conf` file in the BlueStacks data directory
- International version default: `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`
- Chinese version default: `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf`
2. If this is your first time, run MAA once so it automatically generates the configuration file.
3. **First close** MAA, **then** open `gui.json`, find your current configuration name under `Configurations` (viewable in Settings-Switch Configuration, default is `Default`), search for the `Bluestacks.Config.Path` field, and enter the full path to `bluestacks.conf`. (Note: use escaped backslashes `\\`)
::: details Example
For `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`:
```json
{
"Configurations": {
"Default": {
"Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf"
// Other configuration fields, don't manually modify
}
}
}
```
:::
## Connection Configuration
Select the configuration matching your emulator. If not listed, choose General Configuration. If that doesn't work, try any other available configuration.
For specific differences, see the [source code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L65).
### MuMu Screenshot Enhanced Mode
Only Chinese or Arknights Edition MuMu 12 V4.0.0 and later versions are supported. Global Edition is not supported at this time. <!-- Chinese V3.8.13 -->
Requires official or Arknights-specific MuMu V4.1.26 or newer. <!-- Official V3.8.13 supports initial enhanced screenshots -->
1. SettingsConnection Settings, enable `Enable MuMu's screenshot enhancement mode`. MAA will attempt to automatically fill in the exec path through the registry when the switch is checked.
1. In `Settings` - `Connection Settings`, check `Enable MuMu Screenshot Enhanced Mode`. MAA will automatically try to get the installation path from the registry when you check this option.
2. `MuMu12 Emulator exec path` Fill in the path to the `MuMuPlayer-12.0` or `YXArkNights-12.0` folder. e.g. `C:\Program Files\Netease\MuMuPlayer-12.0`.
2. Enter the path to the `MuMu Player` or `MuMuPlayerGlobal-12.0` or `YXArkNights-12.0` folder in `MuMu Installation Path`, e.g., `C:\Program Files\Netease\MuMu Player`.
3. If using MuMu network bridging, check `MuMu network bridging mode` and manually enter the serial number of the corresponding emulator in MuMu Multi-Instance Manager, such as `0` for the main instance.
3. If using MuMu Network Bridge, check `MuMu Network Bridge Mode` and manually enter the number of the corresponding emulator in the MuMu multi-instance manager, such as `0` for the main instance.
### LD Screenshot Enhanced Mode
Only Chinese or Global LD Player 9 V9.1.32 and later versions are supported. <!-- Chinese V9.0.78 -->
Requires official or international LDPlayer 9 V9.1.32 or newer. <!-- Official V9.0.78 supports initial enhanced screenshots but has high-resolution issues that V9.1.29 fixes -->
1. SettingsConnection Settings, enable `Enable LD's screenshot enhancement mode`. MAA will attempt to automatically fill in the exec path through the registry when the switch is checked.
1. In `Settings` - `Connection Settings`, check `Enable LD Screenshot Enhanced Mode`. MAA will automatically try to get the installation path from the registry when you check this option.
2. `LD Emulator exec path` Fill in the path to the `LDPlayer9` folder. e.g. `C:\leidian\LDPlayer9\`
2. Enter the path to the `LDPlayer9` folder in `LD Installation Path`, e.g., `C:\leidian\LDPlayer9\`.
3. `Instance Number` Fill in the serial number (ID) of the corresponding emulator in LD Multiplayer. e.g. `0` for Main Multiplayer.
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.
## Touch Mode
1. [Minitouch](https://github.com/DeviceFarmer/minitouch)An Android touch eventer written in C uses `evdev` to provide a Socket interface for external programs to trigger touch events and gestures. Starting with Android 10, Minitouch no longer works when SELinux is `Enforcing`.<sup>[Source](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)A Java-based reimplementation of Minitouch by MAA, which uses Android's `InputDevice`, and added additional features. Availability of higher versions of Android is yet to be tested. ~~Help us do some testing~~
3. Adb InputDirectly call ADB to use Android's `input` command to perform touch operations. It has the highest compatibility and the slowest speed.
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.
## ADB Lite
An ADB Client independently implemented by MAA uses TCP to communicate directly with the ADB Server. Compared with the original ADB, it can avoid opening multiple ADB processes continuously and reduce performance overhead, but some screenshot methods are unavailable.<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
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>
It is recommended to enable it, but the specific advantages and disadvantages need feedback. ~~Help us do some testing x2~~
We recommend enabling it, but specific pros and cons need feedback. ~~Help us test it x2~~
## Running multiple MAA and emulator instances
::: info How to do it
To operate multiple emulators simultaneously, copy the MAA folder multiple times and use **different MAA instances**, **the same adb.exe**, and **different connection addresses** to connect.
:::
### Auto-starting multiple emulator instances
Using [BlueStacks International](./device/windows.md) as an example, here are two ways to auto-start multiple emulator instances:
#### Start via additional commands
1. Launch a single multi-instance emulator.
2. Open Task Manager, find the corresponding emulator process, go to the Details tab, right-click the column header, click `Select Columns`, and check `Command line`.
3. In the new `Command line` column, find the content after `...\Bluestacks_nxt\HD-Player.exe"`.
4. Add the content you found (similar to `--instance Nougat32`) to `Startup Settings` - `Additional Commands`.
::: note
After finishing, we recommend hiding the `Command line` column opened in `Step 2` to prevent slowdowns
:::
::: details Example
```text
Instance 1:
Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe
Additional Commands: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights"
Instance 2:
Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe
Additional Commands: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili"
```
The `--cmd launchApp --package` part auto-launches the specified package after startup; modify as needed.
:::
#### Start via emulator shortcuts
Some emulators support creating application shortcuts that directly launch the emulator and open Arknights.
1. Open the multi-instance manager and create shortcuts for the corresponding emulators.
2. Enter the emulator shortcut path in `Startup Settings` - `Emulator Path`
::: details Example
```text
Instance 1:
Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Instance 1.lnk
Instance 2:
Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Instance 2-Arknights.lnk
```
:::
When using `Emulator Path` for multi-instance operation, we recommend leaving `Startup Settings` -

View File

@@ -3,107 +3,106 @@ order: 4
icon: mingcute:android-fill
---
# Android Physical Device
# Android Physical Devices
::: warning
This method involves ADB debugging and requires connection to a computer, it is **not recommended** for beginners.
This method involves ADB command-line usage, has lower stability, and still requires computer connection. **Not recommended** for beginners.
:::
::: info Note
0. Please also check [Connection](../connection.md).
1. Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode, please switch to other touch modes or switch SELinux **temporary** to `Permissive` mode.
2. Due to the extreme complexity of the Android ecosystem, try to change the `Connection Configuration` in MAA `Settings` - `Connection` to `General Mode` or `Compatibility Mode` or `2nd Resolution` or `General Mode (Blocked exception output)` until one of the modes is working properly.
3. Since MAA only supports `16:9` ratio resolutions, devices with non-`16:9` or `9:16` screen ratios will need to be forced to change their resolution, which includes most modern devices. If the connected device has a native `16:9` or `9:16` screen resolution ratio, you can skip the `Change resolution' section. 4.
4. Switch your device's navigation method to something other than `Full Screen Gestures`, such as the `Classic Navigation Keys` to avoid misuse.
5. Please adjust the `Shaped Screen UI Adaptation` section in the in-game settings to 0 to avoid task errors.
0. Please also refer to [Connection Settings](../connection.md).
1. 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.
2. Due to the extreme complexity of the Android ecosystem, try changing the `Connection Configuration` in MAA `Settings` - `Connection Settings` to `General Mode`, `Compatibility Mode`, `2nd Resolution`, or `General Mode (Block Exception Output)` until one mode works properly.
3. Since MAA only supports `16:9` aspect ratios, devices with non-`16:9` or `9:16` screen ratios (including most modern devices) need to have their resolution forcibly changed. If your device's native screen ratio is `16:9` or `9:16`, you can skip the `Change Resolution` section.
4. Switch your device's navigation method to something other than `Full Screen Gestures`, such as `Classic Navigation Keys`, to avoid accidental operations.
5. Please set the `Notched Screen UI Adaptation` option in the game settings to 0 to avoid task errors.
:::
::: tip
Typical `16:9` ratio resolutions are `3840x2160` (4K), `2560x1440` (2K), `1920x1080` (1080P), `1280x720` (720P).
Typical `16:9` resolutions include `3840x2160` (4K), `2560x1440` (2K), `1920x1080` (1080P), and `1280x720` (720P).
:::
## Download, run adb debugging tool and connect the device
## Download and Run ADB Debug Tool to Connect Device
1. Download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it.
2. Open the extracted folder, clear the address bar and type `cmd` and enter. 3.
3. Type `adb` in the command prompt window that pops up, if it gives you a lot of help text in English, it will run successfully.
4. Turn on `USB debugging` on your mobile phone, this may be different for each brand of mobile phone, so please use a search engine. Manufacturers may provide additional options for USB debugging, such as `USB Installation` and `USB Debugging (Security Settings)` in MIUI, please enable them at the same time.
5. Connect your phone to your computer via data cable and enter the following command in the command prompt window you just got.
1. Download [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and extract it.
2. Open the extracted folder, clear the address bar, type `cmd`, and press Enter.
3. In the command prompt window that appears, type `adb`. If you see extensive help text, the command ran successfully.
4. Enable `USB Debugging` on your phone. The process varies by manufacturer, so use a search engine to find instructions. Manufacturers may provide additional USB debugging options, such as MIUI's `USB Installation` and `USB Debugging (Security Settings)` - enable these too.
5. Connect your phone to the computer with a data cable and enter the following command in the command prompt:
```bash
adb devices
```
- If executed successfully, it will give you a message that the ``USB debugging`` device is connected.
- When executed successfully, it will show connected USB debugging devices.
- Example of a successful connection:
```bash
List of devices attached
VFNDU1682100xxxx device
VFNDU1682100xxxx device
```
- **The alphanumeric combination in front of `device` is the serial number of the device, which also serves as the `connection address` of the MAA.**
- **The alphanumeric combination before `device` is the device serial number, which is also your MAA `Connection Address`.**
- For modern Android devices to perform `USB debugging`, you need to click the pop-up window on the debugged device to authorise it, if not authorised, the example is as follows:
- Modern Android devices require authorization on the device itself. Without authorization, you'll see:
```bash
List of devices attached
VFNDU1682100xxxx unauthorized
Unauthorised
VFNDU1682100xxxx unauthorized
```
- If you are prompted for unauthorised or the serial number of the device shows `offline`, you need to reboot the device and computer and try again. If the problem is still not solved, you can delete the `.android` folder under the current user's personal folder and reboot again to retry, please search for the exact location.
- If you consistently get "unauthorized" or "offline" status, restart both your device and computer. If that doesn't help, delete the `.android` folder in your user's personal directory and try again after restarting. Use search to find the exact location.
## Change resolution
## Change Resolution
::: tip
Mobile phone screen resolution is `short side*long side`, not `long side*short side` of computer monitor. Please determine the exact value according to your target device.
Mobile screen resolution is specified as `short edge × long edge`, not `long edge × short edge` as with computer monitors. Determine the appropriate values for your specific device.
:::
- If there is only one device within the device list above, you can change/restore the resolution directly by running the following command.
- If you only have one device in your device list, run these commands to change/restore resolution:
```bash
# View current resolution
adb shell wm size
# Restore the default resolution
# Restore default resolution
adb shell wm size reset
# Change resolution to 720p
# Change to 720p
adb shell wm size 720x1280
# Change resolution to 1080p
# Change to 1080p
adb shell wm size 1080x1920
```
- If there are multiple devices, you need to add the parameter `-s <target device serial number>` between `adb` and `shell`, as shown in the following example.
- If you have multiple devices, add the parameter `-s <target device serial number>` between `adb` and `shell`:
```bash
# View current resolution
adb -s VFNDU1682100xxxx shell wm size
# Restore the default resolution
# Restore default resolution
adb -s VFNDU1682100xxxx shell wm size reset
# Change resolution to 720p
# Change to 720p
adb -s VFNDU1682100xxxx shell wm size 720x1280
# Change resolution to 1080p
# Change to 1080p
adb -s VFNDU1682100xxxx shell wm size 1080x1920
```
- Some applications with irregular design may still have wrong layout after restoring the resolution, usually restarting the corresponding application or device can solve the problem.
- Some apps with irregular designs may still have layout issues after resolution restoration. Usually, restarting the app or device resolves this.
::: danger Warning
It is strongly recommended to restore the resolution **before** restarting the device next time, otherwise it may lead to unpredictable consequences depending on the device, ~~including but not limited to chaotic layout, touch misalignment, application flashback, unlocking, etc~~.
Strongly recommended to restore the default resolution **before** restarting your device. Otherwise, depending on your device, unpredictable consequences may occur, ~~including layout chaos, touch misalignment, app crashes, inability to unlock, etc~~.
:::
## Automating resolution changes
## Automate Resolution Changes
1. Create two new text files in the MAA directory and fill them with the following contents.
1. Create two text files in the MAA directory with the following content:
```bash
# Adjust resolution to 1080p
adb -s <target device serial number> shell wm size 1080x1920
# Reduce screen brightness (optional)
# Lower screen brightness (optional)
adb -s <target device serial number> shell settings put system screen_brightness 1
```
@@ -112,69 +111,69 @@ It is strongly recommended to restore the resolution **before** restarting the d
adb -s <target device serial number> shell wm size reset
# Increase screen brightness (optional)
adb -s <target device serial number> shell settings put system screen_brightness 20
# Return to desktop (optional)
# Return to home screen (optional)
adb -s <target device serial number> shell input keyevent 3
# Lock screen (optional)
adb -s <target device serial number> shell input keyevent 26
```
2. Rename the first file to `startup.bat` and the second file to `finish.bat`.
2. Rename the first file to `startup.bat` and the second to `finish.bat`.
- If you don't see the double confirmation dialogue box for changing extension after renaming, and the file icon doesn't change, please search for "How to display file extensions in Windows".
- If no confirmation dialog appears when changing the extension and the file icon doesn't change, search for "How to show file extensions in Windows."
3. In `Settings` - `Connection` - `Starts with Script` and `Ends with Script` of MAA, fill in `startup.bat` and `finish.bat` respectively.
3. In MAA's `Settings` - `Connection Settings`, set `Start Script` to `startup.bat` and `End Script` to `finish.bat`.
## Connecting to MAA
## Connect to MAA
### Wired connection
### Wired Connection
::: tip
A wired connection does not require any IP address or port, only the device serial number given by `adb devices`.
Wired connections don't need IP addresses or ports - just the device serial number from `adb devices`.
:::
1. Fill in the MAA `Settings` - `Connection` - `Connection address` with the serial number of the target device obtained above.
1. Enter the target device serial number from above into MAA's `Settings` - `Connection Settings` - `Connection Address`.
2. Link Start!
### Wireless Connection
- Make sure that the device and the computer are on the same LAN and can communicate with each other. Settings such as `AP Isolation`, `Guest Network`, etc. can prevent communication between devices, please refer to the documentation of the corresponding router.
- Wireless debugging is disabled after a device reboot and needs to be reset.
- Ensure your device and computer are on the same network and can communicate with each other. Router settings like `AP Isolation` or `Guest Network` can block device communication - check your router documentation.
- Wireless debugging is disabled after device restart and must be re-enabled.
#### To open a wireless port using `adb tcpip`
#### Using `adb tcpip` for Wireless Debugging
1. Enable wireless debugging by entering the following command in the command prompt window you just opened.
1. In the command prompt, enable wireless debugging:
```bash
adb tcpip 5555
# Add the -s parameter to specify the serial number if multiple devices are present.
# Add -s parameter to specify the serial number if multiple devices are connected
```
2. View the device IP address.
2. Find your device's IP address:
- Go to `Settings` - `WLAN` on your mobile phone and click on the currently connected wireless network to view the IP address.
- The IP address is different for different brands of devices, so please find it yourself.
- Go to your phone's `Settings` - `Wi-Fi`, tap the connected network to view the IP address.
- The location varies by manufacturer - search for instructions if needed.
3. Put `<IP>:5555` into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`.
3. Enter `<IP>:5555` in MAA's `Settings` - `Connection Settings` - `Connection Address`, e.g., `192.168.1.2:5555`.
4. Link Start!
#### Use `adb pair` to open the wireless port
#### Using `adb pair` for Wireless Debugging
::: tip
`adb pair` wireless pairing, i.e. connecting after pairing using `wireless debugging` in Developer Options on Android 11 and newer, avoids the need for a wired connection compared to `adb tcpip`.
`adb pair` wireless pairing (available in Android 11 and later via Developer Options) allows connection without a physical USB connection, unlike `adb tcpip`.
:::
1. Go to your phone's developer options, tap `Wireless debugging` and turn it on, tap OK, tap `Pair device using pairing code` and don't close the pop-up window that appears until pairing is complete. 2.
1. On your phone, go to Developer Options, tap `Wireless Debugging` and enable it. Tap `Pair device with pairing code` and keep the popup open until pairing completes.
2. To perform pairing.
2. Complete the pairing:
1. At the command prompt, type `adb pair <IP address and port given in the device pop-up>` and enter.
2. Type `<six-digit pairing code given in the device pop-up window>` and enter.
3. The window appears with something like `Successfully paired to <IP:port>` and the pop-up window on the device disappears automatically, and the computer name appears at the bottom in the paired devices.
1. In the command prompt, type `adb pair <IP address and port shown in the device popup>` and press Enter.
2. Enter the six-digit pairing code from the device popup and press Enter.
3. When you see `Successfully paired to <IP:port>`, the device popup will close automatically, and your computer's name will appear in the paired devices list.
3. Put the `<IP address and port>` given on the current device's screen into MAA `Settings` - `Connection` - `Connection Address`, e.g. `192.168.1.2:11451`, **must be different from the one you have just put in**.
3. Enter the IP address and port shown on your device screen into MAA's `Settings` - `Connection Settings` - `Connection Address`, e.g., `192.168.1.2:11451`. **This is different from the address used for pairing**.
4. Link Start!
#### Enable the wireless port with root privileges
#### Using Root to Enable Wireless ADB
~~If you have access to root, why do you need to read this document~~

View File

@@ -3,142 +3,146 @@ order: 3
icon: teenyicons:linux-alt-solid
---
# Linux Emulator and Container
# Linux Emulators and Containers
## Preparation
You can choose one of the following installation methods:
Choose one of the following installation methods:
### Use maa-cli
### Using maa-cli
[maa-cli](https://github.com/MaaAssistantArknights/maa-cli) is a simple CLI for MAA made with Rust. Please read installation and usage tutorials in [User Guide for CLI](../cli/).
[maa-cli](https://github.com/MaaAssistantArknights/maa-cli) is a simple command-line tool for MAA written in Rust. Please read the [CLI User Guide](../cli/) for installation and usage instructions.
### Use Wine
### Using Wine
The MAA WPF GUI can currently be run using Wine.
The MAA WPF GUI can currently be run through Wine.
#### Installation Steps
1. Go to the [.NET Release Page](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) to download and install the .NET **Desktop** Runtime for Windows.
1. Go to the [.NET download page](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) and download/install the Windows version of .NET **Desktop** Runtime.
2. Download MAA for Windows, unzip it and run `wine MAA.exe`.
2. Download the Windows version of MAA, extract it, and run `wine MAA.exe`.
::: info Note
You need to set the ADB path to [`adb.exe` for Windows](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) in the connection settings.
You need to set the ADB path to the [Windows version of `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) in the connection settings.
If you need to connect to USB devices via ADB, please run `adb start-server` outside of Wine first, i.e. connect to the native ADB server via Wine.
If you need to connect to USB devices via ADB, first run `adb start-server` outside of Wine to connect to the native ADB server through Wine.
:::
#### Use Linux native MaaCore (experimental feature)
#### Using Linux Native MaaCore (Experimental)
Download the [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/MaaWineBridge) source and build it, replace the Windows version with the generated `MaaCore.dll` (ELF file) in the same directory as the Linux native dynamic libraries (`libMaaCore.so` and dependencies).
Download and build the [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/MaaWineBridge) source code, replace the Windows version with the generated `MaaCore.dll` (ELF file), and place the Linux native dynamic libraries (`libMaaCore.so` and dependencies) in the same directory.
Running `MAA.exe` through Wine will load the Linux native libraries.
When running `MAA.exe` through Wine, it will load the Linux native libraries.
::: info Note
To use Linux native MaaCore, you need to set the ADB path to Linux native ADB in the connection settings.
When using the Linux native MaaCore, you need to set the ADB path to the Linux native ADB in the connection settings.
:::
#### Linux Desktop Integration (experimental feature)
#### Linux Desktop Integration (Experimental)
Desktop integration provides native desktop notification support and the ability to map fontconfig font configurations to WPF.
Desktop integration provides native desktop notification support and maps fontconfig font configurations to WPF.
Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in the same directory as `MAA.exe`.
Place the `MaaDesktopIntegration.so` generated by MAA Wine Bridge in the same directory as `MAA.exe` to enable this feature.
#### Known Issues
- Wine DirectWrite forces hinting to be enabled and does not pass DPI to FreeType, resulting in poor font display.
- When not using native desktop notifications, the popup notification will grab the system-wide mouse focus, making it impossible to operate other windows. This can be mitigated by enabling virtual desktop mode via `winecfg`, or disabling desktop notifications.
- Wine-staging users need to disable the `Hide Wine Version` option in `winecfg` in order for MAA to properly detect the Wine environment.
- Wine's Light theme causes some text colours in WPF to be abnormal, it is recommended to switch to no theme (Windows Classic theme) in `winecfg`.
- Wine uses the old XEmbed tray icon, which may not work properly under GNOME.
- Auto-update is not supported when using Linux native MaaCore (~~Updater: I think I should download a Windows version~~).
- Wine DirectWrite forces hinting and doesn't pass DPI to FreeType, resulting in poor font display.
- When not using native desktop notifications, popup notifications grab the system-wide mouse focus, making it impossible to interact with other windows. You can mitigate this by enabling virtual desktop mode in `winecfg` or disabling desktop notifications.
- Wine-staging users need to disable the `Hide Wine version` option in `winecfg` for MAA to correctly detect the Wine environment.
- Wine's Light theme causes text color issues in WPF. We recommend using no theme (Windows Classic theme) in `winecfg`.
- Wine uses the old XEmbed tray icon system, which may not work properly under GNOME.
- When using Linux native MaaCore, automatic updates are not supported (~~the updater thinks: I should download a Windows version~~)
### Use Python
### Using Python
#### 1. Installing dynamic library
#### 1. Installing MAA Dynamic Library
1. Download and extract `Linux library` in [MAA Website](https://maa.plus/), or install from linux software repository:
1. Download and extract the Linux dynamic library from the [MAA website](https://maa.plus/), or install from a software repository:
- AUR[maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights), edit the script according to the post-install instruction.
- AUR: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights), follow the post-installation instructions
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
2. Open `sample.py` in `./MAA-v{VERSION}-linux-{ARCH}/Python/`
2. Navigate to `./MAA-v{version}-linux-{architecture}/Python/` and open the `sample.py` file
> **Note**
> The precompiled version is built in a relatively new distro (Ubuntu 22.04), you may run into binary compatability problem, if libstdc++ in your environment is too old.
> Where you should reference to [Linux tutorial](../../develop/linux-tutorial.md), or run inside a container instead.
::: tip
The precompiled version includes dynamic libraries compiled on relatively new Linux distributions (Ubuntu 22.04). If your system has an older libstdc++ version, you might encounter ABI incompatibility issues.
You can refer to the [Linux Compilation Tutorial](../../develop/linux-tutorial.md) to recompile or use a container solution.
:::
#### 2. `adb` Settings
#### 2. ADB Configuration
1. Target to [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48)
1. Find the line [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/b4fc3528decd6777441a8aca684c22d35d2b2574/src/Python/sample.py#L62)
2. `adb` Tools Settings
2. ADB Tool Configuration
- If you use `avd` in `Android Studio` as your emulator, it contains `adb` that you can use it directly. Just fill in your `adb` path in `adb.exe`, you can usually find it in `$HOME/Android/Sdk/platform-tools/` , eg.:
- If using `Android Studio`'s `AVD` emulator, it comes with ADB. You can directly specify the ADB path to replace `adb.exe`, typically found in `$HOME/Android/Sdk/platform-tools/`, for example:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "avd_ID"):
```
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator's ADB address"):
```
- If you use other emulators, you have to install `adb` first: `$ sudo apt install adb` and then fill in the path of adb or just fill in `adb` if you had put it into the `PATH` environment variable.
- For other emulators, first install ADB: `$ sudo apt install adb`, then either specify the path or simply use `adb` if it's in your `PATH` environment variable.
3. Emulator `adb` ID Settings
3. Getting the Emulator's ADB Address
- You can use the adb tool directly: `$ ${adb_path} devices` , eg.:
- Use the ADB tool directly: `$ adb_path devices`, for example:
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
```shell
$ /home/foo/Android/Sdk/platform-tools/adb devices
List of devices attached
emulator-5554 device
```
- `emulator-5554` that the terminal returns is the ID of emulator adb, replacing `127.0.0.1:5555` with it, eg.
- The returned `emulator-5554` is the emulator's ADB address. Replace `127.0.0.1:5555` with it, for example:
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
```python
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
```
4. Now you can test: `$ python3 sample.py` , if return `连接成功` , you almost finish setting.
4. Now you can test with `$ python3 sample.py`. If it returns "Connection successful," you're ready to proceed.
#### 3. Tasks Settings
#### 3. Task Configuration
Customizing tasks: Reference to [AsstAppendTask](../../protocol/integration.md#asstappendtask) and modify [`# 任务及参数请参考 docs/集成文档.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) section in `sample.py`.
Custom tasks: Refer to the [Integration Documentation](../../protocol/integration.md) and modify the [`# Task parameters can be found in docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) section in `sample.py`
## Emulator Supports
## Emulator Support
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Requests: Resolution should be 16:9 and above 720p
Requirements: 16:9 screen resolution larger than 720p
Recommendation: x86\_64 architecture (R - 30 - x86\_64 - Android 11.0) with `Linux x64 动态库` in MAA
Recommended configuration: x86_64 architecture (R - 30 - x86_64 - Android 11.0) with MAA's Linux x64 dynamic library
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/)
Native x86\_64 architecture in high version of Android, light weight but easy to crash when running Arknights.
High Android versions include x86_64 framework. Lightweight but tends to crash when running Arknights.
We have not testing strictly, but adb functions and path have no error.
Not thoroughly tested yet, but ADB functionality and path retrieval work without issues.
## Containerized Android
## Containerized Android Support
> **Note**
> The following solutions are likely to depend on special kernel modules, make sure to have them installed accordingly.
::: tip
The following solutions typically require specific kernel modules. Please install the appropriate modules according to your distribution and the particular solution.
:::
### ✅ [Waydroid](https://waydro.id/)
Need to reset the resolution to 16:9 (You can set it above 720P):
After installation, you need to reset the resolution (to 16:9 ratio and greater than 720p, then restart):
```shell
waydroid prop set persist.waydroid.width 1280
waydroid prop set persist.waydroid.height 720
```
After restarting, record `IP address` in `Setting` - `About phone` , fill `${IP address}:5555` to the adb IP address in `sample.py` .
To set up ADB IP address: Go to `Settings` - `About` - `IP address`, note the first `IP`, and use `${recorded IP}:5555` in `sample.py` for the ADB IP.
If you are using amdgpu, `screencap` command may write messages to stderr, causing image decoding error.
Run `adb exec-out screencap | xxd | head` to check if there is something like `/vendor/etc/hwdata/amdgpu.ids: No such file...` in the output.
Modify screencap commands in `resource/config.json` from `adb exec-out screencap` to `adb exec-out 'screencap 2>/dev/null'` as a workaround.
If using amdgpu, the `screencap` command might output messages to stderr, causing image decoding failures.
You can run `adb exec-out screencap | xxd | head` and check if there's text like `/vendor/etc/hwdata/amdgpu.ids: No such file...` in the output.
If present, try changing the screenshot command in `resource/config.json` from `adb exec-out screencap` to `adb exec-out 'screencap 2>/dev/null'`.
### ✅ [redroid](https://github.com/remote-android/redroid-doc)
Arknights runs properly in Android 11 image. Do remember to expose port 5555 for adb.
Android 11 version images can run the game normally. Make sure to expose port 5555 for ADB.

View File

@@ -3,62 +3,62 @@ order: 2
icon: basil:apple-solid
---
# Mac Emulator
# macOS Emulators
## Apple Silicon Chips
### ✅ [PlayCover](https://playcover.io) (The software runs most fluently for its nativity 🚀)
### ✅ [PlayCover](https://playcover.io) (Runs most fluently as it's native 🚀)
Compatible in beta, plz submit issue marked with `MacOS` when encounter errors.
Experimental support. Please submit issues if you encounter problems, and include `MacOS` in the title.
P.S.: For the reason of `MacOS` mechanism itself, errors might occur when `PlayCover` is minimized and you switch to others windows. The errors of screenshot might crash `MAA`. Reference 👉🏻️[issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
Note: Due to macOS system limitations, screenshot issues may occur when minimizing the game window, switching to other windows while in Stage Manager, or moving the window to other desktops/screens. Related issue: [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
1. Requests: MAA version above v4.13.0-rc.1
0. Requirements: MAA version v4.13.0-rc.1 or newer
2. Download and install [fork version of PlayCover](https://github.com/hguandl/PlayCover/releases)
1. Download and install the [forked version of PlayCover](https://github.com/hguandl/PlayCover/releases).
3. Download [decrypted version of Arknights](https://decrypt.day/app/id1454663939), and then install in PlayCover.
2. Download the [decrypted Arknights client package](https://decrypt.day/app/id1454663939) and install it in PlayCover.
4. Right-click Arknights in PlayCover, choose `Setting` - `Jailbreak Bypass`, enable `Enable PlayChain`, `Enable Jailbreak Bypass (Alpha)`, `Insert Introspection Library`, `MaaTools`, then click `OK`.
3. Right-click on Arknights in PlayCover, select `Settings` - `Bypasses`, check `Enable PlayChain`, `Enable Jailbreak Detection Bypass`, `Insert Introspection Libraries`, `MaaTools`, then click `OK`.
5. Relaunch Arknights, `[localhost:${port number}]` will appear above, meaning launching is successful.
4. Now launch Arknights, which should run normally. The title bar will end with `[localhost:port]`, indicating successful activation.
6. In MAA, click `Settings` - `Connection Settings`, `Minitouch` choose `MacPlayTools`. `Connection Address` filling the content in `[]` .
5. In MAA, go to `Settings` - `Connection Settings`, set `Touch Mode` to `MacPlayTools`. For `Connection Address`, enter the content inside the `[]` from the title bar.
7. Finish, MAA is able to build connection. If errors occur in image recognition, you could try to set resolution to 1080P in PlayCover.
6. Setup complete! MAA should now connect successfully. If you encounter image recognition errors, try setting the resolution to 1080P in PlayCover.
8. 3-5 do not need to be repeated, you could just launch Arknights after that. While you have to repeat step 2 if Arknights is updated.
7. Steps 3-5 only need to be done once. After that, just launch Arknights. After each Arknights client update, you'll need to repeat step 2.
### ✅ [MuMu Emulator Pro](https://mumu.163.com/mac/)
Supported, but less thoroughly tested. Requires using a touch mode other than `MacPlayTools`. Related issue: [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Compatible
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.
### ✅ [BlueStacks Air](https://www.bluestacks.com/mac) (Free, optimized for Apple M-series chips)
Supported, tested, and can be connected via maatouch at `127.0.0.1:5555`.
Supported and tested. Can be connected using MaaTouch via `127.0.0.1:5555`.
You need to enable **"Android Debugging (ADB)"** in the emulator's **`Settings`** - **`Advanced`** section.
You need to enable `Android Debugging (ADB)` in the emulator's `Settings` - `Advanced` section.
## Intel Chips
::: tip
Due to a lack of manpower for Mac version development, updates are relatively slower. It is recommended to use Mac's built-in multi-system feature to install Windows and use the Windows version of MAA.
Due to limited development resources for the Mac version, updates are relatively slower. We recommend using Boot Camp to install Windows and using the Windows version of MAA instead.
:::
### ✅ [Bluestacks-CN 5](https://www.bluestacks.cn/)
### ✅ [BlueStacks](https://www.bluestacks.com/)
Fully compatible. Need to turn on `Settings` - `Engine Settings` - `Allow ADB connection`.
Fully compatible. You need to enable `Android Debug Bridge` in the emulator's `Settings` - `Advanced`.
### ✅ [Bluestacks 5](https://www.bluestacks.com/tw/index.html)
Fully compatible. Need to turn on `Settings` - `Advanced` - `Android Debug Bridge`.
### ✅ [Nox](https://www.yeshen.com/)
### ✅ [Nox Player](https://www.bignox.com/)
Fully compatible.
P.S.: Nox adb bin file path in Mac is `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` , in parent path `MacOS` you are able to use `adb devices` command to get adb path.
Note: On macOS, the Nox ADB binary is located at `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`. In the `MacOS` parent directory, you can use the `adb devices` command to check the ADB port.
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Compatible.
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.

View File

@@ -3,13 +3,9 @@ order: 1
icon: ri:windows-fill
---
# Windows Emulator
# Windows Emulators
:::warning
TODO: replace these Chinese emulators links with English ones
:::
The following emulators are displayed randomly in no particular order.
The following emulators are displayed in random order with no particular ranking.
<script setup>
import MarkdownIt from 'markdown-it'
@@ -25,29 +21,29 @@ const shuffleArray = (array) => {
const fullySupport = shuffleArray([
{
name: 'Bluestacks 5',
name: 'BlueStacks 5',
link: 'https://www.bluestacks.com/',
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 the residue.\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 within the Blue Stacker emulator configuration file, if this does not work/you have a need to multi-open/have more than one emulator kernel installed, please refer to the [Connection (TODO)](../connection.html#the-port-number-of-bluestack-emulator-hyper-v-is-different-every-time-it-is-started) to make changes. Since Hyper-V runs as administrator, operations that don\'t involve adb such as auto-shutdown of the emulator, auto-detect connection, etc. also need to run MAA as administrator.',
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.',
},
{
name: 'MuMu Emulator 12',
link: 'https://mumu.163.com/',
note: 'Fully compatible, with additional support for the [Screenshot Enhanced Mode](../connection.html#mumu-screenshot-enhanced-mode). Known to be compatible with Hyper-V.\n\n- The "Exit emulator when done" function may occasionally be abnormal, if you encounter it, please contact MuMu official for feedback.\n- You need to check the port information of the corresponding instance through the ADB button of MuMu 12 Multiple Opener when you open more than one instance, and change the port number of the connection address in MAA `Settings` - `Connection Settings` to the corresponding port.',
name: 'MuMu Emulator',
link: 'https://www.mumuglobal.com/',
note: 'Fully compatible, with additional support for [Screenshot Enhanced Mode](../connection.html#mumu-screenshot-enhanced-mode). Known to be compatible with Hyper-V.\n\n- The "Exit emulator when done" function may occasionally have issues. If you encounter problems, please report them to MuMu\'s official support.\n- When running multiple instances, you need to check the port information of each instance through the ADB button in MuMu Multi-Instance Manager, then change the port number in MAA `Settings` - `Connection Settings` to match the corresponding port.',
},
{
name: 'LDPlayer',
link: 'https://www.ldmnq.com/',
note: 'Fully compatible, with additional support for the [Screenshot Enhanced Mode](../connection.html#ld-screenshot-enhanced-mode). Need to turn on ADB Connectivity in the emulator : `Settings``Others``ADB debugging``Enable local connection`. Known to be compatible with Hyper-V.\n\n- LDPlayer 9 installer will automatically and silently disable Hyper-V during the installation process. Please pay attention if you have related needs.',
link: 'https://www.ldplayer.net/',
note: 'Fully compatible, with additional support for [Screenshot Enhanced Mode](../connection.html#ld-screenshot-enhanced-mode). Known to be compatible with Hyper-V.\n\n- LDPlayer 9 installer will automatically and silently disable Hyper-V during the installation process. Please be aware of this if you need Hyper-V for other purposes.',
},
{
name: 'Nox',
link: 'https://www.yeshen.com/',
note: 'Fully compatible, but less tested. Known to be compatible with Hyper-V.',
name: 'Nox Player',
link: 'https://www.bignox.com/',
note: 'Fully compatible, but less thoroughly tested. Known to be compatible with Hyper-V.',
},
{
name: 'Memu',
link: 'https://www.xyaz.cn/',
note: 'Fully compatible, but less tested.',
name: 'MEmu Play',
link: 'https://www.memuplay.com/',
note: 'Fully compatible, but less thoroughly tested.',
},
]);
@@ -55,22 +51,22 @@ const partiallySupport = shuffleArray([
{
name: 'MuMu Emulator 6',
link: 'https://mumu.163.com/update/win/',
note: 'Support has been dropped since MAA v5.1.0 and NetEase has stopped maintaining it on 15-08-2023.\n\n- No longer support auto-detect connection, need to use generic connection configuration and manually configure adb path and connection address.\n- Need to run `Forced Replacement of ADB` in `Settings` - `Connection` to use efficient touch modes such as Minitouch, MaaTouch.\n- You need to run MAA with administrator privileges to use the "Exit Emulator When Done" function.\n- MuMu 6 default resolution is not supported, you need to change it to `1280x720`, `1920x1080` and other 16:9 ratio.\n- MuMu 6 multi-open uses the same adb port, so it can\'t support multi-open MuMu 6.',
note: 'Support has been dropped since MAA v5.1.0, and NetEase stopped maintaining it on August 15, 2023.\n\n- No longer supports automatic connection detection. You need to use general connection configuration and manually configure ADB path and connection address.\n- You need to run `Force Replace ADB` in `Settings` - `Connection Settings` to use efficient touch modes like Minitouch and MaaTouch.\n- You need to run MAA with administrator privileges to use the "Exit Emulator When Done" function.\n- MuMu 6\'s unusual default resolutions are not supported. You need to change it to standard 16:9 ratios like `1280x720` or `1920x1080`.\n- MuMu 6 multi-instance uses the same ADB port for all instances, so MAA cannot support multiple MuMu 6 instances.',
},
{
name: 'Windows Subsystem for Android™',
name: 'Windows Subsystem for Android™',
link: 'https://learn.microsoft.com/en-us/windows/android/wsa/',
note: 'Support has been dropped since MAA v5.2.0 and will be discontinued by Microsoft on 05-03-2025.\n\n- Requires the use of [custom connection](../details.html#Custom connection) is required.\n- WSA 2204 or later (the version number is in the `About` page of the subsystem settings), select `Common Configuration` for the connection configuration.\n- WSA 2203 or older (the version number is at the top of the subsystem setup page), for the connection configuration select `WSA Older Versions`.\n- Since this software only supports 720p or higher `16:9` resolution better, please manually drag the window size as close to the 16:9 ratio as possible. (If your monitor is 16:9, you can press `F11` to go full screen).\n- Please try to make sure that Arknights is in the foreground and no other Android apps are running in the foreground at the same time, otherwise it may cause the game to pause or the task recognition error.\n- WSA\'s screenshots often somehow capture a white screen, resulting in recognition of abnormalities, or not recommended to use.',
note: 'Support has been dropped since MAA v5.2.0, and Microsoft will discontinue it on March 5, 2025.\n\n- Requires using [custom connection](../connection.html) method.\n- For WSA 2204 or later versions (version number can be found in subsystem settings under `About`), select `General Configuration` for connection configuration.\n- For WSA 2203 or older versions (version number appears at the top of subsystem settings page), select `WSA Older Versions` for connection configuration.\n- Since MAA only properly supports `16:9` resolutions of 720p or higher, please manually adjust the window size to be as close to 16:9 ratio as possible. (If your monitor is 16:9, you can press `F11` for fullscreen).\n- During task execution, try to ensure Arknights remains in the foreground with no other Android apps running simultaneously, otherwise the game may pause or task recognition may fail.\n- WSA sometimes inexplicably captures white screens during screenshots, causing recognition issues. Not recommended for use.',
},
{
name: 'AVD',
link: 'https://developer.android.com/studio/run/managing-avds',
note: 'Theoretical support.\n\n- Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode, please switch to other touch modes, or switch SELinux **temporary** to `Permissive` mode.\n- AVD is made for debugging, it is more recommended to use other emulators designed for gaming.',
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.',
},
{
name: 'Google Play Games (Developer)',
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-cn',
note: 'Theoretical support. Hyper-V must be enabled, and a Google account must be logged in.\n\n- You need to use [custom connection](../connection.html) to connect, the ADB port is `6520`.\n- Due to the SELinux policy of Android 10 and later versions, Minitouch cannot work properly, please switch to other touch modes.\n- The first connection after each emulator startup will fail, you need to check `Attempt to kill and restart ADB process after connection failure`.',
link: 'https://developer.android.com/games/playgames/emulator',
note: 'Theoretically supported. Requires Hyper-V to be enabled and a Google account to be logged in.\n\n- You need to use [custom connection](../connection.html) to connect, with ADB port `6520`.\n- Due to SELinux policies in Android 10 and later, Minitouch cannot work properly. Please switch to other touch modes.\n- The first connection attempt after each emulator startup will fail. Enable `Attempt to kill and restart ADB process after connection failure`.',
},
]);
@@ -78,7 +74,7 @@ const notSupport = shuffleArray([
{
name: 'Google Play Games',
link: 'https://play.google.com/googleplaygames',
note: 'Not supported, [Consumer Client](https://developer.android.com/games/playgames/pg-emulator#installing-game-consumer) cannot use ADB.',
note: 'Not supported. The [Consumer Client](https://developer.android.com/games/playgames/emulator#installing-game-consumer) cannot connect via ADB.',
},
]);

View File

@@ -9,134 +9,128 @@ If this is your first time using MAA, please read [Getting Started](./newbie.md)
::: warning
If MAA fails to run after an update, or if you've reached this page via an error window in MAA, it's highly likely due to outdated runtime libraries.
The most frequent issue is runtime-related, yet many users ignore the documentation and ask around, so we replaced the pinned message with this. It's frustrating.
If MAA fails to run after an update, or if you've arrived here from MAA's error window, it's most likely due to outdated runtime libraries.
The most common issue is related to runtime libraries, and many people keep asking about it without reading the documentation, so we changed the pinned message to this. It's frustrating.
Please run `DependencySetup_依赖库安装.bat` in the MAA directory, or execute the commands below in a terminal,
Please run `DependencySetup_依赖库安装.bat` in the MAA directory, or execute the following command in terminal:
```sh
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --force --uninstall-previous --accept-package-agreements && winget install "Microsoft.DotNet.DesktopRuntime.8" --override "/repair /passive /norestart" --force --uninstall-previous --accept-package-agreements
```
or manually download and install the following <u>**two**</u> runtime libraries to resolve the issue.
Or manually download and install these <u>**two**</u> runtime libraries to solve the problem:
- [Visual C++ Redistributable x64](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- [.NET Desktop Runtime 8](https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe)
:::
## The program crashes immediately when I try to run it
## Software won't run/crashes/shows errors
### Incomplete file downloaded
### Download/Installation issues
- If you don't have a complete package of this software already, please DO NOT download the zip files marked with `OTA` in the file name, which are for incremental updates and shall not be used alone. In most cases, Windows users should download `MAA-vX.X.X-win-x64.zip`.
In most cases, you need x64 operating system and x64 variant of MAA, i.e. `MAA-*-win-x64.zip`. There is no support for 32-bit (x86) operating systems.
- If you find that certain features are missing or not working after an automatic update, it may be due to an issue during the update process. Please re-download and extract the full installation package. After extraction, drag the `config` folder from the old `MAA` folder into the newly extracted `MAA` folder.
- A complete MAA software package is named "MAA-`version`-`platform`-`architecture`.zip"; others are "components" that cannot be used independently. Please read carefully.
In most cases, you need the x64 architecture of MAA, meaning you should download `MAA-*-win-x64.zip`, not `MAA-*-win-arm64.zip`.
- If you find missing or non-working features after an automatic update, the update process may have had issues. Please download and extract the complete installation package again. After extraction, drag the `config` folder from your old `MAA` folder into the newly extracted `MAA` folder.
### Missing runtime libraries
### Runtime library issues
Find the upward ↑ arrow at the bottom right corner of the webpage and click it.
Find the up arrow at the bottom right of the webpage and click it.
### System Issues
### System issues
- MAA does not support 32-bit operating systems and does not support Windows 7 / 8 / 8.1.
- The above runtime installations all require the Component Store Service (CBS, TrustedInstaller/TiWorker, WinSxS).
If the Component Store Service is damaged, it cannot be installed properly.
- MAA doesn't support 32-bit operating systems or Windows 7/8/8.1.
- The runtime installations above require Component Store Service (CBS, TrustedInstaller/TiWorker, WinSxS).
If these services are damaged, installation will fail.
We cannot provide repair suggestions other than reinstalling the system, so please avoid using "slimmed-down" systems that do not specify slimming items and slimming risks, or very old versions of systems.
We cannot provide repair solutions other than reinstalling your system. Please avoid using "slimmed" system versions without clear documentation of what was removed, or extremely outdated systems.
#### Windows N/KN
For Windows N/KN (Europe/Korea), you also need to install the [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a).
For Windows N/KN (European/Korean versions), you also need to install the [Media Feature Pack](https://support.microsoft.com/zh-cn/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a).
#### Notes on Windows 7
#### Windows 7
.NET 8 does not support Windows 7 / 8 / 8.1 systems<sup>[source](https://github.com/dotnet/core/issues/7556)</sup>, so MAA also no longer supports them. The last available .NET 8 version is [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7); the last available .NET 4.8 version is [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8). The feasibility of self-compilation has not yet been determined.
.NET 8 doesn't support Windows 7/8/8.1 systems<sup>[source](https://github.com/dotnet/core/issues/7556)</sup>, so MAA no longer supports them either. The last usable .NET 8 version is [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7); the last usable .NET 4.8 version is [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8). Self-compilation feasibility remains undetermined.
For Windows 7, before installing the two runtime libraries mentioned above, you also need to check if the following patches are installed:
For Windows 7, before installing the two runtime libraries mentioned above, check if these patches are installed:
1. [Windows 7 Service Pack 1](https://support.microsoft.com/en-us/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 code-signing update
- KB4474419[link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu), [link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
- KB4490628[link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu), [link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)
3. Platform Update for Windows 7 (DXGI 1.2 & Direct3D 11.1, KB2670838)[link 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu), [link 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-cn/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 code signing patches:
- KB4474419: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
- KB4490628: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)
3. Platform Update for Windows 7 (DXGI 1.2, Direct3D 11.1, KB2670838): [Download link 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu), [Download link 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
##### .NET 8 applications running on Windows 7 mitigation measures [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
##### Workaround for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
When running .NET 8 applications on Windows 7, there is an issue with abnormal memory usage. Please refer to the following mitigation measures. Windows 8/8.1 has not been tested. If the same issue exists, please kindly submit an issue to remind us to update the documentation.
When running .NET 8 applications on Windows 7, abnormal memory usage can occur. Follow these steps to mitigate it. Windows 8/8.1 hasn't been tested; if similar issues occur, please open an Issue to remind us to update the documentation.
1. Open `Computer`, right-click on the blank space, click Properties, click `Advanced system settings` on the left, and click `Environment Variables`.
2. Create a new system variable, variable name `DOTNET_EnableWriteXorExecute`, variable value `0`.
3. Restart the computer.
1. Open `Computer`, right-click in empty space, click Properties, click `Advanced system settings` on the left, and click `Environment Variables`.
2. Create a new system variable with name `DOTNET_EnableWriteXorExecute` and value `0`.
3. Restart your computer.
## Connection Error
## Connection errors
- Tips: please refer to the [List of the Supported Emulators](./device/) section to ensure that the emulator you are using is officially supported and that your configuration is correct.
- If you are using software such as a game accelerator, please close the software, RESTART your computer and try again.
- Please check your decompression software - in some cases, using uncommon software such as `7z` or _other niche decompression software_ may cause errors in Minitouch-related files.
### Verify ADB and connection address are correct
### Make sure ADB and address are correct
See [Connection Settings](./connection.md).
Check [Connection](./connection.md)
### Close existing ADB processes
### Change emulator
After closing MAA, check `Task Manager` - `Details` for processes containing `adb`. If found, end them and retry connecting.
Change to another emulator, such as [Bluestacks international version](https://www.bluestacks.com/download.html) Nougat 64 bit.
### Properly use multiple ADB instances
_After installation of Bluestack, you need to enable `Android Debug Bridge` in the settings._
When ADB versions differ, newly started processes will close older ones. If you need to run multiple ADB instances simultaneously (e.g., Android Studio, Alas, phone managers), ensure they use the same version.
### Close extra adb processes
### Avoid game accelerators
- Close MAA and check for any adb processes in the task manager. If there are any, please close them and retry.
Some accelerators require restarting MAA, ADB, and the emulator after enabling or disabling acceleration.
### Restart computer
For using UU Accelerator with MuMu, refer to the [official documentation](https://mumu.163.com/help/20240321/35047_1144608.html).
Try restarting your computer.
### Restart your computer
## Connected successfully, then stuck, not operating at all
Restarting solves 97% of problems. (Trust me)
The adb version packaged with some emulators is too old and does not support minitouch. Please open MAA with administrator privileges and navigate to `Settings` - `Connection Settings` - `Forced Replace ADB`. (It is recommended to close the emulator and restart MAA before proceeding, otherwise, the replacement may not be successful.)
### Try a different emulator
The emulator will reset the ADB version after updating. If the problems occur again, please repeat the above steps. Or you can try to use the [custom connection](./connection.md) method to solve it once and for all.
Please refer to [Emulator and Device Support](./device/).
If it still doesn't work, please retry after switching to `MaaTouch` from `Minitouch` in `Settings` - `Connection Settings`.
## Connected but no operation
## Connected successfully, but actions are slow or errors are frequent
Some emulators come with outdated ADB versions that don't support `Minitouch` or `MaaTouch`.
- The Copilot requires you to go to the screen with the `Start` button. Please confirm they are not related.
- If you are using a non-CN client, please go to MAA Settings - Start-Up Settings - Select your client version. Not all features are currently supported for non-CN clients, please refer to docs.
- If you are running the Auto-I.S. function, please PIN UP the I.S. theme you want in the game, and select I.S. theme in MAA `Task Settings` - `Auto I.S.`.
- If Copilot frequently pauses without deploying operators, please disable `Pause Deployment` in `Settings` - `Game Settings`.
- If Auto Squad fails to recognize operators properly, please cancel the special focus on the corresponding operators.
- The input method `Adb Input` is naturally slow. It is recommended to use `MaaTouch` or `Minitouch` instead.
Run MAA as administrator, close the emulator, restart MAA, and click `MAA Settings` - `Connection Settings` - `Force Replace ADB`.
### Prompt that the screenshot takes a long time / is too long
Emulator updates may overwrite the ADB file. If the issue returns after an update, try replacing again or use [alternative ADB](./connection.md#use-adb-provided-by-google).
- MAA currently supports 3 screenshot methods: `RawByNc`, `RawWithGzip`, and `Encode`. When the average screenshot time of executing a task is >400 / >800, a prompt message will be output (a single task will only be output once).
- `Settings - Connection Settings` will display the minimum/average/maximum time taken for the last 30 screenshots, refreshed every 10 screenshots.
- Automatic combat functions (such as I.S.) are greatly affected by the time taken to take screenshots.
- This time consumption is unrelated to MAA, but related to computer performance, current usage, or emulator. You can try cleaning up background processes, changing emulators, or upgrading computer configurations.
## Connected but operations are laggy, abnormal, or error-prone
## About Windows UAC
- If you've enabled `Notched Screen UI Adaptation`, set it to 0.
- If using a non-CN client, first select your client version in `Settings` - `Game Settings` - `Client Type`. Some features may not be fully adapted for non-CN clients; refer to the corresponding documentation.
- For Integrated Strategy automation, check the [Auto Integrated Strategy documentation](./introduction/integrated-strategy.md) and correctly select the theme in `Auto Integrated Strategy` - `Integrated Strategy Theme`.
- If auto-combat frequently pauses without deploying operators, disable `Matchstick Mode` in `Settings` - `Operation Settings`.
- If auto-squad formation can't recognize operators correctly, remove special focus from those operators.
- `Adb Input` touch mode is naturally slow; try switching to other modes for functions like auto-combat.
MAA should not require Windows UAC administrator privileges to run all functions. The functionalities related to administrator privileges are as follows:
### "Screenshot takes too long" message
1. `Auto Detect Connection`: Administrator privileges are required when the target emulator is running with administrator rights.
2. `Close Emulator After Completion`: Administrator privileges are required when the target emulator is running with administrator rights.
3. `Start MAA Automatically on Boot`: It is not possible to set automatic startup with administrator privileges.
4. When MAA is incorrectly extracted to a path that requires administrator privileges for writing, such as `C:\` or `C:\Program Files\`.
- MAA currently supports three ADB-based screenshot methods: `RawByNc`, `RawWithGzip`, and `Encode`. When average screenshot time exceeds 400/800ms, a notification appears once per task.
- `Settings - Connection Settings` displays min/avg/max times for the last 30 screenshots, refreshed every 10 screenshots.
- Auto-combat features (like Integrated Strategy) are heavily affected by screenshot times.
- Screenshot performance is unrelated to MAA but depends on computer performance, background processes, or emulator. Try clearing background tasks, changing emulators, or upgrading your computer.
There have been reports that systems with UAC disabled may have the issue where "even without selecting 'Run as Administrator' by right-clicking, it will still run with administrator privileges." It is recommended to enable UAC to avoid unintended privilege escalation.
## Administrator permissions issues
## The download speed is slow and the mirror site is not accessible
MAA shouldn't need Windows UAC administrator privileges for any functionality. Current admin-related functions include:
1. Go to [Download](../readme.md) to get the link (non-mirror) you want to download.
2. Find the link to the file you need to download.
3. Right-click it and select `Copy link address`.
4. Paste the link into your browser.
5. Replace the `github.com` in the link with `download.fastgit.org`.
6. Press `Enter` to download.
1. `Auto-detect connection`: Administrator rights needed when the target emulator runs as administrator.
2. `Close emulator when done`: Administrator rights needed when the target emulator runs as administrator.
3. `Auto-start MAA at boot`: Cannot be set when running as administrator.
4. When MAA is incorrectly extracted to paths requiring admin rights for writing, like `C:\` or `C:\Program Files\`.
## Download halfway and prompt "login"/"authentication"
Reports indicate that systems with disabled UAC may run applications as administrator even without explicitly selecting "Run as administrator." We recommend enabling UAC to prevent unexpected privilege escalation.
Please use a browser / IDM / FDM and other regular downloaders to download files, **Do NOT fucking use Thunder!**
## Download stops midway with "login"/"authentication" prompt
Please use a browser / IDM / FDM or other downloaders to download files, **DO NOT use Thunder!**

View File

@@ -3,113 +3,125 @@ order: 3
icon: hugeicons:brain-02
---
# Combat
::: important This page may be outdated.
:::
# Sanity Farming
## General Settings
- Combat options include `Use Sanity Potion + Use Originium`, `Perform Battles` and `Material`, you can specify any of them. The combat task stops once one of the specifications is met.
- The `Use Sanity Potion` + `Use Originium` and `Perform Battles`+ `Material` options work as OR conditions - the task will stop when any of these conditions is met.
- `Use Sanity Potion` specifies the maximum used amount of sanity potions. Multiple potions may be used at a time.
- `Use Originium` specifies the maximum used amount of Originium. It is used one at a time. The Originium will not be used when there are Sanity Potions in the depot.
- `Perform Battles` specifies the number of battles to perform at most.
- `Material` specifies the number of materials to collect.
- `Use Sanity Potion` specifies how many times to replenish sanity (may use multiple potions at once).
- `Use Originium` specifies how many Originium to use (one at a time). Originium won't be used if sanity potions are available.
- `Perform Battles` specifies the number of battles to complete (e.g., "stop after 15 runs").
- `Material` specifies how many of a specific material to obtain (e.g., "stop after getting 5 Orirock").
- `Material` and `Stage` are independent options. `Material` is not going to automatically navigate to the stage for the specified material. You still need to manually configure the stage option.
- `Use Originium` will only be used after `Use Sanity Option`, because MAA will only use Originium to replenish sanity when there are no Sanity Potions left. Therefore, after checking `Use Originium`, MAA will lock the number of `Use Sanity Potion` to 999, making sure to consume all the Sanity Potions to avoid skipping the `Use Originium` judgment.
- `Material` and `Stage Selection` are independent options. `Material` only uses the material count as a stopping condition and doesn't automatically navigate to stages that drop that material.
- `Use Originium` is only checked after `Use Sanity Potion`. Since MAA only uses Originium when no sanity potions remain, checking `Use Originium` will automatically set `Use Sanity Potion` to 999, ensuring all potions are used first.
::: details Example
::: details Examples
| Use Sanity Potion | Use Originium | Perform Battles | Material | Result |
| :------: | :----: | :------: | :------: | -------------------------------------------------------------------------------------------------------------------------------------- |
| | | | | Ends after using up the existing Sanity. |
| 2 | | | | Uses up the existing Sanity first, then consumes a Sanity Potion once, totalling `2` times. Ends after using up the Sanity. |
| _999_ | 2 | | | Uses up the existing Sanity and all Sanity Potions, then uses Originium, totalling `2` times. Ends after using up the Sanity. |
| | | 2 | | Ends after performing the selected stage `2` times. |
| | | | 2 | Ends after farming and obtaining `2` of the specified materials. |
| 2 | | 4 | | Ends after performing the selected stage `4` times, using up to `2` Sanity Potions. |
| 2 | | | 4 | Ends after farming and obtaining `4` of the specified materials, using up to `2` Sanity Potions. |
| 2 | | 4 | 8 | Ends after performing the selected stage `4` times, using up to `2` Sanity Potions. However, if `8` of the specified materials are obtained before completing `4` times, it will end early. |
| _999_ | 4 | 8 | 16 | Ends after performing the selected stage `8` times, using up all Sanity Potions and `4` Originium. However, if `16` of the specified materials are obtained before completing `8` times, it will end early. |
| | 2 | | | Uses up the existing Sanity first. If there are Sanity Potions in storage, it ends; if there are no Sanity Potions, it uses `2` Originium and ends after using up the Sanity. _Not a MAA GUI behavior_ |
| 2 | 4 | | | Uses up the existing Sanity first. If there are still some left after consuming `2` Sanity Potions, it ends; if there are no Sanity Potions after consuming ≤`2` Sanity Potions, it continues to use `4` Originium and ends after using up the Sanity. _Not a MAA GUI behavior_ |
| :---------------: | :-----------: | :-------------: | :------: | ------ |
| | | | | Uses current sanity and stops. |
| 2 | | | | Uses current sanity, then uses sanity potions up to 2 times, then stops. |
| _999_ | 2 | | | Uses current sanity, then all sanity potions, then Originium up to 2 times, then stops. |
| | | 2 | | Runs the selected stage 2 times, then stops. |
| | | | 2 | Farms until 2 of the specified material are obtained, then stops. |
| 2 | | 4 | | Runs the selected stage up to 4 times, using up to 2 sanity potions if needed, then stops. |
| 2 | | | 4 | Farms until 4 of the specified material are obtained, using up to 2 sanity potions if needed, then stops. |
| 2 | | 4 | 8 | Runs the selected stage up to 4 times, using up to 2 sanity potions if needed. Stops early if 8 of the specified material are obtained before reaching 4 runs. |
| _999_ | 4 | 8 | 16 | Runs the selected stage up to 8 times, using all sanity potions and up to 4 Originium if needed. Stops early if 16 of the specified material are obtained before reaching 8 runs. |
| | 2 | | | Uses current sanity, then stops if any sanity potions are available. If no potions, uses up to 2 Originium. _Not MAA GUI behavior_ |
| 2 | 4 | | | Uses current sanity, then up to 2 sanity potions. If potions remain, stops; if no potions remain after using ≤2 potions, uses up to 4 Originium. _Not MAA GUI behavior_ |
:::
### Operations
### Stage Selection
- If the stage you need is unavailable in the selection, please choose `Cur/Last` in MAA and manually locate the stage in the game.
Ensure the screen stays on the stage detail page with the **Start** and **Auto-Deploy** buttons available.
- If you are not on this page, `Cur/Last` will automatically navigate to the last stage played according to the record in the lower right corner of the terminal homepage.
- You can also enable `Manual entry of stage names` in `Combat` - `Advanced` and enter the stage number manually. Currently supported stages include:
- All main theme stages, where `-NORMAL` or `-HARD` can be added at the end to switch between standard and challenge modes.
- LMD stages and Battle Record stages 5/6. The input must be `CE-6` or `LS-6` even if you have not unlocked it yet. In that case, the program will automatically switch to the corresponding stage 5.
- Skill Summary, Shop Voucher, and Carbon Stages 5. The input also must be `CA-5`, `AP-5`, and `SK-5` respectively.
- Chip stages. The input must be complete with stage number, such as `PR-A-1`.
- Annihilation. The input must be `Annihilation`.
- Some side story stages, now contains `OF-1`, `OF-F3` and `GT-5`.
- The last three stages of the current SS event. This is available after downloading updates automatically from the [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) when the event is on. The prompt will be shown on the main page when this is available.
- For the SS event rerun, you can enter `SSReopen-XX` to clear XX-1 ~ XX-9 levels once. Example `SSReopen-IC`.
- If your desired stage isn't in the selection menu, choose `Current/Last` in MAA, then manually navigate to the stage in-game.
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.
- 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`.
- For Annihilation mode, use these specific values:
- Current annihilation: Annihilation
- Chernobog: Chernobog@Annihilation
- Lungmen Outskirts: LungmenOutskirts@Annihilation
- Lungmen Downtown: LungmenDowntown@Annihilation
::: details Example
![Example](/images/en-us/combat-start-interface-example.png)
- Side story stages like `OF-1`, `OF-F3`, and `GT-5`.
- The last three stages of the current Side Story event. These will be shown at the bottom of the interface after automatically downloading updates from the [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json).
- Rerun Side Story events: Enter `SSReopen-<stage prefix>` to farm all stages XX-1 through XX-9 in sequence, like `SSReopen-IC`.
::: details Example Screen
![Example Screen](/images/zh-cn/combat-start-interface-example.png)
:::
### Annihilation Mode
- MAA will only navigate through the Annihilation button at the top right corner of the terminal homepage. Please ensure that the current Annihilation has unlocked `Full Delegation` and that you possess a sufficient number of "PRTS Proxy Annihilation Cards".
- After the current Annihilation refreshes or after reinstalling Arknights, returning from the Annihilation `Start Battle` page will automatically LSand `Intelligence Summary`. Please close this page in advance to prevent the task from getting stuck.
- It is only recommended for players who have already achieved "400 kills" in the current Annihilation to use MAA for automatic Annihilation.
- MAA navigates to Annihilation using the button at the top-right of the terminal home screen. Ensure your selected Annihilation stage has unlocked `Full Delegation` and that you have enough `PRTS Annihilation Delegation Cards`.
- This feature is only recommended for stages where you've already achieved the 400-kill milestone.
## Advanced Settings
### Alternative Stage
### Alternative Stages
The alternative stage is determined based on the availability of stages on the given day, i.e., the first available stage will be selected for battle.
This is a function similar to a schedule and cannot be used as a backup stage when the stage selection task fails.
Alternative stages are selected based on daily stage availability - MAA will choose the first available stage in the list.
This functions like a schedule, not as a fallback if the primary stage selection fails.
1. Example: Stage selection `CE-6/5`, alternatives `1-7` and `LS-6/5`:
- If `CE-6/5` is available on the day, it will proceed to `CE-6/5` and not to `1-7` or `LS-6/5`. If the player has not unlocked the `CE-6/5` mission node, the sanity farming task will fail.
- If `CE-6/5` is not available on the day, it will proceed to `1-7` and not to `CE-6/5`. If the player has not unlocked the 1-7 mission node, the sanity farming task will fail.
- Since `1-7` is a permanent stage before `LS-6/5`, MAA will never proceed to `LS-6/5` in this scenario.
2. If the stage selection is `Annihilation`, then:
- The selection logic of the remaining backup stages will not be affected by the result of the Annihilation, even if the Annihilation fails, the sanity farming task will not fail.
- The remaining backup stages will only inherit the settings of `Use Sanity Potion` and `Series`, and will not be controlled by `Use Originium`, `Perform Battles`, or `Material`.
1. Example: If primary stage is `CE-6/5` with alternatives `1-7` and `LS-6/5`:
- If `CE-6/5` is open today, MAA will run it and ignore the alternatives. If you haven't unlocked auto-deploy for CE-6/5, the task will fail.
- If `CE-6/5` is closed today, MAA will run `1-7` instead. If you haven't unlocked auto-deploy for 1-7, the task will fail.
- Since `1-7` is a permanent stage that appears before `LS-6/5` in the list, MAA will never run `LS-6/5` in this scenario.
2. If the primary stage is `Annihilation Mode`:
- Annihilation results won't affect the alternative stage logic - even if Annihilation fails, the task will continue.
- Alternative stages will only inherit the `Use Sanity Potion` and `Multiplier` settings, ignoring `Use Originium`, `Perform Battles`, and `Material` settings.
### Remaining Sanity
It starts after the `Combat` task ends and is not controlled by `Use Sanity Potion`, `Use Originium`, `Perform Battles`, `Material`, or `Series`. It ends when the current remaining sanity is exhausted.
This option activates after the main `Sanity Farming` task ends, ignoring all `Use Sanity Potion`, `Use Originium`, `Perform Battles`, `Material`, and `Multiplier` settings. It simply uses up any remaining sanity and stops.
- Suitable for clearing the remaining "corner" sanity (e.g., going to 1-7) after sanity is insufficient in the `Stage Selection` stage.
- Also suitable for automatically using single battles to use up sanity when the set number of consecutive battles is too high and sanity is insufficient (e.g., setting 1-7 to battle 6 times, but only having 30 sanity, thus automatically switching to 5 single battles of 1-7).
- If the remaining sanity is still insufficient, the task will end (e.g., less than 6 sanity).
- If the selected stage for remaining sanity is unopened, the sanity farming task will fail.
- Useful for farming a low-cost stage (like 1-7) with leftover sanity after your main stage becomes unaffordable.
- Also useful for automatically switching to single runs when you have insufficient sanity for your configured multiplier (e.g., if you set 1-7 for 6x runs but only have 30 sanity, it will automatically run five single 1-7 runs instead).
- The task will end if remaining sanity is insufficient (e.g., less than 6 sanity).
- If the selected remaining sanity stage is closed or unavailable, the task will fail.
### Series
### Multiplier
MAA will fight according to the number of consecutive battles set by the user:
MAA will use the specified battle multiplier setting:
- **AUTO mode** (0):
- Automatically identify the maximum number of consecutive battles in the level, maintain the maximum number of consecutive battles and do not overflow sanity
- Enter the `Remaining Sanity` process after completion (if set)
- Automatically identifies and uses the maximum possible multiplier without wasting sanity
- Proceeds to the `Remaining Sanity` option afterward (if enabled)
- **Numerical mode** (1~6):
- Perform consecutive battles according to the set number of times
- If the current sanity is not enough to complete the set number of times (such as only 5 times but set to 6 times), it will directly end the task and enter the `Remaining Sanity` process (if set)
- **Fixed value mode** (1-6):
- Uses exactly the specified multiplier
- If current sanity is insufficient for the set multiplier (e.g., only enough for 5× but set to 6×), ends the task and proceeds to `Remaining Sanity` (if enabled)
- **Disable mode** (-1):
- Do not adjust the number of consecutive battles in the game
- If the sanity is not enough to complete the current set number of times in the game, directly end the task and enter the `Remaining Sanity` process (if set)
- **Disabled mode** (-1):
- Doesn't change the in-game multiplier setting
- If sanity is insufficient for the current in-game multiplier setting, ends the task and proceeds to `Remaining Sanity` (if enabled)
### Perform Battles
MAA will run up to the specified number of battles.
Example: Assuming you have 100 sanity and the stage costs 6 sanity:
- If `Perform Battles` is 10 and multiplier is 4: MAA will do 2 runs × 4× multiplier = 8 battles (floor(10/4) × 4 = 8), using 48 sanity. It won't do another 4× run since that would be 12 battles, exceeding the set limit of 10.
- If `Perform Battles` is 10 and multiplier is AUTO: MAA will do one 6× run plus one 4× run = 10 battles (6 + 4 = 10), using 60 sanity.
### Drop Recognition
- Material drops are automatically recognized and printed to the program log. The data also gets uploaded to [Penguin Stats](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/).
- You can manually set your Penguin Stats user ID in the settings.
- Automatically recognizes and counts material drops, uploading data to both [Penguin Statistics](https://penguin-stats.cn/) and [Yituliu](https://ark.yituliu.cn/).
- You can set a custom Penguin Statistics user ID if desired.
## Abnormal Detection
## Error Handling
- `Auto-Deploy` will be automatically selected if not already in case you forget to do so.
- After disconnection or forced server reset at 4 am, it will automatically reconnect and continue to play the last stage selected in the game. If you need to cross the day, please check the last stage selection.
- An account level-up situation can be automatically handled as well as a failed operation in which case the operation will be abandoned and the battle will be retried.
- Automatically checks `Auto Deploy` if it's available.
- Automatically reconnects and continues tasks after disconnections or the daily 4 AM server reset.
- Continues tasks after level-ups.
- If auto-deploy fails, abandons the current operation and retries the battle.

View File

@@ -3,45 +3,43 @@ order: 9
icon: ph:sword-bold
---
# Copilot
# Auto Combat
::: important This page may be outdated.
:::
You're welcome to share your tasks with [prts.plus](https://prts.plus)!
Welcome to use and share operation files on [prts.plus](https://prts.plus).
::: warning
All features involving auto-battle require a stable game frame rate of at least 60 frames, including but not limited to Copilot and Auto I.S..
All features involving automatic combat require a stable game frame rate of at least 60 FPS, including but not limited to Auto Combat and Integrated Strategy.
:::
## Load Tasks
## Using Operations
Supports automatic combat for any `Squad Formation Stage` and `Stationary Security Service` mode.
- Please run it on the screen with the `Start Operation` button.
Then, import the task by `Import Local JSON Task File` or `Enter Task Station Secret Code` in the upper left box of MAA.
- The `Auto Squad` feature will **clear the current squad** and automatically form a squad based on the operators required for the task.
- You need to cancel the special focus on the operators for Auto Squad.
- You can add `custom operators` and `low-trust operators` for auto squad formation as needed.
- You can disable `Auto Squad` and manually form the squad before starting if you need to use `Friend Support` or for other personal preferences.
- For "Paradox Simulation" stages, you must disable `Auto Squad`, manually select skills, and start automatic combat on the screen with the **Start Simulation** button.
- For "Stationary Security Service" stages, `Auto Squad` is ineffective. You must manually complete the **initial** task preparation until the **Start Deployment** button appears on the stage details screen to start automatic combat.
- You can set `Loop Times`, such as for Stationary Security Service. However, MAA will not borrow operators. Do not use this feature if you need to borrow operators.
- You can use the `Battle list` feature for automatic continuous combat in the same area stages.
- The three buttons below the Battle list from left to right are `Batch Import`, `Add Stage`, and `Clear Stages`.
Right-click `Add Stage` to add a raid stage, and right-click `Clear Stages` to clear unchecked stages.
- After importing the task, the stage names will appear below the battle list. Confirm they are correct before adding the stage. You can drag and adjust the order of the stages in the list and check whether to execute them.
- After enabling this feature, start automatic combat on the **map screen where the stages are located**. The automatic combat queue will stop if sanity is insufficient, combat fails, or the settlement is not three stars.
- Ensure that the stages in the list are in the same area (can be navigated by swiping the map screen left or right).
- Remember to like the tasks that you found helpful!
- This feature should be started from the squad selection screen where the `Start Operation` button is visible.
Then, import an operation by either `Import Local JSON Operation File` or `Enter Operation Code` in the upper left box of MAA.
- The `Auto Squad` feature will **clear the current squad** and automatically form a squad based on the operators required by the operation.
- You need to unmark any specially focused operators that will be used in the auto squad.
- You can add `custom operators` and `low-trust operators` to the auto squad as needed.
- You can disable `Auto Squad` and manually form the squad before starting if needed (for example, when using `Friend Support`).
- For "Paradox Simulation" stages, you must disable `Auto Squad`, manually select skills, and start automatic combat from the screen with the **Start Simulation** button.
- For "Stationary Security Service" stages, `Auto Squad` is ineffective. You must manually complete the **initial** task preparation until the screen with the **Start Deployment** button appears before starting automatic combat.
- You can set `Loop Times`, such as for Stationary Security Service. However, MAA will not borrow operators, so don't use this if you need to borrow operators.
- You can use the `Battle List` feature for automatic continuous combat across stages in the same area.
- The three buttons below the Battle List from left to right are `Batch Import`, `Add Stage`, and `Clear Stages`.
Right-clicking `Add Stage` adds a challenge mode stage; right-clicking `Clear Stages` clears all unchecked stages.
- After importing an operation, the stage name will appear below the battle list. Confirm it's correct before adding the stage. You can drag stages to reorder them and check/uncheck to control execution.
- When using this feature, start automatic combat from the **map screen where the stages are located**. The automatic combat queue will stop if sanity is insufficient, combat fails, or you don't achieve three stars.
- Ensure all stages in the list are in the same area (navigable by swiping the map screen left or right).
- **Please remember to like high-quality operations to boost their ratings and encourage their creators.**
![image](/images/zh-cn/copilot-click-like.png)
## Create Tasks
## Creating Operations
- Please use the [Task Editor](https://prts.plus/create) to create tasks. A tool for creating tasks is provided in the directory of MAA. See also: [Copilot Schema](../../protocol/copilot-schema.md) for help.
- Get map coordinates
- After filling in the stage in the Task Editor, a draggable and zoomable coordinate map will automatically load in the lower left corner, where you can click to set the current operator positions.
- Start an operation after filling in `stage_name`. A file under `debug\map` named `map.png` will be generated for your reference.
- Refer to [PRTS.map](https://map.ark-nights.com/), with the `coordinates` set to `MAA` mode.
- Drill plan is available for testing.
- It is recommended to write your name, video walkthrough URL, or other things that you think are helpful in the description.
- Please use the [Operation Editor](https://prts.plus/create) to create operations. You can refer to the [Combat Operation Protocol](../../protocol/copilot-schema.md) for guidance.
- Getting map coordinates:
- After entering the stage name in the Operation Editor, a draggable and zoomable coordinate map will automatically load in the lower left corner, where you can click to set operator positions.
- If you export the JSON after entering the stage name and then start an operation, a map image with coordinate information will be generated in the `debug\map` folder in your MAA directory.
- Use [PRTS.Map](https://map.ark-nights.com/areas) and change the `Coordinate Display` to `MAA` in settings.
- Practice plans are supported.
- We recommend including your name (as author), reference video links, and other helpful information in the operation description.
- You're welcome to join the QQ group [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) to discuss operation creation and related topics.

View File

@@ -5,15 +5,13 @@ icon: solar:shop-2-bold
# Credit Store
::: important This page may be outdated.
:::
- Automatically visit friends to obtain credit points and go to the credit store for shopping.
- With the help of combat credit:
- Use a support operator to clear the `OF-1` stage in Heart of Surging Flame. If the stage is not unlocked, please do not select this option.
- It does not take effect when the stage selection is set to `Cur/Last`.
- Automatically visits friends to obtain credit points and shops at the credit store.
- Support for earning credits through combat:
- MAA will use a support operator to clear the `OF-1` stage from Heart of Surging Flame. Please ensure this stage is unlocked.
- This feature won't activate when the stage selection is set to `Current/Last`.
## Advanced Settings
- Whitelist and Blacklist are keyword matches, for example, filling in `碳` (Carbon Stick) will match `碳` (Carbon Stick) and `碳素` (Carbon Brick). May still require only the original Chinese as input.
- `Stop purchasing items when credits are below 300` will still purchase whitelist items even when below 300.
- Both priority purchase items and blacklist use keyword matching. For example, entering `Carbon` will match both `Carbon Stick` and `Carbon Brick`.
- You can use either English semicolons `;` or Chinese semicolons `` as separators.
- When `Stop purchasing items when credits are below 300` is enabled, priority purchase items will still be bought even when below 300 credits.

View File

@@ -3,29 +3,34 @@ order: 4
icon: material-symbols:view-quilt-rounded
---
# Base
# Base Management
::: important This page may be outdated.
:::
## Normal Mode
## Workshift Strategy
### Shift Strategy
- Automatically calculate and choose the **optimal solution within a single facility**. Supports all general and special skill combinations.
- Supports recognition of Battle Record, Pure Gold, Originium Shard, Chip and so on for different operators.
- Automatically use drones according to the selected `drone usage`.
- Recognizes the percentage of the Morale bar. When Morale is below some threshold, the operator will be moved to the dormitory.
- Automatically calculates and selects the **optimal solution within a single facility**, supporting all generic skill combinations and special skill synergies.
- Automatically identifies EXP Records, Gold Bars, Originium Shards, and Chips, deploying appropriate operator combinations for each.
- Automatically uses drones according to the selected `Drone Usage` setting.
- Automatically detects morale levels and assigns operators with remaining morale percentage below the `Base Facility Morale Threshold` to dormitories.
## Note
### Additional Notes
- The work shift strategy is based on the optimal solution within a single facility instead of multiple facilities. Combinations such as: `Shamare-Tequila`, `Vermeil-Scene` within a single facility can be recognized correctly; while combinations like `Rosmontis`, `Pinus Sylvestris` among facilities are not supported yet.
- If `Usage of Drone` is selected with the option `Trading Post-LMD`, it will recognize `Shamare` and reserve it for her.
- Operators of the corresponding faction will be selected when only one Clue is needed in the Reception Room; otherwise, general operators will be chosen.
- The reception Room will send out Clues only when your Clues are full. Three Clues will be sent out at most. If wanted, you can edit the number of sent Clues in the `ClueSelected` - `maxTimes` field in `resource/tasks/tasks.json`.
- If you do not want operators like `Irene` or someone else to be put into the dormitory when the training room is not in use, you can switch off `Working operator shall not be put into the dormitory` in the settings. Note that this may cause the operators with non-full fatigue to not enter the dormitory as well.
- Due to the complexity of the Control Center, only `Amiya`, `Swire`, `Kal'tsit`, `Team Rainbow` and other Morale+0.05 operators will be considered. To be improved in future.
- Some alternate operators may have conflicts in Infrastructure. Please take note if there are "Operator conflict" warnings on the UI, and double check the Infrastructure to shift manually (e.g. some facilities may not have any operator).
- You can choose the facility categories that need to be handled by MAA, with all selected by default.
- Base shift management currently optimizes for single-facility efficiency, not cross-facility global optimization.
- Recognizable and usable examples: `Shamare + Tequila`, `Vermeil + Scene`.
- Unrecognizable examples: `Rosmontis System`, `Pinus Sylvestris Knights`.
- When `Drone Usage` is set to `Trading Post - LMD`, the `Shamare Group` will be prioritized.
- Reception Room selects operators with corresponding clue affinity when only one clue type is missing; otherwise selects generic operators.
- Reception Room only sends clues when your collection is full, and sends only three at a time. To customize the number sent, modify the `ClueSelected` - `maxTimes` field in `resource/tasks/tasks.json` in the MAA directory.
- Enabling `Do not place stationed operators in dormitory` prevents operators like `Irene` and `Logos` from being assigned to dormitories when not training in the Training Room, but also prevents operators with low morale in the Processing Station from being moved to dormitories.
- Control Center strategy is complex; currently only considers `Amiya`, `Swire`, `Kal'tsit`, `Team Rainbow`, and other operators with +0.05 morale bonus. This will be gradually optimized.
- You can select which facility types MAA should manage (all are selected by default).
## Custom infrastructure shift change (Beta)
## Preset Rotation Mode
- Several sets of extremely efficient tasks are built-in under the MAA folder `/resource/custom_infrast/`, which can be used as a reference. Due to its high requirements for operators and their levels, it is not recommended for direct use.
- This mode requires preset squads configured in-game. MAA will automatically rotate through them.
## Custom Base Mode
- The [Schedule Generator](https://ark.yituliu.cn/tools/schedule) created by community experts can help you create custom schedules. Refer to the [Base Facility Protocol Documentation](../../protocol/base-scheduling-schema.md) for usage.
- The MAA folder `/resource/custom_infrast/` contains built-in theoretically maximum-efficiency presets. Not recommended for direct use due to their extreme operator and elite/skill level requirements.

View File

@@ -3,59 +3,59 @@ order: 7
icon: ri:game-fill
---
# Integrated Strategy (I.S.)
# Auto Integrated Strategy
::: important This page may be outdated.
:::
MAA selects the latest theme by default, and can be changed in `Auto I.S.` - `General`.
MAA selects the latest theme by default, which can be changed in `Auto Integrated Strategy` - `Integrated Strategy Theme`.
::: warning
All features involving auto-battle require a stable game frame rate of at least 60 frames, including but not limited to Copilot and Auto I.S..
All features involving automatic combat require a stable game frame rate of at least 60 FPS, including but not limited to Auto Combat and Integrated Strategy.
:::
- Please pin the corresponding I.S. theme to the terminal of the game. Although automatic navigation is currently available, long-term usability is not guaranteed.
- If there is an exploration of non-target themes (such as if you plan to use MAA to auto Mizuki, but there is still an unfinished exploration of Phantom), please end it manually.
- MAA will not automatically select the difficulty. If the difficulty is not selected, it will get stuck/repeatedly enter and exit the difficulty selection interface.
- In the settings, you can choose the team, starting operator (only one operator name), etc.
- Please pin the corresponding Integrated Strategy theme at the terminal in-game. Although automatic navigation is currently possible, long-term functionality is not guaranteed.
- Please manually end explorations of **non-target themes** in advance to ensure the target theme is ready to start exploration.
- You can select theme, difficulty, squad, starting operator (single operator name only), and more in settings.
- MAA can use support operators to start, by first entering the target operator name in `General Settings``Starting Operator` and then enabling `Advanced Settings``Use support unit for "Starting Operator"`.
- When playing for the **first time** in a newly installed client:
- The difficulty selection button will not be displayed. Please manually select a difficulty once in-game, after which MAA can select it automatically.
- Tutorials will appear after entering the map screen. Please read and close them manually.
## Recommended Starting Strategies
## Recommended Starts
MAA can start with a support operator, which need to enable the option `Auto I.S.``Advanced``Select "Starting Operator" from support unit list`.
::: details _Last updated 2025/8/2_
::: details
| Theme | Difficulty | Squad | Strategy | Operator |
| ------- | ----------------- | --------------------------------------- | ------------------------- | --------- |
| Phantom | Formal Investigation·3~7 | Leader Squad / Tactical Assault Squad | Overcoming Your Weaknesses | Thorns |
| Mizuki | Surging Waves·3~7 | People-Oriented Squad / Mind Over Matter Squad | Slow and Steady Wins the Race | Wiš'adel |
| Sami | Braving Nature·4~10 | Special Training Squad / Tactical Ranged Squad | Slow and Steady Wins the Race | Wiš'adel |
| Sarkaz | Face the Spirit·4~10 | Blueprint Mapping Squad / Tactical Ranged Squad | Slow and Steady Wins the Race | Wiš'adel |
| Garden | Enter the Garden·3~10 | Leader Squad / Tactical Ranged Squad | Slow and Steady Wins the Race | Wiš'adel |
| Theme | Difficulty | Squad | Strategy | Operators |
| ------- | -------------------- | ----------------------------------------------- | ----------------------------- | --------------------- |
| Phantom | Formal Investigation | Leader Squad / Tactical Assault Squad | Overcoming Your Weaknesses | Thorns |
| Mizuki | Surging Waves·3 | People-Oriented Squad / Mind Over Matter Squad | Overcoming Your Weaknesses | Gavial the Invincible |
| Sami | Braving Nature·4 | Special Training Squad / Tactical Ranged Squad | Slow and Steady Wins the Race | Wiš'adel |
| Sarkaz | Face the Spirit·4 | Blueprint Mapping Squad / Tactical Ranged Squad | Slow and Steady Wins the Race | Wiš'adel |
The recommended difficulties consider factors like `enemy difficulty`, `hope consumption`, and `score multiplier`, and have been tested to be stable with high-level operators. Feel free to adjust based on your situation and needs.
The recommended difficulty level is the one without the `Enemy Difficulty` and `Desired Consumption` bonuses. It is relatively stable when tested at a high level and can be adjusted freely according to actual conditions and needs.
| Theme | Notes |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Phantom | In the `Face the Disaster` difficulty, you may obtain a collection that will deduct your hopes, resulting in the inability to recruit six-star operators at the beginning of the game. |
| Mizuki | The cost of recruiting six-star operators in `Surging Waves·4` and higher difficulties is increased by 1. It may be impossible to recruit six-star operators when using `Mind over Matter Squad` at the beginning.<br>`People-Oriented Squad` work best with People-Oriented; `Mind Over Matter` Squad requires a bit of luck. |
| Sami | The cost of recruiting six-star operators in `Braving Nature·5` and higher difficulties is increased by 1. It may be impossible to recruit six-star operators when using `Special Training Squad` at the beginning. |
| Sarkaz | The cost of recruiting six-star operators in `Face the Spirit·5` and higher difficulties is increased by 1. It may be impossible to recruit six-star operators when using `Blueprint Mapping Squad` at the beginning.<br>Selecting the `Blueprint Mapping Squad` results in a completely stealth-oriented strategy, means that it is basically impossible to pass the ending. |
| Theme | Notes |
| ------- | ----- |
| Phantom | `Formal Investigation·4` and higher difficulties may give hope-reducing collectibles at start, preventing recruitment of six-star operators. |
| Mizuki | `Surging Waves·4` and higher difficulties increase six-star operator hope cost by +1, making it potentially impossible to recruit them with `Mind Over Matter Squad`.<br>`People-Oriented Squad` is better for high-level accounts, while `Mind Over Matter Squad` requires luck. |
| Sami | `Braving Nature·6` and higher difficulties increase six-star operator hope cost by +1, potentially making it impossible to recruit them with `Special Training Squad`. |
| Sarkaz | `Face the Spirit·15` and higher difficulties increase six-star operator hope cost by +1, potentially making it impossible to recruit them with `Blueprint Mapping Squad`.<br>With `Blueprint Mapping Squad`, MAA will adopt an avoidance strategy to quickly obtain `Spirit Bookmarks`, but generally cannot complete endings.<br>When using the Originium Ingot farming strategy with `Point-Stab Ingot Squad`, MAA will use shop refreshing to speed up the process. |
| Garden | `Enter the Garden·15` and higher difficulties increase six-star operator hope cost by +1, potentially making it impossible to recruit them with `Leader Squad`.<br>When set to `Enter the Garden·3` difficulty with the Originium Ingot farming strategy and `Leader Squad`, MAA will use the `End of Time` stage-skip strategy to speed up the process. |
:::
## Battle Strategy
## Combat Strategy
All operations in automatic Integrated Strategy are pre-set strategies, and all stage battles use built-in job files. When the corresponding mission for the level does not exist, a general decision tree, which is not very smart, will be used for the battle.
All MAA operations in Integrated Strategy use preset strategies, with all combat stages using built-in operation files. When no operation exists for a specific stage, a basic (not very intelligent) decision tree handles combat.
For more details, please refer to the [Integrated Strategy Schema](../../protocol/integrated-strategy-schema.md).
For details, see the [Integrated Strategy Protocol](../../protocol/integrated-strategy-schema.md).
- It supports automatic recognition of operators and proficiency and automatically selects better operators and skills.
- It supports identifying store items and prioritizes purchasing more powerful relics.
- Automatically recognizes operators and their levels, selecting optimal operators and skills.
- Recognizes shop items and prioritizes purchasing more powerful collectibles.
## Abnormal Detection
## Exception Handling
- It supports reconnection after disconnection and supports continuation to auto after 4 a.m. server reset.
- Encounters longer than 5 minutes will automatically retreat all ground units, and longer than 6 minutes will automatically abandon the operation to avoid wasting time/getting stuck.
- If the exploration gets stuck, it will automatically abandon and retry.
- Automatically reconnects and continues tasks after disconnections or the 4 AM server reset.
- For battles exceeding 5 minutes, automatically retreats all ground units; after 6 minutes, abandons the battle to avoid time-consuming deadlocks.
- If a task encounters problems, automatically abandons the current exploration and retries.
However, if it often gets stuck in a certain place and then gives up, seriously affecting efficiency, please feel free to submit an issue for feedback.
If the program repeatedly gets stuck at the same point, please submit an Issue with logs

View File

@@ -5,45 +5,38 @@ icon: icon-park-solid:other
# Others
::: important This page may be outdated.
:::
## GPU-Accelerated Inference
## GPU-accelerated inference
Uses DirectML to call the GPU for recognition inference acceleration<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9236)</sup>, reducing CPU usage significantly with minimal GPU usage. Recommended to enable.
Use DirectML to call the GPU for recognition and inference acceleration.<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9236)</sup>It can reduce a significant amount of CPU usage with minimal GPU usage, and it's recommended to enable it.
Testing has shown that some graphics cards may experience recognition issues when using this feature due to missing functionality or lower performance. MAA has built-in a blacklist for certain GPUs<sup>[PR1](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9990)[PR2](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/12134)</sup>. If you encounter recognition issues with GPUs not on the blacklist after enabling this feature, please submit an Issue.
Testing has shown that some graphics cards may encounter recognition issues when using this feature due to lacking certain functions or having lower performance. MAA has already built-in a blacklist for some GPUs.<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9990)</sup>If graphics cards not on the list also encounter recognition issues after enabling this feature, please submit an issue.
## One-Time Only
## Only Once
Configuration changes in the main interface and settings are usually saved automatically, but the following will reset after MAA restarts:
Configuration changes in the main interface and settings are usually saved automatically, but the following types will reset after MAA is restarted.
- Options marked with an `*`
- Options marked with `(One-time only)`
- Half-selected checkboxes obtained by right-clicking
- Options marked with a `*`
- Options marked with `(Only Once)`
- Semi-selected switches obtained by right-clicking the checkbox
## Auto-Switch Configuration at Startup
## Automatically switch configurations on startup
MAA supports automatically switching configurations via launch parameters by adding `--config <configuration name>` after the MAA process name. Example: `./MAA/MAA.exe --config Official`.
MAA supports automatic configuration switching through launch parameters by appending `--config <configuration name>` after the MAA process name.
Example: `./MAA/MAA.exe --config Official`.
Some characters need to be escaped according to JSON conventions. Example: when the configuration name is `"Official"`, the parameter should be `--config \"Official\"`.
Some symbols need to be escaped, following Json conventions.
Example: when the configuration name is `"Official"`, the parameter should be `--config \"Official\"`.
## Start/End Scripts
## Pre/Post-Script
Starting from v4.13.0, it is possible to set pre/post-script that automatically executes batch files before and after the task.
You need to provide the absolute or relative path to the batch file, which should have a `.bat` extension.
Since v4.13.0, MAA supports setting scripts to run before starting and after finishing tasks. Enter the absolute or relative path to a batch file (`.bat`) in the input field.
## Configuration Migration
In the Windows version, all MAA configurations are stored in the `gui.json` file within the `config` folder. Migrating this folder will transfer all MAA settings.
In the Windows version, all MAA configurations are stored in `gui.json` inside the `config` folder. Migrating this folder transfers all MAA settings.
## Note
## Additional Notes
- Tasks order can be changed on the UI. So can the shifting order in the infrastructure.
- All clicking event is randomized within a region, following Poisson distribution (higher probability at the center, lower probability around).
- Developed in C++, the core algorithm supports multi-level cache, to reduce CPU and memory usage as much as possible.
- Our software supports auto-update ✿✿ ヽ(°▽°) Beta-testers can try beta versions, which update faster and less buggy (maybe).
- If auto-update fails, you can download the OTA package manually and put the ZIP file under the same directory. The update will start automatically.
- Tasks on the left side of the main page can be dragged to change their order, as can facilities in the base management settings.
- All click operations target random positions within buttons, following a Poisson distribution (higher probability at the center, decreasing with distance from center).
- The core algorithms are developed in C++ with multi-level caching to minimize CPU and memory usage.
- The software supports automatic updates ✿✿ ヽ(°▽°). We recommend non-critical users try the beta version, which typically updates faster and has fewer bugs. (What MIUI? (╯‵□′)╯︵┻━┻)
- If automatic downloads fail for new versions, you can manually download the OTA package and place it in the MAA directory for automatic updating.

View File

@@ -3,22 +3,19 @@ order: 8
icon: solar:streets-map-point-linear
---
# Reclamation Algorithm (R.A.)
# Reclamation Algorithm
::: important This page may be outdated and not yet implemented for Global.
:::
Currently, the support for Reclamation Algorithm is still in the early stages, and it is not recommended to run it unattended. Stability cannot be guaranteed at this stage.
Currently, support for Reclamation Algorithm is still in early stages and unattended operation is not recommended, as stability cannot be guaranteed at this time.
## Default Mode
1. You need to start the task on the main interface of R.A.. (navigation is not yet written)
2. Cannot be used if there is already a save file. (just delete the existing save file)
3. Cannot be used if there are operators in the R.A. squad. (just clear the current squad in R.A., especially after finishing a wave)
1. You need to start the task from the Reclamation Algorithm main interface (navigation not yet implemented)
2. Cannot be used when you already have an existing save file (delete the existing save to use)
3. Cannot be used when operators are present in the Reclamation Algorithm squad (clear the current squad, especially after completing a wave)
## Points farm through crafting
## Manufacturing Points Farm
1. You need to start on the page where you can see the base camp after entering R.A..
2. If the item name is not filled in, the default is to craft Glow Sticks.
3. Prerequisite: It is the first day after settlement, and no enemy raids are entering the base camp for the next three days.
4. If the number that can be manufactured is exactly a multiple of 99, it will get stuck. You can use up a bit before saving, this will be fixed later.
1. You need to start from the page where you can see the base camp after entering Reclamation Algorithm
2. If no item name is specified, Glow Sticks will be crafted by default
3. Prerequisite: It must be the first day after settlement, with no enemy raids entering the base camp for the next three days
4. If the manufacturable quantity is exactly a multiple of 99, the process may get stuck. You can use up a small amount before saving; this issue will be fixed in the future

View File

@@ -3,21 +3,18 @@ order: 2
icon: fluent:people-24-filled
---
# Recruit
# Recruitment
::: important This page may be outdated.
:::
Auto Recruitment and [Recruitment Recognition](./tools.md#recruitment-recognition) are two different features!
The Recruit option in the 'Farming' tab and [recruitment recognition](./tools.md#recruitment-recognition) are two different features, though most options from the tool are in the recruit option as well.
## Auto Recruitment
## Auto-recruitment
Supports automatic use of `Expedited Plans`, allows setting maximum recruitment times per task, and can be combined with `Auto use Expedited Plans` to quickly use up all recruitment permits.
Auto-recruitment supports using `Expedited Plan` to make it fully automated. Please enable `Auto use Expedited Plan` and modify `Recruit max times` in `Recruit` - `General`.
Pop-up notifications will appear when 1★, 5★, or 6★ tags are detected.
Pop-up notification when 1★, 5★, 6★ operators are recruited.
Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/) while auto-recruitment.
Recruitment tag data is automatically uploaded to [Penguin Statistics](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/) when refreshing recruitment.
## Advanced Settings
`Auto confirm` means MAA automatically selects tags and recruits, while `Manually confirm` means no automatic selection and recruitment.
`Auto confirm` means MAA automatically selects tags and performs recruitment, while `Manual confirm` means no automatic tag selection or recruitment is performed.

View File

@@ -5,9 +5,6 @@ icon: lucide:gift
# Rewards
::: important This page may be outdated.
:::
Automatically claim daily rewards and weekly rewards.
Automatically claims daily rewards and weekly rewards.
Other reward types are also supported, please check the settings for details.

View File

@@ -5,21 +5,20 @@ icon: ic:round-rocket-launch
# Startup
::: important This page may be outdated.
:::
Automatically starts the emulator, launches the client, and enters the game.
Automatically start the emulator, start the client and enter the game.
Additional settings are required to automatically start the emulator. For details, see the startup settings, and enable `Retry launching the emulator when ADB connection fails` in the connection settings.
Automatic emulator startup requires additional configuration in the startup settings and enabling `Retry launching the emulator when ADB connection fails` in the connection settings.
## Account Switch
This feature needs to be used together with configuration switching or scheduled execution. An account switch operation will be performed each time the `Startup` task is executed.
Only supports switching to logged-in accounts. Use the login name to search. Please ensure that the input content is unique among all logged-in accounts. Does not work on the global version.
Only supports switching to already logged-in accounts, using the login name for identification. Please ensure that the input content is unique among all logged-in accounts.
Example CN`123****8901` can be input `123****8901``123``8901``3****8`.
- Examples:
- Official server: `123****8901` can be entered as `123****8901`, `123`, `8901`, or `3****8`
- Bilibili server: `Zhang San` can be entered as `Zhang San`, `Zhang`, or `San`
## Connection
## Connection Settings
[Click me](../connection.md)
[Click here](../connection.md)

View File

@@ -5,53 +5,46 @@ icon: octicon:tools-16
# Tools
::: important This page may be outdated.
:::
## Recruitment Recognition
Open the Recruit tag interface and click Start Recognition to initiate.
Open the Recruitment tag interface and click Start Recognition to initiate.
If you have previously run Operator recognition, potential data will be displayed after the recognized Operator's name.
If you have previously run Operator Recognition, potential data will be displayed after the recognized operator's name.
## Operator Recognition (Beta)
Can recognize the list of owned and unowned Operators, and recognize and save potential data for display in Recruitment recognition.
Can recognize lists of both owned and unowned operators, and identify potential levels to provide data for Recruitment Recognition.
## Depot Recognition (Beta)
Support automatically entering the depot from the main page. If the automatic jump fails, please manually switch to the `Upgrade materials` screen and slide to the far left to start the function.
Supports automatically entering the depot from the main page. If automatic navigation fails, please manually switch to the `Upgrade Materials` screen and **scroll all the way to the left** before starting the function.
Currently, exporting is supported to [Penguin-Stats](https://penguin-stats.cn/planner), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/settings).
Currently supports exporting to [Penguin Statistics Planner](https://penguin-stats.io/planner), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/settings).
Please feel free to contact us if you hope to integrate with our JSON schema.
If you are the administrator of a data site, we welcome you to contact us to adapt your site's material JSON protocol!
More useful features **may** be added in the future.
More useful features may be added in the future. (Teaser)
## Task Video Recognition (Alpha)
It can recognize strategy videos and automatically generate job files. Drag the video files into the `Copilot` tab page to start.
Can recognize strategy videos and automatically generate operation files. Simply drag video files into the Auto Combat page to start.
Only 16:9 aspect ratio videos with a resolution of 720p or higher are supported. The video content must not contain any black borders, distortion correction, emulator borders or other elements.
Requires 16:9 aspect ratio with 720p or higher resolution, with no black borders, emulator frames, notched screen adaptations, or other interfering elements.
## Gacha
**It really uses your account to draw your cards! It really uses your account to draw your cards!**
**It really uses your account to draw your cards! It really uses your account to draw your cards!**
**It really uses your account to draw your cards! It really uses your account to draw your cards!**
::: center
**It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators**&emsp;&emsp;
**It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators**&emsp;&emsp;
**It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators&emsp;&emsp;It really uses your account to pull operators**&emsp;&emsp;
:::
Didn't get a spot in [NiuNiu Airlines](https://www.bilibili.com/opus/926129394412421126)? No problem! Now everyone has their own NiuNiu Airlines! And it will take screenshots and display them in the center of the interface during the draw!
<!-- markdownlint-disable -->
_(WTF is NiuNiu Airlines)_
<!-- markdownlint-restore -->
Couldn't join the MAA Gacha Party livestreams? No problem! Now you can have your own personal gacha assistant! Screenshots will be taken during the pulling process and displayed in the center of the interface!
## Peep
Want to see the world through MAA's eyes? It's here now!
Want to see the world through MAA's eyes? Now you can!
MAA will attempt to take screenshots of the emulator at the target frame rate and display the screenshots in real time in the window.
MAA will attempt to take screenshots of the emulator at the target frame rate and display them in real-time in the window.
When the screenshot speed is significantly slower than the target frame rate, MAA will actively lower the target frame rate to match the screenshot speed. ~~Can be used as a stress test~~
When the screenshot speed is significantly slower than the target frame rate, MAA will automatically reduce the target frame rate to match the screenshot speed. ~~Can be used as a stress test~~

View File

@@ -5,65 +5,68 @@ icon: ri:guide-fill
# Getting Started
## Preparation
Quick start guide!
## Prerequisites
1. Confirm system version
MAA only supports Windows 10 / 11. For earlier versions of Windows, please refer to [FAQ](./faq.md#SystemIssues).
MAA on Windows only supports Windows 10 and 11. For older Windows versions, please refer to the system issues section in [FAQ](./faq.md#system-issues).
Non-Windows users, please refer to [Emulator and Device Supports](./device/).
Non-Windows users, please refer to [Emulator and Device Support](./device/).
2. Download the correct version
[MAA official website](https://maa.plus/) will automatically select the correct version architecture, which for most users reading this article should be Windows x64.
The [MAA official website](https://maa.plus/) will automatically select the correct architecture for most users reading this article, which should be Windows x64.
3. Unzip correctly
3. Extract correctly
Verify that the extraction is complete and make sure to extract the MAA to a separate folder. Do not extract MAA to a path that requires UAC permissions such as `C:\`, `C:\Program Files\`, etc.
Ensure the extraction is complete, and make sure to extract MAA to a separate folder. Do not extract MAA to paths requiring UAC permissions such as `C:\` or `C:\Program Files\`.
4. Install the runtime library
4. Install runtime libraries
MAA requires VCRedist x64 and .NET 8. Please run `DependencySetup_依赖库安装.bat` in the MAA directory to install.
MAA requires VCRedist x64 and .NET 8. Please run `DependencySetup_依赖库安装.bat` in the MAA directory to install them.
Refer to [FAQ](faq.md#missing-runtime-libraries) for more information
For more information, please refer to the pinned section in [FAQ](./faq.md).
5. Confirm simulator support
5. Confirm emulator support
Check [Emulator Supports](./device/) to confirm the support of the emulator you are using.
Check [Emulator and Device Support](./device/) to verify the compatibility of your emulator.
6. Correctly set the emulator resolution
6. Set the correct emulator resolution
The emulator resolution should be `1280x720` or `1920x1080` in landscape mode; for YostarEN, the only supported resolution is `1920x1080`.
Emulator resolution should be landscape `1280x720` or `1920x1080`; for YostarEN players, it must be `1920x1080`.
## Initial
## Initial Configuration
0. If you'd like to use automatic detection, run **one** emulator and make sure no other Android devices are connected to the computer.
0. If you want to use automatic detection, run **one** emulator and ensure no other Android devices are connected to your computer.
1. Follow the setup guide to configure, and MAA will automatically detect the running emulator. If the detection fails or you'd like to run multiple emulators, please check [Connection](./connection.md).
1. Follow the setup guide for configuration. MAA will automatically detect the running emulator. If detection fails or you need multiple instances, refer to [Connection Settings](./connection.md).
2. ~~A hot update will be performed when MAA is run for the first time. Please close MAA and restart after prompting in the log on the right.~~
2. ~~When running MAA for the first time, it will perform a hot update. Please close and restart MAA when prompted in the log on the right.~~
3. Drag the task list on the left to sort the tasks, and check or uncheck the checkboxes to select
the tasks to be run.
3. Drag the task list on the left to reorder tasks, and check or uncheck the checkboxes to select tasks to run.
4. Link Start!
## Advanced configuration
## Advanced Configuration
Check out the documentation.
Read the documentation!
## Other
## Other Notes
::: center
**When encountering problems, read the documents please.**
**When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!**
**When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!**
**When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!** &emsp;&emsp; **When encountering problems, read the documentation, read the documentation, read the documentation!**
:::
1. The log files are located in the folder under the MAA folder which is named `debug`. Logs are important. When asking others for help, be sure to take `asst.log` and `gui.log` with you.
1. The logs are located in the `debug` folder inside the MAA directory. Logs are extremely important. When seeking help from others, always bring both `asst.log` and `gui.log` with you.
2. To meet the various needs of all users as much as possible, MAA provides a large number of customization options. When you find that MAA lacks a certain function, it may be because it is not easily discoverable rather than non-existent, such as `Manual entry of stage names` and `Do not put stationed operators in Dormitory`.
2. MAA provides many customization options to meet all users' various needs. If you think MAA is missing a feature, it might just be hard to find rather than non-existent, such as `Manual stage name input` and `Do not place stationed operators in dormitory`.
3. Placing the mouse pointer on some options will give detailed instructions, such as `Do not put stationed operators in Dormitory`.
3. Hovering your mouse pointer over certain options will display detailed explanations, such as `Do not place stationed operators in dormitory`.
4. For some checkboxes, right-click on them to change them to a half-selected state. The checkboxes in this state will be automatically cleared the next time MAA is started, which can be understood as `only once`.
4. For some checkboxes, right-clicking will change them to a half-selected state. Checkboxes in this state will automatically clear when MAA is next started, which can be understood as `one-time only`.
5. ~~If you're uncertain about your needs, don't select the Nightly Release.~~
5. ~~If you don't know what you need and can't easily resolve potential problems, do not use beta versions.~~

View File

@@ -3,35 +3,34 @@ order: 6
icon: material-symbols:view-quilt-rounded
---
# Infrastructure Schedule Schema
# Base Scheduling Protocol
This document is primarily machine-translated. If you have the ability, please take a look at the Chinese version. We would greatly appreciate any errors or suggestions for improvement.
Usage and Field Description for `resource/custom_infrast/*.json` files
Usage and field descriptions for `resource/custom_infrast/*.json`
::: tip
As the JSON format does not support comments, please remove them when using the examples below.
Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly into your JSON files.
:::
[Visual Schedule Generation Tool](https://ark.yituliu.cn/tools/schedule)
[Visual Schedule Generator Tool](https://ark.yituliu.cn/tools/schedule)
## Complete Field List
## Complete Field Reference
```json
{
"title": "小号的换班方案", // Assignment name, optional
"description": "哈哈哈哈", // Assignment description, optional
"title": "小号的换班方案", // Task name, optional ("小号的换班方案" = "Alt Account Shift Plan")
"description": "哈哈哈哈", // Task description, optional ("哈哈哈哈" = "Hahaha")
"plans": [
{
"name": "早班", // Plan name, optional
"description": "lol", // Plan description, optional
"description_post": "", // The description to display after executing the plan, optional
"period": [ // Shift change period, optional
// If the current time is within this interval, the plan will be automatically selected (there may be multiple plans in the entire JSON file)
// If this field does not exist, it will automatically switch to the next plan after each run.
// Core does not process this field. If you are using interface integration with MAA, please implement this logic on your own
"name": "早班", // Plan name, optional ("早班" = "Morning Shift")
"description": "lol", // Plan description, optional
"description_post": "", // Description displayed after plan execution, optional
"period": [
// Shift time period, optional
// If current time is within this range, this plan will be automatically selected (JSON file may contain multiple plans)
// If this field doesn't exist, automatically switches to the next plan after each shift ends
// Core doesn't process this field; if you're using MAA through integration, implement this logic yourself
[
"22:00", // In the hh:mm format, currently only simple numerical comparison is used. If it crosses midnight, please refer to the example in this file
"22:00", // Format required: hh:mm, currently just compares number sizes, for cross-day periods follow this example
"23:59"
],
[
@@ -39,108 +38,98 @@ As the JSON format does not support comments, please remove them when using the
"06:00"
]
],
"duration": 360, // Work duration (in minutes), reserved field, currently unused. In the future, there may be reminders or automatic shift changes when the time comes
"Fiammetta": { // Which operator is using "Fiammetta", optional, not required if not in use
"enable": true, // Whether to use "Fiammetta", optional, default is true
"target": "巫恋", // Target operator, which is obtained through OCR and needs to be passed in the name of the operator in the corresponding client language
"order": "pre", // Whether to use it before or after the entire shift change, optional, with a value range of "pre" / "post", default is "pre"
"duration": 360, // Work duration (minutes), reserved field, currently not used. May be used for shift change reminders in the future
"Fiammetta": {
// Which operator to use "Fiammetta" on, optional, omit if not using
"enable": true, // Whether to use "Fiammetta", optional, default true
"target": "巫恋", // Target operator, uses OCR, requires operator name in client language ("巫恋" = "Shamare")
"order": "pre" // Use before entire shift change or after, optional, values "pre"/"post", default "pre"
},
"drones": { // For using drones. Optional. If not specified, drones won't be used.
"enable": true, // Whether to use drones. Optional. The default is true.
"room": "trading", // Which type of room to use drones for. Possible values: "trading" / "manufacture"
"index": 1, // The index of the room to use drones for. Corresponds to the tab on the left. Possible values: [1, 5].
"rule": "all", // Usage rules. Reserved field. Currently unused, but may be used in the future to support plug-ins and other operations.
"order": "pre" // Whether to use drones before or after changing operators. Optional. Possible values: "pre" / "post". Default is "pre".
"drones": {
// Drone usage, optional, omit if not using drones
"enable": true, // Whether to use drones, optional, default true
"room": "trading", // Which room type to use drones on, values "trading"/"manufacture"
"index": 1, // Which instance of that room type to use drones on, corresponds to left tab number, range [1, 5]
"rule": "all", // Usage rule, reserved field, currently not used. May support plug/unplug operations in future
"order": "pre" // Use before operator changes or after, optional, values "pre"/"post", default "pre"
},
"groups":[ // For "control" / "manufacture" / "trading", operator groups can be set
"groups": [
// For "control"/"manufacture"/"trading", you can set operator groups
{
"name":"A",
"operators":[
"古米",
"银灰",
"梅"
"name": "古+银", // ("古+银" = "Gummy+Silver")
"operators": ["古米", "银灰", "梅"] // ("古米" = "Gummy", "银灰" = "SilverAsh", "梅" = "Plum")
},
{
"name": "清流", // ("清流" = "Purestream")
"operators": ["清流", "森蚺", "温蒂"] // ("清流" = "Purestream", "森蚺" = "Eunectes", "温蒂" = "Weedy")
}
],
"rooms": {
// Room information, required
// Values: "control"/"manufacture"/"trading"/"power"/"meeting"/"hire"/"dormitory"/"processing"
// Missing rooms use default algorithm for shift change.
// To skip a room, use skip field or uncheck the facility in software Task Settings - Base Management - General Settings
"control": [
{
"operators": [
"夕", // Uses OCR, requires operator name in client language ("夕" = "Dusk")
"令", // ("令" = "Ling")
"凯尔希", // ("凯尔希" = "Kal'tsit")
"阿米娅", // ("阿米娅" = "Amiya")
"玛恩纳" // ("玛恩纳" = "Closure")
]
}
],
"manufacture": [
{
"operators": ["芬", "稀音", "克洛丝"], // ("芬" = "Fang", "稀音" = "Scene", "克洛丝" = "Kroos")
"sort": false // Whether to sort (by operators order above), optional, default false
// Example: When using Scene, Pallas, Shamare, etc. with "sort": false, operator order may be scrambled, losing warm-up effect.
// Using "sort": true can avoid this issue
},
{
"skip": true // Whether to skip current room (by array index), optional, default false
// If true, other fields can be empty. Only skips operator change operation, other actions like drone usage, clue exchange still occur
},
{
"operators": ["Castle-3"],
"autofill": true, // Use original algorithm to auto-fill remaining positions, optional, default false
// If operators is empty, room uses original algorithm completely
// If operators not empty, considers only single operator efficiency, not combination efficiency
// May conflict with custom operators defined later, e.g., using operators needed later, use cautiously or place autofill rooms last
"product": "Battle Record" // Current manufacturing product, optional.
// If detected facility product doesn't match task setting, UI will show red warning; may have more uses in future
// Values: "Battle Record"|"Pure Gold"|"Dualchip"|"Originium Shard"|"LMD"|"Orundum"
},
{
"operators": ["多萝西"], // ("多萝西" = "Dorothy")
"candidates": [
// Backup operators, optional. Uses whoever's available until positions filled
// Incompatible with autofill=true, i.e., autofill must be false when this array not empty
"星源", // ("星源" = "Astgenne")
"白面鸮", // ("白面鸮" = "Ptilopsis")
"赫默" // ("赫默" = "Silence")
]
},
{
"name":"B",
"operators":[
"清流",
"森蚺",
"温蒂"
"use_operator_groups": true, // Set true to use operator groups from groups field, default false
"operators": [
// When enabled, names in operators are interpreted as group names
"古+银", // Will select groups by mood threshold and setting order ("古+银" = "Gummy+Silver")
"清流" // If Gummy+Silver group has operators below threshold, will use Purestream group ("清流" = "Purestream")
]
}
],
"rooms": { // Room information. Required.
// Possible values: "control" / "manufacture" / "trading" / "power" / "meeting" / "hire" / "dormitory" / "processing".
// If a room is not specified, the default algorithm will be used to change operators.
// To avoid changing operators in a specific room, use the "skip" field, or uncheck the corresponding facility in the software's infrastructure settings.
"control": [
{
"operators": [ // The operators assigned to this room. Identified through OCR. Must be passed in the corresponding client language.
"夕",
"令",
"凯尔希",
"阿米娅",
"玛恩纳"
]
}
],
"manufacture": [
{
"operators": [ // The operators assigned to this room.
"芬",
"稀音",
"克洛丝"
],
"sort": false, // Whether to sort the operators according to the above order. Optional. Default is false.
// For example: if using operators like "稀音", "帕拉斯", "巫恋", etc. and "sort": false, the order of operators may be disrupted, leading to a loss of preheating effect.
// If "sort": true is used, this issue can be avoided.
},
{
"skip": true // Whether to skip this room (corresponding to the array index). Optional. Default is false.
// If true, all other fields can be empty. Only the operator change will be skipped. Other actions, such as drone usage and clue exchange, will proceed as usual.
},
{
"operators": [
"Castle-3"
],
"autofill": true, // Use the original algorithm to automatically fill the remaining positions. Optional, default to false.
// If the operator's array is empty, the scheduling of the entire room will be based on the original algorithm.
// If the operator's array is not empty, only the efficiency of individual operators will be considered, not the efficiency of the entire combination.
// Be careful that conflicts may arise with the custom operators defined later, for example, if the operators needed later are used here; please use it with caution, or place the autofill room order at the end.
"product": "Battle Record" // The current manufactured product, optional.
// If the product recognized by the facility does not match the one set in the task, the interface will display a red warning message. More functions may be added in the future.
// Possible values: "Battle Record" | "Pure Gold" | "Dualchip" | "Originium Shard" | "LMD" | "Orundum"
},
{
"operators": [
"多萝西"
],
"candidates": [ // Optional backup operators. Use whoever is listed until all positions are filled.
// Not compatible with autofill=true. When this array is not empty, autofill should be set to false.
"星源",
"白面鸮",
"赫默"
]
},
{
"use_operator_groups":true, // Set to true to use the grouping of operators in groups, default is false
"operators":[ // When enabled, names in operators will be interpreted as group names
"A", // Grouping will be selected according to mood threshold and setting order
"B" // If any operator in group A whose mood is below the threshold, group B will be used
]
}
],
"meeting": [
{
"autofill": true // Use autofill for the entire room.
"autofill": true // Completely autofill this room
}
]
}
},
{
"name": "晚班"
// ...
"name": "晚班" // ("晚班" = "Night Shift")
// ...
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,149 +3,166 @@ order: 3
icon: ph:sword-bold
---
# Copilot Schema
# Combat Operation Protocol
Usage of `resource/copilot/*.json` and field description.
Usage of `resource/copilot/*.json` files and field descriptions
## Overview
::: tip
Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly into your JSON files.
:::
## Complete Field Reference
```json
{
"stage_name": "暴君", // Stage name, required. The Chinese name of the level, code, stageId, levelId, etc. are all acceptable as long as they are unique.
"opers": [ // Operator list
"stage_name": "暴君", // Stage name, required. Chinese name, code, stageId, levelId, etc. are all acceptable as long as they uniquely identify the stage. ("暴君" = "Patriot")
"opers": [
// Specified operators
{
"name": "棘刺", // Operator name
"skill": 3, // Skill ID with range [1, 3], optional, 1 by default
"skill_usage": 0, // Skill usage, optional, 0 by default
// 0 - Used on `actions`
// 1 - Used when ready (e.g. Thorns: Destreza, Myrtle: Support Beta)
// 2 - Used when ready, only once (e.g. Mountain: Sweeping Stance)
// 3 - Auto-decision (not implemented)
// 0 for auto skills
"requirements": { // Requirements, Reserved field, not implemented, optional, empty by default
"elite": 2, // Elite requirement, optional, 0 by default
"level": 90, // Level requirement, optional, 0 by default
"skill_level": 10, // Skill level requirement, optional, 0 by default
"module": 1, // Module requirement, optional, 0 by default
"potentiality": 1 // Potential requirement, optional, 0 by default
"name": "重岳", // Operator name ("重岳" = "Chongyue")
"skill": 3, // Skill number. Optional, default is 1, range [1, 3]
"skill_usage": 2, // Skill usage method. Optional, default is 0
// 0 - Do not use automatically (depends on "actions" field)
// 1 - Use whenever ready, as many times as possible (e.g., Thorns S3, Myrtle S1, etc.)
// 2 - Use X times (e.g., Mountain S2 once, Chongyue S3 five times, set via "skill_times" field)
// 3 - Auto-determine usage timing (placeholder)
// For auto-trigger skills, use 0
"skill_times": 5, // Number of skill activations. Optional, default is 1
"requirements": {
// Level requirements. Reserved interface, not yet implemented. Optional, default is empty
"elite": 2, // Elite level. Optional, default is 0, no elite requirement
"level": 90, // Operator level. Optional, default is 0
"skill_level": 10, // Skill level. Optional, default is 0
"module": 1, // Module number. Optional, default is 0
"potentiality": 1 // Potential requirement. Optional, default is 0
}
},
}
],
"groups": [
{
"name": "任意正常群奶", // Group name, required
// Any name is accepted as long as it matches the `name` field in `deploy` below
"opers": [ // Operators to be chosen randomly, similar to the `opers` field above. Operators with higher levels have higher priority.
"name": "任意正常群奶", // Group name, required ("任意正常群奶" = "Any Medic")
// Use any name that matches the "name" field in the deploy section below
"opers": [
// Choose any one operator, unordered, higher level operators preferred, usage same as opers field above
{
"name": "夜莺", // Nightingale
"name": "夜莺", // Operator name ("夜莺" = "Nightingale")
"skill": 3,
"skill_usage": 2 // Skill CD may differ
"skill_usage": 2 // For specific timing, different operators may have different skill CDs, please be aware
},
{
"name": "白面鸮", // Ptilopsis
"name": "白面鸮", // Operator name ("白面鸮" = "Ptilopsis")
"skill": 2,
"skill_usage": 2
}
]
}
],
"actions": [ // Actions in order, required. Will be executed sequentially
"actions": [
// Combat operations. Ordered, executes the next one only after completing the previous one. Required
{
"type": "部署", // Action type, optional, "Deploy" by default
// "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon"
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机"
// Both English and Chinese are supported
// "Deploy" will wait until the cost is enough (unless timeout)
// "Skill" will wait until the skill is ready (unless timeout)
// "SpeedUp" is switchable, i.e. after using it will become 2x speed, and using it again will make it back to normal speed
// "BulletTime", Reserved field, not implemented, it is the 1/5 speed after clicking any operator. Proceeding with any other action will make it back to normal speed
// "Output" will print out the content of the doc (for subtities, etc.)
// "SkillDaemon" will cast skills when they are ready, and do nothing else until the end
// The relationship between the following three fields is AND, i.e. &&
"kills": 0, // Waiting until the number of kills required is reached, optional, 0 by default
"costs": 50, // Waiting until the cost for the amount specified, optional, 0 by default
// Note that costs can change due to potential, so this field is only for easy fights. Otherwise, please use "cost_changes"
// Recognition is accurate when the cost is 2 digits. Not recommended for 3-digit costs.
"cost_changes": 5, // Waiting until the cost changes for the amount specified, optional, 0 by default
// Note that it calculates since the action starts (based on the cost of the previous action)
// Recognition is accurate when the cost is 2 digits. Not recommended for 3-digit costs.
"cooling": 2, // Waiting until the number of operators in CD reaches the number, optional, -1 by default for "ignore".
"type": "部署", // Operation type, optional, default is "Deploy" ("部署" = "Deploy")
// "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera"
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头"
// Both English and Chinese are supported (e.g., "部署" for "Deploy")
// For "Deploy", waits until enough DP is available (unless timeout)
// For "Skill", waits until skill is ready (unless timeout)
// "SpeedUp" toggles between normal and 2x speed
// "BulletTime" is 1/5 speed after clicking an operator; any following action returns to normal speed
// "name" or "location" must be specified to indicate which operator to enter bullet time with (auto-detected)
// If next action is "Skill"/"Retreat", use the same "name" or "location" as the next action
// If next action is "Deploy", use any operator (but avoid using the operator to be deployed as it affects recognition)
// "Output" doesn't show this step in UI, used only to output doc content (for subtitles, etc.)
// "SkillDaemon" only uses "use when ready" skills, does nothing else until battle ends
// "MoveCamera" for Guide mode, requires the distance field
// Currently the four conditions below use AND relationship
"kills": 0, // Kill count condition, waits until reached. Optional, default is 0, executes immediately
"costs": 50, // DP condition, waits until reached. Optional, default is 0, executes immediately
// DP can be affected by potential, may not be entirely accurate, suitable for battles with loose timing requirements.
// Otherwise use cost_changes below
// Recognition is more accurate for two-digit DP; three-digit DP may be misrecognized, not recommended
"cost_changes": 5, // DP change condition, waits until reached. Optional, default is 0, executes immediately
// Calculated from when this action begins executing (using DP at the end of previous action as baseline)
// Supports negative values (e.g., when operators like Jaye reduce DP)
// Recognition is more accurate for two-digit DP; three-digit DP may be misrecognized, not recommended
"cooling": 2, // Number of operators on cooldown condition, waits until reached. Optional, default is -1, no recognition
// TODO: Other conditions
// TODO: "condition_type": 0, // Condition aggregation type, optional, 0 by default
// // 0 - AND 1 - OR
"name": "棘刺", // Operator/group name, required when `type` is "Deploy", Optional when type is "Skill" or "Retreat"
"location": [ 5, 5 ], // Position for deployment
// Required when `type` is "Deploy".
// Optional when `type` is "Skill" or "Retreat",
// "Skill": Recommended for site facilities only, using skill with location instead of name, please simply use name to use skill for normal operators
// "Retreat" Recommended only when multiple summons exist, retreating with location instead of name, please simply use name to retreat for normal operators
"direction": "左", // Direction for deployment, required when `type` is "Deploy"
// "Left" | "Right" | "Up" | "Down" | "None"
// "左" | "右" | "上" | "下" | "无"
// Both English and Chinese are supported
"skill_usage": 1, // Override skill usage settings, required when `type` is "SkillUsage"
// E.g.: Myrtle needs to attack without using the skill at the beginning, and use the skill automatically later.
// Set it to 1 in that case.
"pre_delay": 0, // Pre-delay in ms, optional, 0 by default
// Once all condition parameters of the current action are met, a timer starts, and upon its completion, the action corresponding to the type is executed.
"post_delay": 0, // Post-delay in ms, optional, 0 by default
// The current action's type starts a timer upon completion of the action, and once the timer ends, the next action begins.
// "timeout": 999999999, // Reserved field, not implemented
// Timeout time in ms, optional when `type` is "Deploy" | "Skill", INT_MAX by default
// Will proceed with the next action when timeout
"doc": "下棘刺了!", // Description, optional, displayed on the UI with no effects
"doc_color": "orange" // Description colour, optional, displayed on the UI with no effects
// TODO: "condition_type": 0, // Relationship between execution conditions, optional, default is 0
// // 0 - AND; 1 - OR
"name": "棘刺", // Operator name or group name, required when type is "Deploy", optional for "Skill"|"Retreat" ("棘刺" = "Thorns")
"location": [
5,
5
], // Operator deployment position.
// Required when type is "Deploy".
// Optional when type is "Skill"|"Retreat".
// "Skill": Recommended only for automatic devices on the field, use location without name to activate skill. For normal deployed operators, use name
// "Retreat": Recommended only when multiple summons share the same name, use location without name to retreat. For normal deployed operators, use name
"direction": "左", // Operator facing direction. Required when type is "Deploy" ("左" = "Left")
// "Left" | "Right" | "Up" | "Down" | "None"
// "左" | "右" | "上" | "下" | "无"
// Both English and Chinese are supported (e.g., "左" for "Left")
"skill_usage": 1, // Change skill usage method. Required when type is "SkillUsage"
// Example: Initially need Myrtle to help attack without using skill, later need auto skill activation
// Can set to 1 at the appropriate time
"skill_times": 5, // Number of skill activations. Optional, default is 1
"pre_delay": 0, // Pre-delay. Optional, default is 0, unit is milliseconds
// After all conditions for the current action are met, starts timing, executes the corresponding action when timing ends
"post_delay": 0, // Post-delay. Optional, default is 0, unit is milliseconds
// After the current action is executed, starts timing, begins next action when timing ends
//
// "timeout": 999999999, // Reserved field, not yet implemented.
// Timeout. Optional when type is "Deploy"|"Skill". Default INT_MAX, unit is milliseconds
// Abandons current action and executes next action when timeout occurs
"distance": [
4.5,
0
], // Required when type is "MoveCamera"
// [x movement in tiles, y movement in tiles], can be decimal
// Note that during "MoveCamera", operators on field cannot be recognized, need to use sleep to cover entire animation
"doc": "下棘刺了!", // Description, optional. Displayed in UI, no actual function ("下棘刺了!" = "Deploying Thorns!")
"doc_color": "orange" // Description text color, optional, default is gray. Displayed in UI, no actual function
},
// Example 1
// Example 1
{
"name": "任意正常群奶",
"location": [ 5, 6 ],
"direction": "右"
"name": "任意正常群奶", // ("任意正常群奶" = "Any Medic")
"location": [
5,
6
],
"direction": "右" // ("右" = "Right")
},
// Example 2
// Example 2
{
"name": "史尔特尔",
"location": [ 4, 5 ],
"direction": "左",
"doc": "你史尔特尔奶奶来啦!",
"name": "史尔特尔", // ("史尔特尔" = "Silverash")
"location": [
4,
5
],
"direction": "左", // ("左" = "Left")
"doc": "你史尔特尔奶奶来啦!", // ("你史尔特尔奶奶来啦!" = "Here comes your Silverash grandma!")
"doc_color": "red"
},
// Example 3
// Example 3
{
"type": "二倍速"
"type": "二倍速" // ("二倍速" = "SpeedUp")
}
],
"minimum_required": "v4.0", // Minimum required MAA version, required, reserved field, not implemented
"doc": { // Description, optional
"title": "低练度高成功率作业",
"minimum_required": "v4.0", // Minimum required MAA version, required. Reserved field, not yet implemented
"doc": {
// Description, optional.
"title": "低练度高成功率作业", // ("低练度高成功率作业" = "Low-investment high-success rate operation")
"title_color": "dark",
"details": "对练度要求很低balabala……", // You can write your name here, video link, walkthrough link, etc.
"details": "对练度要求很低balabala……", // ("对练度要求很低balabala……" = "Very low level requirements etc...") Recommend adding your name (author), reference video links, etc. here
"details_color": "dark"
},
"difficulty": 0 // The difficulty of the task, optional, the default value is 0.
"difficulty": 0 // Operation difficulty, optional, default value is 0.
// 0: Default, not set
// 1: Support normal difficulty
// 2: Support raid difficulty
// 3: Support normal and raid difficulty
// 1: Supports normal difficulty
// 2: Supports challenge mode
// 3: Supports both normal and challenge modes
}
```
## Example
## Examples
[OF-1](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/OF-1_credit_fight.json)

View File

@@ -13,10 +13,12 @@ Please note that JSON files do not support comments. Comments are for demonstrat
- `resource/roguelike/` the files for each theme are below
- Theme folder
`Phantom/` for Phantom's I.S.
`Mizuki/` for Mizuki's I.S.
`Sami/` for Sami's I.S.
- `autopilot/`combat json for each level
`Phantom/` for Phantom's I.S. ("傀影" - Phantom & Crimson Solitaire)
`Mizuki/` for Mizuki's I.S. ("水月" - Mizuki & Caerula Arbor)
`Sami/` for Sami's I.S. ("萨米" - Expeditioner's Jǫklumarkar)
`Sarkaz/` for Sarkaz's I.S. ("萨卡兹" - Sarkaz Endless Tale)
`JieGarden/` for JieGarden's I.S. ("界园" - Boundary Garden)
- `autopilot/` combat json for each level
- `level_name_in_chinese.json` combat logic of the level
- `encounter/` encounter nodes logic
- `default.json` levelling mode
@@ -24,10 +26,22 @@ Please note that JSON files do not support comments. Comments are for demonstrat
- `recruitment.json` operators recruitment logic
- `shopping.json` trade store purchasing logic
- Specifically, in `Sami/`:
- `foldartal.json` defines the usage logic for Sami's Foldartals
- `collapsal_paradigms.json` defines the types of Sami's Collapsal Paradigms
- `autopilot/关卡名_collapse.json` combat logic for stages (Collapsal Paradigm farming mode)
- `encounter/collapse.json` encounter logic for Collapsal Paradigm farming mode
- In `Sarkaz/`:
- `fragments.json` stores basic information about Sarkaz's Thoughts
- `map.json` stores template image information for Sarkaz's Blueprint navigation
## Integrated Strategy Step 1: Operator Recruitment
`resource/roguelike/theme_name/recruitment.json` describes the logic of the operator recruitment
The tools in `tools/RoguelikeRecruitmentTool` and `tools/RoguelikeOperSearch` can help view and edit the recruitment files.
```json
{
"theme": "Phantom", // I.S. Theme (In this case Phantom)
@@ -42,17 +56,17 @@ Please note that JSON files do not support comments. Comments are for demonstrat
### Operator classification
Split operators in different ***groups*** according to your understanding of the game(Group, related conceptual references [Copilot Schema](./copilot-schema.md))
Split operators in different ***groups*** according to your understanding of the game (Group concept references [Copilot Schema](./copilot-schema.md))
::: info
1. Operators and summons within the same group must be deployed in the same way (i.e. both melee or ranged)
1. Operators and summons within the same group must be deployed in the same way (i.e. both melee or ranged) and should have **similar attack ranges**
2. Allows the same operator or summon to be sorted into different groups, depending on its usage.
3. Please do not change the name of an existing group, as this may cause previous versions of the task to be unavailable when MAA is updated!
4. Please try not to add new groups, instead try to implement new operators added to the task, into existing groups according to the usage
4. Please try not to add new groups, instead try to implement new operators added to the task into existing groups according to their usage
:::
::: tip
@@ -64,15 +78,15 @@ By default, only E1 Level 55 operators will be recruited
"theme": "Phantom",
"priority": [ // Groups, in order
{
"name": "棘刺", // Group name (In this case Thorns)
"name": "棘刺", // Group name ("棘刺" = "Thorns")
"opers": [ // Group contains operators, ordered, representing the deployment priority
//(e.g. if you need to deploy the group's operators, test for Thorns, deploy Thorns if it's available, test for Horn is Thorns is not available)
// (e.g. if you need to deploy the group's operators, test for Thorns, deploy Thorns if it's available, test for Horn if Thorns is not available)
{
"name": "棘刺", // Operator's name (Thorns)
"name": "棘刺", // Operator's name ("棘刺" = "Thorns")
...
},
{
"name": "号角", // Operator's name (Horn)
"name": "号角", // Operator's name ("号角" = "Horn")
...
}
]
@@ -86,18 +100,44 @@ By default, only E1 Level 55 operators will be recruited
1. Introduction to existing groups
Take Phantom's I.S. as an example: operators are mainly divided in
Taking Sami's I.S. as an example: operators are mainly divided into:
| Group | Considerations | Class | Operators |
| :--- | :--- | :--- | :--- |
| ***Ground block*** | 站场和清杂 | 重装, 近卫 | 奶盾, 基石, 羽毛笔, 山, M3, 令和稀音的召唤物, 斑点, 重装预备干员 |
| ***Ground single-block*** | 单独对战精英怪 | 处决者特种 | 史尔特尔, 异德, 麒麟R夜刀, M3, |
| ***Ranged C*** | 常态和决战输出 | 狙击, 术士 | 假日威龙陈, 澄闪, 艾雅法拉, 肥鸭 |
| ***Ranged DPS*** | 对空和常态输出 | 狙击, 术士 | 空弦, 能天使, 克洛丝, 史都华德 |
| ****** | 治疗能力 | 治疗, 辅助 | 凯尔希, 浊心斯卡蒂, 芙蓉, 安赛尔 |
| ***回费*** | 回复cost | 先锋 | 桃金娘, 伊内丝, 芬, 香草 |
| ***炮灰*** | 吸收炮弹, 再部署 | 特种, 召唤物 | M3, 红, 桃金娘, 预备干员 |
| ***高台预备*** | 有一定输出能力 | | 梓兰, 预备干员 |
| ***地面阻挡*** (Ground Blocking) | Field presence and clearing enemies | Defenders, Guards | Healing defenders, cornerstones, Blacknight, Mountain, M3, Ling and Scene's summons, Spot, Defender reserve operators |
| ***地面单切/处决者*** (Ground Single-Target/Executors) | Solo elite enemies | Executor specialists | SilverAsh, Yato the Elegy, Kirara R Yato, M3, Red |
| ***高台C*** (Ranged Core) | Sustained and decisive output | Snipers, Casters | Weathered, Logos, Ch'en the Holungday, Chongyue |
| ***高台输出*** (Ranged DPS) | Anti-air and sustained output | Snipers, Casters | Archetto, Exusiai, Kroos, Steward |
| ***速狙*** (Fast Snipers) | Physical damage, standard range | Snipers | Eyjafjalla, Exusiai, Yeye, Kroos |
| ***术师*** (Casters) | Arts damage, standard range | Single-target Casters | Eyjafjalla, Logos, Steward |
| ***辅助*** (Supporters) | Can hit 1 tile behind | Supporters | Suzuran, Lily of the Valley, Yeye, Orchid |
| ***狙击*** (Long-range Snipers) | Longer range high ground | Artilleryman, Spreadshooter | Weathered, Toddifons, Rosa |
| ***奶*** (Healers) | Healing ability | Medics, Supporters | Kal'tsit, Skadi the Corrupting Heart, Hibiscus, Ansel |
| ***单奶*** (Single-target Healers) | Attack range depth >= 4 | Medics | Kal'tsit, Reed the Flame Shadow, Ptilopsis, Perfumer, Hibiscus, Ansel |
| ***群奶*** (AoE Healers) | Attack range depth < 4, can heal behind | Medics, Supporters | Nightingale, Ptilopsis, Skadi the Corrupting Heart |
| ***回费*** (DP Recovery) | Cost recovery | Vanguards | Myrtle, Ines, Fang, Vanilla |
| ***地刺*** (Ground Traps) | No blocking, provides DPS or slowing in front of defenders | Ambushers | Gladiia, Ascalon, Manticore |
| ***地面远程*** (Ground Ranged) | Ground long-range, can output behind shields | Instructors, Lords | Horn, Pallas, Thorns, SilverAsh |
| ***领主*** (Lords) | Ground attack range depth > 4, can target air | Fortress, Lord | Thorns, SilverAsh, Chouyu |
| ***盾法*** (Shield Casters) | Short attack range, some tanking ability | Arts Fighter Casters | Lin, Carnelian |
| ***炮灰*** (Fodder) | Absorb attacks, redeploy | Specialists, summons | M3, Red, Myrtle, reserve operators |
| ***大龙*** (Big Dragon) | Tank in front of blockers, easy to combine | Summons | Ling's dragons, Jessica the Flame Purifier's shield |
| ***补给站*** (Supply Stations) | Accelerate main DPS operator skill rotation | Summons | Support Supply Station, Artificer operator summons |
| ***无人机*** (Drones) | Ignore height restrictions for healing summons | Summons | Skadi's Seaborn, Silence's Medical Drone |
| ***支援陷阱*** (Support Traps) | Deployable ground explosives | Summons | Support Mist Generator, Support Rumble-Rumble |
| ***障碍物*** (Obstacles) | Don't take deployment slots, attract aggro or block | Summons | Cage, obstacles |
| ***其他地面*** (Other Ground) | Ground operators not preferred for priority use | Push/pull, block-1 vanguards, swordmasters | Bagpipe, Croissant |
| ***高台预备/其他高台*** (High Ground Reserve/Other High Ground) | High ground operators not preferred for priority use | AoE casters, chain casters, tacticians | Orchid, reserve operators |
::: tip
"Ground Blocking" mainly considers an operator's overall defensive capabilities (sometimes killing everything is also a form of defense), including "Ground Ranged" and "Lord" groups.
"Healers" mainly considers overall healing ability, including single-target and AoE healers. Consider attack range coverage when deciding whether to use single-target healers (healing 4 tiles) or AoE healers (healing behind).
"Ranged DPS" only considers output ability, mainly a mixed ordering of sniper and caster professions. Consider damage type, attack range and other restrictions when using specific groups like fast snipers, casters, supporters, or shield casters.
For trap-type summons, because there are many of them, don't put them in the support trap group. It works better to let MAA deploy them automatically.
:::
2. Groups requiring special handling
@@ -105,26 +145,39 @@ By default, only E1 Level 55 operators will be recruited
| Group | Operators | Features |
| :--- | :--- | :--- |
| Thorns | Thorns, Horn | Long-range melee, many maps have good spots |
| Summoners | Kal'tsit, Ling, Scene | Melee blocking, some maps need deployment prioritization, summons can be used as blocks or fodder |
| Agent | Cantabile, Ines | Has DP recovery, deals DPS and is single block |
| Skadi Alter | Skadi the Corrupting Heart | Low DP cost, special range, some maps have optimal spots |
| Reed Alter | Reed the Flame Shadow | In Sami I.S. she's commonly used as an opening caster, DPS and healing, some maps have optimal spots |
| SilverAsh | SilverAsh, Młynar | Ground operators with large range, very useful against bosses |
| Surtr | Surtr | Since Surtr always carries the 3rd skill, her positioning ability is almost zero and deployment priority is extremely low |
| Dice | Dice | In Mizuki I.S. the dice needs to be operated separately |
| 益达 (Weathered) | 维什戴尔 (Weathered) | High ground DPS, prioritizing deployment can reduce pressure |
| 棘刺 (Thorns) | 棘刺 (Thorns), 号角 (Horn) | Ground ranged output, Phantom I.S. has some maps with very suitable positions |
| 召唤类 (Summoners) | 凯尔希 (Kal'tsit), 令 (Ling), 稀音 (Scene) | Self-contained ground blocking, some maps need priority deployment, summons can be used as blockers or fodder |
| 情报官 (Agents) | 晓歌 (Cantabile), 伊内丝 (Ines) | Can recover DP, provide side output, and can single cut |
| 浊心斯卡蒂 (Skadi Alter) | 浊心斯卡蒂 (Skadi the Corrupting Heart) | Decent healing under low pressure, but special range, some maps have suitable positions |
| 焰苇 (Reed Alter) | 焰影苇草 (Reed the Flame Shadow) | Commonly used opening operator in Sami I.S., combines healing and output, some maps have optimal positions |
| 玛恩纳 (SilverAsh) | 玛恩纳 (Closure), 银灰 (SilverAsh) | Ground large-area decisive output, can be deployed against bosses |
| 史尔特尔 (Surtr) | 史尔特尔 (Surtr) | Since Surtr always carries S3 at E2, field presence ability is almost zero, deployment priority is extremely low |
| 骰子 (Dice) | 骰子 (Dice) | In Mizuki I.S. the dice needs to be operated separately |
::: info
Currently fixed to group unidentified ground crews behind the penultimate formation (other ground), and unidentified high-platform crews behind the penultimate formation (other high-platform)
:::
::: tip
Newly implemented operators need to be manually added to each theme's `recruitment.json`, and developers may not always remember to make adaptations.
If you notice this issue, you can open an issue to remind developers, or you can submit a PR directly.
:::
### Preset groups--Complete line-up testing
In a team that you expect to pass or reach the top, what are the basic core players? Are they essential? How many do you need?
::: info
The current script's recruiting logic is to only recruit 0 hope and key agents before the lineup meets the lineup readiness level, and save hope for high star key agents.
So don't set the threshold number too high, it is recommended that the number of all the operators needed (the basic core lineup) should add up to 4-8 digits.
The current script's recruiting logic is to only recruit 0 hope and key agents before the lineup meets the lineup readiness level, and save hope for high star key agents. So don't set the threshold number too high, it is recommended that the number of all the operators needed (the basic core lineup) should add up to 4-8 operators.
(The current implementation manually marks high-strength operators and three-star operators as key operators, and only recruits key operators during recruitment) (TODO: Identify 0 hope operators)
After the team meets the lineup completeness check, each time you get a recruitment ticket, it will recruit based on the operator's rating and E2 priority, so to avoid wasting hope, operators you don't want to recruit can be set with no rating or set below the same profession's three-star/reserve operator rating. (For operators you definitely want or absolutely don't want, you can specially assign extremely high or extremely low scores, see `Sami`'s `止颂` (Heidi) as an example)
When forming combat squads, the default sorting of the operator selection interface (from top to bottom, left to right) will be read and stored in order. Based on this order, keeping the relative order, the first operators that meet the lineup completeness will be moved to the beginning until the lineup completeness is all satisfied or there are no operators that meet the lineup completeness. Then reserve operators will be moved to the end, forming a new order, and selection will be based on this new order. In particular, since six-star temporary recruited operators are at the very beginning of the squad by default, it's easy to include six-star temporary recruited operators in the actual squad. (TODO: Exclude temporary recruited E1 operators that can't be used)
For beginner accounts: If 10 recruitments don't satisfy half the team's key operators, the completeness check will be abandoned, and operators will be used based on their ratings, so beginner accounts without trained three-stars may end up with just two or three six-stars and a bunch of reserve operators.
:::
```json
@@ -134,93 +187,119 @@ So don't set the threshold number too high, it is recommended that the number of
...
],
"team_complete_condition": [ // Formation completness test
{
{ // A strategy group (condition)
"groups": [ // Which group members are needed?
"C-team"
"高台输出" // ("高台输出" = "Ranged DPS") (This indicates a need for a Ranged DPS operator)
],
"threshold": 1 // How many of these operators are needed?
}, //(This indicates a need for an operator from the C-team on the high platform)
{
},
{ // Can have multiple strategy groups
"groups": [
"Thorns", //(A minimum of 2 operators are required from Thorns, GroundBlock, Ground1Block, Fodder)
"GroundBlock",
"Ground1Block",
"Fodder"
"棘刺", // ("棘刺" = "Thorns") (This indicates a minimum of 2 operators needed from Thorns, Ground Blocking, Ground Single-Cut, Fodder groups)
"地面阻挡", // ("地面阻挡" = "Ground Blocking")
"地面单切", // ("地面单切" = "Ground Single-Cut")
"炮灰" // ("炮灰" = "Fodder")
],
"threshold": 2
},
{
"groups": [
"奶" // ("奶" = "Healers") (This indicates a need for 1 healer)
],
"threshold": 1
}
...
]
]
}
```
::: caution
When an operator appears in multiple operator groups, it is only counted once.
For example: Operator `棘刺` (Thorns) may appear in both the `棘刺` (Thorns) group and the `地面阻挡` (Ground Blocking) group. Within this strategy group, operator `棘刺` (Thorns) is only counted once.
But each strategy group counts separately.
For example: Operator `焰影苇草` (Reed the Flame Shadow) may appear in both the `高台输出` (Ranged DPS) group and the `奶` (Healers) group. In this case, both strategy groups can count operator `焰影苇草` (Reed the Flame Shadow).
:::
### Adjusting parameters for operator recruitment
1. The order within a group represents the priority of the deployment detection
2. Meaning of each field and script-related logic for group members
2. Temporary recruited operators get a +600 score bonus to their original rating
3. Random direct promotion operators' scores are calculated by adding recruitment score and E2 score together
4. Meaning of each field and script-related logic for group members
```json
{
"theme": "Phantom",
"theme": "Phantom",
"priority": [
"name": "GroundBlocking", // Group name (in this case GroundBlocking)
"doc": "The standard line is 1st gear (clearing ability or field ability is better than mountain) > Mountain > 2nd gear (block>2, can return to itself) > Spot, field ability is less than spot to single cut or cannon fodder group",
// Doc field are just notes. Has no effect on the program
"name": "地面阻挡", // Group name ("地面阻挡" = "Ground Blocking")
"doc": "标准线为1档(清杂能力或者站场能力比山强)>山>2档(阻挡>2,可自回)>斑点,站场能力小于斑点放到单切或者炮灰组",
// Doc fields are just notes. Has no effect on the program
"opers": [ // What operators should be included, in ordered, represents deployment priority.
{
"name": "Gavial the Invincible", // Operator name (Gavial the Invincible, the first position in the group indicates that
//when it is necessary to deploy a ground blocking group, the first thing to check is whether it is a Gavial Alter or not.)
"name": "百炼嘉维尔", // Operator name ("百炼嘉维尔" = "Gavial the Invincible", the first position in the group indicates that
// when it is necessary to deploy a ground blocking group, the first thing to check is whether it is Gavial Alter or not.)
"skill": 3, // Which skill to use (In this case skill 3)
"skill_usage": 2, // Skill usage mode, refer to 3.3COPILOT_SCHEMA, default to 1 if empty, 2 is only put x times
// (x is set by "skill_times" field), 3 is not supported for now.
"skill_times": 2, // Skill usage, default is 1, effective when "skill_usage" field is 2.
"skill_usage": 2, // Skill usage mode, refer to Combat Operation Protocol, difference is default is 1 if empty
// (0 is don't use automatically, 1 is use when ready, 2 is use x times (x is set by "skill_times" field), 3 is not supported for now)
"skill_times": 2, // Skill usage times, default is 1, effective when "skill_usage" field is 2
"alternate_skill": 2, // Alternative skills used when there is no designated skill, usually 6-star operators who have not
// E2'd and use 3 skills after promotion
// (in this case, 2 skills are used when there is no 3 skills).
"alternate_skill_usage": 1 // Skill use mode for alternative skills (this field has not yet been implemented)
"alternate_skill_times": 1 // Number of skill uses for alternative skills (this field has not yet been implemented)
// (in this case, use skill 2 when skill 3 is not available)
"alternate_skill_usage": 1, // Skill use mode for alternative skills (this field has not yet been implemented)
"alternate_skill_times": 1, // Number of skill uses for alternative skills (this field has not yet been implemented)
"recruit_priority": 900, // Recruitment priority, bigger number, higher priority, more than 900 belongs to must be recruited
// 400 below the recruitment priority than some of the key operator essence of the second priority is still low
// Temporarily recruited operator priority automatically +800
// 400 or below recruitment priority is lower than the recruitment of ordinary three-star operators
// Temporarily recruited operators get priority automatically +600
"promote_priority": 600, // Advancement priority, bigger number, higher priority, above 900 is a guaranteed E2 if there's enough hope
// below 400 recruitment priority is lower than the recruitment of ordinary three-star operators
// Tip: When you lower your recruitment priority or don't write it in, and raise the priority of some of
// your E2, you're actually raising the priority of the E2 who temporarily recruited these operators.
// Below 400 recruitment priority is lower than the recruitment of ordinary three-star operators
// Tip: When you lower recruitment priority or don't write it, and raise the priority of some of
// your E2, you're actually raising the priority of the E2 for these operators when temporarily recruited
"is_key": true, // If true, the operator is a key element. Default to false if empty.
// If the lineup completeness test is not passed, only key and 0 hope are recruited, saving hope.
"is_start": true, // If true, the operator is a stater. Default to false if empty. If there is no start player in the team,
// only start players and 0 hopeful players will be recruited, and user-filled players will be recruited.
"is_start": true, // If true, the operator is a starter. Default to false if empty. If there is no start player in the team,
// only start players and 0 hope players will be recruited, and user-filled players will be recruited.
"auto_retreat": 0, // Auto-retreat after a few full-seconds of deployment, takes effect when greater than 0, mainly used for specialists and vanguards,
// since I.S. usually starts at 2x speed, it is recommended to set it to skill duration divided by 2
"promote_priority_when_team_full": 850,
"recruit_priority_offsets": [ // Prioritise recruitment according to current line-up
"recruit_priority_when_team_full": 850, // No need to set separately, recruitment priority when lineup completeness is met, default is recruitment priority -100
"promote_priority_when_team_full": 850, // No need to set separately, promotion priority when lineup completeness is met, default is E2 priority +300
"recruit_priority_offsets": [ // Adjust recruitment priority based on current lineup
{
"groups": [ // Which groups are required to fulfil the conditions
"Kaltsit",
"GroundBlocking",
"Thorns"
"groups": [ // Which groups are required to fulfill the conditions, counted by group
// Don't have duplicate operators in these groups or they will be counted multiple times
"凯尔希", // ("凯尔希" = "Kal'tsit")
"地面阻挡", // ("地面阻挡" = "Ground Blocking")
"棘刺" // ("棘刺" = "Thorns")
],
"is_less": false, // True is less than or equal, false is greater than or equal. Default to false if empty.
"is_less": false, // Whether the condition is greater than or less than, false is greater than or equal to, true is less than or equal to. Default to false if empty.
"threshold": 2, // Number of conditions met. Default to 0 if empty.
"offset": -300 // Adjustments to recruitment priorities after fulfilment. Default to 0 if empty.
// (This means that when there are 2 or more operators in Kaltsit, GroundBlocking and Thorns,
// the recruitment priority of Gavial the Invincible is reduced by 300)
"offset": -300 // Adjustments to recruitment priorities after fulfillment. Default to 0 if empty.
// (This means that when there are 2 or more operators from Kal'tsit, Ground Blocking, and Thorns groups,
// Gavial the Invincible's recruitment priority is reduced by 300)
}
]
},
...
],
],
"team_complete_condition": [
"team_complete_condition": [
...
]
}
```
3. Add groups and operators as you see fit
::: info
The groups in `recruit_priority_offsets` should not have duplicate operators.
When you add a new group, you can copy the operator from an existing group. Refer to the ratings already given by the devs, and modify them on that basis
After setting `auto_retreat`, you generally don't need to set `retreat_plan` for it in the battle plan.
:::
5. Add groups and operators as you see fit
When you add a new group, you can copy operators from existing groups. Refer to the ratings already given by the devs, and modify them on that basis.
## Integrated Strategy Step 2: Battle Logic
@@ -228,11 +307,13 @@ So don't set the threshold number too high, it is recommended that the number of
### Basic I.S. fighting logic of MAA
(Effective when the combat logic file for the level name does not exist)
1. Perform basic combat operations based on the tile grid of the map
- MAA performs basic combat operations based on whether the grid on the map is a blue or red box, whether it's a high platform or ground, and whether it can be deployed or not.
- MAA decides which job to use based on the name or number of the map only, and does not judge the map's **Standard**, **Emergency**, **Road Network**, **Classified Board Use**, etc.
- MAA decides which job to use based on the name or number of the map only, and does not judge the map's **Standard**, **Emergency**, **Road Network**, **Foldartal Use**, etc.
- MAA does not judge **in combat the situation of undefined squares on the map**, e.g. the position of the altar in the `Taming Hut`, the `follower effect` of monsters coming out of the left side or the right side.
@@ -256,13 +337,13 @@ So don't set the threshold number too high, it is recommended that the number of
At this point, you'll need to open the [map wiki](https://map.ark-nights.com/areas?coord_override=maa) while imagining the battle in your head
Use this link, otherwise switch the `Coordinate Display` to `MAA` in `Settings`
First switch the `Coordinate Display` to `MAA` in `Settings`
Then, based on your experience, find the coordinates and orientation of the points that need to be prioritised for defence, and write them into the `replacement_home` of the json.
```json
{
"stage_name": "蓄水池", // Level name (In chinese)
"stage_name": "蓄水池", // Level name ("蓄水池" = "Cistern")
"replacement_home": [ // Entry points (blue boxes replacement points),
// at least 1 to be complete
{
@@ -274,12 +355,16 @@ So don't set the threshold number too high, it is recommended that the number of
"direction_Doc2": "Default is none, i.e. there is no recommended direction, it is entirely up to the algorithm to decide",
"direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右",
"direction": "left" // (This indicates priority deployment of operators
//to the grid at coordinates 6,4 to the left.)
// to the grid at coordinates 6,4 to the left.)
}
],
...
```
::: tip
The blue box alternative will take effect when all steps in `deploy_plan` are completed but there are still operators to deploy in the waiting area, following the same logic as the general combat strategy
:::
2. Deployment tile blacklist
There are points of priority for defence and points of priority for not deploying operators, such as where the fireball passes through, under the boss's feet, and some locations that are not good for output.
@@ -291,7 +376,7 @@ So don't set the threshold number too high, it is recommended that the number of
```json
...
"blacklist_location_Doc": "This is an example of usage, not that the map "Cistern" needs ban.",
"blacklist_location_Doc": "This is an example of usage, not that the map 'Cistern' needs ban.",
"blacklist_location": [ // Locations where the deployment of the operators is prohibited
[
0,
@@ -313,7 +398,7 @@ So don't set the threshold number too high, it is recommended that the number of
"not_use_dice": false,
```
### Or is it an Emergency Operation? It's time to show your true while skills - customised combat strategies!
### Or is it an Emergency Operation? It's time to show your true white skills - customised combat strategies
Customisation using `"deploy_plan"` and `"retreat_plan"`
@@ -327,18 +412,18 @@ There is no need to set up too many customised plans when there is a problem. It
"deploy_plan": [ // Deployment logic: order from top-to-bottom, left-to-right
// Tries to deploy the first operator it finds, or skips it if it doesn't.
{
"groups": ["GavialAlter", "Mudrock", "GroundC", "Horn", "Vanguard"], // Looks for operators from these groups
"groups": ["百嘉", "基石", "地面C", "号角", "挡人先锋"], // Looks for operators from these groups
// ("百嘉" = "Gavial Alter", "基石" = "Cornerstone", "地面C" = "Ground C", "号角" = "Horn", "挡人先锋" = "Blocking Vanguard")
"location": [ 6, 4 ], // Deploys the first agent it finds to coordinates 6,4 and faces left.
"direction": "left", // If it doesn't find it, proceed to the next deployment operation.
},
{
"groups": [ "Summoner" ],
"groups": [ "召唤" ], // ("召唤" = "Summoner")
"location": [ 6, 3 ],
"direction": "left"
},
{
"groups": [ "单奶", "群奶" ],
"groups": [ "单奶", "群奶" ], // ("单奶" = "Single-target Healer", "群奶" = "AoE Healer")
"location": [ 6, 2 ],
"direction": "down"
}
@@ -347,8 +432,20 @@ There is no need to set up too many customised plans when there is a problem. It
::: info
MAA flattens all deployment commands and then executes the highest-priority deployment operations
Example: deploys [ "Gavial", "Cornerstone", "GroundC"] on [6,4], deploys [ "Cornerstone", "GroundC"] on [6,3], then MAA will flatten the deployment commands to [ "Gavial", "Cornerstone", "GroundC", "Cornerstone", "GroundC"]
If a "Gavial" operator on [6,4] is retreated during battle, the "Cornerstone" operator in hand, if available, will be deployed on [6,4], instead of [6,3]
Example: deploys [ "百嘉" (Gavial), "基石" (Cornerstone), "地面C" (Ground C)] on [6,4], deploys [ "基石" (Cornerstone), "地面C" (Ground C)] on [6,3], then MAA will flatten the deployment commands to [ "百嘉" (Gavial), "基石" (Cornerstone), "地面C" (Ground C), "基石" (Cornerstone), "地面C" (Ground C)]
If a "百嘉" (Gavial) operator on [6,4] is retreated during battle, the "基石" (Cornerstone) operator in hand, if available, will be deployed on [6,4], instead of [6,3]
This means that from a macro perspective, after each deployment action is completed, it will start checking for executable strategies from the beginning (the current step's position has no already placed operators, and there are operators in the deployment area belonging to this step's operator group)
:::
::: tip
Some commonly used operator group usages:
1. In many operations, the main defensive point combination is [ "地面阻挡" (Ground Blocking), "处决者" (Executor), "其他地面" (Other Ground)], which means when the main tanking operator dies, it will try to use an executor to delay the CD; when there's too much survival pressure on this point, consider using [ "重装" (Heavy Defender), "地面阻挡" (Ground Blocking), "处决者" (Executor), "炮灰" (Fodder), "其他地面" (Other Ground)]; for positions behind defenders, prioritize [ "地面远程" (Ground Ranged), "地面阻挡" (Ground Blocking), "处决者" (Executor), "其他地面" (Other Ground)]; to purely attract aggro or sacrifice, use [ "炮灰" (Fodder), "障碍物" (Obstacles), "其他地面" (Other Ground)]
2. High ground position combinations commonly use [ "高台输出" (Ranged DPS), "其他高台" (Other High Ground)], if you want any high ground to be placed you can use [ "高台输出" (Ranged DPS), "狙击" (Sniper), "辅助" (Supporter), "盾法" (Shield Caster), "其他高台" (Other High Ground)]
3. Some ground positions are suitable for both SilverAsh and ground trap operators [ "玛恩纳" (SilverAsh), "地刺" (Ground Traps)]
:::
2. Deployment of operators at a point in time
@@ -359,13 +456,14 @@ There is no need to set up too many customised plans when there is a problem. It
```json
"deploy_plan": [
{
"groups": [ "StrangeVirtue", "Assasin", "Vanguard", "OtherFloors" ],
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
// ("异德" = "Strange Virtue", "刺客" = "Assassin", "挡人先锋" = "Blocking Vanguard", "其他地面" = "Other Ground")
"location": [ 5, 3 ],
"direction": "left",
"condition": [ 0, 3 ] // This operation is only performed when the number of kills is 0 - 3
},
{
"groups": [ "StrangeVirtue", "Assassin", "Vanguard", "OtherFloors" ],
"groups": [ "异德", "刺客", "挡人先锋", "其他地面" ],
"location": [ 5, 3 ],
"direction": "left",
"condition": [ 6, 10 ]
@@ -377,6 +475,8 @@ There is no need to set up too many customised plans when there is a problem. It
3. Retrieval of the operators at some point
::: tip
Sometimes the fodder is too strong to hold the field or you need to deploy to move the lineup. What should I do? Retreat!
Deployment and retreat commands for the same position should have non-overlapping condition numbers, otherwise it will instantly retreat after deploying
:::
```json
@@ -438,6 +538,12 @@ There is no need to set up too many customised plans when there is a problem. It
],
```
::: info
When MAA cannot find a customized combat strategy for the current level, it will automatically execute the general combat strategy.
When MAA fails to recognize the current level name, it will not execute any combat logic.
:::
### Have a special understanding of an operator's playing style? -- Refined operation of specific operators
Please group this operator separately
@@ -448,7 +554,7 @@ Or you could just forget about it, and write a combat logic for this agent alone
It's also possible to use just one operator! Use MAA to clear the level (due to other imperfections in logic, the possibility is very low)
Reference examples: 1. Thorns in Phantom I.S. 2. Texas the Omertosa in Mizuki I.S. 3. Reed the Flame Shadow in Sami I.S.
Reference examples: 1. Thorns in Phantom I.S. 2. Strange Virtue in Mizuki I.S. 3. Reed the Flame Shadow/Weathered in Sami I.S. 4. Weathered in Sarkaz I.S.
## Integrated Strategy Step 3: Encounters Node logic
@@ -464,6 +570,8 @@ If the Encounter is not recognized, it will click the choice at the bottom
Generally, it only requires slight adjustment or no adjustment at all (the devs have already taken care of this)
A common reason for getting stuck is when there's an option type icon but the option is not selectable (TODO)
### Optimise the priority of the Encounter options
Please refer to [prts.wiki](https://prts.wiki/w/%E9%9B%86%E6%88%90%E6%88%98%E7%95%A5) to see the effects of each Encouter's options, note that the options are not necessarily fixed.
@@ -475,25 +583,25 @@ The Encounter options can be modified to guide MAA towards special endings
"theme": "Sami", // I.S. Theme
"stage": [ // Encounter event
{
"name": "低地市集", // Name of the Encounter
"name": "低地市集", // Name of the Encounter ("低地市集" = "Lowland Market")
"option_num": 3, // There are several options in total (In this case: 3)
"choose": 3, // Which option should you choose first (the third one is preferred here)
// If you can't choose it, choose the escape option (basically the last one)
"choice_require": [ // Requirements for selecting options
"choices": [ // Requirements for selecting options
// (it does not affect program operation for the time being
// only marking applicable situations for easy modification)
{
"name": "Selection of herbs", // Option name
"name": "选择碎草药", // Option name ("选择碎草药" = "Selection of herbs")
"ChaosLevel": { // Immunity / Light level
"value": "3", // Required number
"type": ">" // Is it greater than or less than
//(here it means that the Immunity / Light level is greater than 3
// (here it means that the Immunity / Light level is greater than 3
// only when the option of "Selection of herbs" is activated)
}
},
{
"name": "Choosing good-looking fabrics",
"name": "选择好看的织物", // ("选择好看的织物" = "Choosing good-looking fabrics")
"ChaosLevel": {
"value": "3",
"type": ">"
@@ -512,62 +620,179 @@ The Encounter options can be modified to guide MAA towards special endings
{
"theme": "Phantom", // I.S. Theme
"priority": [ // Order is the priority
// The higher the order, the higher the priority to buy.,
// The higher the order, the higher the priority to buy,
// However, the priority judgment is before the screening of chars and roles.
//high-priority products may be screened out and nothing is purchased.
// high-priority products may be screened out and nothing is purchased.
{
"name": "Golden Chalice", // Collectible name (In this case Golden Caliche)
"name": "金酒之杯", // Collectible name ("金酒之杯" = "Golden Chalice")
"no_longer_buy": true, // true means don't spend money on the item after getting it
// false or empty means continue to spend money on the item
"ignore_no_longer_buy": true, // True means that "no_longer_buy" is ignored when the store has the collectible
// that is, it will be bought
// False or omitted, means that the store has it.
"effect": "每有5源石锭, 所有我方单位的攻击速度+7", // Collectible effect (does not affect the operation, useful for convenient sorting)
"effect": "每有5源石锭, 所有我方单位的攻击速度+7", // Collectible effect ("For every 5 Originium Ingots, all friendly units get +7 ASPD")
// (does not affect the operation, useful for convenient sorting)
"no": 167 // Collectible number (can be found in the wiki, does not affect the operation)
},
...
{
"name": "Hand of Diffusion",
"name": "扩散之手", // ("扩散之手" = "Hand of Diffusion")
"chars": [ // Buy this item when you have these operators in the team
"Passenger" // (This means that if you have Passenger in your team,
"异客" // ("异客" = "Passenger") (This means that if you have Passenger in your team,
// you will try to buy the Hand of Diffusion when you encounter it)
],
"effect": "[Diffusion Artist], [Chain Artist], and [Blast Artist] regain 2 SP for each unit they deal damage to.",
"effect": "【扩散术师】、【链术师】和【轰击术师】每对一个单位造成伤害就回复2点技力值", // ("[Diffusion Artist], [Chain Artist], and [Blast Artist] regain 2 SP for each unit they deal damage to.")
"no": 136
},
...
{
"name": "Folding the halberd - Breaking the cauldron",
"name": "折戟-破釜沉舟", // ("折戟-破釜沉舟" = "Folding the halberd - Breaking the cauldron")
"roles": [ // Buy this collectible when you have these classes in your team
"WARRIOR" // (This means that if you have a Guard operator in your team
// you will try to buy a Halberd-Breaker when you encounter it)
],
"effect": "All [Guard] Operators members have -40% Defence, but +40% Attack Power and +30% Attack Speed.",
"effect": "所有【近卫】干员的防御力-40%,但攻击力+40%,攻击速度+30", // ("All [Guard] Operators members have -40% Defence, but +40% Attack Power and +30% Attack Speed.")
"no": 16
},
...
{
"name": "Miss.Christine Touch coupon",
"name": "Miss.Christine摸摸券", // ("Miss.Christine摸摸券" = "Miss.Christine Touch coupon")
"promotion": 2, // Purchased when there are 2 operators in the team to be promoted
"effect": "Immediate promote two operators (Does not consume Hope)",
"effect": "立即进阶两个干员(不消耗希望)", // ("Immediate promote two operators (Does not consume Hope)")
"no": 15
},
...
{
"name": "警戒篱木", // ("警戒篱木" = "Alert Fence")
"effect": "坍缩值-2目标生命上限+2", // ("Collapse value -2, target max life +2")
"No": 198,
"decrease_collapse": true // true means getting this collectible will reduce collapse value. Will not be purchased when mode is 5
},
...
"others": // MAA won't buy these collectibles, like ending collectibles and the crane
{
"name": "无人起重机" // ("无人起重机" = "Unmanned Crane")
},
```
## Desired Logic(todo)
## Integrated Strategy Special Mechanisms
### Sami Integrated Strategy - Foldartals
`resource/roguelike/Sami/foldartal.json` describes the strategy for Sami's Foldartals
```json
{
"theme": "Sami", // I.S. Theme (Sami)
"groups": [ // Groups for usage situations and methods
{
"usage": "SkipBattle", // Usage (Skip battle, used for money farming and hot water mode combat nodes, use plates to skip battles to save time)
"doc": "跳过战斗,刷钱和烧开水模式", // ("Skip battle, money farming and hot water mode")
"pairs": [ // Plate pairs (when encountering corresponding nodes, will check if there are matching plate pairs as defined below,
// if yes, will use all available ones, if no, will enter the node directly)
{ // (Here "伤痕" (Scar) can only link with "空无" (Void))
"up": [ // Upper plate
"伤痕" // ("伤痕" = "Scar")
],
"down": [ // Lower plate
"空无" // ("空无" = "Void")
]
},
{ // (Here will search in order "黜人"+"惊讶","黜人"+"疑惑","黜人"+...,"猎手"+"惊讶","猎手"+"疑惑","猎手"+... , ...)
"up": [
"黜人", // ("黜人" = "Ejection")
"猎手", // ("猎手" = "Hunter")
...
],
"down": [
"惊讶", // ("惊讶" = "Surprise")
"疑惑", // ("疑惑" = "Doubt")
...
]
}
]
},
{
"usage": "Boss", // (Here indicates plate pairs to be used when encountering boss nodes)
"doc": "有的用全用了", // ("Use all available ones")
...
}
],
"foldartal": [ // Foldartal effects notes (these are just notes for easy reference of plate effects, do not affect program operation)
{
"name": "布局", // Foldartal type (upper or lower plate)
"foldartal": [
{
"name": "黜人", // Foldartal name ("黜人" = "Ejection")
"effect": "选择所有右侧邻近的战斗节点" // Foldartal effect ("Select all combat nodes adjacent to the right")
},
```
### Sami Integrated Strategy - Collapsal Paradigms
When `check_collapsal_paradigms` is `true`, MAA will check for Collapsal Paradigms in two different ways:
- Click on the upper middle of the screen at the level selection interface to expand the collapse status bar, hereinafter referred to as Panel Check;
- Observe whether there is a Collapsal Paradigm notification on the right side of the screen, hereinafter referred to as Banner Check.
There are various ways to get collapse values, we have considered the following situations:
1. After combat, the collapse value increases due to imperfect combat, perform Banner Check.
2. After combat, the collapse value changes due to obtaining collectibles, perform Banner Check.
3. In encounter nodes, etc., the collapse value changes due to selection options, perform Banner Check.
4. In the trader node, the collapse value changes due to purchasing collectibles, perform Banner Check.
5. The collapse value decreases due to using Foldartals, perform Banner Check.
6. The collapse value increases due to entering a new floor, perform Panel Check.
7. If during Banner Check it is found that the Collapsal Paradigm has receded, since we don't know if two layers can recede at once (even if they can, the probability is extremely low), an additional Panel Check will be triggered the next time we return to the level selection interface.
8. When `double_check_collapsal_paradigms` is `true`, an additional Panel Check will be triggered each time we return to the level selection interface to verify whether there were any missed or extra recorded Collapsal Paradigms.
Here is an example task configuration for farming hidden Collapsal Paradigms:
```json
{
"theme": "Sami",
"mode": 5,
"investment_enabled": false,
"squad": "远程战术分队", // ("远程战术分队" = "Ranged Tactics Squad")
"roles": "稳扎稳打", // ("稳扎稳打" = "Steady Approach")
"core_char": "维什戴尔", // ("维什戴尔" = "Weathered")
"expected_collapsal_paradigms": ["目空一些", "睁眼瞎", "图像损坏", "一抹黑"]
// ("目空一些" = "Blank Somewhat", "睁眼瞎" = "Blind Eye", "图像损坏" = "Image Distortion", "一抹黑" = "Pitch Black")
}
```
When `mode` is `5`:
- Priority is given to using combat strategies with `stage_name` as `关卡名_collapse`, for example `resource/roguelike/Sami/autopilot/事不过四_collapse.json`;
- Uses the encounter event selection strategy described in `resource/roguelike/Sami/encounter/collapse.json`,
- Will not purchase collectibles with `decrease_collapse` set to `true`.
When `mode` is not `5` but `check_collapsal_paradigms` is `true`, it will still detect Collapsal Paradigms and stop the task when encountering Collapsal Paradigms in the `expected_collapsal_paradigms` list, but will not restart when encountering other Collapsal Paradigms.
For farming hidden Collapsal Paradigms, N10 difficulty is recommended, with the following teams suggested:
- Weathered + Spot + Steward;
- Reed the Flame Shadow + Orchid + Popukar;
- Toddifons + Spot + Steward.
## Desired Logic (todo)
### Automatic Formation Logic
1. Different map formation completeness tests and skill priorities can be set for different map
1. Different map formation completeness tests and skill priorities can be set for different maps
2. You can avoid some difficult battles based on the available lineups
### Optimising the pathfinding algorithm
### Optimising the pathfinding algorithm (already initially implemented)
For example, you can achieve more battles in the first three levels and fewer battles in the later ones, so that the development will be better
For example, more battles in the first three levels and fewer battles in the later ones, so that the development will be better
For example, identify connections between nodes to determine a more optimal path
### Skill Retention
@@ -576,5 +801,3 @@ The operator deployed in a certain frame, wait x seconds for the skill to turn o
### Skills Shutdown
Useful for operators who have ammo skills
<!-- markdownlint-disable-file MD026 -->

View File

@@ -43,9 +43,13 @@ Appends a task.
// Corresponding task parameters
{
"enable": bool, // Whether to enable this task, optional, true by default
"client_type": string, // Client version, optional, empty by default
"client_type": string, // Client version, required
// Options: "Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"start_game_enabled": bool // Whether to launch client automatically, optional, false by default
"start_game_enabled": bool, // Whether to launch client automatically, optional, false by default
"account_name": string // Switch account, optional, don't switch by default
// Only supports switching to already logged-in accounts, using login name for identification
// Official server: 123****4567, can input 123****4567, 4567, 123, or 3****4567
// Bilibili server: Zhang San, can input Zhang San, Zhang, or San
}
```
@@ -68,13 +72,13 @@ Appends a task.
// Corresponding task parameters
{
"enable": bool, // Whether to enable this task, optional, true by default
"stage": string, // Stage name, optional, by default crrent / last stage. Editing in run-time is not supported.
"stage": string, // Stage name, optional, by default current/last stage. Editing in run-time is not supported.
// Supports all mainline stages, such as "1-7", "S3-2", etc.
// At the end of the level, enter Normal/Hard to switch between Normal and Tough difficulty
// Annihilation. The input should be `Annihilation`.
// Certain side story stages. The input should be complete with stage number.
"medicine": int, // Maximum number Sanity Potion used, optional, by default 0
"expiring_medicine": int, // Maximum number of expired Sanity Potion within 48 hours, optional, by default 0
// For current SS event last three stages, must input complete stage code.
"medicine": int, // Maximum number of Sanity Potions used, optional, by default 0
"expiring_medicine": int, // Maximum number of expired Sanity Potions within 48 hours, optional, by default 0
"stone": int, // Maximum number of Originite Prime used, optional, by default 0
"times": int, // Fight times, optional, by int32.max
"series": int, // Number of series, optional, -1~6
@@ -87,18 +91,18 @@ Appends a task.
},
/* Items are combined with OR operators, i.e. the task stops when any condition meets. */
"report_to_penguin": bool, // Whether to upload data to Pengiun Stats, optional, by default false
"penguin_id": string, // Penguin Stats ID, optional, by default empty. Available only when `report_to_penguin` is `true`.
"report_to_penguin": bool, // Whether to upload data to Penguin Statistics, optional, by default false
"penguin_id": string, // Penguin Statistics ID, optional, by default empty. Available only when `report_to_penguin` is `true`.
"server": string, // Server, optional, by default "CN", will affect the drop recognition and upload
// Options"CN" | "US" | "JP" | "KR"
"client_type": string, // Client versino, optional, empty by default. Used to reconnect after the game crashed. Empty means to disable this feature
"client_type": string, // Client version, optional, empty by default. Used to reconnect after the game crashed. Empty means to disable this feature
// Options: "Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"DrGrandet": bool, // Save sanity by using Originites, Optional, false by default. effective only when Originites may be used
"DrGrandet": bool, // Save sanity by using Originites, optional, false by default. effective only when Originites may be used
// Wait in the using Originites confirmation screen until the 1 point of sanity has been restored and then immediately use the Originite.
}
```
Supports some of the special stages,Please refer to [autoLocalization example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/en-us.xaml#L260).
Supports some of the special stages, please refer to [autoLocalization example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/en-us.xaml#L260).
- `Recruit`
Recruitment
@@ -120,10 +124,10 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
string, // When Tag is level-3, as many Tags here as possible (if any) will be selected.
... // It's a forced selection, i.e. it ignores all "unselect 3★ Tags" settings.
],
"extra_tags_mode": int, // Select more tags, optional
// 0 - default
// 1 - click 3 tags anyway, even if they are in conflict
// 2 - select more combinations if possible, even if their tags are in conflict
"extra_tags_mode": int, // Select more tags, optional, default is 0
// 0 - default behavior
// 1 - select 3 tags even if they may conflict
// 2 - select more high star tag combinations if possible, even if they might conflict
"times": int, // The times of recruitment, optional, by default 0. Can be set to 0 for calculation only.
"set_time": bool, // Whether to set time to 9 hours, available only when `times` is 0, optional, by default true
"expedite": bool, // Whether to use expedited plans, optional, by default false
@@ -135,11 +139,12 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
"4": int,
...
},
"report_to_penguin": bool, // Whether to report to Penguin Stats, optional, by default false.
"penguin_id": string, // Penguin Stats user id, optional, by default empty. Valid only if report_to_penguin is true.
"report_to_penguin": bool, // Whether to report to Penguin Statistics, optional, by default false.
"penguin_id": string, // Penguin Statistics user id, optional, by default empty. Valid only if report_to_penguin is true.
"report_to_yituliu": bool, // Whether to report to YITULIU, optional, by default false.
"yituliu_id": string, // YITULIU user id, optional, by default empty. Valid only if report_to_yituliu is true.
"server": string, // Server, optional, by default "CN", will affect upload
// Options: "CN" | "US" | "JP" | "KR"
}
```
@@ -148,30 +153,36 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
```json5
{
"enable": bool, // Whether to enable this task, optional, by default true
"enable": bool, // Whether to enable this task, optional, by default true
"mode": int, // Shift mode, optional. Editing in run-time is not supported.
// 0 - By Default, auto shift
// 10000 - Custom Mode, please refer 3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA
// 0 - Default: Default shift mode, single facility optimal solution
// 10000 - Custom: Custom shift mode, reads user configuration, see protocol/base-scheduling-schema.md
// 20000 - Rotation: One-key rotation mode, skips control center, power station, dormitory and office, other facilities do not change shifts but retain basic operations (such as using drones, reception room logic)
"facility": [ // Facilities for shifting, required. Editing in run-time is not supported.
"facility": [ // Facilities for shifting (ordered), required. Editing in run-time is not supported.
string, // Facility name: "Mfg" | "Trade" | "Power" | "Control" | "Reception" | "Office" | "Dorm"
...
],
"drones": string, // Usage of drones, optional, by default "_NotUse"
// "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
// This field is ignored when mode = 10000
// "_NotUse" | "Money" | "SyntheticJade" | "CombatRecord" | "PureGold" | "OriginStone" | "Chip"
"threshold": float, // Morale threshold with range [0, 1.0], optional, by default 0.3
"replenish": bool, // Whether to replenish Originium Shard, optional, by default false
"dorm_notstationed_enabled": bool, // Whether to enbale Not Stationed in Dorm, by default false
"dorm_trust_enabled": bool, // Whether to fill operators in dorm by trust, by default false
// When mode = 10000, this field is only effective for "autofill"
// This field is ignored when mode = 20000
"replenish": bool, // Whether to replenish Originium Shard in trading post, optional, by default false
/* The following is only valid when mode == 10000 */
"filename": string, // Custom config json file path
"plan_index": int, // custom config plan index
"dorm_notstationed_enabled": bool, // Whether to enable "Not Stationed in Dorm" option, optional, by default false
"dorm_trust_enabled": bool, // Whether to fill dormitory with operators not at max trust, optional, by default false
"reception_message_board": bool, // Whether to collect credits from reception room message board, optional, by default true
"reception_clue_exchange": bool, // Whether to perform clue exchange, optional, by default true
/* The following parameters are only effective when mode = 10000, otherwise they are ignored */
"filename": string, // Custom config path, required. Editing in run-time is not supported.
"plan_index": int, // Plan index number in the configuration, required. Editing in run-time is not supported.
}
```
- `Mall`
Collecting Credits and auto-purchasing
Collecting Credits and auto-purchasing.
Will buy items in order following `buy_first` list, buy other items from left to right ignoring items in `blacklist`, and buy other items from left to right ignoring the `blacklist` while credit overflows.
```json5
@@ -187,19 +198,25 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
string, // Item name, e.g. "加急许可" (Expedited Plan), "家具零件" (Furniture Part), etc.
...
],
"force_shopping_if_credit_full": bool // Whether to ignore the Blacklist if credit overflows, by default true
"only_buy_discount": bool // Whether to purchase only discounted items, applicable only on the second round of purchases, by default false.
"reserve_max_credit": boll // Whether to stop purchasing when credit points fall below 300, applicable only on the second round of purchases, by default false.
"force_shopping_if_credit_full": bool, // Whether to ignore the Blacklist if credit overflows, by default true
"only_buy_discount": bool, // Whether to purchase only discounted items, applicable only on the second round of purchases, by default false
"reserve_max_credit": bool // Whether to stop purchasing when credit points fall below 300, applicable only on the second round of purchases, by default false
}
```
- `Award`
Collecting daily awards.
Collecting various rewards
```json5
// Corresponding task parameters
{
"enable": bool // Whether to enable this task, optional, by default true
"enable": bool, // Whether to enable this task, optional, by default true
"award": bool, // Collect daily/weekly task rewards, default true
"mail": bool, // Collect all mail rewards, default false
"recruit": bool, // Collect daily free pulls from limited banners, default false
"orundum": bool, // Collect Originium from lucky drop wall, default false
"mining": bool, // Collect Originium from limited mining licenses, default false
"specialaccess": bool // Collect monthly card rewards from 5th anniversary, default false
}
```
@@ -211,10 +228,11 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
{
"enable": bool, // Whether to enable this task, optional, default is true
"theme": string, // Theme, optional, default is "Phantom"
// Phantom - Phantom & Crimson Solitaire
// Mizuki - Mizuki & Caerula Arbor
// Sami - Expeditioner's Jǫklumarkar
// Sarkaz - 萨卡兹的无终奇语
// Phantom - Phantom & Crimson Solitaire
// Mizuki - Mizuki & Caerula Arbor
// Sami - Expeditioner's Jǫklumarkar
// Sarkaz - 萨卡兹的无终奇语 (Sarkaz Endless Tale)
// JieGarden - 界园 (Boundary Garden)
"mode": int, // Mode, optional, default is 0
// 0 - Score farming/reward points, aiming to consistently reach higher levels
// 1 - Source stone farming, exit after investing in the first layer
@@ -224,8 +242,10 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
// the opening reward. If not a specific item, restart at difficulty 0; in the Phantom theme, retry only in the current difficulty
// 5 - Collapsal Paradigm farming; only for the Sami theme; accelerates collapsal buildup via missed enemies;
// if the first collapsal paradigm encountered is in the `expected_collapsal_paradigms` list, stops the task; otherwise, restarts
"squad": string, // Starting squad name, optional, default is "Command Squad";
"roles": string, // Starting role group, optional, default is "Complementary Strength";
// 6 - Monthly squad rewards farming, same as mode 0 except for specific mode adaptations
// 7 - Deep Dive rewards farming, same as mode 0 except for specific mode adaptations
"squad": string, // Starting squad name, optional, default is "指挥分队" (Command Squad);
"roles": string, // Starting role group, optional, default is "取长补短" (Complementary Strength);
"core_char": string, // Starting operator name, optional; supports only single operator **in Chinese**, regardless of server;
// leave empty or set to "" to auto-select based on level
"use_support": bool, // Whether the starting operator is a support operator, optional, default is false
@@ -238,7 +258,7 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
"investment_enabled": bool, // Whether to invest source stones, optional, default is true
"investments_count": int, // Number of source stone investments, optional, default is INT_MAX; stops automatically upon reaching limit
"stop_when_investment_full": bool, // Whether to stop automatically when investment limit is reached, optional, default is false
"investment_with_more_score": bool, // Whether to try shopping after investment, optional, default if false; only applicable to mode 1
"investment_with_more_score": bool, // Whether to try shopping after investment, optional, default is false; only applicable to mode 1
"start_with_elite_two": bool, // Whether to start with an Elite 2 operator reset, optional, default is false; only applicable to mode 4
"only_start_with_elite_two": bool, // Whether to reset only for Elite 2 operator while ignoring other starting conditions, optional, default is false;
// only effective when mode is 4 and `start_with_elite_two` is true
@@ -246,23 +266,46 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
"first_floor_foldartal": string, // Desired Foldartal to acquire in the first floor foresight phase, optional; only applicable to the Sami theme, any mode;
// task stops once obtained successfully
"start_foldartal_list": [ // Desired Foldartals for the starting reward phase during opening reset, optional, default is []; effective only for Sami theme and mode 4;
string, // Reset is successful only when all Foldartals in the list are present in the opening rewards;
... // Note: This parameter must be used with the "Life-Sustaining Squad" as other squads do not obtain Foldartals in the opening reward phase;
string, // Reset is successful only when all Foldartals in the list are present in the opening rewards;
... // Note: This parameter must be used with the "生活至上分队" (Life-Sustaining Squad) as other squads do not obtain Foldartals in the opening reward phase;
],
"start_with_two_ideas": bool, // Whether to start with 2 ideas, optional, default is falseeffective only for Sarkaz theme and mode 4
"collectible_mode_start_list": { // Desired starting rewards (optional), all false by default; only valid in mode 4
"hot_water": bool, // Hot Water reward, typically used to trigger boiling mechanism (universal)
"shield": bool, // Shield reward, equivalent to extra HP (universal)
"ingot": bool, // Originium Ingot reward (universal)
"hope": bool, // Hope reward (universal, note: not available in JieGarden theme)
"random": bool, // Random reward option: consumes all Ingots for a random collectible (universal)
"key": bool, // Key reward, only available in Mizuki theme
"dice": bool, // Dice reward, only available in Mizuki theme
"ideas": bool, // 2 Ideas reward, only available in Sarkaz theme
},
"use_foldartal": bool, // Whether to use Foldartals, default is false in mode 5 and true in other modes; only applicable to the Sami theme
"check_collapsal_paradigms": bool, // Whether to check obtained Collapsal Paradigms, default is true in mode 5 and false in other modes
"double_check_collapsal_paradigms": bool, // Whether to perform additional checks to prevent missed Collapsal Paradigms, default is true in mode 5 and false in other modes;
// only effective when theme is Sami and `check_collapsal_paradigms` is true
"expected_collapsal_paradigms": [ // Desired Collapsal Paradigms to trigger, default is ["Blank Somewhat", "Blind Eye", "Image Distortion", "Pitch Black"];
"expected_collapsal_paradigms": [ // Desired Collapsal Paradigms to trigger, default is ["目空一些" (Blank Somewhat), "睁眼瞎" (Blind Eye), "图像损坏" (Image Distortion), "一抹黑" (Pitch Black)];
string, // only effective when theme is Sami and mode is 5
...
]
],
"monthly_squad_auto_iterate": bool, // Whether to enable automatic monthly squad rotation
"monthly_squad_check_comms": bool, // Whether to also check monthly squad communications as rotation criteria
"deep_exploration_auto_iterate": bool, // Whether to enable automatic deep exploration rotation
"collectible_mode_shopping": bool, // Whether to enable shopping in hot water mode, default false
"collectible_mode_squad": string, // Squad to use in hot water mode, default synced with squad, when squad is empty and collectible_mode_squad not specified, uses Command Squad
"collectible_mode_start_list": { // Desired rewards for hot water mode, all false by default, key options:
"hot_water": bool, // [hot_water: Hot water, shield: Shield, ingot: Originium Ingot, hope: Hope, random: Random reward, key: Key, dice: Dice, ideas: Ideas]
...
},
"start_with_seed": bool, // Use seed for money farming, effective when true
// Only possible to be true in Sarkaz theme, Investment mode, with "点刺成锭分队" (Point-Stab Ingot Squad) or "后勤分队" (Logistics Squad)
// Uses fixed seed
}
```
For specific information about the Collapsal Paradigm farming feature, please refer to [Integrated Strategy Schema](./integrated-strategy-schema.md#sami-integrated-strategy-collapsal-paradigms)
- `Copilot`
Copilot auto-combat feature
Auto combat feature
```json5
{
@@ -272,20 +315,20 @@ Supports some of the special stages,Please refer to [autoLocalization example](h
}
```
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
For more details about auto-combat JSON, please refer to [Combat Operation Protocol](./copilot-schema.md)
- `SSSCopilot`
Copilot auto-combat feature for STATIONARY SECURITY SERVICE
Auto combat feature for Stationary Security Service
```json5
{
"enable": bool, // Whether to enable this task, optional, by default true
"filename": string, // Filename and path of the task JSON, supporting absolute/relative paths. Editing in run-time is not supported.
"loop_times": int
"loop_times": int // Number of times to loop execution
}
```
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
For more details about Stationary Security Service JSON, please refer to [SSS Schema](./sss-schema.md)
- `Depot`
Depot recognition
@@ -308,12 +351,12 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](./cop
```
- `Reclamation`
ReclamationAlgorithm
Reclamation Algorithm
```json5
{
"enable": bool,
"theme": string, // Theme, optional, 1 by default
"theme": string, // Theme, optional, Fire by default
// Fire - *Fire Within the Sand*
// Tales - *Tales Within the Sand*
"mode": int, // Mode, optional, 0 by default
@@ -324,7 +367,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](./cop
string, // Automatically crafted items, optional, glow stick by default
...
]
// Suggested fill in the substring
// Suggested to fill in the substring
"increment_mode": int, // Click type, optional. 0 by default
// 0 - Rapid Click
// 1 - Long Press
@@ -357,7 +400,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](./cop
// "stage" to set stage name, eg: "details": { "stage": "xxxx" }
// "start" to start mission, without details
// "action": single battle action, details is single action in Copilot,
// eg: "details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 3.3-战斗流程协议.md
// eg: "details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" }, see protocol/copilot-schema.md for details
"details": {
...
}
@@ -370,7 +413,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](./cop
```json5
{
"enable": bool,
"filename": string,
"filename": string, // Video file path, supporting absolute/relative paths. Editing in run-time is not supported.
}
```
@@ -427,7 +470,7 @@ Set process-level parameters
##### List of Key and value
None
None currently
### `AsstSetInstanceOption`
@@ -466,9 +509,9 @@ Set instance-level parameters
// "1" - on, "0" - off
TouchMode = 2, // Touch mode, minitouch by default
// minitouch | maatouch | adb
DeploymentWithPause = 3, // Deployment with Pause (Works for IS, Copilot and 保全派驻)
DeploymentWithPause = 3, // Deployment with Pause (Works for IS, Copilot and Stationary Security Service)
// "1" | "0"
AdbLiteEnabled = 4, // Enable AdbLite or not, "0" | "1"
KillAdbOnExit = 5, // Release Adb on exit, "0" | "1"
KillAdbOnExit = 5, // Release Adb on exit, "0" | "1"
};
```

View File

@@ -5,145 +5,156 @@ icon: mdi:remote-desktop
# Remote Control Schema
To achieve remote control of MAA, you need to provide a service that must be an HTTP(S) service and provide the following two anonymously accessible endpoints. These endpoints must be HTTP(S) web endpoints.
To implement remote control of MAA, you need to provide a service that must be an HTTP(S) service and offer the following two anonymously accessible endpoints. These endpoints must be HTTP(S) web endpoints.
::: warning
If the endpoint is an HTTP protocol, MAA will issue a security warning with each connection. **Deploying plaintext transmission services on the public network is highly discouraged and dangerous, for testing purposes only.**
If the endpoint uses HTTP protocol, MAA will issue a security warning with each connection. **Deploying plaintext transmission services on public internet is highly discouraged and dangerous, for testing purposes only.**
:::
::: tip
Please note that JSON files do not support comments. The comments in the text are for demonstration purposes only and should NOT be copied directly.
Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly.
:::
## Task Retrieval Endpoint
MAA will continuously poll this endpoint at 1-second intervals, attempting to retrieve tasks it needs to perform and execute them in the order they are retrieved.
MAA continuously polls this endpoint at 1-second intervals, attempting to retrieve tasks to execute and executing them in the order received.
The endpoint path is arbitrary but must be an HTTP(S) endpoint. For example: `https://your-control-host.net/maa/getTask`
The controlled MAA needs to fill this endpoint into the `Task Retrieval Endpoint` text box in the MAA configuration.
The controlled MAA must enter this endpoint in the `Task Retrieval Endpoint` text box in MAA's configuration.
This endpoint must be able to accept a `Content-Type=application/json` POST request and must be able to accept the following JSON as the request content:
This endpoint must accept a POST request with `Content-Type=application/json` and must accept the following JSON as request content:
```json
{
"tasks": // A list of Tasks that need to be allowed to be executed by the MAA, the types supported currently are shown in the example, and the connection is considered invalid if the tasks do not exist.
[
// Sequential tasks: the following tasks are queued for execution in the order in which they are issued.
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", //A unique uuid for the task, type : string, which will be used when reporting on the task.
"type": "CaptureImage", //A screenshot task that takes a screenshot of the current emulator and puts it in the payload of the reporting task as a Base64 string. If you need to issue this type of task, be sure to pay attention to the maximum request size that your endpoint can accept, as the screenshot size will lager than 10MB and exceed the default size limit of a typical gateway.
},
{
"id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", //A unique uuid for the task, type : string, which will be used when reporting on the task.
"type": "LinkStart", //LinkStart😄
},
{
"id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", // A unique uuid, used in the same way as above.
"type": "LinkStart-Recruiting", // Immediately executes the corresponding sub-function of "LinkStart" individually according to the current configuration, ignoring the tick box of this function on the GUI. The optional values for this type of Type are detailed below.
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Same as "id" above
"type": "Toolbox-GachaOnce", //The Gacha function in the toolbox, with optional values for this class Type:Toolbox-GachaOnce, Toolbox-GachaTenTimes
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above.
"type": "Settings-ConnectionAddress", //The task of modifying a configuration item is equivalent to executing the ConfigurationHelper.SetValue("ConnectionAddress", params); For security reasons, not every configuration can be modified, and those that can are detailed below.
"params": "value" //The value you want to config
},
// Immediate Execution Tasks: these following tasks can be executed in a Sequential Execution Task run and the MAA guarantees that any of the following tasks will return results as soon as possible, and are typically used for control of the remote control function itself.
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above.
"type": "CaptureImageNow", //The Immediate Screenshot task is basically the same as the Screenshot task above, the only difference is that this task will be run immediately without waiting for other tasks.
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above.
"type": "StopTask", //The "Stop current task" task will attempt to end the currently running task. If there are other tasks in the task list it will continue with the next one. This task does not wait to confirm that the current task has stopped before returning, so use the "HeartBeat" task to confirm that the stop command has taken effect.
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above.
"type": "HeartBeat", // "Heartbeat" task, the task will immediately return the current "sequential task" queue in the task is executing as the Payload, if there is currently no task execution, return the empty string.
},
],
... // If you have other uses for this endpoint, you can add other return values of your own, but MAA will only read tasks.
"user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // User identifier entered in MAA settings
"device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec" // Device identifier automatically generated by MAA
... // If your endpoint has other uses, you can add optional parameters, but MAA only transmits user and device
}
```
This endpoint must return a JSON formatted Response and must at least meet the following format:
This endpoint must return a JSON-formatted response that meets at least the following format:
```json
{
"tasks": // List of tasks for MAA to execute, currently supported types shown in example, if tasks doesn't exist connection is considered invalid
[
// Sequential execution tasks: these tasks are queued for execution in the order issued
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "CaptureImage", // Screenshot task, captures current emulator screen and includes as Base64 string in task report payload. If issuing this task type, note your endpoint's maximum request size limit, as screenshots can be tens of MB, exceeding typical gateway defaults
},
{
"id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", // Unique task ID, string type, used when reporting task status
"type": "LinkStart", // Start one-click farming
},
{
"id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", // Unique task ID, string type, used when reporting task status
"type": "LinkStart-Recruiting", // Immediately execute specific one-click farming sub-function based on current configuration, ignoring main interface checkbox. Optional values detailed below
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "Toolbox-GachaOnce", // Toolbox gacha task, optional values: Toolbox-GachaOnce, Toolbox-GachaTenTimes
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "Settings-ConnectionAddress", // Configuration modification task, equivalent to ConfigurationHelper.SetValue("ConnectionAddress", params); For security, not all settings can be modified, see below for allowed settings
"params": "value" // Value to modify
},
// Immediate execution tasks: these tasks can execute during sequential tasks and MAA guarantees any of these will return results quickly, typically used for controlling the remote control function itself
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "CaptureImageNow", // Immediate screenshot task, similar to screenshot task above but executes immediately without waiting for other tasks
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "StopTask", // "Stop current task" task, attempts to end currently running task. If task list contains other tasks, continues with next task. This task doesn't wait to confirm current task has stopped before returning, use heartbeat task to confirm stop command effectiveness
},
{
"id": "b353c469-b902-4357-bd8f-d133199eea31", // Unique task ID, string type, used when reporting task status
"type": "HeartBeat", // Heartbeat task, returns immediately with currently executing sequential task's ID as payload, or empty string if no task executing
}
],
... // If your endpoint has other uses, you can add optional return values, but MAA only reads tasks
}
```
These tasks execute in sequence, meaning if you first send a recruitment task followed by a screenshot task, the screenshot will execute after the recruitment task completes.
The endpoint should be reentrant and repeatedly return tasks to execute, as MAA automatically tracks task IDs and won't re-execute tasks with the same ID.
::: note
- The `LinkStart-[TaskName]` series of tasks have optinal `type` : `LinkStart-Base``LinkStart-WakeUp``LinkStart-Combat``LinkStart-Recruiting``LinkStart-Mall``LinkStart-Mission``LinkStart-AutoRoguelike``LinkStart-ReclamationAlgorithm`
- The `Settings-[SettingsName]` series of tasks have optinal `type` : `Settings-ConnectionAddress`, `Settings-Stage1`
- The Settings series of tasks are still meant to be executed sequentially, not immediately upon receipt, but after the previous task.
- Multiple immediately executable tasks are also executed in the order in which they are issued, except that they are all executed so quickly that, in general, it is not necessary to be concerned about their order.
:::
- LinkStart-[TaskName] task types include LinkStart-Base, LinkStart-WakeUp, LinkStart-Combat, LinkStart-Recruiting, LinkStart-Mall, LinkStart-Mission, LinkStart-AutoRoguelike, LinkStart-Reclamation
- Settings-[SettingsName] task types include Settings-ConnectionAddress, Settings-Stage1
- Settings series tasks still execute sequentially rather than immediately, queuing behind previous tasks
- Multiple immediate execution tasks also execute in issued order, though since these tasks execute quickly, their order generally doesn't matter
:::
## Report Status Endpoint
## Task Reporting Endpoint
When MAA completes a task, it will report the result to this endpoint.
When MAA completes a task, it reports the execution result to the remote server through this endpoint.
The endpoint path is arbitrary but must be an HTTP(S) endpoint. For example: `https://your-control-host.net/maa/reportStatus`
The controlled MAA needs to fill this endpoint into the `Report Status Endpoint` text box in the MAA configuration.
The controlled MAA must enter this endpoint in the `Task Reporting Endpoint` text box in MAA's configuration.
This endpoint must be able to accept a `Content-Type=application/json` POST request and must be able to accept the following JSON as the request content:
This endpoint must accept a POST request with `Content-Type=application/json` and must accept the following JSON as request content:
```json
{
"user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // The "User Identifier" you filled in the MAA settings.
"device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec", // The "Device Identifier" automatically generated in the MAA.
"task":"15be4725-5bd3-443d-8ae3-0a5ae789254c", // The Id of the task to be reported on, corresponding to the Id when 'getTask'.
"status":"SUCCESS", // The result of the task execution, SUCCESS or FAILED. generally, regardless of the success of the task execution will only return SUCCESS, only in special circumstances will return FAILED, will return FAILED situation, will be explicitly described in the above task introduction.
"payload":"", //The data to carry when reporting, string type. Depends on the task type, for example, when reporting on a screenshot task, the Base64 string of the screenshot will be carried here.
... // If you have other uses for this endpoint, you can add other return values of your own, but MAA will only post upper value.
"user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // User identifier entered in MAA settings
"device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec", // Device identifier automatically generated by MAA
"task":"15be4725-5bd3-443d-8ae3-0a5ae789254c", // Task ID being reported, corresponding to ID from task retrieval
"status":"SUCCESS", // Task execution result, SUCCESS or FAILED. Generally returns SUCCESS regardless of task execution success, FAILED only in special cases noted in task descriptions
"payload":"", // Data included in report, string type. Depends on task type, e.g., screenshot task includes Base64 string of screenshot
... // If your endpoint has other uses, you can add optional parameters, but MAA only transmits user and device
}
```
The content returned by this endpoint is arbitrary, but if you do not return `200 OK`, a notification will pop up on the MAA side displaying `Upload failed`.
This endpoint's response content is arbitrary, but if not returning 200 OK, a notification will appear in MAA displaying "Upload failed"
## Example Workflow : Controlling MAA with QQBot
## Example Workflow - Controlling MAA with QQ Bot
A developer wants to control MAA with their QQBot (QQ is an instant messaging software,like WhatsApp or Telegram), so they develop a backend exposed on the public network, providing two endpoints:
Developer A wants to control MAA with their QQ Bot, so they developed a backend exposed on public internet providing two endpoints:
```text
https://myqqbot.com/maa/getTask
https://myqqbot.com/maa/reportStatus
```
To make it more convenient for users, their `getTask` interface always returns `200 OK` and an empty tasks list regardless of the parameters received.
Each time they receive a request, they check the database for duplicate devices, and if none, they record the device and user in the database.
In this workflow, this interface also serves as a user registration function.
For user convenience, their getTask interface returns 200 OK and an empty tasks list regardless of received parameters.
Each time they receive a request, they check the database for duplicate devices, and if none found, record the device and user in the database.
In this workflow, this interface also serves as user registration.
They provide a command on the QQBot for users to submit their deviceId.
They provide a command on their QQ Bot for users to submit deviceId.
In the QQBot's usage instructions, they tell users to fill in their QQ number in the `User Identifier` field of MAA and send the `Device Identifier` to the Bot via QQ chat.
In the QQ Bot's usage instructions, they tell users to enter their QQ number in MAA's `User Identifier` field and send their `Device Identifier` to the Bot via QQ chat.
Upon receiving the identifier, the QQBot checks the database for corresponding data based on the user's QQ number in the message. If none is found, it tells the user to configure MAA first.
Upon receiving the identifier, the QQ Bot checks the database for corresponding data based on the message's QQ number, instructing the user to configure MAA if not found.
Since MAA continuously sends requests once configured, if the user has configured MAA, there should be matching records in the database when they submit via QQ.
Since MAA continuously sends requests once configured, if the user has properly configured MAA, matching records should exist in the database when they submit via QQ.
At this point, the Bot marks the record in the database as verified, so future requests from getTask with this device and user will return the real task list.
The Bot then marks the database record as verified, so future getTask requests with this device and user combination will return actual task lists.
When the user submits a command via QQBot, the Bot writes a task into the database. Shortly after, getTask will return this task. Additionally, the QQBot thoughtfully adds a screenshot task each time the user submits a command.
When users submit commands via QQ Bot, the Bot writes a task to the database, which getTask will return shortly. Additionally, the Bot thoughtfully adds a screenshot task after each user command.
MAA will call reportStatus to report the result after completing the task. The Bot will send a message notifying the user and display the screenshot on QQ.
After executing tasks, MAA calls reportStatus to report results, and the Bot sends QQ messages notifying users and displaying screenshots.
## Example Workflow : Controlling MAA with a Website
## Example Workflow - Controlling MAA with Website
Developer B wrote a website to manage MAA in bulk through a website, so they have their own user management system. However, their backend is publicly accessible, providing two anonymously accessible endpoints:
Developer B created a website for batch MAA management with their own user management system. Their backend is publicly accessible with two anonymously accessible endpoints:
```text
https://mywebsite.com/maa/getTask
https://mywebsite.com/maa/reportStatus
```
On the website, there is an interface to connect MAA instances, will generate a random string called `User Key`, along with a text box for entering the `Device Identifier`.
On the website, a MAA instance connection interface displays what Developer B calls a `User Key` (random string) and has a text box for entering device ID.
The website requires users to fill in their `User Key` in the `User Identifier` field of MAA GUI and then enter the `Device Identifier` on the website.
The website instructs users to enter their user key in MAA's `User Identifier` field and their `Device Identifier` on the website.
Only after successfully creating a connection to MAA on the website, `getTask` will return `200 OK`. Otherwise, it returns `401 Unauthorized`.
Only after successfully creating a MAA connection on the website will getTask return 200 OK; otherwise it returns 401 Unauthorized.
If the user fills it incorrectly on MAA and presses the test connection button, they will get a test failure prompt.
If users enter incorrect information in MAA and press the test connection button, they'll receive a connection test failure notification.
Users can issue tasks on the website, queue tasks, view screenshots, and more. The implementation of these functions is similar to the QQBot example above, achieved through a combination of `getTask` and `reportStatus`.
Users can issue tasks on the website, queue tasks, view screenshots, etc., with implementation similar to the QQ Bot example, using getTask and

View File

@@ -3,76 +3,97 @@ order: 7
icon: game-icons:prisoner
---
# Security Presence Schema
This document is machine-translated. If you have the ability, please refer to the Chinese version. We would greatly appreciate any errors or suggestions for improvement.
# Stationary Security Service Schema
::: tip
As the JSON format does not support comments, please remove them when using the examples below.
Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly into your JSON files.
:::
```json
{
"type": "SSS", // Protocol type, SSS means a stationed preservation, required, unchangeable
"stage_name": "Duos Lore building site", // The name of the preservation location, required
"minimum_required": "v4.9.0", // The minimum required version of MAA, required
"doc": { // Description, optional
"title": "Low-skill high-success-rate operation",
"type": "SSS", // Protocol type, SSS indicates Stationary Security Service, required, cannot be modified
"stage_name": "多索雷斯在建地块", // Map name, required ("多索雷斯在建地块" = "Dossoles Under Construction")
"minimum_required": "v4.9.0", // Minimum required MAA version, required
"doc": {
// Description, optional
"title": "低练度高成功率作业", // ("低练度高成功率作业" = "Low-investment high-success rate operation")
"title_color": "dark",
"details": "Low skill requirements balabala... It is suggested to write your name (author's name), reference to video strategy links, etc. here.",
"details": "对练度要求很低balabala……", // Recommend adding your name (author), reference video links, etc. here ("对练度要求很低balabala……" = "Very low level requirements etc...")
"details_color": "dark"
},
"buff": "Adaptive Supply Component", // The choice of starting navigation element, optional
"equipment": [ // The choice of starting equipment, counted horizontally, optional
// Not implemented in the current version, only displayed on the interface
"A", "A", "A", "A",
"B", "B", "B", "B"
"buff": "自适应补给元件", // Starting navigation element selection, optional ("自适应补给元件" = "Adaptive Supply Component")
"equipment": [
// Starting equipment selection, read horizontally, optional
// Not implemented in current version, only displayed in interface
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B"
],
"strategy": "Optimized strategy", // Or "Free strategy", optional
// Not implemented in the current version, only displayed on the interface
"opers": [ // Specified operator, optional
"strategy": "优选策略", // Or "自由策略" ("Free strategy"), optional
// Not implemented in current version, only displayed in interface
"opers": [
// Specified operators, optional
{
"name": "Thorns",
"name": "棘刺", // ("棘刺" = "Thorns")
"skill": 3,
"skill_usage": 1
}
],
"tool_men": { // The remaining number of personnel of each profession needed, sorted by cost, optional
// Not implemented in the current version, only displayed on the interface
"tool_men": {
// Remaining required operators by profession, picked by cost, optional
// Not implemented in current version, only displayed in interface
"Pioneer": 13,
"Guards": 2,
"近卫": 2, // Both Chinese and English supported ("近卫" = "Guard")
"Medic": 2
},
"drops": [ // Priority of recruiting operators and obtaining equipment at the beginning and during the battle
"Silence",
"Exusiai",
"Vanguard",
"drops": [
// Recruitment priority for operators and equipment at battle start and during battle
"空弦", // ("空弦" = "Archetto")
"能天使", // Supports operator names, class names ("能天使" = "Exusiai")
"先锋", // Class names in Chinese or English ("先锋" = "Vanguard")
"Support",
"No need to increase the adjustment operator", // Not recruiting anyone
"Reorganization Navigation Module", // Supports the name of the equipment, written together
"Counter Navigation Module",
"Combat Preparation Actuator", // Optional equipment in the middle of the level, also put here
"Modified Device Signal",
"无需增调干员", // Don't recruit anyone ("无需增调干员" = "No recruitment needed")
"重整导能组件", // Supports equipment names ("重整导能组件" = "Reorganization Navigation Component")
"反制导能组件", // ("反制导能组件" = "Counter Navigation Component")
"战备激活阀", // In-stage optional equipment, also listed here ("战备激活阀" = "Combat Preparation Actuator")
"改派发讯器" // ("改派发讯器" = "Modified Device Signal")
],
"blacklist": [ // Blacklist, optional. These people will not be selected in drops.
// In subsequent versions, the formation tool people will not choose these people either.
"Midnight",
"Mayer"
"blacklist": [
// Blacklist, optional. These won't be selected in drops.
// In future versions with squad formation, these won't be selected as tool operators either
"夜半", // ("夜半" = "Nightingale")
"梅尔" // ("梅尔" = "Mayer")
],
"stages": [
{
"stage_name": "Swarm", // Name of a single-level stage, required
// Supports name, stageId, levelId, recommended stageId or levelId
// Please do not use codes (e.g. LT-1), that conflict with other preservation stages
"strategies": [ // Required
// It will deploy the tool_men in each object according to the order.
// If the current hand does not have any tool_men, it will deploy the next object.
"stage_name": "蜂拥而上", // Single stage name, required ("蜂拥而上" = "Swarming Advance")
// Supports name, stageId, levelId; recommend stageId or levelId
// Don't use code (e.g., LT-1) as it conflicts with other SSS stages
"strategies": [
// Required
// Each check processes from top to bottom in sequence, skipping completed strategies
// If current strategy's tool operators are fully deployed:
// If no core, consider strategy complete
// If core exists and can be deployed, deploy core and consider strategy complete
// If core is converting DP, wait and skip subsequent strategies
// If current strategy's tool operators aren't fully deployed:
// If deployment area has no required tool operators, check next strategy
// If deployment area has required tool operators:
// If none can be deployed immediately, wait
// If some can be deployed immediately, prioritize lower cost ones
// For strategies at same location:
// If no core, allows checking subsequent strategies at same location when needed tool operators unavailable
// If core exists, ignores subsequent strategies at same location until current one completes
// Multiple core operators can be written for same location; non-last core operators act as passthrough after strategy completes
{
"core": "Thorns",
"core": "棘刺", // ("棘刺" = "Thorns")
"tool_men": {
"Pioneer": 1, // Both Chinese and English names are acceptable.
"Pioneer": 1, // Both Chinese and English supported
"Warrior": 1,
"Medic": 1
},
@@ -83,7 +104,7 @@ As the JSON format does not support comments, please remove them when using the
"direction": "Left"
},
{
"core": "Mudrock",
"core": "泥岩", // ("泥岩" = "Mudrock")
"tool_men": {
"Pioneer": 1,
"Warrior": 1,
@@ -96,7 +117,7 @@ As the JSON format does not support comments, please remove them when using the
"direction": "Left"
},
{
// If "core" is not provided, it can be used to deploy tool_men that assist with passing.
// No core field, can be used to deploy auxiliary passthrough operators
"tool_men": {
"Support": 100
},
@@ -107,42 +128,43 @@ As the JSON format does not support comments, please remove them when using the
"direction": "Left"
}
],
"draw_as_possible": true, // "Deploy Operator" button. Whether to use it when available. Optional, default is true.
"actions": [ // Optional
// It reuses the logic of copying homework.
// If the condition of the action is met, the action is executed. Otherwise, the strategies above are executed.
"draw_as_possible": true, // "Deploy Operator" button, whether to use when ready, optional, default true
"actions": [
// Optional
// Reuses copywriting logic, refer to protocol/copilot-schema.md
// Executes action when conditions met, otherwise executes strategies logic above
{
"type": "Deploy Operator" // New type. Click the "Deploy Operator" button. It is invalid when "draw_as_possible" is true.
"type": "调配干员" // New type, "Deploy Operator" button, clicks once, ineffective when "draw_as_possible" is true ("调配干员" = "Deploy Operator")
},
{
"type": "CheckIfStartOver", // New type. Check if the operator is available. If not, exit and restart.
"name": "Thorns"
"type": "CheckIfStartOver", // New type, checks if operator is present, exits and restarts if not
"name": "棘刺" // ("棘刺" = "Thorns")
},
{
"name": "Firewatch",
"name": "桃金娘", // ("桃金娘" = "Myrtle")
"location": [
4,
5
],
"direction": "Left"
"direction": "左" // ("左" = "Left")
},
{
"kills": 10,
"type": "Retreat",
"name": "Firewatch"
"type": "撤退", // ("撤退" = "Retreat")
"name": "桃金娘" // ("桃金娘" = "Myrtle")
}
],
"retry_times": 3 // The number of times to retry when the battle fails. If it exceeds this limit, it will give up on the entire stage.
"retry_times": 3 // Battle failure retry count, abandons entire run if exceeded
},
{
"stage_name": "Grani and the Knights' Treasure"
"stage_name": "见者有份" // ("见者有份" = "Share the Spoils")
// ...
}
// Write as many stages as you want to play. For example, if only 4 is written, it will automatically restart after completing stage 4.
// Write as many stages as you want to play, e.g., if only up to stage 4 is written, automatically restarts after completing stage 4
]
}
```
## Example
## Example Files
<https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/>

View File

@@ -7,154 +7,189 @@ icon: material-symbols:task
Usage of `resource/tasks` and description of each field
## Overview
::: tip
Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly into your JSON files.
:::
## Complete Field Reference
```json
{
"TaskName" : { // Task name
"TaskName": { // Task name, using @ may indicate a special task, default values will differ, see Special Task Types below
"baseTask": "xxx", // use xxx task as a template to generate tasks, see Base Task in the special task type below for details
"baseTask": "xxx", // Use xxx task as template to generate tasks, see Base Task in Special Task Types for details
"algorithm": "MatchTemplate", // Optional, indicating the type of recognition algorithm
// defaults to MatchTemplate when not filled in
// - JustReturn: Execute the action directly without recognition
// - MatchTemplate: match the image
// - OcrDetect: text recognition
// - Hash: Hash calculation
"algorithm": "MatchTemplate", // Optional, indicates the recognition algorithm type
// Default is MatchTemplate when not specified
// - JustReturn: No recognition, directly execute action
// - MatchTemplate: Match image
// - OcrDetect: Text recognition
// - FeatureMatch: Feature matching
"action": "ClickSelf", // Optional, indicates the action after recognition
// defaults to DoNothing if not filled in
// - ClickSelf: Click on the recognized location (a random point within the recognized target range)
// - ClickRand: Click on a random position in the whole screen
// - ClickRect: Click on the specified area, that corresponds to the specificRect field, not recommended to use this option
// - DoNothing: Do nothing
// - Stop: Stop the current task
// - Swipe: slide, corresponds to the specificRect and rectMove fields
"action": "ClickSelf", // Optional, indicates action after recognition
// Default is DoNothing when not specified
// - ClickSelf: Click on recognized position (random point within target area)
// - ClickRect: Click on specified area, corresponds to specificRect field, not recommended
// - DoNothing: Do nothing
// - Stop: Stop current task
// - Swipe: Swipe, corresponds to specificRect and rectMove fields
// - Input: Input text, requires algorithm to be JustReturn, corresponds to inputText field
"sub": [ "SubTaskName1", "SubTaskName2" ],
// Optional, subtasks. Will execute each subtask in turn after the current task is executed
// Optional, sub-tasks and then sub-tasks. But be careful not to write a dead loop
"sub": ["SubTaskName1", "SubTaskName2"],
// Optional, subtasks, not recommended. Will execute each subtask after completing current task
// Can be nested, with subtasks having their own subtasks. Be careful not to create infinite loops
"subErrorIgnored": true, // Optional, if or not to ignore subtask errors.
// default false if not filled
// If false, if a subtask has an error, it will not continue to execute subsequent tasks (equivalent to this task having an error)
// When true, it does not affect whether a subtask has an error or not
"subErrorIgnored": true, // Optional, whether to ignore subtask errors
// Default false when not specified
// When false, if a subtask errors, subsequent tasks won't execute (equivalent to current task erroring)
// When true, subtask errors don't affect execution
"next": [ "OtherTaskName1", "OtherTaskName2" ],
// Optional, indicating the next task to be executed after the current task and the subtask are executed
// will be identified from front to back, and the first matching one will be executed
// default stop after the current task is executed
// For the same task, the second time will not be recognized after the first recognition.
// "next": [ "A", "B", "A", "A" ] -> "next": [ "A", "B" ]
// Do not allow JustReturn type tasks to be located in a non-last item
"next": ["OtherTaskName1", "OtherTaskName2"],
// Optional, indicates tasks to execute after completing current task and subtasks
// Will check from first to last and execute first matching task
// Default is to stop after completing current task when not specified
// For identical tasks, second recognition won't occur after first:
// "next": [ "A", "B", "A", "A" ] -> "next": [ "A", "B" ]
// JustReturn type tasks must not be in non-last positions
"maxTimes": 10, // Optional, indicates the maximum number of times the task can be executed
// default infinite if not filled
// When the maximum number of times is reached, if the exceededNext field exists, the task will be executed as exceededNext; otherwise, the task will be stopped.
"maxTimes": 10, // Optional, maximum execution count for this task
// Default is infinity when not specified
// After reaching max count, will execute exceededNext if present, otherwise stop
"exceededNext": [ "OtherTaskName1", "OtherTaskName2" ],
// Optional, indicates the task to be executed when the maximum number of executions is reached
// If not filled in, it will stop when the maximum number of executions is reached; if filled in, it will be executed here, not in next
"onErrorNext": [ "OtherTaskName1", "OtherTaskName2" ],
// Optional, indicating the subsequent tasks to be performed in case of execution errors
"exceededNext": ["OtherTaskName1", "OtherTaskName2"],
// Optional, tasks to execute after reaching maximum execution count
// When not specified, stops after max count; when specified, executes these instead of next
"preDelay": 1000, // Optional, indicates how long the action will be executed after it is recognized, in milliseconds; default 0 if not filled in
"postDelay": 1000, // Optional, indicates how long the action is delayed after execution before it is recognized next, in milliseconds; default 0 if not filled in
"onErrorNext": ["OtherTaskName1", "OtherTaskName2"],
// Optional, tasks to execute when an error occurs
"roi": [ 0, 0, 1280, 720 ], // Optional, indicating the range of recognition, in the format [ x, y, width, height ]
// Auto-scaling to 1280x720; default when not filled [ 0, 0, 1280, 720 ]
// Fill in as much as possible, reducing the recognition range can reduce performance consumption and speed up recognition
"preDelay": 1000, // Optional, delay in milliseconds after recognition before executing action; default 0
"postDelay": 1000, // Optional, delay in milliseconds after executing action before recognizing next; default 0
"cache": false, // Optional, indicates whether the task uses caching or not, default is false;
// After the first recognition, only the first recognized position will be recognized forever, enable to save performance significantly
// but only for tasks where the location of the target to be recognized will not change at all, set to false if the location of the target to be recognized will change
"roi": [0, 0, 1280, 720], // Optional, recognition area in format [x, y, width, height]
// Auto-scales to 1280 * 720 resolution; default [0, 0, 1280, 720] when not specified
// Try to specify this to reduce recognition area, improve performance and recognition speed
"rectMove": [ 0, 0, 0, 0 ], // Optional, target movement after recognition, not recommended Auto-scaling with 1280 * 720 as base
// For example, if A is recognized, but the actual location to be clicked is somewhere in the 10 pixel 5 * 2 area below A.
//Then you can fill in [ 0, 10, 5, 2 ], and try to recognize the position to be clicked directly if you can, this option is not recommended
// Additional, valid and mandatory when action is Swipe, indicates the end of the slide.
"cache": true, // Optional, whether to use cache for this task, default true
// After first recognition, will always check at same position, greatly improves performance
// Only suitable for targets whose position never changes, set false if target position may change
"reduceOtherTimes": [ "OtherTaskName1", "OtherTaskName2" ],
// Optional; executes to reduce the execution count of other tasks.
// For example, if you take a sanity pill, it means that the last click on the blue start action button did not take effect, so the blue start action is -1
"rectMove": [0, 0, 0, 0], // Optional, target movement after recognition, not recommended. Auto-scales to 1280 * 720
// For example, if A is recognized but actual click target is 10 pixels below in 5 * 2 area,
// can use [0, 10, 5, 2], but if possible try to directly recognize target position instead
// Additionally, when action is Swipe, indicates endpoint (required)
"specificRect": [ 100, 100, 50, 50 ],
// Valid and mandatory when action is ClickRect, indicates the specified click position (a random point in the range).
// Valid and mandatory when action is Swipe, it means the starting point of swipe.
// Auto-scaling with 1280 * 720 as base
// When the algorithm is "OcrDetect", specificRect[0] and specificRect[1] represent the grayscale upper and lower threshold values.
"reduceOtherTimes": ["OtherTaskName1", "OtherTaskName2"],
// Optional, reduces execution count of other tasks after execution
// For example, if you used a sanity potion, previous blue start button click didn't work, so reduce by 1
"specialParams": [ int, ... ], // Parameters needed for some special recognizers
// extra, optional when action is Swipe, [0] for duration, [1] for whether to enable extra sliding
"specificRect": [100, 100, 50, 50],
// Required when action is ClickRect, indicates specified click area (random point within)
// Required when action is Swipe, indicates starting point
// Auto-scales to 1280 * 720 resolution
// When algorithm is "OcrDetect", specificRect[0] and specificRect[1] represent grayscale threshold limits
/* The following fields are only valid if the algorithm is MatchTemplate */
"specialParams": [int, ...], // Parameters for special recognizers
// Optional when action is Swipe, [0] for duration, [1] for extra swipe toggle
"template": "xxx.png", // Optional, the name of the image file to be matched
// default "TaskName.png"
"highResolutionSwipeFix": false, // Optional, whether to enable high-resolution swipe fix
// Currently only needed for stage navigation which doesn't use unity swipe method
// Default is false
/* Fields below only valid when algorithm is MatchTemplate */
"templThreshold": 0.8, // Optional, a threshold value for image template matching score, above which the image is considered recognized.
// default 0.8, you can check the actual score according to the log
"template": "xxx.png", // Optional, image file to match, can be string or string list
// Default "TaskName.png"
// Template files can be in template folder or subfolders, recursive search when loading
"maskRange": [ 1, 255 ], // Optional, the grayscale mask range.
// For example, the part of the image that does not need to be recognized will be painted black (grayscale value of 0)
// Then set "maskRange" to [ 1, 255 ], to instantly ignore the blacked-out parts when matching
"templThreshold": 0.8, // Optional, threshold score for image template matching, can be number or number list
// Default 0.8, check actual score in logs
"colorScales": [ // Effective and required when method is HSVCount or RGBCount, color mask range.
[ // list<array<array<int, 3>, 2> | array<int, 2>>
"maskRange": [1, 255], // Optional, grayscale mask range for matching. array<int, 2>
// For example, paint parts of image that shouldn't be recognized black (grayscale 0)
// Then set [1, 255] to ignore black parts during matching
"colorScales": [ // Required when method is HSVCount or RGBCount, color mask ranges
[ // list<array<array<int, 3>, 2>> / list<array<int, 2>>
[23, 150, 40], // Structure is [[lower1, upper1], [lower2, upper2], ...]
[25, 230, 150] // Inner layer is int if grayscale,
], //   is array<int, 3> if three-channel color, method determines whether it is RGB or HSV;
... // Middle layer array<*, 2> is the color (or grayscale) lower and upper limits:
], // Outer layer represents different color ranges, the region to be identified is the union of their corresponding masks on the template image.
[25, 230, 150] // Inner layer is int for grayscale,
], // or array<int, 3> for three-channel color (RGB or HSV based on method)
... // Middle layer array<*, 2> is color (or grayscale) lower and upper limits
], // Outer layer represents different color ranges, recognition area is their union on template image
"colorWithClose": true, // Optional, effective when method is HSVCount or RGBCount, default is true
// Whether to first apply morphological closing to the mask range when counting colors.
// Morphological closing can fill small black spots, generally improving color counting matching results, but if the image contains text, it is recommended to set it to false
"colorWithClose": true, // Optional when method is HSVCount or RGBCount, default true
// Whether to use morphological closing on mask range for color counting
// Closing fills small black dots, generally improves color matching but set false for text
"method": "Ccoeff", // Optional, template matching algorithm, can be a list
// Default is Ccoeff if not specified
// - Ccoeff: Template matching algorithm insensitive to color, corresponds to cv::TM_CCOEFF_NORMED
// - RGBCount: Template matching algorithm sensitive to color,
// First binarize the region to be matched and the template image based on colorScales,
// Calculate the similarity in RGB color space using F1-score as the indicator,
// Then dot the result with the Ccoeff result
// - HSVCount: Similar to RGBCount, but the color space is changed to HSV
"method": "Ccoeff", // Optional, template matching algorithm, can be list
// Default is Ccoeff when not specified
// - Ccoeff: Color-insensitive template matching, corresponds to cv::TM_CCOEFF_NORMED
// - RGBCount: Color-sensitive template matching,
// Binary thresholds target area and template using colorScales,
// Calculates similarity using F1-score in RGB color space,
// Then dot products result with Ccoeff result
// - HSVCount: Similar to RGBCount, but uses HSV color space
/* The following fields are only valid if the algorithm is OcrDetect */
/* Fields below only valid when algorithm is OcrDetect */
"text": [ "接管作战", "代理指挥" ], // Required, the text content to be recognized, as long as any match is considered to be recognized
"text": [ "接管作战", "代理指挥" ], // Required, text to recognize, match is successful if any one matches ("接管作战" = "Take over operation", "代理指挥" = "Proxy command")
"ocrReplace": [ // Optional, a replacement for commonly misidentified text (regular support)
[ "千员", "干员" ],
[ ".+击干员", "狙击干员" ]
"ocrReplace": [ // Optional, replacements for commonly misrecognized text (supports regex)
[ "千员", "干员" ], // ("千员" = "thousand staff", "干员" = "operator")
[ ".+击干员", "狙击干员" ] // (".+击干员" = "any-hit operator", "狙击干员" = "sniper operator")
],
"fullMatch": false, // optional, whether the text recognition needs to match all words (not multiple words), default is false
// false, as long as it is a substring: for example, text: [ "start" ], the actual recognition to "start action", is also considered successful.
//If true, "start" must be recognized, not one more word
"fullMatch": false, // Optional, whether text recognition requires exact match (no extra characters), default false
// When false, substring is sufficient: e.g., text: [ "开始" ], recognized "开始行动" is success
// When true, must recognize exactly "开始", not one character more
"isAscii": false, // optional, whether the text content to be recognized is ASCII characters
// default false if not filled
"isAscii": false, // Optional, whether text content is ASCII characters
// Default false
"withoutDet": false // Optional, whether to not use the detection model
// default false if not filled
"withoutDet": false, // Optional, whether to skip detection model
// Default false
/* The following fields are only valid when the algorithm is Hash */
// The algorithm is not mature, and is only used in some special cases, so it is not recommended for now
// Todo
/* Fields below only valid when algorithm is OcrDetect and withoutDet is true */
"useRaw": true, // Optional, whether to use original image for matching
// Default true, false for grayscale matching
"binThreshold": [140, 255], // Optional, threshold for grayscale binarization (default [140, 255])
// Pixels with grayscale out of range are considered background, excluded from text area
// Final text foreground includes pixels in [lower, upper] range
/* Fields below only valid when algorithm is JustReturn and action is Input */
"inputText": "A string text.", // Required, text to input as string
/* Fields below only valid when algorithm is FeatureMatch */
"template": "xxx.png", // Optional, image file to match, can be string or string list
// Default "TaskName.png"
"count": 4, // Required feature point count (threshold), default = 4
"ratio": 0.6, // KNN matching algorithm distance ratio, [0 - 1.0], higher means looser matching, easier line connection. Default 0.6
"detector": "SIFT", // Feature point detector type, options: SIFT, ORB, BRISK, KAZE, AKAZE, SURF; default = SIFT
// SIFT: High computational complexity, has scale and rotation invariance. Best effect.
// ORB: Very fast computation, has rotation invariance but no scale invariance.
// BRISK: Very fast computation, has scale and rotation invariance.
// KAZE: Suitable for 2D and 3D images, has scale and rotation invariance.
// AKAZE: Fast computation, has scale and rotation invariance.
}
}
```
## Special Task Type
## Special Task Types
### Template Task(`@` Type Task)
### Template Task (`@` Type Task)
Template task and base task are collectively called **Template task**.
Template task and base task are collectively called **template tasks**.
Allows a task "A" to be used as a template, and then "B@A" to represent the task generated by "A".
Allows using task "A" as template, with "B@A" representing a task generated from "A".
- If task "B@A" is not explicitly defined in `tasks.json`, then add `B@` prefix to the `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` fields (or `B` if the task name starts with `#`) and the rest of the parameters are the same as for task "A". That is, if task "A" has the following parameters.
- If task "B@A" is not explicitly defined in `tasks.json`, then add `B@` prefix to `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` fields (or `B` if task name begins with `#`), all other parameters match task "A". For example, if task "A" has:
```json
"A": {
@@ -164,7 +199,7 @@ Allows a task "A" to be used as a template, and then "B@A" to represent the task
}
```
is equivalent to defining both
This would be equivalent to defining:
```json
"B@A": {
@@ -174,59 +209,59 @@ Allows a task "A" to be used as a template, and then "B@A" to represent the task
}
```
- If task "B@A" is defined in `tasks.json`, then
1. if the `algorithm` field of `B@A` is different from that of `A`, the derived class parameters are not inherited (only the parameters defined by `TaskInfo` are inherited)
2. for image matching task, `template` is `B@A.png` if not explicitly defined (instead of inheriting the `template` name of "A"), otherwise any derived class parameters are inherited directly from "A" task if not explicitly defined
3. for the parameters defined in the `TaskInfo` base class (any type of task parameters, such as `algorithm`, `roi`, `next`, etc.), if not explicitly defined in "B@A", all parameters are inherited directly from the "A" task parameters, except for the five fields mentioned above, such as `sub`, which will be prefixed with "B@" when inherited
- If task "B@A" is defined in `tasks.json`, then:
1. If "B@A" has different `algorithm` from "A", derived class parameters are not inherited (only `TaskInfo` parameters inherited)
2. For image matching tasks, if `template` not explicitly defined, uses `B@A.png` (not inheriting "A" template name); otherwise any derived parameters not explicitly defined inherit directly from "A"
3. For `TaskInfo` base class parameters (common to all task types like `algorithm`, `roi`, `next`, etc.), if not explicitly defined in "B@A", inherit directly from "A" except for the five fields mentioned above which get "B@" prefixed when inherited
### Base Task
Base task and template task are collectively called **template task**.
Base task and template task are collectively called **template tasks**.
A task with the field `baseTask` is a base task.
Tasks with `baseTask` field are base tasks.
Base task takes precedence over template task. This means that `"B@A": { "baseTask": "C", ... }` has no relevance to task A.
Base task logic takes precedence over template task. This means `"B@A": { "baseTask": "C", ... }` has no relation to task A.
Any parameter that is not explicitly defined uses the value of the `baseTask` parameter for the corresponding task without a prefix, except for `template` which remains `"taskName.png"` if it is not explicitly defined.
Any parameter not explicitly defined uses the corresponding parameter from `baseTask` without prefix, except `template` which remains `"TaskName.png"` when not explicitly defined.
#### Multi-File Task
#### Multi-File Tasks
If a task defined in a later loaded task file (e.g. `tasks.json` for foreign services; hereinafter called File 2) also has a task of the same name defined in a earlier loaded task file (e.g. `tasks.json` for official services; hereinafter called File 1), then.
If a task defined in a later-loaded file (e.g., foreign server `tasks.json`, called File 2) is also defined in an earlier-loaded file (e.g., CN server `tasks.json`, called File 1), then:
- if the task in File 2 does not have a `baseTask` field, then it inherits the fields of the task with the same name in File 1 directly.
- If the task in File 2 has a `baseTask` field, then it does not inherit the fields of the task with the same name in File 1, but overwrites them.
- If File 2's task has no `baseTask` field, it directly inherits fields from File 1's same-name task.
- If File 2's task has a `baseTask` field, it doesn't inherit fields from File 1's same-name task, but overwrites them instead.
### Virtual Task
### Virtual Task (`#` Task)
Virtual task is also called sharp task (`#` type task).
Virtual tasks are also called sharp tasks (`#` type tasks).
A task with `#` in its name is a virtual task. `#` can be followed by `next`, `back`, `self`, `sub`, `on_error_next`, `exceeded_next`, `reduce_other_times`
Tasks with `#` in name are virtual tasks. `#` can be followed by `next`, `back`, `self`, `sub`, `on_error_next`, `exceeded_next`, `reduce_other_times`.
| Virtual Task Type | Meaning | Simple example |
|:---------:|:---:|:--------:|
| self | Parent Task Name | `"A": {"next": "#self"}` in `"#self"` is interpreted as `"A"`<br>`"B": {"next": "A@B@C#self"}` in `"A@B@C#self"` is interpreted as `"B"`.<sup>1</sup> |
| back | # Preceding task name | `"A@B#back"` is interpreted as `"A@B"`<br>`"#back"` will be skipped if it appears directly |
| next, sub, etc. | # The field corresponding to the previous task name | Take `next` for example:<br>`"A#next"` is interpreted as `Task.get("A")->next`<br>`"#next"` will be skipped if it appears directly |
| Virtual Task Type | Meaning | Simple Example |
| :----------: | :----------------: | :--------------------------------------------------------------------------------------------------------------------------------------: |
| self | Parent task name | `"A": {"next": "#self"}` where `"#self"` interpreted as `"A"`<br>`"B": {"next": "A@B@C#self"}` where `"A@B@C#self"` interpreted as `"B"`<sup>1</sup> |
| back | Task name before # | `"A@B#back"` interpreted as `"A@B"`<br>`"#back"` directly appears will be skipped |
| next, sub, etc. | Field of task name before # | For example with `next`:<br>`"A#next"` interpreted as `Task.get("A")->next`<br>`"#next"` directly appears will be skipped |
_Note<sup>1</sup>: `"XXX#self"` has the same meaning as `"#self"`._
_Note<sup>1</sup>: `"XXX#self"` has same meaning as `"#self"`._
#### Simple example
#### Simple Example
```json
{
"A": { "next": [ "N1", "N2" ] },
"C": { "next": [ "B@A#next" ] },
"A": { "next": ["N1", "N2"] },
"C": { "next": ["B@A#next"] },
"Loading": {
"next": [ "#self", "#next", "#back" ]
"next": ["#self", "#next", "#back"]
},
"B": {
"next": [ "Other", "B@Loading" ]
"next": ["Other", "B@Loading"]
}
}
```
Available.
Results in:
```cpp
Task.get("C")->next = { "B@N1", "B@N2" };
@@ -236,30 +271,30 @@ Task.get("Loading")->next = { "Loading" };
Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" };
```
#### Some uses
#### Some Use Cases
- When several tasks have `"next": [ "#back" ]`, `"Task1@Task2@Task3"` represents the sequential execution of `Task3`, `Task2`, `Task1`
- When several tasks have `"next": [ "#back" ]`, `"Task1@Task2@Task3"` means execute `Task3`, then `Task2`, then `Task1` in sequence.
#### Other related
#### Other Related Cases
```json
{
"A": { "next": [ "N0" ] },
"B": { "next": [ "A#next" ] },
"C@A": { "next": [ "N1" ] }
"A": { "next": ["N0"] },
"B": { "next": ["A#next"] },
"C@A": { "next": ["N1"] }
}
```
In this case above, `"C@B" -> next` (i.e. `C@A#next`) is `["N1"]` instead of `["C@N0"]`.
In this case, `"C@B" -> next` (i.e., `C@A#next`) is `[ "N1" ]`, not `[ "C@N0" ]`.
## Runtime task modification
## Runtime Task Modification
- `Task.lazy_parse()` loads the json task configuration file at runtime. The lazy_parse rules are the same as for [multi-file task](#multi-file task).
- `Task.set_task_base()` modifies the `baseTask` field of a task.
- `Task.lazy_parse()` loads JSON task configuration files at runtime. Lazy_parse rules match [Multi-File Tasks](#multi-file-tasks).
- `Task.set_task_base()` modifies a task's `baseTask` field.
### Usage Example
Suppose you have the following task configuration file:
Consider this task configuration:
```json
{
@@ -267,23 +302,23 @@ Suppose you have the following task configuration file:
"baseTask": "A_default"
},
"A_default": {
"next": [ "xxx" ]
"next": ["xxx"]
},
"A_mode1": {
"next": [ "yyy" ]
"next": ["yyy"]
},
"A_mode2": {
"next": [ "zzz" ]
"next": ["zzz"]
}
}
```
The following code enables changing task "A" based on the value of `mode`, and will also change other tasks that depend on task "A", e.g. "B@A":
The following code changes task "A" based on mode value, also affecting tasks that depend on "A", like "B@A":
```cpp
switch (mode) {
case 1:
Task.set_task_base("A", "A_mode1"); // This is basically the same as replacing A with the contents of A_mode1, as follows
Task.set_task_base("A", "A_mode1"); // Basically equivalent to directly replacing A with A_mode1 content
break;
case 2:
Task.set_task_base("A", "A_mode2");
@@ -296,25 +331,25 @@ default:
## Expression Calculation
| Symbol | Meaning | Example |
|:---------:|:---:|:--------:|
| `@` | Template task | `Fight@ReturnTo` |
| `#` (unary) | Virtual task | `#self` |
| `#` (binary) | Virtual task | `StartUpThemes#next` |
| `*` | Repeat tasks | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | Task list merge | `A+B` |
| `^` | Task list difference (in the former but not in the latter, the order remains the same) | `(A+A+B+C)^(A+B+D)` (= `C`) |
| Symbol | Meaning | Example |
| :---------: | :------------------------------------------------------: | :------------------------------------: |
| `@` | Template task | `Fight@ReturnTo` |
| `#` (unary) | Virtual task | `#self` |
| `#` (binary) | Virtual task | `StartUpThemes#next` |
| `*` | Repeat multiple tasks | `(ClickCornerAfterPRTS+ClickCorner)*5` |
| `+` | Task list merge (in next-type attributes, only first occurrence of same-name tasks kept) | `A+B` |
| `^` | Task list difference (in first but not second, order preserved) | `(A+A+B+C)^(A+B+D)` (result is `C`) |
The operators `@`, `#`, `*`, `+`, `^` have priority: `#` (unary) > `@` = `#` (binary) > `*` > `+` = `^`.
Operators `@`, `#`, `*`, `+`, `^` have precedence: `#` (unary) > `@` = `#` (binary) > `*` > `+` = `^`.
## Schema Check
## Schema Validation
This project configures a json schema check for `tasks.json`, the schema file is `docs/maa_tasks_schema.json`.
This project configures JSON schema validation for `tasks.json`, schema file is `docs/maa_tasks_schema.json`.
### Visual Studio
It is configured in `MaaCore.vcxporj` and works right out of the box. The hint effect is more obscure and some information is missing.
Configured in `MaaCore.vcxporj`, works out of the box. Prompts are somewhat cryptic with some missing information.
### Visual Studio Code
It is configured in `.vscode/settings.json`, open that **project folder** with vscode and you are ready to use it. The hint works better.
Configured in `.vscode/settings.json`, use VSCode to open the **project folder** to use. Better prompt quality.

View File

@@ -9,7 +9,7 @@ dir:
::: center
![MAA Logo](/images/maa-logo_512x512.png =256x256)
![MAA Logo =256x256](/images/maa-logo_512x512.png)
<!-- markdownlint-restore -->
# MaaAssistantArknights
@@ -19,34 +19,34 @@ dir:
![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4)
![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social)
MAA means MAA Assistant Arknights
MAA stands for MAA Assistant Arknights
An Arknights assistant
Based on image recognition, helps you to complete daily quests efficiently!
Based on image recognition technology, complete all daily tasks with one click!
Development in progress ✿✿ヽ(°▽°)ノ✿
Development actively in progress ✿✿ヽ(°▽°)ノ✿
:::
## Download and Install
## Download and Installation
Please read the [documentation](./manual/newbie.md) and then go to the [official website](https://maa.plus) or [Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) to download. Refer to [Getting Started](./manual/newbie.md) for installation instructions.
Please read the [documentation](./manual/newbie.md) and then visit the [official website](https://maa.plus) or [Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) to download. Refer to [Getting Started](./manual/newbie.md) for installation instructions.
## Features
## Key Features
- Auto-battle, drop items recognition, auto-uploading to [Penguin Stats](https://penguin-stats.io/), [Yituliu](https://ark.yituliu.cn/).
- Auto-shifting in the Base, auto efficiency calculation of operators, optimal solution in a single room; also supports [customized schedule](./protocol/base-scheduling-schema.md).
- Auto-recruitment, support for expedited plan. Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/result/stage/recruit/recruit), [Yituliu](https://ark.yituliu.cn/survey/maarecruitdata).
- Supports manual identification of the public recruitment interface to facilitate selection of high-star public recruitment.
- Supports identifying operator lists, counting existing and unavailable operators and their potential, and displaying them in the open recruitment identification interface.
- Depot recognition and supports exporting to [Penguin Stats Planner](https://penguin-stats.cn/planner)[Arknight Tools](https://arkntools.app/#/material)[ARK-NIGHTS Operator Builds](https://ark-nights.com/settings).
- Visiting friends, collecting credits and purchasing items, collecting daily rewards, and completing daily quests in one click!
- Auto-battle for Integrated Strategy (I.S.) for collecting originium ingots and candles.
- Importing JSON task file for auto-battle! [Video](https://www.bilibili.com/video/BV1H841177Fk/)
- Support C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP and other interfaces, easy to integrate and call, customize your MAA!
- Auto-farming sanity, drop item recognition and auto-uploading to [Penguin Stats](https://penguin-stats.io/), [Yituliu](https://ark.yituliu.cn/).
- Intelligent base shift management, auto-calculating operator efficiency for optimal solutions within facilities; also supports [customized scheduling](./protocol/base-scheduling-schema.md).
- Auto-recruitment with option to use expedited plans, clearing all at once! Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/result/stage/recruit/recruit), [Yituliu](https://ark.yituliu.cn/survey/maarecruitdata).
- Manual recruitment tag identification for better high-star recruitment decisions ~~(Will that Senior Operator tag give you SilverAsh or SilverAsh?)~~
- Operator list recognition, counting owned and missing operators and their potentials, displayed during recruitment identification.
- Material recognition and export to [Penguin Stats Planner](https://penguin-stats.io/planner), [Arknights Toolbox](https://arkntools.app/#/material), [ARK-NIGHTS Operator Builds](https://ark-nights.com/settings).
- Visiting friends, collecting credits and shopping, collecting daily rewards, etc. - one-click daily automation.
- Fully automatic Integrated Strategy (IS) for farming Originium Ingots and levels, auto-farming and direct upgrades, smart operator recognition.
- Select JSON copilot files for automatic stage clearing, [Video demonstration](https://www.bilibili.com/video/BV1H841177Fk/).
- Support for C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP and other interfaces, easy integration and customization for your MAA!
Talk is cheap. Show me the pictures!
See it in action!
```component Image4
{
@@ -71,59 +71,56 @@ Talk is cheap. Show me the pictures!
}
```
## How to Use
## Usage Instructions
### Basic Settings
Check [Beginner's Guide](./manual/newbie.md) and [User Manual](./manual/introduction/).
::: tip
For YostarEN, due to interface layout issues, the only supported resolution is `1920x1080`
:::
### Features
### Feature Introduction
Please refer to the [User Manual](./manual/).
### Supports for overseas clients
### Support for Overseas Clients
At present, most of the functions of the International client (US client), Japanese client, Korean client, and traditional Chinese client have been supported. However, due to the small number of overseas users and the shortage of project personnel, many functions have not been fully tested, so please experience it yourself.
If you encounter a bug or have a strong demand for a certain function, welcome to [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) and [Discussions](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) to ask questions. And feel free to join us in building the MAA! Please refer to [Overseas Clients Adaptation](#overseas-clients-adaptation)
Most features now support Global (EN), Japanese, Korean, and Traditional Chinese servers. However, due to the smaller number of overseas users and limited project personnel, many features haven't been thoroughly tested, so please try them yourself.
If you encounter bugs or have specific feature requests, please let us know in [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) and [Discussions](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions), or join us to help improve MAA! Please refer to the [Overseas Clients Adaptation](#overseas-clients-adaptation) section.
::: tip
For Global (EN) server, due to interface layout issues, the only supported resolution is `1920x1080`
:::
### CLI Support
MAA supports command line interface (CLI) operation, supports Linux, macOS and Windows, and can be used for automated scripts or on servers without graphical interfaces. Check [CLI Guide](./manual/cli/)
MAA supports command-line interface (CLI) operation on Linux, macOS, and Windows, useful for automation scripts or on servers without graphical interfaces. Please refer to the [CLI Usage Guide](./manual/cli/)
## Join us
## Join Us
### Associated Projects
### Main Related Projects
**Currently, the project team is very short of front-end experts. If you have relevant experience, you are welcome to join us!**
**The project team is currently in great need of front-end developers. If you have relevant experience, we welcome you to join us!**
- New Framework: [MaaFramework](https://github.com/MaaXYZ/MaaFramework)
- [Co-pilot (auto-battle) site](https://prts.plus) Frontend: [maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend)
- [Co-pilot (auto-battle) site](https://prts.plus) Backend: [MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter)
- [Website](https://maa.plus): [Frontend](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/website)
- [Copilot Site](https://prts.plus) Frontend: [maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend)
- [Copilot Site](https://prts.plus) Backend: [MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter)
- [Official Website](https://maa.plus): [Frontend](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/website)
- Deep Learning: [MaaAI](https://github.com/MaaAssistantArknights/MaaAI)
### i18n
### Multilingual Support (i18n)
MAA supports multiple languages and uses Weblate for localization management. If you're multilingual, feel free to help us translate at [MAA Weblate](https://weblate.maa-org.net).
MAA supports multiple languages and uses Weblate for localization management. If you're fluent in multiple languages, please visit [MAA Weblate](https://weblate.maa-org.net) to help with translations.
MAA uses Chinese (Simplified) as its first language, and all translation entries are in Chinese (Simplified).
MAA uses Chinese (Simplified) as its primary language, and all translation entries are based on Chinese (Simplified).
[![Weblate](https://weblate.maa-org.net/widget/maa/wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa/)
### Development Related Information
### Development Participation
#### Windows
Check [Development Guide](./develop/development.md).
Please refer to the [Development Prerequisites](./develop/development.md).
#### Linux | MacOS
#### Linux | macOS
Check [Linux Compiling Tutorial](./develop/linux-tutorial.md)
Please refer to the [Linux Build Tutorial](./develop/linux-tutorial.md).
#### API
#### APIs
- [C interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/include/AsstCaller.h): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Cpp/main.cpp)
- [Python interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/asst/asst.py): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/sample.py)
@@ -133,79 +130,81 @@ Check [Linux Compiling Tutorial](./develop/linux-tutorial.md)
- [Java HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/Readme.md)
- [Rust interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust/src/maa_sys): [HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust)
- [TypeScript interface](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader)
- [Woolang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/maa.wo)[Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/demo.wo)
- [Woolang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/maa.wo): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/demo.wo)
- [Integration Documentation](./protocol/integration.md)
- [Callback Schema](./protocol/callback-schema.md)
- [Task Schema](./protocol/task-schema.md)
- [Copilot Schema](./protocol/copilot-schema.md)
- [Callback Message Protocol](./protocol/callback-schema.md)
- [Task Workflow Protocol](./protocol/task-schema.md)
- [Auto-Copilot Protocol](./protocol/copilot-schema.md)
#### Overseas Clients Adaptation
Please refer to [Overseas clients Adaptation](./develop/overseas-client-adaptation.md). For the functions already supported by the CN client, most of the overseas client's adaptation tasks only need screenshots and simple JSON modification.
Please refer to the [Overseas Clients Adaptation Guide](./develop/overseas-client-adaptation.md). For features already supported in the CN server, most adaptation work for overseas clients only requires screenshots + simple JSON modifications.
#### For Novice Users of GitHub
#### Want to contribute but not familiar with GitHub?
Check [Introduction to Github Pull request Flow](./develop/development.md#introduction-to-github-pull-request-flow).
[GitHub Pull Request Process Overview](./develop/development.md#introduction-to-github-pull-request-flow)
#### Issue Bot
Check [Issue Bot Usage](./develop/issue-bot-usage.md).
Please refer to the [Issue Bot Usage Guide](./develop/issue-bot-usage.md)
## Acknowledgements
### Open-source Libraries
- Image recognition: [opencv](https://github.com/opencv/opencv.git)
- ~~OCR: [chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~
- OCR: [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
- ML Deployment: [FastDeploy](https://github.com/PaddlePaddle/FastDeploy)
- ML accelerator: [onnxruntime](https://github.com/microsoft/onnxruntime)
- ~~Item drop recognition: [Penguin Stats recognizer](https://github.com/penguin-statistics/recognizer)~~
- Image recognition library: [opencv](https://github.com/opencv/opencv.git)
- ~~Text recognition library: [chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~
- Text recognition library: [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
- Deep learning deployment library: [FastDeploy](https://github.com/PaddlePaddle/FastDeploy)
- Machine learning accelerator: [onnxruntime](https://github.com/microsoft/onnxruntime)
- ~~Stage drop recognition: [Penguin Stats Recognizer](https://github.com/penguin-statistics/recognizer)~~
- Map tile recognition: [Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos)
- C++ JSON library: [meojson](https://github.com/MistEO/meojson.git)
- C++ operator parser: [calculator](https://github.com/kimwalisch/calculator)
- ~~C++ Base64 encoding/decoding[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~
- C++ ZIP library: [zlib](https://github.com/madler/zlib)
- C++ Gzip library: [gzip-hpp](https://github.com/mapbox/gzip-hpp)
- Touch event producer for Android: [Minitouch](https://github.com/DeviceFarmer/minitouch)
- Touch event producer for Android: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)
- ~~C++ base64 encoding/decoding: [cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~
- C++ compression library: [zlib](https://github.com/madler/zlib)
- C++ Gzip wrapper: [gzip-hpp](https://github.com/mapbox/gzip-hpp)
- Android touch event generator: [Minitouch](https://github.com/DeviceFarmer/minitouch)
- Android touch event generator: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)
- WPF MVVM framework: [Stylet](https://github.com/canton7/Stylet)
- WPF control library: [HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls)
- C# Log[Serilog](https://github.com/serilog/serilog)
- C# logging: [Serilog](https://github.com/serilog/serilog)
- C# JSON library: [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime)
- ~~Downloader: [aria2](https://github.com/aria2/aria2)~~
### Data Source
### Data Sources
- ~~Recruitment data: [ArkTools](https://www.bigfun.cn/tools/aktools/hr)~~
- ~~Operators and infrastructure data: [PRTS Arknights Wiki (Chinese)](http://prts.wiki/)~~
- Stage data: [Penguin Stats](https://penguin-stats.io/)
- Gamedata and resources: [Arknights Game Resource](https://github.com/yuanyan3060/ArknightsGameResource)
- Gamedata: [Arknights Yostar Game Data](https://github.com/ArknightsAssets/ArknightsGamedata)
- ~~Recruitment data: [Arknights Toolbox](https://www.bigfun.cn/tools/aktools/hr)~~
- ~~Operator and base data: [PRTS Wiki](http://prts.wiki/)~~
- Stage data: [Penguin Statistics](https://penguin-stats.io/)
- Game data and resources: [Arknights Client Resources](https://github.com/yuanyan3060/ArknightsGameResource)
- Game data: [Arknights Yostar Game Data](https://github.com/ArknightsAssets/ArknightsGamedata)
### Contributors
Thanks to all friends who contribute to development/testing for making MAA better! (\*´▽`)
Thanks to all friends who have participated in development and testing - your help makes MAA better and better! (\*´▽`)
[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=105&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
## Disclaimer
- This software is open source under the [GNU Affero General Public License v3.0 only](https://spdx.org/licenses/AGPL-3.0-only.html), and comes with an additional [user agreement](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/terms-of-service.md).
- The logo of this software is NOT granted rights under AGPL 3.0 License. [耗毛](https://weibo.com/u/3251357314) and Vie, the two artists and all developers of the software reserves all rights. The logo of the software shall not be used without authorization even if the project has an AGPL 3.0 License. Nor shall the logo be used for commercial purposes without authorization.
- The software is an open-source, free of charge software only for studying and communication purposes. There is no agreement or understanding between the developers of the software and the 3rd party person who uses this software as an assistant and charges you. In that case, the developers of the software are not responsible for the problems and consequences caused.
- This software is open source under the [GNU Affero General Public License v3.0 only](https://spdx.org/licenses/AGPL-3.0-only.html) license, with additional [Terms of Service](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/terms-of-service.md).
- The software's logo is NOT licensed under AGPL 3.0. The artists [耗毛](https://weibo.com/u/3251357314), vie, and all the software developers reserve all rights. The logo must not be used without authorization, even with AGPL 3.0 license claims, and must not be used for any commercial purposes without authorization.
- This software is open source and free, intended only for learning and communication purposes. If you encounter merchants using this software for paid services, they may be charging for equipment and time costs; any problems and consequences arising from this are not related to this software.
### DirectML Support Information
This software supports GPU acceleration, which relies on an independent component [DirectML](https://learn.microsoft.com/en-us/windows/ai/directml/) provided by Microsoft on Windows platforms. DirectML is not an open source part of this project and is not subject to AGPL 3.0. For the convenience of users, we have included an unmodified DirectML.dll file with the installation package. If you do not need GPU acceleration, you can safely delete the DLL file and the core functions of the software will still run normally.
This software supports GPU acceleration, which relies on Microsoft's standalone component [DirectML](https://learn.microsoft.com/en-us/windows/ai/directml/) on Windows. DirectML is not part of this project's open-source components and is not subject to AGPL 3.0. For user convenience, we include an unmodified DirectML.dll file with the installation package. If you don't need GPU acceleration, you can safely delete this DLL file, and the core functionality will still work normally.
## Advertisement
## Community
Discord Server: [Discord Invite](https://discord.gg/23DfZ9uA4V)
User Group: [Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1), [QQ Group](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
Copilot JSON Sharing: [prts.plus](https://prts.plus)
Bilibili Livestreams: [MrEO Livestream](https://live.bilibili.com/2808861) Coding Sessions & [MAA-Official Livestream](https://live.bilibili.com/27548877) Gaming/Chats
[Technical Discussion (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2)
[Dev Group(QQ Group)](https://jq.qq.com/?_wv=1027&k=JM9oCk3C)
User Exchange QQ Groups: [MAA Usage & Arknights Exchange QQ Group](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
Discord Server: [Invite Link](https://discord.gg/23DfZ9uA4V)
User Exchange Telegram Group: [Telegram Group](https://t.me/+Mgc2Zngr-hs3ZjU1)
Auto-battle JSON strategy sharing: [prts.plus](https://prts.plus)
Bilibili Live: [MrEO Live](https://live.bilibili.com/2808861) coding streams & [MAA-Official Live](https://live.bilibili.com/27548877) gaming/chat
Please click "Star" if you consider it helpful! Thank you for your support!
Technical Group (non-Arknights, no casual chat): [Internal Competition Hell! (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2)
Developer Group: [QQ Group](https://jq.qq.com/?_wv=1027&k=JM9oCk3C)
If you find the software helpful, please give us a Star! ~ (the small star at the top right of the webpage), that's the biggest support

View File

@@ -53,7 +53,7 @@ maa init
- `maa fight [stage]`: 运行战斗任务,`[stage]` 是关卡名称,例如 `1-7`;留空选择上次或者当前关卡。
- `maa copilot <maa_uri>...`: 自动抄作业,其中 `<maa_uri>` 是作业的 URI多个 URI 会依次执行,`maa_uri` 可以是 `maa://1234` 或者 本地文件路径 `./1234.json`
- `maa sscopilot <maa_uri>`: 自动保全派驻,其中 `<maa_uri>` 是保全派驻作业的 URI。
- `maa roguelike <theme>`: 自动集成战略,`<theme>` 是集成战略的主题,可选值为 `Phantom``Mizuki``Sami` 以及 `Sarkaz`
- `maa roguelike <theme>`: 自动集成战略,`<theme>` 是集成战略的主题,可选值为 `Phantom``Mizuki``Sami` `Sarkaz` 以及 `JieGarden`
- `maa reclamation <theme>`: 自动生息演算,`<theme>` 是生息演算的主题,目前仅 `Tales` 主题可用。
上述任务接受一些参数,你可以通过 `maa <task> --help` 来查看具体的参数。

View File

@@ -39,8 +39,8 @@ icon: mdi:plug
#### エミュレータ関連ドキュメントおよび参考ポート
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555`
- [MuMu](https://mumu.163.com/help/20240807/40912_1073151.html?maa) `16384`
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384`
- [逍遥](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
- [夜神](https://support.yeshen.com/zh-CN/qt/ml) `62001`
@@ -48,7 +48,7 @@ icon: mdi:plug
#### 多重起動について
- MuMu 12 の多重起動マネージャーでは、実行中のポートを確認できます。
- MuMu の多重起動マネージャーでは、実行中のポートを確認できます。
- Bluestacks 5 の設定内で現在の多重ポートを確認できます。
- _追加予定_
@@ -207,11 +207,11 @@ MAA は現在 `bluestacks.conf` の保存場所をレジストリから読み取
### MuMu スクリーンショット強化モード
公式版 MuMu 12 V4.0.0 またはそれ以降のバージョンを使用し。方舟国際版などはサポートされていません。<!-- V3.8.13 -->
公式版 または Arknights Edition MuMu V4.1.26 以降のバージョンに対応していま。<!-- V3.8.13 -->
1. `設定` - `接続設定` で `MuMu のスクリーンショット拡張モードを有効にする` をチェックします。MAAは、スイッチをチェックすると、レジストリを通じてインストールパスを自動的に入力しようとします。
2. `MuMu12 エミュレーターパス` には `MuMuPlayer-12.0` フォルダのパスを入力してください。例: `C:\Program Files\Netease\MuMuPlayer-12.0`。
2. `MuMu12 エミュレーターパス` には `MuMu Player` または `MuMuPlayerGlobal-12.0` または `YXArkNights-12.0` フォルダのパスを入力してください。例: `C:\Program Files\Netease\MuMuPlayerGlobal-12.0`。
3. MuMu ネットワークブリッジを使用している場合は、`MuMu ネットワークブリッジモード` を選択し、MuMu マルチインスタンスマネージャ内の対応するエミュレータのシリアル番号を手動で入力する必要があります。例えば、メインインスタンスは `0` です。

View File

@@ -26,9 +26,9 @@ const fullySupport = shuffleArray([
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 を管理者として実行する必要があります。',
},
{
name: 'MuMu Player 12',
name: 'MuMu Player',
link: 'https://www.mumuplayer.com/',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもある。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu 12 Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。',
note: 'サポートされています、[スクリーンショット強化モード](../connection.html#MuMu スクリーンショット強化モード)の追加サポートもある。 Hyper-Vとの互換性が確認されています。\n\n- “完了後にエミュレータを終了する”機能に異常が発生する場合がありますので、その場合はMuMu公式までご連絡ください。\n- 複数のインスタンスを開くには、MuMu Multiple OpenerのADBボタンから対応するインスタンスのポート情報を確認し、MAA設定-接続設定の接続アドレスのポート番号を対応するポートに変更する必要があります。',
},
{
name: 'LDPlayer',

View File

@@ -107,7 +107,7 @@ Windows 7 で .NET 8 アプリケーションを実行すると、メモリ使
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555`
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384`
- [MuMu](https://mumu.163.com/help/20240807/40912_1073151.html?maa) `16384`
- [Nemu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
- [NOX](https://support.yeshen.com/zh-CN/qt/ml) `62001`

View File

@@ -3,112 +3,125 @@ order: 3
icon: hugeicons:brain-02
---
# 刷理智
# 作戦
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## 一般設定
## 常规设置
- `理性剤使用数``割る源石の数`、および `周回数指定``素材の指定` はいずれもショートサーキット的なスイッチOR条件です。これら3つの条件のうちいずれかを満たした時点でタスク達成とみなし、作戦を停止します。
- `吃理智药` + `吃源石``指定次数``指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智
- `理性剤使用数` は理性を何回分補充するかを指定します1回で複数本使う場合あり
- `割る源石の数` は源石を何個割るかを指定します1回につき1個。倉庫に理性剤がある場合は源石を割りません。
- `周回数指定` は選択したステージを何回周回するかを指定します「15回周回後に停止」
- `素材の指定``ドロップ数` は特定素材を何個入手したら停止するかを指定します「中級源岩を5個入手したら停止」
- `吃理智药` 指定补充几次理智(可能一次吃多瓶药)
- `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石
- `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。
- `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。
- `素材の指定``ステージ` は互いに独立したロジックです。`素材の指定` は素材個数を達成条件に用いるだけで、該当ステージへ自動遷移はしません
- `割る源石の数``理性剤使用数` の後にのみ判定されます。MAA は理性剤がない場合にのみ源石で理性を補充するため、`割る源石の数` にチェックを入れると `理性剤使用数` は 999 に固定され、理性剤を使い切ってからでないと源石を割らないようにします
- `指定材料``关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。
- `吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后MAA 会将 `吃理智药` 的次数锁定为 999确保将理智药吃光以避免跳过 `吃源石` 判断。
::: details 例
::: details 例子
| 吃理智药 | 吃源石 | 指定次数 | 指定材料 | 结果 |
| 理性剤使用数 | 割る源石の数 | 周回数指定 | 素材の指定→ドロップ数 | 結果 |
| :------: | :----: | :------: | :------: | -------------------------------------------------------------------------------------------------------------------------------------- |
| | | | | 刷完现有理智即结束。 |
| 2 | | | | 先刷完现有理智,然后吃一次理智药,一共吃 `2` 次,刷完理智后结束。 |
| _999_ | 2 | | | 先刷完现有理智,并吃光理智药后,再碎石,一共碎 `2` 次,刷完理智后结束。 |
| | | 2 | | `2` 次选择的关卡即结束。 |
| | | | 2 | 掉落统计刷到 `2` 个指定的材料即结束。 |
| 2 | | 4 | | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。 |
| 2 | | | 4 | 在最多吃 `2` 次理智药的情况下,掉落统计刷到 `4` 个指定的材料即结束。 |
| 2 | | 4 | 8 | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。但如果在没刷完 `4` 次之前就获得了 `8` 个指定材料,则会提前结束。 |
| _999_ | 4 | 8 | 16 | 在最多吃光理智药并碎 `4` 次石头的情况下,刷 `8` 次选择的关卡即结束。但如果在没刷完 `8` 次之前就获得了 `16` 个指定材料,则会提前结束。 |
| | 2 | | | 先刷完现有理智,如果仓库中有理智药则结束,如果没有理智药则碎 `2` 次石刷完理智后结束。_非 MAA GUI 行为_ |
| 2 | 4 | | | 先刷完现有理智,如果吃完 `2` 次理智药后还有理智药,则结束;如果吃完 ≤`2` 次理智药后没有理智药了,则继续碎 `4` 次石头刷完理智后结束。_非 MAA GUI 行为_ |
| | | | | 所持理性を消費し切ったら終了。 |
| 2 | | | | まず所持理性を使い切り、その後理性剤を1回使用。合計 `2` 回分の補充後、理性を使い切って終了。 |
| _999_ | 2 | | | まず所持理性を使い切り、理性剤を使い切ってから源石を割る。源石は合計 `2` 回。理性を使い切って終了。 |
| | | 2 | | 選択ステージを `2` 回周回して終了。 |
| | | | 2 | ドロップ統計で指定素材を `2` 個入手した時点で終了。 |
| 2 | | 4 | | 最大 `2` 回まで理性剤を使用する前提で、選択ステージを `4` 回周回して終了。 |
| 2 | | | 4 | 最大 `2` 回まで理性剤を使用する前提で、ドロップ統計で指定素材を `4` 個入手したら終了。 |
| 2 | | 4 | 8 | 最大 `2` 回まで理性剤を使用する前提で、`4` 回周回したら終了。ただし `4` 回に到達する前に指定素材を `8` 個入手した場合は前倒しで終了。 |
| _999_ | 4 | 8 | 16 | 理性剤を使い切り、さらに源石を `4` 回割る前提で、`8` 回周回したら終了。ただし `8` 回に到達する前に指定素材を `16` 個入手した場合は前倒しで終了。 |
| | 2 | | | まず所持理性を使い切る。倉庫に理性剤があればそこで終了。理性剤がなければ源石を `2` 回割り、理性を使い切って終了。_MAA GUIの動作ではありません_ |
| 2 | 4 | | | まず所持理性を使い切る。`2` 回分の理性剤を使い終えても理性剤が残っていれば終了。`2` 回以内で理性剤が尽きた場合は源石を `4` 回割り、理性を使い切って終了。_MAA GUIの動作ではありません_ |
:::
### 关卡选择
### ステージ
- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡
确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面
- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡
- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` `-HARD` 来切换标准或磨难关卡
- 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关
- 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`
- 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`
- 剿灭作战。必须输入 `Annihilation`
- 别传中的 `OF-1` / `OF-F3` / `GT-5`
- 当期 SS 活动 后三关。在自动访问 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。
- 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`
- ステージに目的の候補がない場合は、MAA で `現在/前回` を選び、ゲーム内で手動で目的ステージへ移動してください。
画面は、右上にステージ名と残り理性、右下に自動指揮と作戦開始が表示されるステージ詳細に留めてください
- この画面にいない場合、`現在/前回` は端末ホーム右下の「前回作戦」のステージへ自動で入ります
- `作戦` `高度な設定``ステージ名を入力する` を有効にし、手動でステージ番号を入力することもできます。現在ナビ可能なステージは以下の通りです
- すべてのメインステージ。末尾に `-NORMAL` または `-HARD` を付けて標準/磨難を切り替え可能
- 龍門幣・作戦記録の 5 / 6 ステージ。ただし `CE-6` / `LS-6` を入力してください。6 が連戦不可の場合、自動で 5 に切り替えます
- アーツ学・購買資格証・炭素材の第 5 ステージ。`CA-5` / `AP-5` / `SK-5` を入力してください
- すべてのSoCステージ。`PR-A-1` のように完全な番号を入力してください
- 殲滅作戦は以下の入力値に対応し、対応する Value を使用してください:
::: details 画面例
![画面例](/images/ja-jp/combat-start-interface-example.png)
- 当期殲滅作戦Annihilation
- チェルボーグChernobog@Annihilation
- 龍門郊外LungmenOutskirts@Annihilation
- 龍門市街LungmenDowntown@Annihilation
- サイドストーリー内の `OF-1` / `OF-F3` / `GT-5`
- 当期 SS イベントの後半 3 ステージ。自動で [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) から更新を取得後、画面下部に表示されます。
- 復刻 SS イベント。`SSReopen-<ステージ接頭辞>` を入力すると、XX-1 XX-9 を一括周回します(例:`SSReopen-IC`)。
::: details サンプル画面
![サンプル画面](/images/ja-jp/combat-start-interface-example.png)
:::
### 剿灭模式
### 殲滅作戦
- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”
- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住
- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。
- MAA は端末ホーム右上の殲滅ボタンからのみ遷移します。選択した殲滅ステージが `完全委任` を解放済みで、`PRTS 殲滅代理カード` を十分に所持していることを確認してください
- 「400体撃破」を達成済みのステージのみ自動殲滅の使用を推奨します
## 高级设置
## 高度な設定
### 备选关卡
### 代替ステージ
备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗
代替ステージは当日の開放状況に応じて戦闘ステージを決定し、最初に開放されているステージを選びます
これはスケジュールに近い機能であり、「ステージ選択に失敗したときの予備候補」にはなりません。
1.子:关卡选择 `龙门币-6/5`,备选选择 `1-7` `经验-6/5`
- 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错
- 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错
- 由于 `经验-6/5` 前存在常驻关卡 `1-7`在这种情况下MAA 永远也不会前往 `经验-6/5` 战斗
2. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。
1.:ステージ選択が `龍門幣-6(CE-6)`、代替が `1-7` `作戦記録-6(LS-6)` の場合
- 当日に `龍門幣-6(CE-6)` が開放されていれば `龍門幣-6(CE-6)` に向かい、`1-7` `作戦記録-6(LS-6)` には向かいません。この時点で `龍門幣-6(CE-6)` の自動指揮を解放していなければ、作戦タスクはエラーになります
- 当日に `龍門幣-6(CE-6)` が開放されていなければ `1-7` に向かい、`龍門幣-6(CE-6)` には向かいません。この時点で `1-7` の自動指揮を解放していなければ、作戦タスクはエラーになります
- `作戦記録-6(LS-6)` より前に常設の `1-7` が存在するため、この構成では MAA は `作戦記録-6(LS-6)` には決して向かいません
2. ステージ選択が `殲滅作戦` の場合:
- 殲滅の結果にかかわらず、他の代替ステージの選択ロジックには影響しません。殲滅がエラーでも作戦タスクはエラーになりません。
- 残りの代替ステージは `理性剤使用数``連戦回数` の設定のみを継承し、`割る源石の数``周回数指定``素材の指定` の制御は受けません。
### 剩余理智
### 余剰理性の消費
`刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束
`作戦` タスク終了後に起動します。`理性剤使用数``割る源石の数``周回数指定``素材の指定``連戦回数` の制御は受けず、現在残っている理性を使い切った時点で終了します
- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。
- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。
- 若剩余理智仍然不足则会结束任务(如少于 6 理智)
- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错
- `ステージ` の理性不足後に、`余剰理性の消費` 用ステージで残りの“端数”理性を処理する用途に適します1-7 へ行く)。
- 連戦回数の設定が高すぎて理性が不足した場合に、自動で単発周回に切り替えて理性を使い切って締める用途にも適します1-7 を連戦 6 回に設定したが理性が 30 のため、自動的に連戦なしの 1-7 を 5 回に切り替え)。
- 残り理性がなお不足している場合(例:理性は 6 未満)にはタスクを終了します
- `余剰理性の消費` で選んだステージが未開放の場合、作戦タスクはエラーになります
### 連戦回数
MAAはユーザーが設定した連続戦闘回数に応じて戦闘を行います
MAA はユーザーが設定した連戦回数に基づいて戦闘を行います
- **自動モード** (0):
- レベル内の最大連続戦闘回数を自動で判別し、最大連続戦闘回数を維持し、正気度オーバーフローが発生しないようにします。
- 完了後、「正気度残量確認」プロセスに入ります(設定されている場合)。
- **AUTOモード**0
- ステージの最大連回数を自動認識し、理性が溢れない範囲で最大を維持
- 完了後は(設定していれば)`余剰理性の消費` フローへ移行
- **数値モード** (16):
- 設定された回数だけ連続戦闘を行います。
- 現在の正気度が設定回数を完了するのに足りない場合例えば、5回しか完了できないのに6回に設定している場合、タスクを終了し、「正気度残量確認」プロセスに入ります設定されている場合
- **数値モード**16
- 設定た回数で連戦を実行
- 現在の理性で設定回数を満たせない場合5 回分しかないのに 6 回を設定)には、その時点で終了し(設定していれば)`余剰理性の消費` フローへ移行
- **無効モード** (-1):
- ゲーム内の連続戦闘回数を調整しません
- 現在の正気度が設定回数を完了するのに足りない場合、タスクを終了し、「正気度残量確認」プロセスに入ります(設定されている場合)。
- **切り替えない**-1
- ゲーム内の連戦回数設定を変更しません
- 現在のゲーム内設定回数を満たす理性が不足している場合は、その時点で終了し(設定していれば)`余剰理性の消費` フローへ移行
### 掉落识别
### 周回数指定
- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)
- 支持自定义企鹅物流用户 ID。
MAA は最大で指定回数まで戦闘を実行します
## 异常检测
例:現在の理性が 100、ステージ消費が 6 の場合
- 支持自动勾选 `代理指挥`
- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务
- 支持等级提升后继续任务。
- 代理失败时会放弃本次行动并重新战斗。
- 周回数指定を 10、連戦回数を 4 に設定:`2作戦開始回数 × 4連戦 = 8 回` の作戦を実行(`floor(10 / 4) × 4 連戦 = 8`)。消費理性は `8 × 6 = 48`。さらに 4 連戦を 1 回行うと合計 12 回となり上限 10 を超えるため実行せず、8 回で終了
- 周回数指定を 10、連戦回数を AUTO に設定:`6 連戦 × floor(10 / 6) + (10 % 6)` となり、`6 連戦 1 回 + 4 連戦 1 回 = 10 回` を実行。消費理性は `10 × 6 = 60`
### スクショ認識
- 素材ドロップの自動認識と統計に対応。あわせて [ペンギン急便データ統計処理部門](https://penguin-stats.io/) と [ワンシート攻略](https://ark.yituliu.cn/) にアップロードします(**ご注意:「ワンシート攻略」は実質的に簡体字中国語のみのため、翻訳ツールと併用してください**)。
- Penguin-Stats のレポート ID をカスタマイズ可能(`設定``実行設定`)。
## 異常検知
- `自動指揮` に自動でチェックを入れます。
- 回線切断や午前4時の瞬断後に自動再接続し、タスクを継続します。
- レベルアップ後もタスクを継続します。
- 自動指揮が失敗した場合はその回の行動を放棄し、再戦します。

View File

@@ -3,19 +3,15 @@ order: 5
icon: solar:shop-2-bold
---
# 获取信用及购物
# FP獲得と交換
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
- 戦友を自動訪問して「信用ポイント/フレンドpt(FP)」を獲得し、FP交換所でアイテム交換を行います。
- サポートユニットでFPを獲得
- MAA はサポートユニットを用いて「青く燃ゆる心」`OF-1` を1回クリアします。該当ステージが解放済みであることを確認してください。
- ステージ選択が `現在/前回` の場合は、サポートユニットによる周回は実行しません。
- 会自动访问好友获取信用点,并前往信用交易所购物。
- 借助战赚信用:
- MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。
- 关卡选择为 `当前/上次` 时不会执行借助战任务。
## 高度な設定
## 高级设置
- 优先购买和黑名单都是关键字匹配,例如填 `碳` 会匹配 `碳``碳素`
- 分隔符的分号既可以使用英文半角 `;` 也可以使用中文全角 ``
- `信用点低于300时停止购买商品` 即使在低于 300 时也会购买优先购买商品。
- `優先購入``ブラックリスト`はいずれもキーワード一致です。例えば `炭` を入力すると「中級炭素材」と「初級炭素材」に一致します。
- 区切り文字のセミコロンは、半角の `;` と全角の `` のどちらでも使用できます。
- `FPが300未満になった場合、アイテムの購入を停止します` を選択しても、300未満のときは`優先購入`に指定した商品を購入します。

View File

@@ -3,32 +3,34 @@ order: 4
icon: material-symbols:view-quilt-rounded
---
# 基建换班
# 基地仕事
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## 通常モード
## 换班策
### 交代戦
- 自动计算并选择**单设施内的最优解**,支持所有通用类技能和特殊技能组合。
- 自动识别经验书、赤金、源石碎片、芯片,分别使用相应的干员组合。
- 自动按照 `无人机用途` 选择的方式使用无人机。
- 自动识别心情进度条,将剩余心情百分比小于 `基建工作心情阈值` 的干员进驻宿舍。
- **単一施設内の最適解**を自動で計算し、選択します。汎用スキル/特殊スキルの組み合わせに対応
- 作戦記録・純金・源石の欠片・SoCを自動判別し、対応するオペレーターを配置
- `ドローン用途` の選択方式に基づいて、ドローンを自動使用
- 体力状況を判別し、残り体力が `作業体力閾値` を下回ったオペレーターを寮へ移動
## 额外说
### 補足説
- 基建换班目前均为单设施最优解,而非跨设施的全局最优解。
- 可识别并使用的例子:`巫恋+龙舌兰``红云+稀音`
- 不可识别并使用的例子:`迷迭香体系``红松骑士团`
- `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。
- 会客室仅缺一个线索时,会选择对应线索倾向的干员,其余情况选择通用干员。
- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks/tasks.json` 中的 `ClueSelected` - `maxTimes` 字段。
- 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮``逻各斯` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。
- 控制中枢策略太过复杂,目前只考虑 `阿米娅``诗怀雅``凯尔希``彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。
- 可自行选择需要 MAA 处理的设施类别,默认全选。
- 施設の交代は施設横断の最適化ではなく、各施設内での最適解を選びます
- 対応例:`シャマレ+テキーラ``ヴァーミル+シーン`
- 非対応例:`ローズモンティス体系``レッドパイン騎士団`
- `ドローン用途` `貿易所-龍門幣` を選択している場合、`シャマレグループ` を優先して判別・使用します
- 応接室で手がかりの不足が1種類のみの場合は、該当傾向のオペレーターを選択。それ以外は汎用オペレーターを選択します
- 自施設の手がかりが満杯の時のみ手がかりを送付します最大3個。個数は MAA フォルダ内 `resource/tasks/tasks.json` `ClueSelected` - `maxTimes` を編集してください
- `配置済みオペレーターを寮に入れない` 設定により、`アイリーニ``ロゴス` などが訓練に未配置の際の寮入りを防止できます(ただし、加工施設でコンディション不足のオペレーターも移動しなくなります)
- 中枢システムの戦略は複雑なため、現時点では `アーミヤ``スワイヤー``ケルシー``レインボー小隊` およびコンディション +0.05 のオペレーターのみを考慮しています。順次最適化予定です
- MAA が処理する対象施設は選択可能です(デフォルトは全選択)
## 自定义基建换班 (Beta)
## キューのローテーション
- 一图流的大佬们帮忙写了一个 [排班生成器](https://ark.yituliu.cn/tools/schedule),可参考 [基建协议文档](../../protocol/base-scheduling-schema.md) 使用
- MAA 文件夹下 `/resource/custom_infrast/` 中内置了几套理论极限效率的作业,可用作参考。由于其对干员及练度的需求极高,不推荐直接使用。
- このモードは、まずゲーム内でプリセットキューを設定しておく必要があります。MAA が自動でローテーションを行います
## 基地シフトのカスタマイズ
- ワンシート攻略の有志の方々が作成した [シフト生成ツール](https://ark.yituliu.cn/tools/schedule) があり、[基地スケジューリング仕様書](../../protocol/base-scheduling-schema.md) を参考に利用できます。
- MAA フォルダー配下の `/resource/custom_infrast/` には、理論上の最大効率を目指したいくつかのシフトプランが同梱されています。参考用としてお使いください。オペレーターおよび育成度の要件が非常に高いため、直接の使用は推奨しません。

View File

@@ -18,7 +18,7 @@ icon: ic:baseline-article
- SoCの場合のみ、完全なステージ番号を入力する必要があります。例 `PR-A-1`
- `Annihilation`(殲滅作戦)。
- `OF-1` / `OF-F3` / `GT-5` のみサポートされます。
- 現在のSSイベントの最後の3つのステージ。 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。
- 現在のSSイベントの最後の3つのステージ。 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。
- 再刻印SSアクティビティは `SSReopen-XX` と入力するとXX-1XX-9ステージを一度にクリアできます。 `SSReopen-IC` など。
::: details 画面例

View File

@@ -3,22 +3,18 @@ order: 2
icon: fluent:people-24-filled
---
# 公开招募
# 公開求人
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
「自動公開求人」と [公開求人認識](./tools.md#公開求人認識) は別々の機能です!
自动公招 和 [公招识别](./tools.md#公招识别) 是两个不同的功能!
## 自動公開求人
## 自动公招
`緊急招集票` の自動使用に対応し、1回のタスクあたりの最大募集回数を設定できます。`緊急招集票を自動的に使用` と併用すれば、一度に募集券を使い切ることができます。
支持自动使用 `加急许可`,支持设置单次任务最大招募次数,可配合 `自动使用加急许可` 一次性刷光招募券
1・5・6★のタグを検出した場合は通知を表示します
当识别到出现 1、5、6 星标签都会弹出通知提示
公開求人の更新時には、公開求人のタグデータを [ペンギン急便データ統計処理部門](https://penguin-stats.io/) と [ワンシート攻略](https://ark.yituliu.cn/) に自動アップロードします(**ご注意:「ワンシート攻略」は実質的に簡体字中国語のみのため、翻訳ツールと併用してください**
公招刷新时会自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。
## 高度な設定
## 高级设置
`自动确认` 即 MAA 自动选择标签并进行招募,`手动确认` 即不进行自动选择与招募。
`自動的に確認する` は MAA が自動でタグを選択して募集を実行することを意味し、`手動的に確認する` は自動選択および自動募集を行わないことを意味します。

View File

@@ -3,26 +3,22 @@ order: 1
icon: ic:round-rocket-launch
---
# 开始唤醒
# ウェイクアップ
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
エミュレータを自動起動し、クライアントを自動起動して、自動的にゲームへ入ります。
自动启动模拟器,自动启动客户端,自动进入游戏
エミュレータの自動起動には追加設定が必要です。詳しくは起動設定をご覧のうえ、接続設定内の `ADB接続が失敗した場合、エミュレータの起動を試みる` にチェックを入れてください
自动启动模拟器需额外设置,详见启动设置,且需勾选连接设置内的 `ADB 连接失败时尝试启动模拟器`
## アカウント切替
## 账号切换
この機能は `構成を切り替える` または `スケジュール実行設定` と併用してください。`ウェイクアップ` タスクを実行するたびに、1回アカウント切替を行います。
この機能は、設定の切り替えやスケジュール実行と一緒に使用する必要があります。`ウェイクアップ` タスクが実行されるたびに、アカウント切り替え操作が行われます
切り替えはログイン済みのアカウントにのみ対応します。検索にはログイン名を使用します。入力した内容が、ログイン済みのすべてのアカウントの中で一意になるようにしてください
仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。
- 例:
- 公式サーバー:`123****8901` の場合、`123****8901``123``8901``3****8` のいずれでも可
- Bilibiliサーバー`张三` の場合、`张三``张``三` のいずれでも可
- 例子:
- 官服:`123****8901`,可输入 `123****8901``123``8901``3****8`
- B 服:`张三`,可输入 `张三``张``三`
## 接続設定
## 连接设置
[点我](../connection.md)
[こちら](../connection.md)

View File

@@ -5,50 +5,46 @@ icon: octicon:tools-16
# ツールボックス
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## 公開求人認識
招タブ画面を開き、「認識開始」をクリックすると、認識が開始されます。
開求人認識の画面を開き、「認識開始」をクリックすると起動します。
以前に干員認識を実行した場合、認識了後の干員名には潜能データも表示されます。
以前に「オペレーター」を実行していた場合、認識了後のオペレーター名の後ろに潜在能力データも表示されます。
## オペレーター (Beta)
## オペレーター
保有している干員と保有していない干員のリストを認識し、潜データを認識して保存し、公招認識で表示できるようにします。
所持/未所持のオペレーター一覧を認識し、潜在能力データを認識保存して公開求人認識で表示に利用します。
## 倉庫アイテム認識 (Beta)
## 倉庫アイテム認識
ホーム画面から自動的に倉庫に入ることができます。自動での遷移に失敗した場合は、手動で「養成材料」画面切り替え、**最左端にスライド**してから機能を開始してください。
ホーム画面から自動で倉庫へ移動できます。自動遷移に失敗した場合は、手動で倉庫の `素材` 画面切り替え、**いちばん左端までスワイプ** してから開始してください。
現在、[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟ツールボックス](https://arkntools.app/#/material)、[明日方舟 - 干員育成表](https://ark-nights.com/settings)にエクスポートをサポートしています
現在、MAAから以下のサイトへエクスポートに対応しています
[ペンギン急便周回計画作成ツール](https://penguin-stats.io/planner)、[アークナイツツールボックス](https://arkntools.app/#/material)、[アークナイツ | 周回計画表](https://ark-nights.com/settings)。
もし、データサイトの管理者であれば、貴サイトの素材JSONプロトコルに対応するためにご連絡ください~
データサイトを運営されている方は、貴サイトの素材JSON形式へのエクスポート対応についてもぜひご連絡ください。実装を検討いたします。
今後はもっと実用的な機能に使われるかもしれません。(夢物語
## 映像 (Alpha)
攻略動画を認識し、自動的に作業ファイルを生成します。自動戦闘ページに動画ファイルをドラッグ&ドロップすると開始されます。
16:9の画面比率、720p以上の画質で、黒枠、エミュレーターの枠、異形画面などの干渉要素がないことが要求されます。
そのうち実用全振りに…なる予定(~~予定は未定~~)。
## パラスガチャ
::: center
**本当にあなたのアカウントであなたのカードを引く 本当にあなたのアカウントであなたのカードを引く**
**本当にあなたのアカウントであなたのカードを引く 本当にあなたのアカウントであなたのカードを引く**
**本当にあなたのアカウントであなたのカードを引く 本当にあなたのアカウントであなたのカードを引く**
**本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します**
**本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します**
**本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します  本当にあなたのアカウントであなたのガチャを回します**
:::
[牛牛航空](https://www.bilibili.com/opus/926129394412421126)に登録できなかった?問題ありません!今は誰でも自分だけの牛牛航空を持っています!さらにガチャの過程スクリーンショットを撮、画面中央に表示されます
[牛牛航空](https://www.bilibili.com/opus/926129394412421126) に申し込めなかった方もご安心を。今は誰でも自分専用の「牛牛航空」MAAがbilibiliで行った参加型ガチャ配信企画の通称をご利用いただけます。ガチャの過程は随時スクリーンショットを撮影し、画面中央に表示ます
- 参考(企画概要:「牛牛航空#3 五周年限定プール」):
- 5月1日16:00中国時間サーバーオープン直後から、申込順にガチャを実施。
- 途中で中止したい場合:配信遅延があるため、**ご自身のアカウントにログインしてセッションを奪い返してください**(中国語原文の「顶号」に相当)。
- 抽選自体を取り消したい場合:**パスワードを変更**してください(運営側は常時アンケートを確認できないため)。
## Peep
MAAの目を通して世界を見てみたいですか今、それが来ました
MAAはターゲットフレームレートエミュレータのスクリーンショットを試み、スクリーンショットをリアルタイムでウィンドウに表示します。
MAA が目標フレームレートに合わせてエミュレータのスクリーンショットを取得し、ウィンドウ中央にリアルタイム表示します。
スクリーンショット速度がターゲットフレームレートに比べて著しく遅い場合、MAAはスクリーンショット速度に合わせてターゲットフレームレートを自動的に下げます。~~ストレステストとして使えます~~
スクショ取得速度が目標フレームレートに対して明らかに遅い場合、スクショ速度に合わせて目標フレームレートを自動下げます。~~負荷テストにもどうぞ~~

View File

@@ -47,6 +47,9 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom
SubTaskCompleted = 20002, // サブタスク 完了
SubTaskExtraInfo = 20003, // サブタスクの追加情報
SubTaskStopped = 20004, // サブタスク 手動停止
/* Web Request */
ReportRequest = 30000, // レポートリクエスト
};
```
@@ -162,7 +165,7 @@ Todo
倉庫の識別
- `OperBox`
オペレーターボックス識別
- `ReclamationAlgorithm`
- `Reclamation`
生息演算
- `Custom`
カストム タスク
@@ -619,3 +622,19 @@ Todo
- `UnsupportedLevel`
自動作戦で、サポートされていないレベル名
### ReportRequest
このフィールドは、コアモジュールがネットワークリクエスト情報をUI層に渡すために主に使用され、UIは実際のHTTP報告処理を担当します。
```json
{
"url": "string", // リクエストの完全なURL、例https://penguin-stats.io/PenguinStats/api/v2/report
"headers": { // リクエストヘッダーのキーと値のペアContent-Typeは含まず、UIが追加します
"authorization": "PenguinID 1234567890",
"User-Agent": "MaaAssistantArknights/1.2.3 cpr/4.5.6"
},
"body": "string", // リクエストボディの内容通常はJSON形式の文字列
"subtask": "string" // サブタスク名、具体的な報告タスクを識別します。例:"ReportToPenguinStats"、"ReportToYituliu"
}
```

View File

@@ -47,7 +47,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p
// 対応するタスクのパラメータ
{
"enable": bool, // このタスクを有効にするかどうか、オプション、デフォルトは true
"client_type": string, // クライアントバージョン、オプション、デフォルトは空白
"client_type": string, // クライアントバージョン(必須)
// オプション: "Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"start_game_enabled": bool, // クライアントを自動的に起動するかどうか、オプション, デフォルトはfalse
"account_name": string // アカウントの切り替え、オプション、デフォルトで切り替えしません
@@ -218,10 +218,11 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p
{
"enable": bool, // このタスクを有効にするかどうか、省略可能、デフォルト値 true
"theme": string, // テーマ、省略可能、デフォルト値 "Phantom"
// Phantom - 傀影と猩紅の血晶
// Mizuki - 水月と蒼青の樹
// Sami - 探索者の銀霜の果て
// Sarkaz - サルカズの無尽の奇譚
// Phantom - 傀影と猩紅の血晶
// Mizuki - 水月と蒼青の樹
// Sami - 探索者の銀霜の果て
// Sarkaz - サルカズの無尽の奇譚
// JieGarden - 界园
"mode": int, // モード、省略可能、デフォルト値 0
// 0 - ポイント稼ぎ、より安定して層数を増やす
// 1 - 源石錠稼ぎ、1層で投資後終了
@@ -254,7 +255,16 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p
string, // 開幕でリスト内の全ての密文を持っている場合に開幕リセット成功とする;
... // 注意、このパラメータは「生活至上部隊」と同時に使用する必要がある。他の部隊では開幕報酬で密文を取得できない;
],
"start_with_two_ideas": bool, // 凹 2 構想開局の有無選択可能、デフォルト値falseテーマが Sarkaz で、モード 4 ののみ有効
"collectible_mode_start_list": { // 開始時に取得したい報酬。任意項目。デフォルトはすべて false。モード 4 の場合のみ有効
"hot_water": bool, // 魔法瓶(湯)報酬。お湯を沸かす機能のトリガー(共通)
"shield": bool, // シールド報酬。追加のHP相当共通
"ingot": bool, // 源石錠の報酬(共通)
"hope": bool, // 希望の報酬共通。※JieGarden テーマでは無効)
"random": bool, // ランダム報酬オプション:全ての源石錠を消費してランダムなコレクションを入手(共通)
"key": bool, // 鍵の報酬。Mizuki テーマでのみ有効
"dice": bool, // サイコロの報酬。Mizuki テーマでのみ有効
"ideas": bool, // 2つの構想報酬。Sarkaz テーマでのみ有効
},
"use_foldartal": bool, // 密文を使用するか、モード5ではデフォルト値 false、他のモードではデフォルト値 trueSamiテーマにのみ対応
"check_collapsal_paradigms": bool, // 取得した崩壊パラダイムを検査するか、モード5ではデフォルト値 true、他のモードではデフォルト値 false
"double_check_collapsal_paradigms": bool, // 崩壊パラダイムの検査漏れ対策を行うか、モード5ではデフォルト値 true、他のモードではデフォルト値 false

View File

@@ -84,7 +84,7 @@ MAA は、エンドポイントを 1 秒間隔で継続的にポーリングし
::: note
- LinkStart-[TaskName] タイプのタスクtypeのオプション値は LinkStart-BaseLinkStart-WakeUpLinkStart-CombatLinkStart-RecruitingLinkStart-MallLinkStart-MissionLinkStart-AutoRoguelikeLinkStart-ReclamationAlgorithm
- LinkStart-[TaskName] タイプのタスクtypeのオプション値は LinkStart-BaseLinkStart-WakeUpLinkStart-CombatLinkStart-RecruitingLinkStart-MallLinkStart-MissionLinkStart-AutoRoguelikeLinkStart-Reclamation
- Settings-[SettingsName] タイプのタスクtypeのオプション値は Settings-ConnectionAddress, Settings-Stage1
- Settings シリーズのタスクは、タスクを受け取ったときにすぐに実行するのではなく、前のタスクの後ろに配置されています。
- すぐに実行される複数のタスクも送信順序で実行されますが、これらのタスクの実行速度は速いため、通常、彼らの順序に注目する必要はありません。

View File

@@ -91,6 +91,10 @@ JSONファイルはコメントをサポートしていません。テキスト
"specialParams": [ int, ... ], // 一部の特殊な認識器に必要なパラメーター
// 追加、 action が Swipe の場合はオプション、 [0] が duration 、 [1] が追加のスライドを有効にするかどうか
"highResolutionSwipeFix": false, // オプション項目。高解像度スワイプ修正を有効にするかどうか。
// 現在のところ、ステージナビゲーションのみが Unity のスワイプ方式を使用していないため、有効化が必要。
// デフォルトは false
/* algorithm MatchTemplate */
"template": "xxx.png", // オプション、マッチングされるイメージファイルの名前
@@ -104,7 +108,7 @@ JSONファイルはコメントをサポートしていません。テキスト
// その場合、 "maskRange" を [ 1, 255 ] に設定して、マッチング時に黒く塗りつぶされた部分を瞬時に無視できます。
"colorScales": [ // method が HSVCount または RGBCount の場合に有効で必須、色マスク範囲。
[ // list<array<array<int, 3>, 2> | array<int, 2>>
[ // list<array<array<int, 3>, 2>> / list<array<int, 2>>
[23, 150, 40], // 構造は [[lower1, upper1], [lower2, upper2], ...]
[25, 230, 150] // 内側が int の場合はグレースケール、
], //   array<int, 3> の場合は三チャネルの色で、method によって RGB または HSV かが決まります;
@@ -140,12 +144,37 @@ JSONファイルはコメントをサポートしていません。テキスト
"isAscii": false, // オプション、認識されるテキストコンテンツが ASCII 文字であるかどうか
// 指定されていない場合、デフォルトはfalse
"withoutDet": false // オプション、検出モデルを使用しない場合
"withoutDet": false, // オプション、検出モデルを使用しない場合
// 指定されていない場合、デフォルトは false
/* algorithmHash */
// アルゴリズムが未熟であり、特殊な場合にのみ使用されるため、現時点では推奨されていません
// Todo
/* algorithm OcrDetect withoutDet true */
"useRaw": true, // オプション、原画像でマッチングを行うかどうか
// 指定されていない場合、デフォルトは true、false の場合はグレースケールでマッチング
"binThreshold": [140, 255], // オプション項目。グレースケールの二値化上限(デフォルトは[140, 255]
// この値より高い画素は背景とみなされ、文字領域から除外されます
// [lower, upper] 範囲内の画素のみが文字の前景として残ります
/* algorithm JustReturn action Input */
"inputText": "A string text.", // 必須項目。入力する文字列の内容。文字列形式
/* FeatureMatch */
"template": "xxx.png", // オプション。マッチングする画像ファイル名。文字列または文字列リストを指定できます。
// デフォルトは "taskname.png"
"count": 4, // マッチングする特徴点の数(閾値)。デフォルト値は 4
"ratio": 0.6, // KNN マッチングアルゴリズムの距離比。[0 - 1.0]。比率が大きいほどマッチングが緩くなり、接続されやすくなります。デフォルトは 0.6
"detector": "SIFT", // 特徴点検出の種類。オプションの値は SIFT、ORB、BRISK、KAZE、AKAZE、SURF。デフォルト値は SIFT
// SIFT: 計算量が多い、スケール不変性、回転不変性。最も効果的。
// ORB: 計算速度が非常に速い、回転不変性。ただし、スケール不変性は保証されません。
// BRISK: 非常に高速な計算速度、スケール不変性、回転不変性を備えています。
// KAZE: 2Dおよび3D画像に適用可能、スケール不変性、回転不変性を備えています。
// AKAZE: 高速な計算速度、スケール不変性、回転不変性を備えています。
}
}
```

View File

@@ -9,7 +9,7 @@ dir:
::: center
![MAA Logo](/images/maa-logo_512x512.png =256x256)
![MAA Logo =256x256](/images/maa-logo_512x512.png)
<!-- markdownlint-restore -->
@@ -193,7 +193,7 @@ MAAをより良くするために開発・テストに貢献してくれたす
## 広告
ユーザー研究グループQQグループ[QQグループ](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
ユーザー研究グループQQグループ[QQグループ](https://api.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
Discord サーバー: [Discord 招待リンク](https://discord.gg/23DfZ9uA4V)
ユーザー研究グループTGグループ[Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1)
自動作戦JSON作業シェア[prts.plus](https://prts.plus)

View File

@@ -0,0 +1,135 @@
---
order: 7
icon: devicon-plain:githubactions
---
# CI 시스템 해석
MAA는 Github Action을 활용하여 웹사이트 구축, 자동 리소스 업데이트, 최종 파일 빌드 및 릴리즈 등 대량의 자동화 작업을 완성했습니다. 시간이 지나면서 이러한 CI들은 점차 중첩되기 시작했고, 일부는 다른 저장소로 연결되기도 했습니다. 본 문서는 MAA의 CI 시스템을 개선하고자 하는 분들에게 간단한 소개를 제공하는 것을 목표로 합니다.
본 문서를 읽기 전에 MAA의 프로젝트 구조와 구성에 대한 기본적인 개념을 갖고 있는 것이 좋습니다.
::: tip
이 페이지에서 CI 파일명을 검색하여 원하는 부분으로 빠르게 이동할 수 있습니다.
:::
워크플로우 파일들은 모두 `.github/workflows` 하위에 저장되어 있으며, 각 파일은 기능에 따라 다음과 같은 부분으로 나눌 수 있습니다:
+ [코드 테스트](#코드-테스트)
+ [코드 빌드](#코드-빌드)
+ [버전 릴리즈](#버전-릴리즈)
+ [리소스 업데이트](#리소스-업데이트)
+ [웹사이트 구축](#웹사이트-구축)
+ [Issues 관리](#issues-관리)
+ [Pull Requests 관리](#pull-requests-관리)
+ [MirrorChyan 관련](#mirrorchyan-관련)
+ [기타](#기타)
또한 [pre-commit.ci](https://pre-commit.ci/)를 통해 코드의 자동 포맷팅과 이미지 리소스의 자동 최적화를 구현했으며, PR 생성 후 자동으로 실행되므로 특별히 신경 쓸 필요가 없습니다.
## 코드 테스트
`smoke-testing.yml`
이 워크플로우는 주로 MaaCore에 대한 기본적인 검사를 담당하며, 리소스 파일 로딩, 일부 간단한 task 실행 테스트 등을 포함합니다.
테스트 케이스가 오랫동안 업데이트되지 않아서, 현재 이 워크플로우는 기본적으로 리소스 파일에 오류가 없는지, 그리고 MaaCore의 코드에 치명적인 오류(빌드에 영향을 주는 종류)가 없는지 확인하는 역할을 합니다.
## 코드 빌드
`ci.yml`
이 워크플로우는 코드의 전체 빌드 작업을 담당하며, MAA의 모든 구성 요소를 포함합니다. 빌드 결과물은 실행 가능한 MAA입니다.
필수적인 MaaCore 외에, Windows 빌드 결과물에는 MaaWpfGui가, MacOS 빌드 결과물에는 MaaMacGui가, Linux 빌드 결과물에는 MaaCLI가 포함됩니다.
이 워크플로우는 새로운 Commit이나 PR이 발생할 때마다 자동으로 실행되며, 릴리즈 PR에 의해 트리거될 때는 이번 빌드 결과물이 직접 릴리즈에 사용되고 Release가 생성됩니다.
## 버전 릴리즈
버전 릴리즈, 줄여서 릴리즈는 사용자에게 업데이트를 배포하는 필수 작업으로, 다음 워크플로우들로 구성됩니다:
+ `release-nightly-ota.yml` 개발 버전 릴리즈
+ `release-ota.yml` 정식 버전/공개 베타 버전 릴리즈
+ `gen-changelog.yml` 정식 버전/공개 베타 버전용 changelog 생성
+ `pr-auto-tag.yml` 정식 버전/공개 베타 버전용 tag 생성
::: tip
위 파일명의 ota는 Over-the-Air를 의미하며, 우리가 흔히 말하는 "증분 업데이트 패키지"입니다. 따라서 MAA의 릴리즈 과정에는 실제로 이전 버전들에 대한 OTA 패키지 빌드 단계가 포함됩니다.
:::
### 개발 버전
`release-nightly-ota.yml`
이 워크플로우는 매일 UTC 시간 22시에 자동으로 실행되어 개발 버전의 릴리즈 주기를 보장합니다. 물론 변경사항을 검증해야 할 때 수동으로 릴리즈할 수도 있습니다.
주의할 점은 개발 버전의 릴리즈는 Windows 사용자만을 대상으로 하며, MacOS와 Linux 사용자는 개발 업데이트를 받을 수 없습니다.
### 정식 버전/공개 베타 버전
이 두 채널의 릴리즈 과정은 상대적으로 복잡합니다. 릴리즈 단계를 시뮬레이션하여 각 워크플로우의 역할을 설명하겠습니다:
1. `dev`에서 `master` 브랜치로의 PR을 생성하며, 해당 PR의 이름은 `Release v******` 형식이어야 합니다
2. `gen-changelog.yml`이 최근 정식 버전/공개 베타 버전부터 현재 버전까지의 changelog를 생성합니다(새로운 PR 형태로)
3. changelog를 수동으로 조정하고 간단한 설명을 추가합니다
4. PR을 병합하면 `pr-auto-tag.yml`이 트리거되어 tag를 생성하고 브랜치를 동기화합니다
5. Release 이벤트가 `release-ota.yml`을 트리거하여 master에 tag를 생성한 후 ota 패키지 빌드 및 첨부파일 업로드를 진행합니다
## 리소스 업데이트
이 부분의 워크플로우는 주로 MAA의 리소스 업데이트와 최적화를 담당하며, 구체적인 워크플로우는 다음과 같습니다:
+ `res-update-game.yml` 정기적으로 실행되어 지정된 저장소에서 게임 리소스를 가져옵니다
+ `sync-resource.yml` 리소스를 MaaResource 저장소에 동기화하여 리소스 업데이트에 사용합니다
+ `optimize-templates.yml` 템플릿 이미지 크기를 최적화합니다
## 웹사이트 구축
`website-workflow.yml`
이 워크플로우는 주로 MAA 공식 웹사이트의 구축과 발행을 담당하며, 메인 페이지와 문서 두 구성 요소를 포함합니다.
참고로 웹사이트 발행은 릴리즈와 강하게 연결되어 있어서, 평상시 웹페이지 구성 요소를 수정할 때는 오류가 없는지 확인하기 위해 빌드만 진행하고, 릴리즈 시에만 실제로 Azure에 배포됩니다.
## Issues 관리
`issue-checker.yml`
정규 표현식 매칭을 통해 각 Issue에 태그를 달아 Issue 내용을 분류하고 표시하여 조회와 관리를 용이하게 합니다.
`issue-checkbox-checker.yml`
정규 표현식 매칭을 통해 "주의 깊게 읽지 않음"을 체크한 Issue를 자동으로 닫습니다.
"주의 깊게 읽지 않음"이 체크되지 않은 경우 모든 체크박스를 접습니다.
`stale.yml`
90일 이상 활동이 없는 Bug Issue를 검사하여 표시하고 알림을 보내며, 7일 후에도 활동이 없으면 닫습니다.
## Pull Requests 관리
`pr-checker.yml`
이 워크플로우는 PR의 Commit Message가 [관례적 커밋](https://www.conventionalcommits.org/ko/v1.0.0/)을 준수하는지, 그리고 Merge Commit을 포함하는지 검사하며, 위 조건에 해당하면 알림을 제공합니다.
## MirrorChyan 관련
MirrorChyan은 유료 업데이트 미러 서비스이며, 관련 워크플로우는 다음과 같습니다:
+ `mirrorchyan.yml` 업데이트 패키지를 MirrorChyan에 동기화
+ `mirrorchyan_release_note.yml` MirrorChyan용 Release Note 생성
## 기타
`markdown-checker.yml`
저장소의 모든 Markdown 파일에 유효하지 않은 링크가 포함되어 있는지 검사합니다.
`blame-ignore.yml`
Commit Message에 `blame ignore`가 포함된 커밋을 자동으로 무시하여 저장소 히스토리를 깔끔하게 유지합니다.
`cache-delete.yml`
PR 병합 후 관련 캐시를 정리하여 캐시 사용량을 절약합니다.

View File

@@ -5,6 +5,10 @@ icon: iconoir:developer
# 개발 환경 구축
::: tip
본 페이지는 주로 PR 과정 및 MAA의 파일 포맷 요구사항을 설명합니다. MAA의 실행 로직 변경에 대한 구체적인 내용은 [프로토콜 문서](../protocol/)를 참고하세요.
:::
## Github Pull Request 진행 과정
### 프로그래밍을 잘 모르지만, json 파일과 docs 문서를 수정하고싶어요. 어떻게 해야하나요?
@@ -124,6 +128,8 @@ MAA는 리포지토리의 코드 및 리소스 파일들을 아름답고 일관
pre-commit install
```
pip 설치 후에도 Pre-commit을 실행할 수 없다면, PIP 설치 경로가 PATH에 추가되었는지 확인하세요.
이제, 매번 커밋할 때마다 포매팅 도구가 자동으로 실행되어 코드 형식이 규칙에 맞는지 확인합니다.
## Visual Studio에서 clang-format 사용 설정

View File

@@ -13,7 +13,7 @@ icon: jam:write-f
## 로컬 배포
1. [pnpm](https://pnpm.io/zh/installation)을 설치하고, [Pull Request 가이드](./development.md#github-pull-request-진행-과정)을 참고해, 저장소를 로컬에 클론합니다.
1. [pnpm](https://pnpm.io/installation)을 설치하고, [Pull Request 가이드](./development.md#github-pull-request-진행-과정)을 참고해, 저장소를 로컬에 클론합니다.
2. `website` 경로에서 새로운 터미널을 열고, `pnpm i` 을 실행하여 의존성 파일을 다운로드합니다.
3. `pnpm run dev` 를 실행하여 배포를 시작합니다.

View File

@@ -29,7 +29,7 @@ Commitizen 규격으로 커밋하지 않는 경우, 병합 요청(Merge Request)
Issue Bot은 풀 리퀘스트의 제목을 확인합니다. 아래 키워드로 시작하지 않는 제목은 `ambiguous(애매모호한)`로 표시됩니다.
- `build`, `chore`, `ci`, `doc`, `docs`, `feat`, `fix`, `perf`, `refactor`, `rfc`, `style`, `test`
- `Merge`, `merge`, `Revert`, `revert`
- `Merge`, `merge`, `Revert`, `revert`, `Reapply`, `reapply`
### 수동으로 트리거하기

View File

@@ -11,6 +11,10 @@ icon: teenyicons:linux-alt-solid
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)을 참고할 수 있습니다.
:::
::: info
Mac은 `tools/build_macos_universal.zsh` 스크립트를 사용하여 컴파일할 수 있습니다. [MaaAssistantArknights/MaaMacGui](https://github.com/MaaAssistantArknights/MaaMacGui) 프로젝트의 README.md를 참고하는 것을 권장합니다.
:::
## 컴파일 과정
1. 컴파일에 필요한 종속성 다운로드
@@ -68,10 +72,12 @@ MAA의 빌드 방법은 여전히 논의 중입니다. 이 튜토리얼의 내
[Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py)에서 `__main__`의 구현을 참조하세요.
### C
### C++
[CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)의 구현을 참조하세요.
### C\#
### C Sharp
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
[MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs)의 구현을 참조하세요.

Some files were not shown because too many files have changed in this diff Show More