Compare commits
359 Commits
v6.2.3
...
feat/mainc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee566c5fb7 | ||
|
|
40d5bdd560 | ||
|
|
01a2329d18 | ||
|
|
c52cf81b94 | ||
|
|
2a9c963fef | ||
|
|
0817bc1c9f | ||
|
|
c36e5cfd9a | ||
|
|
3fbda5b98d | ||
|
|
50cbc2e10d | ||
|
|
30dd7d0afa | ||
|
|
80280bb62d | ||
|
|
e7362d2d35 | ||
|
|
f77d85f542 | ||
|
|
00e577f6d2 | ||
|
|
6d32795ffa | ||
|
|
a72571ce90 | ||
|
|
59fa039a72 | ||
|
|
adb8863cf6 | ||
|
|
7bab2b2312 | ||
|
|
b55b2c6bd6 | ||
|
|
3d46fc1d0c | ||
|
|
e62a9a08a9 | ||
|
|
f7f9a4f44c | ||
|
|
9ab3265188 | ||
|
|
e1572d8bba | ||
|
|
761ea19e8b | ||
|
|
d9ad52053b | ||
|
|
1ddee84199 | ||
|
|
45b89b7089 | ||
|
|
c8a0c982b9 | ||
|
|
910cd47dfa | ||
|
|
63d499816d | ||
|
|
d734109155 | ||
|
|
c45e6a3d10 | ||
|
|
5e712c04eb | ||
|
|
dc9c9dfee6 | ||
|
|
ec7cbeeb1c | ||
|
|
c3ccd36d02 | ||
|
|
283309d3c1 | ||
|
|
43d5c429ae | ||
|
|
bb15f533b2 | ||
|
|
424b916265 | ||
|
|
656ba9d749 | ||
|
|
2a4cd8b7c8 | ||
|
|
e862101764 | ||
|
|
c095cc6d6f | ||
|
|
a0a6cf6739 | ||
|
|
f21f7cfd92 | ||
|
|
10989582ee | ||
|
|
a0b73022cd | ||
|
|
5bc7364eb6 | ||
|
|
7c3d531177 | ||
|
|
b4d75f194e | ||
|
|
f642273b7a | ||
|
|
3da747a59a | ||
|
|
cfb2a70ac3 | ||
|
|
3c763afa2d | ||
|
|
173d8f50ac | ||
|
|
867a7b5ea7 | ||
|
|
3469aa3777 | ||
|
|
f7c85a9803 | ||
|
|
19241cf186 | ||
|
|
51d6fc3ce1 | ||
|
|
d7f7614de6 | ||
|
|
5de1387402 | ||
|
|
08956dc9e8 | ||
|
|
d32484e366 | ||
|
|
206f5bf97c | ||
|
|
f1827ad99a | ||
|
|
a68f740fe3 | ||
|
|
483a484ae7 | ||
|
|
ad26721541 | ||
|
|
ba6f52f974 | ||
|
|
3782fb1fcb | ||
|
|
0ea2845b5b | ||
|
|
96b95bf5e4 | ||
|
|
256e3e3f58 | ||
|
|
9629226688 | ||
|
|
7dd93eb756 | ||
|
|
f91324fbe8 | ||
|
|
8eb62c2a7b | ||
|
|
d473c2c3f6 | ||
|
|
8785c9d00a | ||
|
|
02cf529bf8 | ||
|
|
2b8e88cdc5 | ||
|
|
e05fe43662 | ||
|
|
d84c5b3311 | ||
|
|
5162a77701 | ||
|
|
24c3e7e945 | ||
|
|
fc1643a728 | ||
|
|
86baa18ad9 | ||
|
|
45a6695a15 | ||
|
|
f39ae39f7d | ||
|
|
6c0bde0611 | ||
|
|
93b7d47cc7 | ||
|
|
8365874e28 | ||
|
|
cb03a617d2 | ||
|
|
a6f309fa88 | ||
|
|
9a214aaf0e | ||
|
|
ff97d59d58 | ||
|
|
d94961f737 | ||
|
|
3ad1c7096d | ||
|
|
9a5ad94920 | ||
|
|
d832875951 | ||
|
|
68a9a82107 | ||
|
|
42088719c5 | ||
|
|
c4f229930e | ||
|
|
5f0f0da82e | ||
|
|
a0a475764b | ||
|
|
59f848b7f7 | ||
|
|
6c0c84c649 | ||
|
|
fd18bfee21 | ||
|
|
b5bba18200 | ||
|
|
4149344318 | ||
|
|
8537612c37 | ||
|
|
6cc28ae344 | ||
|
|
67d73e8e2e | ||
|
|
7fe05d3261 | ||
|
|
4e94fdf133 | ||
|
|
cab1d602c9 | ||
|
|
8d983f2c8c | ||
|
|
a76ac22c13 | ||
|
|
c45f76785d | ||
|
|
1fde5dd93b | ||
|
|
630aae99bc | ||
|
|
cb50ad4a46 | ||
|
|
13d88119b3 | ||
|
|
156335da1c | ||
|
|
3eeb45b3b4 | ||
|
|
c9c587053a | ||
|
|
f7875e3033 | ||
|
|
58bf3b3a82 | ||
|
|
33716c8350 | ||
|
|
c822ad0310 | ||
|
|
647efc8ade | ||
|
|
759a81b03a | ||
|
|
3652fc4bea | ||
|
|
d51e971f3d | ||
|
|
99848bb7b3 | ||
|
|
f273a6f410 | ||
|
|
d68efb6333 | ||
|
|
13f9ccfc4d | ||
|
|
a0ef5f705a | ||
|
|
bfe7c0eabc | ||
|
|
36b776d42c | ||
|
|
9badef9093 | ||
|
|
6e895b50ae | ||
|
|
31832c411a | ||
|
|
7ca53518cc | ||
|
|
b836758ce4 | ||
|
|
97b5944216 | ||
|
|
5645e893e6 | ||
|
|
bfa2ab4e93 | ||
|
|
85df2a4059 | ||
|
|
3422cc375f | ||
|
|
5e36bac060 | ||
|
|
10d40be9f8 | ||
|
|
0e0c6665e8 | ||
|
|
7ad52310cf | ||
|
|
f18329cea9 | ||
|
|
012dd635de | ||
|
|
fe77da4391 | ||
|
|
295daad11d | ||
|
|
fcc40f97c8 | ||
|
|
875fc4ec6d | ||
|
|
d95523439b | ||
|
|
6f33c7a7ad | ||
|
|
066e836a6e | ||
|
|
8994cec168 | ||
|
|
14296d6a90 | ||
|
|
5a6f94b742 | ||
|
|
71566544b5 | ||
|
|
0fa1ae48e0 | ||
|
|
78848c5f3e | ||
|
|
d3532ab8ed | ||
|
|
bdd299a85e | ||
|
|
51a8837b09 | ||
|
|
d407a034c7 | ||
|
|
79027bc9f0 | ||
|
|
11a6f45481 | ||
|
|
52afaa37be | ||
|
|
a8b7ae2474 | ||
|
|
edcc7857ef | ||
|
|
ef1987e02a | ||
|
|
c95dd34533 | ||
|
|
dd9ce36953 | ||
|
|
102aa5dc85 | ||
|
|
f23e43cadc | ||
|
|
0e5097fe0b | ||
|
|
4ed05750e5 | ||
|
|
a64be68417 | ||
|
|
32b7cbbf9d | ||
|
|
8a075b7f05 | ||
|
|
07aeb4b354 | ||
|
|
5de92ba180 | ||
|
|
1e1e0f14fe | ||
|
|
5281d95710 | ||
|
|
38974951b9 | ||
|
|
73f7feec97 | ||
|
|
26dd914a79 | ||
|
|
c8b9147f19 | ||
|
|
ecbed74dd6 | ||
|
|
99f294d572 | ||
|
|
2d2d490f44 | ||
|
|
599cbfd5dc | ||
|
|
ebc5ec8047 | ||
|
|
7fefe97301 | ||
|
|
af96544893 | ||
|
|
33e7225119 | ||
|
|
9a456dcaec | ||
|
|
8634826c01 | ||
|
|
07068c14da | ||
|
|
02917c04dd | ||
|
|
e933074535 | ||
|
|
777d471a98 | ||
|
|
bde877c915 | ||
|
|
55c0c29589 | ||
|
|
819707fc42 | ||
|
|
86700994ba | ||
|
|
3c41f7662b | ||
|
|
3cf198e5e1 | ||
|
|
15c53df25b | ||
|
|
1bf5ae8e7f | ||
|
|
8fe346fac8 | ||
|
|
5f08be41b1 | ||
|
|
89b0b243f9 | ||
|
|
892e4e14cb | ||
|
|
abf8d62c30 | ||
|
|
01e35405d9 | ||
|
|
5b8c050e82 | ||
|
|
1c3ae38368 | ||
|
|
c7db3681be | ||
|
|
898fbea848 | ||
|
|
40057b0022 | ||
|
|
27d94c7de0 | ||
|
|
8612eead4e | ||
|
|
f179ca1822 | ||
|
|
0712fba4c4 | ||
|
|
17a08252f1 | ||
|
|
26e035dabe | ||
|
|
67e9ade712 | ||
|
|
c5c72d9ab0 | ||
|
|
18f76c918c | ||
|
|
cf1a6bbdae | ||
|
|
272c30a5d0 | ||
|
|
5d87a2c9ec | ||
|
|
b6f71355a8 | ||
|
|
49839ff439 | ||
|
|
a58a4b7383 | ||
|
|
d3611bbbf5 | ||
|
|
bc9d10316a | ||
|
|
f63da7c794 | ||
|
|
0ff111cc20 | ||
|
|
63e87aaabf | ||
|
|
0d7c54dd53 | ||
|
|
bcca9bbb8a | ||
|
|
ca2f4d5b8d | ||
|
|
dde61c5e6d | ||
|
|
5a0f94e8c3 | ||
|
|
66e44f45e7 | ||
|
|
e454290827 | ||
|
|
08b4f4eae1 | ||
|
|
1fd7f71f64 | ||
|
|
7d1e18fb39 | ||
|
|
289ba1d431 | ||
|
|
09df60e3d2 | ||
|
|
29ccd0f4ff | ||
|
|
d58b86cfb4 | ||
|
|
0fca6fda6d | ||
|
|
35d375a746 | ||
|
|
1f9222b7f0 | ||
|
|
f7b43bdac1 | ||
|
|
39e595d6fc | ||
|
|
af23150152 | ||
|
|
6ea89637ad | ||
|
|
0c4e81c4b3 | ||
|
|
e14b993890 | ||
|
|
22e17bac31 | ||
|
|
502c61e88e | ||
|
|
2951e5b5e9 | ||
|
|
690f4b4f62 | ||
|
|
964424a084 | ||
|
|
be674bc681 | ||
|
|
fd03b66f83 | ||
|
|
90de6f03b1 | ||
|
|
71ab040728 | ||
|
|
7b0589013b | ||
|
|
eac775dc83 | ||
|
|
31e7844ca1 | ||
|
|
566a1b1c30 | ||
|
|
d9daa078c0 | ||
|
|
4361b5dcbe | ||
|
|
24033e42af | ||
|
|
9c1216332d | ||
|
|
2fff5e4b7b | ||
|
|
8202acabe4 | ||
|
|
6ada0e0cb4 | ||
|
|
c3c21e8b5c | ||
|
|
dae67ed303 | ||
|
|
12791e94d1 | ||
|
|
092d46bac0 | ||
|
|
fcd29a0efb | ||
|
|
5c2451ba44 | ||
|
|
b71ab1c96b | ||
|
|
99e8dd707a | ||
|
|
a712d0bce1 | ||
|
|
ab624f8adc | ||
|
|
32b13dfc75 | ||
|
|
a2480d5286 | ||
|
|
c036a32a68 | ||
|
|
eeb78ee38f | ||
|
|
6a484e7926 | ||
|
|
e04b0b08e2 | ||
|
|
e813d62f4b | ||
|
|
bc72adb8f9 | ||
|
|
a44b4c7cbd | ||
|
|
407bca4bf5 | ||
|
|
192a106d8e | ||
|
|
f5ed9d60a6 | ||
|
|
9839f3b3d0 | ||
|
|
62043a97f2 | ||
|
|
0b073ed84f | ||
|
|
2c357840c8 | ||
|
|
45511c0a12 | ||
|
|
ccbc877034 | ||
|
|
e1b769a43c | ||
|
|
6d3440647d | ||
|
|
4eea1612f2 | ||
|
|
284553361a | ||
|
|
9f48a35118 | ||
|
|
34c8416527 | ||
|
|
6086b721e6 | ||
|
|
9626e1b5ce | ||
|
|
91b0b9a2b1 | ||
|
|
df5a776419 | ||
|
|
37ae3f0e61 | ||
|
|
24d229f383 | ||
|
|
780a8b3e9f | ||
|
|
ee9d73e4fc | ||
|
|
eadb0833e5 | ||
|
|
76f012c25a | ||
|
|
91cd39bae3 | ||
|
|
d64fe1c879 | ||
|
|
ab4d60b1c9 | ||
|
|
3fab803de2 | ||
|
|
0a1f510b66 | ||
|
|
75ec134118 | ||
|
|
344e43392b | ||
|
|
f96f8f46e2 | ||
|
|
69d5418eba | ||
|
|
9692a57069 | ||
|
|
8c51743ee5 | ||
|
|
885b747ca8 | ||
|
|
008673d9eb | ||
|
|
a5b6f17e83 | ||
|
|
1ed2952767 | ||
|
|
5099827e1f | ||
|
|
535625afcd | ||
|
|
1c1ad37797 |
@@ -8,6 +8,17 @@ ARG CLANGD_VERSION=20
|
||||
ARG PYTHON_VERSION=3.12.11
|
||||
ARG NODEJS_VERSION=24
|
||||
|
||||
# Add kitware's apt repository (for cmake)
|
||||
RUN curl -fsSL https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg
|
||||
RUN cat <<EOF | sudo tee /etc/apt/sources.list.d/kitware.sources
|
||||
Types: deb
|
||||
URIs: https://apt.kitware.com/ubuntu
|
||||
Suites: $(lsb_release -cs)
|
||||
Components: main
|
||||
Architectures: $(dpkg --print-architecture)
|
||||
Signed-By: /usr/share/keyrings/kitware-archive-keyring.gpg
|
||||
EOF
|
||||
|
||||
# Install system dependencies
|
||||
RUN sudo apt update \
|
||||
&& sudo apt upgrade -y \
|
||||
|
||||
@@ -60,10 +60,6 @@
|
||||
"python.terminal.activateEnvironment": false,
|
||||
|
||||
// CMake settings
|
||||
"cmake.configureSettings": {
|
||||
"BUILD_DEBUG_DEMO": "ON",
|
||||
"CMAKE_TOOLCHAIN_FILE": "src/MaaUtils/MaaDeps/cmake/maa-x64-linux-toolchain.cmake"
|
||||
},
|
||||
"cmake.configureOnOpen": false,
|
||||
|
||||
// Performance optimizations
|
||||
|
||||
88
.github/workflows/ci.yml
vendored
@@ -4,18 +4,6 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
branches-ignore:
|
||||
- "master"
|
||||
paths:
|
||||
- ".github/workflows/ci.yml"
|
||||
- "3rdparty/include/**"
|
||||
- "cmake/**"
|
||||
- "CMakeLists.txt"
|
||||
- "include/**"
|
||||
- "src/**"
|
||||
- "tools/maadeps-download.py"
|
||||
- "!**/*.md"
|
||||
pull_request:
|
||||
branches:
|
||||
- "dev"
|
||||
paths:
|
||||
@@ -23,6 +11,18 @@ on:
|
||||
- "3rdparty/include/**"
|
||||
- "cmake/**"
|
||||
- "CMakeLists.txt"
|
||||
- "CMakePresets.json"
|
||||
- "include/**"
|
||||
- "src/**"
|
||||
- "tools/maadeps-download.py"
|
||||
- "!**/*.md"
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/ci.yml"
|
||||
- "3rdparty/include/**"
|
||||
- "cmake/**"
|
||||
- "CMakeLists.txt"
|
||||
- "CMakePresets.json"
|
||||
- "include/**"
|
||||
- "src/**"
|
||||
- "tools/maadeps-download.py"
|
||||
@@ -130,19 +130,26 @@ jobs:
|
||||
run: |
|
||||
python3 tools/maadeps-download.py ${{ matrix.arch }}-windows
|
||||
|
||||
- name: Config cmake
|
||||
- name: Configure, build and install
|
||||
run: |
|
||||
mkdir -p build
|
||||
cmake -B build ${{ matrix.arch == 'arm64' && '-A ARM64' }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMAADEPS_TRIPLET='maa-${{ matrix.arch }}-windows' -DINSTALL_RESOURCE=ON -DINSTALL_PYTHON=ON -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}' -DBUILD_WPF_GUI=OFF
|
||||
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake --build build --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
|
||||
- name: Download MaaFramework
|
||||
if: matrix.arch == 'x64'
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
latest: true
|
||||
fileName: '*win-x86_64*.zip'
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Install
|
||||
- name: Copy MaaWin32ControlUnit
|
||||
if: matrix.arch == 'x64'
|
||||
run: |
|
||||
mkdir -p install
|
||||
cmake --install build --prefix install --config RelWithDebInfo
|
||||
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
|
||||
|
||||
- name: Cache .nuke/temp, ~/.nuget/packages
|
||||
id: cache-nuget
|
||||
@@ -249,28 +256,14 @@ jobs:
|
||||
run: |
|
||||
python3 tools/maadeps-download.py ${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux
|
||||
|
||||
- name: Config cmake
|
||||
- name: Configure, build and install
|
||||
run: |
|
||||
mkdir -p build
|
||||
cmake -B build \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DMAADEPS_TRIPLET='maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux' \
|
||||
-DINSTALL_RESOURCE=ON \
|
||||
-DINSTALL_PYTHON=ON \
|
||||
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}' \
|
||||
-DCMAKE_TOOLCHAIN_FILE=src/MaaUtils/MaaDeps/cmake/maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux-toolchain.cmake
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake --build build --config RelWithDebInfo --parallel $(nproc)
|
||||
cmake --preset ${{ matrix.arch == 'x86_64' && 'linux-publish-x64' || 'linux-publish-arm64' }} -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'x86_64' && 'linux-publish-x64' || 'linux-publish-arm64' }} --parallel $(nproc)
|
||||
cmake --install build --config RelWithDebInfo
|
||||
env:
|
||||
CLICOLOR_FORCE: 1
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
mkdir -p install
|
||||
cmake --install build --prefix install --config RelWithDebInfo
|
||||
|
||||
- name: Setup cross compile toolchains for CLI
|
||||
uses: ./src/maa-cli/.github/actions/setup
|
||||
with:
|
||||
@@ -372,20 +365,11 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Config cmake
|
||||
- name: Configure, build and install
|
||||
run: |
|
||||
cmake -B build -GNinja \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_OSX_ARCHITECTURES='${{ matrix.arch }}' \
|
||||
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake --build build --config RelWithDebInfo --parallel $(sysctl -n hw.logicalcpu)
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
cmake --install build --prefix install --config RelWithDebInfo
|
||||
cmake -B build --preset ${{ matrix.arch == 'x86_64' && 'macos-publish-x64' || 'macos-publish-arm64' }} -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'x86_64' && 'macos-publish-x64' || 'macos-publish-arm64' }} --parallel $(sysctl -n hw.logicalcpu)
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Upload MAA to GitHub
|
||||
uses: actions/upload-artifact@v6
|
||||
|
||||
25
.github/workflows/release-nightly-ota.yml
vendored
@@ -185,19 +185,26 @@ jobs:
|
||||
run: |
|
||||
python3 tools/maadeps-download.py ${{ matrix.arch }}-windows
|
||||
|
||||
- name: Config cmake
|
||||
- name: Configure, build and install
|
||||
run: |
|
||||
mkdir -p build
|
||||
cmake -B build ${{ matrix.arch == 'arm64' && '-A ARM64' }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMAADEPS_TRIPLET='maa-${{ matrix.arch }}-windows' -DINSTALL_RESOURCE=ON -DINSTALL_PYTHON=ON -DMAA_HASH_VERSION='${{ steps.set_tag.outputs.tag }}' -DBUILD_WPF_GUI=OFF
|
||||
cmake -B build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} -DMAA_HASH_VERSION='${{ steps.set_tag.outputs.tag }}'
|
||||
cmake --build --preset ${{ matrix.arch == 'arm64' && 'windows-publish-arm64' || 'windows-publish-x64' }} --parallel $env:NUMBER_OF_PROCESSORS
|
||||
cmake --install build --config RelWithDebInfo
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cmake --build build --config RelWithDebInfo --parallel $env:NUMBER_OF_PROCESSORS
|
||||
- name: Download MaaFramework
|
||||
if: matrix.arch == 'x64'
|
||||
uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: MaaXYZ/MaaFramework
|
||||
latest: true
|
||||
fileName: '*win-x86_64*.zip'
|
||||
extract: true
|
||||
out-file-path: MaaFramework-temp
|
||||
|
||||
- name: Install
|
||||
- name: Copy MaaWin32ControlUnit
|
||||
if: matrix.arch == 'x64'
|
||||
run: |
|
||||
mkdir -p install
|
||||
cmake --install build --prefix install --config RelWithDebInfo
|
||||
cp MaaFramework-temp/bin/*Win32ControlUnit* install/
|
||||
|
||||
- name: Cache .nuke/temp, ~/.nuget/packages
|
||||
id: cache-nuget
|
||||
|
||||
@@ -18,6 +18,11 @@ on:
|
||||
type: boolean
|
||||
required: false
|
||||
default: true
|
||||
maa_cos:
|
||||
description: "Upload to MAA COS"
|
||||
type: boolean
|
||||
required: false
|
||||
default: true
|
||||
|
||||
env:
|
||||
RELEASE_TAG_RAW: ${{ github.event.inputs.release_tag || 'latest' }}
|
||||
@@ -120,3 +125,30 @@ jobs:
|
||||
release-tag: ${{ env.RELEASE_TAG }}
|
||||
fork-user: MaaAssistantArknights
|
||||
token: ${{ secrets.MAABOT_WINGET_TOKEN }}
|
||||
|
||||
maa_cos:
|
||||
name: Upload to MAA COS
|
||||
needs: meta
|
||||
if: ${{ github.event.inputs.maa_cos == 'true' && !contains(needs.meta.outputs.RELEASE_TAG, '-') }}
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
env:
|
||||
FILENAME: MAA-${{ needs.meta.outputs.RELEASE_TAG }}-win-x64.zip
|
||||
|
||||
steps:
|
||||
- uses: robinraju/release-downloader@v1
|
||||
with:
|
||||
repository: 'MaaAssistantArknights/MaaAssistantArknights'
|
||||
latest: true
|
||||
fileName: ${{ env.FILENAME }}
|
||||
out-file-path: 'downloads'
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Upload to COS
|
||||
uses: zkqiang/tencent-cos-action@v0.1.0
|
||||
with:
|
||||
args: upload -rs downloads/${{ env.FILENAME }} MAA/${{ env.FILENAME }}
|
||||
secret_id: ${{ secrets.MISTEO_MAA_COS_SECRET_ID }}
|
||||
secret_key: ${{ secrets.MISTEO_MAA_COS_SECRET_KEY }}
|
||||
bucket: ${{ secrets.MISTEO_MAA_COS_BUCKET }}
|
||||
region: ${{ secrets.MISTEO_MAA_COS_REG }}
|
||||
|
||||
2
.github/workflows/release-preparation.yml
vendored
@@ -95,7 +95,7 @@ jobs:
|
||||
AnnAngela
|
||||
|
||||
- name: Assign reviewers to release PR
|
||||
uses: kentaro-m/auto-assign-action@v2.0.0
|
||||
uses: kentaro-m/auto-assign-action@v2.0.1
|
||||
with:
|
||||
configuration-path: ".github/release_reviewers.yaml"
|
||||
|
||||
|
||||
22
.github/workflows/res-update-game.yml
vendored
@@ -184,25 +184,13 @@ jobs:
|
||||
run: |
|
||||
python3 tools/maadeps-download.py arm64-osx
|
||||
|
||||
- name: Config cmake
|
||||
- name: Config, Build & Install ResourceUpdater
|
||||
if: steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd tools/ResourceUpdater
|
||||
mkdir -p build
|
||||
cmake -B build -GNinja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DMAADEPS_TRIPLET='maa-arm64-osx' \
|
||||
-DWITH_HASH_VERSION=ON
|
||||
|
||||
- name: Build
|
||||
if: steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cmake --build tools/ResourceUpdater/build --config Release --parallel $(sysctl -n hw.logicalcpu)
|
||||
|
||||
- name: Install
|
||||
if: steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cmake --install tools/ResourceUpdater/build --prefix tools/ResourceUpdater --config Release
|
||||
cmake --preset res-updater-macos-arm64
|
||||
cmake --build --preset res-updater-macos-arm64 --parallel $(sysctl -n hw.logicalcpu)
|
||||
cmake --install build --config Release
|
||||
|
||||
- name: Save ResourceUpdater to cache
|
||||
if: always() && steps.resupd-cache.outputs.cache-hit != 'true'
|
||||
@@ -291,7 +279,7 @@ jobs:
|
||||
- name: Optimize png images
|
||||
if: steps.update_version.outputs.contains_png == 'True'
|
||||
run: |
|
||||
python3 tools/OptimizeTemplates/optimize_templates.py -p resource/template/items/ resource/template/infrast/
|
||||
python3 tools/OptimizeTemplates/optimize_templates.py --no-cleanup -p resource/template/items/ resource/template/infrast/
|
||||
|
||||
- name: Commit changes
|
||||
if: steps.update_version.outputs.changes == 'True'
|
||||
|
||||
25
.github/workflows/smoke-testing.yml
vendored
@@ -4,6 +4,8 @@ permissions:
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "dev"
|
||||
paths:
|
||||
- ".github/workflows/smoke-testing.yml"
|
||||
- "3rdparty/include/**"
|
||||
@@ -87,27 +89,12 @@ jobs:
|
||||
run: |
|
||||
python3 tools/maadeps-download.py arm64-osx
|
||||
|
||||
- name: Config cmake
|
||||
- name: Configure, build and install
|
||||
if: steps.smoke-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
mkdir -p build
|
||||
cmake -B build -GNinja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DMAADEPS_TRIPLET='maa-arm64-osx' \
|
||||
-DBUILD_SMOKE_TEST=ON \
|
||||
-DINSTALL_RESOURCE=ON \
|
||||
-DWITH_HASH_VERSION=ON
|
||||
|
||||
- name: Build
|
||||
if: steps.smoke-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cmake --build build --config Debug --parallel $(sysctl -n hw.logicalcpu)
|
||||
|
||||
- name: Install
|
||||
if: steps.smoke-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
mkdir -p install
|
||||
cmake --install build --prefix install --config Debug
|
||||
cmake -B build --preset smoke-test
|
||||
cmake --build build --preset smoke-test --parallel $(sysctl -n hw.logicalcpu)
|
||||
cmake --install build --config Debug
|
||||
|
||||
- name: Make link to Smoke Test cache
|
||||
if: steps.smoke-cache.outputs.cache-hit == 'true'
|
||||
|
||||
12
.gitignore
vendored
@@ -411,10 +411,10 @@ FodyWeavers.xsd
|
||||
# VS Code files for those working on multiple tools
|
||||
**/.vscode/*
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
# !.vscode/settings.json
|
||||
# !.vscode/tasks.json
|
||||
# !.vscode/launch.json
|
||||
# !.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
@@ -434,7 +434,6 @@ FodyWeavers.xsd
|
||||
screen.png
|
||||
adb_screen.png
|
||||
tools/**/*.png
|
||||
.vscode
|
||||
enc_temp_folder/*
|
||||
|
||||
# RoguelikeRecruitmentTool 导出的 Excel 文件
|
||||
@@ -479,3 +478,6 @@ install
|
||||
|
||||
# pnpm cache
|
||||
.pnpm-store
|
||||
|
||||
# CMake user presets
|
||||
CMakeUserPresets.json
|
||||
|
||||
3
.vscode/settings.json
vendored
@@ -15,5 +15,6 @@
|
||||
"files.associations": {
|
||||
"**/resource/tasks/**/*.json": "jsonc"
|
||||
},
|
||||
"C_Cpp.exclusionPolicy": "checkFilesAndFolders"
|
||||
"C_Cpp.exclusionPolicy": "checkFilesAndFolders",
|
||||
"cmake.outputLogEncoding": "UTF-8"
|
||||
}
|
||||
|
||||
375
CHANGELOG.md
@@ -1,269 +1,268 @@
|
||||
## v6.2.3
|
||||
## v6.3.2
|
||||
|
||||
### Highlights
|
||||
### 拉电线不知天地为何物 | Highlight
|
||||
|
||||
随着米诺斯 SS 的到来,我们迎来了一位全新的萨尔贡六星干员,~~那么牛牛的米诺斯大C在哪呢?~~
|
||||
本次版本更新真的是千呼万唤始出来,也恰逢新年版本和 PC 端的发布,我们在这个版本提供了对 PC 端的初步支持,也合并了 SideStory 「辞岁行」 的数据。
|
||||
|
||||
#### 日志侧边栏重构
|
||||
#### Windows 端一键长草任务配置重构
|
||||
|
||||
本次更新我们对主页日志侧边栏进行了整体重构,统一并优化了布局与视觉样式。
|
||||
本次更新我们对 Windows 端 「一键长草」 任务配置进行了重构,解决了一些痛点。
|
||||
|
||||
现在你可以在「设置 → 界面设置」中控制【使用卡片样式日志】设置来切换日志样式,控制【日志缩略图最大数量】设置来决定日志侧边栏的缩略图数量上限(这些缩略图都是临时保存在内存里的,**内存较小的用户可能需要调整数量**)
|
||||
现在牛牛支持添加多个重复类型任务,并支持重命名。现在你可以通过 「一键长草」 任务左下角的加号按钮添加多个同类型任务,并可以通过拖拽任务来调整任务执行顺序,以及右键点击任务右侧的齿轮图标重命名和删除任务,这样你就可以更灵活地管理任务。
|
||||
|
||||
#### 自动战斗优化
|
||||
牛牛也新增了理智作战任务的周计划设置,可按星期数(如星期三、星期二、星期五等)设置任务是否执行。这样你就可以结合上面提到的添加任务,<u>在理智作战任务前添加另一个理智作战任务,并将其设置为仅打当期剿灭、仅在星期一运行</u>,更多用法等你探索~
|
||||
|
||||
我们优化了自动战斗功能的作业路径下拉选择栏,现在同一个任务的本地作业将会折叠在一起,大幅度提升了下拉选择栏的可读性。
|
||||
另外,在牛牛执行一键长草流程时,各个任务的勾选框会根据其运行状态以不同颜色进行区分,直观反馈任务被跳过、已完成、运行中或执行失败等状态。
|
||||
|
||||
另外,本次游戏更新 yj 修改了暂停按钮的位置,我们已经通过热更新修复该问题,本次更新 MAA 也会合并此项修复。
|
||||
注:由于牛牛现已支持 「理智作战」 周计划并可添加多个同类型任务,本次更新**移除了原有 「剿灭作战」 任务失败后自动尝试下一个已开放的备选逻辑**,如有需要请参照上方的示例添加对应任务。
|
||||
|
||||
#### 今日关卡提示优化
|
||||
#### PC 端初步支持
|
||||
|
||||
今日关卡提示中的掉落信息现已支持同步显示对应的库存数量,便于在刷图规划时快速判断材料缺口与优先级。
|
||||
本次更新,牛牛已支持控制 PC 端明日方舟了~不过有以下限制:
|
||||
|
||||
你可通过「小工具 → 仓库识别」更新库存数量,今日关卡提示中的掉落信息会自动同步更新。
|
||||
* 由于 Windows 的限制,PC 端在被控制时**不可以处于最小化窗口状态**,否则游戏画面不会被渲染,也就无法被牛牛识别;
|
||||
* 由于 Win32 API 和某反作弊软件的限制,牛牛在控制 PC 端时**必须要直接控制鼠标(不能模拟点击)**,期间不建议你使用鼠标。
|
||||
|
||||
#### 基建与线索管理优化
|
||||
另外,由于维护人手有限,PC 端的适配可能长期处于不稳定状态,部分功能可能出现异常或暂时无法使用。
|
||||
|
||||
我们在「一键长草 → 基建换班 → 高级设置」里新增了【进行线索交流】【赠送线索】两项独立开关设置,提升基建管理的灵活性。
|
||||
我们非常欢迎社区开发者协助适配并提交改进,共同完善对 PC 端的支持。
|
||||
|
||||
我们也优化了一键赠送线索等的逻辑,减少误操作发生的可能性。
|
||||
#### 其他方面
|
||||
|
||||
同时,在基建进入设施失败时牛牛将自动保留测试截图,便于后续问题的定位与排查。
|
||||
|
||||
#### 成就系统 DLC
|
||||
|
||||
我们新增了一些成就,覆盖多个场景,等你探索哦~
|
||||
* 我们继续对界园肉鸽进行适配,包括 DLC 2 的更新支持;
|
||||
* 我们优化了自动编队的识别,现在支持对作业要求的精英化、等级和模组的识别,如果发现你的干员不满足要求将会有对应提示;
|
||||
* 相应的,干员识别功能也支持显示精英化和等级了。
|
||||
|
||||
----
|
||||
|
||||
#### Log Sidebar Redesign
|
||||
#### Restructuring of *Farming* Configuration for Windows
|
||||
|
||||
In this update, we've completely redesigned the main page log sidebar, unifying and optimizing its layout and visual style.
|
||||
In this update, we have restructured the *Farming* configuration for Windows, addressing several pain points.
|
||||
|
||||
You can now switch log styles by controlling the *Use card style log* setting in *Settings → GUI*, and control the *Maximum number of log thumbnails* setting to determine the maximum number of thumbnails in the log sidebar (these thumbnails are temporarily stored in memory, **users with limited memory may need to adjust the number**).
|
||||
MAA now supports adding multiple tasks of the same type and renaming them. You can add multiple tasks of the same type using the plus button at the bottom left of the *Farming* panel, adjust the execution order by dragging tasks, and rename or delete tasks by right-clicking the gear icon on the right side of each task. This allows for more flexible task management.
|
||||
|
||||
#### *Copilot* Optimization
|
||||
MAA also supports weekly schedule settings for *Combat* tasks, allowing you to specify on which days of the week (e.g., Monday, Thursday) a task should run. For example, you can add another *Combat* task before your existing one and set it to only run Current Annihilation on Mondays. More usage scenarios await your exploration!
|
||||
|
||||
We've optimized the task path dropdown selection bar for the *Copilot*. Local tasks for the same stage will now be collapsed together, significantly improving the readability of the dropdown selection bar.
|
||||
Additionally, when MAA executes the *Farming* process, the checkboxes for each task will be color-coded to indicate their status: skipped, completed, running, or failed, providing intuitive feedback.
|
||||
|
||||
Additionally, the game update changed the position of the pause button. We have fixed this issue through a hot update, and this fix has been merged into the MAA update.
|
||||
Note: Since MAA now supports weekly schedules for *Combat* tasks and allows adding multiple tasks of the same type, this update **removes the previous logic that automatically attempted the next available alternative stage after a "Current Annihilation" task failure**. If needed, please refer to the example above to add corresponding tasks.
|
||||
|
||||
#### *Today's open stages* Hint Optimization
|
||||
#### Preliminary PC Client Support (**[CN ONLY]**)
|
||||
|
||||
The drop information in the *Today's open stages* hints now supports synchronous display of the corresponding depot quantity, making it easier to quickly determine material shortages and priorities when planning your stage runs.
|
||||
In this update, MAA now supports controlling the PC client of Arknights.
|
||||
|
||||
You can update your depot info through *Toolbox → Depot*, and the daily drop information in the *Today's open stages* hints will be automatically updated.
|
||||
However, due to limited maintenance resources, PC client adaptation may remain unstable for a long period, and some features may experience issues or be temporarily unavailable.
|
||||
|
||||
#### *Base* and Clue Management Optimizations
|
||||
We warmly welcome community developers to assist with adaptation and submit improvements to collectively enhance PC client support.
|
||||
|
||||
We've added two independent toggle settings for *Conduct Clue Exchange* and *Send Clues* in *Farming → Base → Advanced*, improving the flexibility of *Base* management.
|
||||
#### Other Updates
|
||||
|
||||
We've also optimized the logic for one-click clue sending, reducing the possibility of accidental operations.
|
||||
|
||||
Additionally, when *Base* entry fails, MAA will automatically save a test screenshot for easier troubleshooting and identification of subsequent issues.
|
||||
|
||||
#### Achievement System DLC
|
||||
|
||||
We've added some achievements covering multiple scenarios, waiting for you to explore!
|
||||
* Continued adaptation for *Sui's Garden of Grotesqueries*, including support for DLC 2 updates (**[CN ONLY]**)
|
||||
* Optimized recognition in *Auto Squad*, which now supports identifying elite, level, and module requirements. If your operators do not meet the requirements, you will receive corresponding prompts.
|
||||
* The operator recognition feature now also supports displaying elite and level information.
|
||||
|
||||
----
|
||||
|
||||
以下是详细内容:
|
||||
|
||||
## v6.2.3
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 肉鸽自动站位算法遇到未设置优先级地块崩溃 @status102
|
||||
* ↑有猪 肉鸽遇到源石地板会闪退 @ABA2396
|
||||
* vertical alignment to top instead of center for updatesettings (#15359) @Constrat @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* EN tweak for ATO minigame @Constrat
|
||||
|
||||
## v6.2.2
|
||||
## v6.3.2
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 只有一个配置时标题栏隐藏配置名 @ABA2396
|
||||
* 检查更新失败时吐司通知 @ABA2396
|
||||
* 新增截图增强模拟器路径的选择窗口 @ABA2396
|
||||
* 自动战斗-自动编队支持技能等级要求 (#15355) @status102
|
||||
* 设置指引中添加使用指引页 @ABA2396
|
||||
* 睡眠休眠前增加倒计时弹窗 @ABA2396
|
||||
* 生息演算支援道具名称改为全字匹配 @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 调整 ViewModels 目录结构,规范 ViewModels 命名 (#15389) @ABA2396
|
||||
* 优化动画效果 @ABA2396
|
||||
* 优化仓库识别二值化阈值 @ABA2396
|
||||
* 悬浮窗改 static @status102
|
||||
* 干员识别按照 稀有度->精英化->等级->潜能->Id 排序 @ABA2396
|
||||
* 优化识别工具中列表小于 5 时的显示效果 @ABA2396
|
||||
* optimize templates @Constrat
|
||||
* increase score for AddOperatorTradeAggressive EN @Constrat
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 界园指挥避战刷钱增加黑屏等待 @Saratoga-Official
|
||||
* 有猪把成就注释掉了 @ABA2396
|
||||
* 修复特殊路径下执行 adb 命令可能失败的问题 (#15381) (#15382) @sylw114
|
||||
* 修复 TaskDialog 按钮文本赋值时的语法错误及空引用保护 (#15377) @hcl55
|
||||
* 修复牛牛抽卡点击停止之后文字提示不会停止变化 @ABA2396
|
||||
* 仓库数据 parse 失败时返回空数据 @ABA2396
|
||||
* 修复肉鸽快速编队按钮边缘无法点击导致出错 @Saratoga-Official
|
||||
* 修复矿石"杀手"识别 @Saratoga-Official
|
||||
* 肉鸽增加黑屏等待时间 @Saratoga-Official
|
||||
* 悖论模拟-作业列表额外等待 @status102
|
||||
* 修复构建警告 @ABA2396
|
||||
* 收到关卡名识别失败回调时更新卡片 @ABA2396
|
||||
* Fix phantom puppet not deploying @Constrat
|
||||
* Fix AT ClickStage t -> T @Constrat
|
||||
* Add AsstGetImageBgr to wine shim @dantmnf
|
||||
* 4 星公招时间显示错误 @ABA2396
|
||||
* 刷理智自定义剿灭关卡在特定情况的绑定错误 @status102
|
||||
* 在禁用刷理智-自定义剿灭关卡后需要手动切换任务以刷新列表中显示的剿灭关卡, 尽管不影响实际运行 @status102
|
||||
* 会客室任务失败重试时尝试关闭赠送线索界面 @ABA2396
|
||||
* 肉鸽开局种子无法通过 Wpf 设置两位数难度 @status102
|
||||
* 小工具-公招识别 3~5 星选择时间无法修改 @status102
|
||||
* 小工具-干员识别 开始识别按钮启用状态绑定失效 @status102
|
||||
* 自动公招任务 3~5 星确认时间在修改后未能刷新 UI @status102
|
||||
* EN AveMujica terminal new template @Constrat
|
||||
* EN IS tentative fix increasing roi for encounter and more replace regex @Constrat
|
||||
* English text overflow on long strings in middle column @Constrat
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 更新开发指南 @ABA2396
|
||||
* Update cli usage.md with Windows installation note (#15369) @JasonHuang79
|
||||
* 删除一些过时内容 (#15700) @JasonHuang79
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* 快捷置入显示加点判断日志 @ABA2396
|
||||
* 制造站加入苍苔组,避免苍苔与阿罗玛冲突 (#15343) @drway
|
||||
* 地块类型标注 TileType (#15373) @status102
|
||||
* 抽卡任务结束后提示还原为默认 @ABA2396
|
||||
* 一图流上报 id 单独实现 @ABA2396
|
||||
* EN tweak to inventory display @Constrat
|
||||
* AT updates @Constrat
|
||||
* YostarJP AT updates @Manicsteiner
|
||||
* YostarKR AT updates @HX3N
|
||||
* Preload AT + new alter operators regex for EN @Constrat
|
||||
* YostarJP AT preload and ocr edit @Manicsteiner
|
||||
* Update OrundumActivities for EN @Constrat
|
||||
* 增加 id 格式验证 @ABA2396
|
||||
* 明确周计划和定时更新使用游戏时间而非现实时间 @ABA2396
|
||||
* 移除老主线导航逻辑 (#15644) @SherkeyXD
|
||||
* 繁中服「夢鄉」主題 (#15699) @momomochi987
|
||||
* Yostar servers SSS#9 and ShamareThumbnail (#15732) @Manicsteiner @Constrat
|
||||
|
||||
## v6.2.1
|
||||
## v6.3.1
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 公告界面触屏滚动 @ABA2396
|
||||
* 拆分 debug 和 report 文件夹逻辑 @ABA2396
|
||||
* OperNameAnalyzer 支持左对齐检测 (#15682) @ABA2396
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 自动检测地图是否为多阶段地图, 判断是否需要使用 view[0].x 修正镜头 (#15371) @status102
|
||||
* 优化下拉框逻辑 @ABA2396
|
||||
* 用妖法实现了自动战斗下拉框的失焦和收起按钮 @ABA2396
|
||||
* 配置迁移自动为启用备选且首个关卡为剿灭模式的刷理智任务自动添加额外的刷理智任务 @status102
|
||||
* 忽略干员属性要求 不再允许跳过精英化要求 (#15697) @status102 @Constrat @HX3N
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 游戏更新后结算黑屏时长大幅增加,导致肉鸽结算失败 @ABA2396
|
||||
* 增加理智战斗后点击到掉落列表的重试次数,避免延长的黑屏时间影响 @ABA2396
|
||||
* 将借助战打 OF-1 的任务结束后最大等待时间翻倍,避免延长的黑屏时间影响 @ABA2396
|
||||
* 肉鸽推荐设置文本 (#15370) @ABA2396 @Saratoga-Official
|
||||
* 自动战斗-悖论模拟 中文路径作业 解析作业失败 @status102
|
||||
* 肉鸽重试时误点进招募界面 @Saratoga-Official
|
||||
* 移除 ExceptionStacktrace.hpp @status102
|
||||
* 收取好友线索延迟 @ABA2396
|
||||
* JP AveMujica event ocr @Manicsteiner
|
||||
* EN IS StageRefresh @Constrat
|
||||
* i'm kinda stupid @Constrat
|
||||
* update refresh node EN IS5 @Constrat
|
||||
* EN IS fix trader store templates AGAIN @Constrat
|
||||
* EN Yu OCR for Yutenji @Constrat
|
||||
* 自动编队选择技能时点击到技能描述/技能范围 @status102
|
||||
* 自动编队期间如有干员属性要求被忽略, 则禁用自动化投票 @status102
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 更新 Visual C++ 可再发行程序包链接至 V14 版本 (#15360) @wryx166
|
||||
* 更新 api 链接 @ABA2396
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* 调整战斗结束后的点击位置 @ABA2396
|
||||
* 悖论模拟自动战斗任务翻译 @ABA2396
|
||||
* UserAdditional 非 json 格式返回原始字符串 @status102
|
||||
* 使用屏幕宽高常量代替硬编码 @status102
|
||||
* 屏幕外的干员跳过技能就绪检测 @status102
|
||||
* 調整繁中服界園肉鴿 OCR (2/?) @momomochi987
|
||||
* color [INF] for smoke testing as well @Constrat
|
||||
* 调整单字干员正则 @ABA2396
|
||||
* 調整繁中服界園肉鴿 OCR (#15678) @momomochi987
|
||||
* 删除干员名开头/末尾的_<> @ABA2396
|
||||
* 添加响石、赤刃明霄陈基建技能加成 (#15674) @drway
|
||||
* 保全派驻自动战斗使用二值化结果识别干员名 @ABA2396
|
||||
* 删除无用的正则替换 @ABA2396
|
||||
* 自动战斗使用二值化结果识别干员名 @ABA2396
|
||||
* 仅在 VS Code 中添加辅助项目 (#15669) @status102
|
||||
* JP OperNameAnalyzer specialParams @Manicsteiner
|
||||
|
||||
## v6.2.0
|
||||
## v6.3.0
|
||||
|
||||
### 新增 | New
|
||||
|
||||
* 重构仓库识别结构,支持根据关卡掉落情况自动更新 (#15358) @ABA2396
|
||||
* 成就 DLC 功能 (#15288) @ABA2396
|
||||
* 增强自动战斗文件选择功能,支持多级路径和相对目录 (#15174) @momomochi987 @ABA2396
|
||||
* 允许设置是否启用线索交流与赠送线索 (#15278) @ABA2396
|
||||
* 增加冬时至基建温蒂组并调整温蒂组选人逻辑 (#15294) @drway
|
||||
* 通知渠道添加 Gotify (#15284) @2436238575
|
||||
* 给 Bark 通知添加默认的分类组 (#15244) @Anselyuki
|
||||
* 重构主页日志侧边栏整体布局和样式 (#15211) @MistEO @ABA2396
|
||||
* 支持日志样式切换 @ABA2396
|
||||
* 基建设施缩略图 @ABA2396
|
||||
* 自动战斗日志栏添加日志悬浮窗按钮 @ABA2396
|
||||
* 关卡提示支持显示库存 @ABA2396
|
||||
* 更新库存提示移到 ToolTip @ABA2396
|
||||
* 可以点击 20 次按钮关闭公告弹窗 @ABA2396
|
||||
* 日志允许图片更新时不添加内容 @ABA2396
|
||||
* 限制使用 CPU 推理时的线程占用数,优先保证模拟器运行 @ABA2396
|
||||
* 基建进入设施失败时保留测试截图 @ABA2396
|
||||
* 将自动重载资源独立出来,在 debug 模式下显示勾选框 @ABA2396
|
||||
* 尝试增加 B 服开屏活动跳过 @ABA2396
|
||||
* 检测到自身处于临时路径中时阻止启动 (#14961) @Rbqwow @ABA2396
|
||||
* 企鹅物流上报 ID 不为空时禁止被上报结果赋值 @ABA2396
|
||||
* 新增肉鸽主题推荐配置 tip 并适配多语言 (#15324) @hcl55 @HX3N @Manicsteiner @Constrat @momomochi987 @ABA2396
|
||||
* SideStory 「雅赛努斯复仇记」导航 @SherkeyXD
|
||||
* Disable CoreML for detection and recognition on macOS @MistEO
|
||||
* 支持 PC 端明日方舟 (#15407) @MistEO @ABA2396
|
||||
* SideStory「辞岁行」导航及地图数据更新 @SherkeyXD @status102
|
||||
* 界园肉鸽 DLC 2 分队更新、通宝数据更新、可选难度提高至 18、支持指定种子开局 (#15588) @SherkeyXD @status102 @HX3N @Manicsteiner
|
||||
* 繁中服界園肉鴿初步適配 (#15605) @momomochi987
|
||||
* 干员识别支持显示精英化、等级与潜能 @ABA2396
|
||||
* 自动编队识别精英化、等级及模组要求 (#15161) @status102 @Manicsteiner @Constrat @HX3N
|
||||
* 芯片本支持显示库存数量 @ABA2396
|
||||
* 新增注入弹窗不再提醒的勾选框,勾选后使用软件渲染 @ABA2396
|
||||
* WpfGui 清空缓存按钮 (#15582) @soundofautumn @Constrat @HX3N @momomochi987
|
||||
* 自定干员名称无效时的错误处理及本地化支持 (#15556) @yali-hzy @HX3N
|
||||
* 设置指引增加右键重命名/删除提示 @ABA2396
|
||||
* 新 Config 加载时移除旧 Config 中不存在的配置 @status102
|
||||
* 日志中额外记录 TaskChain 与 taskId ~~免得有人把 Fight 改成开始唤醒~~ @ABA2396
|
||||
* YostarEN/JP/KR Dreamland、JieGarden 和 AveMujica 主题支持 @Constrat @Manicsteiner @HX3N
|
||||
|
||||
### 改进 | Improved
|
||||
|
||||
* 重构自动战斗标签页逻辑,拆分悖论模拟任务 (#15327) @ABA2396 @yali-hzy @status102 @HX3N @Constrat
|
||||
* 刷理智任务指定次数与代理倍率冲突提醒 (#15233) @status102 @HX3N @momomochi987 @Manicsteiner
|
||||
* 优化线索交流、获取好友线索逻辑 @ABA2396
|
||||
* 优化界面显示效果与换行 @ABA2396
|
||||
* 优化缩略图逻辑 @ABA2396
|
||||
* 优化 PropertyDependsOnHelper 实现 @ABA2396
|
||||
* 将 PropertyDependsOnViewModel 改为静态工具类 @ABA2396
|
||||
* 调整缩略图 ToolTip 延迟 @ABA2396
|
||||
* 在禁用时 TooltipBlock 显示特效 (#15260) @yali-hzy @ABA2396
|
||||
* 重命名以符合文件结构 @ABA2396
|
||||
* devcontainer 从 conda 迁移至 mise/uv (#15251) @SherkeyXD
|
||||
* rename Dps to Ops (#15325) @ABA2396
|
||||
* Wpf 一键长草任务配置重构,支持添加多个同类型任务、重命名和周计划设置 (#15385) @status102 @ABA2396 @momomochi987 @HX3N
|
||||
* 刷理智过期关卡逻辑/样式优化 @status102 @ABA2396
|
||||
* 关卡候选列表刷新及关卡选择下拉列表刷新 (#15562) @status102 @HX3N @Constrat @Manicsteiner @momomochi987
|
||||
* 优化自动战斗界面布局 (#15512) @yali-hzy
|
||||
* 优化任务设置按钮悬浮提示 @ABA2396
|
||||
* 优化设置右键菜单布局 @ABA2396
|
||||
* 优化干员识别、仓库识别显示 @ABA2396
|
||||
* 配置迁移检查优化与简化 @status102 @ABA2396
|
||||
* 开始唤醒任务未设置账号切换时,禁用手动切换按钮 @status102
|
||||
* 自动战斗掉线重连、自动肉鸽在战斗结束前延迟「停止」动作添加多任务共用提示 @ABA2396 @status102
|
||||
* 剿灭卡使用到上限时不报错停止 @ABA2396
|
||||
* 剿灭关卡通过 ends_with 判断 @ABA2396
|
||||
* 刷理智任务高级设置 UI 调整选项顺序和显示优化 @status102
|
||||
* 自动战斗自动编队检查`干员等级&精英化`及`技能等级`拆分 @status102
|
||||
* 自动战斗不支持技能重置说明中,干员名遵循干员名语言设置 @status102
|
||||
* 自动战斗作业列表使用相对路径代替绝对路径 @status102
|
||||
* TaskQueue 重命名与移除时显示任务序号 @status102
|
||||
* TaskQueue 任务开始&完成显示修改后的任务名 @status102
|
||||
* 追加自定干员允许不切换技能 @status102
|
||||
* 存在 crash.log 时,Wpf 尝试获取 dumps 文件 (#15432) @status102
|
||||
* 移除过时的参数兼容 @status102
|
||||
* 消除部分编译警告 (#15578) @yali-hzy
|
||||
* NumberOcrReplace 新增规则 (#14186) @Manicsteiner
|
||||
|
||||
### 修复 | Fix
|
||||
|
||||
* 界园肉鸽因点击模板边缘导致关卡进不去 @Saratoga-Official
|
||||
* 肉鸽暂停按钮更新 @ABA2396
|
||||
* 20260109 游戏更新导致自动战斗失效 @status102
|
||||
* 同时开启「剿灭模式」和「备选关卡」会导致「企鹅物流汇报 ID」被修改 @ABA2396
|
||||
* 无法通过删除自动战斗输入框内容清除当前作业,无法通过在输入框输入神秘代码直接开始战斗 @ABA2396
|
||||
* 线索数量识别 @ABA2396
|
||||
* 线索板上有线索时无法一键放置线索 @ABA2396
|
||||
* 肉鸽未填写开局干员时借助战强制为 false @ABA2396
|
||||
* 隐秘战线结局识别 @ABA2396
|
||||
* 隐秘战线识别到多余字符时无法进入对应事件 @ABA2396
|
||||
* 给缺失干员检查补上 Unavailable (#15296) @Alan-Charred
|
||||
* 尝试修复基建效率计算中的 out_of_range 异常 @ABA2396
|
||||
* 远程控制截图无法获取最新图像 (#15276) @Hakuin123
|
||||
* Debug 图片保存目录 (#15250) @hguandl
|
||||
* 修复文档站搜索问题 @SherkeyXD
|
||||
* 鬼影迷踪 -> 诡影迷踪 @ABA2396
|
||||
* 撷英调香师 @ABA2396
|
||||
* 避免其他 locale 下,掉落次数误认数字字符 (#15306) @aflyhorse
|
||||
* ai review @ABA2396
|
||||
* Filename too long @Daydreamer114
|
||||
* update DormMini.png for EN (again) @Constrat
|
||||
* fix SA1518 warnings @Constrat
|
||||
* SA1633 warning missing copyright notice @Constrat
|
||||
* waydroid rawbync screencap 2>/dev/null (#15196) @commondservice
|
||||
* 配置迁移相关问题修复:迁移后切换回原配置、删除配置时未删除 .new、多配置用户删除 Default 配置时迁移异常、剩余理智启用状态和关卡选择迁移问题 @status102 @ABA2396
|
||||
* 刷理智任务相关修复:切换刷理智任务时读取错误关卡列表、运行时不允许添加关卡 @status102
|
||||
* 自动编队相关修复:识别技能等级匹配失败、干员技能描述过长时点击位置错误、禁用快速选中以修复外服干员技能描述过长的错误选中、干员等级跨精英化时判断出错、干员等级不足 i18n 未启用、干员组干员未解析精英化及等级属性、先兼容旧作业中不合理的技能选择 @status102
|
||||
* 公招加速券识别问题修复 @status102
|
||||
* LoadApiCache 路径拼接错误 @ABA2396
|
||||
* 主线导航及外服主线导航问题修复 @SherkeyXD @ABA2396
|
||||
* 在赠送线索时弹出上次线索交流结束的提示时无法返回 @ABA2396
|
||||
* 粘贴作业集代码后下方的链接未重置为作业站链接 @ABA2396
|
||||
* 修复移动已打开设置的任务后,当前的设置面板无法继续修改的问题 @ABA2396
|
||||
* 萨米肉鸽刷开局功能异常 @ABA2396
|
||||
* 肉鸽烧水分队切换界面后错误重置 @status102
|
||||
* 保证通宝优先级未定义时不会加载崩溃 fallback 到默认值 @SherkeyXD
|
||||
* SEH 错误终止运行 @status102
|
||||
* 启动 MAA 时若没有任何任务,则追加一套默认任务 @status102
|
||||
* 启动客户端绑定失效问题修复 @status102
|
||||
* 关卡列表显示不刷新 @status102
|
||||
* 选中完成后动作时添加新任务未能隐藏完成后动作设置 UI @status102
|
||||
* 刷理智使用源石 CheckBox 勾选后不生效 @status102
|
||||
* 退出 MAA 时重置变量不再刷新 UI @status102
|
||||
* 初始化 StartEnabled 属性为 true (#15596) @yali-hzy
|
||||
* 自动战斗切换活动类型未清空解析缓存 @status102
|
||||
* 修复任务出错日志可能晚于任务完成日志显示的问题 @ABA2396
|
||||
* 开始干员识别前重置潜能状态 @ABA2396
|
||||
* 修复生息演算商店无法正常购买皮肤的问题 (#15585) @drway
|
||||
* 手动输入关卡名时,不移除过期关卡 @status102
|
||||
* 过期关卡重置模式补充自动迁移 @status102
|
||||
* OR 关卡掉落界面关卡名识别问题 @ABA2396
|
||||
* EX 关符合时 1 被识别为 | @ABA2396
|
||||
* NumberOcrReplace 移除`|`和`/` (#15625) @status102
|
||||
* 移除单字干员 ocr 替换中的 +*?避免误判 @Saratoga-Official
|
||||
* 涤火杰西卡识别 @ABA2396
|
||||
* 日服酒神、見字祠识别 @Saratoga-Official
|
||||
* YostarKR Roguelike@ChooseOperConfirm @HX3N
|
||||
* YostarKR use ' ' in ocrReplace to preserve '\n' for InfrastTrainingTask @HX3N
|
||||
* EN Greyy Alter regex @Constrat
|
||||
* EN IS6 encounter @Constrat
|
||||
* EN IS TradeInvest templates text font change @Constrat
|
||||
* EN IS ShoppingConfirm text font change @Constrat
|
||||
* EN refresh node template @Constrat
|
||||
* JP AT minigame confirm (#15427) @Manicsteiner
|
||||
* JP JieGardenStrategyChange @Saratoga-Official
|
||||
* add MaaWin32ControlUnit to nightly build (#15447) @Manicsteiner
|
||||
|
||||
### 文档 | Docs
|
||||
|
||||
* 使用脚本一键安装 maa-cli (#15283) @wangl-cc
|
||||
* 战斗协议 移动镜头 (#15261) @Daydreamer114
|
||||
* 源码链接同步最新行数 @Rbqwow
|
||||
* 中文集成文档统一格式 @ABA2396
|
||||
* update KR documents (#15282) @HX3N
|
||||
* update vsc ext docs for quick ocr (#15298) @neko-para @HX3N @Constrat
|
||||
* 集成文档统一格式,同时显示 field-group 和示例代码 (#15409) @ABA2396 @Manicsteiner @Constrat @momomochi987
|
||||
* 繁中文件大更新 (#15480) @momomochi987
|
||||
* 修正开发文档中的格式错误及笔误 (#15516) @yali-hzy
|
||||
* 自动战斗作业文档干员技能值范围补上 0 @status102
|
||||
|
||||
### 其他 | Other
|
||||
|
||||
* 移除地图未修复期间的临时糊屎, 移除未更正的注释 @status102
|
||||
* 添加雪猎基建技能加成 @Saratoga-Official
|
||||
* 调整文件夹判断逻辑 @ABA2396
|
||||
* 调整注释 @ABA2396
|
||||
* 调整 MaxNumberOfLogThumbnails 作用域,调整默认数量 @ABA2396
|
||||
* 微调公告确认按钮位置 @SherkeyXD
|
||||
* 移除多余关卡 @SherkeyXD
|
||||
* 添加挂调试器下使用 GPU 的注释 @ABA2396
|
||||
* add IsDebugVersion to _forcedReloadResource (#15293) @Constrat
|
||||
* port changes from api @SherkeyXD
|
||||
* H16-4, 引航者 #6 TN-1~TN-4 剩余地图 view[1] @status102
|
||||
* YostarKR tweak AS-OpenOcr @HX3N
|
||||
* YostarJP roguelike JieGarden ocr edit @Manicsteiner
|
||||
* YoStarJP SN device ocr (#15310) @cheriu
|
||||
* EN for `FightTimesMayNotExhausted` @Constrat
|
||||
* 作业集 Parse 后不删除历史记录,避免错过作业抛出的错误 @ABA2396
|
||||
* 辞岁行地图 2026-02-10 Map 更新 @status102
|
||||
* 繁中服不上报企鹅物流 @ABA2396
|
||||
* devcontainer 适配 CMakePresets.json (#15606) @lucienshawls
|
||||
* 移除不再使用的 VirtualizingWrapPanel 与 NoAutomationDataGrid @ABA2396
|
||||
* 调整清理图片缓存样式,增加提示 @ABA2396
|
||||
* 补全缺少的翻译 @ABA2396
|
||||
* 优化 emoji @ABA2396
|
||||
* 自动战斗-自动编队干员不支持技能说明国际化 (#15609) @status102 @Constrat @HX3N @Manicsteiner
|
||||
* 自动战斗编队技能等级不足 i18n,CN 使用理智药及碎石文案 (#15435) @status102 @HX3N
|
||||
* 增加借助战 OF-1 在后续刷理智选择`当前/上次`导致禁用时的输出 (#15478) @status102 @Manicsteiner @Constrat @HX3N @ABA2396 @momomochi987
|
||||
* remove regex from `text` field in EN Sui IS @Constrat
|
||||
* KR AnnouncementNotFinishedConfirm、ReceptionOptionsRequireInfrast、CreditFightWhenOF-1Warning、MiniGame ConversationRoom and HoneyFruit 支持 @HX3N
|
||||
* EN minigame honeyfruit、IS6 tip 支持 @Constrat
|
||||
* JP MiniGame HoneyFruit 支持 @Manicsteiner
|
||||
* YostarJP ocr fix for roguelike @Manicsteiner
|
||||
* manual data for txwy @Constrat
|
||||
* optimize templates @Constrat
|
||||
* fix casing typo and related context (#15656) @ittuann @Daydreamer114
|
||||
|
||||
@@ -35,6 +35,13 @@ if(BUILD_WPF_GUI)
|
||||
include_external_msproject(MaaWpfGui ${PROJECT_SOURCE_DIR}/src/MaaWpfGui/MaaWpfGui.csproj)
|
||||
|
||||
add_dependencies(MaaWpfGui MaaCore)
|
||||
if(DEFINED ENV{VSCODE_PID})
|
||||
add_custom_target(run-MaaWpfGui
|
||||
COMMAND "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/MAA.exe"
|
||||
DEPENDS MaaWpfGui
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$<CONFIG>"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(INSTALL_PYTHON)
|
||||
|
||||
348
CMakePresets.json
Normal file
@@ -0,0 +1,348 @@
|
||||
{
|
||||
"version": 10,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 23,
|
||||
"patch": 0
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "windows-base",
|
||||
"hidden": true,
|
||||
"generator": "Visual Studio 18 2026",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"$comment": [
|
||||
"Base for Windows presets; Visual Studio is multi-config (Debug/Release/RelWithDebInfo in same build dir)",
|
||||
"see https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2018%202026.html"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"BUILD_WPF_GUI": "ON",
|
||||
"BUILD_DEBUG_DEMO": "ON",
|
||||
"INSTALL_RESOURCE": "OFF",
|
||||
"INSTALL_PYTHON": "OFF"
|
||||
},
|
||||
"condition": {
|
||||
"type": "equals",
|
||||
"lhs": "${hostSystemName}",
|
||||
"rhs": "Windows"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-base",
|
||||
"hidden": true,
|
||||
"generator": "Ninja Multi-Config",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"$comment": [
|
||||
"Base for Linux presets; Ninja is multi-config (Debug/Release/RelWithDebInfo in same build dir)",
|
||||
"see https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html",
|
||||
"clangd uses compile_commands.json to provide code completion and navigation",
|
||||
"so CMAKE_EXPORT_COMPILE_COMMANDS is set to ON",
|
||||
"see https://clangd.llvm.org/installation.html"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||
},
|
||||
"condition": {
|
||||
"type": "equals",
|
||||
"lhs": "${hostSystemName}",
|
||||
"rhs": "Linux"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macos-base",
|
||||
"hidden": true,
|
||||
"generator": "Ninja Multi-Config",
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"$comment": [
|
||||
"Base for macOS presets; Ninja is multi-config (Debug/Release/RelWithDebInfo in same build dir)",
|
||||
"see https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html",
|
||||
"clangd uses compile_commands.json to provide code completion and navigation",
|
||||
"so CMAKE_EXPORT_COMPILE_COMMANDS is set to ON",
|
||||
"see https://clangd.llvm.org/installation.html"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||
},
|
||||
"condition": {
|
||||
"type": "equals",
|
||||
"lhs": "${hostSystemName}",
|
||||
"rhs": "Darwin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-x64",
|
||||
"inherits": "windows-base",
|
||||
"displayName": "Windows x64",
|
||||
"architecture": "x64",
|
||||
"cacheVariables": {
|
||||
"MAADEPS_TRIPLET": "maa-x64-windows"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64",
|
||||
"inherits": "windows-base",
|
||||
"displayName": "Windows arm64",
|
||||
"architecture": "ARM64",
|
||||
"cacheVariables": {
|
||||
"MAADEPS_TRIPLET": "maa-arm64-windows"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-x64",
|
||||
"inherits": "linux-base",
|
||||
"displayName": "Linux x64",
|
||||
"toolchainFile": "src/MaaUtils/MaaDeps/cmake/maa-x64-linux-toolchain.cmake",
|
||||
"cacheVariables": {
|
||||
"MAADEPS_TRIPLET": "maa-x64-linux"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linux-arm64",
|
||||
"inherits": "linux-base",
|
||||
"displayName": "Linux arm64",
|
||||
"toolchainFile": "src/MaaUtils/MaaDeps/cmake/maa-arm64-linux-toolchain.cmake",
|
||||
"cacheVariables": {
|
||||
"MAADEPS_TRIPLET": "maa-arm64-linux"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macos-arm64",
|
||||
"inherits": "macos-base",
|
||||
"displayName": "macOS arm64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_OSX_ARCHITECTURES": "arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macos-x64",
|
||||
"inherits": "macos-base",
|
||||
"displayName": "macOS x64",
|
||||
"cacheVariables": {
|
||||
"CMAKE_OSX_ARCHITECTURES": "x86_64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "publish-base",
|
||||
"$comment":[
|
||||
"All the name contains 'publish' are used for github actions",
|
||||
"see .github/workflows/ci.yml"
|
||||
],
|
||||
"hidden": true,
|
||||
"installDir": "install",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
|
||||
"INSTALL_RESOURCE": "ON",
|
||||
"INSTALL_PYTHON": "ON",
|
||||
"BUILD_WPF_GUI": "OFF",
|
||||
"BUILD_DEBUG_DEMO": "OFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "windows-publish-x64",
|
||||
"inherits": ["publish-base", "windows-x64"],
|
||||
"$comment": [
|
||||
"github actions only support Visual Studio 17 2022",
|
||||
"see https://github.com/actions/runner-images/issues/13291"
|
||||
],
|
||||
"generator": "Visual Studio 17 2022",
|
||||
"displayName": "Windows x64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "windows-publish-arm64",
|
||||
"inherits": ["publish-base", "windows-arm64"],
|
||||
"$comment": [
|
||||
"github actions only support Visual Studio 17 2022",
|
||||
"see https://github.com/actions/runner-images/issues/13291"
|
||||
],
|
||||
"generator": "Visual Studio 17 2022",
|
||||
"displayName": "Windows arm64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "linux-publish-x64",
|
||||
"inherits": ["publish-base", "linux-x64"],
|
||||
"displayName": "Linux x64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "linux-publish-arm64",
|
||||
"inherits": ["publish-base", "linux-arm64"],
|
||||
"displayName": "Linux arm64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "macos-publish-x64",
|
||||
"inherits": ["publish-base", "macos-x64"],
|
||||
"displayName": "macOS x64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "macos-publish-arm64",
|
||||
"inherits": ["publish-base", "macos-arm64"],
|
||||
"displayName": "macOS arm64 Publish"
|
||||
},
|
||||
{
|
||||
"name": "smoke-test",
|
||||
"$comment":[
|
||||
"this preset is used for smoke testing",
|
||||
"see .github/workflows/smoke-testing.yml"
|
||||
],
|
||||
"inherits": "macos-arm64",
|
||||
"displayName": "macOS arm64 Smoke Test",
|
||||
"installDir": "install",
|
||||
"cacheVariables": {
|
||||
"BUILD_SMOKE_TEST": "ON",
|
||||
"INSTALL_RESOURCE": "ON",
|
||||
"WITH_HASH_VERSION": "ON"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "windows-x64-Debug",
|
||||
"displayName": "Build Windows x64 Debug",
|
||||
"configurePreset": "windows-x64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "windows-x64-Release",
|
||||
"displayName": "Build Windows x64 Release",
|
||||
"configurePreset": "windows-x64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "windows-x64-RelWithDebInfo",
|
||||
"displayName": "Build Windows x64 RelWithDebInfo",
|
||||
"configurePreset": "windows-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64-Debug",
|
||||
"displayName": "Build Windows arm64 Debug",
|
||||
"configurePreset": "windows-arm64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64-Release",
|
||||
"displayName": "Build Windows arm64 Release",
|
||||
"configurePreset": "windows-arm64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "windows-arm64-RelWithDebInfo",
|
||||
"displayName": "Build Windows arm64 RelWithDebInfo",
|
||||
"configurePreset": "windows-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "linux-x64-Debug",
|
||||
"displayName": "Build Linux x64 Debug",
|
||||
"configurePreset": "linux-x64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "linux-x64-Release",
|
||||
"displayName": "Build Linux x64 Release",
|
||||
"configurePreset": "linux-x64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "linux-x64-RelWithDebInfo",
|
||||
"displayName": "Build Linux x64 RelWithDebInfo",
|
||||
"configurePreset": "linux-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "linux-arm64-Debug",
|
||||
"displayName": "Build Linux arm64 Debug",
|
||||
"configurePreset": "linux-arm64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "linux-arm64-Release",
|
||||
"displayName": "Build Linux arm64 Release",
|
||||
"configurePreset": "linux-arm64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "linux-arm64-RelWithDebInfo",
|
||||
"displayName": "Build Linux arm64 RelWithDebInfo",
|
||||
"configurePreset": "linux-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "macos-x64-Debug",
|
||||
"displayName": "Build macOS x64 Debug",
|
||||
"configurePreset": "macos-x64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "macos-x64-Release",
|
||||
"displayName": "Build macOS x64 Release",
|
||||
"configurePreset": "macos-x64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "macos-x64-RelWithDebInfo",
|
||||
"displayName": "Build macOS x64 RelWithDebInfo",
|
||||
"configurePreset": "macos-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "macos-arm64-Debug",
|
||||
"displayName": "Build macOS arm64 Debug",
|
||||
"configurePreset": "macos-arm64",
|
||||
"configuration": "Debug"
|
||||
},
|
||||
{
|
||||
"name": "macos-arm64-Release",
|
||||
"displayName": "Build macOS arm64 Release",
|
||||
"configurePreset": "macos-arm64",
|
||||
"configuration": "Release"
|
||||
},
|
||||
{
|
||||
"name": "macos-arm64-RelWithDebInfo",
|
||||
"displayName": "Build macOS arm64 RelWithDebInfo",
|
||||
"configurePreset": "macos-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "windows-publish-x64",
|
||||
"displayName": "Build Windows x64 Publish",
|
||||
"configurePreset": "windows-publish-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "windows-publish-arm64",
|
||||
"displayName": "Build Windows arm64 Publish",
|
||||
"configurePreset": "windows-publish-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "linux-publish-x64",
|
||||
"displayName": "Build Linux x64 Publish",
|
||||
"configurePreset": "linux-publish-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "linux-publish-arm64",
|
||||
"displayName": "Build Linux arm64 Publish",
|
||||
"configurePreset": "linux-publish-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "macos-publish-x64",
|
||||
"displayName": "Build macOS x64 Publish",
|
||||
"configurePreset": "macos-publish-x64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "macos-publish-arm64",
|
||||
"displayName": "Build macOS arm64 Publish",
|
||||
"configurePreset": "macos-publish-arm64",
|
||||
"configuration": "RelWithDebInfo"
|
||||
},
|
||||
{
|
||||
"name": "smoke-test",
|
||||
"displayName": "Build macOS arm64 Smoke Test",
|
||||
"configurePreset": "smoke-test",
|
||||
"configuration": "Debug"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,7 +12,7 @@ function(create_resource_link TARGET_NAME OUTPUT_DIR)
|
||||
COMMENT "Creating junction for resource directory for ${TARGET_NAME}"
|
||||
)
|
||||
else()
|
||||
# Unix/Linux/macOS 使用符号链接
|
||||
# UNIX/Linux/macOS 使用符号链接
|
||||
add_custom_command(
|
||||
TARGET ${TARGET_NAME}
|
||||
POST_BUILD
|
||||
|
||||
|
After Width: | Height: | Size: 366 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/1-dark.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/1-light.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/2-dark.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/2-light.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/3-dark.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/3-light.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/4-dark.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/.vuepress/public/images/zh-tw/readme/4-light.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
@@ -15,7 +15,7 @@ You can [Ask DeepWiki](https://deepwiki.com/MaaAssistantArknights/MaaAssistantAr
|
||||
|
||||
## I don't know programming but just want to modify some JSON files/documents, how can I do it?
|
||||
|
||||
Welcome to the [Web-based PR Tutorial](./pr-tutorial.md) that anyone can understand (purely web-based on Github.com)
|
||||
Welcome to the [Web-based PR Tutorial](./pr-tutorial.md) that anyone can understand (purely web-based on GitHub.com)
|
||||
|
||||
## I want to make simple modifications to a few lines of code, but configuring the environment is too tedious and pure web editing is difficult to use. What should I do?
|
||||
|
||||
@@ -64,8 +64,7 @@ We've preset several different development environments for you to choose from:
|
||||
6. Execute cmake project configuration
|
||||
|
||||
```cmd
|
||||
mkdir -p build
|
||||
cmake -G "Visual Studio 18 2026" -B build -DBUILD_WPF_GUI=ON -DBUILD_DEBUG_DEMO=ON
|
||||
cmake --preset windows-x64
|
||||
```
|
||||
|
||||
7. Double-click `build/MAA.slnx` to open the project in Visual Studio.
|
||||
@@ -74,16 +73,20 @@ We've preset several different development environments for you to choose from:
|
||||
- Right-click `MaaWpfGui` - Set as Startup Project
|
||||
- Press F5 to run
|
||||
|
||||
::: tip
|
||||
To debug Win32Controller (Windows window control) features, you need to manually download the corresponding platform package from [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases), and place `MaaWin32ControlUnit.dll` from the `bin` directory into MAA's DLL directory (e.g. `build/bin/Debug`). PRs for an auto-download script are welcome!
|
||||
:::
|
||||
|
||||
9. Now you're ready to happily ~~mess around~~ start developing!
|
||||
10. Commit regularly with meaningful messages during development
|
||||
If you're not familiar with git usage, you might want to create a new branch for changes instead of committing directly to `dev`:
|
||||
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
|
||||
This keeps your changes isolated from upstream `dev` updates.
|
||||
This keeps your changes isolated from upstream `dev` updates.
|
||||
|
||||
11. After development, push your local branch (e.g. `dev`) to your remote repository:
|
||||
|
||||
@@ -123,6 +126,42 @@ This keeps your changes isolated from upstream `dev` updates.
|
||||
After opening Visual Studio, Git operations can be performed using VS's built-in "Git Changes" instead of command-line tools.
|
||||
:::
|
||||
|
||||
## Using VS Code for Development (Optional)
|
||||
|
||||
::: warning
|
||||
**Visual Studio is the recommended IDE for development.** The MAA project is primarily built around Visual Studio, and the complete environment setup described above covers all development needs with the best out-of-the-box experience. The VS Code workflow is provided only as an alternative for developers already familiar with VS Code + CMake + clangd, and requires more configuration effort.
|
||||
:::
|
||||
|
||||
If you prefer VS Code, you can use CMake, clangd, and related extensions for code completion, navigation, and debugging. After completing steps 1–6 above (clone, dependencies, CMake configuration), follow these steps:
|
||||
|
||||
### Recommended Extensions
|
||||
|
||||
Install from the VS Code marketplace:
|
||||
|
||||
| Extension | Purpose |
|
||||
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) | CMake configure, build, and debug integration |
|
||||
| [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) | C++ IntelliSense, code navigation, diagnostics (LSP-based) |
|
||||
| [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) | Debug C++ programs (works with CMake Tools or launch.json) |
|
||||
|
||||
::: tip
|
||||
When using clangd, set `C_Cpp.intelliSenseEngine` to `disabled` to avoid conflicts with the C/C++ extension's IntelliSense.
|
||||
:::
|
||||
|
||||
### Setup Steps
|
||||
|
||||
1. Open the project root folder in VS Code
|
||||
2. **CMake Tools**:
|
||||
- Select a Configure Preset from the status bar (e.g. `windows-x64`, `linux-x64`)
|
||||
- Select a Build Preset and run configure/build
|
||||
3. **clangd**: Works on Windows with MSVC without needing `compile_commands.json`. On Linux/macOS, presets enable `CMAKE_EXPORT_COMPILE_COMMANDS` and clangd uses `build/compile_commands.json` automatically
|
||||
4. **Debugging**: The project includes `.vscode/launch.json` for launching MaaWpfGui or Debug Demo
|
||||
|
||||
### Build and Debug Shortcuts
|
||||
|
||||
- **Build**: `Ctrl+Shift+B` or via CMake Tools status bar
|
||||
- **Debug**: F5 or choose a configuration from the Run and Debug panel
|
||||
|
||||
## MAA File Formatting Requirements
|
||||
|
||||
MAA uses a series of formatting tools to ensure that the code and resource files in the repository are visually unified for easy maintenance and reading.
|
||||
@@ -134,7 +173,7 @@ The currently enabled formatting tools are as follows:
|
||||
| File Type | Format Tool |
|
||||
| --------- | --------------------------------------------------------------- |
|
||||
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||
| Json/Yaml | [Prettier](https://prettier.io/) |
|
||||
| JSON/YAML | [Prettier](https://prettier.io/) |
|
||||
| Markdown | [markdownlint](https://github.com/DavidAnson/markdownlint-cli2) |
|
||||
|
||||
### Use Pre-commit Hooks to Automatically Format Code
|
||||
|
||||
@@ -3,7 +3,7 @@ order: 8
|
||||
icon: iconoir:code-brackets
|
||||
---
|
||||
|
||||
# Dedicated VSCode Extension Tutorial
|
||||
# Dedicated VS Code Extension Tutorial
|
||||
|
||||
The extension provides a series of convenient development capabilities for MaaAssistantArknights/MaaFramework, including but not limited to the following features:
|
||||
|
||||
@@ -14,7 +14,7 @@ For details, please visit [Extension Store](https://marketplace.visualstudio.com
|
||||
|
||||
## Installation
|
||||
|
||||
Searching `Maa` and installing it from VSCode extensions list is recommended.
|
||||
Searching `Maa` and installing it from VS Code extensions list is recommended.
|
||||
|
||||
::: tip
|
||||
When used for the first time, the extension will automatically download the preset version of resources.
|
||||
@@ -90,9 +90,9 @@ Scanning and selecting controllers, selecting resource, adding and manipulating
|
||||
|
||||
### Take screenshots and crop images / Quick recognition
|
||||
|
||||
Searching and launching `Maa: open crop tool` inside VSCode command panel can open `Screenshots / Crop` panel.
|
||||
Searching and launching `Maa: open crop tool` inside VS Code command panel can open `Screenshots / Crop` panel.
|
||||
|
||||
> Use `Ctrl+Shift+P` (`Command+Shift+P` on MacOS) to open command panel
|
||||
> Use `Ctrl+Shift+P` (`Command+Shift+P` on macOS) to open command panel
|
||||
|
||||
- After selecting and connecting to the controller, use `Screencap` button to obtain screenshots
|
||||
- Use `Upload` button to manually upload images.
|
||||
@@ -114,11 +114,11 @@ For MAA, the extension will maintain the models used automatically; you only nee
|
||||
|
||||
#### MaaFramework Log
|
||||
|
||||
Search and execute `Maa: open maa log` in the VSCode command panel to view the `maa.log` generated during debugging.
|
||||
Search and execute `Maa: open maa log` in the VS Code command panel to view the `maa.log` generated during debugging.
|
||||
|
||||
#### Maa Pipeline Support Extension Log
|
||||
|
||||
Search and execute `Maa: open extension log` in the VSCode command panel to view the `mse.log` generated during debugging.
|
||||
Search and execute `Maa: open extension log` in the VS Code command panel to view the `mse.log` generated during debugging.
|
||||
|
||||
### Bottom status bar
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [PlayCover](https://playcover.io) (Runs most fluently as it's native 🚀)
|
||||
|
||||
Experimental support. Please submit issues if you encounter problems, and include `MacOS` in the title.
|
||||
Experimental support. Please submit issues if you encounter problems, and include `macOS` in the title.
|
||||
|
||||
Note: Due to macOS system limitations, screenshot issues may occur when minimizing the game window, switching to other windows while in Stage Manager, or moving the window to other desktops/screens. Related issue: [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
|
||||
|
||||
|
||||
@@ -49,25 +49,9 @@ We cannot provide repair solutions other than reinstalling your system. Please a
|
||||
|
||||
For Windows N/KN (European/Korean versions), you also need to install the [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a).
|
||||
|
||||
#### Windows 7
|
||||
#### Windows 7/8/8.1
|
||||
|
||||
.NET 10 doesn't support Windows 7/8/8.1 systems<sup>[source](https://github.com/dotnet/core/issues/7556)</sup>, so MAA no longer supports them either. The last usable .NET 8 version is [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7); the last usable .NET 4.8 version is [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8). Self-compilation feasibility remains undetermined.
|
||||
|
||||
For Windows 7, before installing the two runtime libraries mentioned above, check if these patches are installed:
|
||||
|
||||
1. [Windows 7 Service Pack 1](https://support.microsoft.com/en-us/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
|
||||
2. SHA-2 code signing patches:
|
||||
- KB4474419: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
|
||||
- KB4490628: [Download link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu), [Download link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)
|
||||
3. Platform Update for Windows 7 (DXGI 1.2, Direct3D 11.1, KB2670838): [Download link 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu), [Download link 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
|
||||
|
||||
##### Workaround for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
|
||||
When running .NET 8 applications on Windows 7, abnormal memory usage can occur. Follow these steps to mitigate it. Windows 8/8.1 hasn't been tested; if similar issues occur, please open an Issue to remind us to update the documentation.
|
||||
|
||||
1. Open `Computer`, right-click in empty space, click Properties, click `Advanced system settings` on the left, and click `Environment Variables`.
|
||||
2. Create a new system variable with name `DOTNET_EnableWriteXorExecute` and value `0`.
|
||||
3. Restart your computer.
|
||||
.NET 10 doesn't support Windows 7/8/8.1 systems<sup>[source](https://github.com/dotnet/core/issues/7556)</sup>, so MAA no longer supports them either.
|
||||
|
||||
## Connection errors
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ icon: hugeicons:brain-02
|
||||
- Lungmen Downtown: LungmenDowntown@Annihilation
|
||||
|
||||
- Side story stages like `OF-1`, `OF-F3`, and `GT-5`.
|
||||
- The last three stages of the current Side Story event. These will be shown at the bottom of the interface after automatically downloading updates from the [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json).
|
||||
- The last three stages of the current Side Story event. These will be shown at the bottom of the interface after automatically downloading updates from the [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json).
|
||||
- Rerun Side Story events: Enter `SSReopen-<stage prefix>` to farm all stages XX-1 through XX-9 in sequence, like `SSReopen-IC`.
|
||||
|
||||
::: details Example Screen
|
||||
@@ -70,22 +70,11 @@ icon: hugeicons:brain-02
|
||||
Alternative stages are selected based on daily stage availability - MAA will choose the first available stage in the list.
|
||||
This functions like a schedule, not as a fallback if the primary stage selection fails.
|
||||
|
||||
1. Example: If primary stage is `CE-6/5` with alternatives `1-7` and `LS-6/5`:
|
||||
- If `CE-6/5` is open today, MAA will run it and ignore the alternatives. If you haven't unlocked auto-deploy for CE-6/5, the task will fail.
|
||||
- If `CE-6/5` is closed today, MAA will run `1-7` instead. If you haven't unlocked auto-deploy for 1-7, the task will fail.
|
||||
- Since `1-7` is a permanent stage that appears before `LS-6/5` in the list, MAA will never run `LS-6/5` in this scenario.
|
||||
2. If the primary stage is `Annihilation Mode`:
|
||||
- Annihilation results won't affect the alternative stage logic - even if Annihilation fails, the task will continue.
|
||||
- Alternative stages will only inherit the `Use Sanity Potion` and `Multiplier` settings, ignoring `Use Originium`, `Perform Battles`, and `Material` settings.
|
||||
Example: Alternative Stages are `CE-6/5`, `1-7` and `LS-6/5`:
|
||||
|
||||
### Remaining Sanity
|
||||
|
||||
This option activates after the main `Sanity Farming` task ends, ignoring all `Use Sanity Potion`, `Use Originium`, `Perform Battles`, `Material`, and `Multiplier` settings. It simply uses up any remaining sanity and stops.
|
||||
|
||||
- Useful for farming a low-cost stage (like 1-7) with leftover sanity after your main stage becomes unaffordable.
|
||||
- Also useful for automatically switching to single runs when you have insufficient sanity for your configured multiplier (e.g., if you set 1-7 for 6x runs but only have 30 sanity, it will automatically run five single 1-7 runs instead).
|
||||
- The task will end if remaining sanity is insufficient (e.g., less than 6 sanity).
|
||||
- If the selected remaining sanity stage is closed or unavailable, the task will fail.
|
||||
- If `CE-6/5` is open today, MAA will run it and ignore the alternatives. If you haven't unlocked auto-deploy for CE-6/5, the task will fail.
|
||||
- If `CE-6/5` is closed today, MAA will run `1-7` instead. If you haven't unlocked auto-deploy for 1-7, the task will fail.
|
||||
- Since `1-7` is a permanent stage that appears before `LS-6/5` in the list, MAA will never run `LS-6/5` in this scenario.
|
||||
|
||||
### Multiplier
|
||||
|
||||
@@ -93,15 +82,14 @@ MAA will use the specified battle multiplier setting:
|
||||
|
||||
- **AUTO mode** (0):
|
||||
- Automatically identifies and uses the maximum possible multiplier without wasting sanity
|
||||
- Proceeds to the `Remaining Sanity` option afterward (if enabled)
|
||||
|
||||
- **Fixed value mode** (1-6):
|
||||
- Uses exactly the specified multiplier
|
||||
- If current sanity is insufficient for the set multiplier (e.g., only enough for 5× but set to 6×), ends the task and proceeds to `Remaining Sanity` (if enabled)
|
||||
- If current sanity is insufficient for the set multiplier (e.g., only enough for 5× but set to 6×), ends the task
|
||||
|
||||
- **Disabled mode** (-1):
|
||||
- Doesn't change the in-game multiplier setting
|
||||
- If sanity is insufficient for the current in-game multiplier setting, ends the task and proceeds to `Remaining Sanity` (if enabled)
|
||||
- If sanity is insufficient for the current in-game multiplier setting, ends the task
|
||||
|
||||
### Perform Battles
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Please note that JSON files do not support comments. The comments in this docume
|
||||
// Specified operators
|
||||
{
|
||||
"name": "重岳", // Operator name ("重岳" = "Chongyue")
|
||||
"skill": 3, // Skill number. Optional, default is 1, range [1, 3]
|
||||
"skill": 3, // Skill number. Optional, default is 1, range [0, 3]
|
||||
"skill_usage": 2, // Skill usage method. Optional, default is 0
|
||||
// 0 - Do not use automatically (depends on "actions" field)
|
||||
// 1 - Use whenever ready, as many times as possible (e.g., Thorns S3, Myrtle S1, etc.)
|
||||
|
||||
@@ -36,6 +36,9 @@ Please note that JSON files do not support comments. Comments are for demonstrat
|
||||
- `fragments.json` stores basic information about Sarkaz's Thoughts
|
||||
- `map.json` stores template image information for Sarkaz's Blueprint navigation
|
||||
|
||||
- In `JieGarden/`:
|
||||
- `coppers.json` basic information and pickup/replacement logic for Coppers
|
||||
|
||||
## Integrated Strategy Step 1: Operator Recruitment
|
||||
|
||||
`resource/roguelike/theme_name/recruitment.json` describes the logic of the operator recruitment
|
||||
@@ -152,7 +155,7 @@ By default, only E1 Level 55 operators will be recruited
|
||||
| 情报官 (Agents) | 晓歌 (Cantabile), 伊内丝 (Ines) | Can recover DP, provide side output, and can single cut |
|
||||
| 浊心斯卡蒂 (Skadi Alter) | 浊心斯卡蒂 (Skadi the Corrupting Heart) | Decent healing under low pressure, but special range, some maps have suitable positions |
|
||||
| 焰苇 (Reed Alter) | 焰影苇草 (Reed the Flame Shadow) | Commonly used opening operator in Sami I.S., combines healing and output, some maps have optimal positions |
|
||||
| 玛恩纳 (SilverAsh) | 玛恩纳 (Closure), 银灰 (SilverAsh) | Ground large-area decisive output, can be deployed against bosses |
|
||||
| 玛恩纳 (Mlynar) | 玛恩纳 (Mlynar), 银灰 (SilverAsh) | Ground large-area decisive output, can be deployed against bosses |
|
||||
| 史尔特尔 (Surtr) | 史尔特尔 (Surtr) | Since Surtr always carries S3 at E2, field presence ability is almost zero, deployment priority is extremely low |
|
||||
| 骰子 (Dice) | 骰子 (Dice) | In Mizuki I.S. the dice needs to be operated separately |
|
||||
|
||||
@@ -778,6 +781,94 @@ For farming hidden Collapsal Paradigms, N10 difficulty is recommended, with the
|
||||
- Reed the Flame Shadow + Orchid + Popukar;
|
||||
- Toddifons + Spot + Steward.
|
||||
|
||||
### JieGarden Integrated Strategy - Coppers
|
||||
|
||||
`resource/roguelike/JieGarden/coppers.json` describes the configuration and exchange strategy for JieGarden I.S. Coppers
|
||||
|
||||
```json5
|
||||
{
|
||||
"theme": "JieGarden", // I.S. Theme name (JieGarden here)
|
||||
"addons": { // Copper addon attribute descriptions (notes only, no effect on program)
|
||||
"锈色": "When cast, gain Originium Ingots +1 for every node passed",
|
||||
"存护": "When added to wallet, gain Shield +2",
|
||||
"入幻": "When added to wallet, gain Hope +1",
|
||||
"引光": "When added to wallet, gain Candlelight +1",
|
||||
"巡游": "When cast, gain Tickets +1 for every battle completed"
|
||||
},
|
||||
"coppers": [ // Copper list
|
||||
{
|
||||
"name": "大炎通宝", // Copper name (Yan Copper)
|
||||
"desc": "Ordinary and blank, nothing special", // Copper effect description (notes only, no effect on program)
|
||||
"rarity": "NORMAL", // Rarity: NONE/NORMAL/RARE/SUPER_RARE (notes only, no effect on program)
|
||||
"pickup_priority": 0, // Pickup priority, used when selecting drops, higher value = higher priority pickup
|
||||
"discard_priority": 1000 // Discard priority, used during exchange, higher value = higher priority discard
|
||||
},
|
||||
{
|
||||
"name": "衡-奇土生金", // Balance - Bountiful Land (name kept in Chinese as game-specific term)
|
||||
"desc": "When cast, immediately gain Originium Ingots +4 (transforms into Yan Copper before next cast)",
|
||||
"rarity": "NORMAL",
|
||||
"pickup_priority": 200,
|
||||
"discard_priority": 800,
|
||||
"cast_discard_priority": 999 // Optional field, discard priority when cast, only replaces discard_priority when cast and value >= 0
|
||||
// This typically applies to coppers whose effects change after casting (like coppers that become Yan Copper)
|
||||
},
|
||||
{
|
||||
"name": "厉-西廉贞", // Risk - Xi Lianzhen (name kept in Chinese as game-specific term)
|
||||
"desc": "When cast, Elite and Leader enemies gain HP and ATK +10%, with additional +20% in Dangerous Operations and Nian Beast Remnant Cognition",
|
||||
"rarity": "NORMAL",
|
||||
"pickup_priority": 0,
|
||||
"discard_priority": 1998,
|
||||
"cast_discard_priority": 2098 // Same as above, sometimes also used for coppers that bring negative effects after casting
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Copper Exchange Logic
|
||||
|
||||
MAA automatically handles copper pickup and exchange in JieGarden I.S.:
|
||||
|
||||
::: tip Enable Conditions
|
||||
Copper exchange functionality is only enabled in the following modes:
|
||||
|
||||
- Investment Mode: Requires "Investment mode enable shopping, recruitment, advance 2 floors" option enabled
|
||||
- Other Modes: Enabled by default
|
||||
|
||||
:::
|
||||
|
||||
1. **Pickup Dropped Coppers**: After battle ends, if copper drop selection interface appears, MAA will select the copper with highest `pickup_priority`
|
||||
|
||||
2. **Exchange Wallet Coppers**: When a newly picked copper needs to be exchanged with coppers in the wallet:
|
||||
- Recognize all coppers in wallet: type, name, and whether cast status
|
||||
- Find the copper with highest `discard_priority` (least important) in wallet
|
||||
- If new copper's `discard_priority` is lower than the least important existing copper, abandon exchange
|
||||
- Otherwise replace the least important copper with the new copper
|
||||
|
||||
3. **Special Handling for Cast Coppers**:
|
||||
- For coppers marked with `cast_discard_priority`, use this priority when cast instead of `discard_priority`
|
||||
- This typically applies to coppers whose effects change after casting (like coppers that transform into Yan Copper 大炎通宝)
|
||||
|
||||
#### Copper Recognition Mechanism
|
||||
|
||||
MAA uses the following methods to recognize and handle coppers:
|
||||
|
||||
1. Recognize copper type icons (厉/衡/花 - Risk/Balance/Flower) through template matching
|
||||
2. Based on type icon position, use ROI offset for OCR recognition of copper name
|
||||
3. Recognize whether copper is in "cast" state
|
||||
4. Auto-scroll list in copper exchange interface, scan all coppers for comparison
|
||||
|
||||
#### Recognition Process Illustration
|
||||
|
||||

|
||||

|
||||
|
||||
::: info Note
|
||||
|
||||
- If OCR recognized copper name not found in config file, MAA will save debug image to `debug/roguelike/coppers/unknown` directory for troubleshooting
|
||||
|
||||
:::
|
||||
|
||||
## Desired Logic (todo)
|
||||
|
||||
### Automatic Formation Logic
|
||||
|
||||
@@ -440,4 +440,4 @@ Configured in `MaaCore.vcxporj`, works out of the box. Prompts are somewhat cryp
|
||||
|
||||
### Visual Studio Code
|
||||
|
||||
Configured in `.vscode/settings.json`, use VSCode to open the **project folder** to use. Better prompt quality.
|
||||
Configured in `.vscode/settings.json`, use VS Code to open the **project folder** to use. Better prompt quality.
|
||||
|
||||
@@ -5,7 +5,7 @@ icon: devicon-plain:githubactions
|
||||
|
||||
# CI システム解析
|
||||
|
||||
MAA は Github Action を活用して、ウェブサイトの構築、自動リソース更新、最終ファイルの構築とリリースなど、大量の自動化作業を完了しました。時間の経過とともに、これらの CI は徐々にネスト化し始め、一部は他のリポジトリにリンクされています。このドキュメントは、MAA の CI システムを改善したい人のために簡単な紹介を提供することを目的としています。
|
||||
MAA は GitHub Action を活用して、ウェブサイトの構築、自動リソース更新、最終ファイルの構築とリリースなど、大量の自動化作業を完了しました。時間の経過とともに、これらの CI は徐々にネスト化し始め、一部は他のリポジトリにリンクされています。このドキュメントは、MAA の CI システムを改善したい人のために簡単な紹介を提供することを目的としています。
|
||||
|
||||
このドキュメントを読む前に、MAA のプロジェクト構造と構成について基本的な概念を持っていることが推奨されます。
|
||||
|
||||
@@ -28,7 +28,7 @@ MAA は Github Action を活用して、ウェブサイトの構築、自動リ
|
||||
|
||||
さらに、[pre-commit.ci](https://pre-commit.ci/) を通じてコードの自動フォーマットと画像リソースの自動最適化を実現しており、PR を作成した後に自動的に実行されるため、通常は特に注意する必要はありません。
|
||||
|
||||
## Github Action 部分
|
||||
## GitHub Action 部分
|
||||
|
||||
### コードテスト
|
||||
|
||||
|
||||
@@ -70,8 +70,7 @@ icon: iconoir:developer
|
||||
6. cmake プロジェクト設定を実行
|
||||
|
||||
```cmd
|
||||
mkdir -p build
|
||||
cmake -G "Visual Studio 18 2026" -B build -DBUILD_WPF_GUI=ON -DBUILD_DEBUG_DEMO=ON
|
||||
cmake --preset windows-x64
|
||||
```
|
||||
|
||||
7. `build/MAA.slnx` をダブルクリックで開き、Visual Studio にプロジェクトを自動ロード
|
||||
@@ -80,16 +79,20 @@ icon: iconoir:developer
|
||||
- `MaaWpfGui` 右クリック → スタートアップ プロジェクトに設定
|
||||
- F5 キーを押して実行
|
||||
|
||||
::: tip
|
||||
Win32Controller(Windows ウィンドウ制御)関連機能をデバッグする場合は、[MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) から対応プラットフォームのアーカイブをダウンロードし、`bin` ディレクトリ内の `MaaWin32ControlUnit.dll` を MAA の DLL と同じディレクトリ(例:`build/bin/Debug`)に配置してください。自動ダウンロードスクリプトの PR 歓迎!
|
||||
:::
|
||||
|
||||
9. これで自由に ~~改造~~ 開発を始められます
|
||||
10. 一定量の変更ごにコミット(メッセージ記入必須)
|
||||
10. 一定量の変更ごとにコミット(メッセージ記入必須)
|
||||
Git 未経験者は dev ブランチ直接変更ではなく新規ブランチ作成推奨:
|
||||
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
|
||||
これで dev の更新影響を受けずに開発可能
|
||||
これで dev の更新影響を受けずに開発可能
|
||||
|
||||
11. 開発完了後、変更をリモートリポジトリへプッシュ:
|
||||
|
||||
@@ -129,6 +132,40 @@ git checkout your_own_branch
|
||||
Visual Studio 起動後、Git 操作は「Git 変更」画面からコマンドライン不要で可能
|
||||
:::
|
||||
|
||||
## VSCodeでの開発(オプション)
|
||||
|
||||
::: warning
|
||||
**Visual Studio での開発を推奨します。** MAA プロジェクトは主に Visual Studio をベースに構築されており、上記の完全な環境セットアップですべての開発ニーズをカバーし、すぐに使える最高の体験を提供します。VSCode ワークフローは、VSCode + CMake + clangd に精通した開発者向けの代替手段としてのみ提供されており、設定のハードルが比較的高くなります。
|
||||
:::
|
||||
|
||||
VSCodeを好む場合、CMake、clangdなどの拡張機能でコード補完、ナビゲーション、デバッグが可能です。前述の手順1~6(クローン、依存関係、CMake設定)を完了した後、以下の手順で設定できます。
|
||||
|
||||
### 推奨拡張機能
|
||||
|
||||
VS Code Marketplace からインストール:
|
||||
|
||||
| 拡張機能 | 用途 |
|
||||
| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
|
||||
| [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) | CMake の設定、ビルド、デバッグ統合 |
|
||||
| [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) | C++ インテリセンス、コードナビゲーション、診断(LSPベース) |
|
||||
| [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) | C++ プログラムのデバッグ(CMake Tools または launch.json と連携) |
|
||||
|
||||
::: tip
|
||||
clangd を使用する場合、C/C++ 拡張機能の IntelliSense を無効化(`C_Cpp.intelliSenseEngine` を `disabled` に設定)することを推奨します。競合を避けるためです。
|
||||
:::
|
||||
|
||||
### 設定手順
|
||||
|
||||
1. VS Code でプロジェクトルートを開く
|
||||
2. **CMake Tools**:ステータスバーで Configure Preset(例:`windows-x64`、`linux-x64`)を選択し、Build Preset でビルドを実行
|
||||
3. **clangd**:Windows で MSVC を使用する場合、`compile_commands.json` がなくても clangd で開発可能。Linux/macOS ではプリセットで `CMAKE_EXPORT_COMPILE_COMMANDS` が有効となり、clangd は `build/compile_commands.json` を自動使用
|
||||
4. **デバッグ**:プロジェクトには `.vscode/launch.json` が含まれており、MaaWpfGui や Debug Demo の起動が可能
|
||||
|
||||
### ビルドとデバッグのショートカット
|
||||
|
||||
- **ビルド**:`Ctrl+Shift+B` または CMake Tools ステータスバー
|
||||
- **デバッグ**:F5 または Run and Debug パネルで設定を選択
|
||||
|
||||
## MAAのファイルフォーマット要件
|
||||
|
||||
MAAは、リポジトリ内のコードとリソースファイルが美しく統一されるよう、一連のフォーマットツールを使用してメンテナンスと読み取りを容易にしています。
|
||||
@@ -140,7 +177,7 @@ MAAは、リポジトリ内のコードとリソースファイルが美しく
|
||||
| ファイルタイプ | フォーマットツール |
|
||||
| -------------- | --------------------------------------------------------------- |
|
||||
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||
| Json/Yaml | [Prettier](https://prettier.io/) |
|
||||
| JSON/YAML | [Prettier](https://prettier.io/) |
|
||||
| Markdown | [markdownlint](https://github.com/DavidAnson/markdownlint-cli2) |
|
||||
|
||||
### Pre-commit Hooksを使用してコードを自動フォーマット
|
||||
|
||||
@@ -163,4 +163,4 @@ ROIの範囲を変更するには
|
||||
|
||||
## 変更を送信する
|
||||
|
||||
[Github Pull Requst ガイド](../develop/development.md#github-pull-request-プロセス概要)を参照してください。
|
||||
[GitHub Pull Request ガイド](../develop/development.md#github-pull-request-プロセス概要)を参照してください。
|
||||
|
||||
@@ -11,7 +11,7 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
::: warning
|
||||
このガイドでは、多くの概念を簡略化し、より多くの人々が実際に使用できるように、不格好であるが簡単な操作が含まれています。また、正しくない説明もありますので、大変恐れ入りますが、専門家の方々にはお許しください。
|
||||
Gitの使用経験とプログラミングの基礎がある場合、[Github Pull Request プロセス概要](./development.md#github-pull-request-プロセス概要)など、より上級のチュートリアルを見ることができます。
|
||||
Gitの使用経験とプログラミングの基礎がある場合、[GitHub Pull Request プロセス概要](./development.md#github-pull-request-プロセス概要)など、より上級のチュートリアルを見ることができます。
|
||||
:::
|
||||
|
||||
## 基本概念および用語の説明
|
||||
|
||||
@@ -3,7 +3,7 @@ order: 8
|
||||
icon: iconoir:code-brackets
|
||||
---
|
||||
|
||||
# Dedicated VSCode Extension Tutorial
|
||||
# Dedicated VS Code Extension Tutorial
|
||||
|
||||
The extension provides a series of convenient development capabilities for MaaAssistantArknights/MaaFramework, including but not limited to the following features:
|
||||
|
||||
@@ -14,7 +14,7 @@ For details, please visit [Extension Store](https://marketplace.visualstudio.com
|
||||
|
||||
## Installation
|
||||
|
||||
Searching `Maa` and installing it from VSCode extensions list is recommended.
|
||||
Searching `Maa` and installing it from VS Code extensions list is recommended.
|
||||
|
||||
::: tip
|
||||
When used for the first time, the extension will automatically download the preset version of resources.
|
||||
@@ -90,9 +90,9 @@ Scanning and selecting controllers, selecting resource, adding and manipulating
|
||||
|
||||
### Take screenshots and crop images / Quick recognition
|
||||
|
||||
Searching and launching `Maa: open crop tool` inside VSCode command panel can open `Screenshots / Crop` panel.
|
||||
Searching and launching `Maa: open crop tool` inside VS Code command panel can open `Screenshots / Crop` panel.
|
||||
|
||||
> Use `Ctrl+Shift+P` (`Command+Shift+P` on MacOS) to open command panel
|
||||
> Use `Ctrl+Shift+P` (`Command+Shift+P` on macOS) to open command panel
|
||||
|
||||
- After selecting and connecting to the controller, use `Screencap` button to obtain screenshots
|
||||
- Use `Upload` button to manually upload images.
|
||||
@@ -114,11 +114,11 @@ For MAA, the extension will maintain the models used automatically; you only nee
|
||||
|
||||
#### MaaFramework Log
|
||||
|
||||
Search and execute `Maa: open maa log` in the VSCode command panel to view the `maa.log` generated during debugging.
|
||||
Search and execute `Maa: open maa log` in the VS Code command panel to view the `maa.log` generated during debugging.
|
||||
|
||||
#### Maa Pipeline Support Extension Log
|
||||
|
||||
Search and execute `Maa: open extension log` in the VSCode command panel to view the `mse.log` generated during debugging.
|
||||
Search and execute `Maa: open extension log` in the VS Code command panel to view the `mse.log` generated during debugging.
|
||||
|
||||
### Bottom status bar
|
||||
|
||||
|
||||
@@ -49,25 +49,9 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
|
||||
|
||||
Windows N/KN(ヨーロッパ/韓国)の場合、[メディア機能パック](https://support.microsoft.com/ja-jp/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)をインストールする必要があります。
|
||||
|
||||
#### Windows 7 関連
|
||||
#### Windows 7 / 8 / 8.1 関連
|
||||
|
||||
.NET 10 は Windows 7 / 8 / 8.1 システムをサポートしていないため<sup>[ソース](https://github.com/dotnet/core/issues/7556)</sup>、MAA も同様にサポートしていません。最後に利用可能な .NET 8 バージョンは [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7) です。最後に利用可能な .NET 4.8 バージョンは [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8) です。自己コンパイルの実現可能性はまだ確認されていません。
|
||||
|
||||
Windows 7 の場合、上記の 2 つのランタイムライブラリをインストールする前に、以下のパッチがインストールされているかどうかを確認する必要があります:
|
||||
|
||||
1. [Windows 7 Service Pack 1](https://support.microsoft.com/ja-jp/windows/windows-7-service-pack-1-sp1-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B-b3da2c0f-cdb6-0572-8596-bab972897f61)
|
||||
2. SHA-2 コード署名:
|
||||
- KB4474419:[ダウンロードリンク1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[ダウンロードリンク2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
|
||||
- KB4490628:[ダウンロードリンク1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[ダウンロードリンク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):[ダウンロードリンク1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)、[ダウンロードリンク2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
|
||||
|
||||
##### .NET 8 アプリケーションが Windows 7 で異常に動作する場合の緩和策 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
|
||||
Windows 7 で .NET 8 アプリケーションを実行すると、メモリ使用量が異常になる問題があります。以下の緩和策を参照してください。Windows 8/8.1 はテストされていません。同じ問題がある場合は、ドキュメントを更新するために Issue を提出してください。
|
||||
|
||||
1. `コンピュータ` を開き、空白部分を右クリックしてプロパティをクリックし、左側の `システムの詳細設定` をクリックし、`環境変数` をクリックします。
|
||||
2. 新しいシステム変数を作成し、変数名を `DOTNET_EnableWriteXorExecute`、変数値を `0` に設定します。
|
||||
3. コンピュータを再起動します。
|
||||
.NET 10 は Windows 7 / 8 / 8.1 システムをサポートしていないため<sup>[ソース](https://github.com/dotnet/core/issues/7556)</sup>、MAA も同様にサポートしていません。
|
||||
|
||||
#### 公式統合パック(確信)
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ icon: hugeicons:brain-02
|
||||
- 龍門市街:LungmenDowntown@Annihilation
|
||||
|
||||
- サイドストーリー内の `OF-1` / `OF-F3` / `GT-5`。
|
||||
- 当期 SS イベントの後半 3 ステージ。自動で [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) から更新を取得後、画面下部に表示されます。
|
||||
- 当期 SS イベントの後半 3 ステージ。自動で [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json) から更新を取得後、画面下部に表示されます。
|
||||
- 復刻 SS イベント。`SSReopen-<ステージ接頭辞>` を入力すると、XX-1 ~ XX-9 を一括周回します(例:`SSReopen-IC`)。
|
||||
|
||||
::: details サンプル画面
|
||||
@@ -70,22 +70,11 @@ icon: hugeicons:brain-02
|
||||
代替ステージは当日の開放状況に応じて戦闘ステージを決定し、最初に開放されているステージを選びます。
|
||||
これはスケジュールに近い機能であり、「ステージ選択に失敗したときの予備候補」にはなりません。
|
||||
|
||||
1. 例:ステージ選択が `龍門幣-6(CE-6)`、代替が `1-7` と `作戦記録-6(LS-6)` の場合:
|
||||
- 当日に `龍門幣-6(CE-6)` が開放されていれば `龍門幣-6(CE-6)` に向かい、`1-7` と `作戦記録-6(LS-6)` には向かいません。この時点で `龍門幣-6(CE-6)` の自動指揮を解放していなければ、作戦タスクはエラーになります。
|
||||
- 当日に `龍門幣-6(CE-6)` が開放されていなければ `1-7` に向かい、`龍門幣-6(CE-6)` には向かいません。この時点で `1-7` の自動指揮を解放していなければ、作戦タスクはエラーになります。
|
||||
- `作戦記録-6(LS-6)` より前に常設の `1-7` が存在するため、この構成では MAA は `作戦記録-6(LS-6)` には決して向かいません。
|
||||
2. ステージ選択が `殲滅作戦` の場合:
|
||||
- 殲滅の結果にかかわらず、他の代替ステージの選択ロジックには影響しません。殲滅がエラーでも作戦タスクはエラーになりません。
|
||||
- 残りの代替ステージは `理性剤使用数` と `連戦回数` の設定のみを継承し、`割る源石の数`・`周回数指定`・`素材の指定` の制御は受けません。
|
||||
例:代替選択肢が `龍門幣-6(CE-6)`、 `1-7` 、`作戦記録-6(LS-6)` の場合:
|
||||
|
||||
### 余剰理性の消費
|
||||
|
||||
`作戦` タスク終了後に起動します。`理性剤使用数`・`割る源石の数`・`周回数指定`・`素材の指定`・`連戦回数` の制御は受けず、現在残っている理性を使い切った時点で終了します。
|
||||
|
||||
- `ステージ` の理性不足後に、`余剰理性の消費` 用ステージで残りの“端数”理性を処理する用途に適します(例:1-7 へ行く)。
|
||||
- 連戦回数の設定が高すぎて理性が不足した場合に、自動で単発周回に切り替えて理性を使い切って締める用途にも適します(例:1-7 を連戦 6 回に設定したが理性が 30 のため、自動的に連戦なしの 1-7 を 5 回に切り替え)。
|
||||
- 残り理性がなお不足している場合(例:理性は 6 未満)にはタスクを終了します。
|
||||
- `余剰理性の消費` で選んだステージが未開放の場合、作戦タスクはエラーになります。
|
||||
- 当日に `龍門幣-6(CE-6)` が開放されていれば `龍門幣-6(CE-6)` に向かい、`1-7` と `作戦記録-6(LS-6)` には向かいません。この時点で `龍門幣-6(CE-6)` の自動指揮を解放していなければ、作戦タスクはエラーになります。
|
||||
- 当日に `龍門幣-6(CE-6)` が開放されていなければ `1-7` に向かい、`龍門幣-6(CE-6)` には向かいません。この時点で `1-7` の自動指揮を解放していなければ、作戦タスクはエラーになります。
|
||||
- `作戦記録-6(LS-6)` より前に常設の `1-7` が存在するため、この構成では MAA は `作戦記録-6(LS-6)` には決して向かいません。
|
||||
|
||||
### 連戦回数
|
||||
|
||||
@@ -93,15 +82,14 @@ MAA はユーザーが設定した連戦回数に基づいて戦闘を行いま
|
||||
|
||||
- **AUTOモード**(0):
|
||||
- ステージの最大連戦回数を自動認識し、理性が溢れない範囲で最大を維持
|
||||
- 完了後は(設定していれば)`余剰理性の消費` フローへ移行
|
||||
|
||||
- **数値モード**(1~6):
|
||||
- 設定した回数で連戦を実行
|
||||
- 現在の理性で設定回数を満たせない場合(例:5 回分しかないのに 6 回を設定)には、その時点で終了し(設定していれば)`余剰理性の消費` フローへ移行
|
||||
- 現在の理性で設定回数を満たせない場合(例:5 回分しかないのに 6 回を設定)には、その時点で終了し
|
||||
|
||||
- **切り替えない**(-1):
|
||||
- ゲーム内の連戦回数設定を変更しません
|
||||
- 現在のゲーム内設定回数を満たす理性が不足している場合は、その時点で終了し(設定していれば)`余剰理性の消費` フローへ移行
|
||||
- 現在のゲーム内設定回数を満たす理性が不足している場合は、その時点で終了し
|
||||
|
||||
### 周回数指定
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ icon: ic:baseline-article
|
||||
- SoCの場合のみ、完全なステージ番号を入力する必要があります。例: `PR-A-1` 。
|
||||
- `Annihilation`(殲滅作戦)。
|
||||
- `OF-1` / `OF-F3` / `GT-5` のみサポートされます。
|
||||
- 現在のSSイベントの最後の3つのステージ。 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。
|
||||
- 現在のSSイベントの最後の3つのステージ。 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。
|
||||
- 再刻印SSアクティビティは `SSReopen-XX` と入力するとXX-1~XX-9ステージを一度にクリアできます。 `SSReopen-IC` など。
|
||||
|
||||
::: details 画面例
|
||||
|
||||
@@ -20,7 +20,7 @@ JSONファイルはコメントをサポートしておらず、テキスト内
|
||||
{
|
||||
"name": "ソーンズ", // オペーレーター名
|
||||
|
||||
"skill": 3, // スキルID と範囲 [1, 3], オプション, 1 がデフォルト
|
||||
"skill": 3, // スキルID と範囲 [0, 3], オプション, 1 がデフォルト
|
||||
|
||||
"skill_usage": 0, // スキルの使用, オプション, デフォルトは 0
|
||||
// 0 - `パッシブ`
|
||||
|
||||
@@ -12,16 +12,27 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
## ローグリソースの保存場所
|
||||
|
||||
- `resource/roguelike/` には、各ローグテーマに応じての運用リソースが格納されています
|
||||
- テーマフォルダ: `Phantom/` はファントム、 `Mizuki/` はミヅキ `Sami/` はサーミ
|
||||
- テーマフォルダ: `Phantom/` はファントム、 `Mizuki/` はミヅキ、`Sami/` はサーミ、`Sarkaz/` はサルカズ、`JieGarden/` は界園
|
||||
- `autopilot/` には、各ステージの戦闘jsonが含まれます
|
||||
- `ステージ名.json` ステージの戦闘ロジック
|
||||
- `encounter.json/` 思わぬ遭遇イベントロジック
|
||||
- `encounter/` 思わぬ遭遇イベントロジック
|
||||
- `default.json` 経験値モード
|
||||
- `deposit.json` 源石錐モード
|
||||
- `recruitment.json` オペレーター招集ロジック
|
||||
- `shopping.json` ストア購入ロジック
|
||||
|
||||
特に、 `Sami/` の下の `foldartal.json` は、サーミの暗号文板の使用ロジックを表す
|
||||
- 特に、`Sami/` の下の
|
||||
- `foldartal.json` はサーミの啓示板の使用ロジックを表す
|
||||
- `collapsal_paradigms.json` はサーミのパラダイムロストの種類を表す
|
||||
- `autopilot/ステージ名_collapse.json` ステージの戦闘ロジック(パラダイムロスト収集モード)
|
||||
- `encounter/collapse.json` パラダイムロスト収集モードの思わぬ遭遇ロジック
|
||||
|
||||
- `Sarkaz/` の下の
|
||||
- `fragments.json` はサルカズの思案の基本情報を保存
|
||||
- `map.json` はサルカズの位置測定分隊のルーティング用テンプレート画像情報を保存
|
||||
|
||||
- `JieGarden/` の下の
|
||||
- `coppers.json` は通宝の基本情報と拾取・交換ロジック
|
||||
|
||||
## ローグの始め--オペレーター招集
|
||||
|
||||
@@ -86,45 +97,89 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
|
||||
1. 既存のグループの紹介
|
||||
|
||||
ファントムテーマを例に取ると:主にオペレーターを以下のように分類しています
|
||||
サーミのテーマを例に取ると:主にオペレーターを以下のように分類しています
|
||||
|
||||
| グループ | 主な考慮事項 | 主に職種を含む | オペレーターの例 |
|
||||
| :------------- | :----------------------------- | :----------------- | :----------------------------------------------------------------------------------------------- |
|
||||
| **_地面阻挡_** | 場に立つことと雑魚を清掃 | 重装、前衛 | 庇護衛士、基石、ラ・プルマ、マウンテン、M3、リィンとシーンの召喚ユニット、スポット、重装予備隊員 |
|
||||
| **_地面单切_** | 一人でエリートモンスターと戦う | 執行者-特殊 | スルト、血掟テキサス、キリンRヤトウ、M3、レッド |
|
||||
| **_高台 C_** | 常態と決戦DPS | 狙撃、術師 | 遊龍チェン、ゴールデングロー、エイヤフィヤトラ、フィアメッタ |
|
||||
| **_高台输出_** | 対空および通常DPS | 狙撃、術師 | アルケット、エクシア、クルース、スチュワード |
|
||||
| **_奶_** | 治療能力 | 医療、補助 | ケルシ、濁心スカジ、ハイビスカス、アンセル |
|
||||
| **_回费_** | cost 回復 | 先鋒 | テンニンカ、イネス、フェン、バニラ |
|
||||
| **_炮灰_** | 砲弾吸収、再配置 | 特殊、召喚ユニット | M3、レッド、テンニンカ、予備隊員 |
|
||||
| **_高台预备_** | DPS能力を持っています | | オーキッド、予備隊員 |
|
||||
| グループ | 主な考慮事項 | 主に職種を含む | オペレーターの例 |
|
||||
| :---------------------- | :---------------------------------------- | :------------------------- | :----------------------------------------------------------------------------------------------- |
|
||||
| **_地面阻挡_** | 場に立つことと雑魚を清掃 | 重装、前衛 | 庇護衛士、基石、ラ・プルマ、マウンテン、M3、リィンとシーンの召喚ユニット、スポット、重装予備隊員 |
|
||||
| **_地面单切/執行者_** | 一人でエリート敵と戦う | 執行者-特殊 | スルト、血掟テキサス、キリンRヤトウ、M3、レッド |
|
||||
| **_高台C_** | 常態と決戦DPS | 狙撃、術師 | ウィシャデル、ロゴス、遊龍チェン、ゴールデングロー |
|
||||
| **_高台输出_** | 対空および通常DPS | 狙撃、術師 | アルケット、エクシア、クルース、スチュワード |
|
||||
| **_速狙_** | 物理DPS、標準射程 | 狙撃 | Ela、エクシア、ケイパー、クルース |
|
||||
| **_術師_** | 術DPS、標準射程 | 単体術師 | エイヤフィヤトラ、ロゴス、スチュワード |
|
||||
| **_辅助_** | 後方1マスを攻撃可能 | 補助 | ヴィルトゥオーサ、スズラン、ケイパー、オーキッド |
|
||||
| **_狙撃_** | 射程が長い高台 | 投擲手、破城射手 | ウィシャデル、ティフォン、ロサ |
|
||||
| **_奶_** | 治療能力 | 医療、補助 | ケルシー、濁心スカジ、ハイビスカス、アンセル |
|
||||
| **_単奶_** | 攻撃範囲縦深>=4 | 医療 | ケルシー、焔影リード、純燼エイヤフィヤトラ、ハイビスカス、アンセル |
|
||||
| **_群奶_** | 攻撃範囲縦深<4、後方を治療可能 | 医療、補助 | ナイチンゲール、フィリオプシス、濁心スカジ |
|
||||
| **_回费_** | COST 回復 | 先鋒 | テンニンカ、イネス、フェン、バニラ |
|
||||
| **_地刺_** | ブロックなし、盾の前でDPSまたは減速を提供 | 潜伏者 | 帰溟スペクター、アスカロン、マンティコア |
|
||||
| **_地面遠程_** | 地上長射程、盾の後ろでDPS可能 | 教官、領主 | ホルン、パラス、ソーンズ、シルバーアッシュ |
|
||||
| **_領主_** | 地上攻撃範囲縦深>4、対空可能 | 要塞、領主 | ソーンズ、シルバーアッシュ、チューバイ |
|
||||
| **_盾法_** | 攻撃範囲が短く、ある程度の耐久力がある | 法陣術師 | リン、カーネリアン |
|
||||
| **_炮灰_** | 砲弾吸収、再配置 | 特殊、召喚ユニット | M3、レッド、テンニンカ、予備隊員 |
|
||||
| **_大龍_** | 盾の前で耐久、近接ブロックで合体しやすい | 召喚ユニット | リィンの小龍、ジェシカの盾 |
|
||||
| **_補給站_** | メインDPS オペレーターの回転を加速 | 召喚ユニット | 支援補給ステーション、工匠系オペレーターの召喚ユニット |
|
||||
| **_無人機_** | 高台地上を無視する治療召喚ユニット | 召喚ユニット | スカジのシーボーン、サイレンスのドローン |
|
||||
| **_支援陷阱_** | 地上に配置する爆発物 | 召喚ユニット | 壊れたスモークマシン、ミスターランブル |
|
||||
| **_障碍物_** | 配置枠を使わず敵視を集めるかブロック | 召喚ユニット | 鳥籠、障害物 |
|
||||
| **_其他地面_** | 優先使用したくない地上 | 押引、ブロック1先鋒、剣豪 | バグパイプ、クロワッサン |
|
||||
| **_高台预备/其他高台_** | 優先使用したくない高台 | 拡散術師、連鎖術師、戦術家 | オーキッド、予備隊員 |
|
||||
|
||||
::: tip
|
||||
地面阻挡は主にオペレーターの防御総合能力を考慮します(時には全滅させることも防御力が強い表現ですね)、地面遠程と領主グループを含みます
|
||||
|
||||
奶は主に総合治療能力を考慮し、単奶と群奶を含みます。攻撃範囲カバーを考慮する必要がある場合は、単奶(4マス治療)または群奶(後方治療)を単独で使用します
|
||||
|
||||
高台输出は出力能力のみを考慮し、主に狙撃と術師職業の混合順序です。出力タイプ、攻撃範囲などの制限条件を考慮する必要がある場合は、速狙、術師、辅助、盾法を単独で使用します
|
||||
|
||||
罠タイプの召喚ユニットは数が多いため、支援陷阱グループに入れず、MAAに自動配置させた方が効果的です
|
||||
:::
|
||||
|
||||
2. 特別な操作が必要なグループ
|
||||
|
||||
上記のような一般的なグループ以外に、時折、特定のオペレーターやオペレーターの種類に対して細かいカスタマイズが必要な場合があります。例えば
|
||||
|
||||
| グループ | 含まれるオペレーター | 主な特徴 |
|
||||
| :--------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------ |
|
||||
| 棘刺 | ソーンズ、ホルン | 地上遠隔攻撃、特定の位置に非常に適したマップがあります |
|
||||
| 召唤类 | ケルシ、リィン、シーン | 地上ブロックを持ち、一部のマップでは優先的に配置する必要があり、召喚物はブロックまたは死体として使用できます |
|
||||
| 情报官 | カンタービレ、イネス | コスト回収やサイドアウトプット、シングルカットが可能 |
|
||||
| 浊心斯卡蒂 | 濁心スカジ | 低圧時の回復量はまあまあですが、範囲が特殊で、一部のマップには特に適しています |
|
||||
| 焰苇 | 焔影リード | サーミローグはよく開局オペレーターを使い、治療と輸出を兼ねており、いくつかの図には比較的適切な位置がある |
|
||||
| 银灰 | シルバーアッシュ、ムリナール | 地上の大規模な戦闘出力、ボスに対して配置できます |
|
||||
| 史尔特尔 | スルト | 精二後、3スキルを固定搭載するため、この時点でのスタンバイ能力はほぼゼロで、ブロック位置の配置優先度は非常に低いです |
|
||||
| 骰子 | ダイス | ミヅキテーマの中のダイスは個別に操作する必要があります |
|
||||
| グループ | 含まれるオペレーター | 主な特徴 |
|
||||
| :--------- | :--------------------------- | :-------------------------------------------------------------------------------------------------------------- |
|
||||
| 益达 | ウィシャデル | 高台DPS、優先配置でプレッシャーを軽減できます |
|
||||
| 棘刺 | ソーンズ、ホルン | 地上遠隔攻撃、ファントムテーマでは特定の位置に非常に適したマップがあります |
|
||||
| 召唤类 | ケルシ、リィン、シーン | 地上ブロックを持ち、一部のマップでは優先的に配置する必要があり、召喚物はブロックまたは死体として使用できます |
|
||||
| 情报官 | カンタービレ、イネス | コスト回収やサイドアウトプット、シングルカットが可能 |
|
||||
| 浊心斯卡蒂 | 濁心スカジ | 低圧時の回復量はまあまあですが、範囲が特殊で、一部のマップには特に適しています |
|
||||
| 焰苇 | 焔影リード | サーミローグでよく使う開局オペレーター、治療と輸出を兼ねており、一部のマップには比較的適切な位置があります |
|
||||
| 玛恩纳 | ムリナール、シルバーアッシュ | 地上の大規模な決戦DPS、ボスに対して配置できます |
|
||||
| 史尔特尔 | スルト | 精二後、3スキルを固定搭載するため、この時点での場持ち能力はほぼゼロで、ブロック位置の配置優先度は非常に低いです |
|
||||
| 骰子 | ダイス | ミヅキテーマの中のダイスは個別に操作する必要があります |
|
||||
|
||||
::: info 注意
|
||||
現在、識別されていない近距離オペレーターは最後から2番目のグループ(其他地面)に分類され、識別されていない遠距離オペレーターは最後から1番目のグループ(其他高台)に分類されます
|
||||
:::
|
||||
|
||||
::: tip
|
||||
新しく実装されたオペレーターは、それぞれのローグライクの `recruitment.json` に手動で追加する必要があります。開発者が対応を忘れることもあります。
|
||||
もし気づいた場合は、issue を送って開発者に知らせることもできますし、直接 PR を送ることもできます。
|
||||
:::
|
||||
|
||||
### 預設陣容--陣容完備檢測
|
||||
|
||||
あなたがクリアできるか、高層まで進むことが期待されるチームの中で、どのオペレーターが基本的なコアメンバーに属していますか?欠かせないものは何ですか?
|
||||
|
||||
::: info 注意
|
||||
現在のスクリプトの勧誘ロジックは、陣容が完全でない限り、0希望とkeyオペレーターだけを勧誘し、希望を高星のkeyオペレーターに渡します
|
||||
現在のスクリプトの招集ロジックは、陣容が完全でない限り、0希望とkeyオペレーターだけを招集し、希望を高星のkeyオペレーターに渡します
|
||||
(現在の実装方法は、高レア度オペレーターと★3オペレーターを手動でキーオペレーターとしてマークし、募集時にはキーオペレーターのみを募集する)(TODO: 0希望のオペレーターを識別する)
|
||||
|
||||
したがって、完全度の数字を高く設定しないようにし、必要なすべてのオペレーターの数(基本的なコアメンバー)を合計して、4〜8人にしてください
|
||||
|
||||
チームが陣容の完全度テストをクリアした後、招集券を入手するたびにオペレーターの募集と昇進優先度に基づいて採用されるため、希望を無駄にしないために、採用を望まないオペレーターは評価を設定したり、同じ職業の★3と予備隊員の評価を下回ったりする
|
||||
(絶対に必要でないオペレーターには特別な高得点と低得点が与えられます。 `Sami` の `止颂` を参照)
|
||||
|
||||
戦闘陣容を形成する際、オペレーター選択画面のデフォルトソート(上から下、左から右へ)が読み取られ、秩序正しく保存されます
|
||||
この順序に基づき、最初に陣容完全性を満たすオペレーターは、すべての陣容完全性を満たすか、陣容完全性を満たすオペレーターがいないまで相対的な順序で言及されます
|
||||
次に予備隊員を一番最後に移動させ、新しい順序を形成し、新しい順序で選択します
|
||||
特に、六つ星の臨時招集オペレーターはデフォルトで編成の先頭に配置されているため、実際の編成に六つ星の臨時招集オペレーターを簡単に組み込むことができます(TODO:使いならないE1臨時招集オペレーターは除外)
|
||||
|
||||
新しいアカウントについて:キーオペレーターの半チームの要件を満たさない10件の招集の場合、完全性テストは中止され、スコアに応じて使用されます。つまり、3つ星を育成していない新しい人数は2つか3つの6つ星のみを得られ、残りは多くの予備オペレーターを使います
|
||||
:::
|
||||
|
||||
```json
|
||||
@@ -149,16 +204,34 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
],
|
||||
"threshold": 2
|
||||
},
|
||||
{
|
||||
"groups": [
|
||||
"奶" //(ここでは、回復役が1名必要であることを示しています)
|
||||
],
|
||||
"threshold": 1
|
||||
}
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
::: caution
|
||||
あるオペレーターが複数のオペレーターグループに所属している場合、カウントは一度だけ行われます。
|
||||
例えば、オペレーター `棘刺` はオペレーターグループ `棘刺` と `地面阻挡` の両方に所属している可能性がありますが、この戦略グループ内ではオペレーター `棘刺` は一度だけカウントされます。
|
||||
|
||||
しかし、それぞれの戦略グループでは別々にカウントされます。
|
||||
例えば、オペレーター `焰影苇草` はオペレーターグループ `高台输出` と `奶` の両方に所属している可能性があり、この場合、両方の戦略グループでオペレーター `焰影苇草` がカウントされます。
|
||||
:::
|
||||
|
||||
### オペレーター募集パラメータの調整
|
||||
|
||||
1. グループ内の順序は配置検出の優先度を表します
|
||||
|
||||
2. グループ内のオペレーターの各フィールドの意味とスクリプト関連のロジック
|
||||
2. 臨時募集オペレーターは、既存の優先度に600ポイントが加算されます
|
||||
|
||||
3. ランダム昇進オペレーターの評価は、募集優先度と精二優先度を合計して計算されます
|
||||
|
||||
4. グループ内のオペレーターの各フィールドの意味とスクリプト関連のロジック
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -178,15 +251,16 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
"alternate_skill_times": 1, // 代替スキルのスキル使用回数(このフィールドはまだ実装されていません)
|
||||
"recruit_priority": 900, // 募集優先度、数字が大きいほど優先度が高くなり、900以上は必ず募集することを示し、400以下は一部の重要なオペレーターのE2優先度よりも低い
|
||||
// 臨時オペレーターの募集優先度は自動的に+800
|
||||
"promote_priority": 600, // 昇格優先度、数字が大きいほど優先度が高くなり、900以上はE2を取得する可能性があり、400以下は普通の3星オペレーターの募集優先度よりも低い
|
||||
"promote_priority": 600, // 昇進優先度、数字が大きいほど優先度が高くなり、900以上はE2を取得する可能性があり、400以下は普通の3星オペレーターの募集優先度よりも低い
|
||||
// Tips: 募集優先度を下げたり書かないで精英度を高めると、実際にはこれらのオペレーターのE2優先度を高めています
|
||||
"is_key": true, // true はキーオペレーター、false または省略すると非キーオペレーターです。陣形完全性チェックに合格しない場合、キーオペレーターおよび0希望オペレーターのみを募集し、希望を保存します。
|
||||
"is_start": true, // true は開幕選択オペレーター、false または省略すると非開幕選択オペレーターです。チームに start オペレーターがいない場合、start オペレーターおよび0希望オペレーターのみを募集し、ユーザーが入力したオペレーターは強制的に start オペレーターになります
|
||||
"auto_retreat": 0, // 配置後何秒で自動撤退するか、整数で、0 より大きい場合に有効です、主に特殊オペレーターや投錨に使用されます、肉鳩は通常2倍速ですので、スキルの持続時間/2 に設定することをお勧めします
|
||||
"promote_priority_when_team_full": 850,
|
||||
"recruit_priority_when_team_full": 850, // 個別に設定する必要はなく、編成が整ったときの募集の優先度は、デフォルトで-100となります
|
||||
"promote_priority_when_team_full": 850, // 個別に設定する必要はなく、編成が整った時、昇進の優先度はデフォルトで精二優先度300
|
||||
"recruit_priority_offsets": [ // 現在の陣形に応じた募集優先度の調整
|
||||
{
|
||||
"groups": [ // 条件を満たすためにどのグループが必要か
|
||||
"groups": [ // 条件を満たすためにどのグループが必要か。これらのグループには同じオペレーターが重複して出ないようにしてください。そうしないと、重複してカウントされます。
|
||||
"凯尔希",
|
||||
"地面阻挡",
|
||||
"棘刺"
|
||||
@@ -207,7 +281,13 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
}
|
||||
```
|
||||
|
||||
3. あなたの理解に基づいて新しいグループとオペレーターを追加してください
|
||||
::: info 注意
|
||||
`recruit_priority_offsets`の`group`内のグループに重複するオペレーターがいないようにしてください。
|
||||
|
||||
`auto_retreat`を設定した場合、通常は作戦計画で改めて`retreat_plan`を設定する必要はありません。
|
||||
:::
|
||||
|
||||
5. あなたの理解に基づいて新しいグループとオペレーターを追加してください
|
||||
|
||||
新しいグループを追加すると、既存のグループからオペレーターをコピーして、エキスパートの評価を参考にして、それを基に変更できます
|
||||
|
||||
@@ -420,6 +500,12 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
],
|
||||
```
|
||||
|
||||
::: info 注意
|
||||
maaが現在のステージに対応するカスタム作戦を見つけられない場合、自動的に汎用作戦を実行します。
|
||||
|
||||
maaが現在のステージ名を認識できない場合、作戦のロジックは一切実行されません。
|
||||
:::
|
||||
|
||||
### 特定のオペレーターの戦術に特別な理解がありますか?- 特定のオペレーターに対する高度な操作
|
||||
|
||||
このオペレーターを単独でグループ化してください。
|
||||
@@ -442,7 +528,9 @@ JSONファイルはコメントをサポートしていません。テキスト
|
||||
|
||||
OCRで思わぬ遭遇イベントを認識しますが、選択肢は固定された位置を操作します
|
||||
|
||||
時間が認識されない場合、最も下の選択肢を選択します
|
||||
事件が認識されない場合、最も下の選択肢を選択します
|
||||
|
||||
よくあるフリーズの原因の一つは、オプションタイプのアイコンは存在するのにオプションが選択できないことです(TODO)
|
||||
|
||||
通常、微調整するか調整しないことが必要です(高手はすでに書いているでしょう)
|
||||
|
||||
@@ -524,13 +612,27 @@ OCRで思わぬ遭遇イベントを認識しますが、選択肢は固定さ
|
||||
"effect": "立即进阶两个干员(不消耗希望)",
|
||||
"No": 15
|
||||
},
|
||||
...
|
||||
|
||||
{
|
||||
"name": "警戒篱木",
|
||||
"effect": "坍缩值-2,目标生命上限+2",
|
||||
"No": 198,
|
||||
"decrease_collapse": true // trueは、このコレクションを入手すると崩壊値が下がることを示します。modeが5の場合は購入されません。
|
||||
},
|
||||
...
|
||||
|
||||
"others": // maaは購入しないコレクション品、例えばエンディングコレクションやクレーン
|
||||
{
|
||||
"name": "无人起重机"
|
||||
},
|
||||
```
|
||||
|
||||
## 個別のローグテーマ カスタムロジック
|
||||
|
||||
### サーミテーマ--密文板
|
||||
### サーミテーマ--啓示板
|
||||
|
||||
`resource/roguelike/Sami/foldartal.json` はサーミテーマの密文板の戦術を記述しています。
|
||||
`resource/roguelike/Sami/foldartal.json` はサーミテーマの啓示板の戦術を記述しています。
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -568,17 +670,151 @@ OCRで思わぬ遭遇イベントを認識しますが、選択肢は固定さ
|
||||
...
|
||||
}
|
||||
],
|
||||
"foldartal": [ //密文板の効果の注釈(ここでは、板の効果を参照用に記述し、プログラムの実行には影響しません)
|
||||
"foldartal": [ //啓示板の効果の注釈(ここでは、板の効果を参照用に記述し、プログラムの実行には影響しません)
|
||||
{
|
||||
"name": "布局", //密文板の種類(上板か下板か)
|
||||
"name": "布局", //啓示板の種類(上板か下板か)
|
||||
"foldartal": [
|
||||
{
|
||||
"name": "黜人", //密文板の名前
|
||||
"effect": "选择所有右侧邻近的战斗节点" //密文板の効果
|
||||
"name": "黜人", //啓示板の名前
|
||||
"effect": "选择所有右侧邻近的战斗节点" //啓示板の効果
|
||||
},
|
||||
|
||||
```
|
||||
|
||||
### サーミテーマ--パラダイムロスト
|
||||
|
||||
`check_collapsal_paradigms`が`true`の場合、MAAは2つの異なる方法でパラダイムロストをチェックします:
|
||||
|
||||
- ステージ選択画面で画面上中央をクリックして崩壊状態バーを展開する、以下Panel Checkと呼ぶ
|
||||
- 画面右側にパラダイムロスト通知があるかどうかを観察する、以下Banner Checkと呼ぶ
|
||||
|
||||
崩壊値を取得する方法は多様で、以下の状況を考慮しています:
|
||||
|
||||
1. 戦闘後、完璧な戦闘でないため崩壊値が増加し、Banner Checkを実行
|
||||
2. 戦闘後、秘宝を獲得したため崩壊値が変動し、Banner Checkを実行
|
||||
3. 思わぬ遭遇などのノードで選択肢を選んだため崩壊値が変動し、Banner Checkを実行
|
||||
4. 怪しい旅商人ノードで秘宝を購入したため崩壊値が変動し、Banner Checkを実行
|
||||
5. 啓示板を使用したため崩壊値が減少し、Banner Checkを実行
|
||||
6. 新しい層に入ったため崩壊値が増加し、Panel Checkを実行
|
||||
7. Banner Check時にパラダイムロストが消退したことを発見した場合、一度に2層消退するかどうか不明なため(可能性は極めて低い)、次回ステージ選択画面に戻った時に追加でPanel Checkを実行
|
||||
8. `double_check_collapsal_paradigms`が`true`の場合、ステージ選択画面に戻るたびに追加でPanel Checkを実行し、パラダイムロストの記録漏れや記録過剰がないか検証
|
||||
|
||||
以下は隠しパラダイムロストを収集するタスク設定例です:
|
||||
|
||||
```json5
|
||||
{
|
||||
"theme": "Sami",
|
||||
"mode": 5,
|
||||
"investment_enabled": false,
|
||||
"squad": "远程战术分队",
|
||||
"roles": "稳扎稳打",
|
||||
"core_char": "维什戴尔",
|
||||
"expected_collapsal_paradigms": ["目空一些", "睁眼瞎", "图像损坏", "一抹黑"]
|
||||
}
|
||||
```
|
||||
|
||||
`mode`が`5`の場合:
|
||||
|
||||
- `stage_name`が`ステージ名_collapse`の作戦戦略を優先使用、例:`resource/roguelike/Sami/autopilot/事不过四_collapse.json`
|
||||
- `resource/roguelike/Sami/encounter/collapse.json`に記述された思わぬ遭遇イベント選択の戦略を使用
|
||||
- `decrease_collapse`が`true`の秘宝は購入しません
|
||||
|
||||
`mode`が`5`でないが`check_collapsal_paradigms`が`true`の場合、パラダイムロストを検出し、`expected_collapsal_paradigms`リストにあるパラダイムロストに遭遇した時にタスクを停止しますが、他のパラダイムロストに遭遇した時は再開しません。
|
||||
|
||||
隠しパラダイムロストを収集する場合、N10難易度を推奨し、以下のチームの使用を推奨します:
|
||||
|
||||
- ウィシャデル + スポット + スチュワード
|
||||
- 焔影リード + オーキッド + ポプカル
|
||||
- ティフォン + スポット + スチュワード
|
||||
|
||||
### 界園テーマ--通宝
|
||||
|
||||
`resource/roguelike/JieGarden/coppers.json` は界園テーマの通宝の設定と交換戦略を記述しています
|
||||
|
||||
```json5
|
||||
{
|
||||
"theme": "JieGarden", // テーマ名(ここは界園)
|
||||
"addons": { // 通宝の追加属性説明(備考のみ、プログラム実行に影響なし)
|
||||
"锈色": "投出时,每经过一个节点,获得源石锭+1",
|
||||
"存护": "加入钱盒时,获得护盾值+2",
|
||||
"入幻": "加入钱盒时,获得希望+1",
|
||||
"引光": "加入钱盒时,获得烛火+1",
|
||||
"巡游": "投出时,每完成一场战斗,获得票券+1"
|
||||
},
|
||||
"coppers": [ // 通宝リスト
|
||||
{
|
||||
"name": "大炎通宝", // 通宝名
|
||||
"desc": "普通又空白,什么也没有", // 通宝効果説明(備考のみ、プログラム実行に影響なし)
|
||||
"rarity": "NORMAL", // レアリティ:NONE/NORMAL/RARE/SUPER_RARE(備考のみ、プログラム実行に影響なし)
|
||||
"pickup_priority": 0, // 拾取優先度、ドロップ選択時に使用、数値が大きいほど優先的に拾取
|
||||
"discard_priority": 1000 // 廃棄優先度、交換時に使用、数値が大きいほど優先的に廃棄
|
||||
},
|
||||
{
|
||||
"name": "衡-奇土生金",
|
||||
"desc": "投出时,立即获得源石锭+4(下次投钱前变化为-大炎通宝)",
|
||||
"rarity": "NORMAL",
|
||||
"pickup_priority": 200,
|
||||
"discard_priority": 800,
|
||||
"cast_discard_priority": 999 // オプションフィールド、投出時の廃棄優先度、投出済みかつ値>=0の場合のみdiscard_priorityを置換
|
||||
// 通常、投出後に効果が変化する通宝に適用(大炎通宝に変化する通宝など)
|
||||
},
|
||||
{
|
||||
"name": "厉-西廉贞",
|
||||
"desc": "投出时,精英及领袖敌人的生命值、攻击力+10%,在险路恶敌及岁兽残识中攻击力、生命值额外+20%",
|
||||
"rarity": "NORMAL",
|
||||
"pickup_priority": 0,
|
||||
"discard_priority": 1998,
|
||||
"cast_discard_priority": 2098 // 同上、投出後にマイナス効果をもたらす通宝にも使用されることがあります
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 通宝交換ロジック
|
||||
|
||||
MAAは界園テーマで通宝の拾取と交換を自動処理します:
|
||||
|
||||
::: tip 有効条件
|
||||
通宝交換機能は以下のモードでのみ有効:
|
||||
|
||||
- 投資モード:「投資モードで購買、募集、2層進出を有効化」オプションを有効にする必要があります
|
||||
- その他のモード:デフォルトで有効
|
||||
|
||||
:::
|
||||
|
||||
1. **ドロップ通宝の拾取**:戦闘終了後、通宝ドロップ選択画面が表示された場合、MAAは `pickup_priority` に基づいて最も優先度の高い通宝を選択
|
||||
|
||||
2. **銭匣通宝の交換**:新しく拾った通宝を銭匣内の通宝と交換する必要がある場合:
|
||||
- 銭匣内のすべての通宝の種類、名前、投出済み状態を認識
|
||||
- 銭匣内で `discard_priority` が最も高い(最も重要度が低い)通宝を見つける
|
||||
- 新しい通宝の `discard_priority` が既存の最も重要度が低い通宝より低い場合、交換を放棄
|
||||
- それ以外の場合、最も重要度が低い通宝を新しい通宝に置換
|
||||
|
||||
3. **投出済み通宝の特殊処理**:
|
||||
- `cast_discard_priority` が指定された通宝の場合、投出済み状態では `discard_priority` ではなくこの優先度を使用
|
||||
- 通常、投出後に効果が変化する通宝に適用(大炎通宝に変化する通宝など)
|
||||
|
||||
#### 通宝認識メカニズム
|
||||
|
||||
MAAは以下の方法で通宝を認識・処理します:
|
||||
|
||||
1. テンプレートマッチングで通宝の種類アイコン(厲/衡/花)を認識
|
||||
2. 種類アイコンの位置に基づき、ROIオフセットを使用してOCRで通宝名を認識
|
||||
3. 通宝が「投出済み」状態かどうかを認識
|
||||
4. 通宝交換画面でリストを自動スクロールし、すべての通宝をスキャンして比較
|
||||
|
||||
#### 認識フロー図解
|
||||
|
||||

|
||||

|
||||
|
||||
::: info 注意
|
||||
|
||||
- OCR認識した通宝名が設定ファイルに見つからない場合、MAAはデバッグ画像を`debug/roguelike/coppers/unknown`ディレクトリに保存し、トラブルシューティングに使用します
|
||||
|
||||
:::
|
||||
|
||||
## 実現したいロジック(todo)
|
||||
|
||||
### 自動編成ロジック
|
||||
|
||||
@@ -5,7 +5,7 @@ icon: devicon-plain:githubactions
|
||||
|
||||
# CI 시스템 해석
|
||||
|
||||
MAA는 Github Action을 활용하여 웹사이트 구축, 자동 리소스 업데이트, 최종 파일 빌드 및 릴리즈 등 대량의 자동화 작업을 완성했습니다. 시간이 지나면서 이러한 CI들은 점차 중첩되기 시작했고, 일부는 다른 저장소로 연결되기도 했습니다. 본 문서는 MAA의 CI 시스템을 개선하고자 하는 분들에게 간단한 소개를 제공하는 것을 목표로 합니다.
|
||||
MAA는 GitHub Action을 활용하여 웹사이트 구축, 자동 리소스 업데이트, 최종 파일 빌드 및 릴리즈 등 대량의 자동화 작업을 완성했습니다. 시간이 지나면서 이러한 CI들은 점차 중첩되기 시작했고, 일부는 다른 저장소로 연결되기도 했습니다. 본 문서는 MAA의 CI 시스템을 개선하고자 하는 분들에게 간단한 소개를 제공하는 것을 목표로 합니다.
|
||||
|
||||
본 문서를 읽기 전에 MAA의 프로젝트 구조와 구성에 대한 기본적인 개념을 갖고 있는 것이 좋습니다.
|
||||
|
||||
@@ -42,7 +42,7 @@ MAA는 Github Action을 활용하여 웹사이트 구축, 자동 리소스 업
|
||||
|
||||
이 워크플로우는 코드의 전체 빌드 작업을 담당하며, MAA의 모든 구성 요소를 포함합니다. 빌드 결과물은 실행 가능한 MAA입니다.
|
||||
|
||||
필수적인 MaaCore 외에, Windows 빌드 결과물에는 MaaWpfGui가, MacOS 빌드 결과물에는 MaaMacGui가, Linux 빌드 결과물에는 MaaCLI가 포함됩니다.
|
||||
필수적인 MaaCore 외에, Windows 빌드 결과물에는 MaaWpfGui가, macOS 빌드 결과물에는 MaaMacGui가, Linux 빌드 결과물에는 MaaCLI가 포함됩니다.
|
||||
|
||||
이 워크플로우는 새로운 Commit이나 PR이 발생할 때마다 자동으로 실행되며, 릴리즈 PR에 의해 트리거될 때는 이번 빌드 결과물이 직접 릴리즈에 사용되고 Release가 생성됩니다.
|
||||
|
||||
|
||||
@@ -69,8 +69,7 @@ icon: iconoir:developer
|
||||
6. cmake 프로젝트 구성 실행
|
||||
|
||||
```cmd
|
||||
mkdir -p build
|
||||
cmake -G "Visual Studio 18 2026" -B build -DBUILD_WPF_GUI=ON -DBUILD_DEBUG_DEMO=ON
|
||||
cmake --preset windows-x64
|
||||
```
|
||||
|
||||
7. `build/MAA.slnx` 파일을 더블 클릭하여 엽니다. Visual Studio가 자동으로 전체 프로젝트를 로드합니다.
|
||||
@@ -79,6 +78,10 @@ icon: iconoir:developer
|
||||
- `MaaWpfGui` 우클릭 → 시작 프로젝트로 설정
|
||||
- F5 키를 눌러 실행
|
||||
|
||||
::: tip
|
||||
Win32Controller(Windows 창 제어) 관련 기능을 디버깅하려면 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases)에서 해당 플랫폼 압축 파일을 다운로드하고, `bin` 디렉토리의 `MaaWin32ControlUnit.dll`을 MAA DLL과 같은 디렉토리(예: `build/bin/Debug`)에 배치해야 합니다. 자동 다운로드 스크립트 PR 환영!
|
||||
:::
|
||||
|
||||
9. 이제 자유롭게 ~~개조~~ 개발 시작!
|
||||
10. 주기적 커밋 (메시지 필수 작성)
|
||||
Git 초보자는 dev 브랜치 대신 새 브랜치 생성 권장:
|
||||
@@ -128,6 +131,40 @@ icon: iconoir:developer
|
||||
Visual Studio 실행 시 Git 작업은 "Git 변경" 탭에서 명령어 없이 처리 가능
|
||||
:::
|
||||
|
||||
## VSCode로 개발하기 (선택 사항)
|
||||
|
||||
::: warning
|
||||
**Visual Studio를 사용한 개발을 권장합니다.** MAA 프로젝트는 주로 Visual Studio를 기반으로 구축되며, 위의 완전한 환경 설정 과정이 모든 개발 요구를 충족하여 최상의 즉시 사용 가능한 경험을 제공합니다. VS Code 워크플로는 VS Code + CMake + clangd에 이미 익숙한 개발자를 위한 대안으로만 제공되며, 설정 난이도가 상대적으로 높습니다.
|
||||
:::
|
||||
|
||||
VSCode를 선호한다면 CMake, clangd 등의 확장을 사용해 코드 완성, 탐색, 디버깅을 할 수 있습니다. 위 1–6단계(클론, 의존성, CMake 설정)를 완료한 후 다음 단계로 설정하세요.
|
||||
|
||||
### 추천 확장
|
||||
|
||||
VS Code Marketplace에서 설치:
|
||||
|
||||
| 확장 | 용도 |
|
||||
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
||||
| [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) | CMake 설정, 빌드, 디버깅 통합 |
|
||||
| [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) | C++ IntelliSense, 코드 탐색, 진단 (LSP 기반) |
|
||||
| [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) | C++ 프로그램 디버깅 (CMake Tools 또는 launch.json과 연동) |
|
||||
|
||||
::: tip
|
||||
clangd 사용 시 C/C++ 확장의 IntelliSense를 비활성화(`C_Cpp.intelliSenseEngine`을 `disabled`로 설정)하는 것을 권장합니다. 충돌을 피하기 위함입니다.
|
||||
:::
|
||||
|
||||
### 설정 단계
|
||||
|
||||
1. VSCode에서 프로젝트 루트 열기
|
||||
2. **CMake Tools**: 상태 표시줄에서 Configure Preset(예: `windows-x64`, `linux-x64`) 선택 후 Build Preset으로 빌드 실행
|
||||
3. **clangd**: Windows에서 MSVC 사용 시 `compile_commands.json` 없이도 clangd로 개발 가능. Linux/macOS에서는 프리셋에서 `CMAKE_EXPORT_COMPILE_COMMANDS`가 활성화되어 clangd가 `build/compile_commands.json`을 자동 사용
|
||||
4. **디버깅**: 프로젝트에 `.vscode/launch.json`이 포함되어 MaaWpfGui 또는 Debug Demo를 바로 실행 가능
|
||||
|
||||
### 빌드 및 디버깅 단축키
|
||||
|
||||
- **빌드**: `Ctrl+Shift+B` 또는 CMake Tools 상태 표시줄
|
||||
- **디버깅**: F5 또는 Run and Debug 패널에서 구성 선택
|
||||
|
||||
## MAA 파일의 포매팅 요구 사항
|
||||
|
||||
MAA는 리포지토리의 코드 및 리소스 파일들을 아름답고 일관적으로 유지하기 위해 일련의 포매팅 도구를 사용합니다.
|
||||
@@ -139,7 +176,7 @@ MAA는 리포지토리의 코드 및 리소스 파일들을 아름답고 일관
|
||||
| 파일 유형 | 포매팅 도구 |
|
||||
| --------- | --------------------------------------------------------------- |
|
||||
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||
| Json/Yaml | [Prettier](https://prettier.io/) |
|
||||
| JSON/YAML | [Prettier](https://prettier.io/) |
|
||||
| Markdown | [markdownlint](https://github.com/DavidAnson/markdownlint-cli2) |
|
||||
|
||||
### Pre-commit Hooks를 사용하여 자동 포매팅을 활성화
|
||||
|
||||
@@ -29,7 +29,7 @@ icon: jam:write-f
|
||||
:::
|
||||
```
|
||||
|
||||
또는 Github 스타일 구문 사용:
|
||||
또는 GitHub 스타일 구문 사용:
|
||||
|
||||
```markdown
|
||||
> [!컨테이너 타입]
|
||||
|
||||
@@ -162,4 +162,4 @@ ROI 범위를 수정하는 방법:
|
||||
|
||||
## 변경사항 제출
|
||||
|
||||
[Github Pull Request 가이드](./pr-tutorial.md)를 참고하세요!
|
||||
[GitHub Pull Request 가이드](./pr-tutorial.md)를 참고하세요!
|
||||
|
||||
@@ -9,7 +9,7 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
::: warning
|
||||
이 가이드는 많은 개념을 단순화하여 더 많은 사람들이 실제로 사용할 수 있도록 설계되었습니다. 때로는 꽤 불안불안한 ~~하지만 간단한~~ 조치들과 약간 부정확한 설명이 있을 수 있으므로 전문가 분들의 이해를 부탁드립니다.
|
||||
만약 Git 사용 경험이 있고 프로그래밍 기초 지식을 가지고 계시다면 ~~그럼 당신은 왜 보고 있나요🔨~~, 약간 더 발전된 가이드인 [Github Pull Request 진행과정](./development.md#완전한-환경-설정-windows)을 확인해주세요.
|
||||
만약 Git 사용 경험이 있고 프로그래밍 기초 지식을 가지고 계시다면 ~~그럼 당신은 왜 보고 있나요🔨~~, 약간 더 발전된 가이드인 [GitHub Pull Request 진행과정](./development.md#완전한-환경-설정-windows)을 확인해주세요.
|
||||
:::
|
||||
|
||||
## 기본 개념 및 용어 설명
|
||||
|
||||
@@ -3,7 +3,7 @@ order: 8
|
||||
icon: iconoir:code-brackets
|
||||
---
|
||||
|
||||
# 전용 VSCode 확장 프로그램 가이드
|
||||
# 전용 VS Code 확장 프로그램 가이드
|
||||
|
||||
이 확장 프로그램은 MaaAssistantArknights/MaaFramework에 대해 다음과 같은 기능들을 포함한 편리한 개발 기능들을 제공합니다:
|
||||
|
||||
@@ -14,7 +14,7 @@ icon: iconoir:code-brackets
|
||||
|
||||
## 설치
|
||||
|
||||
VSCode 확장 프로그램 목록에서 `Maa`를 검색하여 직접 설치하는 것을 권장합니다.
|
||||
VS Code 확장 프로그램 목록에서 `Maa`를 검색하여 직접 설치하는 것을 권장합니다.
|
||||
|
||||
::: tip
|
||||
처음 사용할 때 확장 프로그램은 사전 설정된 버전의 리소스를 자동으로 다운로드합니다.
|
||||
@@ -90,7 +90,7 @@ VSCode 확장 프로그램 목록에서 `Maa`를 검색하여 직접 설치하
|
||||
|
||||
### 스크린샷 캡처 및 자르기 / 빠른 인식
|
||||
|
||||
VSCode 명령 팔레트에서 `Maa: 스크린샷 도구 열기(Maa: open crop tool)`를 검색하고 실행하여 `스크린샷 / 자르기(Screenshots / Crop)` 패널을 열 수 있습니다.
|
||||
VS Code 명령 팔레트에서 `Maa: 스크린샷 도구 열기(Maa: open crop tool)`를 검색하고 실행하여 `스크린샷 / 자르기(Screenshots / Crop)` 패널을 열 수 있습니다.
|
||||
|
||||
> `Ctrl+Shift+P` (MacOS의 경우 `Command+Shift+P`)를 사용하여 명령 팔레트를 엽니다.
|
||||
|
||||
@@ -114,11 +114,11 @@ MAA의 경우, 확장 프로그램에서 사용되는 모델을 자동으로 관
|
||||
|
||||
#### MaaFramework 로그
|
||||
|
||||
VSCode 명령 팔레트에서 `Maa: maa 로그 열기(Maa: open maa log)`를 검색하고 실행하여 디버깅 중에 생성된 `maa.log` 로그를 볼 수 있습니다.
|
||||
VS Code 명령 팔레트에서 `Maa: maa 로그 열기(Maa: open maa log)`를 검색하고 실행하여 디버깅 중에 생성된 `maa.log` 로그를 볼 수 있습니다.
|
||||
|
||||
#### Maa Pipeline Support 확장 로그
|
||||
|
||||
VSCode 명령 팔레트에서 `Maa: 확장 로그 열기(Maa: open extension log)`를 검색하고 실행하여 디버깅 중에 생성된 `mse.log` 로그를 볼 수 있습니다.
|
||||
VS Code 명령 팔레트에서 `Maa: 확장 로그 열기(Maa: open extension log)`를 검색하고 실행하여 디버깅 중에 생성된 `mse.log` 로그를 볼 수 있습니다.
|
||||
|
||||
### 하단 상태 표시줄
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@ address = "127.0.0.1:7777" # 필요 시 사전 설정된 주소를 재정의할
|
||||
|
||||
#### 특수 프리셋
|
||||
|
||||
현재 `PlayCover (MacOS)`, `Waydroid (Linux)` 두 가지 특수 프리셋이 사전 구성되어 있습니다.
|
||||
현재 `PlayCover (macOS)`, `Waydroid (Linux)` 두 가지 특수 프리셋이 사전 구성되어 있습니다.
|
||||
|
||||
- `PlayCover`는 macOS에서 `PlayCover`를 통해 네이티브로 실행되는 게임 클라이언트에 연결하는 데 사용됩니다. 이 경우 `adb_path`를 지정할 필요가 없으며, `address`는 `adb` 연결 주소가 아닌 `PlayTools`의 주소입니다. 자세한 내용은 [PlayCover 지원 문서][playcover-doc]를 참고하세요.
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
|
||||
:::
|
||||
|
||||
안정 버전은 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix)에 패키징되어 있으며, `nixpkgs`의 Rust 툴체인을 사용합니다. 나이틀리 빌드는 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix)에 있으며, 베타 채널의 Rust 툴체인을 사용하며 Github Action에 의해 매일 자동으로 업데이트되고 빌드가 검증됩니다.
|
||||
안정 버전은 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix)에 패키징되어 있으며, `nixpkgs`의 Rust 툴체인을 사용합니다. 나이틀리 빌드는 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix)에 있으며, 베타 채널의 Rust 툴체인을 사용하며 GitHub Action에 의해 매일 자동으로 업데이트되고 빌드가 검증됩니다.
|
||||
|
||||
#### Homebrew
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ Mac 버전 개발에 인력이 부족하여 업데이트 속도가 비교적 느
|
||||
|
||||
완벽하게 지원됩니다.
|
||||
|
||||
추가로, macOS에서 녹스 에뮬레이터의 adb 이진 파일의 위치는 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`이며 부모 디렉토리 `MacOS`에서 `adb devices` 명령을 사용하여 adb 포트를 확인할 수 있습니다.
|
||||
추가로, macOS에서 녹스 에뮬레이터의 adb 이진 파일의 위치는 `/Applications/NoxAppPlayer.app/Contents/macOS/adb`이며 부모 디렉토리 `macOS`에서 `adb devices` 명령을 사용하여 adb 포트를 확인할 수 있습니다.
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
|
||||
@@ -49,25 +49,9 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
|
||||
|
||||
Windows 8/8.1/10/11 N/KN(유럽/한국) 버전을 사용하는 경우, [미디어 기능 팩](https://support.microsoft.com/ko-kr/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)을 설치해야 합니다.
|
||||
|
||||
#### Windows 7 관련
|
||||
#### Windows 7 / 8 / 8.1 관련
|
||||
|
||||
.NET 10은 Windows 7 / 8 / 8.1 시스템을 지원하지 않으므로<sup>[출처](https://github.com/dotnet/core/issues/7556)</sup>, MAA도 더 이상 지원하지 않습니다. 마지막으로 사용 가능한 .NET 8 버전은 [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7)입니다. 마지막으로 사용 가능한 .NET 4.8 버전은 [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8)입니다. 자체 컴파일의 실현 가능성은 아직 확인되지 않았습니다.
|
||||
|
||||
Windows 7의 경우, 위에서 언급한 두 개의 런타임 라이브러리를 설치하기 전에 다음 패치가 설치되어 있는지 확인해야 합니다:
|
||||
|
||||
1. [Windows 7 Service Pack 1](https://support.microsoft.com/ko-kr/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
|
||||
2. SHA-2 코드 서명 패치:
|
||||
- KB4474419:[다운로드 링크 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[다운로드 링크 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
|
||||
- KB4490628:[다운로드 링크 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[다운로드 링크 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):[다운로드 링크 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)、[다운로드 링크 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
|
||||
|
||||
##### .NET 8 애플리케이션이 Windows 7에서 비정상적으로 실행되는 문제 완화 조치 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
|
||||
Windows 7에서 .NET 8 애플리케이션을 실행할 때 메모리 사용량이 비정상적으로 증가하는 문제가 있습니다. 아래의 완화 조치를 참조하세요. Windows 8/8.1은 테스트되지 않았습니다. 동일한 문제가 있는 경우, 문서를 업데이트할 수 있도록 Issue를 제출해 주세요.
|
||||
|
||||
1. `컴퓨터`를 열고 빈 공간을 마우스 오른쪽 버튼으로 클릭하여 속성을 클릭하고, 왼쪽의 `고급 시스템 설정`을 클릭한 다음 `환경 변수`를 클릭합니다.
|
||||
2. 새 시스템 변수를 만들고, 변수 이름을 `DOTNET_EnableWriteXorExecute`, 변수 값을 `0`으로 설정합니다.
|
||||
3. 컴퓨터를 재시작합니다.
|
||||
.NET 10은 Windows 7 / 8 / 8.1 시스템을 지원하지 않으므로<sup>[출처](https://github.com/dotnet/core/issues/7556)</sup>, MAA도 더 이상 지원하지 않습니다.
|
||||
|
||||
## 연결 오류
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ icon: hugeicons:brain-02
|
||||
- 용문 시내:LungmenDowntown@Annihilation
|
||||
|
||||
- 상시 개방 이벤트의 경우 `OF-1`/`OF-F3`/`GT-5`와 같이 입력합니다.
|
||||
- 현재 개방된 사이드 스토리 이벤트의 세 개의 스테이지입니다. [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json)에서 업데이트를 자동으로 다운로드 한 후 화면 하단에 표시됩니다.
|
||||
- 현재 개방된 사이드 스토리 이벤트의 세 개의 스테이지입니다. [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json)에서 업데이트를 자동으로 다운로드 한 후 화면 하단에 표시됩니다.
|
||||
- 재개방된 사이드 스토리 이벤트. `SSReopen-<스테이지 접두사>`를 입력하면 XX-1~XX-9 스테이지를 한 번에 완료할 수 있습니다. 예: `SSReopen-IC`.
|
||||
|
||||
::: details 예시 화면
|
||||
@@ -70,23 +70,11 @@ icon: hugeicons:brain-02
|
||||
대체 스테이지는 해당 일자의 개방 여부에 따라 실제 전투에 사용될 스테이지를 결정합니다. 즉, 열려 있는 스테이지 중 첫 번째 것을 선택하여 전투를 수행합니다.
|
||||
이 기능은 일정표와 유사하며, 선택한 스테이지가 실패했을 경우를 대비한 백업 스테이지로 작동하지 않습니다.
|
||||
|
||||
1. 예: 기본 스테이지를 `용문폐-6/5`로 설정하고, 대체 스테이지로 `1-7` 및 `경험치-6/5`를 설정한 경우:
|
||||
- 당일 `용문폐-6/5`가 개방되어 있다면 해당 스테이지로 진입하며, `1-7` 및 `경험치-6/5`는 실행되지 않습니다. 이때 플레이어가 `용문폐-6/5` 대리를 해제한 경우 작업은 실패합니다.
|
||||
- 당일 `용문폐-6/5`가 개방되어 있지 않다면 `1-7`으로 진입하며, `경험치-6/5`는 실행되지 않습니다. 이때 `1-7` 대리를 해제한 경우에도 작업은 실패합니다.
|
||||
- `1-7`은 상시 개방된 스테이지이므로, 그 앞에 위치한 `경험치-6/5`는 절대 선택되지 않습니다.
|
||||
예: 대체 단계가 `용문폐-6/5`, `1-7` 및 `경험치-6/5` 로 설정되어 있는 경우:
|
||||
|
||||
2. 기본 스테이지가 `섬멸 모드`인 경우:
|
||||
- 섬멸 작전 결과는 이후 대체 스테이지 선택 로직에 영향을 주지 않으며, 섬멸이 실패하더라도 이성 소모 작업은 오류 없이 이어집니다.
|
||||
- 이후 대체 스테이지는 `이성약 사용` 및 `대리 배수` 설정만 상속하며, `원석 사용`, `지정 횟수`, `지정 재료` 등의 설정은 상속되지 않습니다.
|
||||
|
||||
### 남은 이성
|
||||
|
||||
`이성 사용`이 종료된 후에 시작되며, 이성 회복제 사용, 순오리지늄 사용, 횟수 제한, 드롭 제한, 연속 전투 횟수 등의 제어를 받지 않고, 이성을 모두 소비하면 종료됩니다.
|
||||
|
||||
- 스테이지 개시 시 이성이 부족한 경우, 남은 이성 스테이지로 이동하여 "나머지" 이성을 소모합니다. (예: 1-7)
|
||||
- 이성이 부족하여 연속 전투 횟수가 너무 높게 설정된 경우에도 자동으로 단일 전투 횟수로 선택되어 이성을 모두 소비합니다(예: 1-7을 6회 연속 전투 설정하지만, 이성이 30밖에 되지 않는 경우, 자동으로 연속 전투 없는 1-7로 전환됩니다).
|
||||
- 여전히 이성이 부족하면 작업을 중지합니다.(예: 6 이하의 이성)
|
||||
- 남은 이성 선택 스테이지가 개방되지 않은 스테이지인 경우, 이성 사용에 실패합니다.
|
||||
- 당일 `용문폐-6/5`가 개방되어 있다면 해당 스테이지로 진입하며, `1-7` 및 `경험치-6/5`는 실행되지 않습니다. 이때 플레이어가 `용문폐-6/5` 대리를 해제한 경우 작업은 실패합니다.
|
||||
- 당일 `용문폐-6/5`가 개방되어 있지 않다면 `1-7`으로 진입하며, `경험치-6/5`는 실행되지 않습니다. 이때 `1-7` 대리를 해제한 경우에도 작업은 실패합니다.
|
||||
- `1-7`은 상시 개방된 스테이지이므로, 그 앞에 위치한 `경험치-6/5`는 절대 선택되지 않습니다.
|
||||
|
||||
### 연속 전투 횟수
|
||||
|
||||
@@ -94,15 +82,14 @@ MAA는 사용자가 설정한 연속 전투 횟수에 따라 전투를 진행합
|
||||
|
||||
- **AUTO** (0):
|
||||
- 레벨 내 최대 연속 전투 횟수를 자동으로 파악하고, 최대 연속 전투 횟수를 유지하며, 이성을 초과하지 않습니다.
|
||||
- 완료 후 `남은 이성` 프로세스 시작(설정된 경우)
|
||||
|
||||
- **숫자 모드** (1~6):
|
||||
- 설정된 횟수에 따라 연속 전투를 진행합니다.
|
||||
- 현재 이성이 설정된 횟수를 완료하기에 충분하지 않은 경우(예: 5회만 가능하지만 6회로 설정된 경우), 작업을 바로 종료하고 `남은 이성` 프로세스(설정된 경우)를 시작합니다.
|
||||
- 현재 이성이 설정된 횟수를 완료하기에 충분하지 않은 경우(예: 5회만 가능하지만 6회로 설정된 경우), 작업을 바로 종료합니다.
|
||||
|
||||
- **비활성 모드** (-1):
|
||||
- 게임 내 연속 전투 횟수를 조정하지 않습니다.
|
||||
- 이성이 현재 설정된 횟수를 완료하기에 충분하지 않은 경우 작업을 바로 종료하고 `남은 이성` 프로세스(설정된 경우)를 시작합니다.
|
||||
- 이성이 현재 설정된 횟수를 완료하기에 충분하지 않은 경우 작업을 바로 종료합니다.
|
||||
|
||||
### 지정된 횟수
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ DirectML을 사용하여 GPU를 호출하여 인식 추론을 가속화합니다
|
||||
|
||||
MAA는 시작 매개변수를 통해 구성을 자동으로 전환할 수 있습니다. MAA 프로세스 이름 뒤에 `--config <구성 이름>`을 추가하면 됩니다. 예: `./MAA/MAA.exe --config Official`
|
||||
|
||||
일부 기호는 이스케이프해야 합니다. `Json` 참조하세요. 예를 들어 구성 이름이 `"Official"`인 경우 매개변수는 --config `\"Official\"`가 되어야 합니다
|
||||
일부 기호는 이스케이프해야 합니다. `JSON` 참조하세요. 예를 들어 구성 이름이 `"Official"`인 경우 매개변수는 --config `\"Official\"`가 되어야 합니다
|
||||
|
||||
## 시작 전/후 스크립트
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ JSON 파일은 주석을 지원하지 않으므로, 텍스트 내의 주석은
|
||||
// 특정 오퍼레이터 지정
|
||||
{
|
||||
"name": "重岳", // 오퍼레이터명
|
||||
"skill": 3, // 스킬 번호. 선택 사항, 기본값 1, 범위 [1, 3]
|
||||
"skill": 3, // 스킬 번호. 선택 사항, 기본값 1, 범위 [0, 3]
|
||||
"skill_usage": 2, // 스킬 사용법. 선택 사항, 기본값 0
|
||||
// 0 - 자동 사용 안 함 ("actions" 필드에 의존)
|
||||
// 1 - 쿨타임 찰 때마다 사용 (예: 쏜즈 3스킬, 머틀 1스킬 등)
|
||||
|
||||
@@ -81,10 +81,14 @@ JSON 파일은 주석을 지원하지 않습니다. 본문의 주석은 설명
|
||||
// (예: 이 그룹의 오퍼레이터를 배치해야 할 때, 쏜즈가 있는지 먼저 확인하고 있으면 배치, 없으면 혼을 확인)
|
||||
{
|
||||
"name": "棘刺", // 오퍼레이터 이름
|
||||
"skill": 3,
|
||||
"skill_usage": 1,
|
||||
...
|
||||
},
|
||||
{
|
||||
"name": "号角",
|
||||
"skill": 2,
|
||||
"skill_usage": 1,
|
||||
...
|
||||
}
|
||||
]
|
||||
|
||||
@@ -67,6 +67,20 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"client_type": "Official",
|
||||
"start_game_enabled": true,
|
||||
"account_name": "123****4567"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `CloseDown`
|
||||
게임 종료
|
||||
|
||||
@@ -81,6 +95,18 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"client_type": "Official"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Fight`
|
||||
이성 사용 작전
|
||||
|
||||
@@ -148,7 +174,35 @@ Bilibili 서버: `张三`인 경우 `张三`, `张`, `三` 입력 가능
|
||||
<br>
|
||||
오리지늄 사용 확인 창에서 대기하다가, 현재 1이성이 회복되면 즉시 오리지늄을 사용
|
||||
:::
|
||||
::::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"stage": "1-7",
|
||||
"medicine": 1,
|
||||
"expiring_medicine": 0,
|
||||
"stone": 0,
|
||||
"times": 10,
|
||||
"series": 0,
|
||||
"drops": {
|
||||
"30011": 10
|
||||
},
|
||||
"report_to_penguin": true,
|
||||
"penguin_id": "123456",
|
||||
"report_to_yituliu": true,
|
||||
"yituliu_id": "123456",
|
||||
"server": "CN",
|
||||
"client_type": "Official",
|
||||
"DrGrandet": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
일부 소수 자원 스테이지명도 지원합니다. [통합 예시](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/zh-cn.xaml#L260)를 참고하세요
|
||||
|
||||
- `Recruit`
|
||||
@@ -220,6 +274,36 @@ Yituliu 전송 ID, 기본값 비어 있음. `report_to_yituliu`가 true일 때
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"refresh": true,
|
||||
"select": [5, 4],
|
||||
"confirm": [4, 3],
|
||||
"first_tags": ["高级资深干员"],
|
||||
"extra_tags_mode": 1,
|
||||
"times": 4,
|
||||
"set_time": true,
|
||||
"expedite": false,
|
||||
"expedite_times": 0,
|
||||
"skip_robot": true,
|
||||
"recruitment_time": {
|
||||
"3": 540,
|
||||
"4": 540
|
||||
},
|
||||
"report_to_penguin": false,
|
||||
"penguin_id": "123456",
|
||||
"report_to_yituliu": false,
|
||||
"yituliu_id": "123456",
|
||||
"server": "CN"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Infrast`
|
||||
기반시설 교대
|
||||
|
||||
@@ -283,6 +367,29 @@ Yituliu 전송 ID, 기본값 비어 있음. `report_to_yituliu`가 true일 때
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"mode": 0,
|
||||
"facility": ["Mfg", "Trade", "Reception"],
|
||||
"drones": "PureGold",
|
||||
"threshold": 0.3,
|
||||
"replenish": true,
|
||||
"dorm_notstationed_enabled": false,
|
||||
"dorm_trust_enabled": true,
|
||||
"reception_message_board": true,
|
||||
"reception_clue_exchange": true,
|
||||
"reception_send_clue": true,
|
||||
"filename": "schedules/base.json",
|
||||
"plan_index": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Mall`
|
||||
크레딧 수령 및 상점 구매
|
||||
먼저 `buy_first` 목록 순서대로 구매하고, 그 다음 `blacklist`를 제외하고 왼쪽에서 오른쪽으로 구매하며, 크레딧이 넘칠 경우 블랙리스트를 무시하고 넘치지 않을 때까지 구매
|
||||
@@ -322,6 +429,26 @@ OF-1 플레이 시 사용할 편성 슬롯 번호
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"visit_friends": true,
|
||||
"shopping": true,
|
||||
"buy_first": ["招聘许可", "龙门币"],
|
||||
"blacklist": ["家具零件"],
|
||||
"force_shopping_if_credit_full": false,
|
||||
"only_buy_discount": true,
|
||||
"reserve_max_credit": false,
|
||||
"credit_fight": false,
|
||||
"formation_index": 0
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Award`
|
||||
각종 보상 수령
|
||||
|
||||
@@ -349,6 +476,23 @@ OF-1 플레이 시 사용할 편성 슬롯 번호
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"award": true,
|
||||
"mail": true,
|
||||
"recruit": true,
|
||||
"orundum": false,
|
||||
"mining": true,
|
||||
"specialaccess": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Roguelike`
|
||||
통합 전략 무한 반복
|
||||
|
||||
@@ -388,10 +532,10 @@ OF-1 플레이 시 사용할 편성 슬롯 번호
|
||||
<br>
|
||||
`7` - 심층 조사 보상 파밍, 모드 적응 외엔 모드 0과 동일
|
||||
:::
|
||||
::: field name="squad" type="string" optional default="지휘 분대"
|
||||
::: field name="squad" type="string" optional default="指挥分队"
|
||||
시작 분대명
|
||||
:::
|
||||
::: field name="roles" type="string" optional default="적재적소 활용"
|
||||
::: field name="roles" type="string" optional default="取长补短"
|
||||
시작 모집 조합
|
||||
:::
|
||||
::: field name="core_char" type="string" optional
|
||||
@@ -407,7 +551,7 @@ OF-1 플레이 시 사용할 편성 슬롯 번호
|
||||
탐색 시작 횟수. 도달 시 자동 정지
|
||||
:::
|
||||
::: field name="difficulty" type="number" optional default="0"
|
||||
지정 난이도 등급. **Phantom 제외** 테마에만 적용. 미해금 시 현재 해금된 최고 난이도 선택
|
||||
지정 난이도 등급. 미해금 시 현재 해금된 최고 난이도 선택
|
||||
:::
|
||||
::: field name="stop_at_final_boss" type="boolean" optional default="false"
|
||||
5층 보스 노드 앞에서 정지할지 여부. **Phantom 제외** 테마에만 적용
|
||||
@@ -463,7 +607,9 @@ OF-1 플레이 시 사용할 편성 슬롯 번호
|
||||
<br>
|
||||
`dice`: 주사위 보상, Mizuki 테마 전용
|
||||
<br>
|
||||
`ideas`: 구상 2개 보상, Sarkaz 테마 전용
|
||||
`ideas`: 구상 2개 보상, Sarkaz 테마 전용
|
||||
<br>
|
||||
`ticket`: 티켓 보상, JieGarden 테마 전용
|
||||
:::
|
||||
::: field name="use_foldartal" type="boolean" optional
|
||||
암호문 사용 여부. 모드 5 기본값 `false`, 기타 모드 기본값 `true`. Sami 테마 전용
|
||||
@@ -499,7 +645,59 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
<br>
|
||||
고정 시드 사용
|
||||
:::
|
||||
::::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"theme": "Sami",
|
||||
"mode": 5,
|
||||
"squad": "指挥分队",
|
||||
"roles": "取长补短",
|
||||
"core_char": "塑心",
|
||||
"use_support": false,
|
||||
"use_nonfriend_support": false,
|
||||
"starts_count": 3,
|
||||
"difficulty": 8,
|
||||
"stop_at_final_boss": false,
|
||||
"stop_at_max_level": false,
|
||||
"investment_enabled": true,
|
||||
"investments_count": 2,
|
||||
"stop_when_investment_full": false,
|
||||
"investment_with_more_score": false,
|
||||
"start_with_elite_two": false,
|
||||
"only_start_with_elite_two": false,
|
||||
"refresh_trader_with_dice": false,
|
||||
"first_floor_foldartal": "",
|
||||
"start_foldartal_list": [],
|
||||
"collectible_mode_start_list": {
|
||||
"hot_water": true,
|
||||
"shield": false,
|
||||
"ingot": false,
|
||||
"hope": true,
|
||||
"random": false,
|
||||
"key": false,
|
||||
"dice": false,
|
||||
"ideas": false
|
||||
},
|
||||
"use_foldartal": true,
|
||||
"check_collapsal_paradigms": true,
|
||||
"double_check_collapsal_paradigms": true,
|
||||
"expected_collapsal_paradigms": ["目空一些", "睁眼瞎"],
|
||||
"monthly_squad_auto_iterate": false,
|
||||
"monthly_squad_check_comms": false,
|
||||
"deep_exploration_auto_iterate": false,
|
||||
"collectible_mode_shopping": false,
|
||||
"collectible_mode_squad": "",
|
||||
"start_with_seed": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
붕괴 패러다임 파밍 기능에 대한 자세한 내용은 [통합 전략 보조 프로토콜](./integrated-strategy-schema.md#탐험가의-은빛-서리-끝자락-—-붕괴-패러다임)을 참고하세요.
|
||||
|
||||
- `Copilot`
|
||||
@@ -571,6 +769,32 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
|
||||
작전 JSON은 [자동지휘 프로토콜](./copilot-schema.md)을 참고하세요.
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "copilot/1-7.json",
|
||||
"loop_times": 2,
|
||||
"use_sanity_potion": false,
|
||||
"formation": true,
|
||||
"formation_index": 1,
|
||||
"user_additional": [
|
||||
{
|
||||
"name": "能天使",
|
||||
"skill": 3
|
||||
}
|
||||
],
|
||||
"add_trust": true,
|
||||
"ignore_requirements": false,
|
||||
"support_unit_usage": 2,
|
||||
"support_unit_name": "艾雅法拉"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `SSSCopilot`
|
||||
보안 파견 자동지휘
|
||||
|
||||
@@ -587,18 +811,47 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
::::
|
||||
보안 파견 작전 JSON은 [보안 파견 프로토콜](./sss-schema.md)을 참고하세요.
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "sss/plan.json",
|
||||
"loop_times": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `ParadoxCopilot`
|
||||
패러독스 시뮬레이션 작전 계획 자동 수행
|
||||
|
||||
```json5
|
||||
// Task parameters
|
||||
:::: field-group
|
||||
::: field name="enable" type="boolean" optional default="true"
|
||||
본 작업 활성화 여부.
|
||||
:::
|
||||
::: field name="filename" type="string" required
|
||||
단일 작전 JSON 파일 경로, 절대/상대 경로 모두 가능. 실행 중 설정 불가. 필수, list와 택일.
|
||||
:::
|
||||
::: field name="list" type="array<string>" required
|
||||
작전 JSON 목록, 절대/상대 경로 모두 가능. 실행 중 설정 불가. 필수, filename과 택일.
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": bool, // 해당 작업의 활성화 여부. 기본값은 true
|
||||
"filename": string, // 개별 작업 JSON 파일 경로. 절대 경로 및 상대 경로 모두 가능하며, 실행 중 설정은 지원하지 않음. list와 둘 중 하나를 반드시 선택(필수)
|
||||
"list" : list<string> // 작업 JSON 파일 목록. 절대 경로 및 상대 경로 모두 가능하며, 실행 중 설정은 지원하지 않음. filename과 둘 중 하나를 반드시 선택(필수)
|
||||
"enable": true,
|
||||
"filename": "paradox/exusiai.json",
|
||||
"list": []
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Depot`
|
||||
창고 인식
|
||||
|
||||
@@ -608,6 +861,17 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `OperBox`
|
||||
오퍼레이터 인식
|
||||
|
||||
@@ -617,6 +881,17 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Reclamation`
|
||||
생존 연산
|
||||
|
||||
@@ -638,7 +913,7 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
<br>
|
||||
`1` - 모래 속의 불: 적금 파밍, 연락원에게 물 구매 후 기지에서 주조; 사막 이야기: 자동 아이템 제작 및 로드 반복으로 화폐 파밍
|
||||
:::
|
||||
::: field name="tools_to_craft" type="array<string>" optional default="['荧光棒']"
|
||||
::: field name="tools_to_craft" type="array<string>" optional default="["荧光棒"]"
|
||||
자동 제작 아이템, 부분 문자열 입력 권장
|
||||
:::
|
||||
::: field name="increment_mode" type="number" optional default="0"
|
||||
@@ -653,6 +928,22 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"theme": "Fire",
|
||||
"mode": 1,
|
||||
"tools_to_craft": ["荧光棒", "发电机"],
|
||||
"increment_mode": 0,
|
||||
"num_craft_batches": 12
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Custom`
|
||||
사용자 정의 작업
|
||||
|
||||
@@ -665,6 +956,18 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"task_names": ["StartUp", "Infrast", "Fight"]
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `SingleStep`
|
||||
단일 단계 작업 (현재 전투만 지원)
|
||||
|
||||
@@ -689,6 +992,22 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"type": "copilot",
|
||||
"subtask": "stage",
|
||||
"details": {
|
||||
"stage": "1-7"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `VideoRecognition`
|
||||
영상 인식, 현재 작전(전투) 영상만 지원
|
||||
|
||||
@@ -701,6 +1020,18 @@ Sarkaz 테마, Investment 모드, "연금술 분대" 또는 "지원 분대"일
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "videos/copilot.mp4"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### `AsstSetTaskParams`
|
||||
|
||||
#### 인터페이스 원형
|
||||
|
||||
@@ -5,7 +5,7 @@ icon: devicon-plain:githubactions
|
||||
|
||||
# CI 系统解析
|
||||
|
||||
MAA 借助 Github Action 完成了大量的自动化工作,包括网站的构建,自动更新资源,最终文件的构建与发版等等过程。随着时间的推移,这些 CI 逐渐开始嵌套,部分甚至引向了其他的存储库。本文档旨在为想要对 MAA 的 CI 系统做出改进的各位做一个简要的介绍。
|
||||
MAA 借助 GitHub Action 完成了大量的自动化工作,包括网站的构建,自动更新资源,最终文件的构建与发版等等过程。随着时间的推移,这些 CI 逐渐开始嵌套,部分甚至引向了其他的存储库。本文档旨在为想要对 MAA 的 CI 系统做出改进的各位做一个简要的介绍。
|
||||
|
||||
阅读本文之前,最好对 MAA 的项目结构以及组成有一个基本的概念。
|
||||
|
||||
@@ -28,7 +28,7 @@ MAA 借助 Github Action 完成了大量的自动化工作,包括网站的构
|
||||
|
||||
此外,我们还通过 [pre-commit.ci](https://pre-commit.ci/) 实现了代码的自动格式化和图片资源的自动优化,它在发起 PR 后会自动执行,一般无需特别在意。
|
||||
|
||||
## Github Action 部分
|
||||
## GitHub Action 部分
|
||||
|
||||
### 代码测试
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ icon: iconoir:developer
|
||||
|
||||
## 我不懂编程,只是想改一点点 JSON 文件/文档等,要怎么操作?
|
||||
|
||||
欢迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (纯网页端操作 Github.com)
|
||||
欢迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (纯网页端操作 GitHub.com)
|
||||
|
||||
## 我只想简单修改几行代码,但配置环境太麻烦,纯网页编辑又很难用,怎么办?
|
||||
|
||||
@@ -64,8 +64,7 @@ icon: iconoir:developer
|
||||
6. 执行 cmake 项目配置
|
||||
|
||||
```cmd
|
||||
mkdir -p build
|
||||
cmake -G "Visual Studio 18 2026" -B build -DBUILD_WPF_GUI=ON -DBUILD_DEBUG_DEMO=ON
|
||||
cmake --preset windows-x64
|
||||
```
|
||||
|
||||
7. 双击打开 `build/MAA.slnx` 文件,Visual Studio 会自动加载整个项目。
|
||||
@@ -74,6 +73,10 @@ icon: iconoir:developer
|
||||
- 右键 `MaaWpfGui` - 设为启动项目
|
||||
- 按 F5 运行
|
||||
|
||||
::: tip
|
||||
若需调试 Win32Controller(Windows 窗口控制)相关功能,需要自行从 [MaaFramework Releases](https://github.com/MaaXYZ/MaaFramework/releases) 下载对应平台的压缩包,将 `bin` 目录中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目录下(如 `build/bin/Debug`)。欢迎 PR 一个自动下载脚本!
|
||||
:::
|
||||
|
||||
9. 到这里,你就可以愉快地 ~~瞎 JB 改~~ 发电了
|
||||
10. 开发过程中,每一定数量,记得提交一个 Commit, 别忘了写上 Message
|
||||
假如你不熟悉 git 的使用,你可能想要新建一个分支进行更改,而不是直接提交在 `dev` 上
|
||||
@@ -123,6 +126,42 @@ icon: iconoir:developer
|
||||
在打开 VS 之后,和 Git 有关的操作可以不用命令行工具,直接使用 VS 自带的“Git 更改”即可
|
||||
:::
|
||||
|
||||
## 使用 VS Code 进行开发(可选)
|
||||
|
||||
::: warning
|
||||
**推荐优先使用 Visual Studio 进行开发。** MAA 项目主要基于 Visual Studio 构建,上述完整环境配置流程已涵盖所有开发需求,开箱即用体验最佳。VSCode 方案仅作为备选,适合已经熟悉 VS Code + CMake + clangd 工作流的开发者,配置门槛相对较高。
|
||||
:::
|
||||
|
||||
如果你偏好使用 VSCode,可以配合 CMake、clangd 等扩展获得代码补全、跳转和调试能力。在完成前述 1–6 步(克隆、依赖、CMake 配置)后,可按以下步骤配置:
|
||||
|
||||
### 推荐扩展
|
||||
|
||||
在 VS Code 扩展市场安装:
|
||||
|
||||
| 扩展 | 作用 |
|
||||
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
||||
| [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) | CMake 配置、构建、调试集成 |
|
||||
| [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) | C++ 智能提示、代码跳转、诊断(基于 LSP) |
|
||||
| [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) | 调试 C++ 程序(与 CMake Tools 或 launch.json 配合) |
|
||||
|
||||
::: tip
|
||||
使用 clangd 时,建议禁用 C/C++ 扩展的 IntelliSense(`C_Cpp.intelliSenseEngine` 设为 `disabled`),避免与 clangd 冲突。
|
||||
:::
|
||||
|
||||
### 配置步骤
|
||||
|
||||
1. 用 VS Code 打开项目根目录
|
||||
2. 使用 **CMake Tools**:
|
||||
- 状态栏选择 Configure Preset(如 `windows-x64`、`linux-x64` 等)
|
||||
- 选择 Build Preset,执行配置与构建
|
||||
3. 使用 **clangd**:在 Windows 上配合 MSVC 使用时无需 `compile_commands.json` 即可正常开发。Linux/macOS 下预设已开启 `CMAKE_EXPORT_COMPILE_COMMANDS`,clangd 会自动使用 `build/compile_commands.json`
|
||||
4. **调试**:项目已包含 `.vscode/launch.json`,可直接启动 MaaWpfGui 或 Debug Demo 进行调试
|
||||
|
||||
### 快速构建与调试
|
||||
|
||||
- **构建**:`Ctrl+Shift+B` 或通过 CMake Tools 状态栏
|
||||
- **调试**:F5 或运行与调试面板选择对应配置
|
||||
|
||||
## MAA 的文件格式化要求
|
||||
|
||||
MAA 使用一系列的格式化工具来保证仓库中的代码和资源文件美观统一,以便于维护和阅读
|
||||
@@ -134,7 +173,7 @@ MAA 使用一系列的格式化工具来保证仓库中的代码和资源文件
|
||||
| 文件类型 | 格式化工具 |
|
||||
| --------- | --------------------------------------------------------------- |
|
||||
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||
| Json/Yaml | [Prettier](https://prettier.io/) |
|
||||
| JSON/YAML | [Prettier](https://prettier.io/) |
|
||||
| Markdown | [markdownlint](https://github.com/DavidAnson/markdownlint-cli2) |
|
||||
|
||||
### 利用 Pre-commit Hooks 自动进行代码格式化
|
||||
|
||||
@@ -29,7 +29,7 @@ icon: jam:write-f
|
||||
:::
|
||||
```
|
||||
|
||||
或是使用 Github 风格语法
|
||||
或是使用 GitHub 风格语法
|
||||
|
||||
```markdown
|
||||
> [!容器类型]
|
||||
|
||||
@@ -164,4 +164,4 @@ amplified roi: 426, 272, 177, 201
|
||||
|
||||
## 提交你的修改
|
||||
|
||||
请参考 [Github Pull Request 指南](./pr-tutorial.md)
|
||||
请参考 [GitHub Pull Request 指南](./pr-tutorial.md)
|
||||
|
||||
@@ -9,7 +9,7 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
::: warning
|
||||
本教程中对很多概念进行了简化,为了让更多朋友能实际用起来,甚至有一些很不优雅~~但是简单~~的操作,还有一些不那么正确的解释,还请大佬们轻喷。
|
||||
若您有一定的 git 使用经验及编程基础,~~那你还看个 🔨~~,可以看稍微进阶一点的教程 [Github Pull Request 流程简述](./development.md)
|
||||
若您有一定的 git 使用经验及编程基础,~~那你还看个 🔨~~,可以看稍微进阶一点的教程 [GitHub Pull Request 流程简述](./development.md)
|
||||
:::
|
||||
|
||||
## 基本概念及名词解释
|
||||
|
||||
@@ -3,7 +3,7 @@ order: 8
|
||||
icon: iconoir:code-brackets
|
||||
---
|
||||
|
||||
# 专用 VSCode 插件教程
|
||||
# 专用 VS Code 插件教程
|
||||
|
||||
该插件针对 MaaAssistantArknights/MaaFramework 提供了一系列方便开发的能力,包括但不限于以下功能:
|
||||
|
||||
@@ -14,7 +14,7 @@ icon: iconoir:code-brackets
|
||||
|
||||
## 安装
|
||||
|
||||
推荐直接在 VSCode 的插件列表中搜索 `Maa` 来安装
|
||||
推荐直接在 VS Code 的插件列表中搜索 `Maa` 来安装
|
||||
|
||||
::: tip
|
||||
首次使用时, 插件会自动下载预设版本的资源
|
||||
@@ -90,9 +90,9 @@ icon: iconoir:code-brackets
|
||||
|
||||
### 截图裁剪 / 快速识别
|
||||
|
||||
在 VSCode 的命令面板中搜索执行 `Maa: 打开截图工具`, 可打开 `截图 / 裁剪` 面板.
|
||||
在 VS Code 的命令面板中搜索执行 `Maa: 打开截图工具`, 可打开 `截图 / 裁剪` 面板.
|
||||
|
||||
> 使用 `Ctrl+Shift+P` (MacOS 上则是 `Command+Shift+P`) 呼出命令面板
|
||||
> 使用 `Ctrl+Shift+P` (macOS 上则是 `Command+Shift+P`) 呼出命令面板
|
||||
|
||||
- 选择并连接控制器后, 可使用 `截图` 按钮直接获取截图
|
||||
- 可使用 `上传` 按钮手动上传
|
||||
@@ -114,11 +114,11 @@ icon: iconoir:code-brackets
|
||||
|
||||
#### MaaFramework日志
|
||||
|
||||
在 VSCode 的命令面板中搜索执行 `Maa: 打开maa日志`, 可查看调试期间产生的`maa.log`日志.
|
||||
在 VS Code 的命令面板中搜索执行 `Maa: 打开maa日志`, 可查看调试期间产生的`maa.log`日志.
|
||||
|
||||
#### Maa Pipeline Support扩展日志
|
||||
|
||||
在 VSCode 的命令面板中搜索执行 `Maa: 打开插件日志`, 可查看调试期间产生的`mse.log`日志.
|
||||
在 VS Code 的命令面板中搜索执行 `Maa: 打开插件日志`, 可查看调试期间产生的`mse.log`日志.
|
||||
|
||||
### 底部状态栏
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@ address = "127.0.0.1:7777" # 如果你需要的话,你可以覆盖预设的地
|
||||
|
||||
#### 特殊预设
|
||||
|
||||
目前预配置了两种预设,为 `PlayCover (MacOS)`, `Waydroid (Linux)`
|
||||
目前预配置了两种预设,为 `PlayCover (macOS)`, `Waydroid (Linux)`
|
||||
|
||||
- `PlayCover`用于在 macOS 上连接直接通过 `PlayCover` 原生运行的游戏客户端。这种情况下不需要指定 `adb_path` 且 `address` 不是 `adb` 连接的地址而是 `PlayTools` 的地址,具体使用参见 [PlayCover 支持文档][playcover-doc].
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
|
||||
:::
|
||||
|
||||
稳定版打包至 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) 中,使用 `nixpkgs` 中的 Rust 工具链;每夜构建位于 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix) 中,使用 Beta channel 的 Rust 工具链,由 Github Actions 每日自动更新和构建验证。
|
||||
稳定版打包至 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) 中,使用 `nixpkgs` 中的 Rust 工具链;每夜构建位于 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix) 中,使用 Beta channel 的 Rust 工具链,由 GitHub Actions 每日自动更新和构建验证。
|
||||
|
||||
#### Homebrew
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ icon: basil:apple-solid
|
||||
|
||||
### ✅ [PlayCover](https://playcover.io)(原生运行最流畅 🚀)
|
||||
|
||||
试验性支持,遇到问题请多多提 Issue,并在标题中提及 `MacOS`。
|
||||
试验性支持,遇到问题请多多提 Issue,并在标题中提及 `macOS`。
|
||||
|
||||
注意:由于 `MacOS` 本身机制的问题,将游戏窗口最小化、台前调度状态下切换到别的窗口、将窗口移动到别的桌面/屏幕之后,截图会出现问题,导致无法正确运行。相关 Issue [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
|
||||
注意:由于 `macOS` 本身机制的问题,将游戏窗口最小化、台前调度状态下切换到别的窗口、将窗口移动到别的桌面/屏幕之后,截图会出现问题,导致无法正确运行。相关 Issue [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
|
||||
|
||||
0. 要求:MAA 版本 v4.13.0-rc.1 以上
|
||||
|
||||
|
||||
@@ -49,25 +49,9 @@ winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /nore
|
||||
|
||||
对于 Windows N/KN(欧洲/韩国),还需安装[媒体功能包](https://support.microsoft.com/zh-cn/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。
|
||||
|
||||
#### Windows 7
|
||||
#### Windows 7 / 8 / 8.1
|
||||
|
||||
.NET 10 不支持 Windows 7 / 8 / 8.1 系统<sup>[源](https://github.com/dotnet/core/issues/7556)</sup>,所以 MAA 也同样不再支持。最后一个可用的 .NET 8 版本为 [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7);最后一个可用的 .NET 4.8 版本为 [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8)。尚未确定自行编译的可行性。
|
||||
|
||||
对于 Windows 7,在安装上文提到的两个运行库之前,还需检查以下补丁是否已安装:
|
||||
|
||||
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-cn/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
|
||||
2. SHA-2 代码签名补丁:
|
||||
- KB4474419:[下载链接 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[下载链接 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
|
||||
- KB4490628:[下载链接 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[下载链接 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):[下载链接 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)、[下载链接 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
|
||||
|
||||
##### .NET 8 应用在 Windows 7 上运行异常的缓解措施 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
|
||||
在 Windows 7 上运行 .NET 8 应用时,会出现内存占用异常的问题,请参阅下文实施缓解措施。Windows 8/8.1 未经测试,若存在相同问题,请顺手发个 Issue 提醒我们补充文档。
|
||||
|
||||
1. 打开 `计算机`,右键空白处,点击属性,点击左侧 `高级系统设置`,点击 `环境变量`。
|
||||
2. 新建一个系统变量,变量名 `DOTNET_EnableWriteXorExecute`,变量值 `0`。
|
||||
3. 重启电脑。
|
||||
.NET 10 不支持 Windows 7 / 8 / 8.1 系统<sup>[源](https://github.com/dotnet/core/issues/7556)</sup>,所以 MAA 也同样不再支持。
|
||||
|
||||
## 连接错误
|
||||
|
||||
|
||||
@@ -7,18 +7,18 @@ icon: hugeicons:brain-02
|
||||
|
||||
## 常规设置
|
||||
|
||||
- `药剂恢复` + `源石恢复` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止理智作战。
|
||||
- `药剂恢复` 指定补充几瓶理智(可能一次吃多瓶药)。
|
||||
- `源石恢复` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。
|
||||
- `使用药剂` + `使用源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止理智作战。
|
||||
- `使用药剂` 指定补充几瓶理智(可能一次吃多瓶药)。
|
||||
- `使用源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。
|
||||
- `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。
|
||||
- `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。
|
||||
|
||||
- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。
|
||||
- `源石恢复` 只会在 `药剂恢复` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `源石恢复` 之后,MAA 会将 `药剂恢复` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `源石恢复` 判断。
|
||||
- `使用源石` 只会在 `使用药剂` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `使用源石` 之后,MAA 会将 `使用药剂` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `使用源石` 判断。
|
||||
|
||||
::: details 例子
|
||||
|
||||
| 药剂恢复 | 源石恢复 | 指定次数 | 指定材料 | 结果 |
|
||||
| 使用药剂 | 使用源石 | 指定次数 | 指定材料 | 结果 |
|
||||
| :------: | :------: | :------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| | | | | 刷完现有理智即结束。 |
|
||||
| 2 | | | | 先刷完现有理智,然后吃一次理智药,一共吃 `2` 次,刷完理智后结束。 |
|
||||
@@ -51,7 +51,7 @@ icon: hugeicons:brain-02
|
||||
- 龙门市区:LungmenDowntown@Annihilation
|
||||
|
||||
- 别传中的 `OF-1` / `OF-F3` / `GT-5`。
|
||||
- 当期 SS 活动 后三关。在自动访问 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。
|
||||
- 当期 SS 活动 后三关。在自动访问 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json) 下载更新后会在界面下方显示。
|
||||
- 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。
|
||||
|
||||
::: details 示例画面
|
||||
@@ -70,22 +70,11 @@ icon: hugeicons:brain-02
|
||||
备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。
|
||||
这是一个类似于日程表的功能,并不能当做关卡选择任务失败时的备用关卡。
|
||||
|
||||
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. 若关卡选择为 `剿灭模式`,则:
|
||||
- 不会因为剿灭的结果影响其余备选关卡的选择逻辑,即使剿灭出错,理智作战任务也不会出错。
|
||||
- 剩余的备选关卡只会继承 `药剂恢复` 和 `代理倍率` 的设置,不受 `源石恢复`、`指定次数`、`指定材料` 的控制。
|
||||
例子:关卡备选添加了 `龙门币-6/5`、`1-7` 和 `经验-6/5`:
|
||||
|
||||
### 剩余理智
|
||||
|
||||
在 `理智作战` 任务结束后启动,不受 `药剂恢复`、`源石恢复`、`指定次数`、`指定材料`、`代理倍率` 的控制,刷完当前剩余理智即结束。
|
||||
|
||||
- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。
|
||||
- 亦适用于在代理倍率设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。
|
||||
- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。
|
||||
- 如果剩余理智选择关卡为未开放关卡,则理智作战任务出错。
|
||||
- 如果当天开放 `龙门币-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` 战斗。
|
||||
|
||||
### 代理倍率
|
||||
|
||||
@@ -93,15 +82,14 @@ MAA 会根据用户设定的代理倍率进行战斗:
|
||||
|
||||
- **AUTO模式**(0):
|
||||
- 自动识别关卡最大代理倍率, 保持最大代理倍率且理智不溢出
|
||||
- 完成后进入`剩余理智`流程(若设置)
|
||||
|
||||
- **数值模式**(1~6):
|
||||
- 按设定倍率执行代理
|
||||
- 若当前理智不足完成设定次数(如仅够5次但设为6次), 会直接结束任务并进入`剩余理智`流程(若设置)
|
||||
- 若当前理智不足完成设定次数(如仅够5次但设为6次), 会直接结束任务
|
||||
|
||||
- **禁用模式**(-1):
|
||||
- 不调整游戏内代理倍率设置
|
||||
- 若理智不足完成游戏内当前设定次数, 直接结束任务进入`剩余理智`流程(若设置)
|
||||
- 若理智不足完成游戏内当前设定次数, 直接结束任务
|
||||
|
||||
### 指定次数
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ icon: ph:sword-bold
|
||||
// 指定干员
|
||||
{
|
||||
"name": "重岳", // 干员名
|
||||
"skill": 3, // 技能序号。可选,默认为 1,取值范围 [1, 3]
|
||||
"skill": 3, // 技能序号。可选,默认为 1,取值范围 [0, 3]
|
||||
"skill_usage": 2, // 技能用法。可选,默认为 0
|
||||
// 0 - 不自动使用(依赖 "actions" 字段)
|
||||
// 1 - 好了就用,有多少次用多少次(例如干员 棘刺 3 技能、桃金娘 1 技能等)
|
||||
|
||||
@@ -67,6 +67,20 @@ B服:`张三`,可输入 `张三`、`张`、`三`
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"client_type": "Official",
|
||||
"start_game_enabled": true,
|
||||
"account_name": "123****4567"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `CloseDown`
|
||||
关闭游戏
|
||||
|
||||
@@ -81,6 +95,18 @@ B服:`张三`,可输入 `张三`、`张`、`三`
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"client_type": "Official"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Fight`
|
||||
理智作战
|
||||
|
||||
@@ -89,67 +115,106 @@ B服:`张三`,可输入 `张三`、`张`、`三`
|
||||
是否启用本任务。
|
||||
:::
|
||||
::: field name="stage" type="string" optional
|
||||
关卡名,默认为空,识别当前/上次的关卡。不支持运行中设置。
|
||||
<br>
|
||||
支持全部主线关卡,如 `"1-7"`、`"S3-2"`等。
|
||||
<br>
|
||||
可在关卡结尾输入`Normal`/`Hard`表示需要切换标准与磨难难度。
|
||||
<br>
|
||||
剿灭作战,必须输入 `"Annihilation"`。
|
||||
<br>
|
||||
当期 SS 活动 后三关,必须输入完整关卡编号。
|
||||
:::
|
||||
::: field name="medicine" type="number" optional default="0"
|
||||
最大使用理智药数量。
|
||||
:::
|
||||
::: field name="expiring_medicine" type="number" optional default="0"
|
||||
最大使用 48 小时内过期理智药数量。
|
||||
:::
|
||||
::: field name="stone" type="number" optional default="0"
|
||||
最大吃石头数量。
|
||||
:::
|
||||
::: field name="times" type="number" optional default="2147483647"
|
||||
战斗次数。
|
||||
:::
|
||||
::: field name="series" type="number" optional
|
||||
连战次数, -1~6。
|
||||
<br>
|
||||
`-1` 为禁用切换。
|
||||
<br>
|
||||
`0` 为自动切换为当前可用的最大次数, 如当前理智不够6次, 则选择最低可用次数。
|
||||
<br>
|
||||
`1~6` 为指定连战次数。
|
||||
:::
|
||||
::: field name="drops" type="object" optional
|
||||
指定掉落数量,默认不指定。key 为 item_id, value 为数量。key 可参考 `resource/item_index.json` 文件。
|
||||
<br>
|
||||
例如: `{ "30011": 10, "30062": 5 }`
|
||||
<br>
|
||||
以上全部是或的关系,即任一达到即停止任务。
|
||||
:::
|
||||
::: field name="report_to_penguin" type="boolean" optional default="false"
|
||||
是否汇报企鹅数据。
|
||||
:::
|
||||
::: field name="penguin_id" type="string" optional
|
||||
企鹅数据汇报 id, 默认为空。仅在 `report_to_penguin` 为 true 时有效。
|
||||
:::
|
||||
::: field name="server" type="string" optional default="CN"
|
||||
服务器,会影响掉落识别及上传。
|
||||
<br>
|
||||
选项:`CN` | `US` | `JP` | `KR`
|
||||
:::
|
||||
::: field name="client_type" type="string" optional
|
||||
客户端版本,默认为空。用于游戏崩溃时重启并连回去继续刷,若为空则不启用该功能。
|
||||
<br>
|
||||
选项:`Official` | `Bilibili` | `txwy` | `YoStarEN` | `YoStarJP` | `YoStarKR`
|
||||
:::
|
||||
::: field name="DrGrandet" type="boolean" optional default="false"
|
||||
节省理智碎石模式,仅在可能产生碎石效果时生效。
|
||||
<br>
|
||||
在碎石确认界面等待,直到当前的 1 点理智恢复完成后再立刻碎石。
|
||||
:::
|
||||
::::
|
||||
另支持少部分资源关卡名请参考[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/zh-cn.xaml#L260)
|
||||
关卡名,默认为空,识别当前/上次的关卡。不支持运行中设置。
|
||||
目前支持导航的关卡有:
|
||||
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。
|
||||
- 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。
|
||||
- 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。
|
||||
- 剿灭模式支持以下传入值,必须使用对应的 Value:
|
||||
- 当期剿灭:Annihilation
|
||||
- 切尔诺伯格:Chernobog@Annihilation
|
||||
- 龙门外环:LungmenOutskirts@Annihilation
|
||||
- 龙门市区:LungmenDowntown@Annihilation
|
||||
- 别传中的 OF-1 / OF-F3 / GT-5。
|
||||
- 当期 SS 活动 后三关。可访问 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json) 获取支持的关卡列表。需额外加载 [tasks.json](https://api.maa.plus/MaaAssistantArknights/api/resource/tasks.json) 文件中的活动关卡导航。
|
||||
- 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。
|
||||
:::
|
||||
::: field name="medicine" type="number" optional default="0"
|
||||
最大使用理智药数量。
|
||||
:::
|
||||
::: field name="expiring_medicine" type="number" optional default="0"
|
||||
最大使用 48 小时内过期理智药数量。
|
||||
:::
|
||||
::: field name="stone" type="number" optional default="0"
|
||||
最大吃石头数量。
|
||||
:::
|
||||
::: field name="times" type="number" optional default="2147483647"
|
||||
战斗次数。
|
||||
:::
|
||||
::: field name="series" type="number" optional
|
||||
连战次数, -1~6。
|
||||
<br>
|
||||
`-1` 为禁用切换。
|
||||
<br>
|
||||
`0` 为自动切换为当前可用的最大次数, 如当前理智不够6次, 则选择最低可用次数。
|
||||
<br>
|
||||
`1~6` 为指定连战次数。
|
||||
:::
|
||||
::: field name="drops" type="object" optional
|
||||
指定掉落数量,默认不指定。key 为 item_id, value 为数量。key 可参考 `resource/item_index.json` 文件。
|
||||
<br>
|
||||
例如: `{ "30011": 10, "30062": 5 }`
|
||||
<br>
|
||||
以上全部是或的关系,即任一达到即停止任务。
|
||||
:::
|
||||
::: field name="report_to_penguin" type="boolean" optional default="false"
|
||||
是否汇报企鹅数据。
|
||||
:::
|
||||
::: field name="penguin_id" type="string" optional
|
||||
企鹅数据汇报 id, 默认为空。仅在 `report_to_penguin` 为 true 时有效。
|
||||
:::
|
||||
:::
|
||||
::: field name="report_to_yituliu" type="boolean" optional default="false"
|
||||
是否汇报一图流。
|
||||
:::
|
||||
::: field name="yituliu_id" type="string" optional
|
||||
一图流汇报 id, 默认为空。仅在 `report_to_yituliu` 为 true 时有效。
|
||||
:::
|
||||
::: field name="server" type="string" optional default="CN"
|
||||
服务器,会影响掉落识别及上传。
|
||||
<br>
|
||||
选项:`CN` | `US` | `JP` | `KR`
|
||||
:::
|
||||
::: field name="client_type" type="string" optional
|
||||
客户端版本,默认为空。用于游戏崩溃时重启并连回去继续刷,若为空则不启用该功能。
|
||||
<br>
|
||||
选项:`Official` | `Bilibili` | `txwy` | `YoStarEN` | `YoStarJP` | `YoStarKR`
|
||||
:::
|
||||
::: field name="DrGrandet" type="boolean" optional default="false"
|
||||
节省理智碎石模式,仅在可能产生碎石效果时生效。
|
||||
<br>
|
||||
在碎石确认界面等待,直到当前的 1 点理智恢复完成后再立刻碎石。
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"stage": "1-7",
|
||||
"medicine": 1,
|
||||
"expiring_medicine": 0,
|
||||
"stone": 0,
|
||||
"times": 10,
|
||||
"series": 0,
|
||||
"drops": {
|
||||
"30011": 10
|
||||
},
|
||||
"report_to_penguin": true,
|
||||
"penguin_id": "123456",
|
||||
"report_to_yituliu": true,
|
||||
"yituliu_id": "123456",
|
||||
"server": "CN",
|
||||
"client_type": "Official",
|
||||
"DrGrandet": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Recruit`
|
||||
公开招募
|
||||
@@ -220,6 +285,36 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"refresh": true,
|
||||
"select": [5, 4],
|
||||
"confirm": [4, 3],
|
||||
"first_tags": ["高级资深干员"],
|
||||
"extra_tags_mode": 1,
|
||||
"times": 4,
|
||||
"set_time": true,
|
||||
"expedite": false,
|
||||
"expedite_times": 0,
|
||||
"skip_robot": true,
|
||||
"recruitment_time": {
|
||||
"3": 540,
|
||||
"4": 540
|
||||
},
|
||||
"report_to_penguin": false,
|
||||
"penguin_id": "123456",
|
||||
"report_to_yituliu": false,
|
||||
"yituliu_id": "123456",
|
||||
"server": "CN"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Infrast`
|
||||
基建换班
|
||||
|
||||
@@ -283,6 +378,29 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"mode": 0,
|
||||
"facility": ["Mfg", "Trade", "Reception"],
|
||||
"drones": "PureGold",
|
||||
"threshold": 0.3,
|
||||
"replenish": true,
|
||||
"dorm_notstationed_enabled": false,
|
||||
"dorm_trust_enabled": true,
|
||||
"reception_message_board": true,
|
||||
"reception_clue_exchange": true,
|
||||
"reception_send_clue": true,
|
||||
"filename": "schedules/base.json",
|
||||
"plan_index": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Mall`
|
||||
领取信用及商店购物。
|
||||
会先有序的按 `buy_first` 购买一遍,再从左到右并避开 `blacklist` 购买第二遍,在信用溢出时则会无视黑名单从左到右购买第三遍直到不再溢出
|
||||
@@ -322,6 +440,26 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"visit_friends": true,
|
||||
"shopping": true,
|
||||
"buy_first": ["招聘许可", "龙门币"],
|
||||
"blacklist": ["家具零件"],
|
||||
"force_shopping_if_credit_full": false,
|
||||
"only_buy_discount": true,
|
||||
"reserve_max_credit": false,
|
||||
"credit_fight": false,
|
||||
"formation_index": 0
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Award`
|
||||
领取各种奖励
|
||||
|
||||
@@ -349,6 +487,23 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"award": true,
|
||||
"mail": true,
|
||||
"recruit": true,
|
||||
"orundum": false,
|
||||
"mining": true,
|
||||
"specialaccess": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Roguelike`
|
||||
无限刷肉鸽
|
||||
|
||||
@@ -367,7 +522,7 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
<br>
|
||||
`Sarkaz` - 萨卡兹的无终奇语
|
||||
<br>
|
||||
`JieGarden` - 界园
|
||||
`JieGarden` - 岁的界园志异
|
||||
:::
|
||||
::: field name="mode" type="number" optional default="0"
|
||||
模式。
|
||||
@@ -407,7 +562,7 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
开始探索的次数。达到后自动停止任务。
|
||||
:::
|
||||
::: field name="difficulty" type="number" optional default="0"
|
||||
指定难度等级。仅适用于**除 Phantom 以外**的主题。若未解锁难度,则会选择当前已解锁的最高难度。
|
||||
指定难度等级。若未解锁难度,则会选择当前已解锁的最高难度。
|
||||
:::
|
||||
::: field name="stop_at_final_boss" type="boolean" optional default="false"
|
||||
是否在第 5 层险路恶敌节点前停止任务。仅适用于**除 Phantom 以外**的主题。
|
||||
@@ -464,6 +619,8 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
`dice`: 骰子奖励,仅在 Mizuki 主题时有效。
|
||||
<br>
|
||||
`ideas`: 2 构想奖励,仅在 Sarkaz 主题时有效。
|
||||
<br>
|
||||
`ticket`: 票券奖励,仅在 JieGarden 主题时有效。
|
||||
:::
|
||||
::: field name="use_foldartal" type="boolean" optional
|
||||
是否使用密文板。模式 5 下默认值 `false`,其他模式下默认值 `true`。仅适用于 Sami 主题。
|
||||
@@ -499,7 +656,59 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
<br>
|
||||
使用固定种子。
|
||||
:::
|
||||
::::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"theme": "Sami",
|
||||
"mode": 5,
|
||||
"squad": "指挥分队",
|
||||
"roles": "取长补短",
|
||||
"core_char": "塑心",
|
||||
"use_support": false,
|
||||
"use_nonfriend_support": false,
|
||||
"starts_count": 3,
|
||||
"difficulty": 8,
|
||||
"stop_at_final_boss": false,
|
||||
"stop_at_max_level": false,
|
||||
"investment_enabled": true,
|
||||
"investments_count": 2,
|
||||
"stop_when_investment_full": false,
|
||||
"investment_with_more_score": false,
|
||||
"start_with_elite_two": false,
|
||||
"only_start_with_elite_two": false,
|
||||
"refresh_trader_with_dice": false,
|
||||
"first_floor_foldartal": "",
|
||||
"start_foldartal_list": [],
|
||||
"collectible_mode_start_list": {
|
||||
"hot_water": true,
|
||||
"shield": false,
|
||||
"ingot": false,
|
||||
"hope": true,
|
||||
"random": false,
|
||||
"key": false,
|
||||
"dice": false,
|
||||
"ideas": false
|
||||
},
|
||||
"use_foldartal": true,
|
||||
"check_collapsal_paradigms": true,
|
||||
"double_check_collapsal_paradigms": true,
|
||||
"expected_collapsal_paradigms": ["目空一些", "睁眼瞎"],
|
||||
"monthly_squad_auto_iterate": false,
|
||||
"monthly_squad_check_comms": false,
|
||||
"deep_exploration_auto_iterate": false,
|
||||
"collectible_mode_shopping": false,
|
||||
"collectible_mode_squad": "",
|
||||
"start_with_seed": false
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
刷坍缩范式功能具体请参考 [肉鸽辅助协议](./integrated-strategy-schema.md#萨米肉鸽——坍缩范式)
|
||||
|
||||
- `Copilot`
|
||||
@@ -571,6 +780,32 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
|
||||
作业 JSON 请参考 [战斗流程协议](./copilot-schema.md)
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "copilot/1-7.json",
|
||||
"loop_times": 2,
|
||||
"use_sanity_potion": false,
|
||||
"formation": true,
|
||||
"formation_index": 1,
|
||||
"user_additional": [
|
||||
{
|
||||
"name": "能天使",
|
||||
"skill": 3
|
||||
}
|
||||
],
|
||||
"add_trust": true,
|
||||
"ignore_requirements": false,
|
||||
"support_unit_usage": 2,
|
||||
"support_unit_name": "艾雅法拉"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `SSSCopilot`
|
||||
自动抄保全作业
|
||||
|
||||
@@ -587,18 +822,47 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
::::
|
||||
保全作业 JSON 请参考 [保全派驻协议](./sss-schema.md)
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "sss/plan.json",
|
||||
"loop_times": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `ParadoxCopilot`
|
||||
自动抄悖论模拟作业
|
||||
|
||||
```json5
|
||||
// Task parameters
|
||||
:::: field-group
|
||||
::: field name="enable" type="boolean" optional default="true"
|
||||
是否启用本任务。
|
||||
:::
|
||||
::: field name="filename" type="string" required
|
||||
单个作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置。必选,与 list 二选一。
|
||||
:::
|
||||
::: field name="list" type="array<string>" required
|
||||
作业 JSON 列表,绝对、相对路径均可。不支持运行期设置。必选,与 filename 二选一。
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": bool, // 是否启用本任务。默认为 true
|
||||
"filename": string, // 单个作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置。必选,与 list 二选一
|
||||
"list" : list<string> // 作业 JSON 列表,绝对、相对路径均可。不支持运行期设置。必选,与 filename 二选一
|
||||
"enable": true,
|
||||
"filename": "paradox/exusiai.json",
|
||||
"list": []
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Depot`
|
||||
仓库识别
|
||||
|
||||
@@ -608,6 +872,17 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `OperBox`
|
||||
干员 box 识别
|
||||
|
||||
@@ -617,6 +892,17 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Reclamation`
|
||||
生息演算
|
||||
|
||||
@@ -638,7 +924,7 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
<br>
|
||||
`1` - 沙中之火:刷赤金,联络员买水后基地锻造;沙洲遗闻:自动制造物品并读档刷货币。
|
||||
:::
|
||||
::: field name="tools_to_craft" type="array<string>" optional default="['荧光棒']"
|
||||
::: field name="tools_to_craft" type="array<string>" optional default="["荧光棒"]"
|
||||
自动制造的物品,建议填写子串。
|
||||
:::
|
||||
::: field name="increment_mode" type="number" optional default="0"
|
||||
@@ -653,6 +939,22 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"theme": "Fire",
|
||||
"mode": 1,
|
||||
"tools_to_craft": ["荧光棒", "发电机"],
|
||||
"increment_mode": 0,
|
||||
"num_craft_batches": 12
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `Custom`
|
||||
自定义任务
|
||||
|
||||
@@ -665,6 +967,18 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"task_names": ["StartUp", "Infrast", "Fight"]
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `SingleStep`
|
||||
单步任务(目前仅支持战斗)
|
||||
|
||||
@@ -689,6 +1003,22 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"type": "copilot",
|
||||
"subtask": "stage",
|
||||
"details": {
|
||||
"stage": "1-7"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- `VideoRecognition`
|
||||
视频识别,目前仅支持作业(作战)视频
|
||||
|
||||
@@ -701,6 +1031,18 @@ Tag 等级(大于等于 3)和对应的希望招募时限,单位为分钟
|
||||
:::
|
||||
::::
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"enable": true,
|
||||
"filename": "videos/copilot.mp4"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### `AsstSetTaskParams`
|
||||
|
||||
#### 接口原型
|
||||
|
||||
@@ -23,7 +23,7 @@ MAA 会以 1 秒的间隔持续轮询这个端点,尝试获取他要执行的
|
||||
|
||||
被控 MAA 需要将该端点填写到 MAA 配置的`获取任务端点`文本框中。
|
||||
|
||||
该端点必需能够接受一个 `Content-Type=application/json` 的 POST 请求,并该请求必须可以接受下面这个 Json 作为请求的 content:
|
||||
该端点必需能够接受一个 `Content-Type=application/json` 的 POST 请求,并该请求必须可以接受下面这个 JSON 作为请求的 content:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -33,7 +33,7 @@ MAA 会以 1 秒的间隔持续轮询这个端点,尝试获取他要执行的
|
||||
}
|
||||
```
|
||||
|
||||
该端点必须返回一个 Json 格式的 Response,并且至少要满足下列格式:
|
||||
该端点必须返回一个 JSON 格式的 Response,并且至少要满足下列格式:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -99,7 +99,7 @@ MAA 会以 1 秒的间隔持续轮询这个端点,尝试获取他要执行的
|
||||
|
||||
被控 MAA 需要将该端点填写到 MAA 配置的 `汇报任务端点` 文本框中。
|
||||
|
||||
该端点必需能够接受一个 `Content-Type=application/json` 的 POST 请求,并该请求必须可以接受下面这个 Json 作为请求的 content:
|
||||
该端点必需能够接受一个 `Content-Type=application/json` 的 POST 请求,并该请求必须可以接受下面这个 JSON 作为请求的 content:
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -84,7 +84,7 @@ JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直
|
||||
|
||||
"reduceOtherTimes": ["OtherTaskName1", "OtherTaskName2"],
|
||||
// 可选项,执行后减少其他任务的执行计数。
|
||||
// 例如执行了药剂恢复,则说明上一次点击蓝色开始行动按钮没生效,所以蓝色开始行动要-1
|
||||
// 例如执行了使用理智药,则说明上一次点击蓝色开始行动按钮没生效,所以蓝色开始行动要-1
|
||||
|
||||
"specificRect": [100, 100, 50, 50],
|
||||
// 当 action 为 ClickRect 时有效且必选,表示指定的点击位置(范围内随机一点)。
|
||||
|
||||
@@ -5,153 +5,153 @@ icon: devicon-plain:githubactions
|
||||
|
||||
# CI 系統解析
|
||||
|
||||
MAA 借助 Github Action 完成了大量的自動化工作,包括網站的構建,自動更新資源,最終文件的構建與發版等等過程。隨著時間的推移,這些 CI 逐漸開始嵌套,部分甚至引向了其他的存儲庫。本文檔旨在為想要對 MAA 的 CI 系統做出改進的各位做一個簡要的介紹。
|
||||
MAA 藉由 GitHub Actions 完成了大量的自動化工作,包括網站建置、資源自動更新、最終檔案的編譯與發布等過程。隨著時間推移,這些 CI 逐漸開始嵌套,部分甚至連結到了其他的倉庫。本文檔旨在為想要改進 MAA CI 系統的開發者提供一份簡要介紹。
|
||||
|
||||
閱讀本文之前,最好對 MAA 的項目結構以及組成有一個基本的概念。
|
||||
閱讀本文之前,建議先對 MAA 的專案結構與組成有基本的概念。
|
||||
|
||||
::: tip
|
||||
你可以通過在本頁面內搜尋 CI 文件名來快速導航到想看的部分
|
||||
您可以透過在本頁面內搜尋 CI 檔名來快速導航到想看的內容。
|
||||
:::
|
||||
|
||||
工作流的文件均存放在 `.github/workflows` 下,各個文件可以按功能分為以下幾部分:
|
||||
工作流(Workflow)檔案均存放於 `.github/workflows` 目錄下,各檔案可依功能分為以下幾部分:
|
||||
|
||||
- [代碼測試](#代碼測試)
|
||||
- [代碼構建](#代碼構建)
|
||||
- [代碼安全檢查](#代碼安全檢查)
|
||||
- [程式碼測試](#程式碼測試)
|
||||
- [程式碼建置](#程式碼建置)
|
||||
- [程式碼安全檢查](#程式碼安全檢查)
|
||||
- [版本發布](#版本發布)
|
||||
- [資源更新](#資源更新)
|
||||
- [網站構建](#網站構建)
|
||||
- [網站建置](#網站建置)
|
||||
- [Issues 管理](#issues-管理)
|
||||
- [Pull Requests 管理](#pull-requests-管理)
|
||||
- [MirrorChyan 相關](#mirrorchyan-相關)
|
||||
- [其他](#其他)
|
||||
|
||||
此外,我們還通過 [pre-commit.ci](https://pre-commit.ci/) 實現了代碼的自動格式化和圖片資源的自動優化,它在發起 PR 後會自動執行,一般無需特別在意。
|
||||
此外,我們還透過 [pre-commit.ci](https://pre-commit.ci/) 實現了程式碼自動格式化與圖片資源自動優化,它在發起 PR 後會自動執行,一般無需特別在意。
|
||||
|
||||
## Github Action 部分
|
||||
## GitHub Actions 部分
|
||||
|
||||
### 代碼測試
|
||||
### 程式碼測試
|
||||
|
||||
`smoke-testing.yml`
|
||||
|
||||
本工作流主要負責對 MaaCore 做出基本的檢測,包括資源文件加載,部分簡單 task 運行測試等等。
|
||||
本工作流主要負責對 MaaCore 進行基礎檢測,包括資源檔案載入、部分簡單任務(Task)執行測試等。
|
||||
|
||||
由於測試用例已經較久沒有更新,該工作流現在基本是為了保證資源文件不會出現錯誤,以及 MaaCore 的代碼沒有出現影響到構建的致命性錯誤。
|
||||
由於測試案例(Test Cases)已較久未更新,該工作流目前的初衷是確保資源檔案不會出錯,以及 MaaCore 的程式碼沒有出現影響建置的致命性錯誤。
|
||||
|
||||
### 代碼構建
|
||||
### 程式碼建置
|
||||
|
||||
`ci.yml`
|
||||
|
||||
本工作流負責對代碼進行全量構建工作,包含 MAA 的所有組件,構建成品即為可運行的 MAA。
|
||||
本工作流負責對程式碼進行全量建置工作,包含 MAA 的所有組件,建置產物即為可執行的 MAA。
|
||||
|
||||
除了必要的 MaaCore 外,Windows 構建產物會包含 MaaWpfGui,MacOS 構建產物會包含 MaaMacGui,Linux 構建產物會包含 MaaCLI。
|
||||
除了必要的 MaaCore 外,Windows 建置產物會包含 MaaWpfGui,macOS 建置產物會包含 MaaMacGui,Linux 建置產物則包含 MaaCLI。
|
||||
|
||||
該工作流在出現任何新 Commit 以及 PR 時都會自動運行,且當該工作流由發版 PR 觸發時,本次的構建產物將會直接用於發版,並且會創建一個 Release。
|
||||
該工作流在有任何新提交(Commit)或 PR 時都會自動執行;當該工作流由發版 PR 觸發時,本次的建置產物將直接用於發布,並自動建立一個 Release。
|
||||
|
||||
### 代碼安全檢查
|
||||
### 程式碼安全檢查
|
||||
|
||||
代碼安全檢查通過 CodeQL 對代碼和工作流進行安全分析,具體工作流如下:
|
||||
程式碼安全檢查透過 CodeQL 對程式碼與工作流進行安全分析,具體工作流如下:
|
||||
|
||||
`codeql-core.yml`
|
||||
|
||||
本工作流負責對 MaaCore 和 MaaWpfGui 的 C++ 和 C# 代碼進行安全分析,檢測潛在的安全漏洞。
|
||||
負責對 MaaCore 與 MaaWpfGui 的 C++ 和 C# 程式碼進行安全分析,偵測潛在的安全漏洞。
|
||||
|
||||
該工作流在修改相關源代碼的 PR 時自動運行,同時每天 UTC 時間 11:45 自動執行定期檢查。
|
||||
該工作流在修改相關原始碼的 PR 時會自動執行,同時於每天 UTC 時間 11:45 進行定期檢查。
|
||||
|
||||
`codeql-wf.yml`
|
||||
|
||||
本工作流負責對 GitHub Actions 工作流文件本身進行安全分析,確保 CI/CD 流程的安全性。
|
||||
負責對 GitHub Actions 工作流檔案本身進行安全分析,確保 CI/CD 流程的安全性。
|
||||
|
||||
該工作流在修改工作流文件的 PR 時自動運行,同時每天 UTC 時間 12:00 自動執行定期檢查。
|
||||
該工作流在修改工作流檔案的 PR 時會自動執行,同時於每天 UTC 時間 12:00 進行定期檢查。
|
||||
|
||||
### 版本發布
|
||||
|
||||
版本發布,簡稱發版,是向用戶發布更新的必要操作,由以下工作流組成:
|
||||
版本發布(簡稱發版)是向用戶發布更新的必要操作,由以下工作流組成:
|
||||
|
||||
- `release-nightly-ota.yml` 發布內測版
|
||||
- `release-ota.yml` 發布正式版/公測版
|
||||
- `release-preparation.yml` 為正式版/公測版生成 changelog 和準備發布
|
||||
- `pr-auto-tag.yml` 對正式版/公測版生成 tag
|
||||
- `release-nightly-ota.yml` 發布內測版(Nightly)
|
||||
- `release-ota.yml` 發布正式版 / 公測版(Beta)
|
||||
- `release-preparation.yml` 為正式版 / 公測版產生 Changelog 並準備發布
|
||||
- `pr-auto-tag.yml` 對正式版 / 公測版產生 Tag
|
||||
|
||||
::: tip
|
||||
上述文件名內的 ota 意為 Over-the-Air,也就是我們常說的「增量更新包」,因此 MAA 的發版過程實際上包含了對過往版本構建 OTA 包的步驟
|
||||
上述檔名稱內的 OTA 意為 Over-the-Air(雲端更新),也就是我們常說的 `增量更新檔案`,因此 MAA 的發版過程實際上包含了對過往版本建置 OTA 檔案的步驟。
|
||||
:::
|
||||
|
||||
#### 內測版
|
||||
|
||||
`release-nightly-ota.yml`
|
||||
|
||||
本工作流會在每天 UTC 時間 22 點自動運行,以保證內測版的發版頻率。當然,你也可以在做出更改需要驗證時手動發版。
|
||||
本工作流會在每天 UTC 時間 22 點自動執行,以保證內測版的更新頻率。當然,您也可以在做出更改需要驗證時手動觸發發布。
|
||||
|
||||
需要注意的是,內測版的發布僅針對 Windows 用戶,MacOS 與 Linux 用戶並不能接收到內測更新。
|
||||
需要注意的是,內測版發布僅針對 Windows 用戶,macOS 與 Linux 用戶目前無法接收到內測更新。
|
||||
|
||||
#### 正式版/公測版
|
||||
#### 正式版 / 公測版
|
||||
|
||||
這兩個通道的發版流程相對複雜一點,我們通過模擬一次發版步驟來解釋各工作流的作用:
|
||||
這兩個版本的發布流程相對複雜,我們透過模擬一次發布步驟來解釋各工作流的作用:
|
||||
|
||||
1. 建立由 `dev` 到 `master` 分支的 pr,且該 pr 的名字需要為 `Release v******`
|
||||
2. `release-preparation.yml` 會生成最近的正式版/公測版到當前版本的 changelog(以一個新 pr 的形式)
|
||||
3. 對 changelog 進行手動調整,並且添加簡要描述
|
||||
4. 合併 pr,觸發 `pr-auto-tag.yml`,創建 tag 並且同步分支
|
||||
5. Release 事件觸發 `release-ota.yml`,對 master 打完 tag 後進行 ota 包的構建以及附件上傳
|
||||
1. 建立從 `dev` 到 `master` 分支的 PR,且該 PR 的標題需為 `Release v******`。
|
||||
2. `release-preparation.yml` 會產生從最近版本到當前版本的 Changelog(以一個新 PR 的形式呈現)。
|
||||
3. 對 Changelog 進行手動調整,並加入簡要描述。
|
||||
4. 合併 PR,觸發 `pr-auto-tag.yml` 建立 Tag 並同步分支。
|
||||
5. Release 事件觸發 `release-ota.yml`,對 master 標上 Tag 後進行 OTA 包建置及附件上傳。
|
||||
|
||||
### 資源更新
|
||||
|
||||
這部分工作流主要負責 MAA 的資源更新以及優化,具體工作流如下:
|
||||
這部分工作流主要負責 MAA 的資源更新與優化,具體如下:
|
||||
|
||||
- `res-update-game.yml` 定期執行,從指定的倉庫拉取遊戲資源
|
||||
- `sync-resource.yml` 將資源同步到 MaaResource 倉庫,用於資源更新
|
||||
- `optimize-templates.yml` 優化包括模板圖在內的圖片大小
|
||||
- `res-update-game.yml` 定期執行,從指定倉庫拉取遊戲資源。
|
||||
- `sync-resource.yml` 將資源同步到 MaaResource 倉庫,用於資源更新。
|
||||
- `optimize-templates.yml` 優化包括範本圖片在內的圖片檔案大小。
|
||||
|
||||
### 網站構建
|
||||
### 網站建置
|
||||
|
||||
`website-workflow.yml`
|
||||
|
||||
本工作流主要負責 MAA 文檔站的構建與發布。
|
||||
本工作流主要負責 MAA 文件站的建置與發布。
|
||||
|
||||
請注意,網站的發布與發版強綁定,平常修改網頁組件的時候只會進行構建以保證不會有錯誤,在發版時才會正式部署到 GitHub Pages 上。
|
||||
請注意,網站的發布與版本更新強烈綁定。平時修改網頁組件時僅會進行建置以確保無誤,只有在正式發布版本時才會部署到 GitHub Pages。
|
||||
|
||||
### Issues 管理
|
||||
|
||||
`issue-checker.yml`
|
||||
|
||||
通過正則匹配給各個 Issue 打 Tag,以此來分類標記 Issue 內容,方便查看與管理。
|
||||
透過正規表達式(Regex)比對為各個 Issue 標記 Tag,以此分類 Issue 內容,方便查看與管理。
|
||||
|
||||
`issue-checkbox-checker.yml`
|
||||
|
||||
通過正則匹配自動關閉勾選「我未仔細閱讀」的 Issue;若「我未仔細閱讀」未被勾選,則將所有勾選框折疊。
|
||||
透過正規表達式自動關閉勾選「我未仔細閱讀」的 Issue;若該項未被勾選,則將所有勾選框(Checkbox)折疊。
|
||||
|
||||
`stale.yml`
|
||||
|
||||
檢查超過 90 天沒有活動的 Bug Issue,將其標記並發起通知,7 天後若還沒有活動則關閉。
|
||||
檢查超過 90 天沒有活動的 Bug Issue 並標記通知,若 7 天後仍無活動則自動關閉。
|
||||
|
||||
### Pull Requests 管理
|
||||
|
||||
`pr-checker.yml`
|
||||
|
||||
該工作流用於檢查 PR 中的 Commit Message 是否符合 [約定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/),以及是否包含 Merge Commit,若上述條件符合則會作出提示。
|
||||
檢查 PR 中的 Commit Message 是否符合 [約定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/),以及是否包含 Merge Commit,若不符合則會發出提示。
|
||||
|
||||
### MirrorChyan 相關
|
||||
|
||||
MirrorChyan 是有償的更新鏡像服務,與其相關的工作流如下:
|
||||
MirrorChyan 是有償的更新鏡像服務,相關工作流如下:
|
||||
|
||||
- `release-package-distribution.yml` 同步更新包到 MirrorChyan
|
||||
- `mirrorchyan_release_note.yml` 生成 MirrorChyan 的 Release Note
|
||||
- `release-package-distribution.yml` 同步更新包至 MirrorChyan。
|
||||
- `mirrorchyan_release_note.yml` 產生 MirrorChyan 的 Release Note。
|
||||
|
||||
### 其他
|
||||
|
||||
`markdown-checker.yml`
|
||||
|
||||
負責檢查倉庫中的所有 Markdown 文件中是否包含無效鏈接。
|
||||
檢查倉庫中所有 Markdown 檔案是否包含無效連結(死連結)。
|
||||
|
||||
`blame-ignore.yml`
|
||||
|
||||
自動忽略 Commit Message 包含 `blame ignore` 的提交,保證倉庫歷史的乾淨。
|
||||
自動忽略 Commit Message 包含 `blame ignore` 的提交,以保持 Git Blame 歷史紀錄的簡潔。
|
||||
|
||||
`cache-delete.yml`
|
||||
|
||||
在 PR 合併後清理相關的緩存,以此來節省緩存用量。
|
||||
在 PR 合併後清理相關快取(Cache),以節省 GitHub 儲存空間。
|
||||
|
||||
`update-submodules.yml`
|
||||
|
||||
定期更新 MaaMacGui 和 maa-cli 等子模組到最新版本。該工作流每天 UTC 時間 21:50 自動執行(在每日內測版發布之前),確保子模組保持最新狀態。
|
||||
定期將 MaaMacGui 與 maa-cli 等子模組更新至最新版本。該工作流於每天 UTC 時間 21:50 自動執行(在每日內測版發布之前),確保子模組保持在最新狀態。
|
||||
|
||||
@@ -6,93 +6,97 @@ icon: iconoir:developer
|
||||
# 開發指南
|
||||
|
||||
::: tip
|
||||
本頁面主要描述了 PR 流程以及 MAA 的檔案格式化要求,如果你想要具體了解如何對 MAA 的運行邏輯做出更改,請參看 [協議文檔](../protocol/)
|
||||
本頁面主要描述了 PR 流程以及 MAA 的檔案格式化要求,如果您想要具體了解如何對 MAA 的運行邏輯進行更改,請參閱 [協議文件](../protocol/)
|
||||
:::
|
||||
|
||||
::: tip
|
||||
你可以 [向 DeepWiki 詢問](https://deepwiki.com/MaaAssistantArknights/MaaAssistantArknights),以初步了解 MAA 專案的整體架構。
|
||||
您可以 [向 DeepWiki 詢問](https://deepwiki.com/MaaAssistantArknights/MaaAssistantArknights),以初步了解 MAA 專案的整體架構。
|
||||
:::
|
||||
|
||||
## 我不懂寫程式,只是想改一點點 JSON 文件/文件等,要怎麼操作?
|
||||
## 我不懂程式設計,只想改一點點 JSON 檔案 / 文件等,要怎麼操作?
|
||||
|
||||
歡迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (純網頁端操作 Github.com)
|
||||
歡迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (純網頁端操作 github.com)
|
||||
|
||||
## 我只想簡單修改幾行代碼,但配置環境太麻煩,純網頁編輯又很難用,怎麼辦?
|
||||
## 我只想簡單修改幾行程式碼,但配置環境太麻煩,純網頁編輯又很難用,怎麼辦?
|
||||
|
||||
請使用 [GitHub Codespaces](https://github.com/codespaces) 在線開發環境,盡情嘗試!
|
||||
請使用 [GitHub Codespaces](https://github.com/codespaces) 線上開發環境,盡情嘗試!
|
||||
|
||||
我們預置了多種不同的開發環境以供選擇:
|
||||
|
||||
- 空白環境,裸 Linux 容器(默認)
|
||||
- 基礎環境,純 Linux 容器(預設)
|
||||
|
||||
[](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
- 輕量環境,適合文檔站前端開發
|
||||
- 精簡環境,適合文件站前端開發
|
||||
|
||||
[](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2F0%2Fdevcontainer.json)
|
||||
|
||||
- 全量環境,適合 MAA Core 相關開發(不推薦使用,建議本地開發,完整配置相關環境。詳見下一章節)
|
||||
- 完整環境,適合 MAA Core 相關開發(不推薦使用,建議本機開發,完整配置相關環境。詳見下一章節)
|
||||
|
||||
[](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2F1%2Fdevcontainer.json)
|
||||
|
||||
## 完整環境配置流程(Windows)
|
||||
|
||||
1. 如果很久以前 Fork 過,先在自己倉庫的 `Settings` 裡,翻到最下面,刪除
|
||||
2. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights),點擊 `Fork`,繼續點擊 `Create fork`
|
||||
3. 複製你自己倉庫下的 dev 分支到本地,並拉取子模組
|
||||
1. 如果很久以前 Fork 過,先在自己倉庫的 `Settings` 裡,翻到最下面,將其刪除。
|
||||
2. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights),點擊 `Fork`,繼續點擊 `Create fork`。
|
||||
3. 複製(Clone)您自己倉庫下的 dev 分支到在地,並拉取子模組(Submodules)。
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules <你的倉庫的 git 連結> -b dev
|
||||
git clone --recurse-submodules <您的倉庫 git 連結> -b dev
|
||||
```
|
||||
|
||||
::: warning
|
||||
如果正在使用 Visual Studio 等不附帶 `--recurse-submodules` 參數的 Git GUI,則需在複製後再執行 `git submodule update --init` 以拉取子模組。
|
||||
:::
|
||||
|
||||
4. 下載預構建的第三方庫
|
||||
4. 下載預編譯的第三方函式庫
|
||||
|
||||
**需要有 Python 環境,請自行搜索 Python 安裝教學**
|
||||
**需要有 Python 環境,請自行搜尋 Python 安裝教學。**
|
||||
|
||||
```cmd
|
||||
python tools/maadeps-download.py
|
||||
```
|
||||
|
||||
5. 配置編程環境
|
||||
5. 配置開發環境
|
||||
- 下載並安裝 `CMake`
|
||||
- 下載並安裝 `Visual Studio 2026 Community`, 安裝的時候需要選中 `基於 C++ 的桌面開發` 和 `.NET 桌面開發`。
|
||||
- 下載並安裝 `Visual Studio 2026 Community`,安裝時需要選中 `使用 C++ 的桌面開發` 和 `.NET 桌面開發`。
|
||||
|
||||
6. 執行 cmake 項目配置
|
||||
6. 執行 CMake 專案配置
|
||||
|
||||
```cmd
|
||||
mkdir -p build
|
||||
cmake -G "Visual Studio 18 2026" -B build -DBUILD_WPF_GUI=ON -DBUILD_DEBUG_DEMO=ON
|
||||
cmake --preset windows-x64
|
||||
```
|
||||
|
||||
7. 雙擊打開 `build/MAA.slnx` 文件,Visual Studio 會自動載入整個項目。
|
||||
8. 設置 VS
|
||||
- VS 上方配置選擇 `Debug` `x64`
|
||||
- 右鍵 `MaaWpfGui` - 設為啟動項目
|
||||
- 按 F5 運行
|
||||
7. 雙擊開啟 `build/MAA.slnx` 檔案,Visual Studio 會自動載入整個專案。
|
||||
8. 設定 Visual Studio
|
||||
- Visual Studio 上方配置選擇 `Debug` `x64`
|
||||
- 右鍵點擊 `MaaWpfGui` - 設為啟動專案。
|
||||
- 按 F5 執行。
|
||||
|
||||
9. 到這裡,你就可以愉快地 ~~瞎 JB 改~~ 發電了
|
||||
::: tip
|
||||
若需針對 Win32Controller(Windows 視窗控制)相關功能進行除錯,需要自行從 [MaaFramework Releases](https://github.com/MaaModular/MaaFramework/releases) 下載對應平台的壓縮檔案,將 `bin` 目錄中的 `MaaWin32ControlUnit.dll` 放到 MAA 的 DLL 同目錄下(例如 `build/bin/Debug`)。歡迎 PR 一個自動下載腳本!
|
||||
:::
|
||||
|
||||
9. 到這裡,你就可以愉快地 ~~瞎雞巴改~~ 發電了
|
||||
10. 開發過程中,每一定數量,記得提交一個 Commit, 別忘了寫上 Message
|
||||
假如你不熟悉 git 的使用,你可能想要新建一個分支進行更改,而不是直接提交在 `dev` 上
|
||||
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
```bash
|
||||
git branch your_own_branch
|
||||
git checkout your_own_branch
|
||||
```
|
||||
|
||||
這樣你的提交就能在新的分支上生長,不會受到 `dev` 更新的打擾
|
||||
這樣你的提交就能在新的分支上生長,不會受到 `dev` 更新的打擾
|
||||
|
||||
11. 完成開發後,推送你修改過的本地分支(以 `dev` 為例)到遠程(Fork 的倉庫)
|
||||
11. 完成開發後,推送你修改過的本地分支(以 `dev` 為例)到遠端(Fork 的倉庫)
|
||||
|
||||
```bash
|
||||
git push origin dev
|
||||
```
|
||||
|
||||
12. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights)。提交一個 Pull Request,等待管理員通過。別忘了你是在 dev 分支上修改,別提交到 master 分支去了
|
||||
13. 當 MAA 原倉庫出現更改(別人做的),你可能需要把這些更改同步到你的分支
|
||||
12. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights)。提交一個 Pull Request,等待管理員通過。別忘了您是在 dev 分支上修改,別提交到 master 分支去了。
|
||||
|
||||
13. 當 MAA 原倉庫出現更改(他人貢獻)時,您可能需要把這些更改同步到您的分支:
|
||||
1. 關聯 MAA 原倉庫
|
||||
|
||||
```bash
|
||||
@@ -120,37 +124,73 @@ git checkout your_own_branch
|
||||
4. 重複上述 8, 9, 10, 11 中的操作
|
||||
|
||||
::: tip
|
||||
在打開 VS 之後,和 Git 有關的操作可以不用命令行工具,直接使用 VS 自帶的“Git 更改”即可
|
||||
開啟 Visual Studio 之後,和 Git 有關的操作可以不用命令列工具,直接使用 Visual Studio 內建的「Git 變更」功能即可。
|
||||
:::
|
||||
|
||||
## 使用 VS Code 進行開發(可選)
|
||||
|
||||
::: warning
|
||||
**建議優先使用 Visual Studio 進行開發。** MAA 專案主要基於 Visual Studio 建置,上述完整環境配置流程已涵蓋所有開發需求,開箱即用體驗最佳。VSCode 方案僅作為備選,適合已經熟悉 VS Code + CMake + clangd 工作流的開發者,配置門檻相對較高。
|
||||
:::
|
||||
|
||||
如果您偏好使用 VSCode,可以搭配 CMake、clangd 等擴充套件獲得程式碼補全、跳轉與除錯能力。完成前述 1–6 步(複製、相依、CMake 設定)後,可依下列步驟設定:
|
||||
|
||||
### 推薦擴充套件
|
||||
|
||||
於 VS Code 擴充套件市集安裝:
|
||||
|
||||
| 擴充套件 | 作用 |
|
||||
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
||||
| [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) | CMake 設定、建置、除錯整合 |
|
||||
| [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) | C++ 智慧提示、程式碼跳轉、診斷(基於 LSP) |
|
||||
| [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) | 除錯 C++ 程式(與 CMake Tools 或 launch.json 搭配) |
|
||||
|
||||
::: tip
|
||||
使用 clangd 時,建議停用 C/C++ 擴充套件的 IntelliSense(將 `C_Cpp.intelliSenseEngine` 設為 `disabled`),以免與 clangd 衝突。
|
||||
:::
|
||||
|
||||
### 設定步驟
|
||||
|
||||
1. 使用 VS Code 開啟專案根目錄
|
||||
2. **CMake Tools**:
|
||||
- 於狀態列選擇 Configure Preset(如 `windows-x64`、`linux-x64` 等)
|
||||
- 選擇 Build Preset,執行設定與建置
|
||||
3. **clangd**:在 Windows 上搭配 MSVC 使用時無需 `compile_commands.json` 即可正常開發。Linux/macOS 下預設已開啟 `CMAKE_EXPORT_COMPILE_COMMANDS`,clangd 會自動使用 `build/compile_commands.json`
|
||||
4. **除錯**:專案已包含 `.vscode/launch.json`,可直接啟動 MaaWpfGui 或 Debug Demo 進行除錯
|
||||
|
||||
### 快速建置與除錯
|
||||
|
||||
- **建置**:`Ctrl+Shift+B` 或透過 CMake Tools 狀態列
|
||||
- **除錯**:F5 或於執行與除錯面板選擇對應設定
|
||||
|
||||
## MAA 的檔案格式化要求
|
||||
|
||||
MAA 使用一系列的格式化工具來保證倉庫中的代碼和資源文件美觀統一,以便於維護和閱讀
|
||||
MAA 使用一系列的格式化工具來確保倉庫中的程式碼和資源檔案美觀統一,以便於維護和閱讀。
|
||||
|
||||
請確保在提交之前已經格式化,或是[啟用 Pre-commit Hooks 來進行自動格式化](#利用-pre-commit-hooks-自動進行程式碼格式化)
|
||||
請確保在提交之前已經完成格式化,或是[啟用 Pre-commit Hooks 來進行自動格式化](#利用-pre-commit-hooks-自動進行程式碼格式化)
|
||||
|
||||
目前啟用的格式化工具如下:
|
||||
|
||||
| 文件類型 | 格式化工具 |
|
||||
| 檔案類型 | 格式化工具 |
|
||||
| --------- | --------------------------------------------------------------- |
|
||||
| C++ | [clang-format](https://clang.llvm.org/docs/ClangFormat.html) |
|
||||
| Json/Yaml | [Prettier](https://prettier.io/) |
|
||||
| JSON/YAML | [Prettier](https://prettier.io/) |
|
||||
| Markdown | [markdownlint](https://github.com/DavidAnson/markdownlint-cli2) |
|
||||
|
||||
### 利用 Pre-commit Hooks 自動進行程式碼格式化
|
||||
|
||||
1. 確保你的電腦上有 Python 與 Node 環境
|
||||
1. 確保您的電腦上有 Python 與 Node 環境
|
||||
|
||||
2. 在項目根目錄下執行以下命令
|
||||
2. 在專案根目錄下執行以下命令:
|
||||
|
||||
```bash
|
||||
pip install pre-commit
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
如果pip安裝後依然無法運行 Pre-commit,請確認 PIP 安裝地址已被添加到 PATH
|
||||
如果 pip 安裝後依然無法執行 pre-commit,請確認 pip 安裝路徑已被添加到 PATH。
|
||||
|
||||
接下來,每次提交時都將會自動運行格式化工具,來確保你的代碼格式符合規範
|
||||
接下來,每次提交時都將會自動執行格式化工具,以確保您的程式碼格式符合規範。
|
||||
|
||||
### 在 Visual Studio 中啟用 clang-format
|
||||
|
||||
@@ -160,15 +200,16 @@ MAA 使用一系列的格式化工具來保證倉庫中的代碼和資源文件
|
||||
python -m pip install clang-format
|
||||
```
|
||||
|
||||
2. 使用 Everything 等工具 找到 clang-format.exe 的安裝位置。作為參考,若您使用了 Anaconda,clang-format.exe 將安裝在 YourAnacondaPath/Scripts/clang-format.exe
|
||||
2. 使用 Everything 等工具找到 `clang-format.exe` 的安裝位置。作為參考,若您使用了 Anaconda,`clang-format.exe` 將安裝在 `YourAnacondaPath/Scripts/clang-format.exe`
|
||||
|
||||
3. 在 Visual Studio `工具-選項` 中搜索 `clang-format`
|
||||
4. 點擊 `啟用 ClangFormat 支持`,然後選擇下面的 `使用自訂 clang-format.exe 文件`,選擇第 2 步找到的 `clang-format.exe`
|
||||
3. 在 Visual Studio `工具-選項` 中搜尋 `clang-format`
|
||||
|
||||

|
||||
4. 點擊 `啟用 ClangFormat 支援`,然後選擇下方的 `使用自定義 clang-format.exe 檔案`,選擇第 2 步找到的 `clang-format.exe`
|
||||
|
||||
然後你的 Visual Studio 就能愉快的使用支持 C++20 語法的 clang-format 啦!
|
||||

|
||||
|
||||
你也可以使用 `tools\ClangFormatter\clang-formatter.py` 來直接調用你的 clang-format 來進行格式化,只需要在項目根目錄下執行:
|
||||
然後您的 Visual Studio 就能愉快地使用支援 C++20 語法的 clang-format 啦!
|
||||
|
||||
您也可以使用 `tools\ClangFormatter\clang-formatter.py` 來直接呼叫 clang-format 進行格式化,只需在專案根目錄下執行:
|
||||
|
||||
- `python tools\ClangFormatter\clang-formatter.py --clang-format=PATH\TO\YOUR\clang-format.exe --input=src\MaaCore`
|
||||
|
||||
@@ -6,52 +6,58 @@ icon: jam:write-f
|
||||
# 文件編寫指南
|
||||
|
||||
::: tip
|
||||
本文件的目的在於指導文件編寫者更好地使用主題提供的功能,以達到更易讀的效果。
|
||||
本文件的目的在於指導文件編寫者更好地使用主題提供的功能,以此達到更易讀的效果。
|
||||
:::
|
||||
|
||||
我們的文件基於 [vuepress](https://github.com/vuejs/vuepress) 構建,使用了 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 主題,你也可以查看[官方文件](https://theme-plume.vuejs.press/)來獲取更詳細的說明,這裡僅介紹一些常用的功能。
|
||||
我們的文件基於 [VuePress](https://github.com/vuejs/vuepress) 建置,使用了 [vuepress-theme-plume](https://github.com/pengzhanbo/vuepress-theme-plume) 主題。您也可以查看 [官方文件](https://theme-plume.vuejs.press/) 來獲取更詳細的說明。本文僅介紹部分常用功能,或經我們自定義後的特殊功能。
|
||||
|
||||
## 本地部署
|
||||
## 本機開發
|
||||
|
||||
1. 安裝 [pnpm](https://pnpm.io/zh/installation),並參考 [Pull Request 流程簡述](./development.md#github-pull-request-流程簡述)將倉庫克隆到本地。
|
||||
2. 在 `docs` 目錄下新建終端,運行 `pnpm i` 下載依賴。
|
||||
3. 運行 `pnpm run dev` 進行部署。
|
||||
1. 安裝 [pnpm](https://pnpm.io/installation),並參考 [Pull Request 流程簡述](./development.md#github-pull-request-流程簡述) 將倉庫複製(Clone)到本機。
|
||||
2. 在 `docs` 目錄下開啟終端機,執行 `pnpm i` 安裝相依套件。
|
||||
3. 執行 `pnpm run dev` 啟動開發預覽環境。
|
||||
|
||||
## 容器
|
||||
## 容器與卡片
|
||||
|
||||
~~不是 docker 那個容器~~
|
||||
|
||||
該主題提供了關於提示、注釋、信息、注意、警告和詳情自定義容器的支持,我們可以利用這一特性來強調部分內容。
|
||||
該主題提供了關於提示、註釋、資訊、注意、警告和詳情自定義容器的支援,我們可以利用這一特性來強調部分內容。
|
||||
|
||||
容器的使用方法:
|
||||
|
||||
```markdown
|
||||
::: [容器類型] [容器標題(可選)]
|
||||
你想寫的內容
|
||||
::: [容器類型] [容器標題(選填)]
|
||||
您想寫的內容
|
||||
:::
|
||||
```
|
||||
|
||||
接受的容器内容与其默认标题如下:
|
||||
或是使用 GitHub 風格語法:
|
||||
|
||||
```markdown
|
||||
> [!容器類型]
|
||||
> 您想寫的內容
|
||||
```
|
||||
|
||||
可接受的容器類型與其預設標題如下:
|
||||
|
||||
- `tip` 提示
|
||||
- `note` 注釋
|
||||
- `info` 信息
|
||||
- `note` 註釋
|
||||
- `info` 相關資訊
|
||||
- `warning` 注意
|
||||
- `danger` 警告
|
||||
- `details` 詳情
|
||||
- `demo-warpper` ==特殊容器==
|
||||
|
||||
### 容器示例
|
||||
### 容器範例
|
||||
|
||||
::: tip
|
||||
這是提示容器
|
||||
:::
|
||||
|
||||
::: note
|
||||
這是注釋容器
|
||||
這是註釋容器
|
||||
:::
|
||||
|
||||
::: info
|
||||
這是信息容器
|
||||
這是資訊容器
|
||||
:::
|
||||
|
||||
::: warning
|
||||
@@ -59,30 +65,216 @@ icon: jam:write-f
|
||||
:::
|
||||
|
||||
::: danger
|
||||
這是危險容器
|
||||
這是警告容器
|
||||
:::
|
||||
|
||||
::: details
|
||||
這是詳情容器
|
||||
:::
|
||||
|
||||
## 圖標
|
||||
::: demo-wrapper
|
||||
這是一個很特殊的容器
|
||||
:::
|
||||
|
||||
該主題提供了圖標支持,你可以在以下地方使用圖標:
|
||||
## 麥克筆標記
|
||||
|
||||
- 文件標題:在 frontmatter 中設置文件標題旁邊的圖標
|
||||
您可以使用標記語法來對想要顯示的內容進行標記,用於強調重點事項。
|
||||
|
||||
- 導航欄/側邊欄:設置在導航欄與側邊欄中顯示的圖標
|
||||
使用方法:用 `==標記內容=={標記顏色(選填)}` 的語法進行標記,請注意標記兩邊需要有空格。
|
||||
|
||||
- 文件內容:在文件中使用圖標
|
||||
**輸入:**
|
||||
|
||||
### 設置文件的圖標
|
||||
```markdown
|
||||
MaaAssistantArknights 是由 ==很多豬== 開發的
|
||||
```
|
||||
|
||||
你可以在文件的 [frontmatter](#frontmatter) 中使用 icon 來設置文件的圖標。
|
||||
**輸出:**
|
||||
|
||||
这个图标会显示在文档标题的旁边。
|
||||
MaaAssistantArknights 是由 ==很多豬== 開發的
|
||||
|
||||
::: details 本文件的 frontmatter 設置
|
||||
主題還內建了以下的配色方案:
|
||||
|
||||
- **default**: `==Default==` - ==Default==
|
||||
- **info**: `==Info=={.info}` - ==Info=={.info}
|
||||
- **note**: `==Note=={.note}` - ==Note=={.note}
|
||||
- **tip**: `==Tip=={.tip}` - ==Tip=={.tip}
|
||||
- **warning**: `==Warning=={.warning}` - ==Warning=={.warning}
|
||||
- **danger**: `==Danger=={.danger}` - ==Danger=={.danger}
|
||||
- **caution**: `==Caution=={.caution}` - ==Caution=={.caution}
|
||||
- **important**: `==Important=={.important}` - ==Important=={.important}
|
||||
|
||||
## 隱藏文字
|
||||
|
||||
出於某種原因,您可能需要將文件的某部分暫時塗黑,在這種情況下您可以使用隱藏文字功能。
|
||||
|
||||
您可以使用 `!!需要隱秘的內容!!{配置(選填)}` 的語法來使用,預設效果如下:
|
||||
|
||||
!!總感覺在看萌娘百科(劃掉!!
|
||||
|
||||
有以下配置可以使用:
|
||||
|
||||
::: demo-wrapper
|
||||
輸入:
|
||||
|
||||
```markdown
|
||||
+ 遮罩層效果 + 滑鼠懸停:!!滑鼠懸停看到我了!!{.mask .hover}
|
||||
+ 遮罩層效果 + 點擊:!!點擊看到我了!!{.mask .click}
|
||||
+ 文字模糊效果 + 滑鼠懸停:!!滑鼠懸停看到我了!!{.blur .hover}
|
||||
+ 文字模糊效果 + 點擊:!!點擊看到我了!!{.blur .click}
|
||||
```
|
||||
|
||||
輸出:
|
||||
|
||||
- 遮罩層效果 + 滑鼠懸停:!!滑鼠懸停看到我了!!{.mask .hover}
|
||||
- 遮罩層效果 + 點擊:!!點擊看到我了!!{.mask .click}
|
||||
- 文字模糊效果 + 滑鼠懸停:!!滑鼠懸停看到我了!!{.blur .hover}
|
||||
- 文字模糊效果 + 點擊:!!點擊看到我了!!{.blur .click}
|
||||
|
||||
:::
|
||||
|
||||
## 步驟
|
||||
|
||||
當您正在撰寫一個步驟化的教學時,有序列表可能會因為嵌套而失去層次感,這種時候 `steps` 容器就是最好的選擇。
|
||||
|
||||
注意該容器用四個冒號來標記開始和結束,與常規的容器不同。
|
||||
|
||||
輸入:
|
||||
|
||||
````markdown
|
||||
:::: steps
|
||||
1. 步驟 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. 步驟 2
|
||||
|
||||
這裡是步驟 2 的相關內容
|
||||
|
||||
3. 步驟 3
|
||||
|
||||
::: tip
|
||||
提示容器
|
||||
:::
|
||||
|
||||
4. 結束
|
||||
::::
|
||||
````
|
||||
|
||||
輸出:
|
||||
|
||||
:::: steps
|
||||
|
||||
1. 步驟 1
|
||||
|
||||
```ts
|
||||
console.log('Hello World!')
|
||||
```
|
||||
|
||||
2. 步驟 2
|
||||
|
||||
這裡是步驟 2 的相關內容
|
||||
|
||||
3. 步驟 3
|
||||
|
||||
::: tip
|
||||
提示容器
|
||||
:::
|
||||
|
||||
4. 結束
|
||||
|
||||
::::
|
||||
|
||||
## 智慧圖片容器
|
||||
|
||||
我們基於主題提供的功能包裝了一個圖片容器。該容器能夠在淺色與深色主題下自動顯示對應主題的圖片,同時支援自動適應排版。
|
||||
|
||||
您可以在 Markdown 正文中使用 `<ImageGrid>` 元件來呼叫該方法,具體的語法和效果如下:
|
||||
|
||||
::: demo-wrapper
|
||||
|
||||
這是語法:
|
||||
|
||||
```markdown
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/3-light.png',
|
||||
dark: 'images/zh-cn/readme/3-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/4-light.png',
|
||||
dark: 'images/zh-cn/readme/4-dark.png'
|
||||
}
|
||||
]" />
|
||||
```
|
||||
|
||||
這是渲染效果:
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/readme/1-light.png',
|
||||
dark: 'images/zh-cn/readme/1-dark.png'
|
||||
},
|
||||
{
|
||||
light: 'images/zh-cn/readme/2-light.png',
|
||||
dark: 'images/zh-cn/readme/2-dark.png'
|
||||
}
|
||||
]" />
|
||||
|
||||
:::
|
||||
|
||||
## 欄位容器
|
||||
|
||||
該語法較為複雜,請參閱 [官方文件](https://theme-plume.vuejs.press/guide/markdown/field/) 進行使用。
|
||||
|
||||
效果展示如下:
|
||||
|
||||
:::: field-group
|
||||
::: field name="theme" type="ThemeConfig" required default="{ base: '/' }"
|
||||
主題配置
|
||||
:::
|
||||
|
||||
::: field name="enabled" type="boolean" optional default="true"
|
||||
是否啟用
|
||||
:::
|
||||
|
||||
::: field name="callback" type="(...args: any[]) => void" optional default="() => {}"
|
||||
<Badge type="tip" text="v1.0.0 新增" />
|
||||
回呼函數
|
||||
:::
|
||||
|
||||
::: field name="other" type="string" deprecated
|
||||
<Badge type="danger" text="v0.9.0 棄用" />
|
||||
已棄用屬性
|
||||
:::
|
||||
::::
|
||||
|
||||
## 圖示
|
||||
|
||||
該主題提供了圖示支援,您可以在以下地方使用圖示:
|
||||
|
||||
- 文件標題:在 frontmatter 中設定文件標題旁邊的圖示。
|
||||
|
||||
- 導覽列 / 側邊欄:設定在導覽列與側邊欄中顯示的圖示。
|
||||
|
||||
- 文件內容:在文件內部使用圖示。
|
||||
|
||||
### 設定文件的圖示
|
||||
|
||||
您可以在文件的 [frontmatter](#frontmatter) 中使用 `icon` 來設定文件的圖示。
|
||||
|
||||
這個圖示會顯示在文件標題的旁邊。
|
||||
|
||||
::: details 本文件的 frontmatter 設定
|
||||
|
||||
```markdown
|
||||
---
|
||||
@@ -92,36 +284,41 @@ icon: jam:write-f
|
||||
|
||||
:::
|
||||
|
||||
### 在文件中使用圖標
|
||||
### 在文件中使用圖示
|
||||
|
||||
你可以使用 `<HopeIcon />` 組件在 markdown 中添加圖標。該組件有以下屬性:
|
||||
您可以使用 `<Icon />` 元件在 Markdown 中新增圖示。該元件有以下屬性:
|
||||
|
||||
- `icon` 接受圖標關鍵字及 Url,如 `jam:write-f`,`ic:round-home` 等
|
||||
- `color` 接受 css 風格的顏色值,如 `#fff`,`red` 等(該選項僅對 svg 圖標有效)
|
||||
- `size` 接受 css 風格的大小,如 `1rem`,`2em`,`100px` 等
|
||||
- `icon` 接受圖示關鍵字及 URL,如 `jam:write-f`,`ic:round-home` 等。
|
||||
- `color` 接受 CSS 風格的顏色值,如 `#fff`,`red` 等(該選項僅對 SVG 圖示有效)。
|
||||
- `size` 接受 CSS 風格的大小,如 `1rem`,`2em`,`100px` 等。
|
||||
|
||||
::: details 案例
|
||||
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
|
||||
::: demo-wrapper 範例
|
||||
|
||||
輸入:
|
||||
|
||||
```markdown
|
||||
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
|
||||
- home - <Icon name="material-symbols:home" color="currentColor" size="1em" />
|
||||
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
|
||||
- twitter - <Icon name="skill-icons:twitter" size="2em" />
|
||||
```
|
||||
|
||||
<HopeIcon icon="/images/maa-logo_512x512.png" size="4rem" />
|
||||
```markdown
|
||||
<HopeIcon icon="/images/maa-logo_512x512.png" size="4rem" />
|
||||
```
|
||||
輸出:
|
||||
|
||||
- home - <Icon name="material-symbols:home" color="currentColor" size="1em" />
|
||||
- vscode - <Icon name="skill-icons:vscode-dark" size="2em" />
|
||||
- twitter - <Icon name="skill-icons:twitter" size="2em" />
|
||||
|
||||
:::
|
||||
|
||||
### 圖標關鍵字的獲取
|
||||
### 圖示關鍵字的獲取
|
||||
|
||||
本文件使用的圖標來自於 [iconify](https://iconify.design/),你可以在其給出的 [圖標搜索界面](https://icon-sets.iconify.design/) 中搜索你想要的圖標,然後復制其關鍵字。
|
||||
本文件使用的圖示來自於 [iconify](https://iconify.design/),您可以在其提供的 [圖示搜尋介面](https://icon-sets.iconify.design/) 中搜尋您想要的圖示,然後複製其關鍵字。
|
||||
|
||||
## Frontmatter
|
||||
|
||||
Frontmatter 是 Markdown 文件開頭一段用 --- 包裹起來的內容,其內部使用 yml 語法。通過 Frontmatter,我們可以標識文件的編輯時間,使用的圖標,分類,標籤等等。
|
||||
Frontmatter 是 Markdown 文件開頭一段用 `---` 包裹起來的內容,其內部使用 YAML 語法。透過 Frontmatter,我們可以標示文件的編輯時間、使用的圖示、分類、標籤等等。
|
||||
|
||||
::: details 示例
|
||||
::: details 範例
|
||||
|
||||
```markdown
|
||||
---
|
||||
@@ -137,8 +334,8 @@ order: 1
|
||||
|
||||
:::
|
||||
|
||||
各字段含義如下:
|
||||
各欄位含義如下:
|
||||
|
||||
- `date` 文件的編輯時間
|
||||
- `icon` 文件標題旁邊的圖標
|
||||
- `order` 文件在側邊欄中的排序
|
||||
- `date`:文件的編輯時間
|
||||
- `icon`:文件標題旁邊的圖示
|
||||
- `order`:文件在側邊欄中的排序
|
||||
|
||||
@@ -5,65 +5,64 @@ icon: bxs:bot
|
||||
|
||||
# Issue Bot 使用方法
|
||||
|
||||
Issue Bot 使用的 action 為 [issue-checker](https://github.com/zzyyyl/issue-checker) ,配置文件為 [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) 。
|
||||
Issue Bot 使用的 Action 為 [issue-checker](https://github.com/zzyyyl/issue-checker),配置檔案為 [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml)。
|
||||
|
||||
::: warning
|
||||
Pull Request 被增加 `ambiguous` 標籤是因為沒有按照 commitizen 規則提交
|
||||
拉取請求(PR)被加上 `ambiguous` 標籤是因為沒有按照 Commitizen 規範提交。
|
||||
:::
|
||||
|
||||
## 功能
|
||||
|
||||
### 自動觸發
|
||||
|
||||
- 給 issue 和 Pull Request 增加標籤,包括 `module` 系列、`Client` 系列、`ambiguous`、`translation required` 等。
|
||||
Issue Bot 會根據關鍵字自動增加分類標籤。
|
||||
具體關鍵字可以參考 [配置檔案](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml)。
|
||||
- 給作者是可見性設定為 public 的 MAA 成員的 issue 和 Pull Request 增加 `MAA Team` 標籤。
|
||||
- 針對議題 (Issue) 與拉取請求 (Pull Request),Issue Bot 會根據關鍵字自動進行分類,並加上 `module` 系列、`Client` 系列、`ambiguous`、`translation required` 等標籤。
|
||||
具體關鍵字可以參閱 [配置檔案](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml)。
|
||||
- 針對身分設為公開 (Public) 的 MAA 成員,為其發起的議題與拉取請求加上 `MAA Team` 標籤。
|
||||
|
||||
#### Issue 及其評論
|
||||
#### 議題 (Issue) 及其評論
|
||||
|
||||
- 給文件上傳失敗的 issue 增加 `incomplete` 標籤並評論,告訴用戶文件上傳失敗。
|
||||
- 為上傳檔案失敗的議題增加 `incomplete` 標籤並留言評論,提醒用戶檔案上傳失敗。
|
||||
|
||||
#### Pull Request
|
||||
#### 拉取請求 (Pull Request)
|
||||
|
||||
Issue Bot 會對 Pull Request 標題的格式進行簡單審查。它會增加 `ambiguous` 標籤,除非 Pull Request 標題以下列任一單詞開頭:
|
||||
Issue Bot 會對拉取請求標題的格式進行簡單審查。除非標題以下列任一單字開頭,否則它會增加 `ambiguous` 標籤:
|
||||
|
||||
- `build` `chore` `ci` `doc` `docs` `feat` `fix` `perf` `refactor` `rfc` `style` `test`
|
||||
- `Merge` `merge` `Revert` `revert`
|
||||
- `build`, `chore`, `ci`, `doc`, `docs`, `feat`, `fix`, `perf`, `refactor`, `rfc`, `style`, `test`
|
||||
- `Merge`, `merge`, `Revert`, `revert`, `Reapply`, `reapply`
|
||||
|
||||
### 手動觸發
|
||||
|
||||
多使用關鍵字詳細描述問題來自動觸發分類標籤,少使用下列指令。
|
||||
但 **當你知道自己的行為會導致 Issue Bot 誤解時除外**。
|
||||
請多利用關鍵字詳細描述問題以自動觸發分類標籤,盡量少使用下列指令。
|
||||
但**當您知道自己的行為會導致 Issue Bot 誤解時除外**。
|
||||
|
||||
#### Issue 及 Pull Request
|
||||
#### 議題 (Issue) 及拉取請求 (Pull Request)
|
||||
|
||||
- `Remove {LABEL_NAME}` 可以刪除一個標籤。
|
||||
- `Remove labels` 可以刪除所有標籤。
|
||||
- `Skip {LABEL_NAME}` 可以跳過一個標籤。
|
||||
- `Skip labels` 可以跳過所有標籤。
|
||||
- `Remove {LABEL_NAME}`:可以刪除一個標籤。
|
||||
- `Remove labels`:可以刪除所有標籤。
|
||||
- `Skip {LABEL_NAME}`:可以跳過一個標籤。
|
||||
- `Skip labels`:可以跳過所有標籤。
|
||||
|
||||
#### Issue Comments 及 Pull Request Comments
|
||||
#### 議題評論 (Issue Comments) 及拉取請求評論 (Pull Request Comments)
|
||||
|
||||
- `Skip {LABEL_NAME}` 可以保證不增加標籤。
|
||||
- `Skip labels` 可以保證不增加任何標籤。
|
||||
- 以下幾種方法可以為 issue 增加 `fixed` 標籤:<sup>1</sup>
|
||||
- `Skip {LABEL_NAME}`:可以保證不增加特定標籤。
|
||||
- `Skip labels`:可以保證不增加任何標籤。
|
||||
- 以下幾種方法可以為議題增加 `fixed` 標籤:<sup>1</sup>
|
||||
- `https://github.com/MaaAssistantArknights/MaaAssistantArknights/commit/{COMMIT_HASH} fixed`
|
||||
- `fixed by https://github.com/MaaAssistantArknights/MaaAssistantArknights/commit/{COMMIT_HASH}`
|
||||
- `{VERSION} fixed`
|
||||
- `fixed by {VERSION}`
|
||||
- `Duplicate of #{ISSUE_NUMBER}` 可以在目前 issue 增加 `duplicate` 標籤。
|
||||
- **當你知道自己的 issue 評論會導致 Issue Bot 誤解時,盡量添加一些 skip 操作。**
|
||||
- `Duplicate of #{ISSUE_NUMBER}`:可以為目前議題增加 `duplicate` 標籤。
|
||||
- **當您知道自己的議題評論會導致 Issue Bot 誤解時,請盡量添加一些 skip 操作。**
|
||||
|
||||
::: info 注意
|
||||
<sup>1</sup> 這裡的 COMMIT_HASH 需要完整的 40 位
|
||||
<sup>1</sup> 這裡的 COMMIT_HASH 需要完整的 40 位元字元。
|
||||
:::
|
||||
|
||||
#### 推送(Push)
|
||||
#### 推送 (Push)
|
||||
|
||||
對於一個推送中的任意提交:
|
||||
對於一次推送中的任意提交(Commit):
|
||||
|
||||
- 在 commit message 中包含以下幾種任意一個,可以在對應 issue 加上 `fixed` 標籤:
|
||||
- 在 Commit Message 中包含以下任一內容,可以為對應議題加上 `fixed` 標籤:
|
||||
- `fix #{ISSUE_NUMBER}`
|
||||
- `close #{ISSUE_NUMBER}`
|
||||
- `fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/{ISSUE_NUMBER}`
|
||||
|
||||
@@ -5,66 +5,99 @@ icon: teenyicons:linux-alt-solid
|
||||
|
||||
# Linux 編譯教學
|
||||
|
||||
**本教程需要讀者有一定的 Linux 環境配置能力及程式設計基礎!**,若您僅希望直接安裝MAA而非自行編譯,請閱讀[使用者手冊 - Linux 模擬器與容器](../manual/device/linux.md)。
|
||||
**本教學需要讀者具備一定的 Linux 環境配置能力與程式設計基礎!** 若您僅希望直接安裝 MAA 而非自行編譯,請參閱[用戶手冊 - Linux 模擬器與容器](../manual/device/linux.md)。
|
||||
|
||||
::: info 注意
|
||||
MAA 的構建方法仍在討論中, 本教程的內容可能過時, 請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的指令碼為準。也可參考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights)、[nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)。
|
||||
MAA 的建置方法仍在討論中,本教學內容可能過時,請以 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134) 中的腳本為準。
|
||||
您也可以參考 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 或 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)。
|
||||
:::
|
||||
|
||||
::: info
|
||||
Mac 使用者可以使用 `tools/build_macos_universal.zsh` 腳本進行編譯。
|
||||
建議參考 MaaAssistantArknights/MaaMacGui 專案的 [README.md](https://github.com/MaaAssistantArknights/MaaMacGui/blob/master/README.md)。
|
||||
:::
|
||||
|
||||
## 編譯過程
|
||||
|
||||
1. 下載編譯所需的依賴
|
||||
- Ubuntu/Debian
|
||||
:::: steps
|
||||
|
||||
```bash
|
||||
sudo apt install gcc-14 g++-14 cmake zlib1g-dev
|
||||
1. 下載編譯所需的依賴項目
|
||||
::: code-tabs
|
||||
@tab:active Ubuntu/Debian
|
||||
|
||||
```bash :no-line-numbers
|
||||
sudo apt install cmake
|
||||
```
|
||||
|
||||
2. 構建第三方庫
|
||||
- 下載預構建的第三方庫
|
||||
@tab Arch
|
||||
|
||||
> **Note**
|
||||
> 包含在相對較新的 Linux 發行版 (Ubuntu 22.04) 中編譯的動態庫,如果您系統中的 libstdc++ 版本較老,可能遇到 ABI 不兼容的問題。
|
||||
```bash :no-line-numbers
|
||||
sudo pacman -S --needed cmake
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
2. 建置第三方函式庫
|
||||
|
||||
可以選擇下載預編譯的函式庫,或從原始碼編譯。
|
||||
- 下載預編譯的第三方函式庫(推薦)
|
||||
|
||||
> [!Note]
|
||||
> ~~先前提供的動態連結庫是在較新的 Linux 發行版 (Ubuntu 22.04) 中編譯的,若您的系統 libstdc++ 版本較舊,可能會遇到 ABI 不相容的問題。~~
|
||||
> 目前已透過交叉編譯降低了執行環境要求,僅需相依於 glibc 2.31 (Ubuntu 20.04)。
|
||||
|
||||
```bash
|
||||
python tools/maadeps-download.py
|
||||
```
|
||||
|
||||
- 自行構建第三方庫
|
||||
如果您發現上述預編譯庫因 ABI 版本等原因無法在您的系統執行,且不打算使用容器等方案,也可以嘗試自行編譯。
|
||||
- 自行建置第三方函式庫(耗時較長)
|
||||
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
python maadeps-build.py
|
||||
git clone https://github.com/MaaAssistantArknights/MaaDeps
|
||||
cd MaaDeps
|
||||
# 若系統環境版本過低無法使用我們預設提供的 LLVM 20,請考慮不使用交叉編譯,直接使用在地編譯環境。
|
||||
# 需調整 src/MaaUtils/MaaDeps/cmake 中的 toolchain 設定。
|
||||
python linux-toolchain-download.py
|
||||
python build.py
|
||||
```
|
||||
|
||||
3. 編譯 MAA
|
||||
|
||||
```bash
|
||||
mkdir -p build
|
||||
CC=gcc-14 CXX=g++-14 cmake -B build \
|
||||
cmake -B build \
|
||||
-DINSTALL_RESOURCE=ON \
|
||||
-DINSTALL_PYTHON=ON
|
||||
-DINSTALL_PYTHON=ON \
|
||||
-DCMAKE_TOOLCHAIN_FILE=src/MaaUtils/MaaDeps/cmake/maa-x64-linux-toolchain.cmake
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
來將 MAA 安裝到目標位置,注意 MAA 推薦通過指定 `LD_LIBRARY_PATH` 來執行,不要使用以系統管理員身分將 MAA 裝入 `/`
|
||||
將 MAA 安裝到目標路徑。請注意,MAA 建議透過指定 `LD_LIBRARY_PATH` 來執行,請勿使用管理員權限將 MAA 安裝至 `/usr` 目錄。
|
||||
|
||||
> 目前應該不需指定 `LD_LIBRARY_PATH` 即可正常執行。
|
||||
|
||||
```bash
|
||||
cmake --install build --prefix <target_directory>
|
||||
```
|
||||
|
||||
## 集成文件
|
||||
4. 結束,您現在應該能在目錄下看到建置完成的檔案了。
|
||||
|
||||
::::
|
||||
|
||||
## 整合文件
|
||||
|
||||
[~~或許算不上文件~~](../protocol/integration.md)
|
||||
|
||||
### Python
|
||||
|
||||
可參考 [Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py) 中 `__main__` 的實現
|
||||
可參考 [Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py) 中 `__main__` 中的實作方式。
|
||||
|
||||
### C++
|
||||
|
||||
可參考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的實現
|
||||
可參考 [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) 中的實作方式。
|
||||
|
||||
### C Sharp
|
||||
|
||||
可參考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的實現
|
||||
<!-- Do not use C#, MD003/heading-style: Heading style [Expected: atx; Actual: atx_closed] -->
|
||||
|
||||
可參考 [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) 中的實作方式。
|
||||
|
||||
@@ -7,41 +7,39 @@ icon: ri:earth-fill
|
||||
|
||||
## 準備工作
|
||||
|
||||
在開始這個教學之前,請確保你已經:
|
||||
在開始本教學之前,請確保您已經:
|
||||
|
||||
1. 安裝並正確配置了所需軟體。在陸服或相應用戶端的 `readme.md` 中應該會有相關資訊,確保所支援的功能可以正常執行。
|
||||
2. 閱讀了 `3.4-任務流程協議.md`,對各個欄位的含義和用法有基本瞭解,並能理解 `@`、`#` 類型任務的含義和用法。
|
||||
3. 瞭解外服的 `task.json` 和範本圖片中未提及的和缺少的內容會使用陸服的 `task.json` 和範本圖片等內容作為備選。外服的 `task.json` 中的內容會覆蓋並重寫陸服對應任務的相應欄位。
|
||||
4. 具備一定的英語能力,能夠閱讀英文日誌,並能通過日誌找出缺失的圖片等資訊。
|
||||
5. 建議按照任務鏈進行修改。例如,對於 `Award` 任務,根據陸服 `task.json` 中 `Award` 任務的 `next` 順序逐步替換 `範本圖片` / `文字` / `修改 roi`,以確保修改後的每一步都能正常執行,或者能夠迅速發現錯誤。這樣可以避免因為一次修改修改了太多內容而不清楚程式因為哪一步卡住而不能執行。
|
||||
1. 安裝並正確配置所需軟體:請參考官服或對應客戶端的 `README.md`,確保目前支援的功能皆可正常執行。
|
||||
2. 閱讀 [任務流程協議](../protocol/task-schema.md):對各欄位的含義與用法有基本了解,並理解 `@`、`#` 類型任務的定義。
|
||||
3. 理解資源覆蓋邏輯:外服的 `task.json` 與範本圖片中未提及或缺失的內容,會自動以官服內容作為備選;若外服的 `task.json` 中已定義相關欄位,則會覆蓋並重寫官服的設定。
|
||||
4. 具備基本英文能力:需能閱讀英文日誌(Log),並能透過日誌分析缺失的圖片或資訊。
|
||||
5. 建議按任務鏈進行修改:例如針對 `Award` 任務,建議根據官服 `task.json` 的 `next` 順序,逐步替換「範本圖片」、「文字」或「修改 ROI」,確保每一步修改都能正常執行。這有助於快速定位錯誤,避免因一次改動過多而難以偵錯。
|
||||
|
||||
### 修改前準備
|
||||
|
||||
在進行修改之前,有幾個準備工作需要注意:
|
||||
1. 參考官服 `task.json`,準備好外服專用的範本圖片與文字內容。
|
||||
2. 確保在修改過程中能隨時獲取這些素材。
|
||||
|
||||
1. 參考陸服 task.json,確保你已經準備好了與陸服不同的用於外服的範本圖片和文字內容。
|
||||
2. 確保你能夠隨時獲取這些圖片和文字內容。
|
||||
## 獲取螢幕截圖
|
||||
|
||||
## 獲取截圖
|
||||
為了獲取高品質的截圖,請遵循以下指南:
|
||||
|
||||
為了獲取高品質的截圖,請依照以下說明:
|
||||
1. 使用模擬器內建的截圖工具進行擷取並儲存。
|
||||
2. 截圖尺寸需大於 `1280*720`,長寬比為 `16:9`。
|
||||
3. 截圖中不應包含無關內容(如:系統任務欄、狀態列、通知中心等)。
|
||||
4. 確保截圖涵蓋所有需要辨識的內容。
|
||||
|
||||
1. 使用模擬器內建的截圖工具進行截圖並保存。
|
||||
2. 確保截圖的尺寸大於 `1280*720`,長寬比為 `16:9`。
|
||||
3. 確保截圖中不包含任何無關內容,例如任務欄、狀態欄、通知欄等。
|
||||
4. 確保截圖中包含所有需要辨識的內容。
|
||||
為了裁剪圖片並獲取文字或圖片的 `ROI`,建議使用 `MaaAssistantArknights/tools/ImageCropper` 工具。
|
||||
|
||||
為了裁剪圖片並獲取文字 / 圖片 `roi`,你需要使用 `MaaAssistantArknights/tools/ImageCropper` 工具。
|
||||
**ImageCropper** 是一個功能強大的工具,支援對預先準備好的截圖或透過 ADB 連線設備進行 ROI 區域擷取、儲存及取色操作。
|
||||
|
||||
**ImageCropper** 是一個強大的截圖工具,支援對預先準備好的截圖或透過 ADB 連接裝置進行 ROI 區域的截取、保存、取色操作。
|
||||
### 環境配置
|
||||
|
||||
### 環境設定
|
||||
需要 `Python` 環境,推薦版本為 `3.11`,最低需求為 `3.9` 以上。
|
||||
|
||||
需要 `python` 環境,推薦版本為 `3.11`,最低版本為 `3.9` 以上。
|
||||
### 安裝依賴項目
|
||||
|
||||
### 安裝依賴
|
||||
|
||||
Windows 使用者推薦直接執行 `install.bat`,或手動安裝:
|
||||
Windows 用戶推薦直接執行 `install.bat`,或手動安裝:
|
||||
|
||||
```shell
|
||||
python -m pip install -r requirements.txt
|
||||
@@ -49,23 +47,23 @@ python -m pip install -r requirements.txt
|
||||
|
||||
### 使用步驟
|
||||
|
||||
1. 如果有預先準備好的截圖,需保存到 `./src/` 路徑下
|
||||
2. 執行 `start.bat` 或 `python main.py [device serial]`(裝置位址為可選)
|
||||
- 工具會自動搜尋已連接的 ADB 裝置,根據提示選擇裝置(按 ENTER 跳過選擇)
|
||||
- 也可以直接使用 `python main.py [device serial]` 連接指定裝置
|
||||
3. 在彈窗中左鍵選擇目標區域,滾輪縮放圖片,右鍵移動圖片
|
||||
4. 使用快捷鍵操作:
|
||||
- 按 `S` 或 `ENTER` 保存目標區域
|
||||
- 按 `F` 保存全螢幕標準化截圖
|
||||
- 按 `R` 不保存,只輸出 ROI 範圍
|
||||
- 按 `C` 不保存,輸出 ROI 範圍和 ColorMatch 的所需欄位
|
||||
- 按 `Z`、`DELETE` 或 `BACKSPACE` 撤銷
|
||||
- 按 `0` ~ `9` 縮放視窗
|
||||
- 按 `Q` 或 `ESC` 退出
|
||||
- 按任意鍵跳過 / 更新當前截圖
|
||||
5. 目標區域截圖保存在 `./dst/` 路徑下
|
||||
1. 若有預先準備好的截圖,請存放到 `./src/` 路徑下。
|
||||
2. 執行 `start.bat` 或 `python main.py [device serial]`(設備位址為選填)。
|
||||
- 工具會自動搜尋已連線的 ADB 設備,請根據提示選擇(按 ENTER 跳過選擇)。
|
||||
- 亦可直接使用 `python main.py [device serial]` 連線指定設備。
|
||||
3. 在視窗中左鍵選擇目標區域,滾輪縮放圖片,右鍵移動圖片。
|
||||
4. 可使用快捷鍵操作:
|
||||
- `S` 或 `ENTER`:儲存目標區域。
|
||||
- `F`:儲存全螢幕標準化截圖。
|
||||
- `R`:不儲存,僅在控制台輸出 ROI 範圍。
|
||||
- `C`:不儲存,輸出 ROI 範圍與 ColorMatch 所需欄位。
|
||||
- `Z`、`DELETE` 或 `BACKSPACE`:復原。
|
||||
- `0` ~ `9`:縮放視窗。
|
||||
- `Q` 或 `ESC`:退出。
|
||||
- 任意鍵:跳過或重新整理目前截圖。
|
||||
5. 裁剪後的圖片會儲存在 `./dst/` 路徑下。
|
||||
|
||||
例如完成一次裁剪後的輸出內容為:
|
||||
範例輸出內容:
|
||||
|
||||
```log
|
||||
src: Screenshot_xxx.png
|
||||
@@ -74,71 +72,65 @@ original roi: 476, 322, 77, 101,
|
||||
amplified roi: 426, 272, 177, 201
|
||||
```
|
||||
|
||||
其中,
|
||||
其中:
|
||||
|
||||
`Screenshot_xxx.png` 為放入 `src` 資料夾的完整截圖的名稱。`Screenshot_xxx.png_426,272,177,201.png` 為截取後的圖片。
|
||||
`Screenshot_xxx.png` 為放入 `src` 資料夾的完整截圖檔案名稱。`Screenshot_xxx.png_426,272,177,201.png` 為截取後的圖片。
|
||||
|
||||
`original roi` 為滑鼠選取的區域。`amplified roi` 為擴大後的區域,你需要的是擴大後的範圍,因此在 `task.json` 中的 `roi` 欄位填入的就是這個值。
|
||||
`original roi` 為滑鼠選取的原始區域。`amplified roi` 為擴大後的區域,您在 `task.json` 中的 `roi` 欄位中應填入此數值。
|
||||
|
||||
## 修改範本圖片
|
||||
|
||||
在修改範本圖片之前,需要打開對應用戶端的範本圖片資料夾和陸服的範本圖片資料夾。
|
||||
在修改範本圖片之前,需要先開啟對應客戶端的範本圖片資料夾,以及官服的範本圖片資料夾。
|
||||
|
||||
例如:
|
||||
|
||||
- 美服的範本圖片資料夾位置為 `MaaAssistantArknights\resource\global\YoStarEN\resource\template`。
|
||||
- 陸服的範本圖片資料夾位置為 `MaaAssistantArknights\resource\template`。
|
||||
- 官服的範本圖片資料夾位置為 `MaaAssistantArknights\resource\template`。
|
||||
|
||||
參考 `task.json` 中提到的範本圖片,對比陸服和外服的範本圖片,找出外服中缺少的範本。
|
||||
請參考 `task.json` 中提到的範本圖片,對比官服和外服的範本圖片,找出外服中缺少的範本。
|
||||
|
||||
通常情況下,除了標誌等圖片,包含文字的範本都需要通過截圖來替換。如果圖片尺寸明顯大於陸服的對應範本圖片,則需要修改 `roi` 的大小。
|
||||
通常情況下,除了標誌 (Logo) 等圖片外,包含文字的範本都需要透過螢幕截圖來替換。如果圖片尺寸明顯大於官服對應的範本圖片,則需要修改 `roi` 的大小。
|
||||
|
||||
將截取並重新命名完成的範本圖片放入對應用戶端的範本圖片資料夾。
|
||||
將截取並重新命名完成的範本圖片,放入對應客戶端的範本圖片資料夾中。
|
||||
|
||||
## 修改文字內容
|
||||
|
||||
在修改文字內容之前,需要打開對應伺服器的 `task.json` 和陸服的 `task.json`。
|
||||
在修改文字內容之前,需要開啟對應客戶端的 `task.json` 與官服的 `task.json`。
|
||||
|
||||
例如:
|
||||
|
||||
- 美服的 `task.json` 位置為 `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`。
|
||||
- 陸服的 `task.json` 位置為 `MaaAssistantArknights\resource\tasks.json`。
|
||||
- 官服的 `task.json` 位置為 `MaaAssistantArknights\resource\tasks.json`。
|
||||
|
||||
找到對應任務,將 `text` 欄位修改為對應伺服器內顯示的內容。注意,辨識的內容可以是遊戲內完整內容的字串。
|
||||
找到對應任務後,將 `text` 欄位修改為該客戶端內顯示的內容。請注意,辨識內容可以是遊戲中完整內容的部分字串。
|
||||
|
||||
通常情況下,除非是純 ASCII 字元辨識,否則包含文字的 `text` 都需要替換。
|
||||
通常情況下,除非是純 ASCII 字元辨識,否則包含文字的 `text` 都建議替換。若文字長度明顯大於官服(例如 `"任務"` 與 `"Mission"` 長度差距過大),則需要調整外服該任務的 `roi` 大小。
|
||||
|
||||
如果文字長度明顯大於陸服,則需要修改 `roi` 的大小,如 `"任務"` 和 `"Mission"` 長度差距過大,則需要修改外服該任務 `roi` 的大小。
|
||||
|
||||
如果對應外服的 `task.json` 中沒有該任務,則需要添加任務,只需要填寫 `text` 欄位即可。
|
||||
若對應客戶端的 `task.json` 中沒有該任務,則需手動新增任務,並填寫 `text` 欄位即可。
|
||||
|
||||
## 修改 ROI 範圍
|
||||
|
||||
1. 打開對應伺服器的 `task.json`,如美服的位置為 `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`
|
||||
2. 找到對應需要修改的 `roi` 範圍的任務,使用您準備好的外服遊戲介面截圖,根據 `amplified roi`,調整 `roi` 範圍的大小。
|
||||
3. 通常情況下, `roi` 不需要修改,只有和陸服的辨識內容大小差距過大時才需要修改。
|
||||
4. 如對應外服的 `task.json` 中任務不存在,則新增任務,寫上 `roi` 欄位。
|
||||
1. 開啟對應客戶端的 `task.json`(例如美服路徑: `MaaAssistantArknights\resource\global\YoStarEN\resource\tasks.json`)。
|
||||
2. 找到對應需要修改 `roi` 範圍的任務,使用您準備好的外服截圖,根據 `amplified roi` 數值來調整 `roi` 的範圍大小。
|
||||
3. 通常情況下 `roi` 不需要修改,只有當辨識內容與官服的大小差距過大時才需要調整。
|
||||
4. 若外服客戶端的 `task.json` 中該任務不存在,則手動新增並填上 `roi` 欄位。
|
||||
|
||||
## 保存設定並重新啟動軟體
|
||||
## 儲存設定並重新啟動軟體
|
||||
|
||||
在修改完成後,重新啟動軟體,重新載入檔案,使修改生效。
|
||||
|
||||
或在軟體目錄下新建一個 `DEBUG.txt`,這樣每次點擊開始都會重新載入範本和文件,不需要重開。
|
||||
修改完成後,重新啟動軟體以載入文件並使修改生效。或者,您也可以在軟體目錄下新建一個 `DEBUG.txt` 再開啟軟體,如此一來每次點擊「Link Start」時程式都會重新載入範本與檔案,無需反覆重啟。
|
||||
|
||||
檢查是否成功:
|
||||
|
||||
1. 檢查軟體的執行情況,確保軟體能夠在外服中正常使用。
|
||||
2. 如不能正常執行,需要檢查修改是否正確,或查看日誌輸出,進而找到出錯的地方。
|
||||
1. 檢查軟體執行狀況,確保軟體能在外服環境中正常使用。
|
||||
2. 若無法正常運作,請檢查修改內容是否正確,或查看日誌輸出來定位出錯位置。
|
||||
|
||||
## 解讀日誌
|
||||
## 解讀日誌 (Log)
|
||||
|
||||
有些時候,我們修改完了 `task.json` 之後發現程式仍然不能正確執行,這時候我們考慮考慮查看日誌找到出錯的地方,進而修改對應任務。
|
||||
有時候修改完 `task.json` 後發現程式仍無法正確執行,此時可以透過查看日誌來找出錯誤點,進而修改對應任務。
|
||||
|
||||
日誌檔的位置在軟體的根目錄下,檔案名為 `asst.log`。
|
||||
日誌檔案位於軟體根目錄下,檔名為 `asst.log`。如果您是自行編譯 MAA,則日誌會在 `\x64\Release` 或 `x64\RelWithDebInfo` 資料夾中(具體路徑視編譯模式而定)。
|
||||
|
||||
如果你是自己編譯的 MAA ,則在 `\x64\Release` 或 `x64\RelWithDebInfo` ,具體在哪個資料夾取決你編譯時選擇的編譯模式。
|
||||
|
||||
下面是一段日誌範例:
|
||||
以下是一段日誌範例:
|
||||
|
||||
```log
|
||||
[2022-12-18 17:43:17.535][INF][Px7ec][Tx15c8] {"taskchain":"Award","details":{"to_be_recognized":["Award@ReturnTo","Award","ReceiveAward","DailyTask","WeeklyTask","Award@CloseAnno","Award@CloseAnnoTexas","Award@TodaysSupplies","Award@FromStageSN"],"cur_retry":10,"retry_times":20},"first":["AwardBegin"],"taskid":2,"class":"asst::ProcessTask","subtask":"ProcessTask","pre_task":"AwardBegin"}
|
||||
@@ -154,23 +146,20 @@ amplified roi: 426, 272, 177, 201
|
||||
[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | enter
|
||||
```
|
||||
|
||||
在這段日誌中,你可以看到:
|
||||
在範例日誌中,您可以看到:
|
||||
|
||||
- `taskchain` 代表當前進行中的任務。
|
||||
- `details` 是任務的內容,包括需要辨識的欄位(`to_be_recognized`)和當前重試次數(`cur_retry`)和總重試次數(`retry_times`)。
|
||||
- `first` 代表任務的開始。
|
||||
- `taskid` 是任務的編號。
|
||||
- `class` 和 `subtask` 分別代表任務的類別和子任務。
|
||||
- `pre_task` 代表前一個任務。
|
||||
- `taskchain`:代表目前執行中的任務鏈。
|
||||
- `details`:任務的具體內容,包含待辨識欄位 (`to_be_recognized`)、目前重試次數 (`cur_retry`) 以及總重試次數 (`retry_times`)。
|
||||
- `first`:代表任務的起始。
|
||||
- `taskid`:任務編號。
|
||||
- `class` 和 `subtask`:分別代表任務類別與子任務。
|
||||
- `pre_task`:代表前一個執行的任務。
|
||||
此外,日誌還會記錄指令的執行狀況(如 `Call`)和 `OCR` 與 OCR 辨識資訊(如 `OcrPack::recognize`)。
|
||||
|
||||
此外,日誌中還會記錄命令的執行情況(如 `Call`)和 `OCR` 的資訊(如 `OcrPack::recognize`)。
|
||||
在範例日誌中,`"to_be_recognized"`,`"cur_retry":3,"retry_times":20` 表示已重複辨識 3 次(上限為 20 次),一旦達到上限就會跳過該任務並報錯。若先前的任務沒問題,基本可以確定是此處辨識出錯。此時應檢查日誌提到的任務,確認是否有對應的範本圖片檔案、`text` 文字是否正確、以及 `roi` 範圍是否精準?
|
||||
|
||||
在這段日誌中 `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` 表示已經重複辨識了 10 次,最大辨識次數為 20 次,到了最大辨識次數後會跳過該任務並報錯,繼續執行下一個任務。
|
||||
透過檢查對應範本圖片,若發現外服範本資料夾中有該圖片,但尺寸明顯大於官服圖片,導致官服的 `roi` 設定無法正常辨識,此時就必須修改外服客戶端的 `task.json` 中的 `roi`,使其與外服圖片大小相符。
|
||||
|
||||
如果前面的任務沒有問題,我們基本可以確定是這裡的辨識出了問題,需要查看日誌中的提到的任務,尋找是否有對應的 `範本圖片`,對應任務的 `text` 是否錯誤,任務辨識 `roi` 範圍是否正確,進而找出問題所在並修改。
|
||||
## 提交您的修改
|
||||
|
||||
通過查看對應範本圖片,發現美服範本圖片資料夾中有這張圖的範本,但是大小明顯大於陸服圖片,導致陸服的 `roi` 用在美服上辨識不出來,所以需要修改美服的 `task.json` 中的對應任務 `roi`,使其與美服圖片大小對應。
|
||||
|
||||
## 提交你的修改
|
||||
|
||||
請參考 [Github Pull Request 說明](../develop/pr-tutorial.md)。
|
||||
請參考 [GitHub Pull Request 指南](./pr-tutorial.md)
|
||||
|
||||
@@ -5,22 +5,22 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
# 純網頁端 PR 教學
|
||||
|
||||
牛牛也能看懂的 GitHub Pull Request 使用指南 (\*´▽`)ノノ
|
||||
牛牛也能看懂的 GitHub Pull Request 使用指南 (\*´▽ `)ノノ
|
||||
|
||||
::: warning
|
||||
本教學中對很多概念進行了簡化,為了讓更多朋友能實際用起來,甚至有一些很不優雅~~但是簡單~~的操作,還有一些不那麽正確的解釋,還請大佬們輕噴。
|
||||
若您有一定的 git 使用經驗及程式基礎,~~那你還看個~~🔨,可以看稍微進階一點的教學 [Github Pull Request 流程簡述](development.md)
|
||||
本教學中對許多概念進行了簡化,為了讓更多朋友能實際上手,甚至有一些不那麼「優雅」~~但簡單~~的操作,以及一些不完全精確的解釋,還請各位大神手下留情。
|
||||
若您具備一定的 Git 使用經驗及程式設計基礎,~~那你還看這個 🔨~~,可以參考進階版的教學:[GitHub Pull Request 流程簡述](./development.md)。
|
||||
:::
|
||||
|
||||
## 基本概念及名詞解釋
|
||||
|
||||
這一章節內容略微枯燥,不感興趣可以直接跳過到下面實作部分,有不理解的再回來看
|
||||
這一章節內容略顯枯燥,如果不感興趣可以直接跳到下面的實作部分,遇到不理解的地方再回來查看。
|
||||
|
||||
### Repository(倉庫)
|
||||
|
||||
簡稱 repo,存放我們代碼及其他資源檔案的地方
|
||||
簡稱 Repo 或倉庫,是存放程式碼及其他資源檔案的地方。
|
||||
|
||||
👇 可以簡單理解為目前這個網頁及裡面所有的內容,就是 MAA 的倉庫(我們一般稱之為 MAA 的主倉庫)
|
||||
👇 可以簡單理解為目前這個網頁及其所有內容,就是 MAA 的倉庫(我們一般稱之為 MAA 的主倉庫)。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -31,12 +31,11 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
### Fork(複製)
|
||||
|
||||
複製,字面意思,將 MAA 的代碼複製一份,然後可以進行後續修改等等的操作,避免把原來的弄壞了
|
||||
但一般說中文 “複製” 我們可能首先想到的是 copy 的意思,fork 也沒有其他明確的翻譯,所以我們一般習慣直接說英文,比如 “把代碼 fork 一份走”
|
||||
複製,字面意思就是將 MAA 的程式碼完整複製一份到自己的帳號下,以便進行後續修改,避免不小心弄壞原本的內容。
|
||||
在中文語境中,「複製」一詞首先想到的可能是 copy,而 fork 也沒有其他明確的中文翻譯,所以我們通常直接說英文,例如:「把程式碼 Fork 一份走」。
|
||||
|
||||
既然是複製後的,那就是 `MAA (1)`(bushi)
|
||||
為了和原本的倉庫區分開,所以我們一般將原本的 MAA 倉庫稱為 “主倉庫”、“upstream (上遊倉庫)”、“origin (原倉庫)”;
|
||||
因為每個人都可以自己複製一份走,所以複製後的稱之為 “個人倉庫”
|
||||
為了區分,我們通常將原本的 MAA 倉庫稱為 **「主倉庫」** 或 **「Upstream(上游倉庫)」**。
|
||||
而從主倉庫 Fork 出來的則稱為 **「個人倉庫」** 或 **「Origin(遠端倉庫)」**。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -47,12 +46,12 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
### Pull Request(拉取請求、合併請求)
|
||||
|
||||
簡稱 PR,“拉取請求” 這個太直譯了,聽起來很奇怪,~~而且字太多了打起來太累~~,所以也是一樣的大家一般就直接說: “來個 PR”
|
||||
書接上文,你 fork(複製)的個人倉庫,修改完了,怎麽把內容提供給主倉庫呢?這時候我們就可以開一個 PR,申請將自己修改的內容加入到主倉庫中。
|
||||
簡稱 PR。因為「拉取請求」聽起來很生硬且字數較多,~~而且字太多了打起来太累~~,大家通常直接說:「發個 PR」。
|
||||
延續前文,當您在 Fork 出來的個人倉庫修改完成後,該如何將內容提供給主倉庫呢?這時就可以發起一個 PR,申請將自己修改的內容合併到主倉庫中。
|
||||
|
||||
當然啦,既然是 “請求”,那自然是需要審批的,MAA Team 的各位可能會針對你的修改提一些意見等,當然我們的意見也不一定完全正確,大家合理討論 ~
|
||||
當然,既然是「請求」,就代表需要經過審核。MAA Team 的成員會針對您的修改提供建議,大家可以理性討論,共同完善內容。
|
||||
|
||||
👇 下面的是目前大佬們提的 PR,正在等待審批的
|
||||
👇 以下是目前大佬發起的 PR,正等待審核中。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -63,14 +62,14 @@ icon: mingcute:git-pull-request-fill
|
||||
|
||||
### Conflict(衝突)
|
||||
|
||||
假設一下,主倉庫中有個 A 檔案,它的內容是 111
|
||||
你 fork 了一份,將其內容改成了 222,但是你剛準備提交 PR,這時候張三也 fork 了一份並提交了 PR,並將 A 檔案改成了 333
|
||||
這時候我們就會看到,你倆都修改了 A 檔案,並且修改的不同,那聽誰的好呢?這就是 Conflict(衝突)
|
||||
衝突解決起來比較麻煩,這裡僅闡述概念,方便實際遇到時能理解發生了什麽,暫不闡述解決方案
|
||||
假設主倉庫中有個 A 檔案,內容是 `111`。
|
||||
您 Fork 了一份並改為 `222`;但在您提交 PR 之前,另一位開發者張三也提交了 PR 並將 A 檔案改成了 `333`。
|
||||
這時系統會發現你們兩人都修改了同一個地方,且內容不同,程式不知道該聽誰的,這就是 Conflict(衝突)。
|
||||
衝突處理起來較為複雜,此處僅闡述概念,讓您在遇到時能理解發生了什麼事。
|
||||
|
||||
## 純網頁端 PR 操作全流程
|
||||
|
||||
1. 首先進入 MAA 主倉庫,fork 一份代碼
|
||||
1. 首先進入 MAA 主倉庫,點擊右上角的 Fork 按鈕。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -79,7 +78,7 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
2. 把 “僅 master 分支” 這個選項去掉,然後點擊 Create Fork
|
||||
2. 接著直接點擊 Create Fork。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -88,7 +87,7 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
3. 接下來來到了你的個人倉庫,可以看到標題是 “你的名字/MaaAssistantArknights”,下面一行小字 forked from MaaAssistantArknights/MaaAssistantArknights (複製自 MAA 主倉庫)
|
||||
3. 現在來到了您的個人倉庫,標題會顯示為 `您的帳號名稱/MaaAssistantArknights`,下方會有一行小字標註 `forked from MaaAssistantArknights/MaaAssistantArknights`(複製自 MAA 主倉庫)。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -97,7 +96,7 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
4. 找到你要改的檔案,可以點 “Go to file” 進行全局搜尋,也可以直接在下面的資料夾裡翻(如果你知道檔案在哪的話)
|
||||
4. 找到要修改的檔案。可以點擊 Go to file 進行全域搜尋,如果您知道文件在哪裡的話,也可以直接在下方的資料夾翻找。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -106,7 +105,7 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
5. 打開檔案後,直接點擊檔案右上角的 ✏️ 進行編輯
|
||||
5. 開啟檔案後,點擊右上角的 ✏️ 按鈕進行編輯。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -115,8 +114,9 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
6. 開改!(當然如果是資源檔案這種,我們建議先在你電腦上的 MAA 資料夾裡測試修改,確認沒問題了再貼上到網頁上,避免改錯了)
|
||||
7. 改完了,翻到最下面,寫一下你改了啥
|
||||
6. 開始修改!(如果是資源檔案,建議先在電腦上的 MAA 資料夾測試,確認沒問題後再貼到網頁上,以免改錯)。
|
||||
|
||||
7. 修改完成後,點擊右上角的 👇 這個按鈕開啟提交頁面,並寫下您的修改說明。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -125,6 +125,8 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
我們有一套簡單的提交標題[命名格式](https://www.conventionalcommits.org/zh-hans/v1.0.0/),建議盡量遵守;若暫時無法理解,也可以先簡單描述。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/pr-tutorial/pr-7-2-light.png',
|
||||
@@ -132,9 +134,10 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
8. 還有第二個檔案要改的?改完了發現弄錯了想再改改?都沒關係!重複 5-8 即可!
|
||||
9. 全改好了進行 PR !直接點 **個人倉庫** 裡的 Pull Request 標籤頁
|
||||
如果有 Compare & Pull Request 按鈕,那最好,直接點他!如果沒有也不用著急,點下面的 New Pull Request 也是一樣的(請看步驟 11)
|
||||
8. 還有其他檔案要改?或是發現改錯了想再修補?沒關係!重複步驟 4-7 即可。
|
||||
|
||||
9. 全部改好後,準備發起 PR!點擊 Code 回到**個人倉庫**首頁。
|
||||
如果有出現 Compare & Pull Request 按鈕,請直接點擊它;若沒看到,點擊下方的 Contribute(貢獻)按鈕,再點 Open Pull Request 也是一樣的。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -143,8 +146,8 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
10. 這時候來到了主倉庫,請核對一下你要 PR 的是否確認。
|
||||
如圖中,中間有個向左的箭頭,是將右邊的 個人姓名/MAA 的 dev 分支,申請合併到 主倉庫/MAA 的 dev 分支。
|
||||
10. 此時會進入主倉庫的 PR 頁面,請核對提交內容是否正確。
|
||||
如下圖所示,箭頭方向是將右側「您的帳號 / MAA」的 `dev` 分支合併到「主倉庫 / MAA」的 `dev` 分支。頁面下方會顯示兩者間的差異。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -153,7 +156,8 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
然後寫一下標題,你修改的具體內容等等的,然後點確認
|
||||
接著填寫標題與具體修改內容,最後點擊確認。
|
||||
PR 標題同樣建議遵循[命名格式](https://www.conventionalcommits.org/zh-hans/v1.0.0/)。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -162,42 +166,31 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
11. 等待 MAA Team 的大佬們審核吧!當然他們也可能會提意見
|
||||
👇 比如(純屬娛樂切勿當真)
|
||||
11. 接下來請耐心等待 MAA Team 的審核!當然他們可能也會提出自己的意見。
|
||||
👇 比如(純屬娛樂,請勿當真)
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/pr-tutorial/pr-11-light.png',
|
||||
dark: 'images/zh-cn/pr-tutorial/pr-11-dark.png'
|
||||
}
|
||||
]" />
|
||||
{
|
||||
light: 'images/zh-cn/pr-tutorial/pr-11-light.png',
|
||||
dark: 'images/zh-cn/pr-tutorial/pr-11-dark.png'
|
||||
}
|
||||
]" />
|
||||
|
||||
12. 如果大佬們說要再修改一些小問題的話,回到 **你的個人倉庫**,切換到先前的 dev 分支,重複 步驟 3-9 即可!
|
||||
注意不需要操作步驟 2(重新 fork),也不需要操作步驟 10(重新 Pull Request),你目前的 Pull Request 仍處於待審核狀態,後續的修改會直接進入到這個 Pull Request 中
|
||||
👇 比如可以看到最下面多了一條 “重新修改演示” 的內容
|
||||
12. 若大佬要求針對細節進行修正,請回到**您的個人倉庫**,重複步驟 4-7 即可。
|
||||
請注意,不需要重新 Fork(步驟 1-2)或重新發起 PR(步驟 9-10)。您目前的 PR 仍處於開啟狀態,後續的修改會自動更新到同一個 PR 中。
|
||||
👇 可以看到最下面多了一條「重新修改演示」的內容
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
light: 'images/zh-cn/pr-tutorial/pr-12-light.png',
|
||||
dark: 'images/zh-cn/pr-tutorial/pr-12-dark.png'
|
||||
}
|
||||
]" />
|
||||
{
|
||||
light: 'images/zh-cn/pr-tutorial/pr-12-light.png',
|
||||
dark: 'images/zh-cn/pr-tutorial/pr-12-dark.png'
|
||||
}
|
||||
]" />
|
||||
|
||||
13. 等大佬們審批通過,就全部完成啦!**版本發布後**,你的 GitHub 頭像將會自動進入到貢獻者列表名單中,非常感謝各位的無私奉獻!
|
||||
~~怎麽全是二次元啊,哦我也是啊,那沒事了~~
|
||||
::: tip 貢獻 / 參與者
|
||||
感謝所有參與到開發 / 測試中的朋友們,是大家的幫助讓 MAA 越來越好! (\*´▽`)ノノ
|
||||
13. 當大佬們審核通過並被合併(Merged)後,就大功告成了!您的修改已正式進入 MAA 主倉庫。
|
||||
|
||||
[](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
|
||||
:::
|
||||
|
||||
14. 下次如果還想提別的 PR,請先切換到 dev 分支,然後直接如下圖操作
|
||||
::: warning
|
||||
這個操作會強制將你的個人倉庫同步到和主倉庫一模一樣的狀態,這是最簡單粗暴但行之有效的解決衝突的方法。但如果你的個人倉庫已經有額外的編輯了,會被直接刪掉!
|
||||
:::
|
||||
如果確定不會造成衝突,請使用右側綠色的 `Update Branch` 按鈕
|
||||
|
||||
如果你不清楚 / 不 care 我上面說的這一大堆,也請點擊左側的按鈕
|
||||
14. 下次若想再發起新的 PR,請先回到個人倉庫首頁,點擊 Sync fork 讓您的倉庫與主倉庫同步。
|
||||
注意:若出現紅色的 Discard 1 commit,請優先點擊它;若無,則點擊綠色的 Update branch。接著即可重複步驟 4-10 進行新的修改。
|
||||
|
||||
<ImageGrid :imageList="[
|
||||
{
|
||||
@@ -210,4 +203,10 @@ icon: mingcute:git-pull-request-fill
|
||||
}
|
||||
]" />
|
||||
|
||||
接著重複步驟 3-14,修改、提 PR 即可 ~
|
||||
在**版本發布後**,您的 GitHub 頭像將會自動出現在貢獻者名單中。非常感謝您的無私奉獻!
|
||||
~~怎麼全是二次元啊,哦我也是,那沒事了~~
|
||||
::: tip 貢獻/參與者
|
||||
感謝所有參與開發與測試的朋友,是大家的幫助讓 MAA 變得更好! (\*´▽ `)ノノ
|
||||
|
||||
[](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
|
||||
:::
|
||||
|
||||
@@ -3,129 +3,127 @@ order: 8
|
||||
icon: iconoir:code-brackets
|
||||
---
|
||||
|
||||
# 專用 VSCode 插件教學
|
||||
# 專用 VS Code 擴充功能教學
|
||||
|
||||
該插件針對 MaaAssistantArknights/MaaFramework 提供了一系列方便開發的能力,包括但不限於以下功能:
|
||||
此擴充功能針對 MaaAssistantArknights/MaaFramework 提供了一系列便利開發的功能,包括但不限於以下項目:
|
||||
|
||||
- tasks.json 支持,包含 `template 預覽`,`next 跳轉`,`任務引用` 等等
|
||||
- 截取/裁剪圖片
|
||||
- `tasks.json` 支援:包含 `template 預覽`、`next 跳轉`、`任務引用` 等。
|
||||
- 擷取與裁剪圖片。
|
||||
|
||||
具體內容可以前往 [插件商店](https://marketplace.visualstudio.com/items?itemName=nekosu.maa-support) 或是 [倉庫](https://github.com/neko-para/maa-support-extension) 查看
|
||||
具體詳細內容可以前往 [擴充功能商店](https://marketplace.visualstudio.com/items?itemName=nekosu.maa-support) 或 [GitHub 倉庫](https://github.com/neko-para/maa-support-extension) 查看。
|
||||
|
||||
## 安裝
|
||||
|
||||
推薦直接在 VSCode 的插件列表中搜索 `Maa` 來安裝
|
||||
推薦直接在 VS Code 的擴充功能清單中搜尋 `Maa` 進行安裝。
|
||||
|
||||
::: tip
|
||||
首次使用時, 插件會自動下載預設版本的資源
|
||||
搜索命令 `Maa: 選擇下載源`, 可切換下載源 (npm / cnpm)
|
||||
首次使用時,擴充功能會自動下載預設版本的資源。
|
||||
搜尋命令 `Maa: 選擇下載源`,可切換下載來源(npm / cnpm)。
|
||||
:::
|
||||
|
||||
## 功能
|
||||
## 功能介紹
|
||||
|
||||
### 控制面板
|
||||
|
||||
左側添加了專用控制面板, 圖示 
|
||||
左側活動列添加了專用控制面板,圖示如下: 
|
||||
|
||||
插件的絕大部分功能均基於 `interface.json` 配置. 在控制面板最頂部可以選擇生效的 `interface.json`.
|
||||
擴充功能絕大部分的功能皆基於 `interface.json` 配置。在控制面板最上方可以選擇目前生效的 `interface.json`。
|
||||
|
||||
插件有 `Maa` 相容模式. 當在打開文件夾下檢測到存在 `src/MaaCore` 文件夾時, 會自動啟用.
|
||||
此外,擴充功能具備 `Maa` 相容模式。當在開啟的資料夾下偵測到 `src/MaaCore` 資料夾時,系統會自動啟用該模式。
|
||||
|
||||
### 語義化資源分析
|
||||
|
||||
通過切換控制面板中的 `資源` 下拉框, 選擇預期的資源. 插件會根據對應路徑來進行索引和診斷.
|
||||
透過切換控制面板中的「資源」下拉選單選擇預期資源,擴充功能會根據對應路徑進行索引與診斷。
|
||||
|
||||
如果發現想要編輯的 json 文件沒有插件提示, 請檢查是否啟用的資源並沒有包含該文件.
|
||||
若發現想編輯的 JSON 檔案沒有出現提示,請檢查目前啟動的資源是否包含該檔案。
|
||||
|
||||
> 所謂 `任務的定義`, 指任務對象的鍵
|
||||
> 所謂「任務的定義」,是指任務物件中的鍵 (Key)。
|
||||
>
|
||||
> 所謂 `任務的引用`, 指其它任務中可以填入任務名稱的值 (例如 `next` 中)
|
||||
> 所謂「任務的引用」,是指其他任務中可以填入任務名稱的值 (Value)(例如 `next` 欄位中)。
|
||||
|
||||
#### 查詢任務定義/引用
|
||||
#### 查詢任務定義與引用
|
||||
|
||||
插件支持跳轉到定義, 跳轉到引用, 查看任務定義.
|
||||
擴充功能支援跳轉至定義、跳轉至引用,以及查看任務定義。
|
||||
|
||||
開啟 `Maa` 相容模式時, 可以解析 `模板任務`, 支持同步基類查詢任務定義和引用; 懸停任務定義, 可以查看同名圖片。
|
||||
開啟 `Maa` 相容模式時,可解析 `範本任務`,支援連動父類別查詢任務定義與引用;懸停在任務定義上時,可查看同名的範本圖片。
|
||||
|
||||
使用 `Ctrl+T` 快捷鍵,可以快速查詢並跳轉任務定義。
|
||||
使用 `Ctrl + T` 快捷鍵,可快速搜尋並跳轉至任務定義。
|
||||
|
||||
#### 查詢/打開圖片
|
||||
#### 查詢與開啟圖片
|
||||
|
||||
插件支持打開圖片.
|
||||
擴充功能支援直接開啟圖片。
|
||||
|
||||
開啟 `Maa` 相容模式時, 允許圖片路徑進行遞迴搜索.
|
||||
開啟 `Maa` 相容模式時,支援圖片路徑的遞迴搜尋。
|
||||
|
||||
#### 補全任務
|
||||
#### 任務自動補全
|
||||
|
||||
插件支持根據所有已知任務進行自動補全.
|
||||
擴充功能支援根據所有已知任務進行自動補全。
|
||||
|
||||
開啟 `Maa` 相容模式時, 輸入 `@` 將會觸發補全.
|
||||
開啟 `Maa` 相容模式時,輸入 `@` 符號將觸發補全選單。
|
||||
|
||||
#### 補全圖像路徑
|
||||
#### 補全圖片路徑
|
||||
|
||||
插件支持根據所有已知圖片路徑進行自動補全.
|
||||
擴充功能支援根據所有已知圖片路徑進行自動補全。
|
||||
|
||||
開啟 `Maa` 相容模式時, 允許圖片路徑進行遞迴搜索.
|
||||
開啟 `Maa` 相容模式時,支援圖片路徑的遞迴搜尋。
|
||||
|
||||
#### 校驗任務/圖像路徑
|
||||
#### 校驗任務與圖片路徑
|
||||
|
||||
插件支持定時掃描並分析所有任務.
|
||||
擴充功能支援定時掃描並分析所有任務:
|
||||
|
||||
- 檢查是否有重名任務定義
|
||||
- 檢查是否有未知任務引用
|
||||
- 檢查是否有未知圖片引用
|
||||
- 檢查單個任務中是否有重複的任務引用
|
||||
- 檢查是否有重複命名的任務定義。
|
||||
- 檢查是否有未知的任務引用。
|
||||
- 檢查是否有未知的圖片引用。
|
||||
- 檢查單一任務中是否有重複的任務引用。
|
||||
|
||||
#### 多路徑資源支持
|
||||
#### 多路徑資源支援
|
||||
|
||||
插件支持資源包含多個路徑, 會按照指定順序進行邏輯覆蓋, 即後載入的可以引用到前載入的內容.
|
||||
擴充功能支援資源包含多個路徑,並會按照指定順序進行邏輯覆蓋,即後載入的內容可以引用到先載入的內容。
|
||||
|
||||
### 計算任務 / 任務列表表達式 (僅 Maa)
|
||||
### 計算任務 / 任務列表運算式 (僅限 MAA)
|
||||
|
||||
通過控制面板, 可以計算任務實際展開的內容, 以及每一項的來源; 可以計算任務列表表達式展開的結果
|
||||
透過控制面板,可以計算任務實際展開的內容及其每一項的來源,亦可計算任務列表運算式展開後的結果。
|
||||
|
||||
### MaaPiCli 功能 (僅 MaaFramework 項目)
|
||||
### MaaPiCli 功能 (僅限 MaaFramework 專案)
|
||||
|
||||
通過控制面板, 可以掃描並選擇控制器, 選擇資源, 添加並管理任務, 以及執行任務.
|
||||
透過控制面板,可以掃描並選擇控制器、選擇資源、添加並管理任務,以及執行任務。
|
||||
|
||||
### 截圖裁剪 / 快速識別
|
||||
### 截圖裁剪與快速辨識
|
||||
|
||||
在 VSCode 的命令面板中搜索執行 `Maa: 打開截圖工具`, 可打開 `截圖 / 裁剪` 面板.
|
||||
在 VS Code 的命令面板中搜尋並執行 `Maa: 開啟截圖工具`,即可開啟 `截圖 / 裁剪` 面板。
|
||||
|
||||
> 使用 `Ctrl+Shift+P` (MacOS 上則是 `Command+Shift+P`) 呼出命令面板
|
||||
> 使用 `Ctrl + Shift + P` (macOS 為 `Command + Shift + P`) 呼叫命令面板。
|
||||
|
||||
- 選擇並連接控制器後, 可使用 `截圖` 按鈕直接獲取截圖
|
||||
- 可使用 `上傳` 按鈕手動上傳
|
||||
- 按住 `Ctrl` 鍵, 框選需要裁剪的區域
|
||||
- 使用滾輪可進行縮放
|
||||
- 裁剪完成後, 使用 `下載` 按鈕, 可自動將裁剪結果保存到啟用資源的最頂層的圖片目錄
|
||||
- 使用 `複製` 按鈕,可將 ROI 以陣列的形式複製到剪貼簿
|
||||
- 按下 `工具` 按鈕,將開啟識別工具面板,可以直接對目前圖片進行識別測試
|
||||
- 選擇並連線控制器後,可使用「截圖」按鈕直接獲取螢幕截圖。
|
||||
- 可使用 `上傳` 按鈕手動上傳圖片。
|
||||
- 按住 `Ctrl` 鍵,框選需要裁剪的區域。
|
||||
- 使用滑鼠滾輪可進行縮放。
|
||||
- 裁剪完成後,使用 `下載` 按鈕,可自動將裁剪結果儲存至啟動資源中最頂層的圖片目錄。
|
||||
- 使用 `複製` 按鈕,可將 ROI 以陣列形式複製到剪貼簿。
|
||||
- 按下 `工具` 按鈕將開啟辨識工具面板,可直接對當前圖片進行辨識測試。
|
||||
|
||||
::: warning
|
||||
若 OCR 的辨識結果為空,請檢查 [OCR 模型](https://github.com/MaaXYZ/MaaFramework/blob/main/docs/zh_cn/1.1-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.md#%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B%E6%96%87%E4%BB%B6) 是否配置正確。
|
||||
|
||||
如果 OCR 的識別結果為空, 請檢查 [OCR 模型](https://github.com/MaaXYZ/MaaFramework/blob/main/docs/zh_cn/1.1-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.md#%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B%E6%96%87%E4%BB%B6) 是否已正確配置.
|
||||
|
||||
對於 MAA, 插件將自動維護使用的模型, 只需要選擇正確的資源即可.
|
||||
|
||||
針對 MAA,擴充功能將自動維護所使用的模型,您只需要選擇正確的資源即可。
|
||||
:::
|
||||
|
||||
### 日誌查看功能
|
||||
|
||||
#### MaaFramework 日誌
|
||||
|
||||
在 VSCode 的命令面板中搜索執行 `Maa: 打開maa日誌`, 可查看調試期間產生的 `maa.log` 日誌.
|
||||
在 VS Code 的命令面板中搜尋並執行 `Maa: 開啟 maa 日誌`,可查看偵錯期間產生的 `maa.log` 日誌。
|
||||
|
||||
#### Maa Pipeline Support 擴充日誌
|
||||
#### MAA Pipeline Support 擴充功能日誌
|
||||
|
||||
在 VSCode 的命令面板中搜索執行 `Maa: 打開插件日誌`, 可查看調試期間產生的 `mse.log` 日誌.
|
||||
在 VS Code 的命令面板中搜尋並執行 `Maa: 開啟插件日誌`,可查看擴充功能運作期間產生的 `mse.log` 日誌。
|
||||
|
||||
### 底部狀態欄
|
||||
### 底部狀態列
|
||||
|
||||
#### MaaSupport <插件版本>
|
||||
#### MaaSupport <擴充功能版本>
|
||||
|
||||
點擊可聚焦控制面板
|
||||
點擊可聚焦至控制面板。
|
||||
|
||||
#### MaaFramework <MaaFw版本>
|
||||
|
||||
點擊可切換插件使用的 `MaaFramework` 版本。其中,可選擇的版本被限制為當前插件所支持的版本,如果列表中沒有你需要的版本,請考慮更換插件版本。
|
||||
點擊可切換擴充功能使用的 `MaaFramework` 版本。可選擇的版本受限於當前擴充功能支援的範圍,若清單中沒有需要的版本,請考慮更換擴充功能之版本。
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 用戶說明書
|
||||
title: 使用手冊
|
||||
icon: mdi:user
|
||||
index: false
|
||||
dir:
|
||||
|
||||
@@ -1,21 +1,17 @@
|
||||
---
|
||||
title: CLI 使用說明
|
||||
title: CLI 使用指南
|
||||
icon: material-symbols:terminal
|
||||
index: true
|
||||
dir:
|
||||
order: 6
|
||||
---
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
|
||||
一个使用 Rust 编写的简单 MAA 命令行工具。
|
||||
一個使用 Rust 編寫的簡單 MAA 命令列工具。
|
||||
|
||||
## 功能
|
||||
|
||||
- 运行预定义或自定义的任务,例如 `maa fight`,`maa run <task>`;
|
||||
- 使用 `maa install` 和 `maa update` 安装和更新MaaCore及资源;
|
||||
- 執行預定義或自定義的任務,例如 `maa fight`、`maa run <task>`。
|
||||
- 使用 `maa install` 和 `maa update` 安裝和更新 MaaCore 及資源。
|
||||
- 使用 `maa self update` 更新自身。
|
||||
|
||||
<Catalog base='/zh-tw/manual/cli/' />
|
||||
|
||||
@@ -5,95 +5,91 @@ icon: material-symbols:settings
|
||||
|
||||
# 配置
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
## 配置目錄
|
||||
|
||||
## 配置目录
|
||||
maa-cli 配置檔案位於特定的配置目錄中,您可以透過 `maa dir config` 獲取配置目錄路徑。配置目錄也可以透過環境變數 `MAA_CONFIG_DIR` 更改。在下文的範例中,我們將以 `$MAA_CONFIG_DIR` 代表配置目錄。
|
||||
|
||||
maa-cli 配置文件位于特定的配置目录中,你可以通过 `maa dir config` 获取配置目录。配置目录也可以通过环境变量 `MAA_CONFIG_DIR` 更改。在下面的例子中,我们将用 `$MAA_CONFIG_DIR` 来表示配置目录。
|
||||
所有的配置檔案皆可使用 TOML、YAML 或 JSON 格式。在下文範例中,我們將使用 TOML 格式並以 `.toml` 作為副檔名,但您可以根據需求混合使用這三種格式,只要副檔名正確即可。
|
||||
|
||||
所有的配置文件都可以使用 TOML,YAML 或者 JSON 格式,在下面的例子中,我们将使用 TOML 格式,并使用 `.toml` 作为文件扩展名。但是你可以混合这三种格式中的任意一种,只要你的文件扩展名正确。
|
||||
此外,部分任務接受 `filename` 作為參數。若您使用相對路徑,該路徑將相對於配置目錄下的對應子目錄。例如:自定義基建計畫檔案的相對路徑應相對於 `$MAA_CONFIG_DIR/infrast`,而保全派駐的作業檔案則相對於 `$MAA_CONFIG_DIR/ssscopilot`。
|
||||
|
||||
此外,部分任务接受 `filename` 作为参数,如果你使用相对路径,那么相对路径将会相对于配置目录的对应子目录。比如自定义基建计划文件的相对路径应该相对于 `$MAA_CONFIG_DIR/infrast`,而保全派驻的作业文件则相对于 `$MAA_CONFIG_DIR/ssscopilot`。
|
||||
## 自定義任務
|
||||
|
||||
## 自定义任务
|
||||
每一個自定義任務都是獨立的檔案,應存放於 `$MAA_CONFIG_DIR/tasks` 目錄中。
|
||||
|
||||
每一个自定义任务都是一个单独的文件,它们应该位于 `$MAA_CONFIG_DIR/tasks` 目录中。
|
||||
### 基本結構
|
||||
|
||||
### 基本结构
|
||||
|
||||
一个任务文件包含多个子任务,每一个子任务是一个 MAA 任务,其包含一下几个选项:
|
||||
一個任務檔案包含多個子任務,每個子任務都是一個 MAA 任務,包含以下選項:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
name = "启动游戏" # 任务的名字,可选,默认为任务类型
|
||||
type = "StartUp" # 任务的类型
|
||||
params = { client_type = "Official", start_game_enabled = true } # 对应任务的参数
|
||||
name = "啟動遊戲" # 任務名稱,選填,預設為任務類型
|
||||
type = "StartUp" # 任務類型
|
||||
params = { client_type = "Official", start_game_enabled = true } # 對應任務的參數
|
||||
```
|
||||
|
||||
具体的任务类型和参数可以在 [MAA 集成文档][task-types] 中找到。注意,目前 maa-cli 并不会验证参数名和参数值是否正确,即使出错也不会产生任何错误信息,除非 MaaCore 在运行时检测到错误。
|
||||
具體的任務類型與參數可以參考 [MAA 整合文件][task-types]。請注意,目前 maa-cli 不會驗證參數名稱與數值是否正確,即使出錯也不會產生任何錯誤訊息,除非 MaaCore 在執行時偵測到錯誤。
|
||||
|
||||
### 任务条件
|
||||
### 任務條件
|
||||
|
||||
如果你想要根据一些条件运行不同参数的任务,你可以定义多个任务的变体:
|
||||
如果您想要根據某些條件執行不同參數的任務,您可以定義多個任務的變體:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
name = "基建换班"
|
||||
name = "基建換班"
|
||||
type = "Infrast"
|
||||
|
||||
[tasks.params]
|
||||
mode = 10000
|
||||
facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"]
|
||||
dorm_trust_enabled = true
|
||||
filename = "normal.json" # 自定义的基建计划的文件名应该位于`$MAA_CONFIG_DIR/infrast`
|
||||
filename = "normal.json" # 自定義的基建計畫檔案名稱應位於 `$MAA_CONFIG_DIR/infrast`
|
||||
|
||||
# 在 18:00:00到第二天的 04:00:00 使用计划 0,在 12:00:00 之前使用计划 1,之后使用计划 2
|
||||
# 在 18:00:00 到隔天的 04:00:00 使用計畫 0,在 12:00:00 之前使用計畫 1,之後使用計畫 2
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "18:00:00", end = "04:00:00" } # 当结束时间小于开始时间时,结束时间被视为第二天的时间
|
||||
condition = { type = "Time", start = "18:00:00", end = "04:00:00" } # 當結束時間小於開始時間時,結束時間被視為隔天的時間
|
||||
params = { plan_index = 0 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", end = "12:00:00" } # 如果开始时间被省略,那么只要当前时间小于结束时间时,这个条件就会被匹配
|
||||
condition = { type = "Time", end = "12:00:00" } # 如果省略開始時間,那麼只要目前時間小於結束時間,這個條件就會被匹配
|
||||
params = { plan_index = 1 }
|
||||
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Time", start = "12:00:00" } # 如果结束时间被省略,那么只要当前时间大于开始时间时,这个条件就会被匹配
|
||||
condition = { type = "Time", start = "12:00:00" } # 如果省略結束時間,那麼只要目前時間大於開始時間,這個條件就會被匹配
|
||||
params = { plan_index = 2 }
|
||||
```
|
||||
|
||||
这里的 `condition` 字段用于确定哪一个变体应该被使用,而匹配的变体的 `params` 字段将会被合并到任务的参数中。
|
||||
這裡的 `condition` 欄位用於確定應使用哪一個變體,而匹配成功的變體其 `params` 欄位將會被合併到任務的參數中。
|
||||
|
||||
**注意**:如果你的自定义基建计划文件使用相对路径,应该相对于 `$MAA_CONFIG_DIR/infrast`。此外,由于基建文件是由 MaaCore 而不是 maa-cli 读取的,因此这些文件的格式必须是 JSON。同时,maa-cli 不会读取基建文件,也不会根据其中定义的时间段来选择相应的子计划。因此,必须通过 `condition` 字段来指定在相应时间段使用正确的基建计划的参数中的 `plan_index` 字段。这样可以确保在适当的时间段使用正确的基建计划。
|
||||
**請注意**:如果您的自定義基建計畫檔案使用相對路徑,應該相對於 `$MAA_CONFIG_DIR/infrast`。此外,由於基建檔案是由 MaaCore 而非 maa-cli 讀取的,因此這些檔案的格式必須是 JSON。同時,maa-cli 不會讀取基建檔案,也不會根據其中定義的時間段來選擇對應的子計畫。因此,必須透過 `condition` 欄位來指定在對應時間段使用正確的基建計畫參數中的 `plan_index` 欄位。這樣可以確保在適當的時間段使用正確的基建計畫。
|
||||
|
||||
除了 `Time` 条件,还有 `DateTime`,`Weekday`,`DayMod`条件。`DateTime` 条件用于指定一个时间段,`Weekday` 条件用于指定一周中的某些天,`DayMod` 用于指定一个自定义周期的某些天。
|
||||
除了 `Time` 條件,還有 `DateTime`,`Weekday`,`DayMod` 條件。`DateTime` 條件用於指定一個時間段,`Weekday` 條件用於指定一週中的某些天,`DayMod` 用於指定一個自定義週期的某些天。
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# 在夏活期间,刷SL-8
|
||||
# 在夏活期間,刷 SL-8
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
|
||||
# 在夏活期间以外的周二、周四和周六,刷CE-6
|
||||
# 在夏活期間以外的週二、週四和週六,刷 CE-6
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"], timezone = "Official"}
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# 其他时间,刷1-7
|
||||
# 其他時間刷 1-7
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
```
|
||||
|
||||
对与上述所有时间相关的条件,其都可以通过 `timezone` 参数来指定时区,这个参数的值可以是一个数字,表示与 UTC 的偏移量,如果你的时区是东八区,那么你可以指定 `timezone = 8`。这个参数也可以是一个客户端类型,比如 `timezone = "Official"`,这样将会使用官服对应的服务器时间来判断。**注意**,官服的时区不是东八区而是东四区,因为游戏中每天开始时间是 04:00:00 而不是 00:00:00。如果不指定时区,那么直接使用你的本地时区。
|
||||
對於上述所有與時間相關的條件,都可以透過 `timezone` 參數來指定時區,這個參數的值可以是一個數字,表示與 UTC 的偏移量,如果您的時區是東八區,那麼您可以設定 `timezone = 8`。這個參數也可以是一個客戶端類型,例如 `timezone = "Official"`,這樣將會使用官服對應的伺服器時間來判斷。**注意**,官服的時區不是東八區而是東四區,因為遊戲中每天開始時間是 04:00:00 而不是 00:00:00。如果不指定時區,那麼直接使用您的本地時區。
|
||||
|
||||
除了上述确定的条件之外,还有一个依赖于热更新资源的条件 `OnSideStory`,当你启动该条件后,maa-cli 会尝试读取相应的资源来判断当前是否有正在开启的活动,如果有那么对应的变体会被匹配。 比如上述夏活期间刷 `SL-8` 的条件就可以简化为 `{ type = "OnSideStory", client = "Official" }`,这里的 `client` 参数用于确定你使用的客户端,因为不同的客户端的活动时间不同,对于使用官服或者 b 服的用户,这可以省略。通过这个条件,每次活动更新之后你可以只需要更新需要刷的关卡而不需要手动编辑对应活动的开放时间。
|
||||
除了上述確定的條件之外,還有一個依賴於熱更新資源的條件 `OnSideStory`,當您啟用該條件後,maa-cli 會嘗試讀取對應的資源來判斷目前是否有正在開啟的活動,如果有,那麼對應的變體會被匹配。例如上述夏活期間刷 `SL-8` 的條件就可以簡化為 `{ type = "OnSideStory", client = "Official" }`,這裡的 `client` 參數用於確定您使用的客戶端,因為不同客戶端的活動時間不同,對於使用官服或 B 服的使用者,這可以省略。透過這個條件,每次活動更新之後,您只需要更新需要刷的關卡,而不需要手動編輯對應活動的開放時間。
|
||||
|
||||
除了以上基础条件之外,你可以使用 `{ type = "And", conditions = [...] }`,`{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }` 来对条件进行逻辑运算。
|
||||
对于想要基建多天排班的用户,可以将 `DayMod` 和 `Time` 组合使用,可以实现多天排班。比如,你想要实现每两天换六次班,那么你可以这样写:
|
||||
除了以上基礎條件之外,您可以使用 `{ type = "And", conditions = [...] }`,`{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }` 來對條件進行邏輯運算。
|
||||
對於想要基建多天排班的使用者,可以將 `DayMod` 和 `Time` 組合使用,實現多天排班。例如,您想要實現每兩天換六次班,那麼您可以這樣寫:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
@@ -112,12 +108,12 @@ params = { plan_index = 0 }
|
||||
[tasks.variants.condition]
|
||||
type = "And"
|
||||
conditions = [
|
||||
# 这里的 divisor 用来指定周期,remainder 用来指定偏移量
|
||||
# 偏移量等于 num_days_since_ce % divisor
|
||||
# 这里的 num_days_since_ce 是公元以来的天数,0001-01-01 是第一天
|
||||
# 当天偏移量你可以通过 `maa remainder <divisor>` 来获取.
|
||||
# 比如,2024-1-27 是第 738,912 天,那么 738912 % 2 = 0
|
||||
# 当天的偏移量为 0,那么本条件将会被匹配
|
||||
# 這裡的 divisor 用來指定週期,remainder 用來指定偏移量
|
||||
# 偏移量等於 num_days_since_ce % divisor
|
||||
# 這裡的 num_days_since_ce 是公元以來的天數,0001-01-01 是第一天
|
||||
# 當天偏移量您可以透過 `maa remainder <divisor>` 來獲取.
|
||||
# 比如,2024-1-27 是第 738,912 天,那麼 738912 % 2 = 0
|
||||
# 當天的偏移量為 0,那麼本條件將會被匹配
|
||||
{ type = "DayMod", divisor = 2, remainder = 0 },
|
||||
{ type = "Time", start = "04:00:00", end = "12:00:00" },
|
||||
]
|
||||
@@ -136,9 +132,9 @@ conditions = [
|
||||
[[tasks.variants]]
|
||||
params = { plan_index = 2 }
|
||||
[tasks.variants.condition]
|
||||
# 注意这里必须使用 Or 条件,不能直接使用 Time { start = "20:00:00", end = "04:00:00" }
|
||||
# 在这种情况下, 第二天的 00:00:00 - 04:00:00 不会被匹配
|
||||
# 当然通过调整你的排班时间避免跨天是更好的选择,这里只是为了演示
|
||||
# 注意這裡必須使用 Or 條件,不能直接使用 Time { start = "20:00:00", end = "04:00:00" }
|
||||
# 在這種情況下,第二天的 00:00:00 - 04:00:00 不會被匹配
|
||||
# 當然透過調整您的排班時間避免跨天是更好的選擇,這裡只是為了演示
|
||||
type = "Or"
|
||||
conditions = [
|
||||
{ type = "And", conditions = [
|
||||
@@ -188,16 +184,16 @@ conditions = [
|
||||
]
|
||||
```
|
||||
|
||||
在默认的策略下,如果有多个变体被匹配,第一个将会被使用。如果没有给出条件,那么变体将会总是被匹配,所以你可以把没有条件的变体放在最后,作为默认的情况。
|
||||
在預設策略下,如果有多個變體被匹配,第一個將會被使用。如果沒有給出條件,那麼變體將會總是被匹配,所以您可以把沒有條件的變體放在最後,作為預設的情況。
|
||||
|
||||
你可以使用 `strategy` 字段来改变匹配策略:
|
||||
您可以使用 `strategy` 欄位來改變匹配策略:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
strategy = "merge" # 或者 "first" (默认)
|
||||
strategy = "merge" # 或者 "first" (預設)
|
||||
|
||||
# 在周天晚上使用所有的将要过期的理智药
|
||||
# 在週日晚上使用所有將要過期的理智藥
|
||||
[[tasks.variants]]
|
||||
params = { expiring_medicine = 1000 }
|
||||
|
||||
@@ -208,27 +204,27 @@ conditions = [
|
||||
{ type = "Weekday", weekdays = ["Sun"] },
|
||||
]
|
||||
|
||||
# 默认刷1-7
|
||||
# 預設刷 1-7
|
||||
[[tasks.variants]]
|
||||
params = { stage = "1-7" }
|
||||
|
||||
# 在周二、周四和周六,刷CE-6
|
||||
# 在週二、週四和週六,刷 CE-6
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# 在夏活期间,刷SL-8
|
||||
# 在夏活期間,刷 SL-8
|
||||
[[tasks.variants]]
|
||||
params = { stage = "SL-8" }
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
```
|
||||
|
||||
这个例子和上面的例子将刷同样的关卡,但是在周天晚上,将会使用所有的将要过期的理智药。在 `merge` 策略下,如果有多个变体被匹配,后面的变体的参数将合并入前面的变体的参数中。如果多个变体都有相同的参数,那么后面的变体的参数将会覆盖前面的变体的参数。
|
||||
這個範例和上面的範例將刷同樣的關卡,但是在週日晚上,將會使用所有將要過期的理智藥。在 `merge` 策略下,如果有多個變體被匹配,後面的變體參數將合併入前面變體的參數中。如果多個變體都有相同的參數,那麼後面變體的參數將會覆蓋前面變體的參數。
|
||||
|
||||
如果没有变体被匹配,那么任务将不会被执行,这可以用于只在特定的条件下运行子任务:
|
||||
如果沒有變體被匹配,那麼任務將不會被執行,這可以用於只在特定的條件下執行子任務:
|
||||
|
||||
```toml
|
||||
# 只在在18:00:00之后进行信用商店相关的操作
|
||||
# 只在 18:00:00 之後進行信用商店相關的操作
|
||||
[[tasks]]
|
||||
type = "Mall"
|
||||
|
||||
@@ -236,59 +232,59 @@ type = "Mall"
|
||||
condition = { type = "Time", start = "18:00:00" }
|
||||
```
|
||||
|
||||
### 用户输入
|
||||
### 使用者輸入
|
||||
|
||||
对于一些任务,你可能想要在运行时输入一些参数,例如关卡名称。 你可以将对应需要输入的参数设置为 `Input` 或者 `Select` 类型:
|
||||
對於一些任務,您可能想要在執行時輸入一些參數,例如關卡名稱。您可以將對應需要輸入的參數設定為 `Input` 或者 `Select` 類型:
|
||||
|
||||
```toml
|
||||
[[tasks]]
|
||||
type = "Fight"
|
||||
|
||||
# 选择一个关卡
|
||||
# 選擇一個關卡
|
||||
[[tasks.variants]]
|
||||
condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" }
|
||||
[tasks.variants.params.stage]
|
||||
# 可选的关卡,必须提供至少一个可选值
|
||||
# 可选值可以是一个值,也可以是同时包含值和描述的一个表
|
||||
# 可選的關卡,必須提供至少一個可選值
|
||||
# 可選值可以是一個值,也可以是同時包含值和描述的一個表
|
||||
alternatives = [
|
||||
"SL-7", # 将被显示为 "1. SL-7"
|
||||
{ value = "SL-8", desc = "轻锰矿" } # 将被显示为 "2. SL-8 (轻锰矿)"
|
||||
"SL-7", # 將被顯示為 "1. SL-7"
|
||||
{ value = "SL-8", desc = "輕錳礦" } # 將被顯示為 "2. SL-8 (輕錳礦)"
|
||||
]
|
||||
default_index = 1 # 默认值的索引,从 1 开始,如果没有设置,输入空值将会重新提示输入
|
||||
description = "a stage to fight in summer event" # 描述,可选
|
||||
allow_custom = true # 是否允许输入自定义的值,默认为 false,如果允许,那么非整数的值将会被视为自定义的值
|
||||
default_index = 1 # 預設值的索引,從 1 開始,如果沒有設定,輸入空值將會重新提示輸入
|
||||
description = "a stage to fight in summer event" # 描述,選填
|
||||
allow_custom = true # 是否允許輸入自定義的值,預設為 false,如果允許,那麼非整數的值將會被視為自定義的值
|
||||
|
||||
# 无需任何输入
|
||||
# 無需任何輸入
|
||||
[[tasks.variants]]
|
||||
condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] }
|
||||
params = { stage = "CE-6" }
|
||||
|
||||
# 输入一个关卡
|
||||
# 輸入一個關卡
|
||||
[[tasks.variants]]
|
||||
[tasks.variants.params.stage]
|
||||
default = "1-7" # 默认的关卡,可选(如果没有默认值,输入空值将会重新提示输入)
|
||||
description = "a stage to fight" # 描述,可选
|
||||
default = "1-7" # 預設的關卡,選填(如果沒有預設值,輸入空值將會重新提示輸入)
|
||||
description = "a stage to fight" # 描述,選填
|
||||
|
||||
# 当输入的关卡是 1-7 时,需要输入使用理智药的数量
|
||||
# 當輸入的關卡是 1-7 時,需要輸入使用理智藥的數量
|
||||
[tasks.variants.params.medicine]
|
||||
# 参数可以设置为条件参数,这样只有满足条件时才需要输入
|
||||
# conditions 字段是一个表,其中键是同一层级下其他参数名,值是期望的值
|
||||
# 这里的条件是 stage 是 1-7, 如果存在多个条件,那么所有条件都必须满足
|
||||
# 參數可以「設定」為條件參數,這樣只有滿足條件時才需要輸入
|
||||
# conditions 欄位是一個表,其中鍵是同一層級下其他參數名稱,值是期望的值
|
||||
# 這裡的條件是 stage 為 1-7,如果存在多個條件,那麼所有條件都必須滿足
|
||||
conditions = { stage = "1-7" }
|
||||
default = 1000
|
||||
description = "medicine to use"
|
||||
```
|
||||
|
||||
对于 `Input` 类型,当运行任务时,你将会被提示输入一个值。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。
|
||||
对于 `Select` 类型,当运行任务时,你将会被提示输入一个的索引或者自定义的值(如果允许)。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。
|
||||
對於 `Input` 類型,執行任務時您會被提示輸入一個值。若輸入為空且設有預設值,將自動採用該預設值,否則會提示重新輸入。
|
||||
對於 `Select` 類型,執行任務時您會被提示輸入索引或自訂值(若允許)。若輸入為空且設有預設值,將自動採用該預設值,否則會提示重新輸入。
|
||||
|
||||
`--batch` 选项可以用于在运行任务时跳过所有的输入,这将会使用默认值;如果有任何输入没有默认值,那么将会导致错误。
|
||||
`--batch` 選項可用於在執行任務時跳過所有輸入,此時系統將自動採用預設值;若有任何輸入項未設定預設值,則會產生錯誤。
|
||||
|
||||
## MaaCore 相关配置
|
||||
## MaaCore 相關配置
|
||||
|
||||
和 MaaCore 相关的配置需要放在 `$MAA_CONFIG_DIR/profiles` 目录中。该目录下的每一个文件都是一个配置文件,你可以通过 `-p` 或者 `--profile` 选项来指定配置文件名,不指定时尝试读取 `default` 配置文件。
|
||||
與 MaaCore 相關的配置需要放在 `$MAA_CONFIG_DIR/profiles` 目錄中。該目錄下的每一個檔案都是一個配置檔案,您可以透過 `-p` 或者 `--profile` 選項來指定配置檔案名稱,不指定時嘗試讀取 `default` 配置。
|
||||
|
||||
目前支持的配置字段如下:
|
||||
目前支援的配置欄位如下:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
@@ -313,159 +309,167 @@ adb_lite_enabled = false
|
||||
kill_adb_on_exit = false
|
||||
```
|
||||
|
||||
### 连接配置
|
||||
### 連線配置
|
||||
|
||||
`[connection]` 相关字段用于指定 MaaCore 连接游戏的参数:
|
||||
`[connection]` 相關欄位用於指定 MaaCore 連線遊戲的參數:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
adb_path = "adb" # adb 可执行文件的路径,默认值为 "adb",这意味着 adb 可执行文件在环境变量 PATH 中
|
||||
address = = "emulator-5554" # 连接地址,比如 "emulator-5554" 或者 "127.0.0.1:5555"
|
||||
config = "General" # 连接配置,通常不需要修改
|
||||
adb_path = "adb" # adb 執行檔的路徑,預設值為 "adb",這意味著 adb 執行檔在環境變數 PATH 中
|
||||
address = = "emulator-5554" # 連線位址,例如 "emulator-5554" 或者 "127.0.0.1:5555"
|
||||
config = "General" # 連線配置,通常不需要修改
|
||||
```
|
||||
|
||||
`adb_path` 是 `adb` 可执行文件的路径,你可以指定其路径,或者将其添加到环境变量 `PATH` 中,以便 MaaCore 可以找到它。大多数模拟器自带 `adb`,你可以直接使用其自带的 `adb`,而不需要额外安装,否则你需要自行安装 `adb`。`address` 是 `adb` 的连接地址。对于模拟器,你可以使用 `127.0.0.1:[端口号]`,常用的模拟器端口号参见[常见问题][emulator-ports]。如果你没有指定 `address`,那么会尝试通过 `adb devices` 来获取连接的设备,如果有多个设备连接,那么将会使用第一个设备,如果没有找到任何设备,那么将会尝试连接到 `emulator-5554`。`config` 用于指定一些平台和模拟器相关的配置。对于 Linux 他默认为 `CompatPOSIXShell`,对于 macOS 他默认为 `CompatMac`,对于 Windows 他默认为 `General`。更多可选配置可以在资源文件夹中的 `config.json` 文件中找到。
|
||||
`adb_path` 是 `adb` 執行檔的路徑,您可以指定其路徑,或者將其添加到環境變數 `PATH` 中,以便 MaaCore 可以找到它。大多數模擬器內建 `adb`,您可以直接使用其內建的 `adb`,而不需要額外安裝,否則您需要自行安裝 `adb`。`address` 是 `adb` 的連線位址。對於模擬器,您可以使用 `127.0.0.1:[連接埠號]`,常用的模擬器連接埠號可參閱 [常見問題][emulator-ports]。如果您沒有指定 `address`,那麼會嘗試透過 `adb devices` 來獲取連線的設備,如果有多個設備連線,那麼將會使用第一個設備,如果沒有找到任何設備,那麼將會嘗試連線到 `emulator-5554`。`config` 於指定一些平台和模擬器相關的配置。對於 Linux 它預設為 `CompatPOSIXShell`,對於 macOS 它預設為 `CompatMac`,對於 Windows 它預設為 `General`。更多可選配置可以在資源資料夾中的 `config.json` 檔案中找到。
|
||||
|
||||
对于一些常用的模拟器,你可以直接使用 `preset` 来使用预设的配置:
|
||||
對於一些常用的模擬器,您可以直接使用 `preset` 來使用預設的配置:
|
||||
|
||||
```toml
|
||||
[connection]
|
||||
preset = "MuMuPro" # 使用 MuMuPro 预设的连接配置
|
||||
adb_path = "/path/to/adb" # 如果你需要的话,你可以覆盖预设的 adb 路径,大多数情况下你不需要这么做
|
||||
address = "127.0.0.1:7777" # 如果你需要的话,你可以覆盖预设的地址
|
||||
preset = "MuMuPro" # 使用 MuMuPro 預設的連線配置
|
||||
adb_path = "/path/to/adb" # 如果您需要的話,可以覆蓋預設的 adb 路徑,大多數情況下您不需要這麼做
|
||||
address = "127.0.0.1:7777" # 如果您需要的話,可以覆蓋預設的位址
|
||||
```
|
||||
|
||||
目前只有 `MuMuPro` 一个模拟器的预设,如果有其他常用模拟器的预设,欢迎提交 issue 或者 PR。
|
||||
目前只有 `MuMuPro` 一個模擬器的預設,如果有其他常用模擬器的預設,歡迎提交 issue 或者 PR。
|
||||
|
||||
此处有一个特殊的预设 `PlayCover`,其用于在 macOS 上连接直接通过 `PlayCover` 原生运行的游戏客户端。这种情况下不需要指定 `adb_path` 且 `address` 不是 `adb` l连接的地址而是 `PlayTools` 的地址,具体使用参见 [PlayCover 支持文档][playcover-doc].
|
||||
#### 特殊預設
|
||||
|
||||
### 资源配置
|
||||
目前預先配置了兩種預設,為 `PlayCover (macOS)`, `Waydroid (Linux)`
|
||||
|
||||
`[resource]` 相关字段用于指定 MaaCore 加载的资源:
|
||||
- `PlayCover` 用於在 macOS 上連線直接透過 `PlayCover` 原生執行的遊戲客戶端。這種情況下不需要指定 `adb_path` 且 `address` 不是 `adb` 連線的位址而是 `PlayTools` 的位址,具體使用方式可參考 [PlayCover 支援文件][playcover-doc].
|
||||
|
||||
- `Waydroid` 用於在 Linux 上連線直接透過 `Waydroid` 原生執行的遊戲客戶端。這種情況下仍需要指定 `adb_path`,具體使用方式可參考 [Waydroid 支援文件][waydroid-doc].
|
||||
|
||||
### 資源配置
|
||||
|
||||
`[resource]` 相關欄位用於指定 MaaCore 載入的資源:
|
||||
|
||||
```toml
|
||||
[resource]
|
||||
global_resource = "YoStarEN" # 非中文版本的资源
|
||||
platform_diff_resource = "iOS" # 非安卓版本的资源
|
||||
user_resource = true # 是否加载用户自定义的资源
|
||||
global_resource = "YoStarEN" # 非中文版本的資源
|
||||
platform_diff_resource = "iOS" # 非安卓版本的資源
|
||||
user_resource = true # 是否載入使用者自定義的資源
|
||||
```
|
||||
|
||||
当使用非简体中文游戏客户端时,由于 MaaCore 默认加载的资源是简体中文的,你需要指定 `global_resource` 字段来加载非中文版本的资源。当使用 iOS 版本的游戏客户端时,你需要指定 `platform_diff_resource` 字段来加载 iOS 版本的资源。这两者都是可选的,如果你不需要加载这些资源,你可以将这两个字段设置为空。其次,这两者也会被自动设置,如果你的 `startup` 任务中指定了 `client_type` 字段,那么 `global_resource` 将会被设置为对应客户端的资源,而当你使用 `PlayTools` 连接时,`platform_diff_resource` 将会被设置为 `iOS`。最后,当你想要加载用户自定义的资源时,你需要将 `user_resource` 字段设置为 `true`。
|
||||
當使用非簡體中文遊戲客戶端時,由於 MaaCore 預設載入的資源是簡體中文的,您需要指定 `global_resource` 欄位來載入非中文版本的資源。當使用 iOS 版本的遊戲客戶端時,您需要指定 `platform_diff_resource` 欄位來載入 iOS 版本的資源。這兩者都是選填的,如果您不需要載入這些資源,可以將這兩個欄位設定為空。其次,這兩者也會被自動設定,如果您的 `startup` 任務中指定了 `client_type` 欄位,那麼 `global_resource` 將會被設定為對應客戶端的資源,而當您使用 `PlayTools` 連線時,`platform_diff_resource` 將會被設定為 `iOS`。最後,當您想要載入使用者自定義的資源時,您需要將 `user_resource` 欄位設定為 `true`。
|
||||
|
||||
### 静态选项
|
||||
### 靜態選項
|
||||
|
||||
`[static_options]` 相关字段用于指定 MaaCore 静态选项:
|
||||
`[static_options]` 相關欄位用於指定 MaaCore 靜態選項:
|
||||
|
||||
```toml
|
||||
[static_options]
|
||||
cpu_ocr = false # 是否使用 CPU OCR,默认使用 CPU OCR
|
||||
gpu_ocr = 1 # 使用 GPU OCR 时使用的 GPU ID,如果这个值被留空,那么将会使用 CPU OCR
|
||||
cpu_ocr = false # 是否使用 CPU OCR,預設使用 CPU OCR
|
||||
gpu_ocr = 1 # 使用 GPU OCR 時使用的 GPU ID,如果這個值被留空,那麼將會使用 CPU OCR
|
||||
```
|
||||
|
||||
### 实例选项
|
||||
### 實例選項
|
||||
|
||||
`[instance_options]` 相关字段用于指定 MaaCore 实例的选项:
|
||||
`[instance_options]` 相關欄位用於指定 MaaCore 實例的選項:
|
||||
|
||||
```toml
|
||||
[instance_options]
|
||||
touch_mode = "ADB" # 使用的触摸模式,可选值为 "ADB","MiniTouch","MaaTouch" 或者 "MacPlayTools"
|
||||
deployment_with_pause = false # 是否在部署时暂停游戏
|
||||
touch_mode = "ADB" # 使用的觸控模式,可選值為 "ADB"、"MiniTouch"、"MaaTouch" 或者 "MacPlayTools"
|
||||
deployment_with_pause = false # 是否在部署時暫停遊戲
|
||||
adb_lite_enabled = false # 是否使用 adb-lite
|
||||
kill_adb_on_exit = false # 是否在退出时杀死 adb
|
||||
kill_adb_on_exit = false # 是否在退出時殺死 adb
|
||||
```
|
||||
|
||||
注意,`touch_mode` 可选项 `MacPlayTools` 和连接方式 `PlayTools` 绑定。当你使用 `PlayTools` 连接时,`touch_mode` 将会被强制设置为 `MacPlayTools`。
|
||||
請注意,`touch_mode` 可選項 `MacPlayTools` 和連線方式 `PlayTools` 綁定。當您使用 `PlayTools` 連線時,`touch_mode` 將會被強制設定為 `MacPlayTools`。
|
||||
|
||||
## CLI 相关配置
|
||||
## CLI 相關配置
|
||||
|
||||
CLI 相关的配置需要放在 `$MAA_CONFIG_DIR/cli.toml` 中。目前其包含的配置如下:
|
||||
CLI 相關的配置需要放在 `$MAA_CONFIG_DIR/cli.toml` 中。目前其包含的配置如下:
|
||||
|
||||
```toml
|
||||
# MaaCore 安装和更新相关配置
|
||||
# MaaCore 安裝和更新相關配置
|
||||
[core]
|
||||
channel = "Stable" # 更新通道,可选值为 "Alpha","Beta" "Stable",默认为 "Stable"
|
||||
test_time = 0 # 用于测试镜像速度的时间,0 表示不测试,默认为 3
|
||||
# 查询 MaaCore 最新版本的 api 地址,留空表示使用默认地址
|
||||
channel = "Stable" # 更新通道,可選值為 "Alpha"、"Beta" "Stable",預設為 "Stable"
|
||||
test_time = 0 # 用於測試鏡像站速度的時間,0 表示不測試,預設為 3
|
||||
# 查詢 MaaCore 最新版本的 api 位址,留空表示使用預設位址
|
||||
api_url = "https://github.com/MaaAssistantArknights/MaaRelease/raw/main/MaaAssistantArknights/api/version/"
|
||||
|
||||
# 配置是否安装 MaaCore 对应的组件,不推荐使用,分开安装可能会导致版本不一致,从而导致一些问题,该选项可能在未来的版本中移除
|
||||
# 配置是否安裝 MaaCore 對應的組件,不推薦使用,分開安裝可能會導致版本不一致,從而導致一些問題,該選項可能在未來的版本中移除
|
||||
[core.components]
|
||||
library = true # 是否安装 MaaCore 的库,默认为 true
|
||||
resource = true # 是否安装 MaaCore 的资源,默认为 true
|
||||
library = true # 是否安裝 MaaCore 的函式庫,預設為 true
|
||||
resource = true # 是否安裝 MaaCore 的資源,預設為 true
|
||||
|
||||
# CLI 更新相关配置
|
||||
# CLI 更新相關配置
|
||||
[cli]
|
||||
channel = "Stable" # 更新通道,可选值为 "Alpha","Beta" "Stable",默认为 "Stable"
|
||||
# 查询 maa-cli 最新版本的 api 地址,留空表示使用默认地址
|
||||
channel = "Stable" # 更新通道,可選值為 "Alpha"、"Beta" "Stable",預設為 "Stable"
|
||||
# 查詢 maa-cli 最新版本的 api 位址,留空表示使用預設位址
|
||||
api_url = "https://github.com/MaaAssistantArknights/maa-cli/raw/version/"
|
||||
# 下载预编译二进制文件的地址,留空表示使用默认地址
|
||||
# 下載預編譯執行檔的位址,留空表示使用預設位址
|
||||
download_url = "https://github.com/MaaAssistantArknights/maa-cli/releases/download/"
|
||||
|
||||
# 配置是否安装 maa-cli 对应的组件
|
||||
# 配置是否安裝 maa-cli 對應的組件
|
||||
[cli.components]
|
||||
binary = true # 是否安装 maa-cli 的二进制文件,默认为 true
|
||||
binary = true # 是否安裝 maa-cli 的執行檔,預設為 true
|
||||
|
||||
# 资源热更新相关配置
|
||||
# 資源熱更新相關配置
|
||||
[resource]
|
||||
auto_update = true # 是否在每次运行任务时自动更新资源,默认为 false
|
||||
warn_on_update_failure = true # 是否在更新失败时发出警告而不是直接报错
|
||||
backend = "libgit2" # 资源热更新后端,可选值为 "git" 或者 "libgit2",默认为 "git"
|
||||
auto_update = true # 是否在每次執行任務時自動更新資源,預設為 false
|
||||
warn_on_update_failure = true # 是否在更新失敗時發出警告而不是直接報錯
|
||||
backend = "libgit2" # 資源熱更新後端,可選值為 "git" 或者 "libgit2",預設為 "git"
|
||||
|
||||
# 资源热更新远程仓库相关配置
|
||||
# 資源熱更新遠端倉庫相關配置
|
||||
[resource.remote]
|
||||
# 远程资源仓库的 URL,留空以使用默认 URL
|
||||
# GitHub 仓库支持 HTTPS 和 SSH 两种协议访问,建议使用 HTTPS 协议,因为通常情况下不需要额外配置
|
||||
branch = "main" # 遠端倉庫的分支,預設為 "main"
|
||||
# 遠端資源倉庫的 URL,留空以使用預設 URL
|
||||
# GitHub 倉庫支援 HTTPS 和 SSH 兩種協定存取,建議使用 HTTPS 協定,因為通常情況下不需要額外配置
|
||||
url = "https://github.com/MaaAssistantArknights/MaaResource.git"
|
||||
# url = "git@github.com:MaaAssistantArknights/MaaResource.git"
|
||||
# 如果你必须使用 SSH 协议,你需要提供 SSH 密钥,最简单的方法是提供密钥的路径
|
||||
ssh_key = "~/.ssh/id_ed25519" # ssh 密钥的路径
|
||||
# maa 默认密钥是未加密的,如果你的密钥是受密码保护的,你需要提供密码来解密密钥
|
||||
# 注意:只有你使用 libgit2 后端时 maa 才会将密码传递给 libgit2
|
||||
# 当你使用 git 后端时,git 会自己提示你输入密码
|
||||
# 如果你使用 git 后端且你的密钥受密码保护,请使用 ssh-agent 来管理你的密钥
|
||||
passphrase = "password" # ssh 密钥的密码
|
||||
# 然而在配置文件中存储明文密码是不安全的,因此有一些方法可以避免这种情况
|
||||
# 1. 将 `passphrase` 设置为 true,然后 maa-cli 将每次提示你输入密码
|
||||
# 这种方法安全但是较为繁琐且无法在 batch 模式下使用
|
||||
# 如果您必須使用 SSH 協定,您需要提供 SSH 金鑰,最簡單的方法是提供金鑰的路徑
|
||||
ssh_key = "~/.ssh/id_ed25519" # ssh 金鑰的路徑
|
||||
# maa 預設金鑰是未加密的,如果您的金鑰是受密碼保護的,您需要提供密碼來解密金鑰
|
||||
# 注意:只有您使用 libgit2 後端時 maa 才會將密碼傳遞給 libgit2
|
||||
# 當您使用 git 後端時,git 會自己提示您輸入密碼
|
||||
# 如果您使用 git 後端且您的金鑰受密碼保護,請使用 ssh-agent 來管理您的金鑰
|
||||
passphrase = "password" # ssh 金鑰的密碼
|
||||
# 然而在配置檔案中儲存明文密碼是不安全的,因此有一些方法可以避免這種情況
|
||||
# 1. 將 `passphrase` 設定為 true,然後 maa-cli 將每次提示您輸入密碼
|
||||
# 這種方法安全但是較為繁瑣且無法在 batch 模式下使用
|
||||
# passphrase = true
|
||||
# 2. 将 `passphrase` 设置为环境变量名,然后 maa-cli 将使用环境变量作为密码
|
||||
# 这种方法比明文密码更安全,但是仍然有一定的风险,因为环境变量可能被任何程序访问
|
||||
# 2. 將 `passphrase` 設定為環境變數名稱,然後 maa-cli 將使用環境變數作為密碼
|
||||
# 這種方法比明文密碼更安全,但是仍然有一定的風險,因為環境變數可能被任何程式存取
|
||||
# passphrase = { env = "MAA_SSH_PASSPHRASE" }
|
||||
# 3. 将 `passphrase` 设置为命令,然后 maa-cli 将执行该命令以获取密码
|
||||
# 如果你使用了密码管理器来管理你的密码,这种方法可能是最安全的且方便的
|
||||
# 3. 將 `passphrase` 設定為指令,然後 maa-cli 將執行該指令以獲取密碼
|
||||
# 如果您使用了密碼管理器來管理您的密碼,這種方法可能是最安全的且方便的
|
||||
# passphrase = { cmd = ["pass", "show", "ssh/id_ed25519"] }
|
||||
# 4. 使用 ssh-agent 来管理你的密钥,**推荐**
|
||||
# ssh-agent 会将你的密钥保存在内存中,这样你就不需要每次输入密码
|
||||
# 注意,你需要确保 ssh-agent 已经启动并且已经添加了你的密钥,同时 SSH_AUTH_SOCK 环境变量已经设置
|
||||
# use_ssh_agent = true # 使用 ssh-agent 进行身份验证,如果设置为 true,将忽略 ssh_key 和 passphrase 字段
|
||||
# 4. 使用 ssh-agent 來管理您的金鑰,**推薦**
|
||||
# ssh-agent 會將您的金鑰保存在記憶體中,這樣您就不需要每次輸入密碼
|
||||
# 注意,您需要確保 ssh-agent 已經啟動並且已經添加了您的金鑰,同時 SSH_AUTH_SOCK 環境變數已經設定
|
||||
# use_ssh_agent = true # 使用 ssh-agent 進行身份驗證,如果設定為 true,將忽略 ssh_key 和 passphrase 欄位
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
**注意事項**:
|
||||
|
||||
- MaaCore 的更新通道中 `Alpha` 只在 Windows 上可用;
|
||||
- 由于 CLI 默认的 API 链接和下载链接都是 GitHub 的链接,因此在国内可能会有一些问题,你可以通过配置 `api_url` 和 `download_url` 来使用镜像。
|
||||
- 即使启动了资源热更新,你依然需要安装 MaaCore 的资源,因为资源热更新并不包含所有的资源文件,只是包含部分可更新的资源文件,基础资源文件仍然需要安装。
|
||||
- 资源热更新是通过 Git 来拉取远程仓库,如果后端设置为 `git` 那么 `git` 命令行工具必须可用。
|
||||
- 如果你想要使用 SSH 协议来拉取远程仓库,你必须配置 `ssh_key` 字段,这个字段应该是一个路径,指向你的 SSH 私钥。
|
||||
- 如果你的 SSH 私钥是受密码保护的,你需要提供密码来解密私钥,或者使用 ssh-agent 来管理你的密钥。
|
||||
- 远程仓库的 `url` 设置目前只对首次安装资源有效,如果你想要更改远程仓库的地址,你需要通过 `git` 命令行工具手动更改,或者删除对应的仓库。仓库所在位置可以通过 `maa dir hot-update` 获取。
|
||||
- MaaCore 的更新通道中 `Alpha` 只在 Windows 上可用。
|
||||
- 由於 CLI 預設的 API 連結和下載連結都是 GitHub 的連結,因此在連線較慢的地區可能會有一些問題,您可以透過配置 `api_url` 和 `download_url` 來使用鏡像站。
|
||||
- 即使啟動了資源熱更新,您依然需要安裝 MaaCore 的資源,因為資源熱更新並不包含所有的資源檔案,只是包含部分可更新的資源檔案,基礎資源檔案仍然需要安裝。
|
||||
- 資源熱更新是透過 Git 來拉取遠端倉庫,如果後端設定為 `git` 那麼 `git` 命令列工具必須可用。
|
||||
- 如果您想要使用 SSH 協定來拉取遠端倉庫,您必須配置 `ssh_key` 欄位,這個欄位應該是一個路徑,指向您的 SSH 私鑰。
|
||||
- 如果您的 SSH 私鑰是受密碼保護的,您需要提供密碼來解密私鑰,或者使用 ssh-agent 來管理您的金鑰。
|
||||
- 遠端倉庫的 `url` 設定目前只對首次安裝資源有效,如果您想要更改遠端倉庫的位址,您需要透過 `git` 命令列工具手動更改,或者刪除對應的倉庫。倉庫所在位置可以透過 `maa dir hot-update` 獲取。
|
||||
|
||||
## 参考配置
|
||||
## 參考配置
|
||||
|
||||
- [示例配置][example-config]
|
||||
- [範例配置][example-config]
|
||||
- [自用配置][wangl-cc-dotfiles]
|
||||
|
||||
## JSON Schema
|
||||
|
||||
你可以在 [`schemas` 目录][schema-dir] 中找到 maa-cli 的 JSON Schema 文件,你可以使用这些文件来验证你的配置文件,或者在编辑器中获得自动补全。
|
||||
您可以在 [`schemas` 目錄][schema-dir] 中找到 maa-cli 的 JSON Schema 檔案,您可以使用這些檔案來驗證您的配置檔案,或者在編輯器中獲得自動補全。
|
||||
|
||||
- 自定任务文件的 JSON Schema 文件为 [`task.schema.json`][task-schema];
|
||||
- MaaCore 配置的 JSON Schema 文件为 [`asst.schema.json`][asst-schema];
|
||||
- CLI 配置的 JSON Schema 文件为 [`cli.schema.json`][cli-schema]。
|
||||
- 自定義任務檔案的 JSON Schema 檔案為 [`task.schema.json`][task-schema];
|
||||
- MaaCore 配置的 JSON Schema 檔案為 [`asst.schema.json`][asst-schema];
|
||||
- CLI 配置的 JSON Schema 檔案為 [`cli.schema.json`][cli-schema]。
|
||||
|
||||
[task-types]: ../../protocol/integration.md#任务类型一览
|
||||
[emulator-ports]: ../../manual/connection.md#获取端口号
|
||||
[playcover-doc]: ../../manual/device/macos.md#✅-playcover-原生运行最流畅-🚀
|
||||
[task-types]: ../../protocol/integration.md#任務類型一覽
|
||||
[emulator-ports]: ../../manual/connection.md#模擬器連接埠相關文件
|
||||
[playcover-doc]: ../../manual/device/macos.md#✅-playcover-原生執行最流暢-🚀
|
||||
[waydroid-doc]: ../../manual/device/linux.md#✅-waydroid
|
||||
[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/crates/maa-cli/config_examples
|
||||
[wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/main/home/dot_config/maa
|
||||
[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/crates/maa-cli/schemas/
|
||||
|
||||
@@ -3,15 +3,11 @@ order: 2
|
||||
icon: ph:question-fill
|
||||
---
|
||||
|
||||
# 常见问题
|
||||
# 常見問題
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
## 1. 如何在 macOS 上使用 `$HOME/.config/maa` 作為配置目錄?
|
||||
|
||||
## 1. 如何在 macOS 上使用 `$HOME/.config/maa` 作为配置文件目录?
|
||||
|
||||
由于 Rust 库 [Directories](https://github.com/dirs-dev/directories-rs/) 在 macOS 上默认使用 Apple 风格目录,maa-cli 默认也使用 Apple 风格的配置目录。但是对于命令行程序来说,XDG 风格的目录更加合适。如果你想要使用 XDG 风格目录,你可以设置 `XDG_CONFIG_HOME` 环境变量,如 `export XDG_CONFIG_HOME="$HOME/.config"`,这会让 maa-cli 使用 XDG 风格配置目录。如果你想要使用 XDG 风格配置目录,但是不想设置环境变量,你可以使用下面的命令创建一个符号链接:
|
||||
由於 Rust 函式庫 [Directories](https://github.com/dirs-dev/directories-rs/) 在 macOS 上預設使用 Apple 風格目錄,maa-cli 預設也使用 Apple 風格的配置目錄。但對於命令列程式來說,XDG 風格的目錄更加合適。如果您想要使用 XDG 風格目錄,您可以設定 `XDG_CONFIG_HOME` 環境變數,例如 `export XDG_CONFIG_HOME="$HOME/.config"`,這會讓 maa-cli 使用 XDG 風格的配置目錄。如果您想要使用 XDG 風格的配置目錄,但不想設定環境變數,您可以使用下方的指令建立一個符號連結:
|
||||
|
||||
```bash
|
||||
mkdir -p "$HOME/.config/maa"
|
||||
|
||||
@@ -3,17 +3,13 @@ order: 1
|
||||
icon: material-symbols:download
|
||||
---
|
||||
|
||||
# 安装及编译
|
||||
# 安裝及編譯
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
maa-cli 提供多種方式安裝,包括預編譯執行檔、套件管理員以及透過 `cargo` 自行編譯安裝。
|
||||
|
||||
maa-cli 提供多种方式安装,包括预编译二进制文件、包管理器和通过 `cargo` 自行编译安装。
|
||||
## 預編譯執行檔
|
||||
|
||||
## 预编译二进制文件
|
||||
|
||||
安装 maa-cli 最简单的方式是使用安装脚本一键安装:
|
||||
安裝 maa-cli 最簡單的方式是使用安裝指令碼一鍵安裝:
|
||||
|
||||
::: tabs#pre-compile
|
||||
|
||||
@@ -31,27 +27,27 @@ Invoke-WebRequest -Uri "https://raw.githubusercontent.com/MaaAssistantArknights/
|
||||
|
||||
:::
|
||||
|
||||
后续你可以通过 `maa self update` 来更新 maa-cli。
|
||||
後續您可以透過 `maa self update` 來更新 maa-cli。
|
||||
|
||||
如果你的平台不在上述列表中,可以尝试自行[编译安装](#编译安装)。
|
||||
如果您的平台不在上述列表中,可以嘗試自行[編譯安裝](#編譯安裝)。
|
||||
|
||||
## 通过包管理器安装
|
||||
## 透過套件管理員安裝
|
||||
|
||||
对于 macOS 和受支持的 Linux 发行版用户,可以使用包管理器安装 maa-cli。
|
||||
對於 macOS 和受支援的 Linux 發行版使用者,可以使用套件管理員安裝 maa-cli。
|
||||
|
||||
### macOS
|
||||
|
||||
Homebrew 用户可以通过非官方的 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) 安装 maa-cli:
|
||||
Homebrew 使用者可以透過非官方的 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) 安裝 maa-cli:
|
||||
|
||||
::: code-tabs
|
||||
|
||||
@tab:active 稳定版
|
||||
@tab:active 穩定版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
brew install MaaAssistantArknights/tap/maa-cli
|
||||
```
|
||||
|
||||
@tab 不稳定版/预发行版
|
||||
@tab 不穩定版本 / 預發行版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
brew install MaaAssistantArknights/tap/maa-cli-beta
|
||||
@@ -61,11 +57,11 @@ brew install MaaAssistantArknights/tap/maa-cli-beta
|
||||
|
||||
### Linux
|
||||
|
||||
Arch、Nix 以及 Linux Homebrew 用户可以通过包管理器安装 maa-cli。
|
||||
Arch、Nix 以及 Linux Homebrew 使用者可以透過套件管理員安裝 maa-cli。
|
||||
|
||||
#### Arch Linux
|
||||
|
||||
可以安装 [AUR 包](https://aur.archlinux.org/packages/maa-cli/):
|
||||
可以安裝 [AUR 套件](https://aur.archlinux.org/packages/maa-cli/):
|
||||
|
||||
::: code-tabs
|
||||
|
||||
@@ -85,17 +81,17 @@ yay -S maa-cli
|
||||
|
||||
#### ❄️ Nix
|
||||
|
||||
用户可以直接运行:
|
||||
使用者可以直接執行:
|
||||
|
||||
::: code-tabs
|
||||
|
||||
@tab:active 稳定版
|
||||
@tab:active 穩定版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
nix run nixpkgs#maa-cli
|
||||
```
|
||||
|
||||
@tab 每夜构建
|
||||
@tab Nightly 版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
@@ -103,31 +99,31 @@ nix run github:Cryolitia/nur-packages#maa-cli-nightly
|
||||
|
||||
:::
|
||||
|
||||
稳定版打包至 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) 中,使用 `nixpkgs` 中的 Rust 工具链;每夜构建位于 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix) 中,使用 Beta channel 的 Rust 工具链,由 Github Actions 每日自动更新和构建验证。
|
||||
穩定版本已收錄至 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix) 中,並使用 `nixpkgs` 中的 Rust 工具鏈;Nightly 版本則位於 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix),使用 Beta 分支的 Rust 工具鏈,且每日經由 GitHub Actions 自動更新與驗證建置結果。
|
||||
|
||||
#### Homebrew
|
||||
|
||||
对于在 Linux 上使用 Homebrew 的用户,请参见上述 macOS 的安装方式。
|
||||
對於在 Linux 上使用 Homebrew 的使用者,請參考上述 macOS 的安裝方式。
|
||||
|
||||
#### 其他发行版
|
||||
|
||||
请使用 [预编译二进制文件](#预编译二进制文件) 或是 [自行编译安装](#编译安装)。
|
||||
請使用 [預編譯執行檔](#預編譯執行檔) 或是 [自行編譯安裝](#編譯安裝)。
|
||||
|
||||
我们也欢迎各位有兴趣的开发者将 maa-cli 提交到更多发行版的官方仓库或是用户仓库!
|
||||
我們也歡迎各位有興趣的開發者將 maa-cli 提交到更多發行版的官方倉庫或是使用者倉庫!
|
||||
|
||||
## 编译安装
|
||||
## 編譯安裝
|
||||
|
||||
Rust 开发者可以通过 `cargo` 自行编译安装 maa-cli:
|
||||
Rust 開發者可以透過 `cargo` 自行編譯安裝 maa-cli:
|
||||
|
||||
::: code-tabs
|
||||
|
||||
@tab:active 稳定版本
|
||||
@tab:active 穩定版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked
|
||||
```
|
||||
|
||||
@tab 开发版本
|
||||
@tab 開發版本
|
||||
|
||||
```bash :no-line-numbers
|
||||
cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked
|
||||
@@ -136,49 +132,49 @@ cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin m
|
||||
:::
|
||||
|
||||
::: warning
|
||||
maa-cli 目前的最低支持 Rust 版本 (MSRV) 为 1.88。请注意,MSRV 可能随时发生变化,我们建议始终使用最新的 Rust 工具链以获得最佳体验。
|
||||
maa-cli 目前的最低支援 Rust 版本 (MSRV) 為 1.88。請注意,MSRV 可能隨時發生變化,我們建議始終使用最新的 Rust 工具鏈以獲得最佳體驗。
|
||||
:::
|
||||
|
||||
### 编译选项
|
||||
### 編譯選項
|
||||
|
||||
从源码编译时,你可以通过 `--no-default-features` 禁用默认的特性,然后通过 `--features` 来启用特定的特性。目前可用的特性有:
|
||||
從原始碼編譯時,您可以透過 `--no-default-features` 停用預設的特性,然後透過 `--features` 來啟用特定的特性。目前可用的特性有:
|
||||
|
||||
- `cli_installer`: 启用 `maa self update` 命令,用于更新自身,这个特性默认启用;
|
||||
- `core_installer`: 启用 `maa install` 和 `maa update` 命令,用于安装和更新 MaaCore 及资源,这个特性默认启用;
|
||||
- `git2`: 提供 `libgit2` 资源更新后端,这个特性默认启用。
|
||||
- `cli_installer`: 啟用 `maa self update` 指令,用於更新自身,這個特性預設啟用。
|
||||
- `core_installer`: 啟用 `maa install` 和 `maa update` 指令,用於安裝和更新 MaaCore 及資源,這個特性預設啟用。
|
||||
- `git2`: 提供 `libgit2` 資源更新後端,這個特性預設啟用。
|
||||
|
||||
## 安装 MaaCore 及资源
|
||||
## 安裝 MaaCore 及資源
|
||||
|
||||
maa-cli 只提供了一个命令行界面,它需要 MaaCore 和资源来运行任务。
|
||||
maa-cli 只提供了一個命令列介面,它需要 MaaCore 和資源來執行任務。
|
||||
|
||||
根据安装方式和平台的不同,你的操作也有所区别:
|
||||
根據安裝方式和平台的不同,您的操作也會有所區別:
|
||||
|
||||
::: tabs#maacore
|
||||
|
||||
@tab:active 预编译
|
||||
对于使用预编译二进制或者自行编译的用户,maa-cli 可以帮助你安装和更新:
|
||||
@tab:active 預編譯
|
||||
對於使用預編譯執行檔或者自行編譯的使用者,maa-cli 可以協助您安裝和更新:
|
||||
|
||||
```bash :no-line-numbers
|
||||
maa install
|
||||
```
|
||||
|
||||
@tab Windows
|
||||
对于 Windows 平台的用户,在运行 `maa install` 命令前,请以管理员身份在命令提示符或 PowerShell 中运行以下命令,以安装必要组件 VC++ 运行库:
|
||||
對於 Windows 使用者,在執行 `maa install` 指令前,請以管理員身份在命令提示字元或 PowerShell 中執行以下指令,以安裝必要組件 VC++ 執行環境 (Redistributable):
|
||||
|
||||
```bat :no-line-numbers
|
||||
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --uninstall-previous --accept-package-agreements --force
|
||||
```
|
||||
|
||||
然后再运行 `maa install`。
|
||||
然後再執行 `maa install`。
|
||||
|
||||
@tab Arch
|
||||
你可以使用 maa-cli 安装预编译的 MaaCore:
|
||||
您可以使用 maa-cli 安裝預編譯的 MaaCore:
|
||||
|
||||
```bash :no-line-numbers
|
||||
maa install
|
||||
```
|
||||
|
||||
你也可以通过 [AUR](https://aur.archlinux.org/packages/maa-assistant-arknights/) 安装 maa-core
|
||||
您也可以透過 [AUR](https://aur.archlinux.org/packages/maa-assistant-arknights/) 安裝 maa-core
|
||||
|
||||
```bash :no-line-numbers
|
||||
paru -S maa-assistant-arknights
|
||||
@@ -191,10 +187,10 @@ yay -S maa-assistant-arknights
|
||||
```
|
||||
|
||||
@tab Nix
|
||||
Nix 上的 maa-cli 强制依赖 MaaCore,因此 Nix 用户无需,也不应该手动安装 MaaCore。
|
||||
Nix 上的 maa-cli 強制依賴 MaaCore,因此 Nix 使用者無需、也不應該手動安裝 MaaCore。
|
||||
|
||||
:::
|
||||
|
||||
::: warning
|
||||
`maa install` 下载的是 MAA 官方预编译的 MaaCore,而包管理器安装的 MaaCore 可能使用与官方预编译版本不同的编译选项和依赖版本,这也许会导致性能和功能上的略微差异。
|
||||
`maa install` 下載的是 MAA 官方預編譯的 MaaCore,而套件管理員安裝的 MaaCore 可能使用與官方預編譯版本不同的編譯選項和依賴版本,這也許會導致效能和功能上的些微差異。
|
||||
:::
|
||||
|
||||
@@ -5,109 +5,105 @@ icon: material-symbols:summarize
|
||||
|
||||
# 使用
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
|
||||
maa-cli 主要功能是通过调用 MaaCore,自动化完成明日方舟的游戏任务。此外,为了方便使用,maa-cli 还提供了管理 MaaCore 的功能。
|
||||
maa-cli 的主要功能是透過呼叫 MaaCore,自動化完成《明日方舟》的遊戲任務。此外,為了方便使用,maa-cli 還提供了管理 MaaCore 的功能。
|
||||
|
||||
::: tip
|
||||
|
||||
对于使用 Windows 包管理器 (winget) 安装 maa-cli 的用户,以下命令中的 `maa` 需要替换为 `maa-cli` 。
|
||||
對於使用 Windows 套件管理員 (winget) 安裝 maa-cli 的使用者,以下指令中的 `maa` 需要替換為 `maa-cli`。
|
||||
|
||||
:::
|
||||
|
||||
## 管理 MaaCore
|
||||
|
||||
maa-cli 可以安装和更新 MaaCore 及资源,只需运行以下命令:
|
||||
maa-cli 可以安裝和更新 MaaCore 及資源,只需執行以下指令:
|
||||
|
||||
```bash
|
||||
maa install # 安装 MaaCore 及资源
|
||||
maa update # 更新 MaaCore 及资源
|
||||
maa install # 安裝 MaaCore 及資源
|
||||
maa update # 更新 MaaCore 及資源
|
||||
```
|
||||
|
||||
## 更新 maa-cli 自身
|
||||
|
||||
maa-cli 可以更新自身,只需运行以下命令:
|
||||
maa-cli 可以更新自身,只需執行以下指令:
|
||||
|
||||
```bash
|
||||
maa self update
|
||||
```
|
||||
|
||||
**注意**:使用包管理器安装 maa-cli 的用户请使用包管理器更新 maa-cli,此命令在这些用户中无效。
|
||||
**注意**:使用套件管理員安裝 maa-cli 的使用者請使用套件管理員更新 maa-cli,此指令對這些使用者無效。
|
||||
|
||||
## 初始化配置
|
||||
|
||||
一旦完成了 MaaCore 的安装,通常情况下,你无需额外配置就可以直接运行任务。默认配置可能不适用于所有用户,因此你可以通过以下命令来初始化配置:
|
||||
一旦完成了 MaaCore 的安裝,通常情況下,您無需額外設定就可以直接執行任務。預設配置可能不適用於所有使用者,因此您可以透過以下指令來進行初始化:
|
||||
|
||||
```bash
|
||||
maa init
|
||||
```
|
||||
|
||||
通过这个命令,你可以交互式地配置 [MaaCore 的相关配置][config-core]。
|
||||
透過這個指令,您可以互動式地進行 [MaaCore 的相關配置][config-core]。
|
||||
|
||||
## 运行任务
|
||||
## 執行任務
|
||||
|
||||
完成 MaaCore 的安装和配置后,你可以运行任务了。maa-cli 支持两种类型的任务:预定义任务和自定义任务。
|
||||
完成 MaaCore 的安裝與配置後,您就可以執行任務了。maa-cli 支援兩種類型的任務:預定義任務和自定義任務。
|
||||
|
||||
### 预定义任务
|
||||
### 預定義任務
|
||||
|
||||
对于常见任务,maa-cli 提供了一些预定义的任务:
|
||||
對於常見任務,maa-cli 提供了一些預定義的任務:
|
||||
|
||||
- `maa startup [client]`: 启动游戏并进入主界面,`[client]` 是客户端类型,如果留空则不会启动游戏客户端。
|
||||
- `maa closedown [client]`: 关闭游戏客户端,`[client]` 是客户端类型,默认为 `Official`。
|
||||
- `maa fight [stage]`: 运行战斗任务,`[stage]` 是关卡名称,例如 `1-7`;留空选择上次或者当前关卡。
|
||||
- `maa copilot <maa_uri>...`: 自动抄作业,其中 `<maa_uri>` 是作业的 URI,多个 URI 会依次执行,`maa_uri` 可以是 `maa://1234` 或者 本地文件路径 `./1234.json`。
|
||||
- `maa sscopilot <maa_uri>`: 自动保全派驻,其中 `<maa_uri>` 是保全派驻作业的 URI。
|
||||
- `maa roguelike <theme>`: 自动集成战略,`<theme>` 是集成战略的主题,可选值为 `Phantom`,`Mizuki`,`Sami`,`Sarkaz` 以及 `JieGarden`.
|
||||
- `maa reclamation <theme>`: 自动生息演算,`<theme>` 是生息演算的主题,目前仅 `Tales` 主题可用。
|
||||
- `maa startup [client]`:啟動遊戲並進入主介面,`[client]` 是客戶端類型,如果留空則不會啟動遊戲客戶端。
|
||||
- `maa closedown [client]`:關閉遊戲客戶端,`[client]` 是客戶端類型,預設為 `Official`。
|
||||
- `maa fight [stage]`:執行戰鬥任務,`[stage]` 是關卡名稱,例如 `1-7`;留空則選擇上次或當前關卡。
|
||||
- `maa copilot <maa_uri>...`:自動抄作業,其中 `<maa_uri>` 是作業的 URI,多個 URI 會依序執行,`maa_uri` 可以是 `maa://1234` 或本地檔案路徑 `./1234.json`。
|
||||
- `maa sscopilot <maa_uri>`:自動保全派駐,其中 `<maa_uri>` 是保全派駐作業的 URI。
|
||||
- `maa roguelike <theme>`:自動集成戰略,`<theme>` 是集成戰略的主題,可選值為 `Phantom`,`Mizuki`,`Sami`,`Sarkaz` 以及 `JieGarden`。
|
||||
- `maa reclamation <theme>`:自動生息演算,`<theme>` 是生息演算的主題,目前僅 `Tales` 主題可用。
|
||||
|
||||
上述任务接受一些参数,你可以通过 `maa <task> --help` 来查看具体的参数。
|
||||
上述任務接受一些參數,您可以透過 `maa <task> --help` 查看具體的參數。
|
||||
|
||||
对于官服玩家,如果你想要打开游戏,使用 3 个理智药刷 BB-7,然后关闭游戏,你可以运行以下命令:
|
||||
對於官服玩家,如果您想要開啟遊戲,使用 3 個理智藥刷 BB-7,然後關閉遊戲,您可以執行以下指令:
|
||||
|
||||
```bash
|
||||
maa startup Official && maa fight BB-7 -m 3 && maa closedown
|
||||
```
|
||||
|
||||
### 自定义任务
|
||||
### 自定義任務
|
||||
|
||||
由于MAA支持的任务繁多,maa-cli无法提供所有任务的预定义选项。除此之外,你可能需要像上述的例子一样运行多个任务。为了解决这个问题,maa-cli提供了自定义任务的功能。自定义任务能够组合不同的任务,并且更精细地控制每个任务的参数以及执行顺序。此外,自定义任务支持条件判断,可以根据条件来决定是否执行某个任务,或者以何种参数执行某个任务。这可以用于自动化你的日常任务。自定义任务通过配置文件定义,具体配置文件的位置和编写方式请参考 [自定义任务文档][custom-task]。在编写好配置文件后,你可以通过 `maa run <task>` 来运行自定义任务,这里的 `<task>` 是一个自定义任务文件名,不包括扩展名。
|
||||
由於 MAA 支援的任務繁多,maa-cli 無法提供所有任務的預定義選項。除此之外,您可能需要像上述的例子一樣執行多個任務。為了解決這個問題,maa-cli 提供了自定義任務的功能。自定義任務能夠組合不同的任務,並且更精確地控制每個任務的參數以及執行順序。此外,自定義任務支援條件判斷,可以根據條件來決定是否執行某個任務,或者以何種參數執行某個任務。這可以用於自動化您的日常任務。自定義任務透過配置檔案定義,具體配置檔案的位置和編寫方式請參考 [自定義任務文件][custom-task]。在編寫好配置檔案後,您可以透過 `maa run <task>` 來執行自定義任務,這裡的 `<task>` 是一個自定義任務檔案名稱,不包括副檔名。
|
||||
|
||||
### 任务总结
|
||||
### 任務總結
|
||||
|
||||
不管是预定义任务还是自定义任务,maa-cli 都会在任务运行结束后输出任务的总结信息,
|
||||
其包括每个子任务的运行时间(开始时间、结束时间、运行时长)。对于部分任务,还会输出任务的结果汇总:
|
||||
不管是預定義任務還是自定義任務,maa-cli 都會在任務執行結束後輸出任務的總結資訊,
|
||||
其包括每個子任務的執行時間(開始時間、結束時間、執行時長)。對於部分任務,還會輸出任務的結果彙整:
|
||||
|
||||
- `fight` 任务: 关卡名称,次数,消耗理智药个数以及掉落统计;
|
||||
- `infrast`: 各设施进驻的干员,对于制造站和贸易站,还会包括产物类型;
|
||||
- `recruit`: 每次公招的 tag ,星级以及状态,以及总共的招募次数;
|
||||
- `roguelike`: 探索次数,投资次数。
|
||||
- `fight` 任務:關卡名稱、次數、消耗理智藥個數以及掉落統計。
|
||||
- `infrast`:各設施進駐的幹員,對於製造站和貿易站,還會包括產物類型。
|
||||
- `recruit`:每次公招的 tag、星級以及狀態,以及總共的招募次數。
|
||||
- `roguelike`:探索次數、投資次數。
|
||||
|
||||
如果你不想要任务总结,可以通过 `--no-summary` 参数来关闭。
|
||||
如果您不想要任務總結,可以透過 `--no-summary` 參數來關閉。
|
||||
|
||||
### 任务日志
|
||||
### 任務日誌
|
||||
|
||||
maa-cli 会输出日志,日志输出级别从低到高分别为 `Error`,`Warn`,`Info`,`Debug` 和 `Trace`。默认的日志输出级别为 `Warn`。日志级别可以通过 `MAA_LOG` 环境变量来设置,例如 `MAA_LOG=debug`。你也可以通过 `-v` 或者 `-q` 来增加或者减少日志输出级别。
|
||||
maa-cli 會輸出日誌,日誌輸出層級從低到高分別為 `Error`,`Warn`,`Info`,`Debug` 和 `Trace`。預設的日誌輸出層級為 `Warn`。日誌層級可以透過 `MAA_LOG` 環境變數來設定,例如 `MAA_LOG=debug`。您也可以透過 `-v` 或 `-q` 來增加或減少日誌輸出層級。
|
||||
|
||||
maa-cli 默认会向标准误 (stderr) 输出日志。`--log-file` 选项可以将日志输出到文件中,日志保存在 `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log` 中,其中 `$(maa dir log)` 是日志目录,你可以通过 `maa dir log` 获取。你也可以通过 `--log-file=path/to/log` 来指定日志文件的路径。
|
||||
maa-cli 預設會向標準錯誤輸出 (stderr) 輸出日誌。`--log-file` 選項可以將日誌輸出到檔案中,日誌儲存在 `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log` 中,其中 `$(maa dir log)` 是日誌目錄,您可以透過 `maa dir log` 獲取。您也可以透過 `--log-file=path/to/log` 來指定日誌檔案的路徑。
|
||||
|
||||
默认情况下,所有输出的日志会包含时间戳和日志级别的前缀。你可以通过环境变量 `MAA_LOG_PREFIX` 来改变这个行为。设置为 `Always` 时,总是会包含前缀,设置为 `Auto` 时输出到日志文件时会包含前缀,而输出到 stderr 时不会包含前缀,而设置为 `Never` 时即使是写入日志文件时也不会包含前缀。
|
||||
預設情況下,所有輸出的日誌會包含時間戳記和日誌層級的前綴。您可以透過環境變數 `MAA_LOG_PREFIX` 來改變這個行為。設定為 `Always` 時,總是會包含前綴;設定為 `Auto` 時,輸出到日誌檔案時會包含前綴,而輸出到 stderr 時則不會包含前綴;設定為 `Never` 時,即使是寫入日誌檔案時也不會包含前綴。
|
||||
|
||||
### 其他子命令
|
||||
### 其他子指令
|
||||
|
||||
除了上述的命令外,maa-cli 还提供了其他一些子命令:
|
||||
除了上述的指令外,maa-cli 還提供了其他一些子指令:
|
||||
|
||||
- `maa list`: 列出所有可用的任务;
|
||||
- `maa dir <dir>`: 获取特定目录的路径,比如 `maa dir config` 可以用来获取配置目录的路径;
|
||||
- `maa version`: 获取 `maa-cli` 以及 `MaaCore` 的版本信息;
|
||||
- `maa convert <input> [output]`: 将 `JSON`,`YAML` 或者 `TOML` 格式的文件转换为其他格式;
|
||||
- `maa complete <shell>`: 生成自动补全脚本;
|
||||
- `maa activity [client]`: 获取游戏的当前活动信息,`client` 是客户端类型,默认为 `Official`。
|
||||
- `maa cleanup`: 清除 `maa-cli` 和 `MaaCore` 的缓存。
|
||||
- `maa import <file> [-t <type>]:` 导入配置文件,`file` 是配置文件的路径。`-t` 选项可以指定配置文件的类型,如 `cli`, `profile`, `infrast` 等。
|
||||
- `maa list`:列出所有可用的任務。
|
||||
- `maa dir <dir>`:獲取特定目錄的路徑,例如 `maa dir config` 可以用來獲取配置目錄的路徑。
|
||||
- `maa version`:獲取 `maa-cli` 以及 `MaaCore` 的版本資訊。
|
||||
- `maa convert <input> [output]`:將 `JSON`,`YAML` 或 `TOML` 格式的檔案轉換為其他格式。
|
||||
- `maa complete <shell>`:產生自動補全指令碼。
|
||||
- `maa activity [client]`:獲取遊戲的目前活動資訊,`client` 是客戶端類型,預設為 `Official`。
|
||||
- `maa cleanup`:清除 `maa-cli` 和 `MaaCore` 的暫存 (cache)。
|
||||
- `maa import <file> [-t <type>]`:匯入配置檔案,`file` 是配置檔案的路徑。`-t` 選項可以指定配置檔案的類型,如 `cli`, `profile`, `infrast` 等。
|
||||
|
||||
更多命令的使用方法可以通过 `maa help` 查看,具体命令的使用方法可以 通过 `maa help <command>` 查看。
|
||||
更多指令的使用方法可以透過 `maa help` 查看,具體指令的使用方法可以透過 `maa help <command>` 查看。
|
||||
|
||||
[config-core]: config.md#maacore-相关配置
|
||||
[custom-task]: config.md#自定义任务
|
||||
[config-core]: config.md#maacore-相關配置
|
||||
[custom-task]: config.md#自定義任務
|
||||
|
||||
@@ -3,238 +3,252 @@ order: 3
|
||||
icon: mdi:plug
|
||||
---
|
||||
|
||||
# 連接設定
|
||||
# 連線設定
|
||||
|
||||
## 自動偵測
|
||||
|
||||
MAA 可以透過目前**正在執行中的單一模擬器**,自動偵測並填充 ADB 路徑、連線位址與連線配置。
|
||||
|
||||
截至 MAA v5.22.3 為止,支援自動偵測的模擬器及其連線位址如下:
|
||||
|
||||
- BlueStacks 藍疊模擬器 5:`127.0.0.1:5555/5556/5565/5575/5585/5595/5554`
|
||||
- MuMu 模擬器:`127.0.0.1:16384/16416/16448/16480/16512/16544/16576`
|
||||
- 雷電模擬器 9:`emulator-5554/5556/5558/5560`、`127.0.0.1:5555/5557/5559/5561`
|
||||
- 夜神模擬器:`127.0.0.1:62001/59865`
|
||||
- 逍遙模擬器:`127.0.0.1:21503`
|
||||
|
||||
若偵測失敗,請嘗試以系統管理員權限啟動 MAA 並再次偵測。若仍失敗,請參考下文進行手動設定,並參考上述清單向我們回報。
|
||||
|
||||
## ADB 路徑
|
||||
|
||||
:::info 技術細節
|
||||
自動檢測使用的是模擬器的 ADB,但有時自動檢測會出現問題,此時就需要手動設定。
|
||||
`強制替換 ADB` 是下載 Google 提供的 ADB 後再進行替換,如果自己設定 Google 的 ADB 即可一勞永逸。
|
||||
自動偵測預設會使用模擬器內建的 ADB,當自動偵測出現問題時才需要手動設定。
|
||||
點選 `強制替換 ADB` 會自動下載 Google 提供的 ADB 並自動填入路徑。
|
||||
若系統環境變數中已有可用的 ADB,可直接填寫 `adb`。
|
||||
:::
|
||||
|
||||
### 使用模擬器提供的 ADB
|
||||
|
||||
前往模擬器安裝路徑,Windows 可在模擬器執行時,在工作管理員中右鍵程式點選 `開啟檔案位置`。
|
||||
前往模擬器的安裝路徑。在 Windows 系統中,您可以在模擬器執行時,於工作管理員對該程序點擊右鍵,選擇 `開啟檔案所在位置`。
|
||||
|
||||
頂層或下層目錄中應該會有一個名字中帶有 `adb` 的 exe 檔案,可以使用搜索功能,然後選擇。
|
||||
在該層或下層目錄中,應該能找到一個檔名包含 `adb` 的 exe 檔案(可使用搜尋功能),將其選取即可。
|
||||
|
||||
:::details 一些範例
|
||||
:::details 範例檔名
|
||||
`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe`
|
||||
:::
|
||||
|
||||
### 使用 Google 提供的 ADB
|
||||
|
||||
[點選下載](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 後解壓縮,然後選擇其中的 `adb.exe`。
|
||||
[點此下載](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 後解壓縮,並選取其中的 `adb.exe`。
|
||||
|
||||
推薦直接解壓縮到 MAA 資料夾下,這樣可以直接在 ADB 路徑中填寫 `.\platform-tools\adb.exe`,也可以隨著 MAA 資料夾一起移動。
|
||||
建議直接解壓縮到 MAA 資料夾下,這樣可以直接在 ADB 路徑中填寫 `.\platform-tools\adb.exe`,方便隨著 MAA 資料夾移動。
|
||||
|
||||
## 連接地址
|
||||
## 連線位址
|
||||
|
||||
::: tip
|
||||
執行在本機的模擬器連接地址應該是 `127.0.0.1:<埠號>` 或 `emulator-<四位數字>`。
|
||||
執行於本機電腦的模擬器,連線位址通常為 `127.0.0.1:<連接埠>` 或 `emulator-<四位數字>`。
|
||||
:::
|
||||
|
||||
### 獲取埠號
|
||||
### 模擬器連接埠相關文件
|
||||
|
||||
#### 模擬器相關文件及參考埠
|
||||
- [BlueStacks 藍疊模擬器 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631):模擬器設定 → 進階中可查看目前的連線位址。
|
||||
- [MuMu 模擬器](https://mumu.163.com/help/20240807/40912_1073151.html?maa):主視窗(多開器)右上角選單按鈕 → 設定中心 → 底部 `ADB 端口` 可查看正在執行的多開連接埠。
|
||||
- [MuMu 模擬器 Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html)
|
||||
- [雷電模擬器 9](https://help.ldmnq.com/docs/LD9adbserver#edc3863750608062bcb3feea256413dc)
|
||||
- [夜神模擬器](https://support.yeshen.com/zh-CN/qt/ml)
|
||||
- [逍遙模擬器](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537)
|
||||
|
||||
- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555`
|
||||
- [MuMu](https://mumu.163.com/help/20240807/40912_1073151.html?maa) `16384`
|
||||
- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384`
|
||||
- [逍遙](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503`
|
||||
- [夜神](https://support.yeshen.com/zh-CN/qt/ml) `62001`
|
||||
|
||||
其他模擬器可參考 [趙青青的部落格](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
|
||||
|
||||
#### 獲取多開埠
|
||||
|
||||
- MuMu 多開器右上角可檢視正在執行的多開埠。
|
||||
- Bluestacks 5 模擬器設定內可檢視當前的多開埠。
|
||||
- _待補充_
|
||||
其他模擬器可參閱 [趙青青的博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。
|
||||
|
||||
::: details 備選方案
|
||||
|
||||
- 方案 1 : 使用 ADB 命令檢視模擬器埠
|
||||
1. 啟動**一個**模擬器,並確保沒有其他安卓裝置連接在此電腦上。
|
||||
2. 在存放有 ADB 可執行檔案的資料夾中啟動終端。
|
||||
3. 執行以下命令。
|
||||
- **方案 1:使用 ADB 指令查看模擬器連接埠**
|
||||
1. 啟動**一個**模擬器,並確保沒有其他 Android 裝置連接到此電腦。
|
||||
2. 在存放 ADB 執行檔的資料夾中啟動終端機(Terminal)。
|
||||
3. 執行以下指令:
|
||||
|
||||
```sh
|
||||
# Windows 命令提示符
|
||||
# Windows 命令提示字元 (cmd)
|
||||
adb devices
|
||||
# Windows PowerShell
|
||||
.\adb devices
|
||||
```
|
||||
|
||||
以下為輸出內容的例子:
|
||||
輸出範例如下:
|
||||
|
||||
```text
|
||||
List of devices attached
|
||||
127.0.0.1:<埠號> device
|
||||
127.0.0.1:<連接埠> device
|
||||
emulator-<四位數字> device
|
||||
```
|
||||
|
||||
使用 `127.0.0.1:<埠>` 或 `emulator-<四位數字>` 作為連接地址。
|
||||
使用 `127.0.0.1:<連接埠>` 或 `emulator-<四位數字>` 作為連線位址即可。
|
||||
|
||||
- 方案 2 : 查詢已建立的 ADB 連接
|
||||
- 方案 2 :尋找已建立的 ADB 連線
|
||||
1. 執行方案 1。
|
||||
2. 按下 `Win+S` 開啟搜尋欄,輸入 `資源監視器` 並開啟。
|
||||
3. 切換到 `網路` 索引標籤,在 `接聽連接埠` 的名稱列中查詢模擬器程式名,如 `HD-Player.exe`。
|
||||
4. 記錄模擬器程式的所有接聽連接埠。
|
||||
5. 在 `TCP 連接` 的名稱列中查詢 `adb.exe`,在遠端連接埠列中與模擬器接聽連接埠一致的埠,即為模擬器除錯埠。
|
||||
2. 按下 `Win+S` 開啟搜尋列,輸入 `資源監控制器` 並開啟。
|
||||
3. 切換到 `網路` 索引標籤,在 `接聽連接埠` 的名稱欄位中尋找模擬器程序名稱(例如 `HD-Player.exe`)。
|
||||
4. 記錄模擬器程序所有的接聽連接埠。
|
||||
5. 在 `TCP 連線` 的名稱欄位尋找 `adb.exe`,遠端連接埠與模擬器接聽連接埠一致者,即為偵錯連接埠。
|
||||
|
||||
:::
|
||||
|
||||
### 藍疊模擬器 Hyper-V 每次啟動埠號都不一樣
|
||||
### BlueStacks 藍疊模擬器 Hyper-V 每次啟動連接埠都不一樣
|
||||
|
||||
在 `連接設定` 中設定 `連接配置` 為 `藍疊模擬器` ,隨後勾選 `自動檢測連接` 和 `每次重新檢測`。
|
||||
在 `連線設定` 中將 `連線配置` 設為 `藍疊模擬器`,隨後勾選 `自動偵測連線` 和 `每次重新偵測`。
|
||||
|
||||
通常情況下這樣就可以連接。如果無法連接,可能是存在多個模擬器核心,或出現了問題,請閱讀下文進行額外設定。
|
||||
通常這樣即可連線。若無法連線,可能是因為存在多個核心或設定異常,請參考下文進行進階設定。
|
||||
|
||||
#### 指定 `Bluestacks.Config.Keyword`
|
||||
:::: steps
|
||||
|
||||
::: info 注意
|
||||
如果啟用了多開功能或安裝了多個模擬器核心,則需要進行額外設定來指定使用的模擬器編號
|
||||
:::
|
||||
1. 指定 `Bluestacks.Config.Keyword`
|
||||
|
||||
在 `.\config\gui.json` 中搜索 `Bluestacks.Config.Keyword` 欄位,內容為 `"bst.instance.<模擬器編號>.status.adb_port"`,模擬器編號可在模擬器路徑的 `BlueStacks_nxt\Engine` 中看到
|
||||
::: info 注意
|
||||
若啟用了多開功能或安裝了多個模擬器核心,則需要指定使用的模擬器編號。
|
||||
:::
|
||||
|
||||
::: details 範例
|
||||
Nougat64 核心:
|
||||
在 `.\config\gui.json` 中搜尋 `Bluestacks.Config.Keyword` 欄位,內容格式為 `"bst.instance.<模擬器編號>.status.adb_port"`。編號可於模擬器路徑的 `BlueStacks_nxt\Engine` 中確認。
|
||||
|
||||
```json
|
||||
"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port",
|
||||
```
|
||||
::: details 範例
|
||||
Nougat64 核心:
|
||||
|
||||
Pie64_2 核心:(核心名稱後的數字代表這是一個多開核心)
|
||||
```json
|
||||
"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port",
|
||||
```
|
||||
|
||||
```json
|
||||
"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port",
|
||||
```
|
||||
Pie64_2 核心(核心名稱後的數字代表這是一個多開核心):
|
||||
|
||||
:::
|
||||
```json
|
||||
"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port",
|
||||
```
|
||||
|
||||
#### 指定 `Bluestacks.Config.Path`
|
||||
:::
|
||||
|
||||
::: info 注意
|
||||
MAA 現在會嘗試從登錄檔中讀取 `bluestacks.conf` 的儲存位置,當該功能無法工作時,則需要手動指定配置檔案路徑
|
||||
:::
|
||||
2. 指定 `Bluestacks.Config.Path`
|
||||
|
||||
1. 在藍疊模擬器的資料目錄下找到 `bluestacks.conf` 這個檔案
|
||||
- 國際版預設路徑為 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`
|
||||
- 中國版預設路徑為 `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf`
|
||||
::: info 注意
|
||||
MAA 現在會嘗試從登錄檔(Registry)讀取 `bluestacks.conf` 的位置,若偵測失敗才需要手動指定路徑。
|
||||
:::
|
||||
1. 在 BlueStacks 藍疊模擬器的數據目錄下找到 `bluestacks.conf` 檔案:
|
||||
- 國際版預設路徑: `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`
|
||||
- 中國版預設路徑: `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf`
|
||||
|
||||
注:`C:\ProgramData`為隱藏目錄,必要時請在檔案資源管理器的地址欄中直接貼上該地址,以便進入目錄並進行尋找。
|
||||
備註:`C:\ProgramData` 為隱藏目錄,請直接在檔案總管地址欄貼上路徑進入。
|
||||
|
||||
2. 如果是第一次使用,請執行一次 MAA,使 MAA 自動生成配置檔案。
|
||||
2. 初次使用請先執行一次 MAA 以產生設定檔。
|
||||
3. **先關閉** MAA,**再**開啟 `gui.json`。找到 `Configurations` 下目前的設定名稱(可在 `設定-切換配置` 中查看,預設為 `Default`),搜尋 `Bluestacks.Config.Path` 並填入 `bluestacks.conf` 的完整路徑(斜線請使用轉義符 `\\`)。
|
||||
|
||||
3. **先關閉** MAA,**然後**開啟 `gui.json`,找到 `Configurations` 下的當前配置名欄位(可在 設定-切換配置 中檢視,預設為 `Default`),在其中搜索欄位 `Bluestacks.Config.Path`,填入 `bluestacks.conf` 的完整路徑。(注意斜槓要用轉義 `\\`)
|
||||
::: details 範例
|
||||
以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 為例:
|
||||
|
||||
::: details 範例
|
||||
以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 為例
|
||||
```json
|
||||
{
|
||||
"Configurations": {
|
||||
"Default": {
|
||||
"Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf"
|
||||
// 其餘配置欄位,不要手動輸入修改
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"Configurations": {
|
||||
"Default": {
|
||||
"Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf"
|
||||
// 其餘配置欄位,不要手動輸入修改
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
:::
|
||||
|
||||
:::
|
||||
3. 返回 MAA 並測試
|
||||
|
||||
## 連接配置
|
||||
您可以使用 `設定 - 執行設定` 中的 `截圖測試` 功能,檢查連線的是否為預期的核心。
|
||||
|
||||
需選擇對應模擬器的配置,若列表中沒有則選擇通用配置。若通用配置不可用,請嘗試並選擇其他任一可用的配置。
|
||||
::::
|
||||
|
||||
具體區別可以閱讀[原始碼](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L57)。
|
||||
## 連線配置
|
||||
|
||||
請選擇對應模擬器的配置,若清單中沒有則選擇「通用配置」。若通用配置不可用,請嘗試並選擇其他任一可用的配置。
|
||||
|
||||
具體區別可以參閱 [原始碼](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L57)。
|
||||
|
||||
### MuMu 截圖增強模式
|
||||
|
||||
需使用官版或方舟專版的 MuMu V4.1.26 及更新版本。
|
||||
需使用官版或方舟專版 MuMu V4.1.26 及更新版本。<!-- 官版 V3.8.13 支援初版截圖增強 -->
|
||||
|
||||
1. `設定` - `連接設定`,勾選 `啟用 MuMu 截圖增強模式`,MAA 會在勾選開關時嘗試通過註冊表自動填寫安裝路徑。
|
||||
1. 在 `設定 - 連線設定` 勾選 `啟用 MuMu 截圖增強模式`,MAA 會嘗試自動獲取路徑。
|
||||
|
||||
2. `MuMu 安裝路徑` 填寫 `MuMu Player` 或 `MuMuPlayerGlobal-12.0` 或 `YXArkNights-12.0` 資料夾的路徑,如 `C:\Program Files\Netease\MuMuPlayerGlobal-12.0`。
|
||||
2. `MuMu 安裝路徑` 填寫 `MuMu Player` 或 `MuMuPlayerGlobal-12.0` 或 `YXArkNights-12.0` 資料夾路徑(例如 `C:\Program Files\Netease\MuMuPlayerGlobal-12.0`)。
|
||||
|
||||
3. 若正在使用 MuMu 網絡橋接,則需勾選 `MuMu 網絡橋接模式` 後手動填寫 MuMu 多開器內對應模擬器的序號,如主多開為 `0`。
|
||||
3. 若正在使用 MuMu 網路橋接,需勾選 `MuMu 網路橋接模式` 並手動填寫多開器內對應的模擬器序號,主多開為 `0`。
|
||||
|
||||
### 雷電截圖增強模式
|
||||
|
||||
需使用中國版或國際版雷電模擬器 9 V9.1.32 及更新版本。<!-- V9.0.78 -->
|
||||
需使用官版或國際版雷電模擬器 9 V9.1.32 及更新版本。<!-- 官版 V9.0.78 支援初版截圖增強 但存在高解析度失效問題 V9.1.29 修復-->
|
||||
|
||||
1. `設定` - `連接設定`,勾選 `啟用 LD 截圖增強模式`,MAA 會在勾選開關時嘗試通過註冊表自動填寫安裝路徑。
|
||||
1. 在 `設定 - 連線設定` 勾選 `啟用 LD 截圖增強模式`,MAA 會嘗試自動獲取路徑。
|
||||
|
||||
2. `LD 安裝路徑` 填寫 `LDPlayer9` 資料夾的路徑,如 `C:\leidian\LDPlayer9\`。
|
||||
2. `LD 模擬器路徑` 填寫 `LDPlayer9` 資料夾路徑(例如 `C:\leidian\LDPlayer9\`)。
|
||||
|
||||
3. `例項編號` 填寫雷電多開器內對應模擬器的編號(ID),如主多開為 `0`。
|
||||
3. `執行個體編號` 填寫雷電多開器內對應的模擬器序號(ID),主多開為 `0`。
|
||||
|
||||
## 觸控模式
|
||||
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):使用 C 編寫的 Android 觸控事件器,操作 `evdev` 裝置,提供 Socket 介面供外部程式觸發觸控事件和手勢。從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。<sup>[源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基於 Java 對 Minitouch 的重新實現,使用安卓原生的 `InputDevice`,並添加了額外特性。高版本 Android 可用性尚待測試。~~幫我們做做測試~~
|
||||
3. Adb Input:直接呼叫 ADB 使用安卓的 `input` 命令進行觸控操作,相容性最強,速度最慢。
|
||||
1. [Minitouch](https://github.com/DeviceFarmer/minitouch):基於 C 語言編寫的 Android 觸控事件驅動程式,透過操作 `evdev` 裝置,提供 Socket 介面供外部程式觸發觸控事件與手勢。自 Android 10 開始,若系統的 SELinux 為 `Enforcing`(強制)模式,Minitouch 將無法運作。<sup>[來源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up)</sup>
|
||||
2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基於 Java 對 Minitouch 的重新實作,改用 Android 原生的 `InputDevice`介面,並加入額外特性。目前在高版本 Android 上的相容性仍待測試,~~幫我們做做測試~~。
|
||||
3. Adb Input:直接呼叫 ADB 執行 Android 內建的 `input` 指令來進行觸控操作。此方式的相容性最強,但執行速度最慢。
|
||||
|
||||
## ADB Lite
|
||||
|
||||
由 MAA 獨立實現的 ADB Client,使用 TCP 直接與 ADB Server 通訊。相較原版 ADB 可以避免不停開啟多個 ADB 程式,減少效能開銷,但部分截圖方式不可用。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
|
||||
由 MAA 獨立實現的 ADB 用戶端,使用 TCP 直接與 ADB Server 通信。相較原版 ADB 可避免頻繁開啟 ADB 程序並減少效能開銷,但部分截圖方式不支援。<sup>[PR](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/3315)</sup>
|
||||
|
||||
推薦啟用,但具體優缺點尚待反饋。~~幫我們做做測試 x2~~
|
||||
推薦開啟,但具體表現尚待回饋。~~幫我們做做測試 x2~~
|
||||
|
||||
## MAA 和模擬器多開
|
||||
## MAA 與模擬器多開
|
||||
|
||||
::: info
|
||||
若需要多開模擬器同時操作,可將 MAA 資料夾複製多份,使用 **不同的 MAA**、**同一個 adb.exe**、**不同的連接地址** 來進行連接。
|
||||
::: info 實作方式
|
||||
若需多開模擬器同時執行,可將 MAA 資料夾複製多份,透過 **不同的 MAA 程式**、**同一個 adb.exe**、**不同的連線地址** 來進行連線。
|
||||
:::
|
||||
|
||||
### 自動啟動多開模擬器
|
||||
|
||||
以[藍疊國際版](./device/windows.md)為例,介紹兩種自動啟動多開模擬器的方式。
|
||||
以 [BlueStacks 藍疊模擬器國際版](./device/windows.md) 為例,介紹兩種自動啟動多開模擬器的方式。
|
||||
|
||||
#### 透過附加命令啟動
|
||||
#### 透過附加指令啟動
|
||||
|
||||
1. 啟動**單一**模擬器多開。
|
||||
2. 開啟工作管理員,找到對應模擬器程式,轉到詳細資訊索引標籤,右鍵列首,點選 `選擇列`,勾選 `命令列`。
|
||||
3. 在多出來的 `命令列` 列中找到 `...\Bluestacks_nxt\HD-Player.exe"` 後的內容。
|
||||
4. 將找到的類似於 `--instance Nougat32` 的內容填寫到 `啟動設定` - `附加命令` 中。
|
||||
2. 開啟工作管理員,找到對應的模擬器程序,切換到「詳細資料」索引標籤,右鍵點擊標題列,點選 `選擇行`(或選擇列),勾選 `命令列`。
|
||||
3. 在多出來的 `命令列` 欄位中,找到 `...\Bluestacks_nxt\HD-Player.exe"` 之後的內容。
|
||||
4. 將找到的內容(例如:`--instance Nougat32`)填寫到 MAA 的 `啟動設定 - 附加指令` 中。
|
||||
|
||||
::: note
|
||||
操作結束後建議重新隱藏 `步驟 2` 中開啟的 `命令列` 列以防止卡頓
|
||||
操作結束後,建議重新隱藏 `步驟 2` 中開啟的 `命令列` 欄位以避免系統卡頓。
|
||||
:::
|
||||
|
||||
::: details 範例
|
||||
|
||||
```text
|
||||
多開1:
|
||||
多開 1:
|
||||
模擬器路徑: C:\Program Files\BlueStacks_nxt\HD-Player.exe
|
||||
附加命令: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights"
|
||||
多開2:
|
||||
附加指令: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights"
|
||||
多開 2:
|
||||
模擬器路徑: C:\Program Files\BlueStacks_nxt\HD-Player.exe
|
||||
附加命令: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili"
|
||||
附加指令: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili"
|
||||
```
|
||||
|
||||
其中 `--cmd launchApp --package` 部分為啟動後自動執行指定包名應用,可自行更改。
|
||||
其中 `--cmd launchApp --package` 部分是啟動後自動執行指定包名的應用程式,可根據需求自行更改。
|
||||
:::
|
||||
|
||||
#### 透過模擬器的快捷方式啟動
|
||||
#### 透過模擬器的捷徑啟動
|
||||
|
||||
部分模擬器支援建立應用快捷方式,可直接使用應用的快捷方式直接啟動模擬器並開啟明日方舟。
|
||||
部分模擬器支援建立應用程式捷徑,可直接使用捷徑啟動模擬器並開啟《明日方舟》。
|
||||
|
||||
1. 開啟多開管理器,新增對應模擬器的快捷方式。
|
||||
2. 將模擬器快捷方式的路徑填入 `啟動設定` - `模擬器路徑` 中
|
||||
1. 開啟多開管理器,新增對應模擬器的捷徑到桌面。
|
||||
2. 將該模擬器捷徑的路徑填入 MAA 的 `啟動設定 - 模擬器路徑` 中。
|
||||
|
||||
::: details 範例
|
||||
|
||||
```text
|
||||
多開1:
|
||||
多開 1:
|
||||
模擬器路徑: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開1.lnk
|
||||
多開2:
|
||||
多開 2:
|
||||
模擬器路徑: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開2-明日方舟.lnk
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
若使用 `模擬器路徑` 進行多開操作,建議將 `啟動設定` - `附加命令` 置空。
|
||||
若使用 `模擬器路徑` (捷徑方式)進行多開操作,建議將 `啟動設定 - 附加指令` 欄位清空。
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 模擬器和設備支持
|
||||
title: 模擬器與設備支援
|
||||
icon: mingcute:laptop-fill
|
||||
index: false
|
||||
dir:
|
||||
|
||||
@@ -6,53 +6,54 @@ icon: mingcute:android-fill
|
||||
# Android 實體設備
|
||||
|
||||
::: warning
|
||||
此方法涉及 ADB 命令行,穩定性較低且仍需與電腦連接,**不推薦** 0 基礎玩家嘗試。
|
||||
此方法涉及 ADB 命令列,穩定性較低且仍需與電腦連線,**不推薦**零基礎玩家嘗試。
|
||||
:::
|
||||
|
||||
::: info 注意
|
||||
|
||||
0. 需同時參考 [連線設定](../connection.md)。
|
||||
1. 從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
2. 由於 Android 生態極為複雜,可在 MAA `設定` - `連接設定` 中嘗試將 `連接配置` 修改為 `通用模式` 或 `兼容模式` 或 `第二解析度` 或 `通用模式(屏蔽異常輸出)`,直到某個模式可以正常使用。
|
||||
3. 由於 MAA 僅支援 `16:9` 比例的解析度,所以非 `16:9` 或 `9:16` 螢幕比例的設備需要強制修改解析度,這包含大多數現代設備。若被連接設備螢幕解析度比例原生為 `16:9` 或 `9:16`,則可跳過 `更改解析度` 部分。
|
||||
4. 請將設備導航方式切換為除 `全面屏手勢` 以外的方式,如 `經典導航鍵` 等以避免誤操作。
|
||||
5. 請將遊戲內設定中的 `異形屏UI適配` 一項調整為 0 以避免任務出錯。
|
||||
2. 由於 Android 生態極為複雜,可在 MAA `設定 - 連線設定` 中嘗試將 `連線配置` 修改為 `通用模式` 或 `相容模式` 或 `第二解析度` 或 `通用模式(屏蔽異常輸出)`,直到某個模式可以正常使用。
|
||||
3. 由於 MAA 僅支援 `16:9` 比例的解析度,因此非 `16:9` 或 `9:16` 螢幕比例的設備需要強制修改解析度,這包含大多數現代設備。若被連線設備螢幕解析度比例原生為 `16:9` 或 `9:16`,則可跳過 `更改解析度` 部分。
|
||||
4. 請將設備導覽方式切換為除 `全螢幕手勢` 以外的方式,如 `經典導覽鍵` 等以避免誤操作。
|
||||
5. 請將遊戲內設定中的 `螢幕 UI 調整` 該項數值調整為 0 以避免任務出錯。
|
||||
|
||||
:::
|
||||
|
||||
::: tip
|
||||
典型的 `16:9` 比例的解析度有 `3840*2160` (4K)、`2560*1440` (2K)、`1920*1080` (1080P)、`1280*720` (720P)。
|
||||
典型的 `16:9` 比例解析度有 `3840*2160` (4K)、`2560*1440` (2K)、`1920*1080` (1080P)、`1280*720` (720P)。
|
||||
:::
|
||||
|
||||
## 下載、運行 adb 調試工具並連接設備
|
||||
## 下載、執行 ADB 除錯工具並連線設備
|
||||
|
||||
1. 下載 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 並解壓。
|
||||
2. 打開解壓後的資料夾,清空地址欄並輸入 `cmd` 後按回車。
|
||||
3. 在彈出的命令提示符視窗中輸入 `adb`,若顯示大量英文幫助文本則運行成功。
|
||||
4. 手機開啟 `USB 調試`,每個品牌的手機進入方式可能不同,請善用搜尋引擎。廠商可能會提供有關 USB 調試的額外選項,如 MIUI 中的 `USB 安裝` 和 `USB 調試(安全設置)`,請同時開啟。
|
||||
5. 將手機通過數據線連接至電腦,在剛剛的命令提示符視窗中輸入以下命令。
|
||||
1. 下載 [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 並解壓縮。
|
||||
2. 開啟解壓縮後的資料夾,清空位址列並輸入 `cmd` 後按下 Enter。
|
||||
3. 在彈出的命令提示字元視窗中輸入 `adb`,若出現大量英文說明文字則表示執行成功。
|
||||
4. 手機開啟 `USB 除錯`。每個品牌手機的開啟路徑可能不同,請善用搜尋引擎。廠商可能會提供有關 USB 除錯的額外選項,例如 MIUI 中的 `USB 安裝` 和 `USB 除錯(安全設定)`,請同時開啟。
|
||||
5. 將手機透過傳輸線連線至電腦,在剛才的命令提示字元視窗中輸入以下指令:
|
||||
|
||||
```bash
|
||||
adb devices
|
||||
```
|
||||
|
||||
- 成功執行後會顯示已連接 `USB 調試` 設備的信息。
|
||||
- 連接成功的例子:
|
||||
- 成功執行後會顯示已連線 `USB 除錯` 設備的資訊。
|
||||
- 連線成功的例子:
|
||||
|
||||
```bash
|
||||
List of devices attached
|
||||
VFNDU1682100xxxx device
|
||||
```
|
||||
|
||||
- **`device` 前的英文數字組合為設備序列號,同時也作為 MAA 的 `連接地址`。**
|
||||
- **`device` 前的英數字組合為設備序號,同時也作為 MAA 的 `連線位址`。**
|
||||
|
||||
- 現代安卓設備進行 `USB 調試` 需在被調試設備上點擊彈窗授權,若未授權則例子如下:
|
||||
- 現代 Android 設備進行 `USB 除錯` 需在被除錯設備上點選彈窗授權,若未授權則例子如下:
|
||||
|
||||
```bash
|
||||
List of devices attached
|
||||
VFNDU1682100xxxx unauthorized
|
||||
```
|
||||
|
||||
- 若無論如何都提示未授權或設備序列號後顯示 `offline`,則需重啟設備及電腦後重試。如仍未解決問題,可刪除當前用戶個人資料夾下的 `.android` 資料夾並再次重啟後重試,具體位置請自行搜尋。
|
||||
- 若無論如何都提示未授權或設備序號後顯示 `offline`,則需重啟設備及電腦後重試。如仍未解決問題,可刪除目前使用者個人資料夾下的 `.android` 資料夾並再次重啟後重試,具體位置請自行搜尋。
|
||||
|
||||
## 更改解析度
|
||||
|
||||
@@ -60,10 +61,10 @@ icon: mingcute:android-fill
|
||||
手機螢幕解析度為 `短邊*長邊`,而非電腦顯示器的 `長邊*短邊`。具體數值請根據目標設備自行確定。
|
||||
:::
|
||||
|
||||
- 如果上文設備列表內僅有一台設備,則可直接運行以下命令更改/還原解析度。
|
||||
- 如果上文設備列表內僅有一台設備,則可直接執行以下指令更改 / 還原解析度。
|
||||
|
||||
```bash
|
||||
# 查看當前解析度
|
||||
# 查看目前解析度
|
||||
adb shell wm size
|
||||
# 還原預設解析度
|
||||
adb shell wm size reset
|
||||
@@ -74,10 +75,10 @@ icon: mingcute:android-fill
|
||||
adb shell wm size 1080x1920
|
||||
```
|
||||
|
||||
- 若存在多台設備,則需在 `adb` 和 `shell` 中間添加參數 `-s <目標設備序列號>`,例子如下。
|
||||
- 若存在多台設備,則需在 `adb` 和 `shell` 中間加上參數 `-s <目標設備序號>`,範例如下:
|
||||
|
||||
```bash
|
||||
# 查看當前解析度
|
||||
# 查看目前解析度
|
||||
adb -s VFNDU1682100xxxx shell wm size
|
||||
# 還原預設解析度
|
||||
adb -s VFNDU1682100xxxx shell wm size reset
|
||||
@@ -88,109 +89,111 @@ icon: mingcute:android-fill
|
||||
adb -s VFNDU1682100xxxx shell wm size 1080x1920
|
||||
```
|
||||
|
||||
- 部分設計不規範的應用可能在還原解析度後內容佈局仍然錯亂,一般重啟對應應用或設備即可解決。
|
||||
- 部分設計不規範的應用程式可能在還原解析度後內容佈局仍然錯亂,一般重啟對應應用程式或設備即可解決。
|
||||
|
||||
::: danger 注意
|
||||
強烈建議在**下次重啟設備前**還原解析度,否則因設備而定可能會導致不可預料的後果,~~包括但不限於佈局混亂,觸控錯位,應用閃退,無法解鎖等~~。
|
||||
強烈建議在**下次重啟設備前**還原解析度,否則依設備而定可能會導致不可預料的後果,~~包括但不限於佈局混亂、觸控錯位、應用程式閃退、無法解鎖等~~。
|
||||
:::
|
||||
|
||||
::: danger 注意
|
||||
|
||||
已知在部分實體裝置上,`帳號切換` 功能可能無法正常運作。MAA 主要在電腦端模擬器環境下執行,因此目前沒有修復該問題的計畫。
|
||||
已知在部分實體設備上 `帳號切換` 功能可能無法正常運作。MAA 主要在電腦端模擬器環境運作,因此並無計畫修復該問題。
|
||||
|
||||
如果你遇到這個問題,可以透過以下任意一種方式調整顯示 DPI(建議取值為 `[100–800]`):
|
||||
如果您遇到這個問題,可以透過以下任意一種方式修改螢幕密度 (DPI)(建議取值為 `[100-800]`):
|
||||
|
||||
- 使用指令 `adb shell wm density <DPI>` 直接修改 DPI
|
||||
- 調整 `開發人員選項 → 最小寬度`,透過修改 `最小寬度` 間接改變 DPI
|
||||
- 調整 `開發者選項 → 最小寬度`,透過修改 `最小寬度` 間接修改 DPI
|
||||
|
||||
注:`DPI` 與 `最小寬度` 呈反比,換算關係為 `最小寬度 = 螢幕寬度(px) / (DPI / 160)`
|
||||
備註:`DPI` 和 `最小寬度` 成反比,換算關係為 `最小寬度 = 螢幕寬度(px) / (DPI / 160)`
|
||||
|
||||
**請注意此操作具有風險,可能導致設備異常。請確保你清楚自己在做什麼,若發生故障須自行承擔後果。**
|
||||
**請注意該操作存在風險,可能使設備運作異常。請確保您知道自己在做什麼,設備故障後果自負。**
|
||||
|
||||
強烈建議在**下次重新啟動設備前**還原這些變更。若忘記預設值,無論使用哪種方式修改,都可以使用指令 `adb shell wm density reset` 還原。
|
||||
強烈建議在**下次重啟設備前**還原這些更改。若忘記預設值,無論使用何種方式修改,均可使用指令 `adb shell wm density reset` 還原。
|
||||
|
||||
:::
|
||||
|
||||
## 自動化更改解析度
|
||||
|
||||
1. 在 MAA 目錄下新建兩個文本檔案,分別在其中填入以下內容。
|
||||
1. 在 MAA 目錄下新建兩個文字檔案,分別在其中填入以下內容:
|
||||
|
||||
```bash
|
||||
# 調整解析度為 1080p
|
||||
adb -s <目標設備序列號> shell wm size 1080x1920
|
||||
# 降低螢幕亮度(可選)
|
||||
adb -s <目標設備序列號> shell settings put system screen_brightness 1
|
||||
adb -s <目標設備序號> shell wm size 1080x1920
|
||||
# 降低螢幕亮度(選填)
|
||||
adb -s <目標設備序號> shell settings put system screen_brightness 1
|
||||
```
|
||||
|
||||
```bash
|
||||
# 還原解析度
|
||||
adb -s <目標設備序列號> shell wm size reset
|
||||
# 提高螢幕亮度(可選)
|
||||
adb -s <目標設備序列號> shell settings put system screen_brightness 20
|
||||
# 返回桌面(可選)
|
||||
adb -s <目標設備序列號> shell input keyevent 3
|
||||
# 鎖屏(可選)
|
||||
adb -s <目標設備序列號> shell input keyevent 26
|
||||
adb -s <目標設備序號> shell wm size reset
|
||||
# 提高螢幕亮度(選填)
|
||||
adb -s <目標設備序號> shell settings put system screen_brightness 20
|
||||
# 返回桌面(選填)
|
||||
adb -s <目標設備序號> shell input keyevent 3
|
||||
# 鎖定螢幕(選填)
|
||||
adb -s <目標設備序號> shell input keyevent 26
|
||||
```
|
||||
|
||||
2. 將第一個檔案重命名為 `startup.bat`,第二個檔案重命名為 `finish.bat`。
|
||||
- 如果重命名後沒有彈出修改擴展名的二次確認對話框,且檔案圖示沒有變化,請自行搜尋“Windows 如何顯示檔案擴展名”。
|
||||
2. 將第一個檔案重新命名為 `startup.bat`,第二個檔案重新命名為 `finish.bat`。
|
||||
- 如果重新命名後沒有彈出修改副檔名的確認對話框,且檔案圖示沒有變化,請自行搜尋「Windows 如何顯示檔案副檔名」。
|
||||
|
||||
3. 在 MAA 的 `設定` - `連接設定` - `開始前腳本` 和 `結束後腳本` 中分別填入 `startup.bat` 和 `finish.bat`。
|
||||
3. 在 MAA 的 `設定 - 連線設定 - 開始前腳本` 和 `結束後腳本` 中分別填入 `startup.bat` 和 `finish.bat`。
|
||||
|
||||
## 連接 MAA
|
||||
## 連線 MAA
|
||||
|
||||
### 有線連接
|
||||
### 有線連線
|
||||
|
||||
::: tip
|
||||
使用有線連接不需要任何 IP 地址或埠,只需要 `adb devices` 給出的設備序列號。
|
||||
使用有線連線不需要任何 IP 位址或連接埠,只需要 `adb devices` 提供的設備序號。
|
||||
:::
|
||||
|
||||
1. 將上文獲取到的目標設備序列號填入 MAA `設定` - `連接設定` - `連接地址` 中。
|
||||
1. 將上文獲取到的目標設備序號填入 MAA `設定 - 連線設定 - 連線位址` 中。
|
||||
2. Link Start!
|
||||
|
||||
### 無線連接
|
||||
### 無線連線
|
||||
|
||||
- 請確保設備與電腦處在同一區域網環境下且能互相通信。諸如 `AP 隔離`、`訪客網路` 等設定會阻止設備間通信,具體請查閱對應路由器文檔。
|
||||
- 無線調試在設備重啟後失效,需要重新設定。
|
||||
- 請確保設備與電腦處在同一區域網路環境下且能互相通訊。諸如 `AP 隔離`、`訪客網路` 等設定會阻止設備間通訊,具體請查閱對應路由器文件。
|
||||
- 無線除錯在設備重啟後會失效,需要重新設定。
|
||||
|
||||
#### 使用 `adb tcpip` 開啟無線埠
|
||||
#### 使用 `adb tcpip` 開啟無線連接埠
|
||||
|
||||
1. 在剛剛的命令提示符視窗中輸入以下命令以開啟無線調試。
|
||||
1. 在剛才的命令提示字元視窗中輸入以下指令以開啟無線除錯:
|
||||
|
||||
```bash
|
||||
adb tcpip 5555
|
||||
# 存在多台設備則添加參數 -s 以指定序列號
|
||||
# 存在多台設備則新增參數 -s 以指定序號
|
||||
```
|
||||
|
||||
2. 查看設備 IP 地址。
|
||||
- 進入手機 `設定` - `WLAN`,點擊當前已連接的無線網路查看 IP 地址。
|
||||
- 各類品牌設備設定位置不同,請自行查找。
|
||||
2. 查看設備 IP 位址
|
||||
- 進入手機 `設定 - WLAN`,點選目前已連線的無線網路查看 IP 位址。
|
||||
- 各品牌設備設定位置不同,請自行查找。
|
||||
|
||||
3. 將 `<IP>:5555` 填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:5555`。
|
||||
|
||||
3. 將 `<IP>:5555` 填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:5555`。
|
||||
4. Link Start!
|
||||
|
||||
#### 使用 `adb pair` 開啟無線埠
|
||||
#### 使用 `adb pair` 開啟無線連接埠
|
||||
|
||||
::: tip
|
||||
`adb pair` 無線配對,即使用安卓 11 及更新版本中開發者選項內的 `無線調試` 進行配對後連接,與 `adb tcpip` 相比可以避免有線連接。
|
||||
`adb pair` 無線配對,即使用 Android 11 及更新版本中開發者選項內的 `無線偵錯` 進行配對後連線,與 `adb tcpip` 相比可以避免有線連線。
|
||||
:::
|
||||
|
||||
1. 進入手機開發者選項,點擊 `無線調試` 並開啟,點擊確定,點擊 `使用配對碼配對設備`,在配對完成前不要關閉出現的彈窗。
|
||||
1. 進入手機開發者選項,點選 `無線偵錯` 並開啟,點選確定,點選 `使用配對碼配對設備`,在配對完成前不要關閉出現的彈窗。
|
||||
|
||||
2. 進行配對。
|
||||
1. 在命令提示符中輸入 `adb pair <設備彈窗給出的 IP 地址和埠>`,按回車。
|
||||
2. 輸入 `<設備彈窗給出的六位配對碼>`,按回車。
|
||||
3. 視窗出現 `Successfully paired to <IP:埠>` 等內容,同時設備上的彈窗自動消失,底部已配對的設備中出現計算機名稱。
|
||||
1. 在命令提示字元中輸入 `adb pair <設備彈窗提供的 IP 位址和連接埠>`,按下 Enter。
|
||||
2. 輸入 `<設備彈窗提供的六位配對碼>`,按下 Enter。
|
||||
3. 視窗出現 `Successfully paired to <IP:連接埠>` 等內容,同時設備上的彈窗自動消失,底部已配對的設備中出現電腦名稱。
|
||||
|
||||
3. 將目前設備螢幕上顯示的 <`IP 位址和連接埠>` 填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:11451`,請注意**一定與剛才填寫的位址不同**。
|
||||
|
||||
3. 將當前設備螢幕上給出的 `<IP 地址和埠>` 填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:11451`,**一定和剛剛填寫的不一樣**。
|
||||
4. Link Start!
|
||||
|
||||
#### 使用 root 權限開啟無線埠
|
||||
#### 使用 root 權限開啟無線連接埠
|
||||
|
||||
~~都接觸到 root 了還用得著看這段文檔嗎~~
|
||||
~~都接觸到 Root 了還需要看這段文件嗎~~
|
||||
|
||||
1. 下載、安裝 [WADB](https://github.com/RikkaApps/WADB/releases) 並授予其 root 權限。
|
||||
2. 打開 WADB,啟動無線 adb。
|
||||
3. 將 WADB 提供的 IP 地址及埠填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:5555`。
|
||||
1. 下載、安裝 [WADB](https://github.com/RikkaApps/WADB/releases) 並授予其 Root 權限。
|
||||
2. 開啟 WADB,啟動無線 ADB。
|
||||
3. 將 WADB 提供的 IP 位址及連接埠填入 MAA `設定 - 連線設定 - 連線位址` 中,例如 `192.168.1.2:5555`。
|
||||
4. Link Start!
|
||||
|
||||
@@ -11,75 +11,118 @@ icon: teenyicons:linux-alt-solid
|
||||
|
||||
### 使用 maa-cli
|
||||
|
||||
[maa-cli](https://github.com/MaaAssistantArknights/maa-cli) 是一個使用 Rust 編寫的簡單 MAA 命令列工具。相關安裝與使用教程請閱讀[CLI 使用指南](../cli)。
|
||||
[maa-cli](https://github.com/MaaAssistantArknights/maa-cli) 是一個使用 Rust 編寫的簡單 MAA 命令列工具。相關安裝與使用教學請閱讀 [CLI 使用指南](../cli/)。
|
||||
|
||||
### 使用 Wine
|
||||
|
||||
MAA WPF GUI 當前可以透過 Wine 執行。
|
||||
|
||||
#### 安裝步驟
|
||||
|
||||
1. 前往 [.NET 發佈頁](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) 下載並安裝 Windows 版 .NET **桌面**執行環境 (Runtime)。
|
||||
|
||||
2. 下載 Windows 版 MAA,解壓縮後執行 `wine MAA.exe`。
|
||||
|
||||
::: info 注意
|
||||
需要在連線設定中將 ADB 路徑設定為 [Windows 版 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)。
|
||||
|
||||
如果您需要透過 ADB 連線 USB 設備,請先在 Wine 外執行 `adb start-server`,即透過 Wine 連線原生 ADB server。
|
||||
:::
|
||||
|
||||
#### 使用 Linux 原生 MaaCore(實驗性功能)
|
||||
|
||||
下載 [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/MaaWineBridge) 原始碼並建置,用產生的 `MaaCore.dll`(ELF 檔案)替換 Windows 版本,並將 Linux 原生動態函式庫(`libMaaCore.so` 以及依賴項)放在同一目錄下。
|
||||
|
||||
此時透過 Wine 執行 `MAA.exe`,將會載入 Linux 原生動態函式庫。
|
||||
|
||||
::: info 注意
|
||||
使用 Linux 原生 MaaCore 時,需要在連線設定中將 ADB 路徑設定為 Linux 原生 ADB。
|
||||
:::
|
||||
|
||||
#### Linux 桌面整合(實驗性功能)
|
||||
|
||||
桌面整合提供原生桌面通知支援,以及將 fontconfig 字型配置對應到 WPF 的功能。
|
||||
|
||||
將 MAA Wine Bridge 產生的 `MaaDesktopIntegration.so` 放到 `MAA.exe` 同目錄下即可啟用。
|
||||
|
||||
#### 已知問題
|
||||
|
||||
- Wine DirectWrite 強制啟用 hinting,且不將 DPI 傳遞給 FreeType,導致字型顯示效果不佳。
|
||||
- 不使用原生桌面通知時,彈出通知會搶佔全系統滑鼠焦點,導致無法操作其他視窗。可以透過 `winecfg` 啟用虛擬桌面模式緩解,或停用桌面通知。
|
||||
- Wine-staging 使用者需要關閉 `winecfg` 中的 `隱藏 Wine 版本` 選項,以便 MAA 正確偵測 Wine 環境。
|
||||
- Wine 的 Light 主題會導致 WPF 中部分文字顏色異常,建議在 `winecfg` 中切換到無主題(Windows 經典主題)。
|
||||
- Wine 使用舊式 XEmbed 系統匣圖示,在 GNOME 下可能無法正常工作。
|
||||
- 使用 Linux 原生 MaaCore 時暫不支援自動更新(~~更新程式:我想我應該下載個 Windows 版~~)
|
||||
|
||||
### 使用 Python
|
||||
|
||||
#### 1. 安裝 MAA 動態庫
|
||||
:::: steps
|
||||
|
||||
1. 在 [MAA 官網](https://maa.plus/) 下載 Linux 動態庫並解壓,或從軟體源安裝:
|
||||
- AUR:[maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights),按照安裝後的提示編輯檔案
|
||||
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
|
||||
1. 安裝 MAA 動態函式庫
|
||||
1. 在 [MAA 官網](https://maa.plus/) 下載 Linux 動態函式庫並解壓縮,或從軟體源安裝:
|
||||
- AUR:[maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights),按照安裝後的提示編輯檔案
|
||||
- Nixpkgs: [maa-assistant-arknights](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)
|
||||
2. 進入 `./MAA-v{版本號}-linux-{架構}/Python/` 目錄下開啟 `sample.py` 檔案
|
||||
|
||||
2. 進入 `./MAA-v{版本號}-linux-{架構}/Python/` 目錄下打開 `sample.py` 文件
|
||||
::: tip
|
||||
預編譯的版本包含在相對較新的 Linux 發行版 (Ubuntu 22.04) 中編譯的動態函式庫,如果您系統中的 libstdc++ 版本較舊,可能遇到 ABI 不相容的問題。
|
||||
可以參閱 [Linux 編譯教學](../../develop/linux-tutorial.md) 重新編譯或使用容器執行。
|
||||
:::
|
||||
|
||||
::: tip
|
||||
預編譯的版本包含在相對較新的 Linux 發行版 (Ubuntu 22.04) 中編譯的動態庫,如果您系統中的 libstdc++ 版本較老,可能遇到 ABI 不兼容的問題
|
||||
可以參考 [Linux編譯教學](../../develop/linux-tutorial.md) 重新編譯或使用容器執行
|
||||
:::
|
||||
2. ADB 配置
|
||||
1. 找到 [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/b4fc3528decd6777441a8aca684c22d35d2b2574/src/Python/sample.py#L62) 一欄
|
||||
2. ADB 工具呼叫
|
||||
- 如果模擬器使用 `Android Studio` 的 `avd`,其內建 ADB。可以直接在 `adb.exe` 一欄填寫 ADB 路徑,通常在 `$HOME/Android/Sdk/platform-tools/` 裡面可以找到,例如:
|
||||
|
||||
#### 2. `adb` 配置
|
||||
```python
|
||||
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "模擬器的 ADB 位址"):
|
||||
```
|
||||
|
||||
1. 找到 [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48) 一欄
|
||||
- 如果使用其他模擬器須先下載 ADB: `$ sudo apt install adb` 後填寫路徑或利用 `PATH` 環境變數直接填寫 `adb` 即可。
|
||||
|
||||
2. `adb` 工具調用
|
||||
- 如果模擬器使用 `Android Studio` 的 `avd` ,其內建 `adb` 。可以直接在 `adb.exe` 一欄填寫 `adb` 路徑,一般在 `$HOME/Android/Sdk/platform-tools/` 裡面可以找到,例如:
|
||||
3. 模擬器 ADB 路徑獲取
|
||||
- 可以直接使用 ADB 工具: `$ adb路徑 devices`,例如:
|
||||
|
||||
```python
|
||||
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "模擬器的 adb 地址"):
|
||||
```
|
||||
```shell
|
||||
$ /home/foo/Android/Sdk/platform-tools/adb devices
|
||||
List of devices attached
|
||||
emulator-5554 device
|
||||
```
|
||||
|
||||
- 如果使用其他模擬器須先下載 `adb` : `$ sudo apt install adb` 後填寫路徑或利用 `PATH` 環境變量直接填寫 `adb` 即可
|
||||
- 回傳的 `emulator-5554` 就是模擬器的 ADB 位址,覆蓋掉 `127.0.0.1:5555`,例如:
|
||||
|
||||
3. 模擬器 `adb` 路徑獲取
|
||||
- 可以直接使用 adb 工具: `$ adb路徑 devices` ,例如:
|
||||
```python
|
||||
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
|
||||
```
|
||||
|
||||
```shell
|
||||
$ /home/foo/Android/Sdk/platform-tools/adb devices
|
||||
List of devices attached
|
||||
emulator-5554 device
|
||||
```
|
||||
4. 這時候可以測試一下: `$ python3 sample.py`,如果回傳 `連接成功` 則基本成功了。
|
||||
|
||||
- 返回的 `emulator-5554` 就是模擬器的 adb 地址,覆蓋掉 `127.0.0.1:5555` ,例如:
|
||||
3. 任務配置
|
||||
|
||||
```python
|
||||
if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"):
|
||||
```
|
||||
自定義任務:根據需要參閱 [整合文件](../../protocol/integration.md) 對 `sample.py` 的 [`# 任務及參數請參考 docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一欄進行修改。
|
||||
|
||||
4. 這時候可以測試下: `$ python3 sample.py` ,如果返回 `連接成功` 則基本成功了
|
||||
|
||||
#### 3. 任務配置
|
||||
|
||||
自定義任務: 根據需要參考 [集成文件](../../protocol/integration.md) 對 `sample.py` 的 [`# 任務及參數請參考 docs/集成文件.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一欄進行修改
|
||||
::::
|
||||
|
||||
## 模擬器支援
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
必選配置: 16:9 的螢幕解析度,且解析度需大於 720p
|
||||
必選配置:16:9 的螢幕解析度,且解析度須大於 720p
|
||||
|
||||
推薦配置: x86_64 的框架 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 動態庫
|
||||
推薦配置:x86_64 的架構 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 動態函式庫
|
||||
|
||||
請注意:從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
### ⚠️ [Genymotion](https://www.genymotion.com/)
|
||||
|
||||
高版本安卓內建 x86_64 框架,輕量但是執行明日方舟時易閃退
|
||||
高版本 Android 內建 x86_64 架構,輕量但在執行《明日方舟》時易閃退。
|
||||
|
||||
暫未嚴格測試, adb 功能和路徑獲取沒有問題
|
||||
暫未嚴格測試,ADB 功能與路徑獲取沒有問題。
|
||||
|
||||
## 容器化安卓的支援
|
||||
## 容器化 Android 的支援
|
||||
|
||||
::: tip
|
||||
以下方案通常對核心模組有一定要求,請根據具體方案和發行版安裝合適的核心模組
|
||||
以下方案通常對核心模組 (kernel module) 有一定要求,請根據具體方案和發行版本安裝合適的核心模組。
|
||||
:::
|
||||
|
||||
### ✅ [Waydroid](https://waydro.id/)
|
||||
@@ -91,8 +134,12 @@ waydroid prop set persist.waydroid.width 1280
|
||||
waydroid prop set persist.waydroid.height 720
|
||||
```
|
||||
|
||||
設定 adb 的 IP 地址:打開 `設定` - `關於` - `IP 地址` ,記錄第一個 `IP` ,將 `${記錄的 IP}:5555` 填入`sample.py` 的 adb IP 一欄。
|
||||
設定 ADB 的 IP 位址:開啟 `設定` - `關於` - `IP地址` ,記錄第一個 `IP` ,將 `${記錄的IP}:5555` 填入 `sample.py` 的 adb IP 一欄。
|
||||
|
||||
如果使用 amdgpu,`screencap` 指令可能向 stderr 輸出資訊導致圖片解碼失敗。
|
||||
可以執行 `adb exec-out screencap | xxd | head` 並檢查輸出中是否有類似 `/vendor/etc/hwdata/amdgpu.ids: No such file...` 的文字來確認這一點。
|
||||
嘗試將 `resource/config.json` 中的截圖指令由 `adb exec-out screencap` 改為 `adb exec-out 'screencap 2>/dev/null'`。
|
||||
|
||||
### ✅ [redroid](https://github.com/remote-android/redroid-doc)
|
||||
|
||||
安卓 11 版本的鏡像可正常執行遊戲,需要暴露 5555 adb 通訊埠.
|
||||
Android 11 版本的映像檔可正常執行遊戲,需要開放 5555 ADB 連接埠。
|
||||
|
||||
@@ -5,64 +5,64 @@ icon: basil:apple-solid
|
||||
|
||||
# Mac 模擬器
|
||||
|
||||
::: tip
|
||||
遇到問題請先參考 [常見問題](../faq.md)
|
||||
:::
|
||||
|
||||
## Apple Silicon 晶片
|
||||
|
||||
### ✅ [PlayCover](https://playcover.io)(原生執行最流暢🚀)
|
||||
### ✅ [PlayCover](https://playcover.io) 原生執行最流暢 🚀
|
||||
|
||||
試驗性支援,遇到問題請多多提 issue,並在標題中提及 iOS。
|
||||
實驗性支援,遇到問題請多加提交 Issue,並在標題中提及 `macOS`。
|
||||
|
||||
注意:由於 `macOS` 本身機制的問題,將遊戲視窗最小化、台前調度狀態下切換到別的視窗、將視窗移動到別的桌面 / 螢幕之後,截圖會出現問題,導致無法正確執行。請參考👉🏻️[issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
|
||||
請注意:由於 `macOS` 本身機制的限制,將遊戲視窗最小化、幕前排程 (Stage Manager) 狀態下切換到其他視窗、或將視窗移動到其他桌面 / 螢幕後,截圖會出現問題,導致無法正確執行。相關 Issue [#4371](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/4371#issuecomment-1527977512)
|
||||
|
||||
0. 要求:MAA 版本 v4.13.0-rc.1 以上
|
||||
|
||||
1. 下載 [fork 版本的 PlayCover](https://github.com/hguandl/PlayCover/releases) 並安裝。
|
||||
|
||||
2. 下載 [脫殼的明日方舟用戶端安裝包](https://decrypt.day/app/id1454663939),並在 PlayCover 中安裝。
|
||||
2. 下載 [脫殼的《明日方舟》客戶端安裝包](https://decrypt.day/app/id1454663939),並在 PlayCover 中安裝。
|
||||
|
||||
3. 在 PlayCover 中右鍵明日方舟,選擇 `設定` - `繞過`,勾選 `啟用 PlayChain`、`啟用繞過越獄檢測`、`插入內省庫`、`MaaTools`,然後點擊 `好`。
|
||||
3. 在 PlayCover 中右鍵點選《明日方舟》,選擇 `設定` - `繞過`,勾選 `啟用 PlayChain`、`啟用繞過越獄偵測`、`插入內省庫`、`MaaTools`,然後點選 `好`。
|
||||
|
||||
4. 此時再啟動明日方舟,即可正常執行。標題欄結尾會有 `[localhost:通訊埠號]`,說明已經成功啟用。
|
||||
4. 此時再啟動《明日方舟》,即可正常執行。標題列結尾會有 `[localhost:連接埠號]`,說明已經成功啟用。
|
||||
|
||||
5. 在 MAA 中,點擊 `設定` - `連接設定`,`觸控模式` 選擇 `MacPlayTools`。`連接地址` 填入上面標題欄 `[]` 裡的內容。
|
||||
5. 在 MAA 中,點選 `設定 - 連線設定`,`觸控模式` 選擇 `MacPlayTools`。`連線位址` 填入上面標題列 `[]` 內容。
|
||||
|
||||
6. 設定完成,MAA 可以連接了。如果遇到圖像辨識出錯,可以嘗試在 PlayCover 內將解析度設定為 1080P。
|
||||
6. 設定完成,MAA 可以連線了。如果遇到圖像識別出錯,可以嘗試在 PlayCover 內將解析度設定為 1080P。
|
||||
|
||||
7. 3-5 步驟只需要做一次,之後只需要啟動明日方舟即可。在明日方舟每次更新用戶端之後,需要重新做第 2 步。
|
||||
7. 3-5 步驟只需要做一次,之後只需要啟動《明日方舟》即可。在《明日方舟》每次更新客戶端之後,需要重新執行第 2 步。
|
||||
|
||||
### ✅ [MuMu 模擬器 Pro](https://mumu.163.com/mac/)
|
||||
|
||||
支援,但測試較少,需使用除 `MacPlayTools` 以外的觸控模式。相關 Issue [#8098](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8098)
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支援。
|
||||
支援,但從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
### ✅ [藍疊模擬器Air版](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
|
||||
### ✅ [BlueStacks 藍疊模擬器 Air 版](https://www.bluestacks.com/mac) (免費,針對 Apple M 系列晶片進行優化的版本)
|
||||
|
||||
支援,經測試,可用 maatouch 經`127.0.0.1:5555`連接。
|
||||
支援,經測試,可用 maatouch 透過 `127.0.0.1:5555` 連線。
|
||||
|
||||
需要在模擬器 **`設定`** - **`進階`** 中開啟 **`Android除錯(ADB)`**。
|
||||
需要在模擬器 `設定` - `進階` 中打開 `Android 調試 (ADB)`。
|
||||
|
||||
## Intel 晶片
|
||||
|
||||
::: tip
|
||||
由於 Mac 版開發人手不足,更新速度相對較慢,更推薦使用 Mac 自帶的多系統安裝 Windows,並使用 Windows 版 MAA。
|
||||
由於 Mac 版開發人手較少,更新速度相對較慢,更推薦使用 Mac 內建的 Boot Camp 安裝 Windows,並使用 Windows 版 MAA。
|
||||
:::
|
||||
|
||||
### ✅ [藍疊模擬器](https://www.bluestacks.cn/)
|
||||
### ✅ [BlueStacks 藍疊模擬器](https://www.bluestacks.cn/)
|
||||
|
||||
完美支援。需要在模擬器 `設定` - `引擎設定` 中打開 `允許 ADB 連接`。
|
||||
完美支援。需要在模擬器 `設定` - `引擎設定` 中打開 `允許 ADB 連線`。
|
||||
|
||||
### ✅ [藍疊模擬器國際版](https://www.bluestacks.com/tw/index.html)
|
||||
### ✅ [BlueStacks 藍疊模擬器國際版](https://www.bluestacks.com/tw/index.html)
|
||||
|
||||
完美支援。需要在模擬器 `設定` - `進階` 中打開 `Android 調試橋`。
|
||||
完美支援。需要在模擬器 `設定` - `進階` 中打開 `Android 調試橋 (ADB)`。
|
||||
|
||||
### ✅ [夜神模擬器](https://www.yeshen.com/)
|
||||
### ✅ [夜神模擬器 (NoxPlayer)](https://www.yeshen.com/)
|
||||
|
||||
完美支援。
|
||||
|
||||
補充:mac 下夜神模擬器的 adb 二進制檔案的位置為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 命令查看 adb 通訊埠。
|
||||
補充:mac 下夜神模擬器的 ADB 執行檔路徑為 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`,在父目錄 `MacOS` 下可使用 `adb devices` 指令查看 ADB 連接埠。
|
||||
|
||||
### ✅ [AVD](https://developer.android.com/studio/run/managing-avds)
|
||||
|
||||
支援。
|
||||
支援,但從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。
|
||||
|
||||
@@ -5,7 +5,7 @@ icon: ri:windows-fill
|
||||
|
||||
# Windows 模擬器
|
||||
|
||||
以下模擬器排序為隨機生成,排名不分先後。
|
||||
以下模擬器排序為隨機產生,排名不分先後。
|
||||
|
||||
<script setup>
|
||||
import MarkdownIt from 'markdown-it'
|
||||
@@ -19,29 +19,34 @@ const shuffleArray = (array) => {
|
||||
return array;
|
||||
}
|
||||
|
||||
// Sort by [support for screenshot enhancement → perfect support → less testing].
|
||||
// 依照【支援截圖增強 → 完美支援 → 測試較少】排序
|
||||
const fullySupport = [
|
||||
...shuffleArray([
|
||||
{
|
||||
name: 'MuMu 模擬器',
|
||||
link: 'https://mumu.163.com/',
|
||||
note: '完美支援,且額外支援[截圖增強模式](../connection.html#mumu-截圖增強模式)。已知相容 Hyper-V。\n\n- “完成後退出模擬器”功能可能偶現異常,如果遇到請向 MuMu 官方反饋。\n- 請勿將 `視訊記憶體使用策略` 設置為 `資源占用更小`。',
|
||||
note: '完美支援,且額外支援[截圖增強模式](../connection.html#mumu-截圖增強模式)。已知相容 Hyper-V。\n\n- 「完成後退出模擬器」功能可能偶爾出現異常,若遇到請向 MuMu 官方回饋。\n- 請勿將 `顯示記憶體使用策略` 設定為 `資源佔用更小`。',
|
||||
},
|
||||
{
|
||||
name: '雷電模擬器',
|
||||
link: 'https://www.ldmnq.com/',
|
||||
note: '完美支援,且額外支援[截圖增強模式](../connection.html#雷電截圖增強模式)。已知相容 Hyper-V。\n\n- 雷電 9 安裝器在安裝過程中會自動靜默關閉 Hyper-V,若有相關需求請留意。',
|
||||
note: '完美支援,且額外支援[截圖增強模式](../connection.html#雷電截圖增強模式)。已知相容 Hyper-V。\n\n- 雷電 9 安裝程式在安裝過程中會在背景自動關閉 Hyper-V,若有相關需求請留意。',
|
||||
},
|
||||
]),
|
||||
// keep internal sorting for bluestacks.
|
||||
// 藍疊內部保持排序
|
||||
{
|
||||
name: '藍疊模擬器 5 國際版',
|
||||
name: 'BlueStacks 藍疊模擬器 5',
|
||||
link: 'https://www.bluestacks.cn/',
|
||||
note: '完美支援。需要在模擬器 `設定` - `引擎設定` 中打開 `允許 ADB 連線`。',
|
||||
},
|
||||
{
|
||||
name: 'BlueStacks 藍疊模擬器 5 國際版',
|
||||
link: 'https://www.bluestacks.com/tw/index.html',
|
||||
note: '完美支援,需要在模擬器 `設定` - `進階` 中開啟 `Android除錯橋`。已知相容 Hyper-V。\n\n- 推薦下載 [離線安裝包](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免緩慢和捆綁安裝;推薦安裝 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;解除安裝請使用官方提供的 [解除安裝工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除殘留。\n- 若 ADB 埠號不斷的無規律變動,每次啟動都不相同,可能是因為您的電腦開啟了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 現在會嘗試自動讀取藍疊模擬器配置檔案內的埠號,若該功能失效/你有多開需求/安裝了多個模擬器核心,請參考 [連線設定](../connection.html#藍疊模擬器-hyper-v-每次啟動埠號都不一樣) 做出修改。由於 Hyper-V 以管理員身份執行,如自動關閉模擬器、自動檢測連線等不涉及 ADB 的操作同樣需要以管理員身份執行 MAA。',
|
||||
note: '完美支援,需要在模擬器 `設定` - `進階` 中打開 `Android 調試橋 (ADB)`。已知相容 Hyper-V。\n\n- 推薦下載 [離線安裝程式](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F),避免下載緩慢或綑綁安裝;推薦安裝 [Android 11](https://support.bluestacks.com/hc/zh-tw/articles/4402611273485-BlueStacks-5-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F#:~:text=%E5%AE%89%E8%A3%9D%20BlueStacks%205%20%E7%9A%84%20Android%2011) 版本;解除安裝請使用官方提供的 [解除安裝工具](https://support.bluestacks.com/hc/zh-tw/articles/360057724751-%E5%A6%82%E4%BD%95%E5%BE%9E%E6%82%A8%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4-BlueStacks-5-BlueStacks-X-%E5%92%8C-BlueStacks-%E6%9C%8D%E5%8B%99) 以清除殘留。\n- 若 ADB 連接埠號碼不斷無規律變動,每次啟動都不相同,可能是因為您的電腦開啟了 [Hyper-V](https://support.bluestacks.com/hc/zh-tw/articles/4415238471053-BlueStacks-5-%E6%94%AF%E6%8F%B4-Hyper-V-%E7%9A%84-Windows-10-%E5%92%8C-11-%E4%B8%8A%E7%9A%84%E9%9B%BB%E8%85%A6%E8%A6%8F%E6%A0%BC%E9%9C%80%E6%B1%82)。MAA 目前會嘗試自動讀取藍疊模擬器配置檔案內的連接埠號碼,若該功能失效、有分身多開需求或安裝了多個模擬器核心,請參考 [連線設定](../connection.html#藍疊模擬器-hyper-v-每次啟動連接埠號都不一樣) 進行修改。由於 Hyper-V 以管理員身分執行,如自動關閉模擬器、自動偵測連線等不涉及 ADB 的操作同樣需要以系統管理員身分執行 MAA。',
|
||||
},
|
||||
...shuffleArray([
|
||||
{
|
||||
name: '夜神模擬器',
|
||||
name: '夜神模擬器 (NoxPlayer)',
|
||||
link: 'https://www.yeshen.com/',
|
||||
note: '完美支援,但測試較少。已知相容 Hyper-V。',
|
||||
},
|
||||
@@ -57,22 +62,22 @@ const partiallySupport = shuffleArray([
|
||||
{
|
||||
name: 'MuMu 模擬器 6',
|
||||
link: 'https://mumu.163.com/update/win/',
|
||||
note: '自 MAA v5.1.0 起放棄支援,網易已在 2023.8.15 停止維護。\n\n- 不再支援自動檢測連線,需使用通用連線配置,並手動配置 ADB 路徑和連線地址。\n- 需要在 `設定` - `連線設定` 中執行 `強制替換 ADB`,才能使用 Minitouch, MaaTouch 等高效的觸控模式。\n- 需要使用管理員許可權執行 MAA 才能使用“完成後退出模擬器”相關功能。\n- 不支援使用 MuMu 6 預設的幾個奇葩解析度,需要改成 `1280x720`,`1920x1080` 等 16:9 比例。\n- MuMu 6 多開使用的是同一個 ADB 埠,所以無法支援多開的 MuMu 6。',
|
||||
note: '自 MAA v5.1.0 起放棄支援,網易已於 2023.8.15 停止維護。\n\n- 不再支援自動偵測連線,需使用通用連線配置,並手動設定 ADB 路徑與連線地址。\n- 需要在 `設定` - `連線設定` 中執行 `強制替換 ADB`,才能使用 Minitouch, MaaTouch 等高效觸控模式。\n- 需要使用管理員權限執行 MAA 才能使用「完成後退出模擬器」相關功能。\n- 不支援使用 MuMu 6 預設的幾個特殊解析度,需要改為 `1280x720`、`1920x1080` 等 16:9 比例。\n- MuMu 6 分身多開使用的是同一個 ADB 連接埠,因此無法支援多開的 MuMu 6。',
|
||||
},
|
||||
{
|
||||
name: 'Windows Subsystem for Android™ (WSA)',
|
||||
link: 'https://docs.microsoft.com/zh-tw/windows/android/wsa/',
|
||||
note: '自 MAA v5.2.0 起放棄支援,微軟已在 2025.3.5 停止維護。\n\n- 需要使用 [自定義連線](../connection.html) 的方式來連線。\n- WSA 2204 或更高版本(版本號在子系統設定的 `關於` 頁面中),連線配置選擇 `通用配置`。\n- WSA 2203 或更老版本(版本號在子系統設定頁面的上方),連線配置選擇 `WSA 舊版本`。\n- 由於本軟體僅對 720p 以上 `16:9` 解析度支援較好,所以請手動拖動視窗大小,儘量貼近 16:9 比例。(如果你的顯示器是 16:9 的,可以直接按 `F11` 全屏)。\n- 任務執行過程中請儘量保證明日方舟在前台且無其他安卓應用同時在前台執行,否則可能導致遊戲暫停執行或任務識別錯誤。\n- WSA 的截圖經常莫名其妙截出來一個白螢幕,導致辨識異常,還是不推薦使用。',
|
||||
note: '自 MAA v5.2.0 起放棄支援,微軟已於 2025.3.5 停止維護。\n\n- 需要使用 [自定義連線](../connection.html) 的方式來連線。\n- WSA 2204 或更高版本(版本號在子系統設定的 `關於` 頁面中),連線配置選擇 `通用配置`。\n- WSA 2203 或更舊版本(版本號在子系統設定頁面上方),連線配置選擇 `WSA 舊版本`。\n- 由於本軟體僅對 720p 以上 `16:9` 解析度支援較好,因此請手動拖曳視窗大小,盡量貼近 16:9 比例。(如果您的顯示器是 16:9 的,可以直接按 `F11` 全螢幕)。\n- 任務執行過程中請盡量保證《明日方舟》在前景且無其他 Android 應用同時在前景執行,否則可能導致遊戲暫停執行或任務辨識錯誤。\n- WSA 的截圖經常莫名其妙截出白屏,導致辨識異常,還是不建議使用。',
|
||||
},
|
||||
{
|
||||
name: 'AVD',
|
||||
link: 'https://developer.android.com/studio/run/managing-avds',
|
||||
note: '理論支援。\n\n- 從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為除錯而生的,更建議使用其他為遊戲而設計的模擬器。',
|
||||
note: '理論支援。\n\n- 從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用,請切換至其他觸控模式,或將 SELinux **臨時**切換為 `Permissive` 模式。\n- AVD 是為開發除錯而生的,更建議使用其他為遊戲設計的模擬器。',
|
||||
},
|
||||
{
|
||||
name: 'Google Play 遊戲(開發者)',
|
||||
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-cn',
|
||||
note: '理論支援。必須開啟 Hyper-V,且必須登入 Gooole 帳戶。\n\n- 需要使用 [自定義連線](../connection.html) 的方式來連線,ADB 埠為 `6520`。\n- 由於 Android 10 及更新版本的 SELinux 策略,Minitouch 無法正常工作,請切換到其他觸控模式。\n- 每次啟動模擬器後的首次連線都會失敗,需勾選 `連線失敗後嘗試關閉並重啟ADB程式`。',
|
||||
name: 'Google Play 遊戲(開發者版本)',
|
||||
link: 'https://developer.android.com/games/playgames/emulator?hl=zh-tw',
|
||||
note: '理論支援。必須開啟 Hyper-V,且必須登入 Google 帳戶。\n\n- 需要使用 [自定義連線](../connection.html) 的方式來連線,ADB 連接埠為 `6520`。\n- 由於 Android 10 及更新版本的 SELinux 策略,Minitouch 無法正常工作,請切換到其他觸控模式。\n- 每次啟動模擬器後的首次連線都會失敗,需勾選 `連線失敗後嘗試關閉並重啟 ADB`。',
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -80,7 +85,12 @@ const notSupport = shuffleArray([
|
||||
{
|
||||
name: 'Google Play 遊戲',
|
||||
link: 'https://play.google.com/googleplaygames',
|
||||
note: '不支援,[玩家客戶端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)未開放 ADB 埠。',
|
||||
note: '不支援,[一般玩家版客戶端](https://developer.android.com/games/playgames/pg-emulator?hl=zh-tw#installing-game-consumer)無法連線 ADB。',
|
||||
},
|
||||
{
|
||||
name: '騰訊應用寶',
|
||||
link: 'https://sj.qq.com/',
|
||||
note: '不支援,騰訊應用寶沒有提供 ADB 連線選項,無法連線 ADB。',
|
||||
},
|
||||
]);
|
||||
|
||||
|
||||
@@ -5,157 +5,120 @@ icon: ph:question-fill
|
||||
|
||||
# 常見問題
|
||||
|
||||
如果是第一次使用 MAA,請閱讀[新手上路](./newbie.md)。
|
||||
如果是第一次使用 MAA,請先閱讀 [新手上路](./newbie.md)。
|
||||
|
||||
::: warning
|
||||
|
||||
若 MAA 在某次更新後無法運行,或者純粹是從 MAA 的報錯窗口來到這裡,那大概率是由於運行庫未更新導致的問題。
|
||||
出現次數最多的問題都是運行庫問題,而總是有人看不到文檔到處問,所以我們把置頂換成了這個。很氣。
|
||||
若 MAA 在某次更新後無法執行,或是因為報錯視窗而導引至此,通常是因為執行庫未更新所致。
|
||||
執行庫問題是最常見的錯誤原因,且經常被忽略,因此我們將此說明置頂。
|
||||
|
||||
請運行 MAA 目錄下的 `DependencySetup_依赖库安装.bat`,或者在終端中運行以下命令,
|
||||
請執行 MAA 目錄下的 `DependencySetup_依赖库安装.bat`,或在終端機中執行以下指令:
|
||||
|
||||
```sh
|
||||
winget install "Microsoft.VCRedist.2015+.x64" --override "/repair /passive /norestart" --force --uninstall-previous --accept-package-agreements && winget install "Microsoft.DotNet.DesktopRuntime.10" --override "/repair /passive /norestart" --force --uninstall-previous --accept-package-agreements
|
||||
```
|
||||
|
||||
或者手動下載並安裝以下<u>**兩個**</u>運行庫來解決問題。
|
||||
也可以手動下載並安裝以下<u>**兩個**</u>執行庫來解決問題:
|
||||
|
||||
- [Visual C++ 可再發行程序包](https://aka.ms/vc14/vc_redist.x64.exe)
|
||||
- [.NET 桌面運行時 10](https://aka.ms/dotnet/10.0/windowsdesktop-runtime-win-x64.exe)
|
||||
- [Visual C++ 可再發行套件](https://aka.ms/vc14/vc_redist.x64.exe)
|
||||
- [.NET 桌面執行階段 10](https://aka.ms/dotnet/10.0/windowsdesktop-runtime-win-x64.exe)
|
||||
|
||||
:::
|
||||
|
||||
## 軟件無法運行/閃退/報錯
|
||||
## 軟體無法執行 / 閃退 / 報錯
|
||||
|
||||
### 下載/安裝問題
|
||||
### 下載與安裝問題
|
||||
|
||||
- 完整 MAA 軟件壓縮包命名格式為 "MAA-`版本`-`平台`-`架構`.zip",其餘均為無法單獨使用的“零部件”,請仔細閱讀。
|
||||
在大部分情況下,您需要使用 x64 架構的 MAA,即您需要下載 `MAA-*-win-x64.zip`,而非 `MAA-*-win-arm64.zip`。
|
||||
- 如果在某次自動更新後發現功能缺失或無法使用,可能是自動更新過程中出現了問題。請重新下載並解壓完整安裝包。解壓後,將舊 `MAA` 文件夾中的 `config` 文件夾直接拖入新解壓後的 `MAA` 文件夾中。
|
||||
- 完整的 MAA 壓縮檔案命名格式為 "MAA-`版本`-`平台`-`架構`.zip",其餘檔案皆為無法單獨執行的組成元件,請務必確認下載檔案是否完整。
|
||||
多數情況下,您需要下載 x64 架構的版本,即 `MAA-*-win-x64.zip`,而非 `MAA-*-win-arm64.zip`。
|
||||
- 若自動更新後發現功能缺失或無法使用,可能是更新過程中出現錯誤,建議重新下載完整程式壓縮檔並再次解壓縮。
|
||||
您可以將舊 `MAA` 資料夾中的 `config` 資料夾直接移至新解壓縮後的 `MAA` 資料夾中以保留設定。
|
||||
|
||||
### 運行庫問題
|
||||
### 執行庫問題
|
||||
|
||||
找到網頁右下角的向上 ↑ 箭頭,點一下它。
|
||||
請點擊網頁右下角的 ↑ (向上箭頭)回到頂端並查看說明。
|
||||
|
||||
### 系統問題
|
||||
|
||||
- MAA 不支持 32 位操作系統,不支持 Windows 7 / 8 / 8.1。
|
||||
- 以上運行庫安裝均需要依賴組件存儲服務(CBS、TrustedInstaller/TiWorker、WinSxS)。
|
||||
如果組件存儲服務被破壞,將不能正常安裝。
|
||||
- MAA 不支援 32 位元作業系統,亦不支援 Windows 7 / 8 / 8.1。
|
||||
- 以上執行庫安裝均需要依賴元件存儲服務(CBS、TrustedInstaller/TiWorker、WinSxS)。
|
||||
若該服務受損,將無法正常安裝。
|
||||
|
||||
我們無法提供除重裝系統以外的修復建議,請避免使用未標明精簡項及精簡風險的“精簡版”系統,或者萬年前的舊版系統。
|
||||
我們無法提供除重灌系統以外的修復建議,請避免使用過度精簡的系統版本或過舊的作業系統。
|
||||
|
||||
#### Windows N/KN
|
||||
|
||||
對於 Windows N/KN(歐洲/韓國),還需安裝[媒體功能包](https://support.microsoft.com/zh-tw/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。
|
||||
若您使用的是 Windows N / KN(歐洲或韓國版本),需額外安裝 [Media Feature Pack](https://support.microsoft.com/zh-tw/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。
|
||||
|
||||
#### Windows 7
|
||||
#### Windows 7 / 8 / 8.1
|
||||
|
||||
.NET 10 不支持 Windows 7 / 8 / 8.1 系統<sup>[源](https://github.com/dotnet/core/issues/7556)</sup>,所以 MAA 也同樣不再支持。最後一個可用的 .NET 8 版本為 [`v5.4.0-beta.1.d035.gd2e5001e7`](https://github.com/MaaAssistantArknights/MaaRelease/releases/tag/v5.4.0-beta.1.d035.gd2e5001e7);最後一個可用的 .NET 4.8 版本為 [`v4.28.8`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/tag/v4.28.8)。尚未確定自行編譯的可行性。
|
||||
.NET 10 不支援 Windows 7 / 8 / 8.1 系統<sup>[來源](https://github.com/dotnet/core/issues/7556)</sup>,所以 MAA 也同樣不再支援。
|
||||
|
||||
對於 Windows 7,在安裝上文提到的兩個運行庫之前,還需檢查以下補丁是否已安裝:
|
||||
## 連線錯誤
|
||||
|
||||
1. [Windows 7 Service Pack 1](https://support.microsoft.com/zh-tw/windows/b3da2c0f-cdb6-0572-8596-bab972897f61)
|
||||
2. SHA-2 代碼簽名修補程式:
|
||||
- KB4474419:[下載連結 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)、[下載連結 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu)
|
||||
- KB4490628:[下載連結 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu)、[下載連結 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):[下載連結 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)、[下載連結 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu)
|
||||
### 確認 ADB 與連線位址設定
|
||||
|
||||
##### .NET 8 應用在 Windows 7 上運行異常的緩解措施 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238)
|
||||
請參閱 [連線設定](./connection.md) 檢查相關設定。
|
||||
|
||||
在 Windows 7 上運行 .NET 8 應用時,會出現內存佔用異常的問題,請參閱下文實施緩解措施。Windows 8/8.1 未經測試,若存在相同問題,請順手發個 Issue 提醒我們補充文檔。
|
||||
### 關閉殘留的 ADB 程序
|
||||
|
||||
1. 打開 `計算機`,右鍵空白處,點擊屬性,點擊左側 `高級系統設置`,點擊 `環境變量`。
|
||||
2. 新建一個系統變量,變量名 `DOTNET_EnableWriteXorExecute`,變量值 `0`。
|
||||
3. 重啟電腦。
|
||||
關閉 MAA 後,請檢查 `工作管理員 - 詳細資料` 標籤中是否仍有 `adb` 相關程序。若有,請將其結束後再重新嘗試連線。
|
||||
|
||||
## 連接錯誤
|
||||
### 多個 ADB 版本衝突問題
|
||||
|
||||
- 提示:請參考 [模擬器支援](./device/) 確定正在使用的模擬器通過了支援性測試。
|
||||
- 若使用了遊戲加速器等軟體,請關閉軟體並 **重開電腦** 後再次嘗試。
|
||||
- 請檢查您的解壓縮軟體 — 部分情況下使用如 `7z` 或 _其他小眾解壓縮軟體_ 會導致 `Minitouch` 相關檔案出錯
|
||||
當環境中存在多個不同版本的 ADB 時,新啟動的程序可能會中斷舊有的程序。
|
||||
若您需要同時執行多個工具(如 Android Studio、Alas、手機助手等),請確保所有工具使用的 ADB 版本一致。
|
||||
|
||||
### 方式 1 : 確認 adb 及連接地址正確
|
||||
### 避免加速器干擾
|
||||
|
||||
- 確認 MAA `設定` - `連接設定` - `adb 路徑` 是否已自動填寫,若已填寫請忽略這步。若未填寫:
|
||||
- 找到模擬器安裝路徑,Windows 可在執行模擬器時在工作管理員中右鍵程式點擊 `開啟檔案位置`。
|
||||
- 頂層或下層目錄中大概會有一個 `adb.exe`(不一定就叫這個名字,可能叫 `nox_adb.exe`;`HD-adb.exe`;`adb_server.exe` 等等,總之是名字帶 `adb` 的 exe),尋找它,選擇它!
|
||||
- 確認連接地址填寫正確。可在網上搜尋正在使用的模擬器 adb 偵錯地址是什麼,一般是類似 `127.0.0.1:5555` 這樣的格式(雷電模擬器除外)。
|
||||
部分加速器在啟動或停止加速後,需重新啟動 MAA、ADB 與模擬器才能正常連線。
|
||||
|
||||
#### 常見安卓模擬器adb通訊埠
|
||||
MuMu 模擬器與 UU 加速器同時使用的設定可參閱 [官方說明文件](https://mumu.163.com/help/20240321/35047_1144608.html)。
|
||||
|
||||
- 單開情況 / 多開時 首個模擬器
|
||||
### 重新啟動電腦
|
||||
|
||||
針對模擬器單開情況,參考各個模擬器文件和網易遊戲高級遊戲開發工程師@趙青青的[博客](https://www.cnblogs.com/zhaoqingqing/p/15238464.html),常見安卓模擬器的 adb 通訊埠如下:
|
||||
重新啟動電腦能解决 97% 的問題。(確信
|
||||
|
||||
| 模擬器 | 主模擬器預設通訊埠 |
|
||||
| -------------------- | :------------------: |
|
||||
| 網易 MuMu 模擬器 6/X | 7555 |
|
||||
| 網易 MuMu 模擬器 12 | 16384 |
|
||||
| 夜神安卓模擬器 | 62001 |
|
||||
| 逍遙安卓模擬器 | 21503 |
|
||||
| 藍疊安卓模擬器 | 5555 |
|
||||
| 雷電安卓模擬器 9 | 5555 / emulator-5554 |
|
||||
### 更換模擬器
|
||||
|
||||
純數字的預設通訊埠可以直接使用 `127.0.0.1:[port]` 來連接,雷電模擬器進行了封裝,也可以使用 `emulator-5554` 進行連接。
|
||||
若上述方法皆無效,請參閱 [模擬器與設備支援](./device/)。
|
||||
|
||||
在 Windows 與 Mac 的 `設定` - `連接設定` - `連接地址` 配置中,如果有情況需要修改則可以參照上表。
|
||||
## 連線正常,但無動作
|
||||
|
||||
- 多開情況
|
||||
- 夜神模擬器第一個設備通訊埠為 `62001` ,第二個通訊埠從 `62025` 開始遞增。
|
||||
- 網易 MuMu 模擬器 12 版本多開時 adb 通訊埠無規律,可以通過點擊 MuMu 多開器 12,啟動需要執行的模擬器,點擊右上角的 ADB 圖示,即可查看目前正在執行的模擬器 adb 通訊埠資訊。
|
||||
- 雷電模擬器從 9 版本開始,模擬器 adb 從本地通訊埠 `5555` 開始逐個遞增 2 ,比如第二個模擬器本地通訊埠為 `5557`。
|
||||
部分模擬器內建的 ADB 版本過於老舊,無法支援 `Minitouch` 或 `MaaTouch`。
|
||||
|
||||
### 方式 2 : 關閉冗餘 adb 程式
|
||||
請嘗試以系統管理員權限開啟 MAA,關閉模擬器並重啟 MAA 後,點擊 `MAA 設定 - 連線設定 - 強制替換 ADB`。
|
||||
|
||||
- 關閉 MAA 後查找 `工作管理員` - `詳細資料` 中有無名稱包含 `adb` 的程式(通常和上文中填寫的 `adb` 檔案同名),如有,結束它後重試連接。
|
||||
模擬器更新後可能會重新覆蓋 ADB 檔案。若問題再次出現,請重新操作替換,或參閱 [其他 ADB 解決方案](./connection.md#google-adb)。
|
||||
|
||||
### 方式 3 : 重開電腦
|
||||
## 連線正常,但操作異常、卡頓或頻繁出錯
|
||||
|
||||
- 重開能解決 99% 的問題。(確信
|
||||
- 若開啟了 `螢幕 UI 調整`,請嘗試將其歸零。
|
||||
- 若遊玩非官服(外服)客戶端,請確認 `設定 - 遊戲設定 - 客戶端類型` 已正確切換。外服部分功能可能未完全適配,請參考對應的外服使用文件。
|
||||
- 執行自動肉鴿時,請參閱 [自動肉鴿文件](./introduction/integrated-strategy.md),並確認 `自動肉鴿` → `肉鴿主題` 選擇正確。
|
||||
- 若自動戰鬥頻繁暫停且不部署幹員,請關閉 `設定 - 執行設定` 中的 `劃火柴模式`。
|
||||
- 自動編隊若無法辨識幹員,請取消該幹員的「特別關注」。
|
||||
- 使用 `Adb Input` 觸控模式時,操作較緩慢為正常現象。
|
||||
- MuMu 模擬器使用者請勿將 `顯存使用策略` 設定為 `資源佔用更小`。
|
||||
|
||||
### 方式 4 : 換模擬器
|
||||
### 提示截圖耗時較長或過長
|
||||
|
||||
- 請參考 [模擬器支援](./device/)
|
||||
- MAA 目前支持 `RawByNc`、`RawWithGzip`、`Encode` 三種基於 ADB 的截圖方式。當執行任務的平均截圖耗時大於 400 或 800 毫秒時,會顯示一次提示訊息(單次任務僅會顯示一次)。
|
||||
- 在 `設定 - 連線設定` 中會顯示最近 30 次截圖耗時的 最小值 / 平均值 / 最大值,每 10 次截圖更新一次。
|
||||
- 自動戰鬥類功能(如自動肉鴿)受截圖耗時的影響較大。
|
||||
- 此耗時與 MAA 無關,通常受電腦效能、背景程序佔用或模擬器設定影響;可嘗試清理背景程序、更換模擬器或提升硬體配置。
|
||||
|
||||
## 連接正常,但是無操作
|
||||
## 系統管理員權限相關說明
|
||||
|
||||
部分模擬器內建的 `adb` 版本過於老舊,不支援 `Minitouch` 相關操作。
|
||||
MAA 在一般情況下,無需以 UAC(系統管理員身分)執行即可使用所有功能。目前與權限相關的功能主要包括:
|
||||
|
||||
請使用系統管理員身分打開 MAA,點擊 `MAA 設定` - `連接設定` - `強制替換 ADB`。(建議關閉模擬器、重開 MAA 後再操作,否則可能替換失敗)
|
||||
1. `自動偵測連線`:當目標模擬器以系統管理員身份執行時,MAA 也需要對應權限。
|
||||
2. `完成後關閉模擬器`:當目標模擬器以系統管理員身分執行時,需要對應權限。
|
||||
3. `開機自動啟動 MAA`:無法在系統管理員身份下設定開機自動啟動。
|
||||
4. 當 MAA 被錯誤地解壓縮到需要系統管理員權限才能寫入的路徑時(例如 `C:\`、`C:\Program Files\`)。
|
||||
|
||||
模擬器更新後可能會重新覆蓋 adb 檔案。若更新後問題復現,請再次嘗試替換。
|
||||
有些案例反映,若關閉了 Windows 的 UAC 功能,系統會出現「即使沒有點選右鍵選擇以系統管理員身分執行,也會自動提升權限啟動」的問題,建議保持開啟狀態以避免非預期的權限提升行為。
|
||||
|
||||
如果這樣也無法正常使用,可將 `連接設定` - `觸控模式` 從 `Minitouch` 切換到 `MaaTouch` 再次嘗試。由於 `Adb Input` 操作過於緩慢,請僅將其作為萬不得已的模式。
|
||||
## 下載中斷或提示「權限驗證失敗」
|
||||
|
||||
## 連接正常,但是操作卡頓、異常或頻繁出錯
|
||||
|
||||
- 若使用了 `異形螢幕 UI 適配`,請將其調整為 0。
|
||||
- 若正在遊玩非陸服用戶端,請先在 `設定` - `遊戲設定` - `用戶端類型` 中選擇用戶端版本。非陸服部分功能可能並非完全適配,請參考對應的外服使用文件。
|
||||
- 若正在進行自動肉鴿,請參考 [文件](./introduction/integrated-strategy.md),並在 `任務設定` - `自動肉鴿` - `肉鴿主題` 中正確選擇主題。
|
||||
- 若自動戰鬥頻繁暫停且不下幹員,請關閉 `設置` - `運行設置` 中的 `劃火柴模式`。
|
||||
- 若自動編隊無法正常識別幹員,請取消對應幹員的特別關注。
|
||||
- `Adb Input` 觸控模式操作緩慢為正常情況,如需自動戰鬥等請嘗試切換其他模式。
|
||||
- 若正在使用 MuMu 模擬器,請勿將 `視訊記憶體使用策略` 設置為 `資源占用更小`。
|
||||
|
||||
### 提示截圖用時較長 / 過長
|
||||
|
||||
- MAA 目前支援 `RawByNc` 、 `RawWithGzip` 、 `Encode` 三種截圖方式,當執行任務平均截圖耗時 >400 / >800 時會輸出一次提示訊息(單次任務只會輸出一次)
|
||||
- `設定 - 連線設定` 中會顯示近30次截圖耗時的 最小/平均/最大值,每10次截圖刷新
|
||||
- 自動戰鬥類功能(如自動肉鴿)受截圖耗時影響較大
|
||||
- 此項耗時與MAA無關,與電腦效能、目前佔用或模擬器相關,可嘗試清理後台/更換模擬器/升級電腦配置
|
||||
|
||||
## 管理員權限相關問題
|
||||
|
||||
MAA 理應無需以 Windows UAC 管理員權限運行即可實現所有功能。現與管理員權限有關的功能主要包括:
|
||||
|
||||
1. `自動檢測連接`:當目標模擬器以管理員身份運行時需要管理員權限。
|
||||
2. `完成後關閉模擬器`:當目標模擬器以管理員身份運行時需要管理員權限。
|
||||
3. `開機自動啟動 MAA`:無法在管理員身份下設置開機自啟。
|
||||
4. 當 MAA 被錯誤解壓到需要管理員權限進行寫入的路徑時,例如 `C:\`、`C:\Program Files\`。
|
||||
|
||||
有報告稱關閉了 UAC 的系統存在“即使沒有右鍵選擇管理員運行也會以管理員權限啟動”的問題,建議開啟 UAC 以避免意料之外的提權行為。
|
||||
|
||||
## 下載到一半提示 “登錄” / “鑑權”
|
||||
|
||||
請使用 瀏覽器 / IDM / FDM 等正規下載器下載檔案,**不要用傻逼迅雷!**
|
||||
請使用瀏覽器或 IDM、FDM 等專門的下載工具,**不要用 ↑↓ 迅雷!**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 功能介绍
|
||||
title: 功能介紹
|
||||
icon: mdi:information-outline
|
||||
index: false
|
||||
dir:
|
||||
|
||||
@@ -3,126 +3,113 @@ order: 3
|
||||
icon: hugeicons:brain-02
|
||||
---
|
||||
|
||||
# 刷理智
|
||||
# 刷作戰
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
## 一般設定
|
||||
|
||||
## 常规设置
|
||||
- `吃理智藥` + `吃源石` 和 `指定次數`、`指定材料` 三個選項為為「或」邏輯關係,
|
||||
即達成三個選項中的任一條件,均會視為任務完成,停止刷理智。
|
||||
- `吃理智藥` 指定補充幾瓶理智(可能一次吃多瓶藥)。
|
||||
- `吃源石` 指定碎幾顆石頭(一次一顆),當倉庫中有理智藥時不會碎石。
|
||||
- `指定次數` 指定刷多少次指定關卡(例如「刷 15 次後停止」)。
|
||||
- `指定材料` 指定刷多少個指定材料(例如「獲取 5 個固源岩後停止」)。
|
||||
|
||||
- `吃理智药` + `吃源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智。
|
||||
- `吃理智药` 指定补充几次理智(可能一次吃多瓶药)。
|
||||
- `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。
|
||||
- `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。
|
||||
- `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。
|
||||
- `指定材料` 與 `關卡選擇` 是兩個互相獨立的邏輯。`指定材料` 只是以材料個數作為任務完成依據,並不會自動導航到相應關卡。
|
||||
- `吃源石` 只會在 `吃理智藥` 之後判斷,因為 MAA 只有在沒有理智藥時才會使用源石補充理智。
|
||||
所以在勾選 `吃源石` 之後,MAA 會將 `吃理智藥` 的次數鎖定為 999,確保將理智藥吃光,以避免跳過 `吃源石` 判斷。
|
||||
|
||||
- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。
|
||||
- `吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后,MAA 会将 `吃理智药` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `吃源石` 判断。
|
||||
::: details 範例
|
||||
|
||||
::: details 例子
|
||||
|
||||
| 吃理智药 | 吃源石 | 指定次数 | 指定材料 | 结果 |
|
||||
| 吃理智藥 | 吃源石 | 指定次數 | 指定材料 | 结果 |
|
||||
| :------: | :----: | :------: | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| | | | | 刷完现有理智即结束。 |
|
||||
| 2 | | | | 先刷完现有理智,然后吃一次理智药,一共吃 `2` 次,刷完理智后结束。 |
|
||||
| _999_ | 2 | | | 先刷完现有理智,并吃光理智药后,再碎石,一共碎 `2` 次,刷完理智后结束。 |
|
||||
| | | 2 | | 刷 `2` 次选择的关卡即结束。 |
|
||||
| | | | 2 | 掉落统计刷到 `2` 个指定的材料即结束。 |
|
||||
| 2 | | 4 | | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。 |
|
||||
| 2 | | | 4 | 在最多吃 `2` 次理智药的情况下,掉落统计刷到 `4` 个指定的材料即结束。 |
|
||||
| 2 | | 4 | 8 | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。但如果在没刷完 `4` 次之前就获得了 `8` 个指定材料,则会提前结束。 |
|
||||
| _999_ | 4 | 8 | 16 | 在最多吃光理智药并碎 `4` 次石头的情况下,刷 `8` 次选择的关卡即结束。但如果在没刷完 `8` 次之前就获得了 `16` 个指定材料,则会提前结束。 |
|
||||
| | 2 | | | 先刷完现有理智,如果仓库中有理智药则结束,如果没有理智药则碎 `2` 次石,刷完理智后结束。_非 MAA GUI 行为_ |
|
||||
| 2 | 4 | | | 先刷完现有理智,如果吃完 `2` 次理智药后还有理智药,则结束;如果吃完 ≤`2` 次理智药后没有理智药了,则继续碎 `4` 次石头,刷完理智后结束。_非 MAA GUI 行为_ |
|
||||
| | | | | 刷完現有理智即結束。 |
|
||||
| 2 | | | | 先刷完現有理智,然後吃一次理智藥,一共吃 `2` 次,刷完理智後結束。 |
|
||||
| _999_ | 2 | | | 先刷完現有理智,並吃光理智藥後,再碎石,一共碎 `2` 次,刷完理智後結束。 |
|
||||
| | | 2 | | 刷 `2` 次選擇的關卡即結束。 |
|
||||
| | | | 2 | 掉落統計刷到 `2` 個指定的材料即結束。 |
|
||||
| 2 | | 4 | | 在最多吃 `2` 次理智藥的情況下,刷 `4` 次選擇的關卡即結束。 |
|
||||
| 2 | | | 4 | 在最多吃 `2` 次理智藥的情況下,掉落統計刷到 `4` 個指定的材料即結束。 |
|
||||
| 2 | | 4 | 8 | 在最多吃 `2` 次理智藥的情況下,刷 `4` 次選擇的關卡即結束。但如果在沒刷完 `4` 次之前就獲得了 `8` 個指定材料,則會提前結束。 |
|
||||
| _999_ | 4 | 8 | 16 | 在最多吃光理智藥並碎 `4` 次石頭的情況下,刷 `8` 次選擇的關卡即結束。但如果在沒刷完 `8` 次之前就獲得了 `16` 個指定材料,則會提前結束。 |
|
||||
| | 2 | | | 先刷完現有理智,如果倉庫中有理智藥則結束,如果沒有理智藥則碎 `2` 次石,刷完理智後結束。_非 MAA GUI 行為_ |
|
||||
| 2 | 4 | | | 先刷完現有理智,如果吃完 `2` 次理智藥後還有理智藥,則結束;如果吃完 ≤`2` 次理智藥後沒有理智藥了,則繼續碎 `4` 次石頭,刷完理智後結束。_非 MAA GUI 行為_ |
|
||||
|
||||
:::
|
||||
|
||||
### 关卡选择
|
||||
### 關卡選擇
|
||||
|
||||
- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡
|
||||
确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。
|
||||
- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。
|
||||
- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有:
|
||||
- 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。
|
||||
- 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。
|
||||
- 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。
|
||||
- 若關卡選擇中沒有您需要的關卡,請在 MAA 中選擇 `目前/上次`,然後在遊戲中手動定位關卡。
|
||||
確保畫面停留在「右上角有關卡名稱和剩餘理智,右下角有代理指揮和開始行動」的關卡詳情介面。
|
||||
- 若目前不處於此介面,則 `目前/上次` 會自動進入終端首頁右下角「上次作戰」的關卡。
|
||||
- 也可以在 `設定 - 刷理智 - 進階設定` 中啟用 `手動輸入關卡名稱` 手動輸入關卡編號。目前支援導航的關卡有:
|
||||
- 全部主線關卡。可在關卡末尾添加 `-NORMAL` 或 `-HARD` 來切換標準或磨難關卡。
|
||||
- 龍門幣、作戰記錄的 5 / 6 關,但必須輸入 `CE-6` / `LS-6`。MAA 會在第六關無法代理的情況下自動切換至第五關。
|
||||
- 技能書、採購憑證、碳本第 5 關,必須輸入 `CA-5` / `AP-5` / `SK-5`。
|
||||
- 所有晶片本。必須輸入完整關卡編號,如 `PR-A-1`。
|
||||
- 剿滅模式支援以下傳入值,必須使用對應的 Value:
|
||||
- 當期剿滅:Annihilation
|
||||
- 切爾諾伯格:Chernobog@Annihilation
|
||||
- 龍門外環:LungmenOutskirts@Annihilation
|
||||
- 龍門市區:LungmenDowntown@Annihilation
|
||||
|
||||
- 别传中的 `OF-1` / `OF-F3` / `GT-5`。
|
||||
- 当期 SS 活动 后三关。在自动访问 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。
|
||||
- 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。
|
||||
- 別傳中的 `OF-1` / `OF-F3` / `GT-5`。
|
||||
- 當期 SS 活動後三關。在自動存取 [API](https://api.maa.plus/MaaAssistantArknights/api/gui/StageActivityV2.json) 下載更新後會在介面下方顯示。
|
||||
- 復刻的 SS 活動。輸入 `SSReopen-<關卡前綴>` ,可一次性刷完 XX-1 ~ XX-9 關,如 `SSReopen-IC`。
|
||||
|
||||
::: details 範例畫面
|
||||

|
||||

|
||||
:::
|
||||
|
||||
### 剿滅模式
|
||||
|
||||
- MAA 僅會透過終端主頁右上角的剿滅按鈕跳轉,請確保所選擇的剿滅關卡已解鎖 `全權委託`,並持有足夠數量的 `PRTS 剿滅代理卡`。
|
||||
- MAA 僅透過終端首頁右上角的剿滅按鈕跳轉,請確保所選擇的剿滅關卡已解鎖 `全權委託`,並持有足夠數量的 `PRTS 剿滅代理卡`。
|
||||
- 僅建議已達成「400 殺」的關卡使用自動剿滅功能。
|
||||
|
||||
## 高级设置
|
||||
## 進階設定
|
||||
|
||||
### 备选关卡
|
||||
### 備選關卡
|
||||
|
||||
备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。
|
||||
備選關卡根據當天關卡開放情況決定戰鬥關卡,即選擇第一個開放關卡進行戰鬥。
|
||||
這是一個類似於排程表的功能,並不能當作關卡選擇任務失敗時的備用關卡。
|
||||
|
||||
1. 例子:关卡选择 `龙门币-6/5`,备选选择 `1-7` 和 `经验-6/5`:
|
||||
- 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` 和 `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错。
|
||||
- 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错。
|
||||
- 由于 `经验-6/5` 前存在常驻关卡 `1-7`,在这种情况下,MAA 永远也不会前往 `经验-6/5` 战斗。
|
||||
2. 若关卡选择为 `剿滅模式`,则:
|
||||
- 不会因为剿灭的结果影响其余备选关卡的选择逻辑,即使剿灭出错,刷理智任务也不会出错。
|
||||
- 剩余的备选关卡只会继承 `吃理智药` 和 `代理倍率` 的设置,不受 `吃源石`、`指定次数`、`指定材料` 的控制。
|
||||
範例:關卡備選新增了 `龍門幣-6/5`、`1-7` 與 `經驗-6/5`:
|
||||
|
||||
### 剩余理智
|
||||
|
||||
在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。
|
||||
|
||||
- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。
|
||||
- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。
|
||||
- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。
|
||||
- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。
|
||||
- 若當天開放 `龍門幣-6/5`,則會前往該關卡,不會前往 `1-7` 或 `經驗-6/5`。若玩家此時未解鎖 `龍門幣-6/5` 代理,則刷理智任務出錯。
|
||||
- 若當天未開放 `龍門幣-6/5`,則前往 `1-7`,不會前往 `經驗-6/5`。若玩家此時未解鎖 `1-7` 代理,則刷理智任務出錯。
|
||||
- 由於 `經驗-6/5` 前存在常駐關卡 `1-7`,在這種情況下,MAA 永遠不會前往 `經驗-6/5` 戰鬥。
|
||||
|
||||
### 代理倍率
|
||||
|
||||
MAA 會根據使用者設定的代理倍率進行戰鬥:
|
||||
|
||||
- **AUTO模式**(0):
|
||||
- 自動辨識關卡最大代理倍率, 保持最大代理倍率且理智不溢出
|
||||
- 完成後進入`剩餘理智`流程(若設定)
|
||||
- **AUTO 模式**(0):
|
||||
- 自動辨識關卡最大代理倍率,保持最大代理倍率且理智不溢出。
|
||||
|
||||
- **數值模式**(1~6):
|
||||
- 依設定倍率執行代理
|
||||
- 若目前理智不足完成設定次數(如僅夠5次但設為6次), 會直接結束任務並進入`剩餘理智`流程(若設定)
|
||||
- 依照設定倍率執行代理。
|
||||
- 若目前理智不足完成設定次數(如僅夠 5 次但設為 6 次),會直接結束任務。
|
||||
|
||||
- **停用模式**(-1):
|
||||
- 不調整遊戲內代理倍率設定
|
||||
- 若理智不足完成遊戲內目前設定次數, 直接結束任務進入`剩餘理智`流程(若設定)
|
||||
- 不調整遊戲內代理倍率設定。
|
||||
- 若理智不足完成遊戲內目前設定次數,直接結束任務。
|
||||
|
||||
### 指定次數
|
||||
|
||||
MAA 將最多執行指定次數的戰鬥。
|
||||
MAA 執行的戰鬥次數不會超過「指定次數」。
|
||||
|
||||
例: 假設當前 100 理智, 關卡消耗 6 理智
|
||||
範例:假設目前 100 理智,關卡消耗 6 理智
|
||||
|
||||
- 指定次數設為 10, 代理倍率設為 4: 將執行 2 (次開始行動) x 4(倍代理) = 8 次作戰(floor(10 / 4) × 4 = 8), 消耗 8 x 6 = 48 理智。此時若再進行一次4倍代理則達到 12 次作戰, 超過設定的 10 次, 故不再執行, 以 8 次作戰結束任務
|
||||
- 指定次數設為 10, 代理倍率設為 AUTO: 將執行 一次6倍代理 + 一次4倍代理 = 10 次作戰(6 × floor(10 / 6) + (10 % 6) = 10), 消耗 10 x 6 = 60 理智
|
||||
- 指定次數設為 10,代理倍率設為 4:將執行 2 (次開始行動) x 4 (倍代理) = 8 次作戰 (floor(10 / 4) x 4 = 8),消耗 8 x 6 = 48 理智。此時若再進行一次 4 倍代理則達到 12 次作戰,超過設定的 10 次,故不再執行,以 8 次作戰結束任務。
|
||||
- 指定次數設為 10,代理倍率設為 AUTO:將執行 一次 6 倍代理 + 一次 4 倍代理 = 10 次作戰 (6 x floor(10 / 6) + (10 % 6) = 10),消耗 10 x 6 = 60 理智。
|
||||
|
||||
### 掉落识别
|
||||
### 掉落辨識
|
||||
|
||||
- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。
|
||||
- 支持自定义企鹅物流用户 ID。
|
||||
- 支援自動辨識並統計材料掉落,同時上傳至 [企鵝物流數據統計](https://penguin-stats.io/) 和 [一圖流](https://ark.yituliu.cn/)。
|
||||
- 支援自定義企鵝物流使用者 ID。
|
||||
|
||||
## 异常检测
|
||||
## 異常檢測
|
||||
|
||||
- 支持自动勾选 `代理指挥`。
|
||||
- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。
|
||||
- 支持等级提升后继续任务。
|
||||
- 代理失败时会放弃本次行动并重新战斗。
|
||||
- 支援自動勾選 `代理指揮`。
|
||||
- 支援斷線後或凌晨 4 點閃斷後自動重連並繼續任務。
|
||||
- 支援等級提升後繼續任務。
|
||||
- 代理失敗時會放棄本次行動並重新戰鬥。
|
||||
|
||||
@@ -5,49 +5,45 @@ icon: ph:sword-bold
|
||||
|
||||
# 自動戰鬥
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
|
||||
歡迎使用作業分享站 [prts.plus](https://prts.plus) 使用及分享作業文件。
|
||||
歡迎造訪作業分享站 [zoot.plus](https://zoot.plus/) 使用及分享作業檔案。
|
||||
|
||||
::: warning
|
||||
所有涉及到自動戰鬥的功能都需要以下前提,這包括但不限於自動戰鬥和自動肉鴿。
|
||||
所有涉及到自動戰鬥的功能都需要符合以下前提,這包括但不限於自動戰鬥和自動肉鴿。
|
||||
|
||||
- 至少 60 幀的**穩定**遊戲幀數
|
||||
- 至少 60 FPS 的**穩定**遊戲偵數
|
||||
- 觸控模式為 Minitouch 或 MaaTouch
|
||||
|
||||
:::
|
||||
|
||||
## 抄作業
|
||||
|
||||
支持任意 `可編隊關卡` 和 `保全派駐` 模式的自動戰鬥。
|
||||
支援任意 `可編隊關卡` 和 `保全派駐` 模式的自動戰鬥。
|
||||
|
||||
- 本功能需要在有 `開始行動` 按鈕的編隊選擇界面開始運行。
|
||||
之後在 MAA 左側上部的框中 `導入本地 JSON 作業文件` 或 `填寫作業站神秘代碼` 即可導入作業。
|
||||
- `自動編隊` 功能會**清空檔前編隊**並根據作業需要的幹員自動完成編隊。
|
||||
- 本功能需要在有 `開始行動` 按鈕的編隊選擇介面開始執行。
|
||||
之後在 MAA 左側上方的方框中 `匯入本地 JSON 作業檔案` 或 `填寫作業站神秘代碼` 即可匯入作業。
|
||||
- `自動編隊` 功能會**清空目前編隊**並根據作業需要的幹員自動完成編隊。
|
||||
- 需取消自動編隊對應幹員的特別關注。
|
||||
- 可根據任務需要為自動編隊 `追加自定幹員` 和 `補充低信賴幹員`。
|
||||
- 可根據任務需要為自動編隊 `追加自定義幹員` 和 `補充低信賴幹員`。
|
||||
- 可根據個人需要(例如需要使用 `好友助戰` 時)取消 `自動編隊`,手動編隊後開始。
|
||||
- 對於「悖論模擬」關卡,必須關閉 `自動編隊`,手動選擇技能後,在有**開始模擬**按鈕的界面開始自動戰鬥。
|
||||
- 對於「保全派駐」關卡,`自動編隊` 無效,必須手動完成**初始**任務準備,直到在關卡詳情有**開始部署**按鈕的界面才能開始自動戰鬥。
|
||||
- 可設置 `循環次數`,例如保全。但 MAA 不會借幹員,如需借幹員請勿使用。
|
||||
- 對於「悖論模擬」關卡,必須關閉 `自動編隊`,手動選擇技能後,在有**開始模擬**按鈕的介面開始自動戰鬥。
|
||||
- 對於「保全派駐」關卡,`自動編隊` 無效,必須手動完成**初始**任務準備,直到在關卡詳情有**開始部署**按鈕的介面才能開始自動戰鬥。
|
||||
- 可設定 `循環次數`,例如保全派駐。但 MAA 不會借用幹員,如需借用幹員請勿使用。
|
||||
- 可使用 `戰鬥列表` 功能進行同一區域關卡的自動連續戰鬥。
|
||||
- 戰鬥列表下方三個按鈕從左到右依次為 `批次導入`、`添加關卡`、`清空關卡`。
|
||||
`添加關卡` 右鍵為添加突襲關卡,`清空關卡` 右鍵為清空未勾選關卡,
|
||||
- 導入作業後,戰鬥列表下方會出現關卡名,確認正確後再添加該關卡。列表中的關卡可以拖拽調整順序,勾選是否執行。
|
||||
- 開啟本功能後改為在**關卡所在的地圖界面**開始自動戰鬥。在理智不足/戰鬥失敗/非三星結算時將停止自動戰鬥隊列。
|
||||
- 請確保列表中的關卡在同一區域(只通過左右滑動地圖界面就可以導航到)。
|
||||
- **請務必為優質作業按讚,以提高作業評分並激勵作業製作者。**
|
||||
- 戰鬥列表下方三個按鈕從左到右依序為 `批次匯入`、`添加關卡`、`清空關卡`。
|
||||
在 `添加關卡` 按右鍵為添加突襲關卡,`清空關卡` 按右鍵為清空未勾選關卡。
|
||||
- 匯入作業後,戰鬥列表下方會出現關卡名稱,確認正確後再添加該關卡。列表中的關卡可以拖曳調整順序,並勾選是否執行。
|
||||
- 開啟本功能後,改為在**關卡所在的地圖介面**開始自動戰鬥。在理智不足 / 戰鬥失敗 / 非三星結算時,將停止自動戰鬥隊列。
|
||||
- 請確保列表中的關卡在同一區域(只需透過左右滑動地圖介面即可導航到)。
|
||||
- **請務必為優質作業點讚,以提高作業評分並激勵作業製作者。**
|
||||

|
||||
|
||||
## 寫作業
|
||||
|
||||
- 請使用 [作業編輯器](https://prts.plus/create) 製作,可參考 [戰鬥流程協議](../../protocol/copilot-schema.md)。
|
||||
- 地圖坐標獲取:
|
||||
- 在作業編輯器中填寫關卡後,左下角會自動載入可拖動縮放的坐標地圖,可點選設置當前幹員位置。
|
||||
- 填寫關卡並導出 JSON 後直接開始行動,會在 MAA 目錄下 `debug\map` 中生成覆蓋有坐標資訊的地圖截圖。
|
||||
- [PRTS.Map](https://map.ark-nights.com/areas),在設置中將 `坐標展示` 修改為 `MAA` 後使用。
|
||||
- 支持演習模式。
|
||||
- 建議在作業描述裡填上你的署名(作者名)、參考的攻略影片連結、其他想說的等等。
|
||||
- 歡迎加入企鵝群 [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) 共同討論作業製作等問題。
|
||||
- 請使用 [作業編輯器](https://zoot.plus/create) 製作,可參閱 [戰鬥流程協定](../../protocol/copilot-schema.md)。
|
||||
- 地圖座標獲取:
|
||||
- 在作業編輯器中填寫關卡後,左下角會自動載入可拖曳縮放的座標地圖,可點選設定目前幹員位置。
|
||||
- 填寫關卡並匯出 JSON 後直接開始行動,會在 MAA 目錄下 `debug\map` 中產生覆蓋有座標資訊的地圖截圖。
|
||||
- [PRTS.Map](https://map.ark-nights.com/areas),在設定中將 `座標展示` 修改為 `MAA` 後使用。
|
||||
- 支援演習模式。
|
||||
- 建議在作業描述裡填上您的署名(作者名稱)、參考的攻略影片連結、其他想說的話等等。
|
||||
- 歡迎加入 QQ 群 [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) 共同討論作業製作等問題。
|
||||
|
||||
@@ -3,19 +3,15 @@ order: 5
|
||||
icon: solar:shop-2-bold
|
||||
---
|
||||
|
||||
# 获取信用及购物
|
||||
# 獲取信用及購物
|
||||
|
||||
::: important Translation Required
|
||||
This page is outdated and maybe still in Simplified Chinese. Translation is needed.
|
||||
:::
|
||||
- 會自動造訪好友獲取信用點,並前往信用交易所購物。
|
||||
- 借助戰賺信用:
|
||||
- MAA 會使用助戰幹員通關一次火藍之心 `OF-1` 關卡,請確認該關卡已解鎖。
|
||||
- 關卡選擇為 `目前/上次` 時不會執行借助戰任務。
|
||||
|
||||
- 会自动访问好友获取信用点,并前往信用交易所购物。
|
||||
- 借助战赚信用:
|
||||
- MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。
|
||||
- 关卡选择为 `当前/上次` 时不会执行借助战任务。
|
||||
## 進階設定
|
||||
|
||||
## 高级设置
|
||||
|
||||
- 优先购买和黑名单都是关键字匹配,例如填 `碳` 会匹配 `碳` 和 `碳素`。
|
||||
- 分隔符的分号既可以使用英文半角 `;` 也可以使用中文全角 `;`。
|
||||
- `信用点低于300时停止购买商品` 即使在低于 300 时也会购买优先购买商品。
|
||||
- 優先購買和黑名單都是關鍵字比對,例如填 `碳` 會比對到 `碳` 和 `碳素`。
|
||||
- 分隔符號的分號既可以使用英文半形 `;` 也可以使用中文全形 `;`。
|
||||
- `信用點數低於 300 時停止購買商品` 即使在信用點數低於 300 時,也會購買優先購買商品。
|
||||
|
||||