Compare commits

...

106 Commits

Author SHA1 Message Date
zzyyyl
02961e60e9 feat: 增加从 GitHub 直接获取资源文件的方式,并优先尝试从 GitHub 获取
github raw 没有 dynamic_list.txt
2024-07-14 17:34:23 +08:00
SherkeyXD
312e0296bd chore: CHANGELOG中文档修改独立分类 2024-07-14 15:01:34 +08:00
Hao Guan
0a6e7c794b feat: Mac GUI 添加萨米肉鸽策略 2024-07-14 13:18:01 +08:00
Constrat
c60d5544e9 fix: tweak Reed Alter, Noir Corne alter regex 2024-07-13 23:21:47 +02:00
zzyyyl
d52b1e13ec perf: 保持 commit 树不分叉
[skip changelog] [skip ci]
2024-07-14 03:06:44 +08:00
SherkeyXD
05668443fc ci: 更新checkout至v4
这怎么还有个漏网之鱼)
2024-07-14 02:55:25 +08:00
SherkeyXD
b495a16a0a docs: Update Changelogs of v5.4.1 2024-07-14 02:32:32 +08:00
Rbqwow
c6fa1a7258 docs: fix 17f0172
[skip changelog]
2024-07-14 02:04:47 +08:00
Rbqwow
c3bb7c8d17 docs: 修改win7相关问题描述&更新运行库 2024-07-14 02:04:46 +08:00
Rbqwow
530e32f1a1 docs: 修复字体和评论区分类 2024-07-14 02:04:44 +08:00
Rbqwow
d8f364aa58 docs: fix a bad link 2024-07-14 02:04:43 +08:00
Rbqwow
40f33fd2f2 docs: make i18n warnings show only once 2024-07-14 02:04:42 +08:00
uye
c632054716 refactor: website docs **translation needed** (#9287)
Co-authored-by: wlwxj <d1ve_wh4le@outlook.com>
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Wallsman <63186641+wallsman@users.noreply.github.com>
Co-authored-by: Loong <wangl.cc@outlook.com>
Co-authored-by: 神代綺凛 <i@loli.best>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2024-07-14 01:47:19 +08:00
Constrat
38c1f77326 feat: YoStarEN resolution warning on client switch (#9539)
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2024-07-14 01:47:17 +08:00
Constrat
f74004d954 fix(docs): MD022/blanks-around-headings
[skip changelog]
2024-07-13 17:11:26 +02:00
Constrat
7eaf4f2de3 docs: beautified example images
[skip changelog]
2024-07-13 17:07:47 +02:00
status102
73458d38ca fix: 自动战斗开始时移除召唤物类头像缓存,以避免跨局错误识别相似技能的召唤物 (#9649)
* fix: 自动战斗开始时移除召唤物类头像缓存,以避免跨局错误识别相似技能的召唤物

* chore: description
2024-07-13 22:53:04 +08:00
Constrat
e6eef5a03d docs(chore): updated EN example images for consistency
[skip changelog]
2024-07-13 16:38:36 +02:00
DavidWang19
e20f429ae4 feat: WPF Gui support for roguelike collapsal paradigm task plugin (#9648)
* feat: WPF Gui support for roguelike collapsal paradigm task plugin
2024-07-13 14:34:36 +01:00
Constrat
434d05bcd9 chore: Auto Update Game Resources - 2024-07-13
[skip changelog]
2024-07-13 12:47:41 +00:00
Constrat
1ea5104aee docs: updated EN example images
[skip changelog]
2024-07-13 14:46:36 +02:00
zzyyyl
e18a46acfa perf: 删除 tasks.json 冗余行 (#9645) 2024-07-13 20:36:43 +08:00
Constrat
fcf25b2a2a chore: link for yostaren resolution
[skip changelo]
2024-07-13 14:14:12 +02:00
Constrat
624cef1e8c docs: more EN localization tweaks
[no ci] [skip changelog]
2024-07-13 14:13:19 +02:00
Constrat
9b7f1e36e0 docs: localized symbols for en_US
[no ci] [skip changelog]
2024-07-13 12:59:57 +02:00
HY
6963037ba0 fix: 繁中服部分角色無法正確辨識 (#9647) 2024-07-13 10:19:46 +01:00
zzyyyl
2642053096 feat: 增加 BattlePauseCancel 重试上限 2024-07-13 12:05:11 +08:00
zzyyyl
1da98683f3 fix: 修复连接前同步参数时日志报错的问题 (#9644)
m_controller is not inited
2024-07-13 10:02:16 +08:00
zzyyyl
ed4c7c0a04 fix: roi out of bounds 2024-07-13 08:27:28 +08:00
zzyyyl
05870cc6c7 feat: cache 统一默认为 false (#9642)
workaround for #9639

之后删了
2024-07-13 08:10:00 +08:00
zzyyyl
7a66c5315d feat: 重新加入 tasks.json 的默认值检查 (#9583) 2024-07-13 08:08:06 +08:00
Alisa
68e56325b6 i18n: Translations update from MAA Weblate (#9640)
* i18n: Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (723 of 723 strings)

Translation: MAA Assistant Arknights/WPF GUI
Translate-URL: https://weblate.maa-org.net/projects/maa/wpf-gui/zh_Hans/

* i18n: Translated using Weblate (English (United States))

Currently translated at 99.1% (717 of 723 strings)

Translation: MAA Assistant Arknights/WPF GUI
Translate-URL: https://weblate.maa-org.net/projects/maa/wpf-gui/en_US/

* i18n: Translated using Weblate (Japanese)

Currently translated at 99.1% (717 of 723 strings)

Translation: MAA Assistant Arknights/WPF GUI
Translate-URL: https://weblate.maa-org.net/projects/maa/wpf-gui/ja/

* i18n: Translated using Weblate (Korean)

Currently translated at 99.4% (719 of 723 strings)

Translation: MAA Assistant Arknights/WPF GUI
Translate-URL: https://weblate.maa-org.net/projects/maa/wpf-gui/ko/

---------

Co-authored-by: Rbqwow <Rbqwow@users.noreply.weblate.maa-org.net>
2024-07-12 23:26:24 +08:00
zzyyyl
140db8e274 feat: 由ci生成的非正式/公测/内测版判断为调试版本并且不再检查更新 (#9632)
close #7712

Fix of #7719
2024-07-12 23:09:47 +08:00
zzyyyl
8c3643b691 feat: 隐式空 text 检测仅对无基任务生效 2024-07-12 20:40:19 +08:00
status102
cef5797419 perf: add log output (#9636) 2024-07-12 19:36:46 +08:00
Weiyou Wang
8535c53289 fix: 修复萨米肉鸽因插件注册顺序导致的无法运行问题 (#9633)
* fix: m_roguelike_register_plugins

* refactor: !(A == B) --> (A != B)
2024-07-12 17:57:09 +08:00
SherkeyXD
aa032b5790 feat: 为调试版本添加无需更新的提示 2024-07-12 12:33:39 +08:00
SherkeyXD
b49a495f78 feat: 由ci生成的非正式/公测/内测版判断为调试版本并且不再检查更新
Co-authored-by: zzyyyl <aysyxx53@hotmail.com>
2024-07-12 12:33:31 +08:00
Constrat
970e45209a chore: Auto Update Game Resources - 2024-07-11
[skip changelog]
2024-07-11 17:26:57 +00:00
Constrat
edbf4aefda Style/gui consistency (#9567) 2024-07-11 18:26:33 +01:00
Weiyou Wang
87ea4fe357 fix: 修复坍缩范式插件导致的Gui和傀影/水月肉鸽初始化Bug (#9573)
* fix: call Clp_Pd plugin function directly from Encounter & FoldartalUse plugins

* refactor: 去除 tasks.json 中的冗余

* fix: 修正坍缩范式插件对banner文字位置的判断

* refactor: get_rare_clp_pds直接使用find结果返回

* refactor: delete code for debug

* refactor: 减少hard coding

* refactor: 减少hard coding

* refactor: use canonical debug mode

* refactor: add explanation for m_need_check_panel in comment

* fix: 日版翻译更正 thanks to @Manicsteiner

* refactor: refine the condition for using clp_pd_plugin in *.cpp files

* refactor: refine condition check for enabling clp_pd_task plugin

* refactor: change back to ASST_DEBUG
2024-07-12 01:12:02 +08:00
Manicsteiner
694572694d chore: YostarJP add SSSBuffChoose (#9629) 2024-07-11 23:28:28 +08:00
Sherkey
8b90bd7968 refactor: 肉鸽资源加载逻辑及目录结构重构 (#9555)
Todos:
~~+ [ ] autocopilot 也重构一下~~
+ [x] encounter 采用类似 tasks.json 的覆盖模式,各个模式的事件配置覆盖到 `default.json` 上面
+ [x] 肉鸽插件加载主题化(待定)
+ [x] Wait for #9561
2024-07-11 20:11:45 +08:00
Weiyou Wang
22221cce21 fix: delete mode tag which is no longer used 2024-07-11 18:26:44 +08:00
Constrat
f93f7979e1 chore: Auto Update Game Resources - 2024-07-11
[skip changelog]
2024-07-11 07:43:06 +00:00
Weiyou Wang
b3d991070e refactor: reduce redundancy in encounter.json files 2024-07-11 14:04:17 +08:00
Weiyou Wang
df9791e5d9 refactor: 肉鸽根据主题选择加载的插件 2024-07-11 14:04:16 +08:00
Weiyou Wang
4921fb7558 refactor: 重构肉鸽不期而遇策略的加载与使用 2024-07-11 14:03:44 +08:00
皆川すみれ
dadbfd92d0 fix: 为InfrastEnteredFlag添加延迟以避免信用通知对右上角基建提醒的遮挡 (#9597)
* fix: add postdelay for InfrastEnteredFlag to avoid office notification conflication

为InfrastEnteredFlag添加延迟以避免信用通知对右上角基建提醒的遮挡

* fix: remove comma
2024-07-11 13:55:19 +08:00
Sherkey
25e9e0d745 docs: fix Weblate status preview in README (#9616)
Fix Weblate preview images and links in
[README.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/README.md#%E5%A4%9A%E8%AF%AD%E8%A8%80-i18n)
.

![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/61692393/3546cb41-acad-4aaa-bcab-a850ef337010)

↓


![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/61692393/c11b272c-d077-4f4a-902e-ecf999ac0c66)
2024-07-11 01:32:29 +08:00
Lemon-miaow
44a0b20c49 docs: Fix README.md 2024-07-11 01:27:37 +08:00
Weiyou Wang
7d8cb51689 fix: allow CMake build MaaCore with ASST_DEBUG under macOS 2024-07-11 00:02:39 +08:00
Rbqwow
f10eb36229 docs: fix 17f0172
[skip changelog]
2024-07-10 17:39:34 +08:00
Wallsman
5a303d9c34 Update ja-jp.json
Update JP ニヤニヤ谷
2024-07-10 18:25:58 +09:00
dantmnf
4473a45e63 fix: leak fastdeploy objects to avoid crash 2024-07-10 14:44:39 +08:00
Sherkey
48f9188fb4 chore: 删除 Qodana 静态检查 (#9553)
目前 Qodana 的许可证不知因为什么原因过期了,已经六个月没有运行过了
并且由于 Github 的 Secret 存储机制,没有很好的在 PR 上工作的方法
因此提议删除
2024-07-10 14:19:37 +08:00
uye
f761605bfc chore: 增加 ResourceUpdater 日志 2024-07-10 11:25:50 +08:00
ChingCdesu
2ba2db3c5a pref: 将Head和ETag请求设置为Connection: close 2024-07-10 10:08:57 +08:00
Alisa
ff8ba97918 i18n: Translations update from MAA Weblate (#9598)
* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (723 of 723 strings)

Translation: MAA Assistant Arknights/WPF GUI
Translate-URL: https://weblate.maa-org.net/projects/maa/wpf-gui/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (579 of 579 strings)

Translation: MAA Assistant Arknights/Glossary
Translate-URL: https://weblate.maa-org.net/projects/maa/glossary/zh_Hant/

---------

Co-authored-by: momomochi <as99us301@gmail.com>
2024-07-10 09:43:19 +08:00
Rbqwow
17f01726b4 docs: 修改win7相关问题描述&更新运行库 2024-07-10 04:23:49 +08:00
Constrat
1b8911f550 chore: Auto Update Game Resources - 2024-07-09
[skip changelog]
2024-07-09 17:26:34 +00:00
HX3N
9f5e502d42 chore: YostarKR ocr fix and remove SkipThePreBattlePlot
remove duplicate and follow CN  maskRange value
2024-07-10 01:37:43 +09:00
Weiyou Wang
1f49d6363d fix: Roguelike Invest System offset (#9590) 2024-07-10 00:18:25 +08:00
Manicsteiner
1e55c956b7 chore: YostarJP cor fix and roguelike shop text (#9591) 2024-07-09 18:01:58 +02:00
HY
e97b54173b fix: 修正繁中服薩米肉鴿獎勵無法多選一的問題 (#9584)
fix #9574, fix #9547, fix #9514, fix #9472
2024-07-09 20:10:56 +08:00
Constrat
496af0800f chore: Auto Update Game Resources - 2024-07-09
[skip changelog]
2024-07-09 08:28:53 +00:00
Constrat
34d0a637cf chore: Auto Update Game Resources - 2024-07-09
[skip changelog]
2024-07-09 07:25:16 +00:00
alisa
43c5306ba4 fix: add zh-tw glossary for weblate 2024-07-09 12:44:46 +08:00
alisa
718de46ac7 fix: merge glossary json into one for better webalte compatibility 2024-07-09 12:25:41 +08:00
alisa
b8df114b73 feat: change glossary from markdown to JSON 2024-07-09 12:12:57 +08:00
Constrat
fb560915d5 chore: Auto Update Game Resources - 2024-07-09
[skip changelog]
2024-07-09 04:02:50 +00:00
alisa
994be62578 feat: update turbo to v2 2024-07-09 11:00:17 +08:00
Constrat
41a87e3806 chore: Auto Update Game Resources - 2024-07-09
[skip changelog]
2024-07-09 02:22:29 +00:00
Horror Proton
78545b8dfe fix: fix typings in Recruit task
fix: https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9517
2024-07-09 00:31:49 +08:00
EvATive7
e7bff44fe1 chore: update python API (#9538)
* chore: update python API

* fix: remove non-exist return value

* style: docstring of param of set_static_option

* feat: python API get_image
2024-07-08 21:52:01 +08:00
Rbqwow
a530b93b5f docs: 修复字体和评论区分类 2024-07-08 17:18:41 +08:00
SherkeyXD
fd9c0d3f6e docs: 跟进肉鸽不期而遇目录重构的文档修改 2024-07-08 13:04:00 +08:00
Sherkey
e4e22d3c51 feat: 添加萨米肉鸽天途半道关卡战斗策略 (#9337) 2024-07-08 12:53:27 +08:00
Rbqwow
a50c00ea8f docs: fix a bad link 2024-07-08 05:05:56 +08:00
Rbqwow
a0608eb314 docs: make i18n warnings show only once 2024-07-08 04:11:16 +08:00
Constrat
a340d515ad refactor: Yostar interface consistency
[no ci] [skip changelog]
2024-07-07 21:37:41 +02:00
SherkeyXD
7891ba2c8d refactor: 重构肉鸽不期而遇策略的目录格式 2024-07-08 03:30:24 +08:00
SherkeyXD
6c61e42d9b chore: 规范化肉鸽策略命名 2024-07-08 03:29:42 +08:00
Constrat
11cc3b04b9 refactor: YoStar -> Yostar only for interfaces (#9548) 2024-07-07 21:28:16 +02:00
Rbqwow
6b63576798 fix: wrong proxy detection 2024-07-08 03:27:52 +08:00
Sherkey
c2f71bd49b docs: 增加关于肉鸽任务刷探索范式功能的说明 (#9552) 2024-07-08 03:01:40 +08:00
SherkeyXD
7071432e6c chore: 删除 Qodana 静态检查 2024-07-08 02:40:19 +08:00
Weiyou Wang
c6a9378dbf docs: 增加关于肉鸽任务刷探索范式功能的说明 2024-07-08 04:29:45 +10:00
uye
57fbe81be1 refactor: website docs **translation needed** (#9287)
Co-authored-by: wlwxj <d1ve_wh4le@outlook.com>
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Wallsman <63186641+wallsman@users.noreply.github.com>
Co-authored-by: Loong <wangl.cc@outlook.com>
Co-authored-by: 神代綺凛 <i@loli.best>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2024-07-08 01:57:20 +08:00
Constrat
b6ba67b2b8 chore: Auto Update Game Resources - 2024-07-07
[skip changelog]
2024-07-07 13:03:44 +00:00
Sherkey
20b6cea436 feat: 增加识别坍缩范式的插件,增加萨米肉鸽刷隐藏坍缩范式模式 (#9172)
### 更新功能

1. 增加`RoguelikeMode::CLP_PDS = 5`作为萨米肉鸽刷隐藏坍缩范式的模式,可且仅可用于萨米肉鸽。

在此模式下,将在每次回到关卡选择界面时检查坍缩状态,同时会优先使用带有`_collapse`后缀的战斗部署方案,也会使用特有的不期而遇和购物设置。

2. 肉鸽任务新增以下参数:
- `check_collapsal_paradigms`:是否检查坍缩范式,若`mode = 5`则默认为`true`,否则为`false`。
- `double_check_collapsal_paradigms`:是否增加对坍缩范式的检查频率,若`mode =
5`则默认为`true`,否则为`false`。
- `expected_collapsal_paradigms`:需要刷的坍缩范式,若`mode = 5`则默认为两组隐藏坍缩范式。
- `use_foldartal`:是否使用密文板,若`mode = 5`则默认为`false`,否则为`true`。

### 机制介绍

本插件将以两种不同的手段检查坍缩范式:

- 在选关界面点击屏幕中上方展开坍缩状态栏(以下称`Panel Check`);
- 观察屏幕右侧是否有坍缩范式通知(以下称`Banner Check`)。

获取坍缩值的方法多种多样,本插件考虑到了以下情况:

1. 战斗后因非完美战斗而使坍缩值增加,进行`Banner Check`。
2. 战斗后因获得收藏品而使坍缩值变动,进行`Banner Check`。
3. 在不期而遇等(MAA中失与得等节点也会触发不期而遇插件)节点中使坍缩值变动,进行`Banner Check`。
4. 再诡异行商节点中因购买收藏品而使坍缩值变动,进行`Banner Check`。
5. 因使用密文版而使坍缩值减少,进行`Banner Check`。
6. 因进入新的一层而使坍缩值增加,进行`Panel Check`。
7. 若进行`Banner
Check`时发现坍缩范式消退,因不知道会不会一次性消退两层(即便会也概率极低),会在下一次回到选关洁面的时候额外触发一次`Panel
Check`。
8. 在`double_check_collapsal_paradigms =
true`的情况下,每次回到选关界面的时候都会额外触发一次`Panel
Check`以验证是否之前有漏、多记录坍缩范式,并以回调信息的形式传回Debug信息。

**注意事项**

1.
为了防止错过坍缩范式通知,会适当sleep,若检测到屏幕下方有`正在提交反馈至神经`的提示的话会额外sleep。所以开启检查坍缩范式的功能后整体流程会变得拖沓一些(目前在我本人可接受范围内)。
2.
在`RoguelikeMode::CLP_PDS`模式下,获得不需要的坍缩范式会直接重开,遇到需要的坍缩范式则会停止任务。理论上可能在不期而遇事件中获得了不需要的坍缩范式,但因为右上角没有退出按钮而没有及时重开。但我目前没有观察到这样的情形,故没有做处理。不放心的话请设置`double_check_collapsal_paradigms
= true`,等回到选关界面后再检查一遍已获得的坍缩范式。
3.
无论如何,强烈推荐开启`double_check_collapsal_paradigms`。慢点就慢点,求稳才是关键。在我本人测试的过程中,遇到过一两次遗漏`Banner
Check`的情况(截图错过了右上角通知),幸好在额外触发的`Panel
Check`中补上了。怀疑是系统卡顿或网络延迟所致(我在澳大利亚用着MBP2017开着MUMU+MAA刷官服,时间长了后模拟器本身就偶尔会卡住)。

### 回调信息

当`check_collapsal_paradigms == true`时会输出类似于下方的回调信息:
```C++
callback(AsstMsg::SubTaskExtraInfo, json::object { 
    { "what", "RoguelikeCollapsalParadigms" },
    { "details", json::object {
        { "cur", "目空一些" },
        { "deepen_or_weaken", 1 },
        { "prev", "睁眼瞎" }
    } }
});
```
其中`deepen_or_weaken = 1`代表坍缩范式从`prev`加深至`cur`,若`deepen_or_weaken =
-1`则代表坍缩范式消退。
偶尔也会有测试信息以`deepen_or_weaken = 0`被传回,主要用于我自己测试用。

### 任务设置范例

以下是我的测试用任务设置:
```Python
asst.append_task('Roguelike', {
    'theme': 'Sami',
    'mode': 5,
    'investment_enabled': False,
    'squad': '远程战术分队',
    'roles': '稳扎稳打',
    'core_char': '维什戴尔',
    # 'expected_collapsal_paradigms': ['趋同性消耗'],
    # 'check_collapsal_paradigms': True, # 在mode = 5时默认为True
    double_check_collapsal_paradigms': True, # 建议打开,以防万一错过了什么
    # 'use_foldartal': False # 在mode = 5时默认为False
})
```
建议在难度10刷隐藏坍缩,我只做了第一层的漏怪作业且以`维什戴尔`为战斗核心。

### To-Do(s)

- [ ] 补充相关文档 (要不就把上述文字作为文档吧?)

### Need Help

- [ ] 外服适配
- [ ] UI适配

---

小孩子不懂事乱写的代码,请各位多指教。
2024-07-07 20:56:14 +08:00
EvATive7
e3d1359626 fix: switch account failed when MuMuEmulator12Extras is enabled 2024-07-07 12:34:54 +02:00
Constrat
4b7cc9dc1e feat: YoStarEN resolution warning on client switch (#9539)
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2024-07-07 12:27:39 +02:00
Weiyou Wang
b4c8112322 feat: global adaptation 2024-06-27 15:24:48 +10:00
Weiyou Wang
ef09a3ef12 feat: modify the combat strategy for collapse 2024-06-26 15:13:36 +10:00
Weiyou Wang
895a22fcfe feat: modify the combat strategy for collapse 2024-06-14 18:53:14 +10:00
Weiyou Wang
7f9c5c0b8c refactor: callback messages are now in English 2024-06-11 00:53:33 +10:00
Weiyou Wang
ed407de99c feat: global adaptation 2024-06-10 20:32:54 +10:00
Weiyou Wang
34d8a26c0a refactor: double check when expanding the collapsal paradigm panel 2024-06-10 20:32:54 +10:00
Weiyou Wang
7ef398bd54 refactor: use MatchTemplate instead of OcrDetect to recognise the current zone 2024-06-10 20:32:47 +10:00
Weiyou Wang
60d58bf93e refactor: matcher result will contain the name of the matched template 2024-06-10 18:49:39 +10:00
晓丶梦丶仁
ba9c282d96 feat: 添加萨米肉鸽天途半道关卡战斗策略 2024-06-09 22:09:02 +08:00
Weiyou Wang
327115b003 fix: 将上滑操作触发条件从“检测到3个坍缩范式”降低至“检测到2个坍缩范式” 2024-06-09 20:20:03 +10:00
Weiyou Wang
742898c624 feat: global adaptation 2024-06-07 12:00:54 +10:00
Weiyou Wang
9e8009299c feat: 初步实现肉鸽模式5:刷隐藏坍缩 2024-06-07 12:00:35 +10:00
Weiyou Wang
47f912e998 feat: Roguelike任务下加入use_foldartal参数选项以控制是否使用密文版,默认为true 2024-06-04 02:44:14 +10:00
475 changed files with 33289 additions and 168526 deletions

158095
.github/qodana.sarif.json vendored

File diff suppressed because it is too large Load Diff

49
.github/workflows/markdown-checker.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: Lint Markdown files
on:
push:
paths:
- "**/*.md"
- ".github/workflows/lint-markdown.yml"
pull_request:
paths:
- "**/*.md"
- ".github/workflows/lint-markdown.yml"
schedule:
- cron: "44 7 * * 2"
workflow_dispatch:
jobs:
lint:
name: Lint Markdown
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
show-progress: false
- name: Lint Markdown
uses: DavidAnson/markdownlint-cli2-action@v16
with:
config: docs/.markdownlint.yaml
globs: |
README.md
docs/**/*.md
# check-links:
# name: Check Dead Links
# runs-on: ubuntu-latest
# steps:
# - name: Check out code
# uses: actions/checkout@v4
# with:
# show-progress: false
#
# - name: Check Dead Link
# uses: umbrelladocs/action-linkspector@v1
# with:
# # Use github-pr-review when triggered by a pull request; otherwise, use github-check
# reporter: ${{ github.event_name == 'pull_request' && 'github-pr-review' || 'github-check' }}
# filter_mode: nofilter
# fail_on_error: true

View File

@@ -1,45 +0,0 @@
name: Qodana static analysis
on:
workflow_dispatch:
pull_request: # 在 PR 更新的场合进行扫描
paths:
- ".github/workflows/qodana.yml"
- "src/MaaWpfGui/*"
- "qodana.yaml"
- "src/MaaWpfGui/**"
- "MAA.sln"
push: # 在主分支推送代码的场合进行扫描
branches:
- master
- "releases/*"
- dev
paths:
- ".github/workflows/qodana.yml"
- "src/MaaWpfGui/**"
- "qodana.yaml"
permissions:
contents: write
pull-requests: write
checks: write
jobs:
qodana:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth: 0 # a full history is required for pull request analysis
show-progress: false
- name: Qodana Scan
uses: JetBrains/qodana-action@main
with:
pr-mode: false
post-pr-comment: true
args: --baseline,.github/qodana.sarif.json
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

View File

@@ -96,8 +96,9 @@ jobs:
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
show-progress: false
path: MaaAssistantArknights
- name: Download latest version for server

View File

@@ -60,7 +60,7 @@ jobs:
uses: actions/checkout@v4
with:
show-progress: false
repository: Kengxxiao/ArknightsGameData_YoStar
repository: Kengxxiao/ArknightsGameData_Yostar
ref: main
path: .\tools\ResourceUpdater\x64\Release\Overseas
sparse-checkout: |

View File

@@ -54,17 +54,17 @@ jobs:
run: |
.\x64\Debug\Sample.exe
- name: Run tests - YoStarJP
- name: Run tests - YostarJP
run: |
.\x64\Debug\Sample.exe YoStarJP
.\x64\Debug\Sample.exe YostarJP
- name: Run tests - YoStarEN
- name: Run tests - YostarEN
run: |
.\x64\Debug\Sample.exe YoStarEN
.\x64\Debug\Sample.exe YostarEN
- name: Run tests - YoStarKR
- name: Run tests - YostarKR
run: |
.\x64\Debug\Sample.exe YoStarKR
.\x64\Debug\Sample.exe YostarKR
- name: Run tests - txwy
run: |

View File

@@ -1,53 +0,0 @@
name: Build Test for website
on:
push:
branches-ignore:
- "master"
- "dev"
paths:
- "docs/**"
- "website/**"
pull_request:
branches:
- "dev"
paths:
- "docs/**"
- "website/**"
workflow_dispatch:
jobs:
build-test:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 1
show-progress: false
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 9
run_install: false
- name: Install dependencies
run: pnpm install
working-directory: "./website"
- name: Build
run: pnpm run build
working-directory: "./website"
- name: Upload artifact to GitHub
uses: actions/upload-artifact@v4
with:
name: dist
path: "./website/dist"

View File

@@ -1,10 +1,19 @@
name: Deploy Website
name: MaaWebsite Workflow
on:
push:
branches:
- master
- dev
- "master"
- "dev"
paths:
- ".github/workflows/website-workflow.yml"
- "docs/**"
- "website/**"
pull_request:
paths:
- ".github/workflows/website-workflow.yml"
- "docs/**"
- "website/**"
workflow_dispatch:
inputs:
deploy-to-prod-env:
@@ -14,50 +23,59 @@ on:
type: boolean
jobs:
deploy:
build:
timeout-minutes: 20
runs-on: ubuntu-latest
env:
DO_NOT_TRACK: 1
steps:
- name: Check out code
uses: actions/checkout@v4
with:
show-progress: false
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
run_install: false
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 9
run_install: false
cache: pnpm
cache-dependency-path: './website/pnpm-lock.yaml'
- name: Install dependencies
run: pnpm install
run: pnpm install --frozen-lockfile
working-directory: "./website"
- name: Build
run: pnpm run build
working-directory: "./website"
- name: Upload artifact to GitHub
uses: actions/upload-artifact@v4
with:
name: dist
path: "./website/dist"
publish:
runs-on: ubuntu-latest
needs: build
if: github.event_name != 'pull_request'
steps:
- name: Download website artifacts
uses: actions/download-artifact@v4
with:
name: dist
- name: Set deployment environment
id: set-deployment-env
run: |
if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then
if [[ "${{ github.ref }}" == "refs/heads/master" ]]; then
echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV
else
echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV
fi
if [[ "${{ github.event_name }}" != "workflow_dispatch" && "${{ github.ref }}" == "refs/heads/master" ]] || [[ "${{ github.event.inputs.deploy-to-prod-env }}" == "true" ]]; then
echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV
else
if [[ "${{ github.event.inputs.deploy-to-prod-env }}" == "true" ]]; then
echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV
else
echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV
fi
echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV
fi
- name: Show environment
@@ -71,7 +89,7 @@ jobs:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "./website/dist"
app_location: "."
api_location: ""
skip_app_build: true
skip_api_build: true
@@ -85,7 +103,7 @@ jobs:
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
deployment_environment: dev
app_location: "./website/dist"
app_location: "."
api_location: ""
skip_app_build: true
skip_api_build: true

5
.linkspector.yml Normal file
View File

@@ -0,0 +1,5 @@
dirs:
- .
useGitIgnore: true
ignorePatterns:
- pattern: "^https?://127.0.0.1(:\\d+)?/"

View File

@@ -1,149 +1,15 @@
## v5.4.0
## v5.4.1
### 新增 | New
### 文档 | Docs
* 减少上报企鹅物流的重试次数和等待时间 (#9527) @soundofautumn
* 更新 243 极限效率一天四换排班表20240608 修订) (#9496) @bodayw
* 更新模板图片优化工具并优化模板图片 (#9459) @zzyyyl
* 在理智恢复满时推送信息 (#9285) @ABA2396
* 增加设置开机自启失败提示 @ABA2396
* MacGui 自定义填写招募次数 (#6182) @hguandl
* 增加保全、肉鸽、抄作业可配置截图最小间隔 @ABA2396
* 生息演算支持制造物品刷点数 (#9268) @ABA2396
* Mac Gui 支持连战次数、指定掉落 @hguandl
* 在特定环节执行启动前/后脚本 (#9153) @Linisdjxm
* 无法连接设备时尝试断开连接然后重新连接 (#9433) @lingting
* GPU 推理加速 @dantmnf @SherkeyXD
* SideStory「生路」活动导航 @ABA2396
* 增加暂停放技能和暂停撤退 (#9348) @Lancarus
### 改进 | Improved
* 适配PlayCover更新 @hguandl
* 优化日志输出控制 @ABA2396
* 在掉落不超出一页时,不额外滑动掉落列表及截图拼接 (#9260) @status102
* 优化萨米肉鸽自然之怒ew部署 (#9280) @Daydreamer114
* 更新macOS SDK版本 @hguandl
* 垂直滑动优化 @ABA2396
* 优化萨米ew部署策略 (#9249) @Daydreamer114
* 优化萨米肉鸽策略 (#9234)(#9232) @Lancarus
* 优化萨米肉鸽部分关卡策略 (#9224) @Lancarus
* 优化仓库识别结果展示,支持多语言显示 (#9434) @ABA2396
* 继续7904的重构 (#9409) @IzakyL
* 优化代码 @ABA2396
* 优化数据绑定逻辑,减少 AsstProxy 逻辑处理 @ABA2396
* 优化肉鸽选项显示逻辑 @ABA2396
* 增加更新时解压更新包失败日志,增加解压失败解决方案 @ABA2396
* 优化萨米肉鸽棘刺技能携带 (#9400) @Daydreamer114
* 优化热更新 @ABA2396
* 允许使用“feat!”表示重大更新 @zzyyyl
* 更新 py 回调 @ABA2396
* 优化关卡选择为剿灭时的逻辑判断 @ABA2396
* 优化肉鸽shopping策略 (#9332) @ntgmc
* 优化萨米肉鸽夺树者高台对boss输出策略 (#9294) @Daydreamer114
* 更新关卡列表与提示延迟至空闲时间,避免动态修改关卡列表 @ABA2396
### 修复 | Fix
* 五周年活动结束后单选领取月卡功能时报错 fix #9452 @ABA2396
* increase mask range for SkipThePreBattlePlotConfirm (#9446) @Constrat
* arkntools localization (#9438) @Tsuk1ko
* 公招没有使用足量的加急许可 @Toby-Shi-cloud
* “dorm_notstationed_enabled”参数默认值错误 @ABA2396
* 基建换班重试时只找缺少干员,已选干员无法入驻 @ABA2396
* 生息演算更新后无法选择日期 @ABA2396
* 选择休眠动作则结束后脚本没时间运行 @ABA2396
* constexpr 构造错误 @ABA2396
* 尝试修复水月肉鸽卡数据回溯 (#9276) @Lancarus
* 肉鸽部分选项在未显示时仍然生效 @ABA2396
* 尝试修复肉鸽编队错误,max page误判时仍然重置回最左边 (#9262) @Lancarus
* 公招 `m_first_tag` 匹配个数少于 3 个时的非预期情况 (#9258) @70CentsApple
* 尝试修复生息演算不进入下一天 (#9273) @HoshinoAyako
* 部分界面显示不全 @ABA2396
* 自然之怒.json格式错误 @Lancarus
* Mac Gui使用Swift 5.9以下的语法 @hguandl
* 修复Mac Gui在CI的编译错误 @hguandl
* unable to get rewards because ReceiveAward is too fast @Constrat
* 尝试修复萨米卡0干扰并优化密文板使用策略 (#9223) @Lancarus
* 肉鸽特殊情况下第三层boss门口退出 (#9222) @Lancarus
* call_command timeout时提前返回 std::nullopt @ABA2396
* type cast @status102
* intentionally leak onnxruntime objects to avoid crash @dantmnf
* 弹药类技能不能二次关闭的问题 (#9379) @HoshinoAyako
* 自动战斗跳过对话模板更新 (#9380) @HoshinoAyako
* 无法跳过关卡开始的剧情 @ABA2396
* add `/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR` @horror-proton
* 战斗列表禁用包含非法字符的关卡名添加 (#9363) @status102
* add AsstSetConnectionExtras to wine bridge @dantmnf
* check before destroy callback @dantmnf
* 修复时间比较报错的问题 @SherkeyXD
* 刷理智结束时有概率报错 @ChingCdesu
* fix endless loop in InfrastProductionTask @horror-proton
* fix coredump caused by screencap failure @horror-proton
* 保全文件命名错误 (#9322) @ntgmc
### 其他 | Other
* 简化Release日志输出 @ABA2396
* unlocks update options when UpdateCheck = false @Constrat
* update operator.md @HX3N @wallsman
* Improve error output in recruitment ResourceUpdater @Constrat
* 删除多余 style @ABA2396
* issue模板添加mumu反馈 (#8993) @Rbqwow @ABA2396
* fix wrong link maa_cli (#9264) @wlwxj @ntgmc
* 增加开技能最小间隔时间 @ABA2396
* 界面添加支援道具名称提示,传入内容为空白时自动切换为 荧光棒 @ABA2396
* Update 肉鸽辅助协议.md @Lancarus
* reduced filename check description for more info @Constrat
* Add trace log for scaled coordinates in ControlScaleProxy click & swipe @ABA2396
* no need to checkout sumodule after https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/9168 @Cryolitia
* 忽略括号周围resharper格式检查 @ABA2396
* 统一使用OnUIThreadAddLog默认在ui线程执行 @ABA2396
* Revert "fix: adding delay between swipe and click" (#9170) @Constrat
* format @status102
* fix license typo @Cryolitia
* 增加「实例已销毁」 (#9201) @aleck099
* add CITATION @Cryolitia
* add LICENSE.SPDX @Cryolitia
* update cn-mumu-report.yaml @Rbqwow
* fix missing includes @horror-proton
* use factory function instead of class @horror-proton
* bump zzyyyl/issue-checker from 1.7 to 1.8 @zzyyyl
* 修正生息演算相关打标签逻辑 @zzyyyl
* changelog生成器repo独立设置 @SherkeyXD
* move functions to TileCalc2 and TileDef @horror-proton
* Amiya new promotion in RoguelikeBattleTaskPlugin (#9377) @Manicsteiner
* use NativeLibrary for wine check @dantmnf
* Amiya new promotion (#9347) @178619
* 修正临时招募优先度描述错误 (#9344) @IzakyL
* StyleCop链接使用cdn @SherkeyXD
* website docs (#9287) @ABA2396 @Rbqwow @Constrat @wangl-cc @HX3N @SherkeyXD
* 修改win7相关问题描述&更新运行库 @Rbqwow
* fix a bad link @Rbqwow
* make i18n warnings show only once @Rbqwow
* 修复字体和评论区分类 @Rbqwow
### For Overseas
#### txwy
* 修正繁中服薩米肉鴿無法開始探索、密文板無法宣告的問題 (#9484) @momomochi987
* 繁中服「火山旅夢」活動導航 (#9497) @momomochi987
* 補充繁中服薩米肉鴿相關內容 (#9450) @momomochi987
* 初步適配繁中服薩米肉鴿 (#9429) @momomochi987
#### YostarEN
* YostarEN RS navigation @Constrat
* priority to Flint 点火石 trap instead of operator @Constrat
* ResourceUpdater temporary fix for trap_138_winstone having same as Flint @Constrat
* en 服在没有源石和理智药的情况下无法退出刷理智任务 @ABA2396
#### YostarJP
* YoStarJP ocr fix 锏 (#9447) @Manicsteiner
* YoStarJP RS navigation (#9427) @Manicsteiner
* YoStarJP roguelike ocr fix (#9426) @Manicsteiner
* YoStarJP roguelike ocr fix (#9203) @Manicsteiner
#### YostarKR
* YostarKR RS stage navigation @HX3N
* YoStarKR modified CharsNameOcrReplace @HX3N
* YoStar add translations for new feat @HX3N
* depot analyzer to detect multipliers for KR (#9343) @178619
* YoStarEN resolution warning on client switch (#9539) @Constrat @ABA2396

View File

@@ -19,6 +19,7 @@ option(USE_MAADEPS "use third-party libraries built by MaaDeps" ON)
option(USE_RANGE_V3 "use range-v3" OFF)
option(WITH_EMULATOR_EXTRAS "build with emulator extras" ${WIN32})
option(WITH_THRIFT "build with thrift" OFF)
option(WITH_ASST_DEBUG "build with ASST_DEBUG defined" OFF)
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/thrift-gen.cmake)
@@ -124,6 +125,10 @@ if(WITH_THRIFT)
target_link_libraries(MaaCore MaaThriftController)
endif(WITH_THRIFT)
if (WITH_ASST_DEBUG)
target_compile_definitions(MaaCore PRIVATE ASST_DEBUG)
endif ()
if(WIN32)
target_link_libraries(MaaCore ws2_32)
endif()

View File

@@ -91,7 +91,6 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=ppidl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Prts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=pwfi/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=qodana/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rcast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rdfend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rguard/@EntryIndexedValue">True</s:Boolean>

135
README.md
View File

@@ -1,3 +1,5 @@
<!-- markdownlint-disable -->
<div align="center">
<img alt="LOGO" src="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" width="256" height="256" />
@@ -21,7 +23,9 @@
</div>
<br>
[简体中文](https://maa.plus/docs/) | [繁體中文](https://maa.plus/docs/zh-tw/) | [English](https://maa.plus/docs/en-us/) | [日本語](https://maa.plus/docs/ja-jp/) | [한국어](https://maa.plus/docs/ko-kr/)
<!-- markdownlint-restore -->
[简体中文](https://maa.plus/docs/zh-cn/) | [繁體中文](https://maa.plus/docs/zh-tw/) | [English](https://maa.plus/docs/en-us/) | [日本語](https://maa.plus/docs/ja-jp/) | [한국어](https://maa.plus/docs/ko-kr/)
MAA 的意思是 MAA Assistant Arknights
@@ -29,32 +33,52 @@ MAA 的意思是 MAA Assistant Arknights
基于图像识别技术,一键完成全部日常任务!
绝赞更新中 ✿✿ヽ(°▽°)ノ✿<br>
绝赞更新中 ✿✿ヽ(°▽°)ノ✿
</div>
## 亮点功能
- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/)[一图流](https://ark.yituliu.cn/)
- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://maa.plus/docs/协议文档/基建排班协议.html)
- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit)[一图流](https://ark.yituliu.cn/survey/maarecruitdata)
- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~
- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示
- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings)
- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草
- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度
- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/)
- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/)[一图流](https://ark.yituliu.cn/)
- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://maa.plus/docs/zh-cn/protocol/base-scheduling-schema.html)
- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit)[一图流](https://ark.yituliu.cn/survey/maarecruitdata)
- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~
- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示
- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings)
- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草
- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度
- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/)
- 支持 C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 等多种接口,方便集成调用,自定义你的 MAA
话不多说,看图!
<!-- markdownlint-disable -->
![zh1](https://user-images.githubusercontent.com/9762652/259595058-1529207a-ef3d-4eca-a016-4759eb534c6e.png)
![zh2](https://user-images.githubusercontent.com/9762652/259594965-882b61e6-bf31-40c1-8c03-3f51f82a0d42.png)
![zh3](https://user-images.githubusercontent.com/9762652/259594874-07abdd9f-33f0-4446-8da3-799849bf7328.png)
![zh4](https://user-images.githubusercontent.com/9762652/259594649-c08b6558-7d17-45a8-9ba0-3ebc9a6f5589.png)
<details><summary>话不多说,看图!</summary>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/.vuepress/public/image/zh-cn/readme/1-dark.png">
<img alt="zh1" src="./docs/.vuepress/public/image/zh-cn/readme/1-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/.vuepress/public/image/zh-cn/readme/2-dark.png">
<img alt="zh2" src="./docs/.vuepress/public/image/zh-cn/readme/2-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/.vuepress/public/image/zh-cn/readme/3-dark.png">
<img alt="zh3" src="./docs/.vuepress/public/image/zh-cn/readme/3-light.png">
</picture>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./docs/.vuepress/public/image/zh-cn/readme/4-dark.png">
<img alt="zh4" src="./docs/.vuepress/public/image/zh-cn/readme/4-light.png">
</picture>
</details>
<!-- markdownlint-restore -->
## 下载地址
前往[官网](https://maa.plus)自动匹配镜像源并下载稳定版,或:
- [稳定版/公测版](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)
- [内测版](https://github.com/MaaAssistantArknights/MaaRelease/releases)
@@ -62,28 +86,28 @@ MAA 的意思是 MAA Assistant Arknights
### 基本说明
请参阅 [新手上路](https://maa.plus/docs/用户手册/新手上路.html) 与 [详细介绍](https://maa.plus/docs/用户手册/详细介绍.html)。
请参阅 [新手上路](https://maa.plus/docs/zh-cn/manual/newbie.html) 与 [功能介绍](https://maa.plus/docs/zh-cn/manual/introduction/)。
### 常见问题
- 软件一打开就闪退;
- 连接错误、不知道 adb 路径怎么填写;
- 连接错误、不知道 ADB 路径怎么填写;
- 连接成功了,但没反应;
- 如何连接自定义端口;
- 下载速度慢,且镜像站无法打开网页;
- 下载到一半提示“登陆”/“鉴权”;
- 连接正常,任务开始了,但是没反应。
请参阅 [常见问题](https://maa.plus/docs/用户手册/常见问题.html)
请参阅 [常见问题](https://maa.plus/docs/zh-cn/manual/faq.html)
### 外服支持
目前国际服(美服)、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足,很多功能并没有进行全面的测试,所以请自行体验。
若您遇到了 Bug或对某个功能有强需求欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA请参阅 [外服适配教程](#外服适配)
若您遇到了 Bug或对某个功能有强需求欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA请参阅 [外服适配教程](https://maa.plus/docs/zh-cn/develop/overseas-client-adaptation.html)
### CLI支持
### CLI 支持
MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/用户手册/CLI使用指南/cli-intro.html)
MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/zh-cn/manual/cli/intro.html)
## 加入我们
@@ -91,7 +115,7 @@ MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows
**目前项目组非常缺前端大佬,若您有相关经验,欢迎加入我们!**
- 全新框架:[MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework)
- 全新框架:[MaaFramework](https://github.com/MaaXYZ/MaaFramework)
- 全新 GUI[MaaX](https://github.com/MaaAssistantArknights/MaaX)
- [作业站](https://prts.plus) 前端:[maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend)
- [作业站](https://prts.plus) 后端:[MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter)
@@ -104,52 +128,45 @@ MAA 支持多国语言,并使用 Weblate 进行本地化管理。如果您通
MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)为准。
[![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/)
[![Weblate](https://weblate.maa-org.net/widget/maa/wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa/)
### Windows
### 参与开发
1. 下载预构建的第三方库
#### Windows
```cmd
python maadeps-download.py
```
请参阅 [开始开发](https://maa.plus/docs/zh-cn/develop/development.html)。
2. 使用 Visual Studio 2022 打开 `MAA.sln`,右键 `MaaWpfGui`,设为启动项目
3. VS 上方配置选择 `RelWithDebInfo` `x64` (如果编译 Release 包 或 ARM 平台,请忽略这步)
4. 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了)
5. (可选)若准备提交 PR建议启用 [clang-format 支持](https://maa.plus/docs/开发文档/开始开发.html#在-visual-studio-中启用-clang-format)
#### Linux | macOS
### Linux | macOS
请参阅 [Linux 编译教程](https://maa.plus/docs/zh-cn/develop/linux-tutorial.html)。
请参阅 [Linux 编译教程](https://maa.plus/docs/开发文档/Linux编译教程.html)
### API
#### API
- [C 接口](include/AsstCaller.h)[集成示例](src/Cpp/main.cpp)
- [Python 接口](src/Python/asst/asst.py)[集成示例](src/Python/sample.py)
- [Golang 接口](src/Golang/)[集成示例](src/Golang/maa/maa.go)
- [Dart 接口](src/Dart/)
- [Golang 接口](src/Golang)[集成示例](src/Golang/maa/maa.go)
- [Dart 接口](src/Dart)
- [Java 接口](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java)[集成示例](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java)
- [Java HTTP 接口](src/Java/Readme.md)
- [Rust 接口](src/Rust/src/maa_sys/)[HTTP 接口](src/Rust)
- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader)
- [Woolang 接口](src/Woolang/maa.wo)[集成示例](src/Woolang/main.wo)
- [集成文档](https://maa.plus/docs/协议文档/集成文档.html)
- [回调消息协议](https://maa.plus/docs/协议文档/回调消息协议.html)
- [任务流程协议](https://maa.plus/docs/协议文档/任务流程协议.html)
- [自动抄作业协议](https://maa.plus/docs/协议文档/战斗流程协议.html)
- [Rust 接口](src/Rust/src/maa_sys)[HTTP 接口](src/Rust)
- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader)
- [Woolang 接口](src/Woolang/maa.wo)[集成示例](src/Woolang/demo.wo)
- [集成文档](https://maa.plus/docs/zh-cn/protocol/integration.html)
- [回调消息协议](https://maa.plus/docs/zh-cn/protocol/callback-schema.html)
- [任务流程协议](https://maa.plus/docs/zh-cn/protocol/task-schema.html)
- [自动抄作业协议](https://maa.plus/docs/zh-cn/protocol/copilot-schema.html)
### 外服适配
#### 外服适配
请参阅 [外服适配教程](https://maa.plus/docs/开发文档/外服适配教程.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。
请参阅 [外服适配教程](https://maa.plus/docs/zh-cn/develop/overseas-client-adaptation.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。
### 想参与开发,但不太会用 GitHub?
#### 想参与开发,但不太会用 GitHub?
[GitHub Pull Request 流程简述](https://maa.plus/docs/开发文档/开始开发.html#github-pull-request-流程简述)
[GitHub Pull Request 流程简述](https://maa.plus/docs/zh-cn/develop/development.html#github-pull-request-流程简述)
### Issue bot
#### Issue bot
请参阅 [Issue bot 使用方法](https://maa.plus/docs/开发文档/IssueBot使用方法.html)
请参阅 [Issue Bot 使用方法](https://maa.plus/docs/zh-cn/develop/issue-bot-usage.html)
## 致谢
@@ -162,17 +179,17 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
- 机器学习加速器:[onnxruntime](https://github.com/microsoft/onnxruntime)
- ~~关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer)~~
- 地图格子识别:[Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos)
- C++ JSON库[meojson](https://github.com/MistEO/meojson.git)
- C++ JSON 库:[meojson](https://github.com/MistEO/meojson.git)
- C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator)
- ~~C++ base64编解码[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~
- ~~C++ base64 编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~
- C++ 解压压缩库:[zlib](https://github.com/madler/zlib)
- C++ Gzip封装[gzip-hpp](https://github.com/mapbox/gzip-hpp)
- 安卓触控事件器:[minitouch](https://github.com/openstf/minitouch)
- C++ Gzip 封装:[gzip-hpp](https://github.com/mapbox/gzip-hpp)
- 安卓触控事件器:[Minitouch](https://github.com/DeviceFarmer/minitouch)
- 安卓触控事件器:[MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)
- WPF MVVM框架[Stylet](https://github.com/canton7/Stylet)
- WPF控件库[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls)
- WPF MVVM 框架:[Stylet](https://github.com/canton7/Stylet)
- WPF 控件库:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls)
- C# 日志:[Serilog](https://github.com/serilog/serilog)
- C# JSON库[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime)
- C# JSON 库:[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime)
- ~~下载器:[aria2](https://github.com/aria2/aria2)~~
### 数据源

8
docs/.vuepress/client.ts Normal file
View File

@@ -0,0 +1,8 @@
import { defineClientConfig } from "vuepress/client";
import ImageGrid from "../components/ImageGrid.vue";
export default defineClientConfig({
enhance: ({ app }) => {
app.component("ImageGrid", ImageGrid);
},
});

View File

@@ -11,25 +11,25 @@ export default defineUserConfig({
port: 3001,
locales: {
"/": {
"/zh-cn/": {
lang: "zh-CN",
description: "开发者文档",
description: "文档",
},
"/zh-tw/": {
lang: "zh-TW",
description: "開發者文件",
description: "文件",
},
"/en-us/": {
lang: "en-US",
title: "Documents",
description: "Documentation",
},
"/ja-jp/": {
lang: "ja-JP",
description: "ドキュメン",
description: "ドキュメンテーション",
},
"/ko-kr/": {
lang: "ko-KR",
description: "문서",
description: "선적 서류 비치",
},
},
@@ -56,21 +56,21 @@ export default defineUserConfig({
[
"link",
{
href: "https://fonts.googleapis.com/css?family=Noto+Sans+SC:300,400,500,700,900&display=swap",
href: "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap",
rel: "stylesheet",
},
],
[
"link",
{
href: "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:400;500;700&display=swap",
href: "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@200..900&display=swap",
rel: "stylesheet",
},
],
[
"link",
{
href: "https://fonts.googleapis.com/css2?family=Jetbrains+Mono:wght@300,400,500,700;700&display=swap",
href: "https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap",
rel: "stylesheet",
},
],

View File

@@ -9,17 +9,17 @@ export const enusNavbar = navbar([
{
text: "User Manual",
icon: "mdi:user",
link: "/en-us/1.1-USER_MANUAL",
link: "/en-us/manual/",
},
{
text: "Development Docs",
icon: "ph:code-bold",
link: "/en-us/2.1-LINUX_TUTORIAL",
link: "/en-us/develop/",
},
{
text: "Protocol Docs",
icon: "basil:document-solid",
link: "/en-us/3.1-INTEGRATION",
link: "/en-us/protocol/",
},
{
text: "MAA Website",

View File

@@ -9,17 +9,17 @@ export const jajpNavbar = navbar([
{
text: "使用説明",
icon: "mdi:user",
link: "/ja-jp/使用説明",
link: "/ja-jp/manual/",
},
{
text: "開発関連",
icon: "ph:code-bold",
link: "/ja-jp/開発関連",
link: "/ja-jp/develop/",
},
{
text: "プロトコルドキュメント",
icon: "basil:document-solid",
link: "/ja-jp/プロトコルドキュメント",
link: "/ja-jp/protocol/",
},
{
text: "MAA 公式サイト",

View File

@@ -9,17 +9,17 @@ export const kokrNavbar = navbar([
{
text: "사용자 설명서",
icon: "mdi:user",
link: "/ko-kr/사용자설명서",
link: "/ko-kr/manual/",
},
{
text: "개발 문서",
icon: "ph:code-bold",
link: "/ko-kr/개발문서",
link: "/ko-kr/develop/",
},
{
text: "프로토콜 문서",
icon: "basil:document-solid",
link: "/ko-kr/스키마",
link: "/ko-kr/protocol/",
},
{
text: "MAA 공식 홈페이지",

View File

@@ -4,22 +4,22 @@ export const zhcnNavbar = navbar([
{
text: "主页",
icon: "ic:round-home",
link: "/",
link: "/zh-cn/",
},
{
text: "用户手册",
icon: "mdi:user",
link: "/用户手册",
link: "/zh-cn/manual/",
},
{
text: "开发文档",
icon: "ph:code-bold",
link: "/开发文档",
link: "/zh-cn/develop/",
},
{
text: "协议文档",
icon: "basil:document-solid",
link: "/协议文档",
link: "/zh-cn/protocol/",
},
{
text: "MAA 官网",

View File

@@ -9,17 +9,17 @@ export const zhtwNavbar = navbar([
{
text: "用戶說明書",
icon: "mdi:user",
link: "/zh-tw/1.1-詳細介紹",
link: "/zh-tw/manual/",
},
{
text: "開發文件",
icon: "ph:code-bold",
link: "/zh-tw/2.1-Linux編譯教學",
link: "/zh-tw/develop/",
},
{
text: "協議文件",
icon: "basil:document-solid",
link: "/zh-tw/3.1-集成文件",
link: "/zh-tw/protocol/",
},
{
text: "MAA 官網",

View File

@@ -41,43 +41,6 @@ export default {
}
}
},
'/zh-tw/': {
placeholder: '搜尋',
translations: {
button: {
buttonText: '搜尋',
},
modal: {
searchBox: {
resetButtonTitle: '清除查詢條件',
cancelButtonText: '取消',
},
startScreen: {
recentSearchesTitle: '搜尋歷史',
noRecentSearchesText: '沒有搜尋歷史',
saveRecentSearchButtonTitle: '保存至搜尋歷史',
removeRecentSearchButtonTitle: '從搜尋歷史中移除',
favoriteSearchesTitle: '收藏',
removeFavoriteSearchButtonTitle: '從收藏中移除',
},
errorScreen: {
titleText: '無法獲取結果',
helpText: '你可能需要檢查你的網路連接',
},
footer: {
selectText: '選擇',
navigateText: '切換',
closeText: '關閉',
searchByText: '搜尋提供者',
},
noResultsScreen: {
noResultsText: '無法找到相關結果',
suggestedQueryText: '你可以嘗試查詢',
reportMissingResultsText: '你認為該查詢應該有結果?',
reportMissingResultsLinkText: '點擊反饋',
},
}
}
},
'/en-us/': {
placeholder: 'Search',
@@ -117,8 +80,4 @@ export default {
}
}
},
'/ja-jp/': {
placeholder: '検索する',
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -10,127 +10,23 @@ export const enusSidebar = sidebar({
{
text: "User Manual",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: [
{
text: "Beginner's guide",
icon: "ri:guide-fill",
link: "/en-us/1.0-BEGINNER'S_GUIDE",
},
{
text: "Introduction",
icon: "mdi:information-outline",
link: "/en-us/1.1-USER_MANUAL",
},
{
text: "FAQs",
icon: "ph:question-fill",
link: "/en-us/1.2-FAQ",
},
{
text: "Emulator Supports",
icon: "mingcute:laptop-fill",
collapsible: true,
children: [
{
text: "Windows",
icon: "ri:windows-fill",
link: "/en-us/1.3-EMULATOR_SUPPORTS",
},
{
text: "Mac",
icon: "basil:apple-solid",
link: "/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC",
},
{
text: "Linux",
icon: "teenyicons:linux-alt-solid",
link: "/en-us/1.5-EMULATOR_SUPPORTS_FOR_LINUX",
},
],
},
{
text: "User Manual For CLI",
icon: "material-symbols:terminal",
prefix: "user_manual_for_cli/",
collapsible: true,
children: "structure",
}
],
children: "structure",
},
{
text: "Development Docs",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: [
{
text: "Linux Compilation Tutorial",
icon: "teenyicons:linux-alt-solid",
link: "/en-us/2.1-LINUX_TUTORIAL",
},
{
text: "Development",
icon: "iconoir:developer",
link: "/en-us/2.2-DEVELOPMENT",
},
{
text: "IssueBot Usage",
icon: "bxs:bot",
link: "/en-us/2.3-ISSUE_BOT_USAGE",
},
{
text: "Web PR Tutorial",
icon: "mingcute:git-pull-request-fill",
link: "/en-us/2.4-PURE_WEB_PR_TUTORIAL",
},
{
text: "Overseas Clients Adaptation",
icon: "ri:earth-fill",
link: "/en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION",
},
],
children: "structure",
},
{
text: "Protocol Docs",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: [
{
text: "Integration",
icon: "bxs:book",
link: "/en-us/3.1-INTEGRATION",
},
{
text: "Callback Schema",
icon: "material-symbols:u-turn-left",
link: "/en-us/3.2-CALLBACK_SCHEMA",
},
{
text: "Copilot Schema",
icon: "ph:sword-bold",
link: "/en-us/3.3-COPILOT_SCHEMA",
},
{
text: "Task Schema",
icon: "material-symbols:task",
link: "/en-us/3.4-TASK_SCHEMA",
},
{
text: "Integrated Strategy Schema",
icon: "ri:game-fill",
link: "/en-us/3.5-INTEGRATED_STRATEGY_SCHEMA",
},
{
text: "Infrastructure Scheduling Schema",
icon: "material-symbols:view-quilt-rounded",
link: "/en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA",
},
{
text: "Security Presence Schema",
icon: "game-icons:prisoner",
link: "/en-us/3.7-SECURITY_PRESENCE_SCHEMA",
},
],
children: "structure",
},
],
});

View File

@@ -10,44 +10,21 @@ export const jajpSidebar = sidebar({
{
text: "使用説明",
icon: "mdi:user",
prefix: "使用説明/",
prefix: "manual/",
collapsible: true,
children: [
{
text: "詳細説明",
icon: "mdi:information-outline",
link: "詳細説明",
},
{
text: "よくある質問",
icon: "ph:question-fill",
link: "よくある質問",
},
{
text: "エミュレータのサポート",
icon: "mingcute:laptop-fill",
prefix: "エミュレータのサポート/",
collapsible: true,
children: "structure",
},
{
text: "CLIユーザーガイド",
icon: "material-symbols:terminal",
link: "CLIユーザーガイド",
},
],
children: "structure",
},
{
text: "開発関連",
icon: "ph:code-bold",
prefix: "開発関連/",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "プロトコルドキュメント",
icon: "basil:document-solid",
prefix: "プロトコルドキュメント/",
prefix: "protocol/",
collapsible: true,
children: "structure",
},

View File

@@ -10,139 +10,23 @@ export const kokrSidebar = sidebar({
{
text: "사용자 설명서",
icon: "mdi:user",
prefix: "사용자설명서/",
prefix: "manual/",
collapsible: true,
children: [
{
text: "기능",
icon: "mdi:information-outline",
link: "사용자설명서",
},
{
text: "자주 묻는 질문",
icon: "ph:question-fill",
link: "FAQ",
},
{
text: "플랫폼 별 지원",
icon: "mingcute:laptop-fill",
prefix: "플랫폼/",
collapsible: true,
children: [
{
text: "Windows 지원",
icon: "ri:windows-fill",
link: "1.Windows",
},
{
text: "Mac 지원",
icon: "basil:apple-solid",
link: "2.Mac",
},
{
text: "Linux 지원",
icon: "teenyicons:linux-alt-solid",
link: "3.Linux",
},
{
text: "Android 지원",
icon: "mingcute:android-fill",
link: "4.Android",
},
],
},
{
text: "CLI 가이드",
icon: "material-symbols:terminal",
link: "CLI",
},
],
children: "structure",
},
{
text: "개발 관련",
icon: "ph:code-bold",
prefix: "개발문서/",
prefix: "develop/",
collapsible: true,
children: [
{
text: "개발 환경 구축",
icon: "iconoir:developer",
link: "1.개발시작",
},
{
text: "Linux 튜토리얼",
icon: "teenyicons:linux-alt-solid",
link: "2.Linux가이드",
},
{
text: "웹 기반 PR 가이드",
icon: "mingcute:git-pull-request-fill",
link: "3.웹기반PR",
},
{
text: "IssueBot 사용방법",
icon: "bxs:bot",
link: "4.IssueBot",
},
{
text: "해외 클라이언트 현지화",
icon: "ri:earth-fill",
link: "5.해외클라이언트현지화",
},
{
text: "문서 작성 가이드",
icon: "jam:write-f",
link: "6.문서가이드",
},
],
children: "structure",
},
{
text: "프로토콜 문서",
icon: "basil:document-solid",
prefix: "스키마/",
prefix: "protocol/",
collapsible: true,
children: [
{
text: "통합문서",
icon: "bxs:book",
link: "1.통합문서",
},
{
text: "콜백 스키마",
icon: "material-symbols:u-turn-left",
link: "2.콜백",
},
{
text: "전투 스키마",
icon: "ph:sword-bold",
link: "3.전투",
},
{
text: "작업 스키마",
icon: "material-symbols:task",
link: "4.작업",
},
{
text: "통합전략 스키마",
icon: "ri:game-fill",
link: "5.통합전략",
},
{
text: "기반시설 스키마",
icon: "material-symbols:view-quilt-rounded",
link: "6.기반시설",
},
{
text: "보안파견 스키마",
icon: "game-icons:prisoner",
link: "7.보안파견",
},
{
text: "원격제어 스키마",
icon: "mdi:remote-desktop",
link: "8.원격제어",
},
],
children: "structure",
},
],
});

View File

@@ -1,60 +1,30 @@
import { sidebar } from "vuepress-theme-hope";
export const zhcnSidebar = sidebar({
"/": [
"/zh-cn/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/",
link: "/zh-cn/",
},
{
text: "用户手册",
icon: "mdi:user",
prefix: "用户手册/",
prefix: "manual/",
collapsible: true,
children: [
{
text: "新手上路",
icon: "ri:guide-fill",
link: "新手上路",
},
{
text: "功能介绍",
icon: "mdi:information-outline",
link: "详细介绍",
},
{
text: "常见问题",
icon: "ph:question-fill",
link: "常见问题",
},
{
text: "模拟器和设备支持",
icon: "mingcute:laptop-fill",
prefix: "模拟器和设备支持/",
collapsible: true,
children: "structure",
},
{
text: "CLI使用指南",
icon: "material-symbols:terminal",
prefix: "user_manual_for_cli/",
collapsible: true,
children: "structure",
},
],
children: "structure",
},
{
text: "开发文档",
icon: "ph:code-bold",
prefix: "开发文档/",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "协议文档",
icon: "basil:document-solid",
prefix: "协议文档/",
prefix: "protocol/",
collapsible: true,
children: "structure",
},

View File

@@ -10,120 +10,23 @@ export const zhtwSidebar = sidebar({
{
text: "用戶說明書",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: [
{
text: "功能介绍",
icon: "mdi:information-outline",
link: "/zh-tw/1.1-詳細介紹",
},
{
text: "常見問題",
icon: "ph:question-fill",
link: "/zh-tw/1.2-常見問題",
},
{
text: "模擬器支援",
icon: "mingcute:laptop-fill",
collapsible: true,
children: [
{
text: "Windows",
icon: "ri:windows-fill",
link: "/zh-tw/1.3-模擬器支援",
},
{
text: "Mac",
icon: "basil:apple-solid",
link: "/zh-tw/1.4-Mac模擬器支援",
},
{
text: "Linux",
icon: "teenyicons:linux-alt-solid",
link: "/zh-tw/1.5-Linux模擬器支援",
},
],
},
{
text: "CLI使用說明",
icon: "material-symbols:terminal",
link: "/zh-tw/1.6-CLI使用說明",
},
],
children: "structure",
},
{
text: "開發文件",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: [
{
text: "Linux編譯教學",
icon: "teenyicons:linux-alt-solid",
link: "/zh-tw/2.1-Linux編譯教學",
},
{
text: "開發相關",
icon: "iconoir:developer",
link: "/zh-tw/2.2-開發相關",
},
{
text: "IssueBot使用方法",
icon: "bxs:bot",
link: "/zh-tw/2.3-IssueBot使用方法",
},
{
text: "純網頁端PR教學",
icon: "mingcute:git-pull-request-fill",
link: "/zh-tw/2.4-純網頁端PR教學",
},
{
text: "外服適配教學",
icon: "ri:earth-fill",
link: "/zh-tw/2.5-外服適配教學",
},
],
children: "structure",
},
{
text: "協議文件",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: [
{
text: "集成文件",
icon: "bxs:book",
link: "/zh-tw/3.1-集成文件",
},
{
text: "回呼訊息協議",
icon: "material-symbols:u-turn-left",
link: "/zh-tw/3.2-回呼訊息協議",
},
{
text: "戰鬥流程協議",
icon: "ph:sword-bold",
link: "/zh-tw/3.3-戰鬥流程協議",
},
{
text: "任務流程協議",
icon: "material-symbols:task",
link: "/zh-tw/3.4-任務流程協議",
},
{
text: "肉鴿輔助協議",
icon: "ri:game-fill",
link: "/zh-tw/3.5-肉鴿輔助協議",
},
{
text: "基建排班協議",
icon: "material-symbols:view-quilt-rounded",
link: "/zh-tw/3.6-基建排班協議",
},
{
text: "保全派駐協議",
icon: "game-icons:prisoner",
link: "/zh-tw/3.7-保全派駐協議",
},
],
children: "structure",
},
],
});

View File

@@ -1,16 +0,0 @@
.home {
.vp-hero-info-wrapper {
min-height: 600px;
}
}
.catalog-display-container {
overflow-x: visible;
overflow-y: auto;
max-height: 75vh;
margin: 0.5rem;
border-radius: 0.5rem;
overflow-wrap: break-word;
}

View File

@@ -11,12 +11,12 @@ export default hopeTheme({
docsDir: "/docs",
locales: {
"/": {
"/zh-cn/": {
navbar: zhcnNavbar,
sidebar: zhcnSidebar,
displayFooter: false,
metaLocales: {
editLink: "在Github上编辑此页面",
editLink: "在 Github 上编辑此页面",
},
},
"/zh-tw/": {
@@ -24,7 +24,7 @@ export default hopeTheme({
sidebar: zhtwSidebar,
displayFooter: false,
metaLocales: {
editLink: "在Github上編輯此頁面",
editLink: "在 Github 上編輯此頁面",
},
},
"/en-us/": {
@@ -40,7 +40,7 @@ export default hopeTheme({
sidebar: jajpSidebar,
displayFooter: false,
metaLocales: {
editLink: "このページをGithubで編集する",
editLink: "このページを Github で編集する",
},
},
"/ko-kr/": {
@@ -48,13 +48,11 @@ export default hopeTheme({
sidebar: kokrSidebar,
displayFooter: false,
metaLocales: {
editLink: "Github에서 이 페이지를 편집",
editLink: "Github 에서 이 페이지를 편집",
},
},
},
sidebarIcon: true,
plugins: {
activeHeaderLinks: false,
@@ -62,10 +60,10 @@ export default hopeTheme({
provider: "Giscus",
repo: "MaaAssistantArknights/maa-website",
repoId: "R_kgDOHY7Gyg",
category: "General",
categoryId: "DIC_kwDOHY7Gys4CYefe",
mapping: "title",
strict: false,
category: "Comments",
categoryId: "DIC_kwDOHY7Gys4CgoVH",
mapping: "pathname",
strict: true,
},
copyright: {
@@ -90,15 +88,89 @@ export default hopeTheme({
tabs: true,
tasklist: true,
vPre: true,
component: true,
},
prismjs: {
light: "one-dark",
dark: "nord",
shiki: {
themes: {
light: "light-plus",
dark: "nord",
}
},
sitemap: true,
notice: [
{
path: "/zh-tw/",
title: "翻译警告",
content: "MAA 的文檔以簡體中文為主,其他語言的文檔可能品質低或尚未翻譯,請諒解。",
fullscreen: true,
confirm: true,
showOnce: true,
actions: [
{
text: "我知道了",
type: "primary",
},
{ text: "前往簡體中文",
link: "/zh-cn/",
},
],
},
{
path: "/en-us/",
title: "Translation Warning",
content: "MAA's documents are mainly in Simplified Chinese. Documents in other languages may be of low quality or not yet translated. Please understand.",
fullscreen: true,
confirm: true,
showOnce: true,
actions: [
{
text: "Okay",
type: "primary",
},
{ text: "Take me to zh-CN",
link: "/zh-cn/",
},
],
},
{
path: "/ja-jp/",
title: "翻訳に関する警告",
content: "MAA のドキュメントは主に簡体字中国語で書かれており、他の言語のドキュメントは低品質であるか、翻訳されていない可能性がありますので、ご了承ください。",
fullscreen: true,
confirm: true,
showOnce: true,
actions: [
{
text: "OK",
type: "primary",
},
{ text: "中国語サイトへ行く",
link: "/zh-cn/",
},
],
},
{
path: "/ko-kr/",
title: "번역 경고",
content: "MAA의 문서는 주로 중국어 간체로 되어 있습니다. 다른 언어로 된 문서는 번역이 이상하거나, 번역이 되어있지 않을 수 있습니다.",
fullscreen: true,
confirm: true,
showOnce: true,
actions: [
{
text: "OK",
type: "primary",
},
{ text: "중국어 간체로 이동",
link: "/zh-cn/",
},
],
},
],
},
});

View File

@@ -58,3 +58,5 @@
<!-- markdownlint-disable-file -->

View File

@@ -0,0 +1,52 @@
<template>
<div>
<img v-for="src of displayImageList" class="image" :src="src" alt="" />
</div>
</template>
<script lang="ts">
import { PropType, defineComponent } from "vue";
import { withBase } from "vuepress/client";
export default defineComponent({
props: {
imageList: Array as PropType<
Array<{ light: string; dark: string } | string>
>,
},
computed: {
displayImageList() {
return this.imageList.map((item) => {
const src =
typeof item === "string"
? item
: this.$isDarkmode
? item.dark
: item.light;
return withBase(src);
});
},
},
});
</script>
<style scoped>
.image {
box-sizing: border-box;
width: 25%;
padding: 9px;
border-radius: 16px;
}
@media (max-width: 719px) {
.image {
width: 50%;
}
}
@media (max-width: 419px) {
.image {
width: 100%;
}
}
</style>

View File

@@ -1,257 +0,0 @@
# MAA User Manual
## Features
### Operations
- If the stage you need is not available in the selection, please choose "Current/Previous" in MAA and manually locate the stage in the game, making sure the screen stays on the stage detail page with the **Start** and **Delegate** buttons available.
- If you are not on this page, `Current/Previous` 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 `Manually input stage name` in `Task Settings` - `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 should be `CE-6` or `LS-6` even if you have not unlocked it yet. In that case, the program will automatically switch to corresponding stage 5.
- Skill Summary, Shop Voucher, and Carbon Stages 5. The input also should be `CA-5`, `AP-5`, and `SK-5` respectively.
- Chip stages. The input should be complete with stage number, such as `PR-A-1`.
- Annihilation. The input should be `Annihilation`.
- Certain side story stages. This includes `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. Prompt will be shown in 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`.
::: details Example
![Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/56174894/e94a0842-a42f-449d-9f2e-f2339175cbdd)
:::
- Fight options include `Use Sanity Potion + Use Originium`, `Perform Battles` and `Material`, you can specific any of them. The fight tasks stops once one of the specifications is met.
- `Use Sanity Potion` specifies the number of sanity potions to use at most. Multiple medicines may be used at a time.
- `Use Originium` specifies the number of Originium to use at most. It is used one at a time. When using the Origin Stone to restore sanity, if you still have the Sanity Potion, the stone will not be used.
- `Perform Battles` specifies the number of battles to perform at most.
- `Material` specifies the number of materials to collect.
| Example | Use Sanity Potion | Use Originium | Perform Battles | Material | Result |
|:-------:|:-----------------:|:-------------:|:---------------:|:--------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| A | 999 | 10 | 1 | x | The AI will attempt to use sanity potions and/or originium until **one** full run is completed, satisfying the condition `Perform Battles: 1`. If there are not enough sanity potions, originium, or initial sanity to start, the AI will stop without starting the run. |
| B | x | x | 100 | x | The AI will attempt to complete 100 runs, but if all available sanity is used up (which may be less than 100 runs), and the conditions `Use Sanity Potion: No` and `Use Originium: No` are met, the AI will stop without completing the full 100 runs. |
| C | 1 | x | 100 | x | The AI will attempt to complete 100 runs, using at most one sanity potion. If the AI uses a sanity potion and runs out of sanity during the process, and the conditions `Use Sanity Potion: 1` and `Use Originium: No` are met, the AI will stop without completing the full 100 runs. |
| D | 999 | x | 100 | 3 Orirock| The AI will attempt to complete 100 runs, using up to 999 sanity potions. If during the process, the AI accumulates 3 Orirock cubes, satisfying the condition `Material: 3 Orirock`, the AI will stop without completing the full 100 runs. |
- Note that `Material` and `Stage` are independent options which means the program is not going to automatically navigate the the stage for the specified material. You still to mannually configure the stage option.
- `Delegate` will be automatically selected if not already in case you forget to do so.
- Material drops are automatically recognized and printed to the program log. The data also gets uploaded to [Penguin Stats](https://penguin-stats.io/). You can also manually set your Penguin Stats user ID in the settings.
- After disconnection or flashing 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.
- A level up situation can be automatically handled as well as a failed delegation in which case this time of the operation will be given up.
### Infrastructure
#### Shifting 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, etc. for different operators.
#### Morale Threshold for Working in Infrastructure
- Recognizes the percentage of the Morale bar. When Morale is below some threshold, the operator will be moved to the dormitory.
#### Note
- The shifting strategy is based on the optimal solution within a single facility instead of multiple facilities. Combination such as: `Shamare-Tequila`, `Vermeil-Scene` within a single facility can be recognized correctly; while combination like `Rosmontis`, `Pinus Sylvestris` among facilities is 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 corresponding fraction will be selected when only one Clue is needed Reception Room; otherwise general operators will be chosen.
- Reception Room will send out Clues only when your Clues are full. Three Clues will be send out at most. You can edit `SelectClue` - `maxTimes` field in `resource/tasks.json` to edit number of Clues sent if you want.
- 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 not entering the dormitory as well.
- Due to the complexity of 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 notice if there is "Operator conflict" warnings on the UI, and double check the Infrastructure to shift manually (e.g. some facilities may not have any operator).
#### Custom infrastructure shift change (test function)
- The experts of Yituliu with a one-picture flow have helped to create a shift generator, which can be referenced in the documentation.
- Several sets of extremely efficient tasks are built-in under the MAA folder `/resource/custom_infrast/`, which can be used as a reference. (Fully upgraded operators at elite 2 level can try to use them directly.)
### Credit Store
- Automatically visit friends to obtain credit points.
- With the help of Warfarin's 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.
- You can modify the automatic combat flow of OF-1 by editing `resource\copilot\OF-1_credit_fight.json` (it is generally not recommended to modify).
- It does not take effect when the stage selection is set to `current/last`.
### Integrated Strategy (I.S.) Support
- Please select the theme you want to explore in the MAA `Task Settings` - `Auto I.S.`, otherwise there may be problems due to the default selection of the latest theme.
- Please pin the corresponding I.S. theme to the terminal in the game.
- If there is exploration of non-target themes (such as if you plan to use MAA to brush Mizuki, but there is still an unfinished exploration of Phantom), please end it manually.
- If MAA gets stuck/repeatedly enters and exits on the difficulty selection interface, please manually select the difficulty before starting this function.
- In the settings, you can choose the team, starting operator (only one operator name), etc.
- 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 collectibles.
- It supports reconnection after disconnection and supports continuing to return to brush after 4 a.m. update.
- If the scraping cannot be completed during the battle, all ground units will be automatically withdrawn after more than 5 minutes; if it exceeds 6 minutes, the current battle will be automatically abandoned without getting stuck.
- If the task gets stuck, it will automatically abandon the exploration and retry. 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~
### Share Your Tasks
- Welcome to share your tasks with [www.抄作业.com](https://www.抄作业.com), or [www.prts.plus](https://www.prts.plus)!
#### Load Tasks
- Please run it on the screen with `Start Operation` button.
- If you need to make your own build manually, turn off `auto build` to do so.
- Remember to like the tasks that you think helpful!
![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa)
#### Create Tasks
- A tool for creating tasks is provided in the directory of MAA. See also: [Copilot Schema](3.3-COPILOT_SCHEMA.md) for help.
- How to get map coordinates: start an operation after filling in `stage_name`. A file named `map.png` will be generated for your reference. Or you can refer to [PRTS.map](https://map.ark-nights.com/), with the `coordinates` set to `MAA` mode.
- Drill plan is recommended for testing.
- Welcome to share your tasks with [www.抄作业.com](https://www.抄作业.com), or [www.prts.plus](https://www.prts.plus)!
- It is recommended to write your own name, video walkthrough URL, or other things that you think helpful in the description.
### Task Video Recognition
- Drag and drop the video file to the `Copilot` section and click `Start` to initialize the video recognition.
- 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.
### Recruitment Recognition
- Auto-recruitment and recruitment recognition are two different features!
- Auto-recruitment supports using `Expedited Plan` to make it fully automated! Please enable `Auto use Expedited` in `Task Settings` - `Recruit` , and modify `Recruit max times`.
- Pop-up notification when 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.
### Depot Recognition (test function)
- Please start with the `Upgrade materials` screen. Currently, exporting is only supported to [penguin-stats](https://penguin-stats.io/), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/table). More useful features may be added in the future.
- Please feel free to contact us if you hope to integrate with our JSON schema.
## Setting Introduction
In addition to the `Settings` tab, there are also `Task Settings` in Windows MAA. Click the `gear` on the right side of the task list of `Farming` to switch between different task settings in the farming interface.
Note that clicking `General` `Advanced` will also switch `Task Settings`.
### Custom Connection
#### Obtain adb path
- Method 1: Download adb and set up connection manually
- (Only for Windows users) Download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it. It is recommended to unzip to the MAA directory.
- Go to the "Settings" - "Connection Settings" of the software, select the file path of `adb.exe`, fill in the adb address (IP + port need to be filled in, such as `127.0.0.1:5555`), and select the emulator type.
- Method 2: Find the adb execution port of the emulator and connect
- For emulators that come with adb, you can find the location of the adb executable file according to the [Confirm adb address section](1.2-FAQ.md#Method-1-Confirm-that-the-adb-and-connection-address-are-correct).
- Mac Android emulators are generally installed in the `/Application/` directory. Right-click on `[emulator name].app` and select "Show Package Contents". Find the adb executable file in the directory.
#### Get the port number
- Method 1: Use the adb command to view the running port directly
**Replace adb in the command below with the name of the found adb executable file**, and then execute:
```sh
# mac/linux/windows cmd
adb devices
# windows PowerShell
.\adb devices
```
After most emulator adb execution commands are run, they will be output in the following form, where `[ADBPORT]` is a specific number:
```sh
List of devices attached
127.0.0.1:[ADBPORT] device
# may be more output like the above one
```
Use `127.0.0.1:[ADBPORT]` as the connection address (replace `[ADBPORT]` with the actual number).
- Method 2: Use system command to check emulator debugging port
If the output of the adb command does not display the port information in the form of `127.0.0.1:[port]`, you can use the following method to check:
1. First, run the adb executable program once (need to start the adb daemon process), and run the Arknights emulator application.
2. Then use the system command to check the port information of the adb process.
Windows Command
You can use `win` + `R` to open the command line by entering `cmd`, and use the following command to check:
```sh
for /F "tokens=1,2" %A in ('"tasklist | findstr "adb""') do ( ^
netstat -ano | findstr "%B" |)
```
Mac / Linux Command
Enter the following command in the terminal after starting the emulator:
```sh
tmp=$(sudo ps aux | grep "[a]db" | awk '{print $2}') && \
sudo netstat -vanp tcp | grep -e "\b$tmp"
```
The output will be in the following format, where `[PID]` is the actual process number of the adb, `[ADBPORT]` is the remote connection port of the target emulator adb, and `[localport]` is the local address of the process, which does not need to be concerned (there will also be other irrelevant indicators in the Mac operation result):
```sh
> ( netstat -ano | findstr "[PID]" )
TCP 127.0.0.1:[localport] 127.0.0.1:0.0.0.0 LISTENING [PID]
TCP 127.0.0.1:[localport] 127.0.0.1:[ADBPORT] ESTABLISHED [PID]
# ...
# maybe more output like the above line
```
Use `127.0.0.1:[ADBPORT]` (replace `[ADBPORT]` with the actual number) in the results as the actual connection address of the emulator adb and fill it in `Settings` - `Connection Settings` - `Connection Address`.
### Automatically Start Multiple Emulators
- 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.
- Perform multiple operations by attaching commands to `HD-Player.exe`.
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`.
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.
### 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 path to the batch file, which should have a `.bat` extension.
## Miscellaneous
- Tasks order can be changed on the UI. So can the shifting order in the infrastructure.
- Almost all configuration changes will be saved automatically, except for options containing an *.
- 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, in order to reduce CPU and memory usage as much as possible.
- Our software supports auto-update ✿✿ヽ(°▽°)ノ✿ Beta-testers can try beta versions, which updates faster and less buggy (maybe).
- If auto-update fails, you can download manually and put the ZIP file under the same directory. The update will start automatically.

View File

@@ -1,189 +0,0 @@
# Emulator Supports
## ✅ [Bluestacks-CN 5](https://www.bluestacks.cn/)
Fully compatible. Need to turn on `Settings` - `Engine Settings` - `Allow ADB connection`.
## ✅ [Bluestacks 5](https://www.bluestacks.com/) (Recommended👍)
Fully compatible. Need to turn on `Settings` - `Advanced` - `Android Debug Bridge`.
## ✅ [Bluestacks 5 Hyper-V Version](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11-)
Compatible.
- Turn on `Settings` - `Advanced` - `Android Debug Bridge`.
- Bluestack Hyper-V port changes frequently. Here is a simple hack:
1. Find `bluestacks.conf` in the data location of the emulator. (Default is `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`)
2. If you are using MAA for the first time, Launch it, which generates `gui.json`.
3. **Exit** MAA, **then** open the `gui.json`, and add a new field `Bluestacks.Config.Path`, with the value of the full path of `bluestacks.conf` (backslashes should be escaped like `\\`).
For example: (suppose the file is at `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`)
```json
{
"Configurations": {
"Default": {
"Bluestacks.Config.Path":"C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf",
// ...
}
}
}
```
4. LinkStart!
- If you need to run multiple emulators (ignore this step if you do not need to do so), you can change the keywords for MAA to detect configuration files.
Add field `Bluestacks.Config.Keyword` following the steps above
Example:
```json
"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port",
```
## ✅ [Nox](https://en.bignox.com/)
Fully compatible.
## ✅ [Nox Android 9](https://en.bignox.com/)
Fully compatible.
## ⚠️ [MuMu](https://www.mumuglobal.com/)
Compatible but:
- Requires MAA to "Run as Administrator" to get ADB path and address (since MuMu runs as admin).
- You can also fill in the ADB path and address if you do not wish to run as admin.
- It is not recommended to use the default odd resolutions of MuMu, it is better to change to mainstream resolutions such as 1280x720, 1920x1080, 2560x1440, etc.
- MuMu uses the same adb port for multi-instance, so multi-instance is not supported.
## 🚫 MuMu Mobile Game Assistant
Incompatible. The ADB port is unavailable.
## ⚠️ [MuMu emulator X (Android 12)](https://www.mumuglobal.com/) (most smooth👍)
Compatible but:
- This emulator is still in the testing phase and it is uncertain whether unknown issues will occur.
- Requires MAA to "Run as Administrator" to get ADB path and address (since MuMu runs as admin).
- You can also fill in the ADB path and address if you do not wish to run as admin.
- It is not recommended to use the default odd resolutions of MuMu, it is better to change to mainstream resolutions such as 1280x720, 1920x1080, 2560x1440, etc.
- MuMu uses the same adb port for multi-instance, so multi-instance is not supported.
## ⚠️ [LDPlayer](https://www.ldplayer.net/)
The recent official update has fixed some issues and provided corresponding support. After some time of testing, we have basically confirmed that it can be used normally.
While using it, please still pay attention to the following points, but overall, the user experience has been greatly improved.
- **For LDPlayer 9, it is recommended to use version 9.0.37 or above; for LDPlayer 5, it is recommended to use version 5.0.44 or above.**
- We cannot guarantee that the LDPlayer emulator can run perfectly on all computers, but we are working hard to optimize the adaptation.
- If you encounter any problems when using the LDPlayer emulator, please update to the latest version of the emulator and try to solve the problem by yourself first. If you encounter difficulties, please feel free to provide feedback, and we will try our best to provide support.
- Note: We welcome feedback on issues related to the LDPlayer emulator, and will try to solve them. We would be very grateful if you could provide relevant code or contributions.
## ✅ [Memu](https://www.memuplay.com)
Compatible, but there are fewer tests and there may be unknown issues
## 🚫 Tencent Mobile Game Assistant
Incompatible. The ADB port is unavailable.
## 🚫 [Google Play Games Beta](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)
Incompatible. The ADB port of [the consumer client](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)is unavailable.
## ⚠️ [Win11 WSA](https://docs.microsoft.com/en-us/windows/android/wsa/)
Partially compatible.
- Need to connect with [Custom Connection](#%EF%B8%8F-custom-connection).
- For WSA 2204 or higher (version is in the `About` window of system settings), try `General Configuration` to connect.
- For WSA 2203 or older (version is in the top of the system settings window), try `Legacy WSA` to connect.
- Since WSA does not support changing resolution, please resize the window manually because this program supports 720p or higher `16:9` resolution better. (Or you can simply maximize the window with `F11` if your monitor is 16:9.)
- Please ensure that your emulator is at the top of other windows in most of the time and there are no other android applications running. Otherwise the game may pause or the recognition may fail.
- Sometimes the screenshot of WSA may be blank, causing recognition failure. So it is not recommended to use WSA.
## ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
Compatible.
### ⚙️ Non-`16:9` devices like smartphones or tablets
You may need to change the resolution manually since MAA supports only `16:9` resolution.
1. Turn on USB debugging mode and connect your device to the computer with a cable, or debug with ADB remotely.
2. Run `Command Prompt (CMD)`, check the device address and connect.
- Use the following command to check device ID if you are using USB cable to connect:
```bash
adb devices # Checks the connection status of the current device, with the first column to be the device ID
```
After successful connection, you will see the following messages:
```bash
C:\Users\username>adb devices
List of devices attached
VFNDU1682100xxxx device # The data before "device" is the device ID
```
- If you are using remote ADB connection: go to `Settings -> WLAN -> View` to find the corresponding IP address, and the port will usually be 5555 or 5037.
```bash
adb connect <IP Address + Port> # E.g. 192.168.0.10:5555
```
- If it prompts `'adb' is not recognized as an internal or external command`, it is because the environment variable is not configured correctly. You need to give the full path of ADB to run it. For example:
```bash
D:\adb_unzip_path\adb.exe devices # Or you can simply drag the adb.exe to CMD window and type [SPACE] devices
```
It is suggested that you configure the environment variable for ADB if you need to run it frequently. Please refer to the articles on the Internet about how to configure it for help.
3. Enter the command prompt to proceed
```bash
adb -s <Device ID or IP + Port> shell # Enters the command prompt of the device
wm size # Checks the resolution of the current device
wm size 720x1280 # Changes the resolution to 720p
```
4. Fill in the ADB path and the address of your smartphone (device ID or IP + port) in MAA
5. Set the `Special-shaped screen adaptation` to 0 (off) in the game settings.
Otherwise, your phone UI and click response may be dislocated if you change the resolution with ADB later.
6. Use MAA (≧∇≦)ノ
7. Before exiting MAA, reset the resolution of your phone.
```bash
wm size reset # Resets resolution
```
#### Using `Starts/End with Script` Options
After MAA version 4.13.0, you're able to utilize `Starts/End with Script` options to apply resolution changes on startup and revert the changes on finishing.
Create two script files: `startup.bat` & `finish.bat` in appropriate path and edit them using your favored text editor.
In `startup.bat`:
```bash
adb shell wm size 1080x1920
::If long-time operation is required, add the following line to save the power and protect your screen.
adb shell settings put system screen_brightness 1
```
In `finish.bat`:
```bash
adb shell wm size reset
::Add the following line to brighten your screen
adb shell settings put system screen_brightness 20
::Add the following line to lock (Command may differ in different device, test it first)
adb shell input keyevent 26
```
Then go to `Settings` - `Connection Settings` and add the paths of files above to `Starts with Script` & `End with Script` options, the script will be executed at corresponding timing.

View File

@@ -0,0 +1,9 @@
---
title: Development Docs
icon: ph:code-bold
index: false
dir:
order: 2
---
<Catalog base='/en-us/develop/' />

View File

@@ -1,8 +1,19 @@
# Development
---
order: 1
icon: iconoir:developer
---
## Introduction to GitHub pull request flow
# Getting Started with Development
1. If you have forked this repository long time ago, please go to `Settings`, scroll down to the bottom, and click `Delete Repository`.
## 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)
### I can program, but I've never used GitHub/C++/..., what can I do?
1. If you have forked this repository a long time ago, please go to `Settings`, scroll down to the bottom, and click `Delete Repository`.
2. Go to [MAA main repository](https://github.com/MaaAssistantArknights/MaaAssistantArknights) and click `Fork`, then `Create fork`.
3. Clone the `dev` branch of the (forked) repository to local with submodules:
@@ -10,11 +21,11 @@
git clone --recurse-submodules <link to your forked repo> -b dev
```
If you are using a Git GUI such as Visual Studio that without `--recurse-submodules`, do `git submodule update --init` after cloning to clone the submodules.
If you are using a Git GUI such as Visual Studio that does not include `--recurse-submodules`, do `git submodule update --init` after cloning to clone the submodules.
4. Download pre-built third-party libraries
**Please install Python first if you don't have it.**
**A Python environment is required; please search for a Python installation tutorial if needed.**
```cmd
python maadeps-download.py
@@ -22,7 +33,7 @@
5. Configure development environment
1. Download and install `Visual Studio 2022 Community`. Select `Desktop development with C++` and `.NET Desktop Development`.
1. Download and install `Visual Studio 2022 Community`. During installation, select `Desktop development with C++` and `.NET Desktop Development`.
6. Double-click to open the file `MAA.sln`. Visual Studio will load the project automatically.
7. Run a build to test whether the development environment has been configured correctly. Choose `Release` & `x64`, right-click `MaaWpfGui` to set it as the startup project, and run it. If the build is successful, the `MaaWpfGui` window will appear. You can connect to the emulator in order to confirm again that the development environment has been configured correctly.
@@ -84,7 +95,7 @@ Note: operations regarding Git can be done by VS2022 instead of command line too
2. Use tools like 'Everything' to locate the installation location of clang-format.exe. As a reference, if you are using Anaconda, clang-format.exe will be installed in YourAnacondaPath/Scripts/clang-format.exe.
3. In Visual Studio, search for 'clang-format' in Tools-Options.
4. Click `Enable ClangFormat` and select `Use custom clang-format.exe file` to use the `clang-format.exe` you have got in Step 2.
4. Click `Enable ClangFormat support` and select `Use custom clang-format.exe file` and choose the `clang-format.exe` located in Step 2.
![Enable clang-format in Visual Studio](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
@@ -96,8 +107,8 @@ You can also format with `tools\ClangFormatter\clang-formatter.py` directly, by
## Develop in cloud using GitHub codespace
Create GitHub codespace with pre configured C++ dev envirinments:
Create GitHub codespace with pre-configured C++ dev environments:
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights)
Then follow the instructions in vscode or [Linux tutorial](./2.1-LINUX_TUTORIAL.md) to configure GCC 12 and the CMake project.
Then follow the instructions in vscode or [Linux tutorial](./linux-tutorial.md) to configure GCC 12 and the CMake project.

View File

@@ -0,0 +1,144 @@
---
order: 6
icon: jam:write-f
---
# Document Writing Guide
::: tip
The purpose of this document is to guide document writers to better utilize the functionalities provided by the theme, thus achieving a more readable effect.
:::
Our documentation is built on [vuepress](https://github.com/vuejs/vuepress) and utilizes the [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) theme. You can also refer to the [official documentation](https://theme-hope.vuejs.press/en/) for more detailed explanations. Here, we only introduce some common functionalities.
## Deploy Locally
1. Install [Pnpm](https://pnpm.io/installation), and clone the repository refer to [Introduction to GitHub Pull request Flow](./development.md#introduction-to-github-pull-request-flow).
2. Create a terminal in the `website` directory, then run `pnpm i` to download dependencies.
3. Run `pnpm run dev` to deploy.
## Containers
~~Not the docker container~~
This theme provides support for custom containers such as tips, notes, info, warnings, alerts, and details. We can utilize this feature to emphasize certain content.
Usage of containers:
```markdown
::: [Container Type] [Container Title (optional)]
Content you want to write
:::
```
Accepted container types and their default titles are as follows:
- `tip` Tips
- `note` Note
- `info` Info
- `warning` Warning
- `danger` Caution
- `details` Details
### Container Examples
::: tip
This is a tip container
:::
::: note
This is a note container
:::
::: info
This is an info container
:::
::: warning
This is a warning container
:::
::: danger
This is a danger container
:::
::: details
This is a details container
:::
## Icons
This theme provides icon support, where you can use icons in the following places:
- Document title: Set the icon next to the document title in frontmatter.
- Navbar/Sidebar: Set icons displayed in the navbar and sidebar.
- Document content: Use icons in the document content.
### Setting Document Icons
You can use `icon` in the document's [frontmatter](#frontmatter) to set the document's icon.
This icon will be displayed next to the document title.
::: details Frontmatter settings of this document
```markdown
---
icon: jam:write-f
---
```
:::
### Using Icons in Documents
You can use the `<HopeIcon />` component to add icons in markdown. This component has the following attributes:
- `icon`: Accepts icon keywords and URLs, such as `jam:write-f`, `ic:round-home`, etc.
- `color`: Accepts CSS-style color values, such as `#fff`, `red`, etc. (This option only works for SVG icons).
- `size`: Accepts CSS-style sizes, such as `1rem`, `2em`, `100px`, etc.
::: details Example
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
```markdown
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
```
<HopeIcon icon="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" size="4rem" />
```markdown
<HopeIcon icon="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" size="4rem" />
```
:::
### Obtaining Icon Keywords
The icons used in this document are from [iconify](https://iconify.design/). You can search for the icons you want in its provided [icon search interface](https://icon-sets.iconify.design/) and then copy their keywords.
## Frontmatter
Frontmatter is the content at the beginning of a Markdown document enclosed in `---,` using YAML syntax internally. Through frontmatter, we can identify the document's editing time, the icon used, the classification, tags, etc.
::: details Example
```markdown
---
date: 1919-08-10
icon: jam:write-f
order: 1
---
# Document Title
...
```
:::
The meanings of each field are as follows:
- `date`: Editing time of the document
- `icon`: Icon next to the document title
- `order`: Document order in the sidebar

View File

@@ -1,3 +1,8 @@
---
order: 4
icon: bxs:bot
---
# How to use Issue 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).
@@ -9,8 +14,8 @@ The action of Issue Bot is [issue-checker](https://github.com/zzyyyl/issue-check
### Auto Notification
- Adds labels to issues and pull requests, e.g., `module`, `Client`, `ambiguous`, `translation required`, etc.
Issue Bot will add categories based on keywords.
Please refer to the [configuration file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) for the keywords.
Issue Bot will add categories based on keywords.
Please refer to the [configuration file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) for the keywords.
- Adds the `MAA Team` label to issues and pull requests for MAA public team members.
#### Issues and Their Comments

View File

@@ -1,10 +1,15 @@
---
order: 2
icon: teenyicons:linux-alt-solid
---
# Linux Compiling 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](./1.5-EMULATOR_SUPPORTS_FOR_LINUX).
If you just want to install MAA directly instead of compiling it yourself, please read [Emulator Support for Linux](../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](../.github/workflows/release-maa-linux.yml), 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)
::: 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)
:::
## Compiling MAA
@@ -64,7 +69,7 @@ Linux build of MAA is still under discussion, some of the content might be outda
## Integration
[~~Maybe not a doc~~](https://github.com/MistEO/MaaCoreArknights/wiki)
[~~Maybe not a doc~~](../protocol/integration.md)
### Python

View File

@@ -1,3 +1,8 @@
---
order: 5
icon: ri:earth-fill
---
# Overseas Clients Adaptation
## Preparation
@@ -5,7 +10,7 @@
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 `3.4-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.
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.
@@ -22,7 +27,7 @@ Before making changes, there are several preparations that need to be noted:
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 `1280*720` and the aspect ratio is `16:9`.
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.
@@ -130,3 +135,7 @@ In addition, the execution of the command (e.g. `Call`) and the `OCR` informatio
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.
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.
## Submit your changes
Check out [Github Pull Request Guide](./pr-tutorial.md)

View File

@@ -1,11 +1,16 @@
---
order: 3
icon: mingcute:git-pull-request-fill
---
# GitHub Pull Request User Guide
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.
⚠️ **PALLAS WARNING** ⚠️ **Buff Stacking Warning** ⚠️
::: 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:[DEVELOPMENT](2.2-DEVELOPMENT.md)
For those who have experience using Git and programming knowledge, you may refer to the more advanced tutorial in [Development](./development.md)
:::
## Basic concepts and terminology
@@ -48,11 +53,11 @@ Now we have a conflict, as both of you have modified the A file but in different
1. First, go to the MAA main repository and fork a copy of the code.
![~ NKHB1CIE8`G(UK@ %3 `H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png)
![image](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png)
2. Remove the "Only master branch" option, then click "Create Fork".
![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png)
![image](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png)
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).

View File

@@ -1,24 +0,0 @@
---
home: true
actions:
- text: Link Start!
link: /en-us/readme.html
type: primary
# features:
# - title: 多设备兼容
# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT适配异形屏。
# - title: 完全托管
# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务助你远离明日方舟。
# - title: 高性能
# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。
# - title: 高效率
# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。
# - title: 高自定义
# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药...
# - title: 允许商用
# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。
---

View File

@@ -0,0 +1,9 @@
---
title: User Manual
icon: mdi:user
index: false
dir:
order: 1
---
<Catalog base='/en-us/manual/' />

View File

@@ -0,0 +1,9 @@
---
title: CLI Manual
icon: material-symbols:terminal
index: false
dir:
order: 6
---
<Catalog base='/en-us/manual/cli/' />

View File

@@ -3,7 +3,7 @@ order: 4
icon: material-symbols:settings
---
# Configuring maa-cli
# Configuration
## Configuration Directory
@@ -448,12 +448,12 @@ The JSON schema of configuration files can be found at [`schemas` directory][sch
With the help of JSON schema, you can get auto-completion and validation in some editors with plugins.
[task-types]: ../3.1-INTEGRATION.md#list-of-task-types
[emulator-ports]: ../1.2-FAQ.md#common-adb-ports-for-popular-android-emulators
[playcover-doc]: ../1.4-EMULATOR_SUPPORTS_FOR_MAC.md#-playcover-the-software-runs-most-fluently-for-its-nativity-🚀
[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples
[task-types]: ../../protocol/integration.md#list-of-task-types
[emulator-ports]: ../faq.md#common-adb-ports-for-popular-android-emulators
[playcover-doc]: ../device/macos.md#-playcover-the-software-runs-most-fluently-for-its-nativity-
[example-config]: https://github.com/MaaAssistantArknights/maa-cli/tree/main/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/maa-cli/schemas/
[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/tree/main/maa-cli/schemas
[task-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/task.schema.json
[asst-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/asst.schema.json
[cli-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/cli.schema.json

View File

@@ -3,7 +3,7 @@ order: 5
icon: ph:question-fill
---
# FAQs for maa-cli
# FAQs
## 1. How to use `$HOME/.config/maa` as the configuration directory on macOS?

View File

@@ -3,7 +3,7 @@ order: 2
icon: material-symbols:download
---
# Install and Build maa-cli
# Install and Build
There are multiple ways to install maa-cli, including package managers, precompiled binaries, and building from source with `cargo`.

View File

@@ -3,7 +3,7 @@ order: 1
icon: material-symbols:toc
---
# maa-cli
# Introduction
A simple CLI for [MAA][maa-home] written in Rust.
@@ -13,11 +13,4 @@ A simple CLI for [MAA][maa-home] written in Rust.
- Install and update MaaCore and resources with `maa install` and `maa update`;
- Update self with `maa self update`.
## Documentation
- [Installation and Compilation](cli-install.md)
- [Usage](cli-usage.md)
- [Configuration](cli-config.md)
- [FAQ](cli-faq.md)
[maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights

View File

@@ -3,7 +3,7 @@ order: 3
icon: material-symbols:summarize
---
# Use maa-cli
# Usage
maa-cli is a command-line interface for MaaCore that automates tasks in the game Arknights. Additionally, maa-cli can manage MaaCore.
@@ -85,7 +85,7 @@ Except for the above subcommands, maa-cli also provides other subcommands:
More command usage can be viewed by `maa help`, and the usage of specific commands can be viewed by `maa help <command>`.
[config-core]: cli-config.md#MaaCore-related-configurations
[custom-task]: cli-config.md#custom-task
[config-core]: ./config.md#maacore-related-configurations
[custom-task]: ./config.md#custom-tasks
<!-- markdownlint-disable-file MD013 -->

View File

@@ -0,0 +1,184 @@
---
order: 3
icon: mdi:plug
---
# Connection
:::note
For information about physical machines, please also check [Android Physical Devices](./device/android.md).
:::
## 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.
:::
### Use the ADB provided by the emulator
Go to the simulator installation path. In Windows, when the simulator is running, right-click the process in the Task Manager and click `Open the location of the file`.
There should be an exe file with `adb` in its name in the top-level or lower directory. You can search and select it.
:::details Examples
`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe`
:::
### Use ADB provided by Google
[Click](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) to download and unzip, then 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.
## Connection Address
::: tip
The connection address of the emulator running on this computer should be `127.0.0.1:<port>``emulator-<four numbers>`
:::
### Obtain Port Number
#### Simulator documents and ports for reference
:::warning
TODO: replace these Chinese emulators links with English ones
:::
- [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 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555`
- [Memu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
- [Nox](https://support.yeshen.com/zh-CN/qt/ml) `62001`
For other simulators, please check [Zhao Qingqing's blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html).
#### Multiple Emulators
- 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_
#### 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.
```sh
# Windows CMD
adb devices
# Windows PowerShell
.\adb devices
```
An example of output:
```text
List of devices attached
127.0.0.1:<port> device
emulator-<four numbers> device
```
Use `127.0.0.1:<port>` or `emulator-<four numbers>` as the connection address.
- 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 simulator listening port is the simulator debugging port.
### Automatically Start Multiple Emulators
- 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.
- Perform multiple operations by attaching commands to `HD-Player.exe`.
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`.
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
:::
## Connection Present
You need to select the configuration of the simulator 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.
For specific differences, you can read the [source code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/4f1ef65a9c217c414f52461e88e9705115b5c338/resource/config.json#L74).
### MuMu Screenshot Enhanced Mode
You need to use the official China MuMu 12 3.8.13 and later versions, and close the background keep alive. Ark Edition and Global Edition are not supported now.
1. Settings → Connection Settings, tick `Enable MuMu Screenshot Enhanced Mode`.
2. `MuMu Emulator Path` Fill in the path to the `MuMuPlayer-12.0` folder, e.g. `C:`Program Files\Netease\MuMuPlayer-12.0`.
3. `Instance Number` Fill in the serial number of the corresponding emulator in MuMu Multiplayer, e.g. `0` for Main Multiplayer.
4. `Instance Screen` Fill in `0`.
#### About background keep alive
It is recommended to turn it off, at this time the instance screen is always `0`.
When it is on, the order of MuMu emulator tabs should be the serial number of the instance screen, e.g. `0` for emulator desktop, `1` for Arknights client.
Adaptation for backend live is very imperfect, there are always all kinds of inexplicable problems, it is very not recommended.
## 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.
## ADB Lite
The ADB Client independently implemented by MAA can avoid continuously opening multiple ADB processes and reduce performance loss compared to the original ADB, but some screenshot methods are not available.
It is recommended to enable it, but the specific advantages and disadvantages need feedback. ~~Help us do some testing x2~~

View File

@@ -0,0 +1,9 @@
---
title: Emulator and Device Supports
icon: mingcute:laptop-fill
index: false
dir:
order: 5
---
<Catalog base='/en-us/manual/device/' />

View File

@@ -0,0 +1,180 @@
---
order: 4
icon: mingcute:android-fill
---
# Android Physical Device
::: 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.
:::
::: tip
Typical `16:9` ratio resolutions are `3840x2160` (4K), `2560x1440` (2K), `1920x1080` (1080P), `1280x720` (720P).
:::
## Download, run adb debugging tool and connect the 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.
```bash
adb devices
```
- If executed successfully, it will give you a message that the ``USB debugging`` device is connected.
- Example of a successful connection:
```bash
List of devices attached
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.**
- 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:
```bash
List of devices attached
VFNDU1682100xxxx unauthorized
Unauthorised
```
- 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.
## 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.
:::
- If there is only one device within the device list above, you can change/restore the resolution directly by running the following command.
```bash
# View current resolution
adb shell wm size
# Restore the default resolution
adb shell wm size reset
# Change resolution to 720p
adb shell wm size 720x1280
# Change resolution 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.
```bash
# View current resolution
adb -s VFNDU1682100xxxx shell wm size
# Restore the default resolution
adb -s VFNDU1682100xxxx shell wm size reset
# Change resolution to 720p
adb -s VFNDU1682100xxxx shell wm size 720x1280
# Change resolution 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.
::: 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~~.
:::
## Automating resolution changes
1. Create two new text files in the MAA directory and fill them with the following contents.
```bash
# Adjust resolution to 1080p
adb -s <target device serial number> shell wm size 1080x1920
# Reduce screen brightness (optional)
adb -s <target device serial number> shell settings put system screen_brightness 1
```
```bash
# Restore resolution
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)
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`.
- 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".
3. In `Settings` - `Connection` - `Starts with Script` and `Ends with Script` of MAA, fill in `startup.bat` and `finish.bat` respectively.
## Connecting to MAA
### Wired connection
::: tip
A wired connection does not require any IP address or port, only the device serial number given by `adb devices`.
:::
1. Fill in the MAA `Settings` - `Connection` - `Connection address` with the serial number of the target device obtained above.
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.
#### To open a wireless port using `adb tcpip`
1. Enable wireless debugging by entering the following command in the command prompt window you just opened.
```bash
adb tcpip 5555
# Add the -s parameter to specify the serial number if multiple devices are present.
```
2. View the device 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.
3. Put `<IP>:5555` into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`.
4. Link Start!
#### Use `adb pair` to open the wireless port
::: 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`.
:::
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.
2. To perform 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.
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**.
4. Link Start!
#### Enable the wireless port with root privileges
~~If you have access to root, why do you need to read this document~~
1. Download, install [WADB](https://github.com/RikkaApps/WADB/releases) and grant it root privileges. 2.
2. Open WADB and start wireless adb. 3.
3. Put the IP address and port provided by WADB into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`.
4. Link Start!

View File

@@ -1,4 +1,9 @@
# Emulator Support for Linux
---
order: 3
icon: teenyicons:linux-alt-solid
---
# Linux Emulator and Container
## Preparation
@@ -16,7 +21,7 @@ The MAA WPF GUI can currently be run using Wine.
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.
3. Download MAA for Windows, unzip it and run `wine MAA.exe`.
2. Download MAA for Windows, unzip 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.
@@ -30,7 +35,7 @@ Download the [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssis
Running `MAA.exe` through Wine will load the Linux native libraries.
::: info Note
::: info Note
To use Linux native MaaCore, you need to set the ADB path to Linux native ADB in the connection settings.
:::
@@ -42,12 +47,12 @@ Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in
#### 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 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~~).
### Use Python
@@ -62,7 +67,7 @@ Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in
> **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](./2.1-LINUX_TUTORIAL.md), or run inside a container instead.
> Where you should reference to [Linux tutorial](../../develop/linux-tutorial.md), or run inside a container instead.
#### 2. `adb` Settings

View File

@@ -1,4 +1,9 @@
# Emulator Support for Mac
---
order: 2
icon: basil:apple-solid
---
# Mac Emulator
## Apple Silicon Chips
@@ -40,7 +45,7 @@ Fully compatible. Need to turn on `Settings` - `Advanced` - `Android Debug Bridg
### ✅ [Nox](https://www.yeshen.com/)
Fully compatible. MAAX cannot auto-detect adb port now, so you need to fill in adb port `127.0.0.1:62001` in MAA `Setting` - `Connect Setting`. Notice that port is not default `5555` , you can get more info in [Common ADB ports for popular Android emulators](1.2-FAQ.md#common-adb-ports-for-popular-android-emulators)
Fully compatible. MAAX cannot auto-detect adb port now, so you need to fill in adb port `127.0.0.1:62001` in MAA `Setting` - `Connect Setting`. Notice that port is not default `5555` , you can get more info in [Common ADB ports for popular Android emulators](../faq.md#common-adb-ports-for-popular-android-emulators)
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.

View File

@@ -0,0 +1,112 @@
---
order: 1
icon: ri:windows-fill
---
# Windows Emulator
:::warning
TODO: replace these Chinese emulators links with English ones
:::
The following emulators are displayed randomly in no particular order.
<script setup>
import MarkdownIt from 'markdown-it'
import MarkdownItAnchor from 'markdown-it-anchor'
const shuffleArray = (array) => {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
const fullySupport = shuffleArray([
{
name: 'Bluestacks 5',
link: 'https://www.bluestacks.com/',
note: 'Fully compatible. Need to turn on `Allow ADB connections` in the emulator `Settings` - `Engine Settings`. 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.md#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.',
},
{
name: 'MuMu Emulator 12',
link: 'https://mumu.163.com/',
note: 'Fully compatible, with additional support for the [exclusive Extreme Control Mode](../connection.md#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- If you are using MuMu 12 version 3.5.4 ~ 3.5.7, please disable the "Keep alive in the background" function in MuMu 12 Settings - Others. "Keep alive while hanging in the background" (see [Official Announcement](https://mumu.163.com/help/20230802/35047_1102450.html) for details);\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: 'LDPlayer',
link: 'https://www.ldmnq.com/',
note: 'Fully compatible. Known to be compatible with Hyper-V.\n\n- LDPlayer 9 is recommended to use version 9.0.57 and above; LDPlayer 5 is recommended to use version 5.0.67 and above;\n- For versions lower than the above, you need to run `Forced ADB Replacement` in `Settings` - `Connection` in order to use efficient touch modes such as Minitouch and MaaTouch.',
},
{
name: 'Nox',
link: 'https://www.yeshen.com/',
note: 'Fully compatible, but less tested. Known to be compatible with Hyper-V.',
},
{
name: 'Memu',
link: 'https://www.xyaz.cn/',
note: 'Fully compatible, but less tested.',
},
{
name: 'Google Play Games (Developer)',
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-cn',
note: 'Fully compatible, but less tested. Hyper-V must be turned on and you must be logged into a Google account.',
},
]);
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`, `2560x1440` and other 16:9 ratio;\n- MuMu 6 multi-open uses the same adb port, so it can\'t support multi-open MuMu 6.',
},
{
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.',
},
{
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.',
},
]);
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)\'s adb port is not open.',
},
]);
const md = new MarkdownIt();
md.use(MarkdownItAnchor);
const fullySupportHtml = md.render(fullySupport.map(simulator => `
### ✅ ${simulator.link ? `[${simulator.name}](${simulator.link})` : simulator.name}
${simulator.note}
`).join(''));
const partiallySupportHtml = md.render(partiallySupport.map(simulator => `
### ⚠️ ${simulator.link ? `[${simulator.name}](${simulator.link})` : simulator.name}
${simulator.note}
`).join(''));
const notSupportHtml = md.render(notSupport.map(simulator => `
### 🚫 ${simulator.link ? `[${simulator.name}](${simulator.link})` : simulator.name}
${simulator.note}
`).join(''));
</script>
## ✅ Fully supported
<ClientOnly><div v-html="fullySupportHtml"></div></ClientOnly>
## ⚠️ Partially supported
<ClientOnly><div v-html="partiallySupportHtml"></div></ClientOnly>
## 🚫 Unsupported
<ClientOnly><div v-html="notSupportHtml"></div></ClientOnly>

View File

@@ -1,37 +1,47 @@
# Frequently Asked Questions
---
order: 4
icon: ph:question-fill
---
# FAQs
::: warning
MAA has been updated to .NET 8 in version 5.0. For end users, the impact is as follows:
1. MAA now requires the .NET 8 runtime library, which will automatically prompt the user to install it when starting. If the installation fails, please read the following and download the installation package to install manually.
2. MAA will no longer be falsely reported by Windows Defender.
3. [.NET 8 does not support Windows 7/8/8.1](https://github.com/dotnet/core/issues/7556), so MAA is also no longer supported, even though it can still run normally.
4. When running MAA on Windows 7, an abnormal memory usage problem occurs. Please refer to the Windows 7 section below to implement mitigation measures. Windows 8/8.1 has not been tested. If you have the same problem, please send an Issue to remind us to supplement the documentation.
3. .NET 8 does not support Windows 7/8/8.1<sup>[Src](https://github.com/dotnet/core/issues/7556)</sup>, so MAA is also no longer supported. 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.
4. When running .NET 8 applications on Windows 7, an abnormal memory usage problem will occur. Please refer to the Windows 7 section below to implement mitigation measures. Windows 8/8.1 has not been tested. If you have the same problem, please send an Issue to remind us to supplement the documentation.
:::
## The program crashes immediately when I try to run it
### Possible cause 0: incomplete file downloaded
### Incomplete file downloaded
- 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 update 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 are no support for 32-bit (x86) operating systems.
- If the application does not run properly after an automatic update, it may be due to some bugs within the autoupdater. Please try reinstalling the application and migrating `config` directory from the old install to the new install.
### Possible cause 1: architecture mismatch
### Missing runtime libraries
- In most cases, you need x64 operating system and x64 variant of MAA, i.e. `MAA-*-win-x64.zip`. There are no support for 32-bit (x86) operating systems.
Only official sources are listed here. We can't gurantee whether some random third-party all-in-one pack can work.
### Possible cause 2: missing runtime libraries
- Please try installing [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) and [.NET Desktop Runtime 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=Binaries-,Windows,-Arm64), then restart computer.
Windows 10 or 11 users can also install using Winget by running the following command in the terminal.
> Only official sources listed here. We can't gurantee whether some random third-party all-in-one pack can work.
```sh
winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8
```
- Please try installing [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) and [.NET8](https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-8.0.1-windows-x64-installer), and restart your computer and the application.
- If MAA cannot run after an update, it may be caused by the runtime too. You can also try to install or update the runtime again.
#### Notes on Windows N/KN
- If you are using Windows 8/8.1/10/11 N/KNEurope/Koreaeditionsyou also need [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。
- If you are using Windows 8/8.1/10/11 N/KN (Europe/Korea)editions, you also need [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。
#### Notes on Windows 7
- If you are using Windows 7you need to check following updates before installing runtime libraries
- If you are using Windows 7, you need to check following updates before installing runtime libraries
1. [Windows 7 Service Pack 1](https://support.microsoft.com/en-us/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
2. SHA-2 code-signing update
@@ -39,75 +49,41 @@ MAA has been updated to .NET 8 in version 5.0. For end users, the impact is as f
- 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)
Mitigation measures for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
##### Mitigation measures for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
1. Open `Computer`, right-click a blank space, click Properties, click `Advanced System Settings` on the left, and click `Environment Variables`.
2. Create a new system variable with variable name `DOTNET_EnableWriteXorExecute` and variable value `0`.
3. Restart the computer.
1. Open `Computer`, right-click a blank space, click Properties, click `Advanced System Settings` on the left, and click `Environment Variables`.
2. Create a new system variable with variable name `DOTNET_EnableWriteXorExecute` and variable value `0`.
3. Restart the computer.
We cannot guarantee compatibility of future versions with Windows 7, ~~it's all Microsoft's fault~~.
#### Alternative approach: install development tools
- Install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) to configure a complete development environment (only .NET and C++ environments are required).
- **Please note that you may need about 10GB disk space to install these tools, so make sure that your free space is enough.**
### Possible cause 3: broken system
### System broken
- Installation of runtime libraries above requires the Component-Based Servicing (CBS) infrastructure (i.e. TrustedInstaller/TiWorker, WinSxS). Installation may fail if CBS is broken.
- We have no suggestion other than reinstalling Windows. Please avoid using so-called "lite" editions.
- We have no suggestion other than reinstalling Windows. Please avoid using so-called "lite" editions, or some old versions of Windows from thousands of years ago (e.g. 1809).
## Connection error
- Tips: please refer to the [List of the Supported Emulators](1.3-EMULATOR_SUPPORTS.md) section to ensure that the emulator you are using is officially supported and that your configuration is correct.
- 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 softwares such as a game accelerator, please close the softwares, 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.
### Approach 1: make sure ADB and address are correct
### Make sure ADB and address are correct
- Make sure that MAA `Settings` - `Connection Settings` - `adb path` is automatically filled in. If so, skip to the next step. Otherwise:
- Option 1: find the installation path of your emulator, where there may be a file named `adb.exe` (or something similar, e.g. `nox_adb.exe`, `HD-adb.exe`, `adb_server.exe`, etc., any EXE files with `adb`). Simply choose the file in the connection settings of MAA!
- Option 2: download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it. Select the `adb.exe` file.
Check [Connection](./connection.md)
- Confirm that your connection address is filled in correctly. The ADB address is usually like `127.0.0.1:5555`, depending on the emulators (except Leidian emulator).
#### Common ADB ports for popular Android emulators
- Single instance / first instance in multi-instance mode
For single instance mode, please refer to the documentation for each emulator and the blog post by NetEase senior game development engineer @Zhao Qingqing to find the default ADB ports for common Android emulators:
|Emulator|Default ADB port|
|-|:-:|
|NetEase MuMu emulator 6/X|7555|
|NetEase MuMu emulator 12|16384|
|NoxPlayer emulator|62001|
|BlueStacks emulator|5555|
|LDPlayer emulator 9|5555 / emulator-5554|
You can connect to emulators with purely numeric ports using `127.0.0.1:[port]`. LDPlayer emulator has its own wrapper, so you can also use `emulator-5554` to connect.
If you need to modify the connection settings in the `Settings` - `Connection Settings` - `Connection Address` on Windows or Mac, please refer to the table above.
- Multi-instance mode
- For NoxPlayer emulator, the port of the first device is `62001`, and the ports for subsequent devices start from `62025`.
- For NetEase MuMu emulator 12, the ADB ports for multi-instance mode are irregular. To find the ADB port for a running emulator, launch the emulator from MuMu Multi-instance Manager 12, then click on the ADB icon in the upper-right corner.
- For LDPlayer emulator 9, the local ADB port starts from `5555`, and subsequent ports increment by 2. For example, the second emulator has a local port of `5557`.
### Approach 2: change emulator
### Change emulator
Change to another emulator, such as [Bluestacks international version](https://www.bluestacks.com/download.html) Nougat 64 bit.
_After installation of Bluestack, you need to enable `Android Debug Bridge` in the settings._
### Approach 3: close extra adb processes
### Close extra adb processes
- Close MAA and check for any adb processes in the task manager. If there are any, please close them and retry.
### Approach 4: restart computer
### Restart computer
Try restarting your computer.
@@ -115,7 +91,7 @@ Try restarting your computer.
The adb version packaged with some emulators is too old and does not support minitouch. Please open MAA with administrator priviledge 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 sussessful.)
The emulator will reset the ADB version after updating. If the problems occurs again, please repeat the above steps. Or you can try to use the [custom connection](1.1-USER_MANUAL.md#custom-connection) method to solve it once and for all.
The emulator will reset the ADB version after updating. If the problems occurs 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.
If it still doesn't work, please retry after switching to `MaaTouch` from `Minitouch` in `Settings` - `Connection Settings`.
@@ -135,7 +111,7 @@ If it still doesn't work, please retry after switching to `MaaTouch` from `Minit
## The download speed is slow and the mirror site is not accessible
1. Go to [Download](../../README.md#Download) to get the link (non-mirror) to you want to download.
1. Go to [Download](../readme.md) to get the link (non-mirror) to you want to download.
2. Find the link to your file you need to download.
3. Right-click it and select `Copy link address`.
4. Paste the link into your browser.

View File

@@ -0,0 +1,9 @@
---
title: Introduction
icon: mdi:information-outline
index: false
dir:
order: 2
---
<Catalog base='/en-us/manual/introduction/' />

View File

@@ -0,0 +1,101 @@
---
order: 3
---
# Combat
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## General Settings
- Fight options include `Use Sanity Potion + Use Originium`, `Perform Battles` and `Material`, you can specific any of them. The fight tasks stops once one of the specifications is met.
- `Use Sanity Potion` specifies the number of sanity potions to use at most. Multiple medicines may be used at a time.
- `Use Originium` specifies the number of Originium to use at most. It is used one at a time. The Origin Stone will not be used when there is Sanity Potion in depot.
- `Perform Battles` specifies the number of battles to perform at most.
- `Material` specifies the number of materials to collect.
- `Material` and `Stage` are independent options. `Material` is not going to automatically navigate to the 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.
::: details Example
| Use Sanity Potion | Use Originium | Perform Battles | Material | Result |
| :------: | :----: | :------: | :------: | -------------------------------------------------------------------------------------------------------------------------------------- |
| | | | | 刷完现有理智即结束。 |
| 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 行为_ |
:::
### Operations
- If the stage you need is not available in the selection, please choose `Cur/Last` in MAA and manually locate the stage in the game.
Make sure 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 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. Prompt will be shown in 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`.
::: details Example
![Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/56174894/e94a0842-a42f-449d-9f2e-f2339175cbdd)
:::
### Annihilation Mode
- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。
- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。
- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。
## Advanced Settings
### Alternative Stage
备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。
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. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。
### Remaining Sanity Stage
`刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。
- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智 (如前往 1-7)。
- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾 (设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。
- 若剩余理智仍然不足则会结束任务 (如少于 6 理智)。
- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。
### Series
- MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。
- 若设置的次数过多但理智不足MAA 会直接进行 `吃理智药``吃源石` 操作,并继续尝试连战。
- 若未设置 `吃理智药``吃源石`MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` MAA 会直接开始刷 `剩余理智` 关卡。
### 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.
## Abnormal Detection
- `Auto-Deploy` will be automatically selected if not already in case you forget to do so.
- After disconnection or flashing 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.
- A level up situation can be automatically handled as well as a failed delegation in which case this time of the operation will be given up.

View File

@@ -0,0 +1,42 @@
---
order: 9
---
# Copilot
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
Welcome to share your tasks with [prts.plus](https://prts.plus)!
## Load Tasks
支持任意 `可编队关卡``保全派驻` 模式的自动战斗。
- Please run it on the screen with `Start Operation` button.
之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件``填写作业站神秘代码` 即可导入作业。
- `Auto Squad` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。
- 可根据个人需要 (例如需要使用 `好友助战` 时)取消 `Auto Squad`,手动编队后开始。
- 可根据任务需要为自动编队 `Add custom operators``Add low-trust operators`
- 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。
- 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。
- 可设置 `Loop Times`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。
- 可使用 `Battle list` 功能进行同一区域关卡的自动连续战斗。
- Battle list 下方三个按钮从左到右依次为 `批量导入``添加关卡``清空关卡`
`添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡,
- 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。
- 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。
- 请确保列表中的关卡在同一区域 (只通过左右滑动地图界面就可以导航到)。
- Remember to like the tasks that you think helpful!
![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa)
## Create Tasks
- 请使用 [作业编辑器](https://prts.plus/create) 制作. 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
- 在作业编辑器中填写关卡后,左下角会自动加载可拖动缩放的坐标地图,可点选设置当前干员位置。
- 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 own name, video walkthrough URL, or other things that you think helpful in the description.

View File

@@ -0,0 +1,19 @@
---
order: 5
---
# Credit Store
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
- Automatically visit friends to obtain credit points 并前往信用交易所购物.
- With the help of Warfarin's 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`.
## Advanced Settings
- Whitelist and Blacklist 都是关键字匹配,例如填 `碳` 会匹配 `碳``碳素`
- `Stop purchasing items when credits below 300` 即使在低于 300 时也会购买 Whitelist 商品。

View File

@@ -0,0 +1,31 @@
---
order: 4
---
# Infrastructure
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## Shifting 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.
- 自动按照 `无人机用途` 选择的方式使用无人机。
- Recognizes the percentage of the Morale bar. When Morale is below some threshold, the operator will be moved to the dormitory.
## Note
- The shifting strategy is based on the optimal solution within a single facility instead of multiple facilities. Combination such as: `Shamare-Tequila`, `Vermeil-Scene` within a single facility can be recognized correctly; while combination like `Rosmontis`, `Pinus Sylvestris` among facilities is 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 corresponding fraction will be selected when only one Clue is needed Reception Room; otherwise general operators will be chosen.
- Reception Room will send out Clues only when your Clues are full. Three Clues will be send out at most. You can edit `SelectClue` - `maxTimes` field in `resource/tasks.json` to edit number of Clues sent if you want.
- 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 not entering the dormitory as well.
- Due to the complexity of 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 notice if there is "Operator conflict" warnings on the UI, and double check the Infrastructure to shift manually (e.g. some facilities may not have any operator).
- 可自行选择需要 MAA 处理的设施类别,默认全选。
## Custom infrastructure shift change (Beta)
- Several sets of extremely efficient tasks are built-in under the MAA folder `/resource/custom_infrast/`, which can be used as a reference. 由于其对干员及练度的需求极高,不推荐直接使用。

View File

@@ -0,0 +1,33 @@
---
order: 7
---
# Integrated Strategy (I.S.)
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
MAA selects the latest theme by default, and can be changed in `Auto I.S.` - `General`.
- Please pin the corresponding I.S. theme to the terminal in the game. 虽然目前也可以自动导航,但不保证长期可用性。
- If there is exploration of non-target themes (such as if you plan to use MAA to brush 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.
## Battle Strategy
MAA 没有 AI 功能,自动肉鸽中的一切操作都是预置的策略,所有关卡战斗都是调用内置的作业文件。
详情请查阅 [肉鸽协议](../../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 collectibles.
## Abnormal Detection
- It supports reconnection after disconnection and supports continuing to return to brush after 4 a.m. update.
- If the scraping cannot be completed during the battle, all ground units will be automatically withdrawn after more than 5 minutes; if it exceeds 6 minutes, the current battle will be automatically abandoned without getting stuck.
- If the task gets stuck, it will automatically abandon the exploration and retry.
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.

View File

@@ -0,0 +1,31 @@
---
order: 11
---
# Others
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## Automatically switch configurations on startup
MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`
部分符号需要转义,参考 Json。例子在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`
## 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.
## Note
- Tasks order can be changed on the UI. So can the shifting order in the infrastructure.
- Almost all configuration changes will be saved automatically, except for options with `*`, `(only once)` and half-select by right-clicking on the checkbox.
- 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, in order to reduce CPU and memory usage as much as possible.
- Our software supports auto-update ✿✿ ヽ(°▽°) ✿ Beta-testers can try beta versions, which updates 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.
- 在 Windows 版本中MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。

View File

@@ -0,0 +1,24 @@
---
order: 8
---
# Reclamation Algorithm
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。
## 默认模式
1. 需要在生息演算主界面开始任务 (导航还没写)
2. 不能在已经有存档的情况下使用 (删除现有存档即可)
3. 不能在生息演算的编队中有干员的情况下使用 (把生息演算中的当前编队清空即可,特别是打完浪潮之后)
## 制造刷点数
1. 需要在进入生息演算中能看到驻扎地的页面开始
2. 若未填写道具名称,则默认制造荧光棒
3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地
4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修

View File

@@ -0,0 +1,23 @@
---
order: 2
---
# Recruit
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
Auto-recruitment and [recruitment recognition](./tools.md#recruitment-recognition) are two different features.
## Auto-recruitment
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 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.
## Advanced Settings
`Auto confirm` 即 MAA 自动选择标签并进行招募,`Manually confirm` 即不进行自动选择与招募。

View File

@@ -0,0 +1,13 @@
---
order: 6
---
# Rewards
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
自动领取每日奖励和每周奖励。
同时支持其他奖励类型,具体请查看设置。

View File

@@ -0,0 +1,23 @@
---
order: 1
---
# Startup
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
自动启动模拟器,自动启动客户端,自动进入游戏。
自动启动模拟器需额外设置,详见启动设置。
## Account Switch
仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。
Example`123****8901` can be input `123****8901``123``8901``3****8`.
## Connection
[Click me](../connection.md)

View File

@@ -0,0 +1,43 @@
---
order: 10
---
# Tools
::: important Translation Required
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
:::
## Recruitment Recognition
打开公招标签界面,点击开始识别即可启动。
如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。
## Operator Recognition (Beta)
可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。
## 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.
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).
Please feel free to contact us if you hope to integrate with our JSON schema.
More useful features **may** be added in the future.
## 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.
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.
## Gacha
**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡**
**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡**
**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡**
牛牛航空没报上名?没关系!现在每个人都有自己的牛牛航空!并且在抽卡的过程中还会截图并显示在界面中央!

View File

@@ -1,4 +1,5 @@
---
order: 1
icon: ri:guide-fill
---
@@ -8,17 +9,18 @@ icon: ri:guide-fill
1. Confirm system version
MAA only supports Windows 10 / 11. For earlier versions of Windows, please refer to [FAQ](1.2-FAQ.md) at the top.
MAA only supports Windows 10 / 11. For earlier versions of Windows, please refer to [FAQ](./faq.md) at the top.
2. Install the runtime library
MAA requires VCRedist x64 and .NET 8. Right-click the start button to open the terminal, paste the following command in it and Enter to install.
```sh
winget install Microsoft.VCRedist.2015+.x64
winget install Microsoft.DotNet.DesktopRuntime.8
winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8
```
Refer to [FAQ](faq.md#missing-runtime-libraries) for more information
3. Download the correct version
[MAA official website](https://maa.plus/) will automatically selects the correct version architecture, which for most users reading this article should be Windows x64.
@@ -29,7 +31,7 @@ icon: ri:guide-fill
5. Confirm simulator support
Check [Emulator Supports](./1.3-EMULATOR_SUPPORTS.md) to confirm the support of the emulator you are using.
Check [Emulator Supports](./device/) to confirm the support of the emulator you are using.
6. Correctly set the emulator resolution
@@ -37,11 +39,14 @@ icon: ri:guide-fill
## Initial
1. Follow the setting guide to configure. If there are no special requirements such as multiple openings, there is no need to change the connection settings.
0. If you'd like to use automatic detection, run **one** emulator and make sure no other Android devices are connected to the computer.
1. Follow the setup guide to configure, and MAA will automatically detect the running emulator. If you'd like to run multiple emulator or customize your connection, please check [Connection](./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.
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 sort the tasks, and check or uncheck the checkboxes to select
the tasks to be run.
4. Link Start!
@@ -51,7 +56,7 @@ Check out the documentation.
## Other
- **When encountering problems, read the documents plz.**
- **When encountering problems, read the documents please.**
1. The log files are located in the folder under the MAA folder which named `debug`. Logs are important. When asking others for help, be sure to take `asst.log` and `gui.log` with you.

View File

@@ -0,0 +1,9 @@
---
title: Protocol Docs
icon: basil:document-solid
index: false
dir:
order: 3
---
<Catalog base='/en-us/protocol/' />

View File

@@ -1,3 +1,8 @@
---
order: 6
icon: material-symbols:view-quilt-rounded
---
# Infrastructure Schedule 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.
@@ -5,7 +10,7 @@ This document is machine-translated. If you have the ability, please refer to th
Usage and Field Description for `resource/custom_infrast/*.json` files
::: tip
Note: As JSON format does not support comments, please remove the comments when using the examples below.
As JSON format does not support comments, please remove the comments when using the examples below.
:::
[Visual Schedule Generation Tool](https://ark.yituliu.cn/tools/schedule)

View File

@@ -1,3 +1,8 @@
---
order: 2
icon: material-symbols:u-turn-left
---
# Callback Schema
**Callback messages are being iterated rapidly with version updates, and this document may be outdated. For the latest content, please refer to [C# Integration Source Code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/MaaWpfGui/Main/AsstProxy.cs)**
@@ -440,7 +445,6 @@ Todo
}
```
- `RecruitTagsSelected`
Recruitment tags selected
@@ -554,7 +558,7 @@ Todo
},
"data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}"
}
// Only ArkPlanner and Lolicon formats are supported. More websites will be supported in future.
// Only ArkPlanner and Lolicon (Arkntools) formats are supported. More websites will be supported in future.
```
- `OperBoxInfo`

View File

@@ -1,3 +1,8 @@
---
order: 3
icon: ph:sword-bold
---
# Copilot Schema
Usage of `resource/copilot/*.json` and field description.
@@ -16,7 +21,7 @@ Usage of `resource/copilot/*.json` and field description.
"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 oncee.g. Mountain: Sweeping Stance
// 2 - Used when ready, only once (e.g. Mountain: Sweeping Stance)
// 3 - Auto-decision (not implemented)
// 0 for auto skills

View File

@@ -1,33 +1,33 @@
---
order: 5
icon: ri:game-fill
---
# Integrated Strategy (I.S.) -- Schema
# Integrated Strategy (I.S.) Schema
::: tip
Please note that JSON files do not support comments. Comments are for demonstration purposes only and should not be copied directly
:::
## Integrated Strategy resources location
## Integrated Strategy resources location
- `resource/roguelike/` the files for each theme are below
- Theme folder
- `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
- `level_name_in_chinese.json` combat logic of the level
- `encounter.json` encounter nodes logic(levelling mode)
- `encounter_for_deposit.json` encounter nodes logic (investing mode)
- `recruitment.json` operators recruitment logic
- `shopping.json` trade store purchasing logic
- `autopilot/`combat json for each level
- `level_name_in_chinese.json` combat logic of the level
- `encounter/` encounter nodes logic
- `default.json` levelling mode
- `deposit.json` investing mode
- `recruitment.json` operators recruitment logic
- `shopping.json` trade store purchasing logic
## Integrated Strategy Step 1 -- Operator Recruitment
## Integrated Strategy Step 1: Operator Recruitment
`resource/roguelike/theme_name/recruitment.json` describes the logic of the operator recruitment
```json
{
"theme": "Phantom", // I.S. Theme (In this case Phantom)
@@ -40,23 +40,25 @@ 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](3.3-COPILOT_SCHEMA.md))
Split operators in different ***groups*** according to your understanding of the game(Group, related conceptual 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)
2. Allows the same operator or summon to be sorted in 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 group, instead try to implement new operators added to the task, into existing groups according to the usage
1. Operators and summons within the same group must be deployed in the same way (i.e. both melee or ranged)
2. Allows the same operator or summon to be sorted in 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 group, instead try to implement new operators added to the task, into existing groups according to the usage
:::
::: tip
By default, only E1 Level 55 operators will be recruited
:::
```json
{
"theme": "Phantom",
@@ -118,7 +120,7 @@ Currently fixed to group unidentified ground crews behind the penultimate format
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
::: 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.
:::
@@ -149,74 +151,76 @@ So don't set the threshold number too high, it is recommended that the number of
]
}
```
### 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
```json
{
"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
"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.)
"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.
"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)
"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
"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.
"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.
"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
{
"groups": [ // Which groups are required to fulfil the conditions
"Kaltsit",
"GroundBlocking",
"Thorns"
],
"is_less": false, // True is less than, false is greater than. Default to false if empty
"threshold": 2, // Number of conditions met
"offset": -300 // Adjustments to recruitment priorities after fulfilment
// (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)
}
]
},
...
],
],
"team_complete_condition": [
...
]
}
```
```json
{
"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
"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.)
"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.
"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)
"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
"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.
"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.
"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
{
"groups": [ // Which groups are required to fulfil the conditions
"Kaltsit",
"GroundBlocking",
"Thorns"
],
"is_less": false, // True is less than, false is greater than. Default to false if empty
"threshold": 2, // Number of conditions met
"offset": -300 // Adjustments to recruitment priorities after fulfilment
// (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)
}
]
},
...
],
],
"team_complete_condition": [
...
]
}
```
3. Add groups and opeators as you see fit
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
## Integrated Strategy Step 2 -- Battle Logic
## Integrated Strategy Step 2: Battle Logic
`resource/roguelike/theme_name/autopilot/level_name.json` Describes the combat strategy for each level
@@ -227,7 +231,7 @@ So don't set the threshold number too high, it is recommended that the number of
- MAA performs basic combat operations based on whether the grid on the map is a blue or red gate, 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 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.
So in the future, you need to try to design a set of combat logic that can cope with **all the different scenarios of a map name** (the above mentioned scenarios), and be careful of being hung up on the issue that this map operates in Emergency Mode.
@@ -244,9 +248,9 @@ So don't set the threshold number too high, it is recommended that the number of
1. Blue Gate Alternative
It's obviously not smart to just pile up your operators in front of the blue door, some levels have grids where you can't get through, and the defence is obviously very efficient here
It's obviously not smart to just pile up your operators in front of the blue door, some levels have grids where you can't get through, and the defence is obviously very efficient here
Or if there are levels with multiple blue gates, and the MAA doesn't know which blue gate corresponds to which red gate, they may deploy randomly
Or if there are levels with multiple blue gates, and the MAA doesn't know which blue gate corresponds to which red gate, they may deploy randomly
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
@@ -297,6 +301,7 @@ So don't set the threshold number too high, it is recommended that the number of
]
],
```
3. Alternative map strategies
For example, if there is a monster at the blue door in Mizuki I.S. should we use the dice to ease the pressure of stacking monsters?
@@ -315,7 +320,8 @@ The customised strategy takes precedence over the basic combat strategy, and whe
There is no need to set up too many customised plans when there is a problem. It may be better to hand over to MAA after completing the key steps, or a combination of both.
1. Deployment of operators using groups
```json
```json
"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.
{
@@ -343,10 +349,11 @@ There is no need to set up too many customised plans when there is a problem. It
If a "Gavial" operator on [6,4] is retreated during battle, the "Cornerstone" operator in hand, if avaiable, will be deployed on [6,4], instead of [6,3]
:::
3. Deployment of operators at a point in time
2. Deployment of operators at a point in time
::: tip
Suitable for certain single-cutting operators or usage scenarios that require cannon fodder
:::
```json
"deploy_plan": [
{
@@ -364,10 +371,12 @@ There is no need to set up too many customised plans when there is a problem. It
...
]
```
4. Retrieval of the operators at some point
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!
:::
```json
"retreat_plan": [ // Retrieval targets at specific points in time
{
@@ -376,12 +385,12 @@ There is no need to set up too many customised plans when there is a problem. It
}
]
```
5. Disable a skill at a certain point in time (to do)
7. Additional fields (not recommended)
4. Disable a skill at a certain point in time (to do)
```json
5. Additional fields (not recommended)
```json
"role_order_Doc": "Operator type deployment order, the unspecified parts will be filled in with the order of Guard, Vanguard, Medic, Defender, Sniper, Caster, Supporter, Specialist, Summoner, and so on.",
"role_order": [ // Not recommended, please configure the deploy_plan field.
"warrior",
@@ -426,7 +435,8 @@ There is no need to set up too many customised plans when there is a problem. It
}
],
```
### Have a special understanding of an operators playing style? -- Refined operation of specific operators
### Have a special understanding of an operator's playing style? -- Refined operation of specific operators
Please group this officer separately
@@ -434,15 +444,15 @@ When writing assignments, please consider the sequential priority of this office
Or you could just forget about it, and write a combat logic for this agent alone
Its also possible to use just one operator! Use MAA to clear the level (due to other imperfections in logic, the possibility is very low)
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.
## Integrated Strategy Step 3 -- Encounters Node logic
## Integrated Strategy Step 3: Encounters Node logic
`resource/roguelike/theme_name/encounter.json` Strategy for the selection of Encounter events in the leveling mode
`resource/roguelike/theme_name/encounter/default.json` Strategy for the selection of Encounter events in the leveling mode
`resource/roguelike/theme_name/encounter_for_deposit.json` Strategy for the selection of Encounter events in the investment mode
`resource/roguelike/theme_name/encounter/deposit.json` Strategy for the selection of Encounter events in the investment mode
### MAA currently has a method for judging Encounters
@@ -457,7 +467,8 @@ Generally, it only requires slight adjustment or no adjustment at all (the devs
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.
The Encounter options can be modified to guide MAA towards special endings
```json
```json
{
"theme": "Sami", // I.S. Theme
"stage": [ // Encounter event
@@ -465,7 +476,7 @@ The Encounter options can be modified to guide MAA towards special endings
"name": "低地市集", // Name of the Encounter
"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 cant choose it, choose the escape option (basically the last one)
// If you can't choose it, choose the escape option (basically the last one)
"choice_require": [ // Requirements for selecting options
// (it does not affect program operation for the time being
@@ -491,13 +502,10 @@ The Encounter options can be modified to guide MAA towards special endings
### Dynamically prioritise certain options according to the team situation (TODO)
## Integrated Strategy Step 4 -- Prioritising Trade Store collection
## Integrated Strategy Step 4: Prioritising Trade Store collection
`resource/roguelike/theme_name/shopping.json` Describes strategies for purchasing collectibles in the store (and selecting collectibles after combat?)
```json
{
"theme": "Phantom", // I.S. Theme
@@ -566,3 +574,5 @@ The operator deployed in a certain frame, wait x seconds for the skill to turn o
### Skills Shutdown
Useful for operators that have ammo skills
<!-- markdownlint-disable-file MD026 -->

View File

@@ -1,3 +1,8 @@
---
order: 1
icon: bxs:book
---
# Integration
## API
@@ -70,6 +75,7 @@ Appends a task.
"expiring_medicine": int, // Maximum number of expired Sanity Potion within 48 hours, optional, by default 0
"stone": int, // Maximum number of Originite Prime used, optional, by default 0
"times": int, // Maximum times, optional, by default infinite
"series": int, // Number of series, optional, 1~6
"drops": { // Specifying the number of drops, optional, no specification by default
"30011": int, // Key: item ID; value: number of items. Key refers to resource/item_index.json
"30062": int // OR combination
@@ -87,7 +93,7 @@ Appends a task.
}
```
Supports some of the special stages,Please refer to [autoLocalization example](..\..\tools\AutoLocalization\example\en-us.xaml#L260).
Supports some of the special stages,Please refer to [autoLocalization example](..\..\..\tools\AutoLocalization\example\en-us.xaml#L260).
- `Recruit`
Recruitment
@@ -232,7 +238,7 @@ Supports some of the special stages,Please refer to [autoLocalization example](.
}
```
For more details about auto-copilot JSON, please refer to [Copilot Schema](3.3-COPILOT_SCHEMA.md)
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
- `SSSCopilot`
Copilot auto-combat feature for STATIONARY SECURITY SERVICE
@@ -245,7 +251,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.3-C
}
```
For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-SECURITY_PRESENCE_SCHEMA.md)
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
- `Depot`
Depot recognition
@@ -268,7 +274,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S
```
- `ReclamationAlgorithm`
ReclamationAlgorithm ( A new mode in CN client)
ReclamationAlgorithm ( A new mode in CN client)
```json
{
@@ -276,15 +282,17 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S
"theme": int, // Theme, optional, 1 by default
// 0 - *Fire Within the Sand*
// 1 - *Tales Within the Sand*
"mode": int // Mode, optional, by default 0 (supported by theme *Fire Within the Sand* only)
"mode": int, // Mode, optional, 0 by default
// 0 - Farm badges & construction pts (exiting the stage immediately)
// 1 - Farm Crude Gold (forging Gold at headquarter after purchasing water)
// 1 - Fire Within the Sand: Farm Crude Gold (forging Gold at headquarter after purchasing water)
// Tales Within the Sand: Automatically craft items and load to earn currency
"product": string // Automatically crafted items, optional, glow stick by default
// Suggested fill in the substring
}
```
- `Custom`
Custom Task
Custom Task
```json
{
@@ -298,8 +306,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S
```
- `SingleStep`
Single-step task (currently only supports copilot)
Single-step task (currently only supports copilot)
```json
{
@@ -317,8 +324,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S
```
- `VideoRecognition`
Video recognition, currently only supports operation (combat) video
Video recognition, currently only supports operation (combat) video
```json
{
@@ -410,13 +416,13 @@ Set instance-level parameters
##### List of Key and value
```json
```cpp
enum InstanceOptionKey
{
Invalid = 0,
// Deprecated // MinitouchEnabled = 1, // Is minitouch enabled
// If you can't use minitouch, it's useless to turn it on.
// "1" - on"0" - off
// "1" - on, "0" - off
TouchMode = 2, // Touch mode, minitouch by default
// minitouch | maatouch | adb
DeploymentWithPause = 3, // Deployment with Pause (Works for IS, Copilot and 保全派驻)

View File

@@ -0,0 +1,149 @@
---
order: 8
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.
::: 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.**
:::
::: 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.
:::
## 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.
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.
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:
```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.
}
```
This endpoint must return a JSON formatted Response and must at least meet the following format:
::: 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.
:::
## Report Status Endpoint
When MAA completes a task, it will report the result to 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.
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:
```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.
}
```
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`.
## Example Workflow : Controlling MAA with QQBot
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:
```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.
They provide a command on the QQBot for users to submit their 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.
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.
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.
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.
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.
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.
## Example Workflow : Controlling MAA with a 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:
```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`.
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.
Only after successfully creating a connection to MAA on the website, `getTask` will 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.
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`.

View File

@@ -1,8 +1,15 @@
---
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.
**Note: As JSON format does not support comments, please remove the comments when using the examples below.**
::: tip
As JSON format does not support comments, please remove the comments when using the examples below.
:::
```json
{

View File

@@ -1,3 +1,8 @@
---
order: 4
icon: material-symbols:task
---
# Task Schema
Usage of `resource/tasks.json` and description of each field
@@ -57,7 +62,7 @@ Usage of `resource/tasks.json` and description of each field
"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
"roi": [ 0, 0, 1280, 720 ], // Optional, indicating the range of recognition, in the format [ x, y, width, height ]
// Auto-scaling to 1280 * 720; default when not filled [ 0, 0, 1280, 720 ]
// 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
"cache": true, // Optional, indicates whether the task uses caching or not, default is true;
@@ -147,9 +152,9 @@ 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
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
### Base Task
@@ -164,6 +169,7 @@ Any parameter that is not explicitly defined uses the value of the `baseTask` pa
#### Multi-File Task
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 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.

View File

@@ -1,27 +1,22 @@
<div align="center">
---
icon: ic:round-home
index: true
dir:
order: 0
---
<img alt="LOGO" src="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" width="256" height="256" />
::: center
![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256)
# MaaAssistantArknights
<br>
<div>
<img alt="C++" src="https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus">
</div>
<div>
<img alt="platform" src="https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet">
</div>
<div>
<img alt="license" src="https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights">
<img alt="commit" src="https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4">
</div>
<div>
<img alt="stars" src="https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social">
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social">
</div>
<br>
![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet)
![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)
[简体中文](../readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md)
[简体中文](../zh-cn/readme.md) | [繁體中文](../zh-tw/readme.md) | English | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md)
MAA means MAA Assistant Arknights
@@ -29,36 +24,61 @@ An Arknights assistant
Based on image recognition, helps you to complete daily quests efficiently!
Development in progress ✿✿ヽ(°▽°)ノ✿<br>
Development in progress ✿✿ヽ(°▽°)ノ✿
</div>
:::
## Features
- Auto-battle, drop items recognition, auto-uploading to [Penguin Stats](https://penguin-stats.io/).
- Auto-shifting in the Base, auto efficiency calculation of operators, optimal solution in single room.
- 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 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 upports 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, 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/)
- Depot recognition and upports exporting to [Penguin Stats Planner](https://penguin-stats.cn/planner), [Arknight Tools](https://arkntools.app/#/material), and [ARK-NIGHTS Operator Builds](https://ark-nights.com/settings)
- Support C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP and other interfaces, easy to integrate and call, customize your MAA!
Talk is cheap. Show me the pictures!<br>
Talk is cheap. Show me the pictures!
![en1](https://user-images.githubusercontent.com/99072975/232383365-0b6f657a-c482-4a82-86eb-c129bf676f0c.png)
![en2](https://user-images.githubusercontent.com/99072975/232383370-250eec85-15a1-49cd-8d8d-77545658ae74.png)
```component ImageGrid
{
"imageList": [
{
"light": "image/en-us/readme/1-light.png",
"dark": "image/en-us/readme/1-dark.png"
},
{
"light": "image/en-us/readme/2-light.png",
"dark": "image/en-us/readme/2-dark.png"
},
{
"light": "image/en-us/readme/3-light.png",
"dark": "image/en-us/readme/3-dark.png"
},
{
"light": "image/en-us/readme/4-light.png",
"dark": "image/en-us/readme/4-dark.png"
}
]
}
```
## Download
- [Stable/Beta](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest)<br>
- [Stable/Beta](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest)
- [Nightly](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases)
## How to Use
### Basic Settings
Check [Beginners Guide](./1.0-BEGINNER'S_GUIDE.md) and [User Manual](./1.1-USER_MANUAL.md).
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`
:::
## FAQ
@@ -68,23 +88,78 @@ Check [Beginners Guide](./1.0-BEGINNER'S_GUIDE.md) and [User Manual](./1.1-US
- Custom connection settings.
- Download speed is too slow, or the mirror site is not accessible.
- Download halfway and prompt "login"/"authentication"
- The connection is fine and the task starts, but nothing happens.
Check [FAQ](./1.2-FAQ.md).
Check [FAQ](./manual/faq.md).
## Supports 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.<br>
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)
## Associated Projects
### CLI Support
- New Framework: [MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework)
- New GUI: [MaaAsstElectronUI](https://github.com/MaaAssistantArknights/MaaAsstElectronUI)
- [Co-pilot (auto-battle) site](https://prts.plus): [frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend)
- Backend: [MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter)
- [Website](https://www.maa.plus): [frontend](https://github.com/MaaAssistantArknights/maa-website)
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/intro.md)
## Join us
### Associated Projects
**Currently, the project team is very short of front-end experts. If you have relevant experience, you are welcome to join us!**
- New Framework: [MaaFramework](https://github.com/MaaXYZ/MaaFramework)
- New GUI: [MaaAsstElectronUI](https://github.com/MaaAssistantArknights/MaaX)
- [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://www.maa.plus): [Frontend](https://github.com/MaaAssistantArknights/maa-website)
- Deep Learning: [MaaAI](https://github.com/MaaAssistantArknights/MaaAI)
### 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 uses Chinese (Simplified) as its first language, and all translation entries are in Chinese (Simplified).
[![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/)
### Development Related Information
#### Windows
Check [Development Guide](./develop/development.md).
#### Linux | MacOS
Check [Linux Compiling Tutorial](./develop/linux-tutorial.md)
#### API
- [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)
- [Golang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Golang): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Golang/maa/maa.go)
- [Dart interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Dart)
- [Java interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java)
- [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)
- [Integration Documentation](./protocol/integration.md)
- [Callback Schema](./protocol/callback-schema.md)
- [Task Schema](./protocol/task-schema.md)
- [Copilot Schema](./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 clients adaptation tasks only need screenshots and simple JSON modification.
#### For Novice Users of GitHub
Check [Introduction to Github Pull request Flow](./develop/development.md#introduction-to-github-pull-request-flow).
#### Issue Bot
Check [Issue Bot Usage](./develop/issue-bot-usage.md).
## Acknowledgements
### Open-source Libraries
@@ -101,12 +176,13 @@ If you encounter a bug, or have a strong demand for a certain function, welcome
- ~~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/openstf/minitouch)
- Touch event producer for Android: [Minitouch](https://github.com/DeviceFarmer/minitouch)
- Touch event producer for Android: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch)
- WPF MVVM framework: [Stylet](https://github.com/canton7/Stylet)
- WPF control library: [HandyControl](https://github.com/HandyOrg/HandyControl)
- C# JSON library: [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
- Downloader: [aria2](https://github.com/aria2/aria2)
- WPF control library: [HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls)
- C# Log[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
@@ -122,51 +198,6 @@ Thanks to all friends who contribute to development/testing for making MAA bette
[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
## Development Related Information
### Windows
1. Download pre-built third-party libraries.
```cmd
python maadeps-download.py
```
2. Open `MAA.sln` with Visual Studio 2022, right-click `MaaWpfGui` and set it as the startup project.
3. Right-click `MaaWpfGui` - Properties - Debugging - Enable Local Debugging (so you can hang the breakpoint on the C++ Core).
4. (Optional) If you are going to submit a PR, I recommend you enable [clang-format support](./2.2-DEVELOPMENT.md#using-clang-format-in-visual-studio).
### Linux/MacOS
Please refer to [Linux Tutorial](./2.1-LINUX_TUTORIAL.md)
### API
- [C interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/include/AsstCaller.h): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp)
- [Python interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/asst/asst.py): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py)
- [Golang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Golang/): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Golang/maa/maa.go)
- [Dart interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Dart)
- [Java interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java)
- [Java HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/Readme.md)
- [Rust interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Rust/src/maa_sys): [HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Rust)
- [TypeScript interface](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader)
- [Integration Documentation](./3.1-INTEGRATION.md)
- [Callback Schema](./3.2-CALLBACK_SCHEMA.md)
- [Task Schema](./3.4-TASK_SCHEMA.md)
- [Copilot Schema](./3.3-COPILOT_SCHEMA.md)
### Overseas Clients Adaptation
Please refer to [Overseas clients Adaptation](./2.5-OVERSEAS_CLIENTS_ADAPTATION.md). For the functions already supported by the CN client, most of the overseas clients adaptation tasks only need screenshots and simple JSON modification.
### For Novice Users of GitHub
[Development](./2.2-DEVELOPMENT.md#introduction-to-github-pull-request-flow)
### Issue Bot
Please refer to [Issue Bot Usage](./2.3-ISSUE_BOT_USAGE.md)
## 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).
@@ -175,10 +206,12 @@ Please refer to [Issue Bot Usage](./2.3-ISSUE_BOT_USAGE.md)
## Advertisement
User Group: [Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1), [QQ Group](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)<br>
[Copilot JSON Sharing](https://prts.plus)<br>
[Bilibili Live](https://live.bilibili.com/2808861): live coding on this program<br>
[Technical Discussion (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2)<br>
User Group: [Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1), [QQ Group](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
[Copilot JSON Sharing](https://prts.plus)
[Bilibili Live](https://live.bilibili.com/2808861): live coding on this program
[Technical Discussion (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2)
[Dev Group(QQ Group)](https://jq.qq.com/?_wv=1027&k=JM9oCk3C)
Please click "Star" if you consider it helpful! Thank you for your support!
<!-- markdownlint-disable-file MD034 MD041 -->

View File

@@ -1,79 +0,0 @@
中文|English|日本語|한국어
---|---|---|---
先锋|Vanguard|先鋒|뱅가드
近卫|Guard|前衛|가드
重装|Defender|重装|디펜더
狙击|Sniper|狙撃|스나이퍼
术士|Caster|術師|캐스터
辅助|Supporter|補助|서포터
医疗|Medic|医療|메딕
特种|Specialist|特殊|스페셜리스트
中文|English|日本語|한국어
---|---|---|---
尖兵|Pioneer|先駆兵|척후병
冲锋手|Charger|突撃兵|돌격수
战术家|Tactician|戦術家|전술가
执旗手|Standard Bearer|旗手|기수
强攻手|Centurion|強襲者|공격수
斗士|Fighter|闘士|파이터
术战者|Arts Fighter|術戦士|아츠 파이터
教官|Instructor|教官|교관
领主|Lord|領主|로드
剑豪|Swordmaster|剣豪|소드마스터
武者|Musha|武者|무사
无畏者|Dreadnought|勇士|드레드노트
收割者|Reaper|鎌撃士|리퍼
解放者|Liberator|解放者|해방자
铁卫|Protector|重盾衛士|프로텍터
守护者|Guardian|庇護衛士|가디언
不屈者|Juggernaut|破壊者|저거너트
驭法铁卫|Arts Protector|術技衛士|아츠 프로텍터
决战者|Duelist|決闘者|결전자
要塞|Fortress|堅城砲手|포트리스
速射手|Marksman|速射手|명사수
重射手|Heavyshooter|精密射手|헤비슈터
炮手|Artilleryman|榴弾射手|포격사수
神射手|Deadeye|戦術射手|저격수
散射手|Spreadshooter|散弾射手|산탄사수
攻城手|Besieger|破城射手|공성사수
投掷手|Flinger|投擲手|투척수
中坚术师|Core Caster|中堅術師|코어 캐스터
扩散术师|Splash Caster|拡散術師|스플래시 캐스터
驭械术师|Mech-accord Caster|操機術師|메카 캐스터
阵法术师|Phalanx Caster|法陣術師|진법 캐스터
秘术师|Mystic Caster|秘術師|미스틱 캐스터
链术师|Chain Caster|連鎖術師|체인 캐스터
轰击术师|Blast Caster|爆撃術師|블래스트 캐스터
医师|Medic|医師|메딕
群愈师|Multi-target Medic|群癒師|멀티 타겟 메딕
疗养师|Therapist|療養師|테라피스트
行医|Wandering Medic|放浪医|방랑 메딕
凝滞师|Decel Binder|緩速師|감속자
削弱者|Hexer|呪詛師|약화자
吟游者|Bard|吟遊者|음유시인
护佑者|Abjurer|祈祷師|비호자
召唤师|Summoner|召喚師|소환사
工匠|Artificer|工匠|기능공
处决者|Executor|執行者|처형자
推击手|Push Stroker|推撃手|추격자
伏击客|Ambusher|潜伏者|매복자
钩索师|Hookmaster|鉤縄師|후크마스터
怪杰|Geek|鬼才|기인
行商|Merchant|行商人|상인
陷阱师|Trapmaster|罠師|함정술사
傀儡师|Dollkeeper|傀儡師|인형사
咒愈师|Incantation Medic|呪癒師|주술 메딕
情报官|Agent|偵察兵|에이전트
哨戒铁卫|Sentinel Protector|哨戒衛士|센트리 프로텍터
链愈师|Chain Medic|連鎖癒師|체인 메딕
重剑手|Crusher|重剣士|대검사
巫役|Ritualist|祭儀師|의식술사
猎手|||
本源术师|||
回环射手|||
中文|English|日本語|한국어
---|---|---|---
干员附带单位|Operator attached unit|召喚ユニット|오퍼레이터 추가 유닛
无职业陷阱|No class trap|罠|무직업 함정

599
docs/glossary/en-us.json Normal file
View File

@@ -0,0 +1,599 @@
{
"general": {
"class-先锋": "Vanguard",
"class-近卫": "Guard",
"class-重装": "Defender",
"class-狙击": "Sniper",
"class-术士": "Caster",
"class-辅助": "Supporter",
"class-医疗": "Medic",
"class-特种": "Specialist",
"class-尖兵": "Pioneer",
"class-冲锋手": "Charger",
"class-战术家": "Tactician",
"class-执旗手": "Standard Bearer",
"class-强攻手": "Centurion",
"class-斗士": "Fighter",
"class-术战者": "Arts Fighter",
"class-教官": "Instructor",
"class-领主": "Lord",
"class-剑豪": "Swordmaster",
"class-武者": "Musha",
"class-无畏者": "Dreadnought",
"class-收割者": "Reaper",
"class-解放者": "Liberator",
"class-铁卫": "Protector",
"class-守护者": "Guardian",
"class-不屈者": "Juggernaut",
"class-驭法铁卫": "Arts Protector",
"class-决战者": "Duelist",
"class-要塞": "Fortress",
"class-速射手": "Marksman",
"class-重射手": "Heavyshooter",
"class-炮手": "Artilleryman",
"class-神射手": "Deadeye",
"class-散射手": "Spreadshooter",
"class-攻城手": "Besieger",
"class-投掷手": "Flinger",
"class-中坚术师": "Core Caster",
"class-扩散术师": "Splash Caster",
"class-驭械术师": "Mech-accord Caster",
"class-阵法术师": "Phalanx Caster",
"class-秘术师": "Mystic Caster",
"class-链术师": "Chain Caster",
"class-轰击术师": "Blast Caster",
"class-医师": "Medic",
"class-群愈师": "Multi-target Medic",
"class-疗养师": "Therapist",
"class-行医": "Wandering Medic",
"class-凝滞师": "Decel Binder",
"class-削弱者": "Hexer",
"class-吟游者": "Bard",
"class-护佑者": "Abjurer",
"class-召唤师": "Summoner",
"class-工匠": "Artificer",
"class-处决者": "Executor",
"class-推击手": "Push Stroker",
"class-伏击客": "Ambusher",
"class-钩索师": "Hookmaster",
"class-怪杰": "Geek",
"class-行商": "Merchant",
"class-陷阱师": "Trapmaster",
"class-傀儡师": "Dollkeeper",
"class-咒愈师": "Incantation Medic",
"class-情报官": "Agent",
"class-哨戒铁卫": "Sentinel Protector",
"class-链愈师": "Chain Medic",
"class-重剑手": "Crusher",
"class-巫役": "Ritualist",
"class-猎手": "Hunter",
"class-本源术师": "Origin Caster",
"class-回环射手": "Loop Shooter",
"class-干员附带单位": "Operator attached unit",
"class-无职业陷阱": "No class trap",
"general-明日方舟": "Arknights",
"general-源石": "Originium",
"general-战斗": "Combat",
"general-编队": "Squads",
"general-干员": "Operator",
"general-采购中心": "Store",
"general-招募": "Recruitment",
"general-公开招募": "Recruit",
"general-干员寻访": "Headhunt",
"general-任务": "Mission",
"general-基建": "Base",
"general-仓库": "Depot",
"general-好友": "Friends",
"general-情报": "Info",
"general-理智": "Sanity"
},
"items": {
"items-基础作战记录": "Drill Battle Record",
"items-初级作战记录": "Frontline Battle Record",
"items-中级作战记录": "Tactical Battle Record",
"items-高级作战记录": "Strategic Battle Record",
"items-源岩": "Orirock",
"items-异铁碎片": "Oriron Shard",
"items-双酮": "Diketon",
"items-代糖": "Sugar Substitute",
"items-酯原料": "Ester",
"items-破损装置": "Damaged Device",
"items-固源岩": "Orirock Cube",
"items-异铁": "Oriron",
"items-酮凝集": "Polyketon",
"items-糖": "Sugar",
"items-聚酸酯": "Polyester",
"items-装置": "Device",
"items-固源岩组": "Orirock Cluster",
"items-异铁组": "Oriron Cluster",
"items-酮凝集组": "Aketon",
"items-糖组": "Sugar Pack",
"items-聚酸酯组": "Polyester Pack",
"items-全新装置": "Integrated Device",
"items-扭转醇": "Loxic Kohl",
"items-轻锰矿": "Manganese Ore",
"items-研磨石": "Grindstone",
"items-RMA70-12": "RMA70-12",
"items-凝胶": "Coagulating Gel",
"items-炽合金": "Incandescent Alloy",
"items-晶体元件": "Crystalline Component",
"items-化合切削液": "Compound Cutting Fluid",
"items-半自然溶剂": "Semi-Synthetic Solvent",
"items-提纯源岩": "Orirock Concentration",
"items-异铁块": "Oriron Block",
"items-酮阵列": "Keton Colloid",
"items-糖聚块": "Sugar Lump",
"items-聚酸酯块": "Polyester Lump",
"items-改量装置": "Optimized Device",
"items-白马醇": "White Horse Kohl",
"items-三水锰矿": "Manganese Trihydrate",
"items-五水研磨石": "Grindstone Pentahydrate",
"items-RMA70-24": "RMA70-24",
"items-聚合凝胶": "Polymerized Gel",
"items-炽合金块": "Incandescent Alloy Block",
"items-晶体电路": "Crystalline Circuit",
"items-切削原液": "Cutting Fluid Solution",
"items-精炼溶剂": "Refined Solvent",
"items-聚合剂": "Polymerization Preparation",
"items-双极纳米片": "Bipolar Nanoflake",
"items-D32 钢": "D32 Steel",
"items-晶体电子单元": "Crystalline Electronic Unit",
"items-转质盐组": "Transmuted Salt",
"items-转质盐聚块": "Transmuted Salt Agglomerate",
"items-烧结核凝晶": "Nucleic Crystal Sinter",
"items-环烃聚质": "Aggregate Cyclicene",
"items-褐素纤维": "Fuscous Fiber",
"items-环烃预制体": "Cyclicene Prefab",
"items-固化纤维板": "Solidified Fiber Board",
"items-基础加固建材": "Light Building Material",
"items-进阶加固建材": "Concrete Building Material",
"items-高级加固建材": "Reinforced Building Material",
"items-碳": "Carbon Stick",
"items-碳素": "Carbon Brick",
"items-碳素组": "Carbon Pack",
"items-龙骨": "Keel",
"items-技巧概要·卷 1": "Skill Summary - 1",
"items-技巧概要·卷 2": "Skill Summary - 2",
"items-技巧概要·卷 3": "Skill Summary - 3",
"items-芯片": "Chip",
"items-芯片组": "Chip Pack",
"items-双芯片": "Dualchip",
"items-芯片助剂": "Chip Catalyst",
"items-信物复制品": "Replicated Token",
"items-信物原件": "Original Token",
"items-信物藏品": "Antique Token",
"items-传承信物": "Rare Token",
"items-遗产信物": "Epic Token",
"items-皇家信物": "Royal Token",
"items-私人信件": "Personal Letter",
"items-中坚信物": "Kernel Token",
"items-信用": "Credit",
"items-家具零件": "Furniture Part",
"items-龙门币": "LMD",
"items-采购凭证": "Shop Voucher",
"items-资质凭证": "Commendation Certificate",
"items-高级凭证": "Distinction Certificate",
"items-情报凭证": "Intelligence Certificate",
"items-赤金": "Pure Gold",
"items-合成玉": "Orundum",
"items-至纯源石": "Originite Prime",
"items-源石碎片": "Originium Shard",
"items-寻访参数模型": "Headhunting Parametric Model",
"items-寻访数据契约": "Headhunting Data Contract",
"items-事相碎片": "Information Fragment",
"items-事相结晶": "Event Crystal",
"items-PRTS 剿灭代理卡": "PRTS Proxy Annihilation Card",
"items-合约赏金": "Contract Bounty",
"items-行动协议": "Operation Agreement",
"items-晶化源石": "Crystalized Originium",
"items-应急理智小样": "Emergency Sanity Sampler",
"items-应急理智合剂": "Emergency Sanity Potion",
"items-应急理智顶液": "Top Emergency Sanity Potion",
"items-双人汉堡餐": "Burger Set For Two",
"items-咸蛋黄味巧克力": "Salted Egg Yolk Flavor Chocolate",
"items-招聘许可": "Recruitment Permit",
"items-加急许可": "Expedited Plan",
"items-寻访凭证": "Headhunting Permit",
"items-十连寻访凭证": "Ten-roll Headhunting Permit",
"items-公开招募 ★3 兑换券·I": "★3 Recruitment Exchange Voucher I",
"items-公开招募 ★4 兑换券·I": "★4 Recruitment Exchange Voucher I",
"items-预约干员随机 4 选 1": "Preregister to get 1 of 4 Operators randomly",
"items-干员兑换券": "Operator Voucher",
"items-资深干员特训邀请函": "Senior Operator Training Invitation Letter",
"items-资深干员调用凭证": "Senior Operator Transfer Permit",
"items-高级干员调用凭证": "Top Operator Transfer Permit",
"items-庆典干员凭证": "Thank-You Celebration Headhunting Permit",
"items-火神因陀罗招募券": "Vulcan and Indra Recruitment Voucher",
"items-时装自选凭证": "Outfit Voucher",
"items-高级资深干员特训装置": "Top Operator Training Apparatus",
"items-资深干员特训装置": "Senior Operator Training Apparatus",
"items-高级资深干员特训邀请函": "Advanced Senior Operator Training Invitation Letter",
"items-模组数据块": "Module Data Block",
"items-数据增补条": "Data Supplement Stick",
"items-数据增补仪": "Data Supplement Instrument",
"items-模组数据整合箱": "Integrated Module Data Box",
"items-模组数据整合块": "Integrated Module Data Chunk",
"items-目标生命": "Life Point",
"items-源石锭": "Originium Ingot",
"items-希望": "Hope",
"items-可携带干员数": "Squad Size Limit",
"items-指挥经验": "Command EXP",
"items-生命上限": "Max Life Point",
"items-钥匙": "Key",
"items-灯火": "Light",
"items-投掷次数": "Die Rolls",
"items-护盾": "Objective Shield",
"items-抗干扰指数": "Anti-Interference Index",
"items-坍缩值": "Collapse Value",
"items-坍缩净化": "Collapse Purification",
"items-坍缩等级": "Collapse Level",
"items-蜡烛": "Candle",
"items-昏暗的灵感": "Caliginous Insights",
"items-生机细胞": "Living Cells",
"items-主观想象": "Subjective Imagination",
"items-生态标本": "Ecological Specimens",
"items-理性视阈": "Lucid Acuity",
"items-罗德岛物资补给": "Rhodes Island Supplies",
"items-ID 信息更新卡": "ID Info Update Card",
"items-理智": "Sanity",
"items-声望": "EXP",
"items-演习券": "Drill Plan",
"items-无人机": "Drone"
},
"operators": {
"1": {
"char_285_medic2": "Lancet-2",
"char_286_cast3": "Castle-3",
"char_376_therex": "THRM-EX",
"char_4000_jnight": "'Justice Knight'",
"char_4077_palico": "Terra Research Commission",
"char_4091_ulika": "U-Official",
"char_4093_frston": "Friston-3",
"char_4136_phonor": "PhonoR-0"
},
"2": {
"char_009_12fce": "12F",
"char_500_noirc": "Noir Corne",
"char_501_durin": "Durin",
"char_502_nblade": "Yato",
"char_503_rang": "Rangers"
},
"3": {
"char_120_hibisc": "Hibiscus",
"char_121_lava": "Lava",
"char_122_beagle": "Beagle",
"char_123_fang": "Fang",
"char_124_kroos": "Kroos",
"char_192_falco": "Plume",
"char_208_melan": "Melantha",
"char_209_ardign": "Cardigan",
"char_210_stward": "Steward",
"char_211_adnach": "Adnachiel",
"char_212_ansel": "Ansel",
"char_240_wyvern": "Vanilla",
"char_278_orchid": "Orchid",
"char_281_popka": "Popukar",
"char_282_catap": "Catapult",
"char_283_midn": "Midnight",
"char_284_spot": "Spot",
"char_504_rguard": "Reserve Operator - Melee",
"char_505_rcast": "Reserve Operator - Caster",
"char_506_rmedic": "Reserve Operator - Logistics",
"char_507_rsnipe": "Reserve Operator - Sniper",
"char_514_rdfend": "Reserve Operator - Defender"
},
"4": {
"char_109_fmout": "Gitano",
"char_110_deepcl": "Deepcolor",
"char_117_myrrh": "Myrrh",
"char_118_yuki": "Shirayuki",
"char_126_shotst": "Meteor",
"char_127_estell": "Estelle",
"char_130_doberm": "Dobermann",
"char_133_mm": "May",
"char_137_brownb": "Beehunter",
"char_141_nights": "Haze",
"char_149_scave": "Scavenger",
"char_150_snakek": "Cuora",
"char_151_myrtle": "Myrtle",
"char_159_peacok": "Conviction",
"char_181_flower": "Perfumer",
"char_183_skgoat": "Earthspirit",
"char_185_frncat": "Mousse",
"char_187_ccheal": "Gavial",
"char_190_clour": "Vermeil",
"char_193_frostl": "Frostleaf",
"char_196_sunbr": "Gummy",
"char_198_blackd": "Courier",
"char_199_yak": "Matterhorn",
"char_235_jesica": "Jessica",
"char_236_rope": "Rope",
"char_237_gravel": "Gravel",
"char_253_greyy": "Greyy",
"char_258_podego": "Podenco",
"char_260_durnar": "Dur-nar",
"char_271_spikes": "Arene",
"char_272_strong": "Jaye",
"char_277_sqrrel": "Shaw",
"char_289_gyuki": "Matoimaru",
"char_290_vigna": "Vigna",
"char_298_susuro": "Sussurro",
"char_301_cutter": "Cutter",
"char_302_glaze": "Ambriel",
"char_328_cammou": "Click",
"char_337_utage": "Utage",
"char_347_jaksel": "Jackie",
"char_355_ethan": "Ethan",
"char_366_acdrop": "Aciddrop",
"char_381_bubble": "Bubble",
"char_385_finlpp": "Purestream",
"char_440_pinecn": "Pinecone",
"char_452_bstalk": "Beanstalk",
"char_469_indigo": "Indigo",
"char_484_robrta": "Roberta",
"char_491_humus": "Humus",
"char_4004_pudd": "Pudding",
"char_4041_chnut": "Chestnut",
"char_4062_totter": "Totter",
"char_4063_quartz": "Quartz",
"char_4067_lolxh": "Luo Xiaohei",
"char_4100_caper": "Caper",
"char_4107_vrdant": "Verdant",
"char_4130_luton": "Lutonada"
},
"5": {
"char_002_amiya": "Amiya",
"char_101_sora": "Sora",
"char_102_texas": "Texas",
"char_106_franka": "Franka",
"char_107_liskam": "Liskarm",
"char_108_silent": "Silence",
"char_115_headbr": "Zima",
"char_128_plosis": "Ptilopsis",
"char_129_bluep": "Blue Poison",
"char_131_flameb": "Flamebringer",
"char_135_halo": "Astgenne",
"char_140_whitew": "Lappland",
"char_143_ghost": "Specter",
"char_144_red": "Projekt Red",
"char_145_prove": "Provence",
"char_148_nearl": "Nearl",
"char_154_morgan": "Morgan",
"char_155_tiger": "Indra",
"char_157_dagda": "Dagda",
"char_158_milu": "Firewatch",
"char_163_hpsts": "Vulcan",
"char_164_nightm": "Nightmare",
"char_166_skfire": "Skyfire",
"char_171_bldsk": "Warfarin",
"char_173_slchan": "Cliffheart",
"char_174_slbell": "Pramanix",
"char_194_leto": "Leto",
"char_195_glassb": "Istina",
"char_201_moeshd": "Croissant",
"char_204_platnm": "Platinum",
"char_214_kafka": "Kafka",
"char_215_mantic": "Manticore",
"char_218_cuttle": "Andreana",
"char_219_meteo": "Meteorite",
"char_220_grani": "Grani",
"char_226_hmau": "Hung",
"char_230_savage": "Savage",
"char_241_panda": "FEater",
"char_242_otter": "Mayer",
"char_243_waaifu": "Waai Fu",
"char_252_bibeak": "Bibeak",
"char_254_vodfox": "Shamare",
"char_261_sddrag": "Reed",
"char_265_sophia": "Whislash",
"char_274_astesi": "Astesia",
"char_275_breeze": "Breeze",
"char_279_excu": "Executor",
"char_294_ayer": "Ayerscarpe",
"char_297_hamoni": "Harmonie",
"char_304_zebra": "Heavyrain",
"char_306_leizi": "Leizi",
"char_308_swire": "Swire",
"char_325_bison": "Bison",
"char_326_glacus": "Glaucus",
"char_333_sidero": "Sideroca",
"char_336_folivo": "Scene",
"char_338_iris": "Iris",
"char_341_sntlla": "Santalla",
"char_343_tknogi": "Tsukinogi",
"char_344_beewax": "Beeswax",
"char_345_folnic": "Folinic",
"char_346_aosta": "Aosta",
"char_348_ceylon": "Ceylon",
"char_349_chiave": "Chiave",
"char_356_broca": "Broca",
"char_363_toddi": "Toddifons",
"char_365_aprl": "April",
"char_367_swllow": "GreyThroat",
"char_369_bena": "Bena",
"char_373_lionhd": "Leonhardt",
"char_378_asbest": "Asbestos",
"char_379_sesa": "Sesa",
"char_383_snsant": "Snowsant",
"char_388_mint": "Mint",
"char_401_elysm": "Elysium",
"char_402_tuye": "Tuye",
"char_405_absin": "Absinthe",
"char_411_tomimi": "Tomimi",
"char_415_flint": "Flint",
"char_421_crow": "La Pluma",
"char_422_aurora": "Aurora",
"char_431_ashlok": "Ashlock",
"char_433_windft": "Windflit",
"char_436_whispr": "Whisperain",
"char_446_aroma": "Aroma",
"char_449_glider": "Honeyberry",
"char_451_robin": "Robin",
"char_455_nothin": "Mr. Nothing",
"char_457_blitz": "Blitz",
"char_458_rfrost": "Frost",
"char_459_tachak": "Tachanka",
"char_464_cement": "Cement",
"char_466_qanik": "Qanipalaat",
"char_473_mberry": "Mulberry",
"char_475_akafyu": "Akafuyu",
"char_476_blkngt": "Blacknight",
"char_478_kirara": "Kirara",
"char_486_takila": "Tequila",
"char_488_buildr": "Poncirus",
"char_489_serum": "Corroserum",
"char_492_quercu": "Quercus",
"char_493_firwhl": "Firewhistle",
"char_494_vendla": "Vendela",
"char_496_wildmn": "Wild Mane",
"char_497_ctable": "Cantabile",
"char_498_inside": "Insider",
"char_499_kaitou": "Diamante",
"char_508_aguard": "Sharp",
"char_509_acast": "Pith",
"char_510_amedic": "Touch",
"char_511_asnipe": "Stormeye",
"char_512_aprot": "Shalem",
"char_513_apionr": "Tulip",
"char_1011_lava2": "Lava the Purgatory",
"char_1021_kroos2": "Kroos the Keen Glint",
"char_1024_hbisc2": "Hibiscus the Purifier",
"char_1027_greyy2": "Greyy the Lightningbearer",
"char_1030_noirc2": "Rathalos S Noir Corne",
"char_1036_fang2": "Fang the Fire-sharpened",
"char_4006_melnte": "Melanite",
"char_4013_kjera": "Kjera",
"char_4014_lunacu": "Lunacub",
"char_4015_spuria": "Spuria",
"char_4016_kazema": "Kazemaru",
"char_4017_puzzle": "Puzzle",
"char_4019_ncdeer": "Nine-Colored Deer",
"char_4023_rfalcn": "Kestrel",
"char_4025_aprot2": "Shalem",
"char_4032_provs": "Proviso",
"char_4036_forcer": "Enforcer",
"char_4040_rockr": "Rockrock",
"char_4043_erato": "Erato",
"char_4045_heidi": "Heidi",
"char_4047_pianst": "Czerny",
"char_4054_malist": "Minimalist",
"char_4066_highmo": "Highmore",
"char_4071_peper": "Paprika",
"char_4078_bdhkgt": "Jieyun",
"char_4079_haini": "Lucilla",
"char_4081_warmy": "Warmy",
"char_4083_chimes": "Wind Chimes",
"char_4102_threye": "Valarqvin",
"char_4104_coldst": "Coldshot",
"char_4105_almond": "Almond",
"char_4106_bryota": "Bryophyta",
"char_4109_baslin": "Bassline",
"char_4110_delphn": "Delphine",
"char_4114_harold": "Harold",
"char_4119_wanqin": "Wanqing",
"char_4122_grabds": "Grain Buds",
"char_4124_iana": "Iana",
"char_4125_rdoc": "Doc",
"char_4126_fuze": "Fuze",
"char_4131_odda": "Odda",
"char_4137_udflow": "Underflow"
},
"6": {
"char_003_kalts": "Kal'tsit",
"char_010_chen": "Ch'en",
"char_017_huang": "Blaze",
"char_103_angel": "Exusiai",
"char_112_siege": "Siege",
"char_113_cqbw": "W",
"char_134_ifrit": "Ifrit",
"char_136_hsguma": "Hoshiguma",
"char_147_shining": "Shining",
"char_172_svrash": "SilverAsh",
"char_179_cgbird": "Nightingale",
"char_180_amgoat": "Eyjafjalla",
"char_188_helage": "Hellagur",
"char_197_poca": "Rosa",
"char_202_demkni": "Saria",
"char_206_gnosis": "Gnosis",
"char_213_mostma": "Mostima",
"char_222_bpipe": "Bagpipe",
"char_225_haak": "Aak",
"char_245_cello": "Virtuosa",
"char_248_mgllan": "Magallan",
"char_249_mlyss": "Muelsyse",
"char_250_phatom": "Phantom",
"char_263_skadi": "Skadi",
"char_264_f12yin": "Mountain",
"char_291_aglina": "Angelina",
"char_293_thorns": "Thorns",
"char_300_phenxi": "Fiammetta",
"char_311_mudrok": "Mudrock",
"char_322_lmlee": "Lee",
"char_332_archet": "Archetto",
"char_340_shwaz": "Schwarz",
"char_350_surtr": "Surtr",
"char_358_lisa": "Suzuran",
"char_362_saga": "Saga",
"char_377_gdglow": "Goldenglow",
"char_391_rosmon": "Rosmontis",
"char_400_weedy": "Weedy",
"char_416_zumama": "Eunectes",
"char_420_flamtl": "Flametail",
"char_423_blemsh": "Blemishine",
"char_426_billro": "Carnelian",
"char_427_vigil": "Vigil",
"char_430_fartth": "Fartooth",
"char_437_mizuki": "Mizuki",
"char_456_ash": "Ash",
"char_472_pasngr": "Passenger",
"char_474_glady": "Gladiia",
"char_479_sleach": "Saileach",
"char_485_pallas": "Pallas",
"char_1012_skadi2": "Skadi the Corrupting Heart",
"char_1013_chen2": "Ch'en the Holungday",
"char_1014_nearl2": "Nearl the Radiant Knight",
"char_1016_agoat2": "Eyjafjalla the Hvít Aska",
"char_1020_reed2": "Reed the Flame Shadow",
"char_1023_ghost2": "Specter the Unchained",
"char_1026_gvial2": "Gavial the Invincible",
"char_1028_texas2": "Texas the Omertosa",
"char_1029_yato2": "Kirin R Yato",
"char_1031_slent2": "Silence the Paradigmatic",
"char_1032_excu2": "Executor the Ex Foedere",
"char_1033_swire2": "Swire the Elegant Wit",
"char_1034_jesca2": "Jessica the Liberated",
"char_1035_wisdel": "Wiš'adel",
"char_2012_typhon": "Typhon",
"char_2013_cerber": "Ceobe",
"char_2014_nian": "Nian",
"char_2015_dusk": "Dusk",
"char_2023_ling": "Ling",
"char_2024_chyue": "Chongyue",
"char_2025_shu": "Shu",
"char_4009_irene": "Irene",
"char_4011_lessng": "Lessing",
"char_4027_heyak": "Ho'olheyak",
"char_4039_horn": "Horn",
"char_4042_lumen": "Lumen",
"char_4046_ebnhlz": "Ebenholz",
"char_4048_doroth": "Dorothy",
"char_4055_bgsnow": "Pozëmka",
"char_4064_mlynar": "Młynar",
"char_4065_judge": "Penance",
"char_4072_ironmn": "Stainless",
"char_4080_lin": "Lin",
"char_4082_qiubai": "Qiubai",
"char_4087_ines": "Ines",
"char_4088_hodrer": "Hoederer",
"char_4098_vvana": "Viviana",
"char_4116_blkkgt": "Degenbrecher",
"char_4117_ray": "Ray",
"char_4121_zuole": "Zuo Le",
"char_4123_ela": "Ela",
"char_4132_ascln": "Ascalon",
"char_4133_logos": "Logos",
"char_4134_cetsyr": "Civilight Eterna",
"char_4145_ulpia": "Ulpianus"
}
}
}

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