Compare commits
534 Commits
v5.2.1
...
feat/githu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02961e60e9 | ||
|
|
312e0296bd | ||
|
|
0a6e7c794b | ||
|
|
c60d5544e9 | ||
|
|
d52b1e13ec | ||
|
|
05668443fc | ||
|
|
b495a16a0a | ||
|
|
c6fa1a7258 | ||
|
|
c3bb7c8d17 | ||
|
|
530e32f1a1 | ||
|
|
d8f364aa58 | ||
|
|
40f33fd2f2 | ||
|
|
c632054716 | ||
|
|
38c1f77326 | ||
|
|
f74004d954 | ||
|
|
7eaf4f2de3 | ||
|
|
73458d38ca | ||
|
|
e6eef5a03d | ||
|
|
e20f429ae4 | ||
|
|
434d05bcd9 | ||
|
|
1ea5104aee | ||
|
|
e18a46acfa | ||
|
|
fcf25b2a2a | ||
|
|
624cef1e8c | ||
|
|
9b7f1e36e0 | ||
|
|
6963037ba0 | ||
|
|
2642053096 | ||
|
|
1da98683f3 | ||
|
|
ed4c7c0a04 | ||
|
|
05870cc6c7 | ||
|
|
7a66c5315d | ||
|
|
68e56325b6 | ||
|
|
140db8e274 | ||
|
|
8c3643b691 | ||
|
|
cef5797419 | ||
|
|
8535c53289 | ||
|
|
aa032b5790 | ||
|
|
b49a495f78 | ||
|
|
970e45209a | ||
|
|
edbf4aefda | ||
|
|
87ea4fe357 | ||
|
|
694572694d | ||
|
|
8b90bd7968 | ||
|
|
22221cce21 | ||
|
|
f93f7979e1 | ||
|
|
b3d991070e | ||
|
|
df9791e5d9 | ||
|
|
4921fb7558 | ||
|
|
dadbfd92d0 | ||
|
|
25e9e0d745 | ||
|
|
44a0b20c49 | ||
|
|
7d8cb51689 | ||
|
|
f10eb36229 | ||
|
|
5a303d9c34 | ||
|
|
4473a45e63 | ||
|
|
48f9188fb4 | ||
|
|
f761605bfc | ||
|
|
2ba2db3c5a | ||
|
|
ff8ba97918 | ||
|
|
17f01726b4 | ||
|
|
1b8911f550 | ||
|
|
9f5e502d42 | ||
|
|
1f49d6363d | ||
|
|
1e55c956b7 | ||
|
|
e97b54173b | ||
|
|
496af0800f | ||
|
|
34d0a637cf | ||
|
|
43c5306ba4 | ||
|
|
718de46ac7 | ||
|
|
b8df114b73 | ||
|
|
fb560915d5 | ||
|
|
994be62578 | ||
|
|
41a87e3806 | ||
|
|
78545b8dfe | ||
|
|
e7bff44fe1 | ||
|
|
a530b93b5f | ||
|
|
fd9c0d3f6e | ||
|
|
e4e22d3c51 | ||
|
|
a50c00ea8f | ||
|
|
a0608eb314 | ||
|
|
a340d515ad | ||
|
|
7891ba2c8d | ||
|
|
6c61e42d9b | ||
|
|
11cc3b04b9 | ||
|
|
6b63576798 | ||
|
|
c2f71bd49b | ||
|
|
7071432e6c | ||
|
|
c6a9378dbf | ||
|
|
57fbe81be1 | ||
|
|
b6ba67b2b8 | ||
|
|
20b6cea436 | ||
|
|
e3d1359626 | ||
|
|
4b7cc9dc1e | ||
|
|
b2d06dd24d | ||
|
|
002bf0ab02 | ||
|
|
2baf567120 | ||
|
|
44aa11eccc | ||
|
|
3c50d37ddd | ||
|
|
860bd8f155 | ||
|
|
89213dfbff | ||
|
|
265c1b4ffe | ||
|
|
112db812fb | ||
|
|
aec6c0c070 | ||
|
|
ad6ba8f81c | ||
|
|
f20c839af5 | ||
|
|
0aae618a29 | ||
|
|
2bc9796c0c | ||
|
|
37aff29443 | ||
|
|
bc14fcb0dd | ||
|
|
3f858de1f3 | ||
|
|
a624ffc461 | ||
|
|
a0c90d4d8d | ||
|
|
b4c8112322 | ||
|
|
b59fdc8db8 | ||
|
|
f6f458a660 | ||
|
|
9ad82247db | ||
|
|
ef09a3ef12 | ||
|
|
fa7f04c55b | ||
|
|
5252f67faf | ||
|
|
01ffe4886e | ||
|
|
5bce745838 | ||
|
|
6b0e1ef9ac | ||
|
|
4ff0343916 | ||
|
|
ec7720e3d0 | ||
|
|
37a8e5b0d9 | ||
|
|
8bfb223dac | ||
|
|
adf18f00af | ||
|
|
6d72bb6e24 | ||
|
|
07669bc806 | ||
|
|
a586c526a0 | ||
|
|
5e66b9bfc8 | ||
|
|
c587b11904 | ||
|
|
550353f9f9 | ||
|
|
ce00d41141 | ||
|
|
973582a52e | ||
|
|
a36c8f7644 | ||
|
|
b7561c5b17 | ||
|
|
b5cf46ddd0 | ||
|
|
e295c1a830 | ||
|
|
5003df7cf8 | ||
|
|
35e1af29cd | ||
|
|
357353e23c | ||
|
|
fbd42db377 | ||
|
|
80c1b50254 | ||
|
|
3e3aad1569 | ||
|
|
3a18ab2970 | ||
|
|
0d8c150c21 | ||
|
|
55a6c41216 | ||
|
|
a4a8bf644d | ||
|
|
f4cc72a44b | ||
|
|
114bd8d2d0 | ||
|
|
d04838b846 | ||
|
|
063c8d54ef | ||
|
|
f815d850e6 | ||
|
|
b5eb2a004f | ||
|
|
fa51662273 | ||
|
|
ab484ffdc4 | ||
|
|
3efe3cc698 | ||
|
|
9f242800e8 | ||
|
|
c170147162 | ||
|
|
9eaa4a4afa | ||
|
|
14e546b4c3 | ||
|
|
4ae002e1bb | ||
|
|
8cc725f3e8 | ||
|
|
718d2d07fa | ||
|
|
f5dea882d0 | ||
|
|
98ecb301b4 | ||
|
|
54dcd2736a | ||
|
|
d2e5001e7e | ||
|
|
d6572b2c7e | ||
|
|
3e5b6dd4fb | ||
|
|
ccfcbd830d | ||
|
|
895a22fcfe | ||
|
|
ff41a13170 | ||
|
|
c9744cb5f0 | ||
|
|
d1a60aa1bb | ||
|
|
d1b581a3f5 | ||
|
|
3d862ec61b | ||
|
|
198043b865 | ||
|
|
2dbd8fc83a | ||
|
|
fd53a3e516 | ||
|
|
1a40aa3fae | ||
|
|
268cfebd13 | ||
|
|
f4572f9f94 | ||
|
|
90d3c140fe | ||
|
|
f2ca2e48aa | ||
|
|
4f1ef65a9c | ||
|
|
1b2cc439f2 | ||
|
|
33bca2e82a | ||
|
|
6d9b12eff6 | ||
|
|
d6a65ec5db | ||
|
|
825f3afe3f | ||
|
|
229d280724 | ||
|
|
7f9c5c0b8c | ||
|
|
ed407de99c | ||
|
|
34d8a26c0a | ||
|
|
7ef398bd54 | ||
|
|
60d58bf93e | ||
|
|
47aa717a4d | ||
|
|
ea5ae36654 | ||
|
|
7c58f1d493 | ||
|
|
ba9c282d96 | ||
|
|
b704c9a941 | ||
|
|
0e2e1222a9 | ||
|
|
b1ecfd8304 | ||
|
|
327115b003 | ||
|
|
4fff19a738 | ||
|
|
624b9834b0 | ||
|
|
c0b3ea28ea | ||
|
|
6ec82116b7 | ||
|
|
1fc47ab475 | ||
|
|
3286bf6164 | ||
|
|
f72d36c67b | ||
|
|
d03a5cfc2c | ||
|
|
77ccb26512 | ||
|
|
f078e19ce1 | ||
|
|
0d8103777c | ||
|
|
1640f99668 | ||
|
|
83412902fb | ||
|
|
742898c624 | ||
|
|
9e8009299c | ||
|
|
bed66f2c7b | ||
|
|
ce4e8692a7 | ||
|
|
67cb180ba8 | ||
|
|
09baaf2c20 | ||
|
|
1102d933c8 | ||
|
|
b3f7af41ef | ||
|
|
b70e1ef492 | ||
|
|
3532b4483e | ||
|
|
ac43a1d5c9 | ||
|
|
325ca10c70 | ||
|
|
8cc7fe3e33 | ||
|
|
39f09a4142 | ||
|
|
9e3fd79b89 | ||
|
|
11b64cae3a | ||
|
|
0f14c11e3d | ||
|
|
e1c9705ff2 | ||
|
|
8c45959ea6 | ||
|
|
655e03f815 | ||
|
|
47f912e998 | ||
|
|
6c19c1ccbd | ||
|
|
ef458b41fd | ||
|
|
f9a216ed2f | ||
|
|
063e44a8b8 | ||
|
|
065c09b9d6 | ||
|
|
e8eda19c02 | ||
|
|
66cde22297 | ||
|
|
f89d71d5c1 | ||
|
|
41e6c76d56 | ||
|
|
33cb6ef8eb | ||
|
|
2e05ebb696 | ||
|
|
f62162317e | ||
|
|
442c4218d4 | ||
|
|
42e4e0223d | ||
|
|
3fa6e72604 | ||
|
|
10dd024bcf | ||
|
|
8c245946a6 | ||
|
|
c8b32ba265 | ||
|
|
ca557d7000 | ||
|
|
23e60d386c | ||
|
|
cc15014b9c | ||
|
|
d4d392819e | ||
|
|
1bf5a67c87 | ||
|
|
53df9b4e4d | ||
|
|
c6d332d625 | ||
|
|
3b08454352 | ||
|
|
6240ca54ed | ||
|
|
6c4d5951ae | ||
|
|
1652647f17 | ||
|
|
7c57454c1b | ||
|
|
78f6ca6fa8 | ||
|
|
d44a5f8257 | ||
|
|
f76a8627cc | ||
|
|
84bee958ce | ||
|
|
d4d809dd45 | ||
|
|
5b7029ca76 | ||
|
|
9855f565ab | ||
|
|
4d0304b804 | ||
|
|
ccd6fbef29 | ||
|
|
de61d407f6 | ||
|
|
106bba6679 | ||
|
|
303e0dd036 | ||
|
|
fff1e5d7ff | ||
|
|
33823e1c81 | ||
|
|
321347fa6b | ||
|
|
fa355d48bc | ||
|
|
c413b14df3 | ||
|
|
fc69d98d22 | ||
|
|
43dd9b5250 | ||
|
|
62bac0c6b9 | ||
|
|
92ffafb769 | ||
|
|
8c9cec989a | ||
|
|
b727e1d152 | ||
|
|
c69b810619 | ||
|
|
295743e448 | ||
|
|
297f1612fe | ||
|
|
49c5b3dff5 | ||
|
|
4629705d17 | ||
|
|
2dec6372e0 | ||
|
|
37fe1c97ea | ||
|
|
f3b02fbc98 | ||
|
|
8254c5b0fd | ||
|
|
b6f2df28b3 | ||
|
|
f7d30de263 | ||
|
|
e2c43fc437 | ||
|
|
22ff69e89a | ||
|
|
993ddae3bd | ||
|
|
e5813e6430 | ||
|
|
cda4a9b498 | ||
|
|
3e4ad00c20 | ||
|
|
86fc8a87fd | ||
|
|
fed45e98b1 | ||
|
|
3edd84f137 | ||
|
|
b79e3e7516 | ||
|
|
b05332fd04 | ||
|
|
15cde5284b | ||
|
|
b5ae4f9fbc | ||
|
|
8904bc1eab | ||
|
|
e0e49b5542 | ||
|
|
1e7e5b6d9f | ||
|
|
e5fb933b98 | ||
|
|
c343756e30 | ||
|
|
ce4c9cd87c | ||
|
|
748a602327 | ||
|
|
8df651bb82 | ||
|
|
b4fc3528de | ||
|
|
fb638a9c08 | ||
|
|
8bc3558cb5 | ||
|
|
28333e3f75 | ||
|
|
c5cfd44a21 | ||
|
|
072057beff | ||
|
|
e35b09b19d | ||
|
|
f52dbd116e | ||
|
|
031ff11bd8 | ||
|
|
976f813ad2 | ||
|
|
2f8a5481f7 | ||
|
|
750aa2ac67 | ||
|
|
41e488d2e7 | ||
|
|
a01c5756a1 | ||
|
|
0dc3ad50d3 | ||
|
|
a429b634f5 | ||
|
|
75bb86b573 | ||
|
|
a57d719ed5 | ||
|
|
cf98c29553 | ||
|
|
e27ff5502a | ||
|
|
b396f37221 | ||
|
|
a6f533afc6 | ||
|
|
02decce31e | ||
|
|
ecab6b1ad2 | ||
|
|
6d7d595354 | ||
|
|
17fca4e1ea | ||
|
|
58b18c3782 | ||
|
|
7ab466a17b | ||
|
|
56c939d0e5 | ||
|
|
73a3ba7f48 | ||
|
|
c4b94ace10 | ||
|
|
94efd15f91 | ||
|
|
47b38d5416 | ||
|
|
1f9aa4c7a7 | ||
|
|
15eb4f87d8 | ||
|
|
b42f010e9d | ||
|
|
63f3b90f1c | ||
|
|
32d06df501 | ||
|
|
175c396053 | ||
|
|
de5dd23b36 | ||
|
|
16036b1b56 | ||
|
|
64af0f5202 | ||
|
|
465c389c07 | ||
|
|
9ec3c9f158 | ||
|
|
3a18e5799a | ||
|
|
051c22ebdb | ||
|
|
5cc8f751f2 | ||
|
|
f8da676839 | ||
|
|
a722071115 | ||
|
|
45e8ce93b5 | ||
|
|
ae41b5fc5c | ||
|
|
d0e3cba92e | ||
|
|
9606274a28 | ||
|
|
4dd3f0cba3 | ||
|
|
752b2d7066 | ||
|
|
cbcfeac0de | ||
|
|
4fd6030779 | ||
|
|
41f2b72a9f | ||
|
|
222b82f3f5 | ||
|
|
b3cf1a5b01 | ||
|
|
4bc1e22058 | ||
|
|
7251099996 | ||
|
|
cbf4bbcf6a | ||
|
|
1ddf8f0236 | ||
|
|
5e2f206d95 | ||
|
|
cdd7e6cb12 | ||
|
|
6eb85ff640 | ||
|
|
6c62a8462d | ||
|
|
fa98339687 | ||
|
|
e9b485ac5b | ||
|
|
ad63509588 | ||
|
|
212836c466 | ||
|
|
4601501939 | ||
|
|
d109106dcb | ||
|
|
6896df67d4 | ||
|
|
6b0f7ea6ef | ||
|
|
cdec1e1925 | ||
|
|
d03571fb2a | ||
|
|
214744aa69 | ||
|
|
f6bf20f7e3 | ||
|
|
c5d6bfa506 | ||
|
|
67456c0cb2 | ||
|
|
da78caa4f2 | ||
|
|
40c736ea46 | ||
|
|
b5f9b7601e | ||
|
|
d70ce66cb4 | ||
|
|
f0b8774d35 | ||
|
|
62dbe304ca | ||
|
|
d7034ab3f4 | ||
|
|
76b03fdda9 | ||
|
|
9a81ebe8df | ||
|
|
79cc49c512 | ||
|
|
e00c98ed11 | ||
|
|
928e2994a2 | ||
|
|
43cd479aa7 | ||
|
|
4a59b32911 | ||
|
|
7677fac783 | ||
|
|
8fffaa2eb0 | ||
|
|
978f35967e | ||
|
|
6bed31fe28 | ||
|
|
49f24e42f1 | ||
|
|
c70cd85a04 | ||
|
|
2b8f320ee1 | ||
|
|
e16ec680b2 | ||
|
|
afbe5e2e03 | ||
|
|
e36b185505 | ||
|
|
5f31cd9ab0 | ||
|
|
a7d7a65a97 | ||
|
|
ae93554f58 | ||
|
|
23945022e0 | ||
|
|
605dcda98a | ||
|
|
0165469ad0 | ||
|
|
949618ca3c | ||
|
|
0d1f415172 | ||
|
|
362a872b00 | ||
|
|
b3d9f6b64c | ||
|
|
7f4854c47d | ||
|
|
60af8c0f14 | ||
|
|
8673a36de4 | ||
|
|
82c6425c77 | ||
|
|
0fe64b28e0 | ||
|
|
60446de766 | ||
|
|
36b7c4191c | ||
|
|
8dcfcc06a8 | ||
|
|
34dd31fbbd | ||
|
|
704145a3d9 | ||
|
|
4129033c3f | ||
|
|
a20f4097e4 | ||
|
|
9dbf4e85ad | ||
|
|
265ba6d2a6 | ||
|
|
85d508a76f | ||
|
|
6f6dccf02e | ||
|
|
084fbb6f11 | ||
|
|
9c3663c5d9 | ||
|
|
0b08f525b2 | ||
|
|
adcfb3dcf4 | ||
|
|
1f8bb96cc4 | ||
|
|
35e399c29d | ||
|
|
e675b4bd21 | ||
|
|
9c843a9dc5 | ||
|
|
0caf181bca | ||
|
|
58a64c05a9 | ||
|
|
414c7201eb | ||
|
|
711b0ea043 | ||
|
|
cc970f60f2 | ||
|
|
c12362a34b | ||
|
|
7d91810871 | ||
|
|
7d847eaf0a | ||
|
|
78258ccc6f | ||
|
|
682b1458ee | ||
|
|
42154a24d7 | ||
|
|
fa08675fc5 | ||
|
|
a90792d17a | ||
|
|
772b3b010e | ||
|
|
167014fcef | ||
|
|
ce012da241 | ||
|
|
2ed9e994a4 | ||
|
|
3c151f8422 | ||
|
|
8a02c9d75a | ||
|
|
fe742acb1c | ||
|
|
72baf23452 | ||
|
|
5e9055d5d8 | ||
|
|
da8b1b669f | ||
|
|
c6949bb76a | ||
|
|
ff7136447a | ||
|
|
1bd8dce63a | ||
|
|
e94cbb1b7c | ||
|
|
646d1e2172 | ||
|
|
ff1164776b | ||
|
|
bc7de558e9 | ||
|
|
5e03372d56 | ||
|
|
c668ebc4a9 | ||
|
|
e1526c939a | ||
|
|
fd5d523460 | ||
|
|
bc01f3bf25 | ||
|
|
a2fcfadba2 | ||
|
|
c2bd0133ba | ||
|
|
cf2455770d | ||
|
|
0c4e9958fd | ||
|
|
01c96431ce | ||
|
|
1e856c9a28 | ||
|
|
4c031484af | ||
|
|
d01d7b1368 | ||
|
|
03be3e77d6 | ||
|
|
a162f20f73 | ||
|
|
a469b1d4ca | ||
|
|
c084ad2593 | ||
|
|
9960c5b7cd | ||
|
|
ec27c41840 | ||
|
|
11bc14592e | ||
|
|
c102233a54 | ||
|
|
eba917d38a | ||
|
|
037991a66b | ||
|
|
b532155b42 | ||
|
|
c2d014a74d | ||
|
|
827594cc29 | ||
|
|
fb2f88e71b | ||
|
|
27bd5054fa | ||
|
|
1ddd7023bc | ||
|
|
09c04eec27 | ||
|
|
21cf20fea8 | ||
|
|
070662c513 | ||
|
|
0368f6e31a | ||
|
|
eb9fc59e0a | ||
|
|
b0a76fea8d | ||
|
|
5a65afbb49 | ||
|
|
a22212c558 | ||
|
|
936db94023 | ||
|
|
c0aee71d7b |
8
.github/ISSUE_TEMPLATE/cn-bug-report.yaml
vendored
@@ -9,9 +9,9 @@ body:
|
||||
options:
|
||||
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
|
||||
required: true
|
||||
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
|
||||
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
|
||||
required: true
|
||||
- label: 我已查看最新测试版本的更新内容,并未提及该 bug 已被修复的情况
|
||||
- label: 我已查看最新测试版本的更新内容,并未提及该 Bug 已被修复的情况
|
||||
required: true
|
||||
- label: 我已检查了置顶议题(pinned issue),确认我的问题未被提及
|
||||
required: true
|
||||
@@ -27,7 +27,7 @@ body:
|
||||
attributes:
|
||||
label: Version
|
||||
description: >-
|
||||
请提供 MAA 版本。可在 MAA -> 设置 -> 软件更新中找到。(点击图标可复制)
|
||||
请提供 MAA 版本。可在 MAA -> 设置 -> 软件更新中找到(点击图标可复制)。
|
||||
placeholder: |
|
||||
Resource Version:
|
||||
UI Version:
|
||||
@@ -39,7 +39,7 @@ body:
|
||||
attributes:
|
||||
label: 日志文件
|
||||
description: |
|
||||
**上传 `debug` 文件夹中的 `asst.log` 和 `gui.log` 日志文件,并说明问题出现的大致时间点**
|
||||
**请在关闭MAA后,上传 `debug` 文件夹中的 `asst.log` 和 `gui.log` 日志文件,并说明问题出现的大致时间点**
|
||||
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -7,9 +7,9 @@ body:
|
||||
attributes:
|
||||
label: 在提问之前...
|
||||
options:
|
||||
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
|
||||
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
|
||||
required: true
|
||||
- label: 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)
|
||||
- label: 我基本确定这是一个新功能/建议,而不是遇到了 Bug(不确定的话请附上日志)
|
||||
required: true
|
||||
- type: textarea
|
||||
id: describe
|
||||
|
||||
81
.github/ISSUE_TEMPLATE/cn-mumu-report.yaml
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
name: MuMu 截图增强反馈(使用中文)
|
||||
description: 有关 MuMu 截图增强功能的集中反馈
|
||||
labels: ['mumu api']
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: checks
|
||||
attributes:
|
||||
label: 在提问之前...
|
||||
options:
|
||||
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
|
||||
required: true
|
||||
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
|
||||
required: true
|
||||
- label: 我已检查了置顶议题(Pinned Issue),确认我的问题未被提及
|
||||
required: true
|
||||
- label: 我正在使用最新的 MAA 内测版本和最新的**官版** MuMu 模拟器
|
||||
required: true
|
||||
- label: 我已参考文档确定安装路径、实例编号、屏幕编号填写正确,并确认在关闭截图增强模式后问题消失
|
||||
required: true
|
||||
- label: 我未开启高帧率模式,且显存使用策略为“画面表现更好”
|
||||
required: false
|
||||
- label: 我正在使用后台保活功能,并确定该问题仅在开启后台保活时出现
|
||||
required: false
|
||||
- type: textarea
|
||||
id: describe
|
||||
attributes:
|
||||
label: 问题描述
|
||||
description: 描述问题时请尽可能详细
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: >-
|
||||
请提供 MAA 版本和 MuMu 版本。MAA 版本可在 MAA -> 设置 -> 软件更新中找到(点击图标可复制)。MuMu 版本可在右上角菜单按钮 -> 关于 MuMu 中找到。
|
||||
placeholder: |
|
||||
Resource Version:
|
||||
UI Version:
|
||||
Core Version:
|
||||
MuMu 版本号:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: MAA 日志文件
|
||||
description: |
|
||||
**上传 `debug` 文件夹中的 `asst.log` 和 `gui.log` 日志文件,并说明问题出现的大致时间点**
|
||||
**请直接将完整的文件拖拽进来,而非自己裁切或复制的片段;若文件体积过大可压缩后再上传**
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: mumulogs
|
||||
attributes:
|
||||
label: MuMu 问题诊断
|
||||
description: |
|
||||
**在 MuMu 右上角菜单按钮 -> 问题诊断 中点击 复制配置信息,并将全部内容粘贴进来。**
|
||||
**注意隐去 电脑出口IP地址 等以保护个人隐私**
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: 截图
|
||||
description: |
|
||||
如果有,添加屏幕截图以帮助解释你的问题,包括但不限于 MAA 软件截图、游戏画面截图
|
||||
若是**识别相关问题**,请尽可能提供模拟器自带的截图工具截取的无遮挡的**原图**(或通过 adb 截取原图)
|
||||
用其他的工具(如QQ)截取的图片包含窗口边框,不利于我们排除bug
|
||||
`debug` 文件夹下有一些自动截图的错误图片,若有相关的,请一并打包上传
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: others
|
||||
attributes:
|
||||
label: 还有别的吗?
|
||||
description: |
|
||||
操作系统?相关的配置?链接?参考资料?
|
||||
任何能让我们对你所遇到的问题有更多了解的东西
|
||||
validations:
|
||||
required: false
|
||||
2
.github/ISSUE_TEMPLATE/cn-others.yaml
vendored
@@ -1,5 +1,5 @@
|
||||
name: 其他议题(使用中文)
|
||||
description: 提出问题,而不是 bug 反馈或需求建议
|
||||
description: 提出问题,而不是 Bug 反馈或需求建议
|
||||
labels: ['question']
|
||||
body:
|
||||
- type: textarea
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/en-bug-report.yaml
vendored
@@ -52,7 +52,7 @@ body:
|
||||
attributes:
|
||||
label: Log files
|
||||
description: >-
|
||||
**Upload the `asst.log` and `gui.log` log file in the `debug` folder and**
|
||||
**After closing the MAA, upload the `asst.log` and `gui.log` log file in the `debug` folder and**
|
||||
**indicate the approximate point in time when the problem occurred.**
|
||||
|
||||
**Please drag and drop the full file in, not your own cuttings or copies;**
|
||||
|
||||
15
.github/issue-checker.yml
vendored
@@ -67,6 +67,12 @@ labels:
|
||||
- name: remove roguelike
|
||||
content:
|
||||
regexes: '[Rr]emove (?:[Ll]abels? |)(?:`|)(?:[Mm]odule: |)roguelike(?:`|)'
|
||||
- name: skip reclamation
|
||||
content:
|
||||
regexes: '[Ss]kip (?:[Ll]abels? |)(?:`|)(?:[Mm]odule: |)reclamation(?:`|)'
|
||||
- name: remove reclamation
|
||||
content:
|
||||
regexes: '[Rr]emove (?:[Ll]abels? |)(?:`|)(?:[Mm]odule: |)reclamation(?:`|)'
|
||||
|
||||
- name: skip client
|
||||
content:
|
||||
@@ -167,7 +173,7 @@ labels:
|
||||
- name: roguelike
|
||||
content: "module: roguelike"
|
||||
regexes:
|
||||
"肉[鸽鴿]|集成战略|[Rr]ogue|[Ii]ntegrated [Ss]tategy|I.S.|ローグ"
|
||||
"肉[鸽鴿]|集成战略|[Rr]ogue|[Ii]ntegrated [Ss]tategy|I\\.S\\.|ローグ"
|
||||
skip-if:
|
||||
- skip all
|
||||
- skip module
|
||||
@@ -185,11 +191,11 @@ labels:
|
||||
skip-if:
|
||||
- skip all
|
||||
- skip module
|
||||
- skip roguelike
|
||||
- skip reclamation
|
||||
remove-if:
|
||||
- remove all
|
||||
- remove module
|
||||
- remove roguelike
|
||||
- remove reclamation
|
||||
|
||||
# `module: copilot`
|
||||
- name: copilot1
|
||||
@@ -375,7 +381,7 @@ labels:
|
||||
- name: pr-ambiguous
|
||||
# 不符合 commitizen 的 PR
|
||||
content: ambiguous
|
||||
regexes: '^(?!(?:build|chore|ci|docs?|feat|fix|i18n|perf|refactor|rft|style|test)[\:\.\(\,]|[Rr]evert|[Rr]elease)'
|
||||
regexes: '^(?!(?:build|chore|ci|docs?|feat!?|fix|i18n|perf|refactor|rft|style|test)[\:\.\(\,]|[Rr]evert|[Rr]elease)'
|
||||
mode:
|
||||
pull_request_target:
|
||||
skip-if:
|
||||
@@ -408,6 +414,7 @@ labels:
|
||||
- others
|
||||
- recruit
|
||||
- roguelike
|
||||
- reclamation
|
||||
|
||||
# `release`
|
||||
- name: release
|
||||
|
||||
158095
.github/qodana.sarif.json
vendored
10
.github/workflows/ci.yml
vendored
@@ -106,6 +106,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress: false
|
||||
submodules: recursive
|
||||
|
||||
- name: Cache .nuke/temp, ~/.nuget/packages
|
||||
id: cache-nuget
|
||||
@@ -291,7 +292,7 @@ jobs:
|
||||
|
||||
macOS-Core:
|
||||
needs: meta
|
||||
runs-on: macos-13
|
||||
runs-on: macos-14
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [arm64, x86_64]
|
||||
@@ -329,7 +330,7 @@ jobs:
|
||||
|
||||
macOS-GUI:
|
||||
needs: [meta, macOS-Core]
|
||||
runs-on: macos-13
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -356,9 +357,6 @@ jobs:
|
||||
p12-file-base64: ${{ secrets.HGUANDL_SIGN_CERT_P12 }}
|
||||
p12-password: ${{ secrets.HGUANDL_SIGN_CERT_PASSWD }}
|
||||
|
||||
- name: Specify Xcode version
|
||||
run: sudo xcode-select -s /Applications/Xcode_14.3.1.app/Contents/Developer
|
||||
|
||||
- name: Build Universal Binaries
|
||||
run: |
|
||||
mkdir build
|
||||
@@ -369,7 +367,7 @@ jobs:
|
||||
- name: Build XCFramework
|
||||
run: |
|
||||
xcodebuild -create-xcframework -library libMaaCore.dylib -headers ../include -output MaaCore.xcframework
|
||||
xcodebuild -create-xcframework -library libMaaDerpLearning.dylib -output MaaDerpLearning.xcframework
|
||||
xcodebuild -create-xcframework -library libfastdeploy_ppocr.dylib -output fastdeploy_ppocr.xcframework
|
||||
xcodebuild -create-xcframework -library libonnxruntime.*.dylib -output ONNXRuntime.xcframework
|
||||
xcodebuild -create-xcframework -library libopencv*.dylib -output OpenCV.xcframework
|
||||
working-directory: build
|
||||
|
||||
48
.github/workflows/docs-build-test.yml
vendored
@@ -1,48 +0,0 @@
|
||||
name: Build Test for docs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- "master"
|
||||
paths:
|
||||
- "docs/**"
|
||||
pull_request:
|
||||
branches:
|
||||
- "dev"
|
||||
paths:
|
||||
- "docs/**"
|
||||
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
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm i
|
||||
working-directory: "./docs"
|
||||
|
||||
- name: Cleanup files
|
||||
run: rm tsconfig.json
|
||||
working-directory: "./docs"
|
||||
|
||||
- name: Build
|
||||
run: npm run build
|
||||
working-directory: "./docs"
|
||||
|
||||
- name: Upload artifact to GitHub
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: docs
|
||||
path: "./docs/.vuepress/dist"
|
||||
2
.github/workflows/issue-checker.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: zzyyyl/issue-checker@v1.7
|
||||
- uses: zzyyyl/issue-checker@v1.8
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
configuration-path: .github/issue-checker.yml
|
||||
|
||||
49
.github/workflows/markdown-checker.yml
vendored
Normal 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
|
||||
2
.github/workflows/pr-checker.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
||||
per_page: 100
|
||||
});
|
||||
|
||||
const regex = /^((build|chore|ci|docs?|feat|fix|perf|refactor|rft|style|test|i18n|typo)[\:\.\(\,]|[Rr]evert|[Rr]elease)/;
|
||||
const regex = /^((build|chore|ci|docs?|feat!?|fix|perf|refactor|rft|style|test|i18n|typo)[\:\.\(\,]|[Rr]evert|[Rr]elease)/;
|
||||
const invalidCommits = commits.filter(commit => !regex.test(commit.commit.message) || commit.parents.length > 1);
|
||||
|
||||
console.log(`Checked ${commits.length} commit(s)`);
|
||||
|
||||
45
.github/workflows/qodana.yml
vendored
@@ -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 }}
|
||||
42
.github/workflows/release-ota.yml
vendored
@@ -9,12 +9,12 @@ on:
|
||||
limit:
|
||||
description: Number of releases to fetch from MaaAssistantArknights, 2 at least
|
||||
required: false
|
||||
default: 31
|
||||
default: '31'
|
||||
type: number
|
||||
limit_2:
|
||||
description: Number of releases to fetch from MaaRelease
|
||||
required: false
|
||||
default: 30
|
||||
default: '30'
|
||||
type: number
|
||||
|
||||
env:
|
||||
@@ -25,8 +25,9 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Fetch MaaRelease
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress: false
|
||||
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
|
||||
path: MaaRelease
|
||||
fetch-depth: 0
|
||||
@@ -86,16 +87,18 @@ jobs:
|
||||
uses: actions/download-artifact@v4
|
||||
|
||||
- name: Fetch MaaRelease
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress: false
|
||||
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
|
||||
path: MaaRelease
|
||||
fetch-depth: 0
|
||||
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
|
||||
@@ -123,7 +126,7 @@ jobs:
|
||||
|
||||
make-ota-mac:
|
||||
needs: create-tag
|
||||
runs-on: macos-13
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- name: Fetch release info
|
||||
run: gh release list --repo 'MaaAssistantArknights/MaaAssistantArknights' --limit ${{ inputs.limit || 31 }} | tee ./release_maa.txt
|
||||
@@ -200,30 +203,3 @@ jobs:
|
||||
- name: Setup release mirror
|
||||
run: |
|
||||
gh workflow --repo MaaAssistantArknights/MaaRelease run release-mirrors.yml
|
||||
|
||||
- name: Deploy docs
|
||||
run: |
|
||||
mkdir -p ${{ runner.temp }}/new
|
||||
mkdir -p ${{ runner.temp }}/old
|
||||
gh api /repos/MaaAssistantArknights/MaaAssistantArknights/tags --jq '.[].name' > ${{ runner.temp }}/release_maa.txt
|
||||
export NEW_VERSION=$(sed -n '1p' ${{ runner.temp }}/release_maa.txt)
|
||||
echo "NEW_VERSION: $NEW_VERSION"
|
||||
export OLD_VERSION=$(sed -n '2p' ${{ runner.temp }}/release_maa.txt)
|
||||
echo "OLD_VERSION: $OLD_VERSION"
|
||||
gh api "/repos/MaaAssistantArknights/MaaAssistantArknights/tarball/$NEW_VERSION" > ${{ runner.temp }}/new.tar.gz
|
||||
gh api "/repos/MaaAssistantArknights/MaaAssistantArknights/tarball/$OLD_VERSION" > ${{ runner.temp }}/old.tar.gz
|
||||
tar -xzf ${{ runner.temp }}/new.tar.gz -C ${{ runner.temp }}/new
|
||||
tar -xzf ${{ runner.temp }}/old.tar.gz -C ${{ runner.temp }}/old
|
||||
export NEW_PATH="${{ runner.temp }}/new/$(ls ${{ runner.temp }}/new)/docs"
|
||||
echo "NEW_PATH: $NEW_PATH"
|
||||
export OLD_PATH="${{ runner.temp }}/old/$(ls ${{ runner.temp }}/old)/docs"
|
||||
echo "OLD_PATH: $OLD_PATH"
|
||||
export DOCS_DIFF=$(diff -aqr $NEW_PATH $OLD_PATH)
|
||||
if [ -n "$DOCS_DIFF" ]; then
|
||||
echo "Found changes, start to deploy the docs:"
|
||||
echo "$DOCS_DIFF"
|
||||
gh workflow --repo MaaAssistantArknights/maa-website run build-and-deploy.yaml
|
||||
echo "Deploying the docs."
|
||||
else
|
||||
echo "Nothing changed, exit."
|
||||
fi
|
||||
|
||||
13
.github/workflows/res-update-game.yml
vendored
@@ -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: |
|
||||
@@ -121,23 +121,23 @@ jobs:
|
||||
echo "numbers: "$numbers
|
||||
|
||||
$length = $numbers.Length
|
||||
$isAllEqual = $true
|
||||
$noDiff = $true
|
||||
for ($i = 0; $i -lt $length; $i += 2) {
|
||||
$firstNumber = $numbers[$i]
|
||||
$secondNumber = $numbers[$i+1]
|
||||
|
||||
if ($firstNumber -gt 1) {
|
||||
$isAllEqual = $false
|
||||
$noDiff = $false
|
||||
break
|
||||
}
|
||||
|
||||
if ($firstNumber -ne $secondNumber) {
|
||||
$isAllEqual = $false
|
||||
$noDiff = $false
|
||||
break
|
||||
}
|
||||
}
|
||||
echo "isAllEqual: "$isAllEqual
|
||||
echo "only_sorted=$isAllEqual" >> $env:GITHUB_OUTPUT
|
||||
echo "noDiff: "$noDiff
|
||||
echo "only_sorted=$noDiff" >> $env:GITHUB_OUTPUT
|
||||
|
||||
- name: Cancelling
|
||||
if: steps.check_only_sorted.outputs.only_sorted == 'True'
|
||||
@@ -177,6 +177,7 @@ jobs:
|
||||
github_token: ${{ secrets.MISTEOWORKFLOW }}
|
||||
|
||||
- name: Update OTA resource
|
||||
if: steps.add_files.outputs.have_commits == 'True'
|
||||
run: |
|
||||
gh workflow --repo MaaAssistantArknights/MaaRelease run update-resource.yml
|
||||
|
||||
|
||||
13
.github/workflows/smoke-testing.yml
vendored
@@ -33,6 +33,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
show-progress: false
|
||||
submodules: recursive
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
@@ -53,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: |
|
||||
|
||||
109
.github/workflows/website-workflow.yml
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
name: MaaWebsite Workflow
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "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:
|
||||
description: "Deploy to production environment"
|
||||
default: false
|
||||
required: true
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
build:
|
||||
timeout-minutes: 20
|
||||
runs-on: ubuntu-latest
|
||||
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
|
||||
cache: pnpm
|
||||
cache-dependency-path: './website/pnpm-lock.yaml'
|
||||
|
||||
- name: Install dependencies
|
||||
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" && "${{ github.ref }}" == "refs/heads/master" ]] || [[ "${{ 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
|
||||
|
||||
- name: Show environment
|
||||
run: echo ${{ env.AZURE_TARGET_ENV }}
|
||||
|
||||
- name: Deploy to Azure (prod)
|
||||
id: deploy-prod
|
||||
uses: Azure/static-web-apps-deploy@v1
|
||||
if: env.AZURE_TARGET_ENV == 'prod'
|
||||
with:
|
||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }}
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
action: "upload"
|
||||
app_location: "."
|
||||
api_location: ""
|
||||
skip_app_build: true
|
||||
skip_api_build: true
|
||||
|
||||
- name: Deploy to Azure (dev)
|
||||
id: deploy-dev
|
||||
uses: Azure/static-web-apps-deploy@v1
|
||||
if: env.AZURE_TARGET_ENV == 'dev'
|
||||
with:
|
||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }}
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
action: "upload"
|
||||
deployment_environment: dev
|
||||
app_location: "."
|
||||
api_location: ""
|
||||
skip_app_build: true
|
||||
skip_api_build: true
|
||||
3
.gitmodules
vendored
@@ -12,3 +12,6 @@
|
||||
[submodule "src/maa-cli"]
|
||||
path = src/maa-cli
|
||||
url = https://github.com/MaaAssistantArknights/maa-cli.git
|
||||
[submodule "3rdparty/EmulatorExtras"]
|
||||
path = 3rdparty/EmulatorExtras
|
||||
url = https://github.com/MaaXYZ/EmulatorExtras.git
|
||||
|
||||
5
.linkspector.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
dirs:
|
||||
- .
|
||||
useGitIgnore: true
|
||||
ignorePatterns:
|
||||
- pattern: "^https?://127.0.0.1(:\\d+)?/"
|
||||
1
3rdparty/EmulatorExtras
vendored
Submodule
172
3rdparty/include/Arknights-Tile-Pos/TileCalc.hpp
vendored
@@ -1,172 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <cmath>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <meojson/json.hpp>
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
#include "TileDef.hpp"
|
||||
|
||||
namespace Map
|
||||
{
|
||||
struct Tile
|
||||
{
|
||||
int heightType = 0;
|
||||
int buildableType = 0;
|
||||
std::string tileKey;
|
||||
};
|
||||
|
||||
class Level
|
||||
{
|
||||
public:
|
||||
Level(const json::value& data);
|
||||
int get_width() const { return width; }
|
||||
int get_height() const { return height; }
|
||||
Tile get_item(int y, int x) const { return tiles[y][x]; }
|
||||
std::vector<cv::Point3d> view;
|
||||
LevelKey key;
|
||||
|
||||
private:
|
||||
int height = 0;
|
||||
int width = 0;
|
||||
std::vector<std::vector<Tile>> tiles;
|
||||
};
|
||||
|
||||
class TileCalc
|
||||
{
|
||||
public:
|
||||
TileCalc(int width, int height);
|
||||
|
||||
bool run(const Level& level, bool side, std::vector<std::vector<cv::Point2d>>& out_pos,
|
||||
std::vector<std::vector<Tile>>& out_tiles, double shift_x = 0, double shift_y = 0) const;
|
||||
|
||||
private:
|
||||
bool adapter(double& x, double& y) const;
|
||||
|
||||
int width = 0;
|
||||
int height = 0;
|
||||
const double degree = atan(1.0) * 4 / 180;
|
||||
std::vector<Level> levels;
|
||||
cv::Mat MatrixP = cv::Mat(4, 4, CV_64F);
|
||||
cv::Mat MatrixX = cv::Mat(4, 4, CV_64F);
|
||||
cv::Mat MatrixY = cv::Mat(4, 4, CV_64F);
|
||||
};
|
||||
|
||||
inline void InitMat4x4(cv::Mat& m, double (*num)[4])
|
||||
{
|
||||
for (int i = 0; i < m.rows; i++)
|
||||
for (int j = 0; j < m.cols; j++)
|
||||
m.at<double>(i, j) = num[i][j];
|
||||
}
|
||||
|
||||
inline Level::Level(const json::value& data)
|
||||
{
|
||||
key.stageId = data.at("stageId").as_string();
|
||||
key.code = data.at("code").as_string();
|
||||
key.levelId = data.at("levelId").as_string();
|
||||
key.name = data.get("name", "null");
|
||||
this->height = data.at("height").as_integer();
|
||||
this->width = data.at("width").as_integer();
|
||||
for (const json::value& point_data : data.at("view").as_array()) {
|
||||
cv::Point3d tmp;
|
||||
auto point_array = point_data.as_array();
|
||||
tmp.x = point_array[0].as_double();
|
||||
tmp.y = point_array[1].as_double();
|
||||
tmp.z = point_array[2].as_double();
|
||||
this->view.emplace_back(std::move(tmp));
|
||||
}
|
||||
for (const json::value& row : data.at("tiles").as_array()) {
|
||||
std::vector<Tile> tmp;
|
||||
tmp.reserve(this->width);
|
||||
for (const json::value& tile : row.as_array()) {
|
||||
tmp.emplace_back(Tile { tile.at("heightType").as_integer(), tile.at("buildableType").as_integer(),
|
||||
tile.get("tileKey", std::string()) });
|
||||
}
|
||||
tiles.emplace_back(std::move(tmp));
|
||||
}
|
||||
}
|
||||
|
||||
inline TileCalc::TileCalc(int width, int height)
|
||||
{
|
||||
this->width = width;
|
||||
this->height = height;
|
||||
double ratio = static_cast<double>(height) / width;
|
||||
double matrixP[4][4] { { ratio / tan(20 * degree), 0, 0, 0 },
|
||||
{ 0, 1 / tan(20 * degree), 0, 0 },
|
||||
{ 0, 0, -(1000 + 0.3) / (1000 - 0.3), -(1000 * 0.3 * 2) / (1000 - 0.3) },
|
||||
{ 0, 0, -1, 0 } };
|
||||
InitMat4x4(this->MatrixP, matrixP);
|
||||
double matrixX[4][4] { { 1, 0, 0, 0 },
|
||||
{ 0, cos(30 * degree), -sin(30 * degree), 0 },
|
||||
{ 0, -sin(30 * degree), -cos(30 * degree), 0 },
|
||||
{ 0, 0, 0, 1 } };
|
||||
InitMat4x4(this->MatrixX, matrixX);
|
||||
double matrixY[4][4] { { cos(10 * degree), 0, sin(10 * degree), 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ -sin(10 * degree), 0, cos(10 * degree), 0 },
|
||||
{ 0, 0, 0, 1 } };
|
||||
InitMat4x4(this->MatrixY, matrixY);
|
||||
}
|
||||
|
||||
inline bool TileCalc::run(const Level& level, bool side, std::vector<std::vector<cv::Point2d>>& out_pos,
|
||||
std::vector<std::vector<Tile>>& out_tiles, double shift_x, double shift_y) const
|
||||
{
|
||||
auto [x, y, z] = level.view[side ? 1 : 0];
|
||||
double adapter_y = 0, adapter_z = 0;
|
||||
this->adapter(adapter_y, adapter_z);
|
||||
double matrix[4][4] {
|
||||
{ 1, 0, 0, -x }, { 0, 1, 0, -y - adapter_y }, { 0, 0, 1, -z - adapter_z }, { 0, 0, 0, 1 }
|
||||
};
|
||||
auto raw = cv::Mat(cv::Size(4, 4), CV_64F);
|
||||
auto Finall_Matrix = cv::Mat(cv::Size(4, 4), CV_64F);
|
||||
InitMat4x4(raw, matrix);
|
||||
if (side) {
|
||||
Finall_Matrix = this->MatrixP * this->MatrixX * this->MatrixY * raw;
|
||||
}
|
||||
else {
|
||||
Finall_Matrix = this->MatrixP * this->MatrixX * raw;
|
||||
}
|
||||
int h = level.get_height();
|
||||
int w = level.get_width();
|
||||
auto map_point = cv::Mat(cv::Size(1, 4), CV_64F);
|
||||
map_point.at<double>(3, 0) = 1;
|
||||
auto tmp_pos = std::vector<cv::Point2d>(w);
|
||||
auto tmp_tiles = std::vector<Tile>(w);
|
||||
for (int i = 0; i < h; i++) {
|
||||
for (int j = 0; j < w; j++) {
|
||||
tmp_tiles[j] = level.get_item(i, j);
|
||||
map_point.at<double>(0, 0) = j - (w - 1) / 2.0 + shift_x;
|
||||
map_point.at<double>(1, 0) = (h - 1) / 2.0 - i + shift_y;
|
||||
map_point.at<double>(2, 0) = tmp_tiles[j].heightType * -0.4;
|
||||
cv::Mat view_point = Finall_Matrix * map_point;
|
||||
view_point = view_point / view_point.at<double>(3, 0);
|
||||
view_point = (view_point + 1) / 2;
|
||||
tmp_pos[j] = cv::Point2d(view_point.at<double>(0, 0) * this->width,
|
||||
(1 - view_point.at<double>(1, 0)) * this->height);
|
||||
}
|
||||
out_pos.emplace_back(tmp_pos);
|
||||
out_tiles.emplace_back(tmp_tiles);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool TileCalc::adapter(double& x, double& y) const
|
||||
{
|
||||
const double fromRatio = 9.0 / 16;
|
||||
const double toRatio = 3.0 / 4;
|
||||
double ratio = static_cast<double>(height) / width;
|
||||
if (ratio < fromRatio - 0.00001) {
|
||||
x = 0;
|
||||
y = 0;
|
||||
return false;
|
||||
}
|
||||
double t = (ratio - fromRatio) / (toRatio - fromRatio);
|
||||
x = -1.4 * t;
|
||||
y = -2.8 * t;
|
||||
return true;
|
||||
}
|
||||
} // namespace Map
|
||||
@@ -5,13 +5,14 @@
|
||||
#include <opencv2/core/matx.hpp>
|
||||
#include <opencv2/core/types.hpp>
|
||||
|
||||
#include "TileCalc.hpp"
|
||||
#include "TileDef.hpp"
|
||||
|
||||
namespace Map::TileCalc2
|
||||
{
|
||||
using vec3d = cv::Vec3d;
|
||||
using matrix4x4 = cv::Matx44d;
|
||||
static constexpr double degree = std::numbers::pi / 180;
|
||||
|
||||
inline vec3d camera_pos(const Level& level, bool side = false, int width = 1280, int height = 720)
|
||||
{
|
||||
const auto [x, y, z] = level.view[side ? 1 : 0];
|
||||
@@ -89,8 +90,8 @@ inline cv::Point
|
||||
result = result / result(3);
|
||||
result = (result + cv::Vec4d::ones()) / 2.;
|
||||
return {
|
||||
static_cast<int>(result(0) * width),
|
||||
static_cast<int>((1 - result(1)) * height),
|
||||
static_cast<int>(std::round(result(0) * width)),
|
||||
static_cast<int>(std::round((1 - result(1)) * height)),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
106
3rdparty/include/Arknights-Tile-Pos/TileDef.hpp
vendored
@@ -1,32 +1,94 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <meojson/json.hpp>
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace Map
|
||||
{
|
||||
struct LevelKey
|
||||
{
|
||||
std::string stageId;
|
||||
std::string code;
|
||||
std::string levelId;
|
||||
std::string name;
|
||||
struct LevelKey
|
||||
{
|
||||
std::string stageId;
|
||||
std::string code;
|
||||
std::string levelId;
|
||||
std::string name;
|
||||
|
||||
bool empty_or_equal(const std::string& lhs, const std::string& rhs) const noexcept
|
||||
{
|
||||
return (lhs.empty() || rhs.empty()) ? true : lhs == rhs;
|
||||
bool empty_or_equal(const std::string& lhs, const std::string& rhs) const noexcept
|
||||
{
|
||||
return (lhs.empty() || rhs.empty()) ? true : lhs == rhs;
|
||||
}
|
||||
|
||||
bool operator==(const LevelKey& other) const noexcept
|
||||
{
|
||||
return empty_or_equal(stageId, other.stageId) && empty_or_equal(code, other.code)
|
||||
&& empty_or_equal(levelId, other.levelId) && empty_or_equal(name, other.name);
|
||||
}
|
||||
|
||||
bool operator==(const std::string& any_key) const noexcept
|
||||
{
|
||||
if (any_key.empty()) {
|
||||
return false;
|
||||
}
|
||||
bool operator==(const LevelKey& other) const noexcept
|
||||
{
|
||||
return empty_or_equal(stageId, other.stageId) && empty_or_equal(code, other.code) &&
|
||||
empty_or_equal(levelId, other.levelId) && empty_or_equal(name, other.name);
|
||||
return empty_or_equal(stageId, any_key) || empty_or_equal(code, any_key)
|
||||
|| empty_or_equal(levelId, any_key) || empty_or_equal(name, any_key);
|
||||
}
|
||||
};
|
||||
|
||||
struct Tile
|
||||
{
|
||||
int heightType = 0;
|
||||
int buildableType = 0;
|
||||
std::string tileKey;
|
||||
};
|
||||
|
||||
class Level
|
||||
{
|
||||
public:
|
||||
explicit Level(const json::value& data);
|
||||
Level() = default;
|
||||
|
||||
int get_width() const { return width; }
|
||||
|
||||
int get_height() const { return height; }
|
||||
|
||||
Tile get_item(int y, int x) const { return tiles[y][x]; }
|
||||
|
||||
std::vector<cv::Point3d> view {};
|
||||
LevelKey key {};
|
||||
|
||||
private:
|
||||
int height = 0;
|
||||
int width = 0;
|
||||
std::vector<std::vector<Tile>> tiles;
|
||||
};
|
||||
|
||||
inline Level::Level(const json::value& data)
|
||||
{
|
||||
key.stageId = data.at("stageId").as_string();
|
||||
key.code = data.at("code").as_string();
|
||||
key.levelId = data.at("levelId").as_string();
|
||||
key.name = data.get("name", "null");
|
||||
this->height = data.at("height").as_integer();
|
||||
this->width = data.at("width").as_integer();
|
||||
for (const json::value& point_data : data.at("view").as_array()) {
|
||||
cv::Point3d tmp;
|
||||
auto point_array = point_data.as_array();
|
||||
tmp.x = point_array[0].as_double();
|
||||
tmp.y = point_array[1].as_double();
|
||||
tmp.z = point_array[2].as_double();
|
||||
this->view.emplace_back(tmp);
|
||||
}
|
||||
for (const json::value& row : data.at("tiles").as_array()) {
|
||||
std::vector<Tile> tmp;
|
||||
tmp.reserve(this->width);
|
||||
for (const json::value& tile : row.as_array()) {
|
||||
tmp.emplace_back(Tile { tile.at("heightType").as_integer(),
|
||||
tile.at("buildableType").as_integer(),
|
||||
tile.get("tileKey", std::string()) });
|
||||
}
|
||||
bool operator==(const std::string& any_key) const noexcept
|
||||
{
|
||||
if (any_key.empty()) {
|
||||
return false;
|
||||
}
|
||||
return empty_or_equal(stageId, any_key) || empty_or_equal(code, any_key) ||
|
||||
empty_or_equal(levelId, any_key) || empty_or_equal(name, any_key);
|
||||
}
|
||||
};
|
||||
tiles.emplace_back(std::move(tmp));
|
||||
}
|
||||
}
|
||||
} // namespace Map
|
||||
|
||||
133
CHANGELOG.md
@@ -1,132 +1,15 @@
|
||||
## v5.2.1
|
||||
## v5.4.1
|
||||
|
||||
### 新增 | New
|
||||
### 文档 | Docs
|
||||
|
||||
* 巴别塔二、三阶段导航预载 (#8829) @AnnAngela
|
||||
* 巴别塔导航数据 (#8827) @AnnAngela
|
||||
* Add Bark notification provider (#8701) @KawashiroNitori
|
||||
* Add multi external notifications (#8628) @Sieluna
|
||||
* 计算开启技能及撤退按钮位置 | calculate position of skill & retreat button @horror-proton
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 战斗列表处于激活时,浏览带有难度标识的作业会自动添加对应难度到战斗列表 (#8491) @status102
|
||||
* 肉鸽投资模式`进入第二层`拓展为`投资模式启用购物、招募` (#8620) @status102
|
||||
* 移除过多的剧情检查 @status102
|
||||
* 专精干员名称按ui语言显示 @ABA2396
|
||||
* 自动战斗-自动编队存储编队信息 (#8542) @status102
|
||||
* Add missing headers & optimize the code @ABA2396
|
||||
* Improved InfrastFilterMenuNotStationedButton recognition score @Constrat
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 所有任务都添加失败时清空Core任务列表 @ABA2396
|
||||
* 部分场景下无法执行访问好友 @ABA2396
|
||||
* 假日场景下,银淞主题UI无法进入基建 (#8795) @HoshinoAyako
|
||||
* 肉鸽解析Vision失败 @ABA2396
|
||||
* 刷理智愚人号任务出错 @ABA2396
|
||||
* 无奖励关卡无法匹配愚人号部分关卡 @ABA2396
|
||||
* 泡普卡识别错误 @ABA2396
|
||||
* 尝试修复肉鸽导航 (#8764) @horror-proton
|
||||
* 无法进入设置 @ABA2396
|
||||
* 信用购买卡在购买完成界面 @ABA2396
|
||||
* macos 生息演算无法退出关卡 @ABA2396
|
||||
* 训练室读取干员名失效 @status102
|
||||
* 干员名ocrReplace追加`一煌`->`煌` & 夹子 @Saratoga-Official
|
||||
* 干员名识别移除前缀c @status102
|
||||
* 低信赖筛选错误 @status102
|
||||
* 战斗中教程剧情导致错误的倍速切换 @status102
|
||||
* 自动战斗-自动编队-补充低信赖时自动关闭特关 @status102
|
||||
* 干员名识别`一山`->`山` @status102
|
||||
* 自动战斗作业自动点赞检测 @status102
|
||||
* 尝试修复换行混乱 @status102
|
||||
* 特米米 in battle ocr detection (#8788) @Constrat
|
||||
* train regex @status102
|
||||
* match the correct file suffix @Amsterwolf
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* pallas 无法获取 DynamicResource @ABA2396
|
||||
* 找不到语言资源文件 @ABA2396
|
||||
* 修复gen_changelog的错误操作 (#8756) @AnnAngela
|
||||
* 修复changelog_generator编码问题,以及部分重构 (#8739) @SherkeyXD
|
||||
* 修复nightly的changelog tag选取 @status102
|
||||
* 优化changelog (#8608) @AnnAngela
|
||||
* 优化 LocalizationHelper @ABA2396
|
||||
* 修改文档图片透明度 @ABA2396
|
||||
* 修改抗干扰值日志输出 @ABA2396
|
||||
* 生息演算介绍Update zh-cn.xaml @ABA2396
|
||||
* 加点不期而遇的日志 @ABA2396
|
||||
* LastBuyWineTime 改为全局配置 @ABA2396
|
||||
* 修改nightly changelog忽略多余抬头 @status102
|
||||
* 修正nightly使用生成文件 @status102
|
||||
* 一天只喝一次酒 @ABA2396
|
||||
* 修改不支持的关卡提示 @ABA2396
|
||||
* 去掉太慢的clang-format配置 @MistEO
|
||||
* 添加蓝叠核心版本推荐 (#8688) @Rbqwow
|
||||
* Update 肉鸽辅助协议.md (#8703) @guguji12
|
||||
* 修改changelog_generator的无序列表格式,从`- `改为`* ` @status102
|
||||
* 移除空格转义 @status102
|
||||
* 修改自动生成changelog与上个tag对比,而非与上个公版 @status102
|
||||
* rename Linux模拟器.md to Linux模拟器&容器.md (#8513) @zayn7lie
|
||||
* change image transparency (#8802) @Manicsteiner
|
||||
* use relative md instead of html links @wangl-cc
|
||||
* split and update CLI documents @wangl-cc
|
||||
* update maa-cli to 0.4.5 and build with vendored-openssl @wangl-cc
|
||||
* Remote Control spacing @Constrat
|
||||
* LocalizationHelper & SettingsViewModel @ABA2396
|
||||
* sync with upstream, re-arrange for linux users (#8733) @Constrat @Cryolitia
|
||||
* fix breakline @Cryolitia
|
||||
* declare license AGPL-3.0-only @Cryolitia
|
||||
* generate changelog with python script for nightly (#8728) @wangl-cc
|
||||
* output format @status102
|
||||
* Update .clang-format @MistEO
|
||||
* nightly auto changelog (#8614) @status102 @AnnAngela
|
||||
* 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
|
||||
|
||||
* 外服小车名称识别 @ABA2396
|
||||
|
||||
#### txwy
|
||||
|
||||
* 台服保全開場選元件ocr替换 (#8641) @vonnoq
|
||||
* 替換繁中服 StartToVisit 圖片 (#8817) @momomochi987
|
||||
* 繁中服幹員識別修正 (#8807) @vonnoq
|
||||
* custom ROI and notes for StartToVisit txwy (#8682) @Manicsteiner
|
||||
* txwy ocrreplace (#8655) @EROTCZ
|
||||
* 繁中服「孤星」活動導航 (#8662) @momomochi987
|
||||
|
||||
#### YostarEN
|
||||
|
||||
* Skip the story before a battle for EN @Constrat
|
||||
* optimized roi for EN infrast training @Constrat
|
||||
* IS4 EN foldartal declare text @Constrat
|
||||
* Foldartal use for IS4 - overseas (#8612) @Constrat
|
||||
* IS4 Rain! encounter regex fix #8709 @Constrat
|
||||
* OCR replace for Auto Battle (CV) @Constrat
|
||||
* CV roi for navigation @Constrat
|
||||
* Eyja Alter EN regex for SSS @Constrat
|
||||
* Eyjafjalla Alter ocr @Constrat
|
||||
* en transparency ref: 0c5a79f @Constrat
|
||||
* EN CV navigation @Constrat
|
||||
* YostarEN SSS#3 (#8645) @Constrat
|
||||
|
||||
#### YostarKR
|
||||
|
||||
* YoStarKR SSS#3 (#8643) @HX3N
|
||||
* YoStarKR Executor alter regex (#8723) @HX3N
|
||||
* YoStarKR SkipThePreBattlePlot (#8671) @HX3N
|
||||
* YoStarKR ocrReplace (#8665) @HX3N
|
||||
* YoStarKR update operators.md @HX3N
|
||||
* docs: update and refactor KR docs (#8793) @HX3N
|
||||
* YoStarKR CV stage navigation and add Conductive Unit Upgrade (#8649) @HX3N
|
||||
* YoStarKR update operator.md (#8626) @HX3N
|
||||
|
||||
#### YostarJP
|
||||
|
||||
* YoStarJP SSS#4 (#8630) @Manicsteiner
|
||||
* Global IS navigation (#8769) @Manicsteiner
|
||||
* YoStarJP ocrreplace (#8663) @Manicsteiner
|
||||
* YoStarJP ocr fix (#8768) @Manicsteiner @Constrat
|
||||
* YoStarJP ダーティマネー navigation (#8647) @Manicsteiner
|
||||
* Update operators.md for JP ダーティマネー @wallsman
|
||||
* YoStarEN resolution warning on client switch (#9539) @Constrat @ABA2396
|
||||
|
||||
17
CITATION.cff
Normal file
@@ -0,0 +1,17 @@
|
||||
# This CITATION.cff file was generated with cffinit.
|
||||
# Visit https://bit.ly/cffinit to generate yours today!
|
||||
|
||||
cff-version: 1.2.0
|
||||
title: MaaAssistantArknights
|
||||
message: >-
|
||||
If you use this software, please cite it using the
|
||||
metadata from this file.
|
||||
type: software
|
||||
authors:
|
||||
- name: Maa Team
|
||||
website: 'https://maa.plus/'
|
||||
date-start: '2021-07-10'
|
||||
repository-code: >-
|
||||
https://github.com/MaaAssistantArknights/MaaAssistantArknights/
|
||||
url: 'https://maa.plus/'
|
||||
license: AGPL-3.0-only
|
||||
101
CMakeLists.txt
@@ -13,9 +13,13 @@ option(BUILD_UNIVERSAL "build both arm64 and x86_64 on macOS" OFF)
|
||||
option(INSTALL_PYTHON "install python ffi" OFF)
|
||||
option(INSTALL_RESOURCE "install resource" OFF)
|
||||
option(INSTALL_DEVEL "install development files" OFF)
|
||||
option(INSTALL_FLATTEN "do not use bin lib include directory" ON)
|
||||
option(INSTALL_THIRD_LIBS "install third party libraries" ON)
|
||||
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)
|
||||
@@ -24,29 +28,28 @@ if(USE_MAADEPS)
|
||||
include(${PROJECT_SOURCE_DIR}/MaaDeps/maadeps.cmake)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
add_compile_options("/utf-8")
|
||||
add_compile_options("/MP")
|
||||
add_compile_options("/W4;/WX")
|
||||
add_compile_options("/wd4127") # conditional expression is constant
|
||||
add_compile_options("/Wv:19.35.32217") # disable warning introduced after this version
|
||||
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
else ()
|
||||
add_compile_options("-Wall;-Werror;-Wextra;-Wpedantic;-Wno-missing-field-initializers")
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
|
||||
add_compile_options("-Wno-restrict")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
|
||||
add_library(header_only_libraries INTERFACE)
|
||||
target_include_directories(header_only_libraries INTERFACE 3rdparty/include)
|
||||
target_include_directories(header_only_libraries INTERFACE 3rdparty/include 3rdparty/EmulatorExtras)
|
||||
|
||||
file(GLOB_RECURSE maa_src src/MaaCore/*.cpp)
|
||||
|
||||
add_library(MaaCore SHARED ${maa_src})
|
||||
|
||||
if (MSVC)
|
||||
target_compile_options(MaaCore PRIVATE "/utf-8")
|
||||
target_compile_options(MaaCore PRIVATE "/MP")
|
||||
target_compile_options(MaaCore PRIVATE "/W4;/WX")
|
||||
target_compile_options(MaaCore PRIVATE "/wd4127") # conditional expression is constant
|
||||
target_compile_options(MaaCore PRIVATE "/Wv:19.35.32217") # disable warning introduced after this version
|
||||
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
else ()
|
||||
target_compile_options(MaaCore PRIVATE "-Wall;-Werror;-Wextra;-Wpedantic;-Wno-missing-field-initializers")
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
|
||||
target_compile_options(MaaCore PRIVATE "-Wno-restrict")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (WIN32)
|
||||
#注意:相比VS版本缺少了 -D_CONSOLE -D_WINDLL 两项
|
||||
target_compile_definitions(MaaCore PRIVATE ASST_DLL_EXPORTS _UNICODE UNICODE)
|
||||
@@ -77,26 +80,61 @@ endif (BUILD_TEST)
|
||||
|
||||
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs videoio)
|
||||
find_package(ZLIB REQUIRED)
|
||||
find_package(MaaDerpLearning REQUIRED)
|
||||
find_package(asio REQUIRED)
|
||||
find_package(ONNXRuntime)
|
||||
find_package(cpr CONFIG REQUIRED)
|
||||
|
||||
list(APPEND maa_libs ${OpenCV_LIBS} ZLIB::ZLIB cpr::cpr header_only_libraries)
|
||||
|
||||
if(USE_MAADEPS)
|
||||
find_package(asio REQUIRED)
|
||||
list(APPEND maa_libs asio::asio)
|
||||
endif()
|
||||
|
||||
find_package(onnxruntime CONFIG REQUIRED) # provided by onnxruntime>=1.16
|
||||
list(APPEND maa_libs onnxruntime::onnxruntime)
|
||||
if(DEFINED fastdeploy_SOURCE_DIR)
|
||||
# TODO: FetchContent github.com/MaaAssistantArknights/FastDeploy
|
||||
if(NOT DEFINED fastdeploy_BINARY_DIR)
|
||||
set(fastdeploy_BINARY_DIR ${CMAKE_BINARY_DIR}/fastdeploy)
|
||||
endif()
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
add_subdirectory(${fastdeploy_SOURCE_DIR} ${fastdeploy_BINARY_DIR} EXCLUDE_FROM_ALL SYSTEM)
|
||||
if(NOT DEFINED fastdeploy_INCLUDE_DIRS)
|
||||
set(fastdeploy_INCLUDE_DIRS ${fastdeploy_SOURCE_DIR})
|
||||
endif()
|
||||
target_include_directories(MaaCore SYSTEM PRIVATE ${fastdeploy_INCLUDE_DIRS})
|
||||
get_target_property(fastdeploy_type fastdeploy_ppocr TYPE)
|
||||
if(fastdeploy_type STREQUAL "SHARED_LIBRARY")
|
||||
install(TARGETS fastdeploy_ppocr)
|
||||
endif()
|
||||
else()
|
||||
find_package(fastdeploy_ppocr REQUIRED)
|
||||
endif()
|
||||
list(APPEND maa_libs fastdeploy_ppocr)
|
||||
|
||||
target_link_libraries(MaaCore ${maa_libs})
|
||||
|
||||
if(WITH_EMULATOR_EXTRAS AND NOT EXISTS ${PROJECT_SOURCE_DIR}/3rdparty/EmulatorExtras/Mumu)
|
||||
message(WARNING "EmulatorExtras not found, please run `git submodule update --init 3rdparty/EmulatorExtras`")
|
||||
set(WITH_EMULATOR_EXTRAS OFF)
|
||||
endif()
|
||||
target_compile_definitions(MaaCore PRIVATE ASST_WITH_EMULATOR_EXTRAS=$<BOOL:${WITH_EMULATOR_EXTRAS}>)
|
||||
|
||||
if(WITH_THRIFT)
|
||||
find_package(Thrift CONFIG REQUIRED)
|
||||
endif(WITH_THRIFT)
|
||||
|
||||
target_link_libraries(MaaCore ${OpenCV_LIBS} MaaDerpLearning asio::asio ZLIB::ZLIB ONNXRuntime::ONNXRuntime cpr::cpr header_only_libraries)
|
||||
|
||||
if(WITH_THRIFT)
|
||||
add_subdirectory(src/MaaThriftController)
|
||||
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()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
if (USE_RANGE_V3)
|
||||
target_compile_definitions(MaaCore PRIVATE ASST_USE_RANGES_RANGE_V3)
|
||||
find_package(range-v3 REQUIRED)
|
||||
target_link_libraries(MaaCore range-v3::range-v3)
|
||||
endif ()
|
||||
@@ -105,12 +143,11 @@ if(INSTALL_DEVEL)
|
||||
set(MaaCore_install_extra_args PUBLIC_HEADER DESTINATION devel/include ARCHIVE DESTINATION devel/lib)
|
||||
endif()
|
||||
|
||||
install(TARGETS MaaCore
|
||||
RUNTIME DESTINATION .
|
||||
LIBRARY DESTINATION .
|
||||
PUBLIC_HEADER DESTINATION .
|
||||
${MaaCore_install_extra_args}
|
||||
)
|
||||
if(INSTALL_FLATTEN)
|
||||
set(MaaCore_install_flatten_args RUNTIME DESTINATION . LIBRARY DESTINATION . PUBLIC_HEADER DESTINATION .)
|
||||
endif()
|
||||
|
||||
install(TARGETS MaaCore ${MaaCore_install_flatten_args} ${MaaCore_install_extra_args})
|
||||
|
||||
if(INSTALL_THIRD_LIBS AND USE_MAADEPS)
|
||||
maadeps_install()
|
||||
|
||||
6
LICENSE.spdx
Normal file
@@ -0,0 +1,6 @@
|
||||
SPDXVersion: SPDX-2.3
|
||||
DataLicense: CC0-1.0
|
||||
PackageName: MaaAssistantArknights
|
||||
PackageOriginator: Maa Team and all contributors
|
||||
PackageHomePage: https://github.com/MaaAssistantArknights/MaaAssistantArknights
|
||||
PackageLicenseDeclared: AGPL-3.0-only
|
||||
@@ -41,6 +41,7 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bilibili/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bluestacks/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=bsconsole/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ctrler/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=desp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=dnplayer/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ehem/@EntryIndexedValue">True</s:Boolean>
|
||||
@@ -51,6 +52,7 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLASHWINFO/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=foldartal/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Foldartals/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=framerate/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=furni/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gacha/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gavial/@EntryIndexedValue">True</s:Boolean>
|
||||
@@ -68,7 +70,9 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=memuc/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Minitouch/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mizuki/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mumu/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nemu/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Netease/@EntryIndexedValue">True</s:Boolean>
|
||||
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=netstat/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nonfriend/@EntryIndexedValue">True</s:Boolean>
|
||||
@@ -87,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>
|
||||
@@ -100,6 +103,7 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=serilog/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Showminimized/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Shownormal/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=specialaccess/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=SSS/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=STGM/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=strlen/@EntryIndexedValue">True</s:Boolean>
|
||||
|
||||
2
MaaDeps
140
README.md
@@ -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://arkn.lolicon.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 -->
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
<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,33 +86,28 @@ MAA 的意思是 MAA Assistant Arknights
|
||||
|
||||
### 基本说明
|
||||
|
||||
1. 请根据 [模拟器和设备支持](https://maa.plus/docs/用户手册/模拟器和设备支持),进行对应的操作;
|
||||
2. 修改模拟器分辨率为 `16:9` 比例,最低 `1280 * 720`,最高 `2K`;
|
||||
对于国际服(美服)玩家,由于界面布局、字号等问题,我们则建议您将分辨率修改为 `1920 * 1080`;
|
||||
3. 开始使用吧!
|
||||
|
||||
更多使用说明请参阅 [详细介绍](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)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/用户手册/CLI使用指南/cli-intro.html)
|
||||
MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/zh-cn/manual/cli/intro.html)
|
||||
|
||||
## 加入我们
|
||||
|
||||
@@ -96,7 +115,7 @@ MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 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)
|
||||
@@ -109,52 +128,45 @@ MAA 支持多国语言,并使用 Weblate 进行本地化管理。如果您通
|
||||
|
||||
MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)为准。
|
||||
|
||||
[](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/)
|
||||
[](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)
|
||||
|
||||
## 致谢
|
||||
|
||||
@@ -167,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)~~
|
||||
|
||||
### 数据源
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# TODO: replace with cmake-generated interface file
|
||||
|
||||
find_path(FastDeploy_INCLUDE_DIR NAMES fastdeploy/fastdeploy_model.h)
|
||||
|
||||
find_library(FastDeploy_LIBRARY NAMES fastdeploy)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
FastDeploy
|
||||
REQUIRED_VARS FastDeploy_LIBRARY FastDeploy_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(FastDeploy_FOUND)
|
||||
set(FastDeploy_INCLUDE_DIRS ${FastDeploy_INCLUDE_DIR})
|
||||
if(NOT TARGET FastDeploy::FastDeploy)
|
||||
add_library(FastDeploy::FastDeploy UNKNOWN IMPORTED)
|
||||
set_target_properties(FastDeploy::FastDeploy PROPERTIES
|
||||
IMPORTED_LOCATION "${FastDeploy_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${FastDeploy_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -1,20 +0,0 @@
|
||||
find_path(ONNXRuntime_INCLUDE_DIR NAMES onnxruntime/core/session/onnxruntime_c_api.h)
|
||||
|
||||
find_library(ONNXRuntime_LIBRARY NAMES onnxruntime)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
ONNXRuntime
|
||||
REQUIRED_VARS ONNXRuntime_LIBRARY ONNXRuntime_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(ONNXRuntime_FOUND)
|
||||
set(ONNXRuntime_INCLUDE_DIRS ${ONNXRuntime_INCLUDE_DIR})
|
||||
if(NOT TARGET ONNXRuntime::ONNXRuntime)
|
||||
add_library(ONNXRuntime::ONNXRuntime UNKNOWN IMPORTED)
|
||||
set_target_properties(ONNXRuntime::ONNXRuntime PROPERTIES
|
||||
IMPORTED_LOCATION "${ONNXRuntime_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${ONNXRuntime_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -1,50 +0,0 @@
|
||||
|
||||
|
||||
set(FASTDEPLOY_URL_PREFIX "https://github.com/MaaAssistantArknights/build-fastdeploy/releases/download")
|
||||
|
||||
set(FASTDEPLOY_TAG "gac255b8a")
|
||||
|
||||
set(COMPRESSED_SUFFIX ".tar.gz")
|
||||
|
||||
if(WIN32)
|
||||
set(FASTDEPLOY_FILENAME "FastDeploy-Windows")
|
||||
set(FASTDEPLOY_CHECKSUM "0a0700d4e8923bcd4c387a658e5e9a689ed9e0d114c260b11d082a2176c233d4")
|
||||
elseif(APPLE)
|
||||
if (CURRENT_OSX_ARCH STREQUAL "arm64")
|
||||
set(FASTDEPLOY_FILENAME "FastDeploy-macOS-arm64")
|
||||
set(FASTDEPLOY_CHECKSUM "28a771814d197ba8056f1fcb7cc0671facec90a8733a0dac2cf0b68a8cc36d24")
|
||||
else()
|
||||
set(FASTDEPLOY_FILENAME "FastDeploy-macOS-x86_64")
|
||||
set(FASTDEPLOY_CHECKSUM "76e97c7e944a18eb160646fa32ac0a7e24c87751b2b127dc33454f993f6d4b97")
|
||||
endif()
|
||||
else()
|
||||
set(FASTDEPLOY_FILENAME "FastDeploy-Linux")
|
||||
set(FASTDEPLOY_CHECKSUM "4d106e5499e9b5b29426667617215ac7e4e70d2353af10caccdfdf6c1f1534a7")
|
||||
endif(WIN32)
|
||||
|
||||
set(FASTDEPLOY_URL ${FASTDEPLOY_URL_PREFIX}/${FASTDEPLOY_TAG}/${FASTDEPLOY_FILENAME}${COMPRESSED_SUFFIX})
|
||||
|
||||
if (FASTDEPLOY_DIRECTORY)
|
||||
set(FastDeploy_DIR ${FASTDEPLOY_DIRECTORY})
|
||||
find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR})
|
||||
include_directories(${FastDeploy_INCLUDE_DIRS})
|
||||
list(APPEND DEPEND_LIBS ${FastDeploy_LIBS})
|
||||
else ()
|
||||
download_and_decompress(${FASTDEPLOY_URL}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${FASTDEPLOY_FILENAME}${COMPRESSED_SUFFIX}
|
||||
${FASTDEPLOY_CHECKSUM}
|
||||
${THIRD_PARTY_PATH}/install/)
|
||||
set(FASTDEPLOY_FILENAME fastdeploy)
|
||||
set(FastDeploy_DIR ${THIRD_PARTY_PATH}/install/${FASTDEPLOY_FILENAME})
|
||||
|
||||
find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR} NO_DEFAULT_PATH)
|
||||
include_directories(${FastDeploy_INCLUDE_DIRS})
|
||||
list(APPEND DEPEND_LIBS ${FastDeploy_LIBS})
|
||||
endif (FASTDEPLOY_DIRECTORY)
|
||||
|
||||
if (INSTALL_THIRD_LIBS)
|
||||
install(DIRECTORY ${FastDeploy_DIR}/lib/ DESTINATION . USE_SOURCE_PERMISSIONS)
|
||||
install(DIRECTORY ${ORT_LIB_PATH}/ DESTINATION . USE_SOURCE_PERMISSIONS)
|
||||
install(DIRECTORY ${FastDeploy_DIR}/third_libs/install/paddle2onnx/lib/
|
||||
DESTINATION . USE_SOURCE_PERMISSIONS)
|
||||
endif (INSTALL_THIRD_LIBS)
|
||||
@@ -15,13 +15,13 @@ if (BUILD_XCFRAMEWORK)
|
||||
COMMAND xcodebuild -create-xcframework -library "${PROJECT_SOURCE_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/libonnxruntime.1.14.1.dylib" -output ONNXRuntime.xcframework
|
||||
)
|
||||
|
||||
add_custom_command(OUTPUT MaaDerpLearning.xcframework
|
||||
COMMAND rm -rf MaaDerpLearning.xcframework
|
||||
COMMAND xcodebuild -create-xcframework -library "${PROJECT_SOURCE_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/libMaaDerpLearning.dylib" -output MaaDerpLearning.xcframework
|
||||
add_custom_command(OUTPUT fastdeploy_ppocr.xcframework
|
||||
COMMAND rm -rf fastdeploy_ppocr.xcframework
|
||||
COMMAND xcodebuild -create-xcframework -library "${PROJECT_SOURCE_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/libfastdeploy_ppocr.dylib" -output fastdeploy_ppocr.xcframework
|
||||
)
|
||||
|
||||
add_custom_target(MaaXCFramework ALL
|
||||
DEPENDS MaaCore MaaCore.xcframework OpenCV.xcframework ONNXRuntime.xcframework MaaDerpLearning.xcframework
|
||||
DEPENDS MaaCore MaaCore.xcframework OpenCV.xcframework ONNXRuntime.xcframework fastdeploy_ppocr.xcframework
|
||||
)
|
||||
endif (BUILD_XCFRAMEWORK)
|
||||
|
||||
|
||||
8
docs/.vuepress/client.ts
Normal 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);
|
||||
},
|
||||
});
|
||||
@@ -1,5 +1,6 @@
|
||||
import { defineUserConfig } from "vuepress";
|
||||
import { viteBundler } from "@vuepress/bundler-vite";
|
||||
import { googleAnalyticsPlugin } from "@vuepress/plugin-google-analytics";
|
||||
import Theme from "./theme";
|
||||
|
||||
export default defineUserConfig({
|
||||
@@ -10,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: "선적 서류 비치",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -40,7 +41,11 @@ export default defineUserConfig({
|
||||
|
||||
theme: Theme,
|
||||
|
||||
plugins: [],
|
||||
plugins: [
|
||||
googleAnalyticsPlugin({
|
||||
id: "G-FJQDKG394Z",
|
||||
}),
|
||||
],
|
||||
|
||||
head: [
|
||||
["link", { rel: "preconnect", href: "https://fonts.googleapis.com" }],
|
||||
@@ -51,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",
|
||||
},
|
||||
],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 公式サイト",
|
||||
|
||||
@@ -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 공식 홈페이지",
|
||||
|
||||
@@ -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 官网",
|
||||
|
||||
@@ -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 官網",
|
||||
|
||||
@@ -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: '検索する',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
docs/.vuepress/public/image/en-us/readme/1-dark.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/1-light.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/2-dark.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/2-light.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/3-dark.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/3-light.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/4-dark.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/.vuepress/public/image/en-us/readme/4-light.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/.vuepress/public/image/ja-jp/readme/1-light.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
docs/.vuepress/public/image/ja-jp/readme/2-light.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/.vuepress/public/image/ko-kr/readme/1-light.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
docs/.vuepress/public/image/ko-kr/readme/2-light.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/1-dark.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/1-light.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/2-dark.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/2-light.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/3-dark.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/3-light.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/4-dark.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
docs/.vuepress/public/image/zh-cn/readme/4-light.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
0
docs/.vuepress/public/image/zh-tw/readme/TODO
Normal file
@@ -10,115 +10,23 @@ export const enusSidebar = sidebar({
|
||||
{
|
||||
text: "User Manual",
|
||||
icon: "mdi:user",
|
||||
prefix: "manual/",
|
||||
collapsible: true,
|
||||
children: [
|
||||
{
|
||||
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",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
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",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@@ -1,55 +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: "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: "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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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/",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
@@ -58,3 +58,5 @@
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- markdownlint-disable-file -->
|
||||
|
||||
52
docs/components/ImageGrid.vue
Normal 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>
|
||||
@@ -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
|
||||

|
||||
:::
|
||||
|
||||
- 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!
|
||||
|
||||

|
||||
|
||||
#### 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://arkn.lolicon.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.
|
||||
@@ -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.
|
||||
|
||||
@@ -1,357 +0,0 @@
|
||||
---
|
||||
icon: material-symbols:terminal
|
||||
---
|
||||
# User Guide for CLI
|
||||
|
||||
## Feature
|
||||
|
||||
- Define tasks by TOML, YAML or JSON file, then run it by `maa run <task>`;
|
||||
- Install and update `MaaCore` and resources with `maa install` and `maa update`;
|
||||
- Update self with `maa self update`;
|
||||
|
||||
## Installation
|
||||
|
||||
### Appimage
|
||||
|
||||
The CLI is the default interface of MAA on Linux. You can use the CLI directly by downloading the latest [Appimage](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest).
|
||||
|
||||
### Package manager
|
||||
|
||||
#### macOS
|
||||
|
||||
Install with [Homebrew](https://brew.sh/):
|
||||
|
||||
```bash
|
||||
brew install MaaAssistantArknights/tap/maa-cli
|
||||
```
|
||||
|
||||
#### Linux
|
||||
|
||||
- Arch Linux users can install [AUR package](https://aur.archlinux.org/packages/maa-cli/):
|
||||
|
||||
```bash
|
||||
yay -S maa-cli
|
||||
```
|
||||
|
||||
- Nix users can run directly:
|
||||
|
||||
```bash
|
||||
# Stable
|
||||
nix run nixpkgs#maa-cli
|
||||
```
|
||||
|
||||
```bash
|
||||
# Nightly
|
||||
nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
```
|
||||
|
||||
Stable is the `maa-cli` that is packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix), using the nixpkgs's Rust toolchain;Nightly is in [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix), it uses the Beta Channel of Rust toolchain, automatically updates and builds for verification by Github Action daily.
|
||||
|
||||
- For Linux Brew users, you can install with [Linux Brew](https://docs.brew.sh/Homebrew-on-Linux):
|
||||
|
||||
```bash
|
||||
brew install MaaAssistantArknights/tap/maa-cli
|
||||
```
|
||||
|
||||
### Prebuilt binary
|
||||
|
||||
You can install CLI by download prebuilt binary from
|
||||
[`maa-cli` release page](https://github.com/MaaAssistantArknights/maa-cli/releases/latest) and extract it to your favorite location. The filename for different platform is:
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Operation System</th>
|
||||
<th>Architecture</th>
|
||||
<th>Filename</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td rowspan=2>Linux</td>
|
||||
<td>x86_64</td>
|
||||
<td>maa_cli-x86_64-unknown-linux-gnu.tar.gz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>aarch64</td>
|
||||
<td>maa_cli-aarch64-unknown-linux-gnu.tar.gz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>macOS</td>
|
||||
<td>x86_64</td>
|
||||
<td rowspan=2>
|
||||
maa_cli-universal-apple-darwin.zip
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>aaarch64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2>Windows</td>
|
||||
<td>x86_64</td>
|
||||
<td>maa_cli-x86_64-pc-windows-msvc.zip</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
### Build from source
|
||||
|
||||
You can also build from source by yourself with `cargo`:
|
||||
|
||||
```bash
|
||||
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked
|
||||
```
|
||||
|
||||
### Dependencies
|
||||
|
||||
#### MaaCore
|
||||
|
||||
`maa-cli` only provides a interface for MaaCore, it needs `MaaCore` and resources to run tasks, which can be installed by `maa install`:
|
||||
|
||||
```bash
|
||||
maa install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Commands
|
||||
|
||||
The main feature of `maa-cli` is to run tasks, you can run a task by `maa run <task>`. Here `<task>` is the name of a task, you can list all available tasks by `maa list`.
|
||||
|
||||
More details can be found by `maa help`.
|
||||
|
||||
## Configurations
|
||||
|
||||
### Configuration directory
|
||||
|
||||
All configurations of `maa-cli` is located in a specific configuration directory, which can be get by `maa dir config`.
|
||||
The configuration directory can be changed by environment variable `MAA_CONFIG_DIR`. In below examples, we will use `$MAA_CONFIG_DIR` to represent the configuration directory.
|
||||
|
||||
All configuration files can be written in TOML, YAML or JSON format. In below examples, we will use TOML format and `.toml` as file extension. But you can mix these three formats as long as the file extension is correct.
|
||||
|
||||
### Define tasks
|
||||
|
||||
A `maa-cli` task should be defined in a single file, which should be located in `$MAA_CONFIG_DIR/tasks` directory.
|
||||
|
||||
#### Basic structure
|
||||
|
||||
A `maa-cli` task is a sequence of `MAA` tasks, each `MAA` task is defined by `type` and `params` fields:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "StartUp" # the type of maa task
|
||||
params = { client_type = "Official", start_game_enabled = true } # the params of given task
|
||||
```
|
||||
|
||||
See documentation of [MAA](https://maa.plus/docs/en-us/3.1-INTEGRATION.html#asstappendtask) for all available task types and params.
|
||||
|
||||
#### Task variants and conditions
|
||||
|
||||
In some case, you may want to run a task with different params in different conditions. You can define multiple variants for a task, and use `condition` field to determine whether the variant should be used. For example, you may want to use different infrast plan in different time period of a day:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Infrast"
|
||||
|
||||
[tasks.params]
|
||||
mode = 10000
|
||||
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
|
||||
dorm_trust_enabled = true
|
||||
filename = "normal.json" # the filename of custom infrast plan
|
||||
|
||||
# use plan 1 before 12:00:00, use plan 2 between 12:00:00 and 18:00:00, use plan 0 after 18:00:00
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", end = "12:00:00" } # if start is not defined, it will be 00:00:00
|
||||
params = { plan_index = 1 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "12:00:00", end = "18:00:00" }
|
||||
params = { plan_index = 2 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "18:00:00" } # if end is not defined, it will be 23:59:59
|
||||
params = { plan_index = 0 }
|
||||
```
|
||||
|
||||
The `condition` field is used to determine whether the variant should be used,
|
||||
and the `params` field of matched variant will be merged into the params of the task.
|
||||
|
||||
**Note**: If the `filename` field is a relative path, it will be relative to `$MAA_CONFIG_DIR/infrast`. Besides, the custom infrast plan file will not be read by `maa-cli` but `MaaCore`. So the format of the file must be `JSON` and time period defined in the file will not be used to select the corresponding sub-plan. So you must specify the `plan_index` field in the params of the task to use the correct infrast plan in the corresponding time period. This will ensure that the correct infrast plan is used in the appropriate time period.
|
||||
|
||||
Besides of `Time` condition, there are also `DateTime`, `Weakday`, and `Combined` conditions. `DateTime` condition is used to specify a specific datetime period, `Weekday` condition is used to specify some days in a week, `Combined` condition is used to specify a combination of multiple conditions.
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# fight SL-8 on summer event
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
# fight CE-6 on Tue, Thu, Sat if not on summer event
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
# fight 1-7 otherwise
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
```
|
||||
|
||||
With default strategy, if multiple variants are matched, only the first one will be used. And if the condition is not given, the variant will always be matched. So you can put a variant without condition at the end of variants.
|
||||
|
||||
The strategy of matching variants can be changed by `strategy` field:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
strategy = "merge" # or "first" (default)
|
||||
|
||||
# use all expiring medicine on Sunday night
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
[tasks.variants.condition]
|
||||
type = "Combined"
|
||||
conditions = [
|
||||
{ type = "Time", start = "18:00:00" },
|
||||
{ type = "Weekday", weekdays = ["Sun"] },
|
||||
]
|
||||
|
||||
# fight 1-7 by default
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
|
||||
# fight CE-6 on Tue, Thu, Sat if not on summer event
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# fight SL-8 on summer event
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
```
|
||||
|
||||
The outcome stage of this example should be identical to the previous one, but expiring medicine will be used on Sunday night additionally.
|
||||
With the `merge` strategy, if multiple variants are matched, the params of all matched variants will be merged. If multiple variants have the same param, the last one will be used.
|
||||
|
||||
If no variant is matched, the task will not be executed, which is useful when you want to only run a task in some conditions:
|
||||
|
||||
```toml
|
||||
# Mall after 18:00
|
||||
[[tasks]]
|
||||
type = "Mall"
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "18:00:00" }
|
||||
```
|
||||
|
||||
#### User input
|
||||
|
||||
In some case, you may want to input some value at runtime, instead of hard code it in the task file. Such as the stage to fight, the item to buy, etc. You can specify the value as `Input` or `Select` type:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# Select a stage to fight
|
||||
[[tasks.variants]]
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
|
||||
# Set the stage to a `Select` type with alternatives and description
|
||||
[tasks.variants.params.stage]
|
||||
alternatives = ["SL-6", "SL-7", "SL-8"] # the alternatives of stage, at least one alternative should be given
|
||||
description = "a stage to fight in summer event" # description of the input, optional
|
||||
|
||||
# Task without input
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# Input a stage to fight
|
||||
[[tasks.variants]]
|
||||
|
||||
# Set the stage to a `Input` type with default value and description
|
||||
[tasks.variants.params.stage]
|
||||
default = "1-7" # default value of stage, optional (if not given, user can input empty value to re-prompt)
|
||||
description = "a stage to fight" # description of the input, optional
|
||||
```
|
||||
|
||||
For `Input` type, a prompt will be shown to ask user to input a value. If the default value is given, it will be used if user input empty value, otherwise it will re-prompt. For `Select` type, a prompt will be shown to ask user to select a value from alternatives (by index). If user input is not a valid index, it will re-prompt. The promote and input can be disabled by `--batch` option, which is useful for running tasks in Schedule.
|
||||
|
||||
### `MaaCore` related configurations
|
||||
|
||||
The related configurations of `MaaCore` is located in `$MAA_CONFIG_DIR/asst.toml`. The current available configurations are:
|
||||
|
||||
```toml
|
||||
user_resource = true
|
||||
resources = ["platform_diff/iOS"]
|
||||
|
||||
[connection]
|
||||
type = "ADB"
|
||||
adb_path = "adb"
|
||||
device = "emulator-5554"
|
||||
config = "CompatMac"
|
||||
|
||||
[static_options]
|
||||
cpu_ocr = false
|
||||
gpu_ocr = 1
|
||||
|
||||
[instance_options]
|
||||
touch_mode = "MAATouch"
|
||||
deployment_with_pause = false
|
||||
adb_lite_enabled = false
|
||||
kill_adb_on_exit = false
|
||||
```
|
||||
|
||||
The feild `user_resource` is used to specify whether load user resource, which is a boolean value. If it is `true`, additional resources in `$MAA_CONFIG_DIR/resource` directory will be loaded at last (after all other resources). This is identical to the `--user-resource` command line option. See `maa help run` for more information.
|
||||
|
||||
The `resources` field is used to specify additional resources, which is a list of resource directories (if relative path is given, it will be relative to `$(maa dir resource)/resource` directory):
|
||||
|
||||
The `connection` section is used to specify how to connect to the game. Currently, there are two types of connection: `ADB` and `PlayTools`.
|
||||
|
||||
If you use `ADB`, you should set `adb_path` and `device` fields:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
type = "ADB"
|
||||
adb_path = "adb" # the path of adb executable
|
||||
device = "emulator-5554" # the serial of your android device
|
||||
config = "General" # the config of maa
|
||||
```
|
||||
|
||||
If you use `PlayTools`, you should set `address` which is the address of MaaTools set in PlayCover, more details can be found at
|
||||
[here](https://maa.plus/docs/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC.html#✅-playcover-the-software-runs-most-fluently-for-its-nativity-🚀):
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
type = "PlayTools"
|
||||
address = "localhost:1717" # the address of MaaTools
|
||||
config = "CompatMac" # the same as above
|
||||
```
|
||||
|
||||
Both `ADB` and `PlayTools` share the `config` field, which is a parameter of `connect` function of maa.It's default value is `CompatMac` on macOS, `CompatPOSIXShell` on Linux and `General` on other platforms. More optional configs can be found in `config.json` in resource directory.
|
||||
|
||||
The `instance_options` section is used to configure maa [instance options](https://maa.plus/docs/en-us/3.1-INTEGRATION.html#asstsetinstanceoption):
|
||||
|
||||
```toml
|
||||
[instance_options]
|
||||
touch_mode = "ADB" # touch mode to use, can be "ADB", "MiniTouch", "MAATouch" or "MacPlayTools" (only for PlayCover)
|
||||
deployment_with_pause = false # whether pause the game when deployment
|
||||
adb_lite_enabled = false # whether use adb-lite
|
||||
kill_adb_on_exit = false # whether kill adb when exit
|
||||
```
|
||||
|
||||
Note: If you connect to the game with `PlayCover`, the `touch_mode` will be ignored and `MacPlayTools` will be used.
|
||||
|
||||
### `maa-cli` related configurations
|
||||
|
||||
The `maa-cli` related configurations should be located in `$MAA_CONFIG_DIR/cli.toml`. Currently, it only contains one section: `core`:
|
||||
|
||||
```toml
|
||||
[core]
|
||||
channel = "beta"
|
||||
[core.components]
|
||||
resource = false
|
||||
```
|
||||
|
||||
The `channel` field is used to specify the channel of `MaaCore` to install, which can be `stable`, `beta` or `alpha`. The components of `MaaCore` to install can be specified by `components` field, which is a table of boolean values. Currently, only `resource` component is supported.
|
||||
9
docs/en-us/develop/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Development Docs
|
||||
icon: ph:code-bold
|
||||
index: false
|
||||
dir:
|
||||
order: 2
|
||||
---
|
||||
|
||||
<Catalog base='/en-us/develop/' />
|
||||
@@ -1,18 +1,31 @@
|
||||
# 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:
|
||||
3. Clone the `dev` branch of the (forked) repository to local with submodules:
|
||||
|
||||
```bash
|
||||
git clone <link to your forked repo> -b dev
|
||||
git clone --recurse-submodules <link to your forked repo> -b dev
|
||||
```
|
||||
|
||||
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
|
||||
@@ -20,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.
|
||||
@@ -82,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.
|
||||
|
||||

|
||||
|
||||
@@ -94,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:
|
||||
|
||||
[](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.
|
||||
144
docs/en-us/develop/documentation-guidelines.md
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
|
||||

|
||||

|
||||
|
||||
2. Remove the "Only master branch" option, then click "Create Fork".
|
||||
|
||||

|
||||

|
||||
|
||||
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).
|
||||
|
||||
@@ -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协议,不限商用。修改代码后商用必须开源。
|
||||
|
||||
|
||||
---
|
||||
9
docs/en-us/manual/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: User Manual
|
||||
icon: mdi:user
|
||||
index: false
|
||||
dir:
|
||||
order: 1
|
||||
---
|
||||
|
||||
<Catalog base='/en-us/manual/' />
|
||||
9
docs/en-us/manual/cli/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: CLI Manual
|
||||
icon: material-symbols:terminal
|
||||
index: false
|
||||
dir:
|
||||
order: 6
|
||||
---
|
||||
|
||||
<Catalog base='/en-us/manual/cli/' />
|
||||
461
docs/en-us/manual/cli/config.md
Normal file
@@ -0,0 +1,461 @@
|
||||
---
|
||||
order: 4
|
||||
icon: material-symbols:settings
|
||||
---
|
||||
|
||||
# Configuration
|
||||
|
||||
## Configuration Directory
|
||||
|
||||
The maa-cli configuration files are located in a specific configuration directory, which you can get by running `maa dir config`. The configuration directory can also be changed by the environment variable `MAA_CONFIG_DIR`. In the following examples, we will use `$MAA_CONFIG_DIR` to represent the configuration directory.
|
||||
|
||||
All configuration files can be in TOML, YAML, or JSON format. In the following examples, we will use the TOML format and use `.toml` as the file extension. But you can mix these three formats, as long as your file extension is correct.
|
||||
|
||||
In addition, some tasks accept `filename` as a parameter. When the relative path is used, the relative path will be relative to the corresponding subdirectory of the configuration directory. For example, the custom infrastructure plan files should be relative to `$MAA_CONFIG_DIR/infrast`, while the copilot files of Stationary Security Service should be relative to `$MAA_CONFIG_DIR/ssscopilot`.
|
||||
|
||||
## Custom Tasks
|
||||
|
||||
A custom task is a separate file located in the `$MAA_CONFIG_DIR/tasks` directory.
|
||||
|
||||
### Basic Structure
|
||||
|
||||
A task file contains multiple subtasks, each of which is an MAA task, which contains the following options:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
name = "Start the game" # The name of the task, optional, defaults to the task type
|
||||
type = "StartUp" # The type of the task
|
||||
params = { client_type = "Official", start_game_enabled = true } # The parameters of the task
|
||||
```
|
||||
|
||||
The specific task types and parameters can be found in the [MAA Integration Document][task-types]. Note that maa-cli does not validate parameter names and values, and no error message will be generated even if an error occurs unless MaaCore` detects an error at runtime.
|
||||
|
||||
### Task variants and conditions
|
||||
|
||||
In some cases, you may want to run a task with different parameters in different conditions. You can define multiple variants for a task, and use the `condition` field to determine whether the variant should be used. For example, you may want to use a different infrastructure plan at different periods of the day:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Infrast"
|
||||
|
||||
[tasks.params]
|
||||
mode = 10000
|
||||
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
|
||||
dorm_trust_enabled = true
|
||||
filename = "normal.json" # the filename of custom infrast plan
|
||||
|
||||
# use plan 0 from 18:00:00 to 04:00:00 of next day, use plan 1 before 12:00:00, use plan 2 after 12:00:00
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "18:00:00", end = "04:00:00" } # when end time is less than start time, end time will be treated as time of next day
|
||||
params = { plan_index = 0 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", end = "12:00:00" } # if start time is omitted, this condition will be matched if current time is less than end time
|
||||
params = { plan_index = 1 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "12:00:00" } # if end time is omitted, this condition will be matched if current time is greater than start time
|
||||
params = { plan_index = 2 }
|
||||
```
|
||||
|
||||
The `condition` field is used to determine whether the variant should be used,
|
||||
and the `params` field of the matched variant will be merged into the parameters of the task.
|
||||
|
||||
**Note**: If the `filename` field is a relative path, it will be relative to `$MAA_CONFIG_DIR/infrast`. Besides, the custom infrastructure plan file will not be read by `maa-cli` but MaaCore. So the format of the file must be `JSON` and the time period defined in the file will not be used to select the corresponding sub-plan. So you must specify the `plan_index` field in the parameters of the task to use the correct infrastructure plan in the corresponding time period. This will ensure that the correct infrastructure plan is used in the appropriate time period.
|
||||
|
||||
Besides of `Time` condition, there are also `DateTime`, `Weekday`, `DayMod` conditions.
|
||||
`DateTime` condition is used to specify a specific date-time period,
|
||||
`Weekday` condition is used to specify some days in a week,
|
||||
`DayMod` condition is similar to `Weekday`, but the period can be specified by `divisor` and `remainder`.
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# fight SL-8 on summer event
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
# fight CE-6 on Tue, Thu, Sat if not on summer event
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"], timezone = "Official"}
|
||||
params = { stage = "CE-6" }
|
||||
# fight 1-7 otherwise
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
```
|
||||
|
||||
All the above conditions related to time have a `timezone` field, which is used to specify the timezone of the condition. The value of `timezone` can be an offset of UTC, like `8` or `-7`, or a name of the client type of game, like `Official`. Note, even though the official server is in China, the timezone of the official server is `UTC+4` instead of `UTC+8`, because the start of the game day is `04:00:00` instead of `00:00:00`. When the `timezone` is omitted, the condition will be matched in the local timezone of the system.
|
||||
Besides of above conditions, there is a condition `OnSideStory` which depends on hot update resource to check if there is any opening side story. Thus, the condition of fight `SL-8` can be simplified as `{ type = "OnSideStory", client = "Official" }`, where the `client` is the client type of game.
|
||||
|
||||
Beside of above basic condition, `{ type = "And", conditions = [...] }` `{ type = "Or", conditions = [...] }`, and `{ type = "Not", condition = ... }` can be used for logical combination of conditions.
|
||||
|
||||
By the combination of of above conditions, you can define an infrastructure plan for multiple days,
|
||||
here is an example of 6 plans for 2 days:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
name = "Infrast (6 plan for 2 days)"
|
||||
type = "Infrast"
|
||||
|
||||
[tasks.params]
|
||||
mode = 10000
|
||||
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
|
||||
dorm_trust_enabled = true
|
||||
filename = "normal.json"
|
||||
|
||||
# First shift, 04:00:00 - 12:00:00 on the first day
|
||||
[[tasks.variants]]
|
||||
condition = {
|
||||
type = "And",
|
||||
conditions = [
|
||||
# The divisor use to specify the period, the remainder use to specify the offset
|
||||
# The offset is equal to num_days_since_ce % divisor
|
||||
# The num_days_since_ce is the number of days since the Common Era, 0001-01-01 is the first day
|
||||
# The offset of current day can be got by `maa remainder <divisor>`
|
||||
# for 2024-01-27, num_days_since_ce is 738,912,
|
||||
# the offset of 2024-01-27 is 738,912 % 2 = 0
|
||||
# so this condition will be matched on 2024-01-27
|
||||
{ type = "DayMod", divisor = 2, remainder = 0 },
|
||||
{ type = "Time", start = "04:00:00", end = "12:00:00" },
|
||||
|
||||
]
|
||||
}
|
||||
params = { plan_index = 0 }
|
||||
|
||||
# The second shift, 12:00:00 - 20:00:00 on the first day
|
||||
[[tasks.variants]]
|
||||
condition = {
|
||||
type = "And",
|
||||
conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 0 },
|
||||
{ type = "Time", start = "12:00:00", end = "20:00:00" },
|
||||
]
|
||||
}
|
||||
params = { plan_index = 1 }
|
||||
|
||||
# The third shift, 20:00:00 (first day) - 04:00:00 (second day)
|
||||
[[tasks.variants]]
|
||||
# Note, we must use Or condition here, otherwise the second day 00:00:00 - 04:00:00 will not be matched
|
||||
condition = {
|
||||
type = "Or",
|
||||
conditions = [
|
||||
{ type = "And", conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 0 },
|
||||
{ type = "Time", start = "20:00:00" },
|
||||
] },
|
||||
{ type = "And", conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 1 },
|
||||
{ type = "Time", end = "04:00:00" },
|
||||
] },
|
||||
]
|
||||
}
|
||||
params = { plan_index = 2 }
|
||||
|
||||
# The fourth shift, 04:00:00 - 12:00:00 on the second day
|
||||
[[tasks.variants]]
|
||||
condition = {
|
||||
type = "And",
|
||||
conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 1 },
|
||||
{ type = "Time", start = "04:00:00", end = "12:00:00" },
|
||||
]
|
||||
}
|
||||
params = { plan_index = 3 }
|
||||
|
||||
# The fifth shift, 12:00:00 - 20:00:00 on the second day
|
||||
[[tasks.variants]]
|
||||
condition = {
|
||||
type = "And",
|
||||
conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 1 },
|
||||
{ type = "Time", start = "12:00:00", end = "20:00:00" },
|
||||
]
|
||||
}
|
||||
params = { plan_index = 4 }
|
||||
|
||||
# The sixth shift, 20:00:00 (second day) - 04:00:00 (new first day)
|
||||
[[tasks.variants]]
|
||||
condition = {
|
||||
type = "Or",
|
||||
conditions = [
|
||||
{ type = "And", conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 1 },
|
||||
{ type = "Time", start = "20:00:00" },
|
||||
] },
|
||||
{ type = "And", conditions = [
|
||||
{ type = "DayMod", divisor = 2, remainder = 0 },
|
||||
{ type = "Time", end = "04:00:00" },
|
||||
] },
|
||||
]
|
||||
}
|
||||
params = { plan_index = 5 }
|
||||
```
|
||||
|
||||
With the default strategy, if multiple variants are matched, only the first one will be used. If the condition is not given, the variant will always be matched. So you can put a variant without condition at the end of variants.
|
||||
|
||||
The strategy of matching variants can be changed by `strategy` field:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
strategy = "merge" # or "first" (default)
|
||||
|
||||
# use all expiring medicine on Sunday night
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
conditions = [
|
||||
{ type = "Time", start = "18:00:00" },
|
||||
{ type = "Weekday", weekdays = ["Sun"] },
|
||||
]
|
||||
|
||||
# fight 1-7 by default
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
|
||||
# fight CE-6 on Tue, Thu, Sat if not on summer event
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# fight SL-8 on summer event
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
```
|
||||
|
||||
The outcome stage of this example should be identical to the previous one, but expiring medicine will be used on Sunday night additionally.
|
||||
With the `merge` strategy, if multiple variants are matched, the parameters of all matched variants will be merged. If multiple variants have the same parameters, the last one will be used.
|
||||
|
||||
If no variant is matched, the task will not be executed,
|
||||
which is useful when you want to only run a task in some conditions:
|
||||
|
||||
```toml
|
||||
# Mall after 18:00
|
||||
[[tasks]]
|
||||
type = "Mall"
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "18:00:00" }
|
||||
```
|
||||
|
||||
### User input
|
||||
|
||||
In some cases, you may want to input some value at runtime, instead of hard code it in the task file. Such as the stage to fight, the item to buy, etc. You can specify the value as `Input` or `Select` type:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# Select a stage to fight
|
||||
[[tasks.variants]]
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
|
||||
# Set the stage to a `Select` type with alternatives and description
|
||||
[tasks.variants.params.stage]
|
||||
# the alternatives of stage, at least one alternative should be given
|
||||
# the element of alternatives can be a single value or a table with `value` and `desc` fields·
|
||||
alternatives = [
|
||||
"SL-7", # will be displayed as "1. SL-7"
|
||||
{ value = "SL-8", desc = "Manganese Ore" } # will be displayed as "2. SL-8 (Manganese Ore)"
|
||||
]
|
||||
default_index = 1 # the index of default value, start from 1, if not given, empty value will be re-prompt
|
||||
description = "a stage to fight in summer event" # description of the input, optional
|
||||
allow_custom = true # whether allow input custom value, default to false, if allow, non-integer value will be treated as custom value
|
||||
|
||||
# Task without input
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# Input a stage to fight
|
||||
[[tasks.variants]]
|
||||
|
||||
# Set the stage to a `Input` type with default value and description
|
||||
[tasks.variants.params.stage]
|
||||
default = "1-7" # default value of stage, optional (if not given, user can input empty value to re-prompt)
|
||||
description = "a stage to fight" # description of the input, optional
|
||||
[tasks.variants.params.medicine]
|
||||
# dependency of parameters, the key is the name of parameter, the value is the expected value of dependency parameter
|
||||
# when set, the parameter will be required to input only if all dependency parameters are satisfied
|
||||
deps = { stage = "1-7" }
|
||||
default = 1000
|
||||
description = "medicine to use"
|
||||
```
|
||||
|
||||
For an `Input` type, a prompt will be shown to ask the user to input a value. If the default value is given, it will be used if the user inputs an empty value, otherwise, it will re-prompt.
|
||||
For `Select` type, a prompt will be shown to ask the user to input an index or custom value (if `allow_custom` is `true`). If the default index is given, it will be used if the user inputs an empty value, otherwise, it will re-prompt.
|
||||
|
||||
`--batch` option can be used to run tasks in batch mode, which will use the default value for all inputs and panic if no default value is given.
|
||||
|
||||
## MaaCore related configurations
|
||||
|
||||
The related configuration files of MaaCore is called "Profile" and located in `$MAA_CONFIG_DIR/profiles` directory. Each files in this directory is a profile, while the default profile is `default.toml`. If you want to use a profile other than the default one, you can specify it by `-p` or `--profile` option.
|
||||
|
||||
The currently available configurations are:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
preset = "MuMuPro"
|
||||
adb_path = "adb"
|
||||
device = "emulator-5554"
|
||||
config = "CompatMac"
|
||||
|
||||
[resource]
|
||||
global_resource = "YoStarEN"
|
||||
platform_diff_resource = "iOS"
|
||||
user_resource = true
|
||||
|
||||
[static_options]
|
||||
cpu_ocr = false
|
||||
gpu_ocr = 1
|
||||
|
||||
[instance_options]
|
||||
touch_mode = "MAATouch"
|
||||
deployment_with_pause = false
|
||||
adb_lite_enabled = false
|
||||
kill_adb_on_exit = false
|
||||
```
|
||||
|
||||
### Connection
|
||||
|
||||
The `connection` section is used to specify how to connect to the game:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
adb_path = "adb" # the path of adb executable, default to "adb", which means use adb in PATH
|
||||
address = "emulator-5554" # the address of device, such as "emulator-5554" or "127.0.0.1:5555"
|
||||
config = "General" # the config of maa, should not be changed most of time
|
||||
```
|
||||
|
||||
`adb_path` is the path of `adb` executable, you can set it to the absolute path of `adb` or or leave it empty if it is in PATH. The `address` is the address of the device used by `adb`, like `emulator-5554` or `127.0.0.1:[port]`, the port of some common emulators can be found in the [MAA FAQ][emulator-ports]. If the `address` is absent, the cli will try to find the device automatically by `adb devices`, if there are multiple online devices, the first one will be used. If cli can not find any device, it will try to use the default address `emulator-5554`. The `config` is used to specify some configurations of the host and emulator, whose default value is `CompatMac` on macOS, `CompatPOSIXShell` on Linux and `General` on other platforms. More optional configs can be found in `config.json` in the resource directory.
|
||||
|
||||
For some common emulators, you can use `preset` to use predefined configurations:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
preset = "MuMuPro"
|
||||
adb_path = "/path/to/other/adb" # override predefined adb executable path
|
||||
address = "127.0.0.1:7777" # override the predefined address
|
||||
```
|
||||
|
||||
Currently, there is only one preset `MuMuPro` for emulators. Issue and PR are welcome for the new preset.
|
||||
|
||||
There is a special preset `PlayCover`, used for the iOS app running on macOS by PlayCover. In this case, `adb_path` is ignored and `address` is used to specify the address of `MaaTools` set in `PlayCover`, more details can be found in the [PlayCover documentation][playcover-doc].
|
||||
|
||||
### Resource
|
||||
|
||||
The `resource` section is used to specify the resource to use:
|
||||
|
||||
```toml
|
||||
[resource]
|
||||
global_resource = "YoStarEN" # the global resource to use
|
||||
platform_diff_resource = "iOS" # the platform diff resource to use
|
||||
user_resource = true # whether use user resource
|
||||
```
|
||||
|
||||
When your game is not in Simplified Chinese, you should set `global_resource` to non-Chinese resource. If you connect to the game with `PlayCover`, you should set `platform_diff_resource` to `iOS`.
|
||||
Leave those two fields empty if you don't want to use global resource or platform diff resource. Besides, those two fields will also be set up automatically by maa-cli based on your task and connection type.
|
||||
Lastly, if you want to use user resources, you should set `user_resource` to `true`. When `user_resource` is `true`, maa-cli will try to find user resources in `$MAA_CONFIG_DIR/resource` directory.
|
||||
|
||||
### Static options
|
||||
|
||||
The `static_options` section is used to configure MAA static options:
|
||||
|
||||
```toml
|
||||
[static_options]
|
||||
cpu_ocr = false # whether use CPU OCR, CPU OCR is enabled by default
|
||||
gpu_ocr = 1 # the ID of your GPU, leave it to empty if you don't want to use GPU OCR
|
||||
```
|
||||
|
||||
### Instance options
|
||||
|
||||
The `instance_options` section is used to configure MAA instance options:
|
||||
|
||||
```toml
|
||||
[instance_options]
|
||||
touch_mode = "ADB" # touch mode to use, can be "ADB", "MiniTouch", "MAATouch" or "MacPlayTools" (only for PlayCover)
|
||||
deployment_with_pause = false # whether pause the game when deployment
|
||||
adb_lite_enabled = false # whether use adb-lite
|
||||
kill_adb_on_exit = false # whether kill adb when exit
|
||||
```
|
||||
|
||||
Note: If you connect to the game with `PlayCover`, the `touch_mode` will be ignored and `MacPlayTools` will be used.
|
||||
|
||||
## CLI related configurations
|
||||
|
||||
The CLI related configurations should be located in `$MAA_CONFIG_DIR/cli.toml`. Currently, it only contains one section: `core`:
|
||||
|
||||
```toml
|
||||
# MaaCore install and update configurations
|
||||
[core]
|
||||
channel = "Stable" # update channel, can be "Stable", "Beta" or "Alpha"
|
||||
test_time = 0 # the time to test download mirrors in seconds, 0 to skip
|
||||
# the url to query the latest version of MaaCore, leave it to empty to use default url
|
||||
apit_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
|
||||
[core.components]
|
||||
library = true # whether install MaaCore library
|
||||
resource = false # whether install resource resource
|
||||
|
||||
# CLI update configurations
|
||||
[cli]
|
||||
channel = "Stable" # update channel, can be "Stable", "Beta" or "Alpha"
|
||||
# the url to query the latest version of maa-cli, leave it to empty to use default url
|
||||
api_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
|
||||
# the url to download prebuilt binary, leave it to empty to use default url
|
||||
download_url = "https://github.com/MaaAssistantArknights/maa-cli/releases/download/"
|
||||
|
||||
[cli.components]
|
||||
binary = true # whether install maa-cli binary
|
||||
|
||||
|
||||
# hot update resource configurations
|
||||
[resource]
|
||||
auto_update = true # whether auto update resource before running task
|
||||
backend = "libgit2" # the backend of resource, can be "libgit2" or "git"
|
||||
|
||||
# the remote of resource
|
||||
[resource.remote]
|
||||
branch = "main" # the branch of remote repository
|
||||
# the url of remote repository, when using ssh, you should set ssh_key field
|
||||
url = "https://github.com/MaaAssistantArknights/MaaResource.git"
|
||||
# url = "git@github.com:MaaAssistantArknights/MaaResource.git"
|
||||
# ssh_key = "~/.ssh/id_ed25519" # path to ssh key
|
||||
```
|
||||
|
||||
**NOTE**:
|
||||
|
||||
- The `Alpha` channel of MaaCore is only available on Windows;
|
||||
- The hot update resource can not work separately, it should be used with basic resources installed with MaaCore;
|
||||
- If you want to use `git` backend, `git` command is required;
|
||||
- If you want to fetch resources with ssh, the `ssh_key` is required;
|
||||
- The `resource.remote.url` only affects first-time installation, it will be ignored when updating resource. If you want to change the remote URL, you should change it manually or delete the resource directory and reinstall the resources. The directory of the repository can be located by `maa dir hot-update`.
|
||||
|
||||
## Example of config file
|
||||
|
||||
- [Example configuration][example-config];
|
||||
- [Configuration used by maintainer][wangl-cc-dotfiles].
|
||||
|
||||
## JSON schema
|
||||
|
||||
The JSON schema of configuration files can be found at [`schemas` directory][schema-dir]:
|
||||
|
||||
- The schema of the task configuration is [`task.schema.json`][task-schema];
|
||||
- the schema of the MaaCore configuration file is [`asst.schema.json`][asst-schema];
|
||||
- the schema of the CLI configuration file is [`cli.schema.json`][cli-schema].
|
||||
|
||||
With the help of JSON schema, you can get auto-completion and validation in some editors with plugins.
|
||||
|
||||
[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/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
|
||||
|
||||
<!-- markdownlint-disable-file MD013 -->
|
||||
27
docs/en-us/manual/cli/faq.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
order: 5
|
||||
icon: ph:question-fill
|
||||
---
|
||||
|
||||
# FAQs
|
||||
|
||||
## 1. How to use `$HOME/.config/maa` as the configuration directory on macOS?
|
||||
|
||||
Due to the limitation of [Directories](https://github.com/dirs-dev/directories-rs/), maa-cli uses the Apple-style configuration directory on macOS by default. However, the XDG-style configuration directory is more suitable for command-line programs. If you want to use the XDG style configuration directory, you can set the `XDG_CONFIG_HOME` environment variable, such as `export XDG_CONFIG_HOME="$HOME/.config"`, this will make maa-cli use the XDG style configuration directory. Or you can use the below command to create a symbolic link:
|
||||
|
||||
```bash
|
||||
mkdir -p "$HOME/.config/maa"
|
||||
ln -s "$HOME/.config/maa" "$(maa dir config)"
|
||||
```
|
||||
|
||||
## 2. Strange logs appear during running, how to disable them?
|
||||
|
||||
When running the maa-cli task, you may see some logs that look like this:
|
||||
|
||||
```plaintext
|
||||
[INFO] ... /fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.
|
||||
```
|
||||
|
||||
This log is output by `fastdeploy`, which is a dependency of MaaCore. For the officially compiled MaaCore, this log cannot be closed. However, if you are using a package manager to install maa-cli, you can try installing the package manager's version of MaaCore which uses a newer version of `fastdeploy` without logs enabled by default.
|
||||
|
||||
<!-- markdownlint-disable-file MD013 -->
|
||||
120
docs/en-us/manual/cli/install.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
order: 2
|
||||
icon: material-symbols:download
|
||||
---
|
||||
|
||||
# Install and Build
|
||||
|
||||
There are multiple ways to install maa-cli, including package managers, precompiled binaries, and building from source with `cargo`.
|
||||
|
||||
## Install via Package Manager
|
||||
|
||||
For macOS and supported Linux distributions, it is recommended to install maa-cli using a package manager.
|
||||
|
||||
### macOS
|
||||
|
||||
Homebrew users can install maa-cli via the unofficial [tap](https://github.com/MaaAssistantArknights/homebrew-tap/):
|
||||
|
||||
- Stable release:
|
||||
|
||||
```bash
|
||||
brew install MaaAssistantArknights/tap/maa-cli
|
||||
```
|
||||
|
||||
- Beta releases:
|
||||
|
||||
```bash
|
||||
brew install MaaAssistantArknights/tap/maa-cli-beta
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
- Arch Linux users can install the [AUR package](https://aur.archlinux.org/packages/maa-cli/):
|
||||
|
||||
```bash
|
||||
yay -S maa-cli
|
||||
```
|
||||
|
||||
- ❄️ Nix users can run directly:
|
||||
|
||||
```bash
|
||||
# Stable release
|
||||
nix run nixpkgs#maa-cli
|
||||
```
|
||||
|
||||
```bash
|
||||
# Nightly build
|
||||
nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
```
|
||||
|
||||
Stable is the maa-cli packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix), using the nixpkgs's Rust toolchain; Nightly is in [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix), uses the Beta Channel of Rust toolchain, automatically updates and builds for verification by Github Action daily.
|
||||
|
||||
- Users using Homebrew on Linux please refer to the macOS installation method above.
|
||||
|
||||
## Precompiled Binaries
|
||||
|
||||
If package managers are not available on your system or you prefer not to use them, you can download the precompiled binaries for your platform from the following links. After decompressing, place the executable file in your `PATH` to use.
|
||||
|
||||
- [macOS](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-universal-apple-darwin.zip)
|
||||
- [Linux x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-unknown-linux-gnu.tar.gz)
|
||||
- [Linux aarch64 (arm64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-aarch64-unknown-linux-gnu.tar.gz)
|
||||
- [Windows x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-pc-windows-msvc.zip)
|
||||
|
||||
If your platform is not listed above, you can try to compile and install it yourself (see below).
|
||||
|
||||
## Build from Source
|
||||
|
||||
Rust developers can compile and install maa-cli themselves via `cargo`:
|
||||
|
||||
- Stable version:
|
||||
|
||||
```bash
|
||||
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked
|
||||
```
|
||||
|
||||
- Development version:
|
||||
|
||||
```bash
|
||||
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked
|
||||
```
|
||||
|
||||
### Features
|
||||
|
||||
When compiling from source, you can disable the default features with `--no-default-features` and then enable specific features with `--features`. The available features are:
|
||||
|
||||
- `cli_installer`: Provide `maa self update` command to update self, this feature is enabled by default;
|
||||
- `core_installer`: Provide `maa install` and `maa update` commands to install and update MaaCore and resources, this feature is enabled by default;
|
||||
- `git2`: Provide `libgit2` resource backend, this feature is enabled by default;
|
||||
- `vendored-openssl`: Build OpenSSL library by self instead of using system library, this feature is disabled by default;
|
||||
|
||||
## Install MaaCore
|
||||
|
||||
maa-cli only provides an interface for MaaCore, it needs MaaCore and resources to run tasks, which can be installed by maa-cli once it is installed:
|
||||
|
||||
```bash
|
||||
maa install
|
||||
```
|
||||
|
||||
For users who installed via package managers, MaaCore can be installed via package managers:
|
||||
|
||||
- Homebrew:
|
||||
|
||||
```bash
|
||||
brew install MaaAssistantArknights/tap/maa-core
|
||||
```
|
||||
|
||||
- Arch Linux:
|
||||
|
||||
```bash
|
||||
yay -S maa-assistant-arknights
|
||||
```
|
||||
|
||||
- Nix:
|
||||
|
||||
```bash
|
||||
nix-env -iA nixpkgs.maa-assistant-arknights
|
||||
```
|
||||
|
||||
**NOTE**: Only users who installed maa-cli via package managers can install MaaCore via package managers. Otherwise, please use the `maa install` command to install. In addition, the `maa install` downloads the official precompiled MaaCore, while the MaaCore installed by package managers has different compilation options and dependency versions from the official precompiled version. This does not affect the use of maa-cli but may cause differences in the functionality and performance of MaaCore. For example, the MaaCore installed by package managers uses a newer version of `fastdeploy`, while the official precompiled MaaCore uses an older version of `fastdeploy`. In the new version of `fastdeploy`, logs can be hidden, which can eliminate some unnecessary log output.
|
||||
|
||||
<!-- markdownlint-disable-file MD013 -->
|
||||
16
docs/en-us/manual/cli/intro.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
order: 1
|
||||
icon: material-symbols:toc
|
||||
---
|
||||
|
||||
# Introduction
|
||||
|
||||
A simple CLI for [MAA][maa-home] written in Rust.
|
||||
|
||||
## Features
|
||||
|
||||
- Run predefined or custom tasks, like `maa fight` or `maa run <task>`;
|
||||
- Install and update MaaCore and resources with `maa install` and `maa update`;
|
||||
- Update self with `maa self update`.
|
||||
|
||||
[maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights
|
||||
91
docs/en-us/manual/cli/usage.md
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
order: 3
|
||||
icon: material-symbols:summarize
|
||||
---
|
||||
|
||||
# Usage
|
||||
|
||||
maa-cli is a command-line interface for MaaCore that automates tasks in the game Arknights. Additionally, maa-cli can manage MaaCore.
|
||||
|
||||
## Manage MaaCore
|
||||
|
||||
maa-cli can install and update MaaCore and resources, just run the following commands:
|
||||
|
||||
```bash
|
||||
maa install # Install MaaCore and resources
|
||||
maa update # Update MaaCore and resources
|
||||
```
|
||||
|
||||
## Update maa-cli itself
|
||||
|
||||
maa-cli can update itself, just run the following command:
|
||||
|
||||
```bash
|
||||
maa self update
|
||||
```
|
||||
|
||||
**Note**: Users who install maa-cli via a package manager should use the package manager to update maa-cli, this command is invalid for these users.
|
||||
|
||||
## Run Tasks
|
||||
|
||||
Once MaaCore is installed, you can run tasks directly without additional configuration. The default configuration may not be suitable for all users. If you encounter problems when running tasks, you can refer to the [Configuration Document][config-core] to modify the configuration.
|
||||
|
||||
### Predefined tasks
|
||||
|
||||
- `maa startup [client]`: start the game client and enter the main screen, the `client` is the client type of game, leave it empty to don't start the game;
|
||||
- `maa closedown`: close the game client;
|
||||
- `maa fight [stage]`: run a "fight" task, the `stage` is the stage to fight, like `1-7`, `CE-6`, etc.; if not given, the user will be prompted to input one;
|
||||
- `maa copilot <maa_uri>`: run a "copilot" task, the `maa_uri` is the URI of a copilot task; it can be `maa://1234` or local file path;
|
||||
- `maa roguelike [theme]`: run a "roguelike" task, the `theme` is the theme of roguelike, and available themes are `Phantom`, `Mizuki` and `Sami`.
|
||||
|
||||
The above tasks accept some parameters, you can view the specific parameters by `maa <task> --help`.
|
||||
|
||||
For example, if you want to open the game, use 3 sanity medicines to farm BB-7, and then close the game, you can run the following command:
|
||||
|
||||
```bash
|
||||
maa startup YoStarEN && maa fight BB-7 -m 3 && maa closedown
|
||||
```
|
||||
|
||||
### Custom Tasks
|
||||
|
||||
Due to the multitude of tasks supported by MAA, maa-cli cannot provide predefined options for all tasks. Additionally, you may need to run multiple tasks as shown in the example above. To address this issue, maa-cli offers custom task functionality. Custom tasks allow for the combination of different tasks and provide finer control over the parameters of each task as well as the execution order. Furthermore, custom tasks support conditional statements, enabling you to decide whether to execute a task based on certain conditions or to execute a task with specific parameters. This can be used to automate your daily tasks.
|
||||
A custom task is defined in a configuration file. The location and format of the configuration file are described in the [Custom Task Document][custom-task]. After defining the configuration file, you can run the custom task by `maa run <task>`, where `<task>` is the name of the custom task, excluding the extension.
|
||||
|
||||
### Task Summary
|
||||
|
||||
maa-cli will output a summary of the task after the task is terminated, including the running time of each subtask (start time, end time, running time). For some tasks, it will also output a summary of the task results:
|
||||
|
||||
- `fight` task: stage name, times, sanity cost, and drop statistics;
|
||||
- `infrast`: operators stationed in each facility, for the factory and trading post, it also includes the type of product;
|
||||
- `recruit`: tags, star ratings, and status of each recruitment, as well as the total number of recruitments;
|
||||
- `roguelike`: exploration times, investment times.
|
||||
|
||||
If you don't want the task summary, you can turn it off by `--no-summary`.
|
||||
|
||||
### Loggings
|
||||
|
||||
maa-cli will output logs, the log output levels from low to high are `Error`, `Warn`, `Info`, `Debug`, and `Trace`. The default log output level is `Warn`. The log level can be set by the `MAA_LOG` environment variable, for example, `MAA_LOG=debug`. You can also increase or decrease the log output level by `-v` or `-q`.
|
||||
|
||||
maa-cli will output logs to stderr by default. The `--log-file` option can output logs to a file, the logs are saved in `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log`, where `$(maa dir log)` is the log directory, you can get it by `maa dir log`. You can also specify the log file path by `--log-file=path/to/log`.
|
||||
|
||||
By default, all output logs will include a timestamp and a log-level prefix. You can change this behavior by the `MAA_LOG_PREFIX` environment variable. When set to `Always`, the prefix will always be included, when set to `Auto`, the prefix will be included when writing to the log file, and not included when writing to stderr, and when set to `Never`, the prefix will not be included even when writing to the log file.
|
||||
|
||||
### Other subcommands
|
||||
|
||||
Except for the above subcommands, maa-cli also provides other subcommands:
|
||||
|
||||
- `maa list`: list all available tasks;
|
||||
- `maa dir <dir>`: get the path of a specific directory, for example, `maa dir config` can be used to get the path of the configuration directory;
|
||||
- `maa version`: get the version information of `maa-cli` and `MaaCore`;
|
||||
- `maa convert <input> [output]`: convert a file in `JSON`, `YAML`, or `TOML` format to another format;
|
||||
- `maa complete <shell>`: generate an auto-completion script;
|
||||
- `maa activity [client]`: get the current activity information of the game, the `client` is the client type, default is `Official`.
|
||||
- `maa cleanup`: clean up the cache of `maa-cli` and `MaaCore`.
|
||||
- `maa import <file> [-t <type>]`: import a configuration file, the `file` is the path of the configuration file. The `-t` option can specify the type of the configuration file, such as `cli`, `profile`, `infrast`, etc.
|
||||
|
||||
More command usage can be viewed by `maa help`, and the usage of specific commands can be viewed by `maa help <command>`.
|
||||
|
||||
[config-core]: ./config.md#maacore-related-configurations
|
||||
[custom-task]: ./config.md#custom-tasks
|
||||
|
||||
<!-- markdownlint-disable-file MD013 -->
|
||||
184
docs/en-us/manual/connection.md
Normal 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 Input:Directly 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~~
|
||||
9
docs/en-us/manual/device/README.md
Normal 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/' />
|
||||
180
docs/en-us/manual/device/android.md
Normal 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!
|
||||
@@ -1,4 +1,9 @@
|
||||
# Emulator Support for Linux
|
||||
---
|
||||
order: 3
|
||||
icon: teenyicons:linux-alt-solid
|
||||
---
|
||||
|
||||
# Linux Emulator and Container
|
||||
|
||||
## Preparation
|
||||
|
||||
@@ -8,6 +13,47 @@ You can choose one of the following installation methods:
|
||||
|
||||
[maa-cli](https://github.com/MaaAssistantArknights/maa-cli) is a simple CLI for MAA made with Rust. Please read installation and usage tutorials in [User Guide for CLI](./1.6-USER_GUIDE_FOR_CLI).
|
||||
|
||||
### Use Wine
|
||||
|
||||
The MAA WPF GUI can currently be run using Wine.
|
||||
|
||||
#### Installation Steps
|
||||
|
||||
1. Go to the [.NET Release Page](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) to download and install the .NET **Desktop** Runtime for Windows.
|
||||
|
||||
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.
|
||||
|
||||
If you need to connect to USB devices via ADB, please run `adb start-server` outside of Wine first, i.e. connect to the native ADB server via Wine.
|
||||
:::
|
||||
|
||||
#### Use Linux native MaaCore (experimental feature)
|
||||
|
||||
Download the [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/MaaWineBridge) source and build it, replace the Windows version with the generated `MaaCore.dll` (ELF file) in the same directory as the Linux native dynamic libraries (`libMaaCore.so` and dependencies).
|
||||
|
||||
Running `MAA.exe` through Wine will load the Linux native libraries.
|
||||
|
||||
::: info Note
|
||||
To use Linux native MaaCore, you need to set the ADB path to Linux native ADB in the connection settings.
|
||||
:::
|
||||
|
||||
#### Linux Desktop Integration (experimental feature)
|
||||
|
||||
Desktop integration provides native desktop notification support and the ability to map fontconfig font configurations to WPF.
|
||||
|
||||
Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in the same directory as `MAA.exe`.
|
||||
|
||||
#### 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~~).
|
||||
|
||||
### Use Python
|
||||
|
||||
#### 1. Installing dynamic library
|
||||
@@ -21,7 +67,7 @@ You can choose one of the following installation methods:
|
||||
|
||||
> **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
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# Emulator Support for Mac
|
||||
---
|
||||
order: 2
|
||||
icon: basil:apple-solid
|
||||
---
|
||||
|
||||
_N.B.: Please read [1.2-FAQ](1.2-FAQ.md) first when encounter problems._
|
||||
# Mac Emulator
|
||||
|
||||
## Apple Silicon Chips
|
||||
|
||||
@@ -42,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.
|
||||
|
||||
112
docs/en-us/manual/device/windows.md
Normal 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>
|
||||
@@ -1,29 +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<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/KN(Europe/Korea)editions,you 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 7,you 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:
|
||||
@@ -31,67 +49,41 @@
|
||||
- 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)
|
||||
|
||||
#### Alternative approach: install development tools
|
||||
##### Mitigation measures for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
|
||||
- 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).
|
||||
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.
|
||||
|
||||
- **Please note that you may need about 10GB disk space to install these tools, so make sure that your free space is enough.**
|
||||
We cannot guarantee compatibility of future versions with Windows 7, ~~it's all Microsoft's fault~~.
|
||||
|
||||
### 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.
|
||||
|
||||
@@ -99,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`.
|
||||
|
||||
@@ -119,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.
|
||||
9
docs/en-us/manual/introduction/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Introduction
|
||||
icon: mdi:information-outline
|
||||
index: false
|
||||
dir:
|
||||
order: 2
|
||||
---
|
||||
|
||||
<Catalog base='/en-us/manual/introduction/' />
|
||||
101
docs/en-us/manual/introduction/combat.md
Normal 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
|
||||

|
||||
:::
|
||||
|
||||
### 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.
|
||||
42
docs/en-us/manual/introduction/copilot.md
Normal 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!
|
||||

|
||||
|
||||
## 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.
|
||||