diff --git a/.github/workflows/markdown-checker.yml b/.github/workflows/markdown-checker.yml new file mode 100644 index 0000000000..f6ca694979 --- /dev/null +++ b/.github/workflows/markdown-checker.yml @@ -0,0 +1,49 @@ +name: Lint Markdown files + +on: + push: + paths: + - "**/*.md" + - ".github/workflows/lint-markdown.yml" + pull_request: + paths: + - "**/*.md" + - ".github/workflows/lint-markdown.yml" + schedule: + - cron: "44 7 * * 2" + workflow_dispatch: + +jobs: + lint: + name: Lint Markdown + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + with: + show-progress: false + + - name: Lint Markdown + uses: DavidAnson/markdownlint-cli2-action@v16 + with: + config: docs/.markdownlint.yaml + globs: | + README.md + docs/**/*.md + +# check-links: +# name: Check Dead Links +# runs-on: ubuntu-latest +# steps: +# - name: Check out code +# uses: actions/checkout@v4 +# with: +# show-progress: false +# +# - name: Check Dead Link +# uses: umbrelladocs/action-linkspector@v1 +# with: +# # Use github-pr-review when triggered by a pull request; otherwise, use github-check +# reporter: ${{ github.event_name == 'pull_request' && 'github-pr-review' || 'github-check' }} +# filter_mode: nofilter +# fail_on_error: true diff --git a/.github/workflows/website-build-test.yml b/.github/workflows/website-build-test.yml deleted file mode 100644 index 5bfdb3fb5d..0000000000 --- a/.github/workflows/website-build-test.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Build Test for website - -on: - push: - branches-ignore: - - "master" - - "dev" - paths: - - "docs/**" - - "website/**" - pull_request: - branches: - - "dev" - paths: - - "docs/**" - - "website/**" - workflow_dispatch: - -jobs: - build-test: - timeout-minutes: 20 - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v4 - with: - fetch-depth: 1 - show-progress: false - - - name: Setup Node.js environment - uses: actions/setup-node@v4 - with: - node-version: 20 - - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false - - - name: Install dependencies - run: pnpm install - working-directory: "./website" - - - name: Build - run: pnpm run build - working-directory: "./website" - - - name: Upload artifact to GitHub - uses: actions/upload-artifact@v4 - with: - name: dist - path: "./website/dist" diff --git a/.github/workflows/deploy-website.yaml b/.github/workflows/website-workflow.yml similarity index 60% rename from .github/workflows/deploy-website.yaml rename to .github/workflows/website-workflow.yml index e5dc309796..2031dc07da 100644 --- a/.github/workflows/deploy-website.yaml +++ b/.github/workflows/website-workflow.yml @@ -1,10 +1,19 @@ -name: Deploy Website +name: MaaWebsite Workflow on: push: branches: - - master - - dev + - "master" + - "dev" + paths: + - ".github/workflows/website-workflow.yml" + - "docs/**" + - "website/**" + pull_request: + paths: + - ".github/workflows/website-workflow.yml" + - "docs/**" + - "website/**" workflow_dispatch: inputs: deploy-to-prod-env: @@ -14,50 +23,59 @@ on: type: boolean jobs: - deploy: + build: timeout-minutes: 20 runs-on: ubuntu-latest - env: - DO_NOT_TRACK: 1 - steps: - name: Check out code uses: actions/checkout@v4 + with: + show-progress: false + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + run_install: false - name: Setup Node.js environment uses: actions/setup-node@v4 with: node-version: 20 - - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false + cache: pnpm + cache-dependency-path: './website/pnpm-lock.yaml' - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile working-directory: "./website" - name: Build run: pnpm run build working-directory: "./website" + - name: Upload artifact to GitHub + uses: actions/upload-artifact@v4 + with: + name: dist + path: "./website/dist" + + publish: + runs-on: ubuntu-latest + needs: build + if: github.event_name != 'pull_request' + steps: + - name: Download website artifacts + uses: actions/download-artifact@v4 + with: + name: dist + - name: Set deployment environment id: set-deployment-env run: | - if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then - if [[ "${{ github.ref }}" == "refs/heads/master" ]]; then - echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV - else - echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV - fi + if [[ "${{ github.event_name }}" != "workflow_dispatch" && "${{ github.ref }}" == "refs/heads/master" ]] || [[ "${{ github.event.inputs.deploy-to-prod-env }}" == "true" ]]; then + echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV else - if [[ "${{ github.event.inputs.deploy-to-prod-env }}" == "true" ]]; then - echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV - else - echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV - fi + echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV fi - name: Show environment @@ -71,7 +89,7 @@ jobs: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }} repo_token: ${{ secrets.GITHUB_TOKEN }} action: "upload" - app_location: "./website/dist" + app_location: "." api_location: "" skip_app_build: true skip_api_build: true @@ -85,7 +103,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} action: "upload" deployment_environment: dev - app_location: "./website/dist" + app_location: "." api_location: "" skip_app_build: true skip_api_build: true diff --git a/.linkspector.yml b/.linkspector.yml new file mode 100644 index 0000000000..a5d83894bd --- /dev/null +++ b/.linkspector.yml @@ -0,0 +1,5 @@ +dirs: + - . +useGitIgnore: true +ignorePatterns: + - pattern: "^https?://127.0.0.1(:\\d+)?/" diff --git a/README.md b/README.md index 37a6538735..239a850220 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +
LOGO @@ -21,7 +23,9 @@

-[简体中文](https://maa.plus/docs/) | [繁體中文](https://maa.plus/docs/zh-tw/) | [English](https://maa.plus/docs/en-us/) | [日本語](https://maa.plus/docs/ja-jp/) | [한국어](https://maa.plus/docs/ko-kr/) + + +[简体中文](https://maa.plus/docs/zh-cn/) | [繁體中文](https://maa.plus/docs/zh-tw/) | [English](https://maa.plus/docs/en-us/) | [日本語](https://maa.plus/docs/ja-jp/) | [한국어](https://maa.plus/docs/ko-kr/) MAA 的意思是 MAA Assistant Arknights @@ -29,32 +33,52 @@ MAA 的意思是 MAA Assistant Arknights 基于图像识别技术,一键完成全部日常任务! -绝赞更新中 ✿✿ヽ(°▽°)ノ✿
+绝赞更新中 ✿✿ヽ(°▽°)ノ✿ ## 亮点功能 -- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/),[一图流](https://ark.yituliu.cn/); -- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://maa.plus/docs/协议文档/基建排班协议.html); -- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit),[一图流](https://ark.yituliu.cn/survey/maarecruitdata); -- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~; -- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示; -- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings); -- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草; -- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度; -- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/); +- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/),[一图流](https://ark.yituliu.cn/) +- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://maa.plus/docs/zh-cn/protocol/base-scheduling-schema.html) +- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit),[一图流](https://ark.yituliu.cn/survey/maarecruitdata) +- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~ +- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示 +- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings) +- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草 +- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度 +- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/) - 支持 C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 等多种接口,方便集成调用,自定义你的 MAA! -话不多说,看图! + -![zh1](https://user-images.githubusercontent.com/9762652/259595058-1529207a-ef3d-4eca-a016-4759eb534c6e.png) -![zh2](https://user-images.githubusercontent.com/9762652/259594965-882b61e6-bf31-40c1-8c03-3f51f82a0d42.png) -![zh3](https://user-images.githubusercontent.com/9762652/259594874-07abdd9f-33f0-4446-8da3-799849bf7328.png) -![zh4](https://user-images.githubusercontent.com/9762652/259594649-c08b6558-7d17-45a8-9ba0-3ebc9a6f5589.png) +
话不多说,看图! + + + + zh1 + + + + zh2 + + + + zh3 + + + + zh4 + + +
+ + ## 下载地址 +前往[官网](https://maa.plus)自动匹配镜像源并下载稳定版,或: + - [稳定版/公测版](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) - [内测版](https://github.com/MaaAssistantArknights/MaaRelease/releases) @@ -62,28 +86,28 @@ MAA 的意思是 MAA Assistant Arknights ### 基本说明 -请参阅 [新手上路](https://maa.plus/docs/用户手册/新手上路.html) 与 [详细介绍](https://maa.plus/docs/用户手册/详细介绍.html)。 +请参阅 [新手上路](https://maa.plus/docs/zh-cn/manual/newbie.html) 与 [功能介绍](https://maa.plus/docs/zh-cn/manual/introduction/)。 ### 常见问题 - 软件一打开就闪退; -- 连接错误、不知道 adb 路径怎么填写; +- 连接错误、不知道 ADB 路径怎么填写; - 连接成功了,但没反应; - 如何连接自定义端口; - 下载速度慢,且镜像站无法打开网页; - 下载到一半提示“登陆”/“鉴权”; - 连接正常,任务开始了,但是没反应。 -请参阅 [常见问题](https://maa.plus/docs/用户手册/常见问题.html) +请参阅 [常见问题](https://maa.plus/docs/zh-cn/manual/faq.html) ### 外服支持 目前国际服(美服)、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足,很多功能并没有进行全面的测试,所以请自行体验。 若您遇到了 Bug,或对某个功能有强需求,欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA!请参阅 [外服适配教程](#外服适配) -### CLI支持 +### CLI 支持 -MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/用户手册/CLI使用指南/cli-intro.html) +MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/zh-cn/manual/cli/intro.html) ## 加入我们 @@ -91,7 +115,7 @@ MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows, **目前项目组非常缺前端大佬,若您有相关经验,欢迎加入我们!** -- 全新框架:[MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework) +- 全新框架:[MaaFramework](https://github.com/MaaXYZ/MaaFramework) - 全新 GUI:[MaaX](https://github.com/MaaAssistantArknights/MaaX) - [作业站](https://prts.plus) 前端:[maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend) - [作业站](https://prts.plus) 后端:[MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter) @@ -106,50 +130,43 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体) [![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/) -### Windows +### 参与开发 -1. 下载预构建的第三方库 +#### Windows - ```cmd - python maadeps-download.py - ``` +请参阅 [开始开发](https://maa.plus/docs/zh-cn/develop/development.html)。 -2. 使用 Visual Studio 2022 打开 `MAA.sln`,右键 `MaaWpfGui`,设为启动项目 -3. VS 上方配置选择 `RelWithDebInfo` `x64` (如果编译 Release 包 或 ARM 平台,请忽略这步) -4. 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了) -5. (可选)若准备提交 PR,建议启用 [clang-format 支持](https://maa.plus/docs/开发文档/开始开发.html#在-visual-studio-中启用-clang-format) +#### Linux | macOS -### Linux | macOS +请参阅 [Linux 编译教程](https://maa.plus/docs/zh-cn/develop/linux-tutorial.html)。 -请参阅 [Linux 编译教程](https://maa.plus/docs/开发文档/Linux编译教程.html) - -### API +#### API - [C 接口](include/AsstCaller.h):[集成示例](src/Cpp/main.cpp) - [Python 接口](src/Python/asst/asst.py):[集成示例](src/Python/sample.py) -- [Golang 接口](src/Golang/):[集成示例](src/Golang/maa/maa.go) -- [Dart 接口](src/Dart/) +- [Golang 接口](src/Golang):[集成示例](src/Golang/maa/maa.go) +- [Dart 接口](src/Dart) - [Java 接口](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java):[集成示例](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) - [Java HTTP 接口](src/Java/Readme.md) -- [Rust 接口](src/Rust/src/maa_sys/):[HTTP 接口](src/Rust) -- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader) -- [Woolang 接口](src/Woolang/maa.wo):[集成示例](src/Woolang/main.wo) -- [集成文档](https://maa.plus/docs/协议文档/集成文档.html) -- [回调消息协议](https://maa.plus/docs/协议文档/回调消息协议.html) -- [任务流程协议](https://maa.plus/docs/协议文档/任务流程协议.html) -- [自动抄作业协议](https://maa.plus/docs/协议文档/战斗流程协议.html) +- [Rust 接口](src/Rust/src/maa_sys):[HTTP 接口](src/Rust) +- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader) +- [Woolang 接口](src/Woolang/maa.wo):[集成示例](src/Woolang/demo.wo) +- [集成文档](https://maa.plus/docs/zh-cn/protocol/integration.html) +- [回调消息协议](https://maa.plus/docs/zh-cn/protocol/callback-schema.html) +- [任务流程协议](https://maa.plus/docs/zh-cn/protocol/task-schema.html) +- [自动抄作业协议](https://maa.plus/docs/zh-cn/protocol/copilot-schema.html) -### 外服适配 +#### 外服适配 -请参阅 [外服适配教程](https://maa.plus/docs/开发文档/外服适配教程.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。 +请参阅 [外服适配教程](https://maa.plus/docs/zh-cn/develop/overseas-client-adaptation.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。 -### 想参与开发,但不太会用 GitHub? +#### 想参与开发,但不太会用 GitHub? -[GitHub Pull Request 流程简述](https://maa.plus/docs/开发文档/开始开发.html#github-pull-request-流程简述) +[GitHub Pull Request 流程简述](https://maa.plus/docs/zh-cn/develop/development.html#github-pull-request-流程简述) -### Issue bot +#### Issue bot -请参阅 [Issue bot 使用方法](https://maa.plus/docs/开发文档/IssueBot使用方法.html) +请参阅 [Issue Bot 使用方法](https://maa.plus/docs/zh-cn/develop/issue-bot-usage.html) ## 致谢 @@ -162,17 +179,17 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体) - 机器学习加速器:[onnxruntime](https://github.com/microsoft/onnxruntime) - ~~关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer)~~ - 地图格子识别:[Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos) -- C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) +- C++ JSON 库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) -- ~~C++ base64编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ +- ~~C++ base64 编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ 解压压缩库:[zlib](https://github.com/madler/zlib) -- C++ Gzip封装:[gzip-hpp](https://github.com/mapbox/gzip-hpp) -- 安卓触控事件器:[minitouch](https://github.com/openstf/minitouch) +- C++ Gzip 封装:[gzip-hpp](https://github.com/mapbox/gzip-hpp) +- 安卓触控事件器:[Minitouch](https://github.com/DeviceFarmer/minitouch) - 安卓触控事件器:[MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) -- WPF MVVM框架:[Stylet](https://github.com/canton7/Stylet) -- WPF控件库:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) +- WPF MVVM 框架:[Stylet](https://github.com/canton7/Stylet) +- WPF 控件库:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) - C# 日志:[Serilog](https://github.com/serilog/serilog) -- C# JSON库:[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime) +- C# JSON 库:[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime) - ~~下载器:[aria2](https://github.com/aria2/aria2)~~ ### 数据源 diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts new file mode 100644 index 0000000000..de02ecd4a9 --- /dev/null +++ b/docs/.vuepress/client.ts @@ -0,0 +1,8 @@ +import { defineClientConfig } from "vuepress/client"; +import ImageGrid from "../components/ImageGrid.vue"; + +export default defineClientConfig({ + enhance: ({ app }) => { + app.component("ImageGrid", ImageGrid); + }, +}); diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts index 98f8097909..bf83ae5865 100644 --- a/docs/.vuepress/config.ts +++ b/docs/.vuepress/config.ts @@ -11,25 +11,25 @@ export default defineUserConfig({ port: 3001, locales: { - "/": { + "/zh-cn/": { lang: "zh-CN", - description: "开发者文档", + description: "文档", }, "/zh-tw/": { lang: "zh-TW", - description: "開發者文件", + description: "文件", }, "/en-us/": { lang: "en-US", - title: "Documents", + description: "Documentation", }, "/ja-jp/": { lang: "ja-JP", - description: "ドキュメント", + description: "ドキュメンテーション", }, "/ko-kr/": { lang: "ko-KR", - description: "문서", + description: "선적 서류 비치", }, }, diff --git a/docs/.vuepress/navbar/en-us.ts b/docs/.vuepress/navbar/en-us.ts index 58beb8021b..7f437481ff 100644 --- a/docs/.vuepress/navbar/en-us.ts +++ b/docs/.vuepress/navbar/en-us.ts @@ -9,17 +9,17 @@ export const enusNavbar = navbar([ { text: "User Manual", icon: "mdi:user", - link: "/en-us/1.1-USER_MANUAL", + link: "/en-us/manual/", }, { text: "Development Docs", icon: "ph:code-bold", - link: "/en-us/2.1-LINUX_TUTORIAL", + link: "/en-us/develop/", }, { text: "Protocol Docs", icon: "basil:document-solid", - link: "/en-us/3.1-INTEGRATION", + link: "/en-us/protocol/", }, { text: "MAA Website", diff --git a/docs/.vuepress/navbar/ja-jp.ts b/docs/.vuepress/navbar/ja-jp.ts index 37c6a87333..0463291b81 100644 --- a/docs/.vuepress/navbar/ja-jp.ts +++ b/docs/.vuepress/navbar/ja-jp.ts @@ -9,17 +9,17 @@ export const jajpNavbar = navbar([ { text: "使用説明", icon: "mdi:user", - link: "/ja-jp/使用説明", + link: "/ja-jp/manual/", }, { text: "開発関連", icon: "ph:code-bold", - link: "/ja-jp/開発関連", + link: "/ja-jp/develop/", }, { text: "プロトコルドキュメント", icon: "basil:document-solid", - link: "/ja-jp/プロトコルドキュメント", + link: "/ja-jp/protocol/", }, { text: "MAA 公式サイト", diff --git a/docs/.vuepress/navbar/ko-kr.ts b/docs/.vuepress/navbar/ko-kr.ts index 84b57325a7..ee78730d20 100644 --- a/docs/.vuepress/navbar/ko-kr.ts +++ b/docs/.vuepress/navbar/ko-kr.ts @@ -9,17 +9,17 @@ export const kokrNavbar = navbar([ { text: "사용자 설명서", icon: "mdi:user", - link: "/ko-kr/사용자설명서", + link: "/ko-kr/manual/", }, { text: "개발 문서", icon: "ph:code-bold", - link: "/ko-kr/개발문서", + link: "/ko-kr/develop/", }, { text: "프로토콜 문서", icon: "basil:document-solid", - link: "/ko-kr/스키마", + link: "/ko-kr/protocol/", }, { text: "MAA 공식 홈페이지", diff --git a/docs/.vuepress/navbar/zh-cn.ts b/docs/.vuepress/navbar/zh-cn.ts index 62cf61e3cf..b0d35613e7 100644 --- a/docs/.vuepress/navbar/zh-cn.ts +++ b/docs/.vuepress/navbar/zh-cn.ts @@ -4,22 +4,22 @@ export const zhcnNavbar = navbar([ { text: "主页", icon: "ic:round-home", - link: "/", + link: "/zh-cn/", }, { text: "用户手册", icon: "mdi:user", - link: "/用户手册", + link: "/zh-cn/manual/", }, { text: "开发文档", icon: "ph:code-bold", - link: "/开发文档", + link: "/zh-cn/develop/", }, { text: "协议文档", icon: "basil:document-solid", - link: "/协议文档", + link: "/zh-cn/protocol/", }, { text: "MAA 官网", diff --git a/docs/.vuepress/navbar/zh-tw.ts b/docs/.vuepress/navbar/zh-tw.ts index f5266f5f71..10599eb84e 100644 --- a/docs/.vuepress/navbar/zh-tw.ts +++ b/docs/.vuepress/navbar/zh-tw.ts @@ -9,17 +9,17 @@ export const zhtwNavbar = navbar([ { text: "用戶說明書", icon: "mdi:user", - link: "/zh-tw/1.1-詳細介紹", + link: "/zh-tw/manual/", }, { text: "開發文件", icon: "ph:code-bold", - link: "/zh-tw/2.1-Linux編譯教學", + link: "/zh-tw/develop/", }, { text: "協議文件", icon: "basil:document-solid", - link: "/zh-tw/3.1-集成文件", + link: "/zh-tw/protocol/", }, { text: "MAA 官網", diff --git a/docs/.vuepress/plugins/search.ts b/docs/.vuepress/plugins/search.ts index fcf619903f..242fdc4b48 100644 --- a/docs/.vuepress/plugins/search.ts +++ b/docs/.vuepress/plugins/search.ts @@ -41,43 +41,6 @@ export default { } } }, - '/zh-tw/': { - placeholder: '搜尋', - translations: { - button: { - buttonText: '搜尋', - }, - modal: { - searchBox: { - resetButtonTitle: '清除查詢條件', - cancelButtonText: '取消', - }, - startScreen: { - recentSearchesTitle: '搜尋歷史', - noRecentSearchesText: '沒有搜尋歷史', - saveRecentSearchButtonTitle: '保存至搜尋歷史', - removeRecentSearchButtonTitle: '從搜尋歷史中移除', - favoriteSearchesTitle: '收藏', - removeFavoriteSearchButtonTitle: '從收藏中移除', - }, - errorScreen: { - titleText: '無法獲取結果', - helpText: '你可能需要檢查你的網路連接', - }, - footer: { - selectText: '選擇', - navigateText: '切換', - closeText: '關閉', - searchByText: '搜尋提供者', - }, - noResultsScreen: { - noResultsText: '無法找到相關結果', - suggestedQueryText: '你可以嘗試查詢', - reportMissingResultsText: '你認為該查詢應該有結果?', - reportMissingResultsLinkText: '點擊反饋', - }, - } - } }, '/en-us/': { placeholder: 'Search', @@ -117,8 +80,4 @@ export default { } } }, - '/ja-jp/': { - placeholder: '検索する', - } - } } diff --git a/docs/.vuepress/public/image/en-us/readme/1-light.png b/docs/.vuepress/public/image/en-us/readme/1-light.png new file mode 100644 index 0000000000..602cb4d8df Binary files /dev/null and b/docs/.vuepress/public/image/en-us/readme/1-light.png differ diff --git a/docs/.vuepress/public/image/en-us/readme/2-light.png b/docs/.vuepress/public/image/en-us/readme/2-light.png new file mode 100644 index 0000000000..f3674926f7 Binary files /dev/null and b/docs/.vuepress/public/image/en-us/readme/2-light.png differ diff --git a/docs/.vuepress/public/image/ja-jp/readme/1-light.png b/docs/.vuepress/public/image/ja-jp/readme/1-light.png new file mode 100644 index 0000000000..13e29ec5e1 Binary files /dev/null and b/docs/.vuepress/public/image/ja-jp/readme/1-light.png differ diff --git a/docs/.vuepress/public/image/ja-jp/readme/2-light.png b/docs/.vuepress/public/image/ja-jp/readme/2-light.png new file mode 100644 index 0000000000..2e577776f6 Binary files /dev/null and b/docs/.vuepress/public/image/ja-jp/readme/2-light.png differ diff --git a/docs/.vuepress/public/image/ko-kr/readme/1-light.png b/docs/.vuepress/public/image/ko-kr/readme/1-light.png new file mode 100644 index 0000000000..0c04202f05 Binary files /dev/null and b/docs/.vuepress/public/image/ko-kr/readme/1-light.png differ diff --git a/docs/.vuepress/public/image/ko-kr/readme/2-light.png b/docs/.vuepress/public/image/ko-kr/readme/2-light.png new file mode 100644 index 0000000000..f8a6e20a36 Binary files /dev/null and b/docs/.vuepress/public/image/ko-kr/readme/2-light.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/1-dark.png b/docs/.vuepress/public/image/zh-cn/readme/1-dark.png new file mode 100644 index 0000000000..4edbbb00e3 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/1-dark.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/1-light.png b/docs/.vuepress/public/image/zh-cn/readme/1-light.png new file mode 100644 index 0000000000..475f02a85d Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/1-light.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/2-dark.png b/docs/.vuepress/public/image/zh-cn/readme/2-dark.png new file mode 100644 index 0000000000..0c210addf5 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/2-dark.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/2-light.png b/docs/.vuepress/public/image/zh-cn/readme/2-light.png new file mode 100644 index 0000000000..bc3b3bd1f7 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/2-light.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/3-dark.png b/docs/.vuepress/public/image/zh-cn/readme/3-dark.png new file mode 100644 index 0000000000..c1485b8852 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/3-dark.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/3-light.png b/docs/.vuepress/public/image/zh-cn/readme/3-light.png new file mode 100644 index 0000000000..fbcff1da67 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/3-light.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/4-dark.png b/docs/.vuepress/public/image/zh-cn/readme/4-dark.png new file mode 100644 index 0000000000..852eab930f Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/4-dark.png differ diff --git a/docs/.vuepress/public/image/zh-cn/readme/4-light.png b/docs/.vuepress/public/image/zh-cn/readme/4-light.png new file mode 100644 index 0000000000..2de54d5e68 Binary files /dev/null and b/docs/.vuepress/public/image/zh-cn/readme/4-light.png differ diff --git a/docs/.vuepress/public/image/zh-tw/readme/TODO b/docs/.vuepress/public/image/zh-tw/readme/TODO new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/.vuepress/sidebar/en-us.ts b/docs/.vuepress/sidebar/en-us.ts index 6c0f1f063a..03a317dc0d 100644 --- a/docs/.vuepress/sidebar/en-us.ts +++ b/docs/.vuepress/sidebar/en-us.ts @@ -10,127 +10,23 @@ export const enusSidebar = sidebar({ { text: "User Manual", icon: "mdi:user", + prefix: "manual/", collapsible: true, - children: [ - { - text: "Beginner's guide", - icon: "ri:guide-fill", - link: "/en-us/1.0-BEGINNER'S_GUIDE", - }, - { - text: "Introduction", - icon: "mdi:information-outline", - link: "/en-us/1.1-USER_MANUAL", - }, - { - text: "FAQs", - icon: "ph:question-fill", - link: "/en-us/1.2-FAQ", - }, - { - text: "Emulator Supports", - icon: "mingcute:laptop-fill", - collapsible: true, - children: [ - { - text: "Windows", - icon: "ri:windows-fill", - link: "/en-us/1.3-EMULATOR_SUPPORTS", - }, - { - text: "Mac", - icon: "basil:apple-solid", - link: "/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC", - }, - { - text: "Linux", - icon: "teenyicons:linux-alt-solid", - link: "/en-us/1.5-EMULATOR_SUPPORTS_FOR_LINUX", - }, - ], - }, - { - text: "User Manual For CLI", - icon: "material-symbols:terminal", - prefix: "user_manual_for_cli/", - collapsible: true, - children: "structure", - } - ], + children: "structure", }, { text: "Development Docs", icon: "ph:code-bold", + prefix: "develop/", collapsible: true, - children: [ - { - text: "Linux Compilation Tutorial", - icon: "teenyicons:linux-alt-solid", - link: "/en-us/2.1-LINUX_TUTORIAL", - }, - { - text: "Development", - icon: "iconoir:developer", - link: "/en-us/2.2-DEVELOPMENT", - }, - { - text: "IssueBot Usage", - icon: "bxs:bot", - link: "/en-us/2.3-ISSUE_BOT_USAGE", - }, - { - text: "Web PR Tutorial", - icon: "mingcute:git-pull-request-fill", - link: "/en-us/2.4-PURE_WEB_PR_TUTORIAL", - }, - { - text: "Overseas Clients Adaptation", - icon: "ri:earth-fill", - link: "/en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION", - }, - ], + children: "structure", }, { text: "Protocol Docs", icon: "basil:document-solid", + prefix: "protocol/", collapsible: true, - children: [ - { - text: "Integration", - icon: "bxs:book", - link: "/en-us/3.1-INTEGRATION", - }, - { - text: "Callback Schema", - icon: "material-symbols:u-turn-left", - link: "/en-us/3.2-CALLBACK_SCHEMA", - }, - { - text: "Copilot Schema", - icon: "ph:sword-bold", - link: "/en-us/3.3-COPILOT_SCHEMA", - }, - { - text: "Task Schema", - icon: "material-symbols:task", - link: "/en-us/3.4-TASK_SCHEMA", - }, - { - text: "Integrated Strategy Schema", - icon: "ri:game-fill", - link: "/en-us/3.5-INTEGRATED_STRATEGY_SCHEMA", - }, - { - text: "Infrastructure Scheduling Schema", - icon: "material-symbols:view-quilt-rounded", - link: "/en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA", - }, - { - text: "Security Presence Schema", - icon: "game-icons:prisoner", - link: "/en-us/3.7-SECURITY_PRESENCE_SCHEMA", - }, - ], + children: "structure", }, ], }); diff --git a/docs/.vuepress/sidebar/ja-jp.ts b/docs/.vuepress/sidebar/ja-jp.ts index c5755f7639..8837a06428 100644 --- a/docs/.vuepress/sidebar/ja-jp.ts +++ b/docs/.vuepress/sidebar/ja-jp.ts @@ -10,44 +10,21 @@ export const jajpSidebar = sidebar({ { text: "使用説明", icon: "mdi:user", - prefix: "使用説明/", + prefix: "manual/", collapsible: true, - children: [ - { - text: "詳細説明", - icon: "mdi:information-outline", - link: "詳細説明", - }, - { - text: "よくある質問", - icon: "ph:question-fill", - link: "よくある質問", - }, - { - text: "エミュレータのサポート", - icon: "mingcute:laptop-fill", - prefix: "エミュレータのサポート/", - collapsible: true, - children: "structure", - }, - { - text: "CLIユーザーガイド", - icon: "material-symbols:terminal", - link: "CLIユーザーガイド", - }, - ], + children: "structure", }, { text: "開発関連", icon: "ph:code-bold", - prefix: "開発関連/", + prefix: "develop/", collapsible: true, children: "structure", }, { text: "プロトコルドキュメント", icon: "basil:document-solid", - prefix: "プロトコルドキュメント/", + prefix: "protocol/", collapsible: true, children: "structure", }, diff --git a/docs/.vuepress/sidebar/ko-kr.ts b/docs/.vuepress/sidebar/ko-kr.ts index 3182640eef..22ac3ee58e 100644 --- a/docs/.vuepress/sidebar/ko-kr.ts +++ b/docs/.vuepress/sidebar/ko-kr.ts @@ -10,139 +10,23 @@ export const kokrSidebar = sidebar({ { text: "사용자 설명서", icon: "mdi:user", - prefix: "사용자설명서/", + prefix: "manual/", collapsible: true, - children: [ - { - text: "기능", - icon: "mdi:information-outline", - link: "사용자설명서", - }, - { - text: "자주 묻는 질문", - icon: "ph:question-fill", - link: "FAQ", - }, - { - text: "플랫폼 별 지원", - icon: "mingcute:laptop-fill", - prefix: "플랫폼/", - collapsible: true, - children: [ - { - text: "Windows 지원", - icon: "ri:windows-fill", - link: "1.Windows", - }, - { - text: "Mac 지원", - icon: "basil:apple-solid", - link: "2.Mac", - }, - { - text: "Linux 지원", - icon: "teenyicons:linux-alt-solid", - link: "3.Linux", - }, - { - text: "Android 지원", - icon: "mingcute:android-fill", - link: "4.Android", - }, - ], - }, - { - text: "CLI 가이드", - icon: "material-symbols:terminal", - link: "CLI", - }, - ], + children: "structure", }, { text: "개발 관련", icon: "ph:code-bold", - prefix: "개발문서/", + prefix: "develop/", collapsible: true, - children: [ - { - text: "개발 환경 구축", - icon: "iconoir:developer", - link: "1.개발시작", - }, - { - text: "Linux 튜토리얼", - icon: "teenyicons:linux-alt-solid", - link: "2.Linux가이드", - }, - { - text: "웹 기반 PR 가이드", - icon: "mingcute:git-pull-request-fill", - link: "3.웹기반PR", - }, - { - text: "IssueBot 사용방법", - icon: "bxs:bot", - link: "4.IssueBot", - }, - { - text: "해외 클라이언트 현지화", - icon: "ri:earth-fill", - link: "5.해외클라이언트현지화", - }, - { - text: "문서 작성 가이드", - icon: "jam:write-f", - link: "6.문서가이드", - }, - ], + children: "structure", }, { text: "프로토콜 문서", icon: "basil:document-solid", - prefix: "스키마/", + prefix: "protocol/", collapsible: true, - children: [ - { - text: "통합문서", - icon: "bxs:book", - link: "1.통합문서", - }, - { - text: "콜백 스키마", - icon: "material-symbols:u-turn-left", - link: "2.콜백", - }, - { - text: "전투 스키마", - icon: "ph:sword-bold", - link: "3.전투", - }, - { - text: "작업 스키마", - icon: "material-symbols:task", - link: "4.작업", - }, - { - text: "통합전략 스키마", - icon: "ri:game-fill", - link: "5.통합전략", - }, - { - text: "기반시설 스키마", - icon: "material-symbols:view-quilt-rounded", - link: "6.기반시설", - }, - { - text: "보안파견 스키마", - icon: "game-icons:prisoner", - link: "7.보안파견", - }, - { - text: "원격제어 스키마", - icon: "mdi:remote-desktop", - link: "8.원격제어", - }, - ], + children: "structure", }, ], }); diff --git a/docs/.vuepress/sidebar/zh-cn.ts b/docs/.vuepress/sidebar/zh-cn.ts index ef4ea3aec8..a10f1a61cf 100644 --- a/docs/.vuepress/sidebar/zh-cn.ts +++ b/docs/.vuepress/sidebar/zh-cn.ts @@ -1,60 +1,30 @@ import { sidebar } from "vuepress-theme-hope"; export const zhcnSidebar = sidebar({ - "/": [ + "/zh-cn/": [ { text: "MAA", icon: "ic:round-home", - link: "/", + link: "/zh-cn/", }, { text: "用户手册", icon: "mdi:user", - prefix: "用户手册/", + prefix: "manual/", collapsible: true, - children: [ - { - text: "新手上路", - icon: "ri:guide-fill", - link: "新手上路", - }, - { - text: "功能介绍", - icon: "mdi:information-outline", - link: "详细介绍", - }, - { - text: "常见问题", - icon: "ph:question-fill", - link: "常见问题", - }, - { - text: "模拟器和设备支持", - icon: "mingcute:laptop-fill", - prefix: "模拟器和设备支持/", - collapsible: true, - children: "structure", - }, - { - text: "CLI使用指南", - icon: "material-symbols:terminal", - prefix: "user_manual_for_cli/", - collapsible: true, - children: "structure", - }, - ], + children: "structure", }, { text: "开发文档", icon: "ph:code-bold", - prefix: "开发文档/", + prefix: "develop/", collapsible: true, children: "structure", }, { text: "协议文档", icon: "basil:document-solid", - prefix: "协议文档/", + prefix: "protocol/", collapsible: true, children: "structure", }, diff --git a/docs/.vuepress/sidebar/zh-tw.ts b/docs/.vuepress/sidebar/zh-tw.ts index bf45b07ef4..c2c4fe5c4b 100644 --- a/docs/.vuepress/sidebar/zh-tw.ts +++ b/docs/.vuepress/sidebar/zh-tw.ts @@ -10,120 +10,23 @@ export const zhtwSidebar = sidebar({ { text: "用戶說明書", icon: "mdi:user", + prefix: "manual/", collapsible: true, - children: [ - { - text: "功能介绍", - icon: "mdi:information-outline", - link: "/zh-tw/1.1-詳細介紹", - }, - { - text: "常見問題", - icon: "ph:question-fill", - link: "/zh-tw/1.2-常見問題", - }, - { - text: "模擬器支援", - icon: "mingcute:laptop-fill", - collapsible: true, - children: [ - { - text: "Windows", - icon: "ri:windows-fill", - link: "/zh-tw/1.3-模擬器支援", - }, - { - text: "Mac", - icon: "basil:apple-solid", - link: "/zh-tw/1.4-Mac模擬器支援", - }, - { - text: "Linux", - icon: "teenyicons:linux-alt-solid", - link: "/zh-tw/1.5-Linux模擬器支援", - }, - ], - }, - { - text: "CLI使用說明", - icon: "material-symbols:terminal", - link: "/zh-tw/1.6-CLI使用說明", - }, - ], + children: "structure", }, { text: "開發文件", icon: "ph:code-bold", + prefix: "develop/", collapsible: true, - children: [ - { - text: "Linux編譯教學", - icon: "teenyicons:linux-alt-solid", - link: "/zh-tw/2.1-Linux編譯教學", - }, - { - text: "開發相關", - icon: "iconoir:developer", - link: "/zh-tw/2.2-開發相關", - }, - { - text: "IssueBot使用方法", - icon: "bxs:bot", - link: "/zh-tw/2.3-IssueBot使用方法", - }, - { - text: "純網頁端PR教學", - icon: "mingcute:git-pull-request-fill", - link: "/zh-tw/2.4-純網頁端PR教學", - }, - { - text: "外服適配教學", - icon: "ri:earth-fill", - link: "/zh-tw/2.5-外服適配教學", - }, - ], + children: "structure", }, { text: "協議文件", icon: "basil:document-solid", + prefix: "protocol/", collapsible: true, - children: [ - { - text: "集成文件", - icon: "bxs:book", - link: "/zh-tw/3.1-集成文件", - }, - { - text: "回呼訊息協議", - icon: "material-symbols:u-turn-left", - link: "/zh-tw/3.2-回呼訊息協議", - }, - { - text: "戰鬥流程協議", - icon: "ph:sword-bold", - link: "/zh-tw/3.3-戰鬥流程協議", - }, - { - text: "任務流程協議", - icon: "material-symbols:task", - link: "/zh-tw/3.4-任務流程協議", - }, - { - text: "肉鴿輔助協議", - icon: "ri:game-fill", - link: "/zh-tw/3.5-肉鴿輔助協議", - }, - { - text: "基建排班協議", - icon: "material-symbols:view-quilt-rounded", - link: "/zh-tw/3.6-基建排班協議", - }, - { - text: "保全派駐協議", - icon: "game-icons:prisoner", - link: "/zh-tw/3.7-保全派駐協議", - }, - ], + children: "structure", }, ], }); diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss deleted file mode 100644 index d95d77274f..0000000000 --- a/docs/.vuepress/styles/index.scss +++ /dev/null @@ -1,16 +0,0 @@ -.home { - .vp-hero-info-wrapper { - min-height: 600px; - } -} - -.catalog-display-container { - overflow-x: visible; - overflow-y: auto; - - max-height: 75vh; - margin: 0.5rem; - border-radius: 0.5rem; - - overflow-wrap: break-word; -} diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts index 50799fff05..7e496aa599 100644 --- a/docs/.vuepress/theme.ts +++ b/docs/.vuepress/theme.ts @@ -11,12 +11,12 @@ export default hopeTheme({ docsDir: "/docs", locales: { - "/": { + "/zh-cn/": { navbar: zhcnNavbar, sidebar: zhcnSidebar, displayFooter: false, metaLocales: { - editLink: "在Github上编辑此页面", + editLink: "在 Github 上编辑此页面", }, }, "/zh-tw/": { @@ -24,7 +24,7 @@ export default hopeTheme({ sidebar: zhtwSidebar, displayFooter: false, metaLocales: { - editLink: "在Github上編輯此頁面", + editLink: "在 Github 上編輯此頁面", }, }, "/en-us/": { @@ -40,7 +40,7 @@ export default hopeTheme({ sidebar: jajpSidebar, displayFooter: false, metaLocales: { - editLink: "このページをGithubで編集する", + editLink: "このページを Github で編集する", }, }, "/ko-kr/": { @@ -48,13 +48,11 @@ export default hopeTheme({ sidebar: kokrSidebar, displayFooter: false, metaLocales: { - editLink: "Github에서 이 페이지를 편집", + editLink: "Github 에서 이 페이지를 편집", }, }, }, - sidebarIcon: true, - plugins: { activeHeaderLinks: false, @@ -62,10 +60,10 @@ export default hopeTheme({ provider: "Giscus", repo: "MaaAssistantArknights/maa-website", repoId: "R_kgDOHY7Gyg", - category: "General", - categoryId: "DIC_kwDOHY7Gys4CYefe", - mapping: "title", - strict: false, + category: "Comments", + categoryId: "DIC_kwDOHY7Gys4CYefd", + mapping: "pathname", + strict: true, }, copyright: { @@ -90,15 +88,89 @@ export default hopeTheme({ tabs: true, tasklist: true, vPre: true, + component: true, }, - prismjs: { - light: "one-dark", - dark: "nord", + shiki: { + themes: { + light: "light-plus", + dark: "nord", + } }, sitemap: true, + notice: [ + { + path: "/zh-tw/", + title: "翻译警告", + content: "MAA 的文檔以簡體中文為主,其他語言的文檔可能品質低或尚未翻譯,請諒解。", + fullscreen: true, + confirm: true, + showOnce: false, + actions: [ + { + text: "我知道了", + type: "primary", + }, + { text: "前往簡體中文", + link: "/zh-cn/", + }, + ], + }, + { + path: "/en-us/", + title: "Translation Warning", + content: "MAA's documents are mainly in Simplified Chinese. Documents in other languages may be of low quality or not yet translated. Please understand.", + fullscreen: true, + confirm: true, + showOnce: false, + actions: [ + { + text: "Okay", + type: "primary", + }, + { text: "Take me to zh-CN", + link: "/zh-cn/", + }, + ], + }, + { + path: "/ja-jp/", + title: "翻訳に関する警告", + content: "MAA のドキュメントは主に簡体字中国語で書かれており、他の言語のドキュメントは低品質であるか、翻訳されていない可能性がありますので、ご了承ください。", + fullscreen: true, + confirm: true, + showOnce: false, + actions: [ + { + text: "OK", + type: "primary", + }, + { text: "中国語サイトへ行く", + link: "/zh-cn/", + }, + ], + }, + { + path: "/ko-kr/", + title: "번역 경고", + content: "MAA의 문서는 주로 중국어 간체로 되어 있습니다. 다른 언어로 된 문서는 번역이 이상하거나, 번역이 되어있지 않을 수 있습니다.", + fullscreen: true, + confirm: true, + showOnce: false, + actions: [ + { + text: "OK", + type: "primary", + }, + { text: "중국어 간체로 이동", + link: "/zh-cn/", + }, + ], + }, + ], + }, }); diff --git a/docs/KeepDrinking.md b/docs/KeepDrinking.md index 1540fd32be..3ccd60f343 100644 --- a/docs/KeepDrinking.md +++ b/docs/KeepDrinking.md @@ -58,3 +58,5 @@ + + diff --git a/docs/components/ImageGrid.vue b/docs/components/ImageGrid.vue new file mode 100644 index 0000000000..3d5c5c981b --- /dev/null +++ b/docs/components/ImageGrid.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/docs/en-us/1.1-USER_MANUAL.md b/docs/en-us/1.1-USER_MANUAL.md deleted file mode 100644 index 82400d503a..0000000000 --- a/docs/en-us/1.1-USER_MANUAL.md +++ /dev/null @@ -1,257 +0,0 @@ -# MAA User Manual - -## Features - -### Operations - -- If the stage you need is not available in the selection, please choose "Current/Previous" in MAA and manually locate the stage in the game, making sure the screen stays on the stage detail page with the **Start** and **Delegate** buttons available. - - If you are not on this page, `Current/Previous` will automatically navigate to the last stage played according to the record in the lower right corner of the terminal homepage. - - You can also enable `Manually input stage name` in `Task Settings` - `Combat` - `Advanced` and enter the stage number manually. Currently supported stages include: - - All main theme stages, where `-NORMAL` or `-HARD` can be added at the end to switch between standard and challenge modes. - - LMD stages and Battle Record stages 5/6. The input should be `CE-6` or `LS-6` even if you have not unlocked it yet. In that case, the program will automatically switch to corresponding stage 5. - - Skill Summary, Shop Voucher, and Carbon Stages 5. The input also should be `CA-5`, `AP-5`, and `SK-5` respectively. - - Chip stages. The input should be complete with stage number, such as `PR-A-1`. - - Annihilation. The input should be `Annihilation`. - - Certain side story stages. This includes `OF-1`, `OF-F3` and `GT-5`. - - The last three stages of the current SS event. This is available after downloading updates automatically from the [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) when the event is on. Prompt will be shown in the main page when this is available. - - For the SS event rerun, you can enter `SSReopen-XX` to clear XX-1 ~ XX-9 levels once. Example `SSReopen-IC`. - -::: details Example -![Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/56174894/e94a0842-a42f-449d-9f2e-f2339175cbdd) -::: - -- Fight options include `Use Sanity Potion + Use Originium`, `Perform Battles` and `Material`, you can specific any of them. The fight tasks stops once one of the specifications is met. - - `Use Sanity Potion` specifies the number of sanity potions to use at most. Multiple medicines may be used at a time. - - `Use Originium` specifies the number of Originium to use at most. It is used one at a time. When using the Origin Stone to restore sanity, if you still have the Sanity Potion, the stone will not be used. - - `Perform Battles` specifies the number of battles to perform at most. - - `Material` specifies the number of materials to collect. - -| Example | Use Sanity Potion | Use Originium | Perform Battles | Material | Result | -|:-------:|:-----------------:|:-------------:|:---------------:|:--------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| A | 999 | 10 | 1 | x | The AI will attempt to use sanity potions and/or originium until **one** full run is completed, satisfying the condition `Perform Battles: 1`. If there are not enough sanity potions, originium, or initial sanity to start, the AI will stop without starting the run. | -| B | x | x | 100 | x | The AI will attempt to complete 100 runs, but if all available sanity is used up (which may be less than 100 runs), and the conditions `Use Sanity Potion: No` and `Use Originium: No` are met, the AI will stop without completing the full 100 runs. | -| C | 1 | x | 100 | x | The AI will attempt to complete 100 runs, using at most one sanity potion. If the AI uses a sanity potion and runs out of sanity during the process, and the conditions `Use Sanity Potion: 1` and `Use Originium: No` are met, the AI will stop without completing the full 100 runs. | -| D | 999 | x | 100 | 3 Orirock| The AI will attempt to complete 100 runs, using up to 999 sanity potions. If during the process, the AI accumulates 3 Orirock cubes, satisfying the condition `Material: 3 Orirock`, the AI will stop without completing the full 100 runs. | - -- Note that `Material` and `Stage` are independent options which means the program is not going to automatically navigate the the stage for the specified material. You still to mannually configure the stage option. -- `Delegate` will be automatically selected if not already in case you forget to do so. -- Material drops are automatically recognized and printed to the program log. The data also gets uploaded to [Penguin Stats](https://penguin-stats.io/). You can also manually set your Penguin Stats user ID in the settings. -- After disconnection or flashing at 4 am, it will automatically reconnect and continue to play the last stage selected in the game. If you need to cross the day, please check the last stage selection. -- A level up situation can be automatically handled as well as a failed delegation in which case this time of the operation will be given up. - -### Infrastructure - -#### Shifting Strategy - -- Automatically calculate and choose the **optimal solution within a single facility**. Supports all general and special skill combinations. Supports recognition of Battle Record, Pure Gold, Originium Shard, Chip, etc. for different operators. - -#### Morale Threshold for Working in Infrastructure - -- Recognizes the percentage of the Morale bar. When Morale is below some threshold, the operator will be moved to the dormitory. - -#### Note - -- The shifting strategy is based on the optimal solution within a single facility instead of multiple facilities. Combination such as: `Shamare-Tequila`, `Vermeil-Scene` within a single facility can be recognized correctly; while combination like `Rosmontis`, `Pinus Sylvestris` among facilities is not supported yet. -- If `Usage of Drone` is selected with the option `Trading Post-LMD`, it will recognize `Shamare` and reserve it for her. -- Operators of corresponding fraction will be selected when only one Clue is needed Reception Room; otherwise general operators will be chosen. -- Reception Room will send out Clues only when your Clues are full. Three Clues will be send out at most. You can edit `SelectClue` - `maxTimes` field in `resource/tasks.json` to edit number of Clues sent if you want. -- If you do not want operators like `Irene` or someone else to be put into the dormitory when the training room is not in use, you can switch off `Working operator shall not be put into the dormitory` in the settings. Note that this may cause the operators with non-full fatigue not entering the dormitory as well. -- Due to the complexity of Control Center, only `Amiya`, `Swire`, `Kal'tsit`, `Team Rainbow` and other Morale+0.05 operators will be considered. To be improved in future. -- Some alternate operators may have conflicts in Infrastructure. Please notice if there is "Operator conflict" warnings on the UI, and double check the Infrastructure to shift manually (e.g. some facilities may not have any operator). - -#### Custom infrastructure shift change (test function) - -- The experts of Yituliu with a one-picture flow have helped to create a shift generator, which can be referenced in the documentation. -- Several sets of extremely efficient tasks are built-in under the MAA folder `/resource/custom_infrast/`, which can be used as a reference. (Fully upgraded operators at elite 2 level can try to use them directly.) - -### Credit Store - -- Automatically visit friends to obtain credit points. -- With the help of Warfarin's credit: - - Use a support operator to clear the `OF-1` stage in Heart of Surging Flame. If the stage is not unlocked, please do not select this option. - - You can modify the automatic combat flow of OF-1 by editing `resource\copilot\OF-1_credit_fight.json` (it is generally not recommended to modify). - - It does not take effect when the stage selection is set to `current/last`. - -### Integrated Strategy (I.S.) Support - -- Please select the theme you want to explore in the MAA `Task Settings` - `Auto I.S.`, otherwise there may be problems due to the default selection of the latest theme. - - Please pin the corresponding I.S. theme to the terminal in the game. - - If there is exploration of non-target themes (such as if you plan to use MAA to brush Mizuki, but there is still an unfinished exploration of Phantom), please end it manually. - - If MAA gets stuck/repeatedly enters and exits on the difficulty selection interface, please manually select the difficulty before starting this function. -- In the settings, you can choose the team, starting operator (only one operator name), etc. -- It supports automatic recognition of operators and proficiency, and automatically selects better operators and skills. -- It supports identifying store items and prioritizes purchasing more powerful collectibles. -- It supports reconnection after disconnection and supports continuing to return to brush after 4 a.m. update. -- If the scraping cannot be completed during the battle, all ground units will be automatically withdrawn after more than 5 minutes; if it exceeds 6 minutes, the current battle will be automatically abandoned without getting stuck. -- If the task gets stuck, it will automatically abandon the exploration and retry. However, if it often gets stuck in a certain place and then gives up, seriously affecting efficiency, please feel free to submit an issue for feedback~ - -### Share Your Tasks - -- Welcome to share your tasks with [www.抄作业.com](https://www.抄作业.com), or [www.prts.plus](https://www.prts.plus)! - -#### Load Tasks - -- Please run it on the screen with `Start Operation` button. -- If you need to make your own build manually, turn off `auto build` to do so. -- Remember to like the tasks that you think helpful! - -![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) - -#### Create Tasks - -- A tool for creating tasks is provided in the directory of MAA. See also: [Copilot Schema](3.3-COPILOT_SCHEMA.md) for help. -- How to get map coordinates: start an operation after filling in `stage_name`. A file named `map.png` will be generated for your reference. Or you can refer to [PRTS.map](https://map.ark-nights.com/), with the `coordinates` set to `MAA` mode. -- Drill plan is recommended for testing. -- Welcome to share your tasks with [www.抄作业.com](https://www.抄作业.com), or [www.prts.plus](https://www.prts.plus)! -- It is recommended to write your own name, video walkthrough URL, or other things that you think helpful in the description. - -### Task Video Recognition - -- Drag and drop the video file to the `Copilot` section and click `Start` to initialize the video recognition. -- Only 16:9 aspect ratio videos with a resolution of 720p or higher are supported. The video content must not contain any black borders, distortion correction, emulator borders or other elements. - -### Recruitment Recognition - -- Auto-recruitment and recruitment recognition are two different features! -- Auto-recruitment supports using `Expedited Plan` to make it fully automated! Please enable `Auto use Expedited` in `Task Settings` - `Recruit` , and modify `Recruit max times`. -- Pop-up notification when 5★, 6★ operators are recruited. -- Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/) while auto-recruitment. - -### Depot Recognition (test function) - -- Please start with the `Upgrade materials` screen. Currently, exporting is only supported to [penguin-stats](https://penguin-stats.io/), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/table). More useful features may be added in the future. -- Please feel free to contact us if you hope to integrate with our JSON schema. - -## Setting Introduction - -In addition to the `Settings` tab, there are also `Task Settings` in Windows MAA. Click the `gear` on the right side of the task list of `Farming` to switch between different task settings in the farming interface. - -Note that clicking `General` `Advanced` will also switch `Task Settings`. - -### Custom Connection - -#### Obtain adb path - -- Method 1: Download adb and set up connection manually - - (Only for Windows users) Download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it. It is recommended to unzip to the MAA directory. - - Go to the "Settings" - "Connection Settings" of the software, select the file path of `adb.exe`, fill in the adb address (IP + port need to be filled in, such as `127.0.0.1:5555`), and select the emulator type. - -- Method 2: Find the adb execution port of the emulator and connect - - For emulators that come with adb, you can find the location of the adb executable file according to the [Confirm adb address section](1.2-FAQ.md#Method-1-Confirm-that-the-adb-and-connection-address-are-correct). - - Mac Android emulators are generally installed in the `/Application/` directory. Right-click on `[emulator name].app` and select "Show Package Contents". Find the adb executable file in the directory. - -#### Get the port number - -- Method 1: Use the adb command to view the running port directly - - **Replace adb in the command below with the name of the found adb executable file**, and then execute: - - ```sh - # mac/linux/windows cmd - adb devices - # windows PowerShell - .\adb devices - ``` - - After most emulator adb execution commands are run, they will be output in the following form, where `[ADBPORT]` is a specific number: - - ```sh - List of devices attached - 127.0.0.1:[ADBPORT] device - # may be more output like the above one - ``` - - Use `127.0.0.1:[ADBPORT]` as the connection address (replace `[ADBPORT]` with the actual number). - -- Method 2: Use system command to check emulator debugging port - - If the output of the adb command does not display the port information in the form of `127.0.0.1:[port]`, you can use the following method to check: - 1. First, run the adb executable program once (need to start the adb daemon process), and run the Arknights emulator application. - 2. Then use the system command to check the port information of the adb process. - - Windows Command - - You can use `win` + `R` to open the command line by entering `cmd`, and use the following command to check: - - ```sh - for /F "tokens=1,2" %A in ('"tasklist | findstr "adb""') do ( ^ - netstat -ano | findstr "%B" |) - ``` - - Mac / Linux Command - - Enter the following command in the terminal after starting the emulator: - - ```sh - tmp=$(sudo ps aux | grep "[a]db" | awk '{print $2}') && \ - sudo netstat -vanp tcp | grep -e "\b$tmp" - ``` - - The output will be in the following format, where `[PID]` is the actual process number of the adb, `[ADBPORT]` is the remote connection port of the target emulator adb, and `[localport]` is the local address of the process, which does not need to be concerned (there will also be other irrelevant indicators in the Mac operation result): - - ```sh - > ( netstat -ano | findstr "[PID]" ) - TCP 127.0.0.1:[localport] 127.0.0.1:0.0.0.0 LISTENING [PID] - TCP 127.0.0.1:[localport] 127.0.0.1:[ADBPORT] ESTABLISHED [PID] - # ... - # maybe more output like the above line - ``` - - Use `127.0.0.1:[ADBPORT]` (replace `[ADBPORT]` with the actual number) in the results as the actual connection address of the emulator adb and fill it in `Settings` - `Connection Settings` - `Connection Address`. - -### Automatically Start Multiple Emulators - -- If you need to operate multiple emulators simultaneously, you can copy the MAA folder multiple times, and use **different MAAs**, **the same adb.exe**, and **different connection addresses** to connect. -- Taking `BlueStacks International Version` as an example, two ways to start multiple emulators are introduced. - - - Perform multiple operations by attaching commands to `HD-Player.exe`. - - 1. Start the corresponding emulator separately. - 2. Open the Task Manager, find the corresponding emulator process, go to the Details tab, right-click the column above, click `Select Columns`, and check `Command Line`. - 3. In the newly added `Command Line` column, find the content after `"...\Bluestacks_nxt\HD-Player.exe"`. - 4. Fill in the found content, similar to `--instance Nougat32`, in `Startup Settings` - `Additional Commands`. - - Note: After the operation is completed, it is recommended to hide the `Command Line` column opened in `Step 2` to prevent freezing. - - Example: - - ```bash - Multi-instance 1: - Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe - Additional Commands: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights" - Multi-instance 2: - Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe - Additional Commands: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili" - ``` - - The `--cmd launchApp --package` part starts and automatically runs the specified package name application after startup, which can be changed as needed. - - - Perform multi-instance operation by using the shortcut of emulators or apps. - - 1. Open the multi-instance manager and add the corresponding emulator's shortcut. - 2. Fill in the path of the emulator shortcut in `Startup Settings` - `Emulator Path`. - - Note: Some emulators support creating app shortcuts, which can directly launch the emulator and open Arknights with the app shortcut. - - Example: - - ```bash - Multi-instance 1: - Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 1.lnk - Multi-instance 2: - Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 2 - Arknights.lnk - ``` - - If using `Emulator Path` for multi-instance operation, it is recommended to leave `Additional Commands` in `Startup Settings` empty. - -### Pre/Post-Script - -- Starting from v4.13.0, it is possible to set pre/post-script that automatically executes batch files before and after the task. -- You need to provide the path to the batch file, which should have a `.bat` extension. - -## Miscellaneous - -- Tasks order can be changed on the UI. So can the shifting order in the infrastructure. -- Almost all configuration changes will be saved automatically, except for options containing an *. -- All clicking event is randomized within a region, following Poisson distribution (higher probability at the center, lower probability around). -- Developed in C++, the core algorithm supports multi-level cache, in order to reduce CPU and memory usage as much as possible. -- Our software supports auto-update ✿✿ヽ(°▽°)ノ✿ Beta-testers can try beta versions, which updates faster and less buggy (maybe). -- If auto-update fails, you can download manually and put the ZIP file under the same directory. The update will start automatically. diff --git a/docs/en-us/1.3-EMULATOR_SUPPORTS.md b/docs/en-us/1.3-EMULATOR_SUPPORTS.md deleted file mode 100644 index 363151c87d..0000000000 --- a/docs/en-us/1.3-EMULATOR_SUPPORTS.md +++ /dev/null @@ -1,189 +0,0 @@ -# Emulator Supports - -## ✅ [Bluestacks-CN 5](https://www.bluestacks.cn/) - -Fully compatible. Need to turn on `Settings` - `Engine Settings` - `Allow ADB connection`. - -## ✅ [Bluestacks 5](https://www.bluestacks.com/) (Recommended👍) - -Fully compatible. Need to turn on `Settings` - `Advanced` - `Android Debug Bridge`. - -## ✅ [Bluestacks 5 Hyper-V Version](https://support.bluestacks.com/hc/en-us/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11-) - -Compatible. - -- Turn on `Settings` - `Advanced` - `Android Debug Bridge`. -- Bluestack Hyper-V port changes frequently. Here is a simple hack: - - 1. Find `bluestacks.conf` in the data location of the emulator. (Default is `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`) - 2. If you are using MAA for the first time, Launch it, which generates `gui.json`. - 3. **Exit** MAA, **then** open the `gui.json`, and add a new field `Bluestacks.Config.Path`, with the value of the full path of `bluestacks.conf` (backslashes should be escaped like `\\`). - For example: (suppose the file is at `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`) - - ```json - { - "Configurations": { - "Default": { - "Bluestacks.Config.Path":"C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf", - // ... - } - } - } - ``` - - 4. LinkStart! - -- If you need to run multiple emulators (ignore this step if you do not need to do so), you can change the keywords for MAA to detect configuration files. - Add field `Bluestacks.Config.Keyword` following the steps above - Example: - - ```json - "Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", - ``` - -## ✅ [Nox](https://en.bignox.com/) - -Fully compatible. - -## ✅ [Nox Android 9](https://en.bignox.com/) - -Fully compatible. - -## ⚠️ [MuMu](https://www.mumuglobal.com/) - -Compatible but: - -- Requires MAA to "Run as Administrator" to get ADB path and address (since MuMu runs as admin). -- You can also fill in the ADB path and address if you do not wish to run as admin. -- It is not recommended to use the default odd resolutions of MuMu, it is better to change to mainstream resolutions such as 1280x720, 1920x1080, 2560x1440, etc. -- MuMu uses the same adb port for multi-instance, so multi-instance is not supported. - -## 🚫 MuMu Mobile Game Assistant - -Incompatible. The ADB port is unavailable. - -## ⚠️ [MuMu emulator X (Android 12)](https://www.mumuglobal.com/) (most smooth👍) - -Compatible but: - -- This emulator is still in the testing phase and it is uncertain whether unknown issues will occur. -- Requires MAA to "Run as Administrator" to get ADB path and address (since MuMu runs as admin). -- You can also fill in the ADB path and address if you do not wish to run as admin. -- It is not recommended to use the default odd resolutions of MuMu, it is better to change to mainstream resolutions such as 1280x720, 1920x1080, 2560x1440, etc. -- MuMu uses the same adb port for multi-instance, so multi-instance is not supported. - -## ⚠️ [LDPlayer](https://www.ldplayer.net/) - -The recent official update has fixed some issues and provided corresponding support. After some time of testing, we have basically confirmed that it can be used normally. -While using it, please still pay attention to the following points, but overall, the user experience has been greatly improved. - -- **For LDPlayer 9, it is recommended to use version 9.0.37 or above; for LDPlayer 5, it is recommended to use version 5.0.44 or above.** -- We cannot guarantee that the LDPlayer emulator can run perfectly on all computers, but we are working hard to optimize the adaptation. -- If you encounter any problems when using the LDPlayer emulator, please update to the latest version of the emulator and try to solve the problem by yourself first. If you encounter difficulties, please feel free to provide feedback, and we will try our best to provide support. -- Note: We welcome feedback on issues related to the LDPlayer emulator, and will try to solve them. We would be very grateful if you could provide relevant code or contributions. - -## ✅ [Memu](https://www.memuplay.com) - -Compatible, but there are fewer tests and there may be unknown issues - -## 🚫 Tencent Mobile Game Assistant - -Incompatible. The ADB port is unavailable. - -## 🚫 [Google Play Games Beta](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer) - -Incompatible. The ADB port of [the consumer client](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)is unavailable. - -## ⚠️ [Win11 WSA](https://docs.microsoft.com/en-us/windows/android/wsa/) - -Partially compatible. - -- Need to connect with [Custom Connection](#%EF%B8%8F-custom-connection). -- For WSA 2204 or higher (version is in the `About` window of system settings), try `General Configuration` to connect. -- For WSA 2203 or older (version is in the top of the system settings window), try `Legacy WSA` to connect. -- Since WSA does not support changing resolution, please resize the window manually because this program supports 720p or higher `16:9` resolution better. (Or you can simply maximize the window with `F11` if your monitor is 16:9.) -- Please ensure that your emulator is at the top of other windows in most of the time and there are no other android applications running. Otherwise the game may pause or the recognition may fail. -- Sometimes the screenshot of WSA may be blank, causing recognition failure. So it is not recommended to use WSA. - -## ✅ [AVD](https://developer.android.com/studio/run/managing-avds) - -Compatible. - -### ⚙️ Non-`16:9` devices like smartphones or tablets - -You may need to change the resolution manually since MAA supports only `16:9` resolution. - -1. Turn on USB debugging mode and connect your device to the computer with a cable, or debug with ADB remotely. -2. Run `Command Prompt (CMD)`, check the device address and connect. - - - Use the following command to check device ID if you are using USB cable to connect: - - ```bash - adb devices # Checks the connection status of the current device, with the first column to be the device ID - ``` - - After successful connection, you will see the following messages: - - ```bash - C:\Users\username>adb devices - List of devices attached - VFNDU1682100xxxx device # The data before "device" is the device ID - ``` - - - If you are using remote ADB connection: go to `Settings -> WLAN -> View` to find the corresponding IP address, and the port will usually be 5555 or 5037. - - ```bash - adb connect # E.g. 192.168.0.10:5555 - ``` - - - If it prompts `'adb' is not recognized as an internal or external command`, it is because the environment variable is not configured correctly. You need to give the full path of ADB to run it. For example: - - ```bash - D:\adb_unzip_path\adb.exe devices # Or you can simply drag the adb.exe to CMD window and type [SPACE] devices - ``` - - It is suggested that you configure the environment variable for ADB if you need to run it frequently. Please refer to the articles on the Internet about how to configure it for help. - -3. Enter the command prompt to proceed - - ```bash - adb -s shell # Enters the command prompt of the device - wm size # Checks the resolution of the current device - wm size 720x1280 # Changes the resolution to 720p - ``` - -4. Fill in the ADB path and the address of your smartphone (device ID or IP + port) in MAA -5. Set the `Special-shaped screen adaptation` to 0 (off) in the game settings. - Otherwise, your phone UI and click response may be dislocated if you change the resolution with ADB later. -6. Use MAA (≧∇≦)ノ -7. Before exiting MAA, reset the resolution of your phone. - - ```bash - wm size reset # Resets resolution - ``` -#### Using `Starts/End with Script` Options - -After MAA version 4.13.0, you're able to utilize `Starts/End with Script` options to apply resolution changes on startup and revert the changes on finishing. - -Create two script files: `startup.bat` & `finish.bat` in appropriate path and edit them using your favored text editor. - -In `startup.bat`: - -```bash -adb shell wm size 1080x1920 -::If long-time operation is required, add the following line to save the power and protect your screen. -adb shell settings put system screen_brightness 1 -``` - -In `finish.bat`: - -```bash -adb shell wm size reset -::Add the following line to brighten your screen -adb shell settings put system screen_brightness 20 -::Add the following line to lock (Command may differ in different device, test it first) -adb shell input keyevent 26 -``` - -Then go to `Settings` - `Connection Settings` and add the paths of files above to `Starts with Script` & `End with Script` options, the script will be executed at corresponding timing. - diff --git a/docs/en-us/develop/README.md b/docs/en-us/develop/README.md new file mode 100644 index 0000000000..2038eedb71 --- /dev/null +++ b/docs/en-us/develop/README.md @@ -0,0 +1,9 @@ +--- +title: Development Docs +icon: ph:code-bold +index: false +dir: + order: 2 +--- + + diff --git a/docs/en-us/2.2-DEVELOPMENT.md b/docs/en-us/develop/development.md similarity index 73% rename from docs/en-us/2.2-DEVELOPMENT.md rename to docs/en-us/develop/development.md index 5443573b74..031ce1c026 100644 --- a/docs/en-us/2.2-DEVELOPMENT.md +++ b/docs/en-us/develop/development.md @@ -1,8 +1,19 @@ -# Development +--- +order: 1 +icon: iconoir:developer +--- -## Introduction to GitHub pull request flow +# Getting Started with Development -1. If you have forked this repository long time ago, please go to `Settings`, scroll down to the bottom, and click `Delete Repository`. +## Introduction to GitHub Pull Request flow + +### I don't know programming but just want to modify some JSON files/documents, how can I do it? + +Welcome to the [GitHub Pull Request Tutorial](./pr-tutorial.md) that anyone can understand (purely web-based on Github.com) + +### I can program, but I've never used GitHub/C++/..., what can I do? + +1. If you have forked this repository a long time ago, please go to `Settings`, scroll down to the bottom, and click `Delete Repository`. 2. Go to [MAA main repository](https://github.com/MaaAssistantArknights/MaaAssistantArknights) and click `Fork`, then `Create fork`. 3. Clone the `dev` branch of the (forked) repository to local with submodules: @@ -10,11 +21,11 @@ git clone --recurse-submodules -b dev ``` - If you are using a Git GUI such as Visual Studio that without `--recurse-submodules`, do `git submodule update --init` after cloning to clone the submodules. + If you are using a Git GUI such as Visual Studio that does not include `--recurse-submodules`, do `git submodule update --init` after cloning to clone the submodules. 4. Download pre-built third-party libraries - **Please install Python first if you don't have it.** + **A Python environment is required; please search for a Python installation tutorial if needed.** ```cmd python maadeps-download.py @@ -22,7 +33,7 @@ 5. Configure development environment - 1. Download and install `Visual Studio 2022 Community`. Select `Desktop development with C++` and `.NET Desktop Development`. + 1. Download and install `Visual Studio 2022 Community`. During installation, select `Desktop development with C++` and `.NET Desktop Development`. 6. Double-click to open the file `MAA.sln`. Visual Studio will load the project automatically. 7. Run a build to test whether the development environment has been configured correctly. Choose `Release` & `x64`, right-click `MaaWpfGui` to set it as the startup project, and run it. If the build is successful, the `MaaWpfGui` window will appear. You can connect to the emulator in order to confirm again that the development environment has been configured correctly. @@ -84,7 +95,7 @@ Note: operations regarding Git can be done by VS2022 instead of command line too 2. Use tools like 'Everything' to locate the installation location of clang-format.exe. As a reference, if you are using Anaconda, clang-format.exe will be installed in YourAnacondaPath/Scripts/clang-format.exe. 3. In Visual Studio, search for 'clang-format' in Tools-Options. -4. Click `Enable ClangFormat` and select `Use custom clang-format.exe file` to use the `clang-format.exe` you have got in Step 2. +4. Click `Enable ClangFormat support` and select `Use custom clang-format.exe file` and choose the `clang-format.exe` located in Step 2. ![Enable clang-format in Visual Studio](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2) @@ -96,8 +107,8 @@ You can also format with `tools\ClangFormatter\clang-formatter.py` directly, by ## Develop in cloud using GitHub codespace -Create GitHub codespace with pre configured C++ dev envirinments: +Create GitHub codespace with pre-configured C++ dev environments: [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights) -Then follow the instructions in vscode or [Linux tutorial](./2.1-LINUX_TUTORIAL.md) to configure GCC 12 and the CMake project. +Then follow the instructions in vscode or [Linux tutorial](./linux-tutorial.md) to configure GCC 12 and the CMake project. diff --git a/docs/en-us/develop/documentation-guidelines.md b/docs/en-us/develop/documentation-guidelines.md new file mode 100644 index 0000000000..bbe5ed005e --- /dev/null +++ b/docs/en-us/develop/documentation-guidelines.md @@ -0,0 +1,144 @@ +--- +order: 6 +icon: jam:write-f +--- + +# Document Writing Guide + +::: tip +The purpose of this document is to guide document writers to better utilize the functionalities provided by the theme, thus achieving a more readable effect. +::: + +Our documentation is built on [vuepress](https://github.com/vuejs/vuepress) and utilizes the [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) theme. You can also refer to the [official documentation](https://theme-hope.vuejs.press/en/) for more detailed explanations. Here, we only introduce some common functionalities. + +## Deploy Locally + +1. Install [Pnpm](https://pnpm.io/installation), and clone the repository refer to [Introduction to GitHub Pull request Flow](./development.md#introduction-to-github-pull-request-flow). +2. Create a terminal in the `website` directory, then run `pnpm i` to download dependencies. +3. Run `pnpm run dev` to deploy. + +## Containers + +~~Not the docker container~~ + +This theme provides support for custom containers such as tips, notes, info, warnings, alerts, and details. We can utilize this feature to emphasize certain content. + +Usage of containers: + +```markdown +::: [Container Type] [Container Title (optional)] +Content you want to write +::: +``` + +Accepted container types and their default titles are as follows: + +- `tip` Tip +- `note` note +- `info` info +- `warning` warning +- `danger` danger +- `details` details + +### Container Examples + +::: tip +This is a tip container +::: + +::: note +This is a note container +::: + +::: info +This is an info container +::: + +::: warning +This is a warning container +::: + +::: danger +This is a danger container +::: + +::: details +This is a details container +::: + +## Icons + +This theme provides icon support, where you can use icons in the following places: + +- Document title: Set the icon next to the document title in frontmatter. + +- Navbar/Sidebar: Set icons displayed in the navbar and sidebar. + +- Document content: Use icons in the document content. + +### Setting Document Icons + +You can use `icon` in the document's [frontmatter](#frontmatter) to set the document's icon. + +This icon will be displayed next to the document title. + +::: details Frontmatter settings of this document + +```markdown +--- +icon: jam:write-f +--- +``` + +::: + +### Using Icons in Documents + +You can use the `` component to add icons in markdown. This component has the following attributes: + +- `icon`: Accepts icon keywords and URLs, such as `jam:write-f`, `ic:round-home`, etc. +- `color`: Accepts CSS-style color values, such as `#fff`, `red`, etc. (This option only works for SVG icons). +- `size`: Accepts CSS-style sizes, such as `1rem`, `2em`, `100px`, etc. + +::: details Example + + +```markdown + +``` + + +```markdown + +``` +::: + +### Obtaining Icon Keywords + +The icons used in this document are from [iconify](https://iconify.design/). You can search for the icons you want in its provided [icon search interface](https://icon-sets.iconify.design/) and then copy their keywords. + +## Frontmatter + +Frontmatter is the content at the beginning of a Markdown document enclosed in `---,` using YAML syntax internally. Through frontmatter, we can identify the document's editing time, the icon used, the classification, tags, etc. + +::: details Example + +```markdown +--- +date: 1919-08-10 +icon: jam:write-f +order: 1 +--- + +# Document Title + +... +``` + +::: + +The meanings of each field are as follows: + +- `date`: Editing time of the document +- `icon`: Icon next to the document title +- `order`: Document order in the sidebar diff --git a/docs/en-us/2.3-ISSUE_BOT_USAGE.md b/docs/en-us/develop/issue-bot-usage.md similarity index 91% rename from docs/en-us/2.3-ISSUE_BOT_USAGE.md rename to docs/en-us/develop/issue-bot-usage.md index fd32bd8a95..3f0949c092 100644 --- a/docs/en-us/2.3-ISSUE_BOT_USAGE.md +++ b/docs/en-us/develop/issue-bot-usage.md @@ -1,3 +1,8 @@ +--- +order: 4 +icon: bxs:bot +--- + # How to use Issue Bot The action of Issue Bot is [issue-checker](https://github.com/zzyyyl/issue-checker), with configuration file [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml). @@ -9,8 +14,8 @@ The action of Issue Bot is [issue-checker](https://github.com/zzyyyl/issue-check ### Auto Notification - Adds labels to issues and pull requests, e.g., `module`, `Client`, `ambiguous`, `translation required`, etc. - Issue Bot will add categories based on keywords. - Please refer to the [configuration file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) for the keywords. + Issue Bot will add categories based on keywords. + Please refer to the [configuration file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) for the keywords. - Adds the `MAA Team` label to issues and pull requests for MAA public team members. #### Issues and Their Comments diff --git a/docs/en-us/2.1-LINUX_TUTORIAL.md b/docs/en-us/develop/linux-tutorial.md similarity index 80% rename from docs/en-us/2.1-LINUX_TUTORIAL.md rename to docs/en-us/develop/linux-tutorial.md index 9c282805e1..d79c85a43b 100644 --- a/docs/en-us/2.1-LINUX_TUTORIAL.md +++ b/docs/en-us/develop/linux-tutorial.md @@ -1,10 +1,15 @@ +--- +order: 2 +icon: teenyicons:linux-alt-solid +--- + # Linux Compiling Tutorial **The tutorial requires some basic knowledge about Linux OS!** -If you just want to install MAA directly instead of compiling it yourself, please read [Emulator Support for Linux](./1.5-EMULATOR_SUPPORTS_FOR_LINUX). +If you just want to install MAA directly instead of compiling it yourself, please read [Emulator Support for Linux](../manual/device/linux.md). -::: info **Note** -Linux build of MAA is still under discussion, some of the content might be outdated, please follow the script in [GitHub workflow file](../.github/workflows/release-maa-linux.yml), also reference [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights), [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix) +::: info Note +Linux build of MAA is still under discussion, some of the content might be outdated, please follow the script in [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134), also reference [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights), [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix) ::: ## Compiling MAA @@ -64,7 +69,7 @@ Linux build of MAA is still under discussion, some of the content might be outda ## Integration -[~~Maybe not a doc~~](https://github.com/MistEO/MaaCoreArknights/wiki) +[~~Maybe not a doc~~](../protocol/integration.md) ### Python diff --git a/docs/en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION.md b/docs/en-us/develop/overseas-client-adaptation.md similarity index 97% rename from docs/en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION.md rename to docs/en-us/develop/overseas-client-adaptation.md index a61e55214e..51b8182a8f 100644 --- a/docs/en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION.md +++ b/docs/en-us/develop/overseas-client-adaptation.md @@ -1,3 +1,8 @@ +--- +order: 5 +icon: ri:earth-fill +--- + # Overseas Clients Adaptation ## Preparation @@ -5,7 +10,7 @@ Before starting this tutorial, make sure you have: 1. Installed and properly configured the required software. There should be information in the `readme.md` of the ZH-CN client or the corresponding client to ensure that the supported features work properly. -2. Read `3.4-TASK_SCHEMA.md` and have a basic understanding of the meaning and usage of each field. You should also understand the meaning and usage of `@` and `#` in the code. +2. Read [Task Schema](../protocol/task-schema.md) and have a basic understanding of the meaning and usage of each field. You should also understand the meaning and usage of `@` and `#` in the code. 3. Understand that the `task.json` file and template image of the ZH-CN client will be used as alternatives when they are unmentioned or missing for the overseas client. The content in the `task.json` for the overseas client should be rewritten according to the fields of the ZH-CN task. 4. Have some English ability, be able to read English logs, and be able to find missing pictures and other information through the logs. 5. Understand that it is recommended to perform the modification individually according to the task chain. For example, to modify the Award task, you should modify the `template image`, `text`, and `roi` step by step in accordance with the order in its `next` field. This will ensure that every task is working normally after modification and errors can be easily spotted. Additionally, this can prevent confusion and forgetting which task the software is stuck on when too much content is modified at once. @@ -130,3 +135,7 @@ In addition, the execution of the command (e.g. `Call`) and the `OCR` informatio For example, in this log, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` means that the task has been attempted to be recognized 10 times, and the maximum number of times is 20. After the maximum number of times is reached, the task will be skipped and an error will be reported, and the next task will be performed. If there are no issues with the previous task, it is likely that there is a problem with the recognition here. To troubleshoot this issue, you can check the tasks mentioned in the log to see if there is a corresponding template file, if the `text` field of the corresponding task is incorrect, or if the `roi` range for task recognition is incorrect, and make any necessary modifications. By looking at the corresponding template image, you may find that there is a template for this image in the EN client template folder, but the size is larger than the image in template folder for the ZH-CN client . This could cause the `roi` in ZH-CN client to not be recognized in the EN client, so you may need to modify the corresponding task's `roi` in the EN client's `task.json` file to match the size of the image in the EN client. + +## Submit your changes + +Check out [Github Pull Request Guide](./pr-tutorial.md) diff --git a/docs/en-us/2.4-PURE_WEB_PR_TUTORIAL.md b/docs/en-us/develop/pr-tutorial.md similarity index 95% rename from docs/en-us/2.4-PURE_WEB_PR_TUTORIAL.md rename to docs/en-us/develop/pr-tutorial.md index 7d07feabcb..41f80ca54e 100644 --- a/docs/en-us/2.4-PURE_WEB_PR_TUTORIAL.md +++ b/docs/en-us/develop/pr-tutorial.md @@ -1,11 +1,16 @@ +--- +order: 3 +icon: mingcute:git-pull-request-fill +--- + # GitHub Pull Request User Guide This document is machine-translated. If you have the ability, please refer to the Chinese version. We would greatly appreciate any errors or suggestions for improvement. -⚠️ **PALLAS WARNING** ⚠️ **Buff Stacking Warning** ⚠️ - +::: warning Many concepts in this tutorial have been simplified in order to make it more accessible to a wider audience, even at the expense of some elegance and accuracy. -For those who have experience using Git and programming knowledge, you may refer to the more advanced tutorial:[DEVELOPMENT](2.2-DEVELOPMENT.md) +For those who have experience using Git and programming knowledge, you may refer to the more advanced tutorial in [Development](./development.md) +::: ## Basic concepts and terminology @@ -48,11 +53,11 @@ Now we have a conflict, as both of you have modified the A file but in different 1. First, go to the MAA main repository and fork a copy of the code. - ![~ NKHB1CIE8`G(UK@ %3 `H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) + ![image](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) 2. Remove the "Only master branch" option, then click "Create Fork". - ![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) + ![image](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) 3. You will be taken to your personal repository, which will have a title of "Your Name/MaaAssistantArknights", with a small note below stating "forked from MaaAssistantArknights/MaaAssistantArknights" (copied from the MAA main repository). diff --git a/docs/en-us/index.md b/docs/en-us/index.md deleted file mode 100644 index 242261ab9f..0000000000 --- a/docs/en-us/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -home: true - -actions: - - text: Link Start! - link: /en-us/readme.html - type: primary - -# features: -# - title: 多设备兼容 -# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 -# - title: 完全托管 -# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 -# - title: 高性能 -# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 -# - title: 高效率 -# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 -# - title: 高自定义 -# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... -# - title: 允许商用 -# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 - - ---- diff --git a/docs/en-us/manual/README.md b/docs/en-us/manual/README.md new file mode 100644 index 0000000000..be8d4c8880 --- /dev/null +++ b/docs/en-us/manual/README.md @@ -0,0 +1,9 @@ +--- +title: User Manual +icon: mdi:user +index: false +dir: + order: 1 +--- + + diff --git a/docs/en-us/manual/cli/README.md b/docs/en-us/manual/cli/README.md new file mode 100644 index 0000000000..545d221863 --- /dev/null +++ b/docs/en-us/manual/cli/README.md @@ -0,0 +1,9 @@ +--- +title: CLI Manual +icon: material-symbols:terminal +index: false +dir: + order: 6 +--- + + diff --git a/docs/en-us/user_manual_for_cli/cli-config.md b/docs/en-us/manual/cli/config.md similarity index 98% rename from docs/en-us/user_manual_for_cli/cli-config.md rename to docs/en-us/manual/cli/config.md index e8c22b41ae..bb44b63457 100644 --- a/docs/en-us/user_manual_for_cli/cli-config.md +++ b/docs/en-us/manual/cli/config.md @@ -3,7 +3,7 @@ order: 4 icon: material-symbols:settings --- -# Configuring maa-cli +# Configuration ## Configuration Directory @@ -448,12 +448,12 @@ The JSON schema of configuration files can be found at [`schemas` directory][sch With the help of JSON schema, you can get auto-completion and validation in some editors with plugins. -[task-types]: ../3.1-INTEGRATION.md#list-of-task-types -[emulator-ports]: ../1.2-FAQ.md#common-adb-ports-for-popular-android-emulators -[playcover-doc]: ../1.4-EMULATOR_SUPPORTS_FOR_MAC.md#✅-playcover-the-software-runs-most-fluently-for-its-nativity-🚀 -[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples +[task-types]: ../../protocol/integration.md#list-of-task-types +[emulator-ports]: ../faq.md#common-adb-ports-for-popular-android-emulators +[playcover-doc]: ../device/macos.md#-playcover-the-software-runs-most-fluently-for-its-nativity- +[example-config]: https://github.com/MaaAssistantArknights/maa-cli/tree/main/maa-cli/config_examples [wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa -[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/ +[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/tree/main/maa-cli/schemas [task-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/task.schema.json [asst-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/asst.schema.json [cli-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/cli.schema.json diff --git a/docs/en-us/user_manual_for_cli/cli-faq.md b/docs/en-us/manual/cli/faq.md similarity index 98% rename from docs/en-us/user_manual_for_cli/cli-faq.md rename to docs/en-us/manual/cli/faq.md index 36e9777a8e..3c0e3a8e77 100644 --- a/docs/en-us/user_manual_for_cli/cli-faq.md +++ b/docs/en-us/manual/cli/faq.md @@ -3,7 +3,7 @@ order: 5 icon: ph:question-fill --- -# FAQs for maa-cli +# FAQs ## 1. How to use `$HOME/.config/maa` as the configuration directory on macOS? diff --git a/docs/en-us/user_manual_for_cli/cli-install.md b/docs/en-us/manual/cli/install.md similarity index 99% rename from docs/en-us/user_manual_for_cli/cli-install.md rename to docs/en-us/manual/cli/install.md index 0dcb591e82..43a57e13e0 100644 --- a/docs/en-us/user_manual_for_cli/cli-install.md +++ b/docs/en-us/manual/cli/install.md @@ -3,7 +3,7 @@ order: 2 icon: material-symbols:download --- -# Install and Build maa-cli +# Install and Build There are multiple ways to install maa-cli, including package managers, precompiled binaries, and building from source with `cargo`. diff --git a/docs/en-us/user_manual_for_cli/cli-intro.md b/docs/en-us/manual/cli/intro.md similarity index 70% rename from docs/en-us/user_manual_for_cli/cli-intro.md rename to docs/en-us/manual/cli/intro.md index 5ef44940ea..236a8075a9 100644 --- a/docs/en-us/user_manual_for_cli/cli-intro.md +++ b/docs/en-us/manual/cli/intro.md @@ -3,7 +3,7 @@ order: 1 icon: material-symbols:toc --- -# maa-cli +# Introduction A simple CLI for [MAA][maa-home] written in Rust. @@ -13,11 +13,4 @@ A simple CLI for [MAA][maa-home] written in Rust. - Install and update MaaCore and resources with `maa install` and `maa update`; - Update self with `maa self update`. -## Documentation - -- [Installation and Compilation](cli-install.md) -- [Usage](cli-usage.md) -- [Configuration](cli-config.md) -- [FAQ](cli-faq.md) - [maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights diff --git a/docs/en-us/user_manual_for_cli/cli-usage.md b/docs/en-us/manual/cli/usage.md similarity index 98% rename from docs/en-us/user_manual_for_cli/cli-usage.md rename to docs/en-us/manual/cli/usage.md index ec1513d633..a55a75ee54 100644 --- a/docs/en-us/user_manual_for_cli/cli-usage.md +++ b/docs/en-us/manual/cli/usage.md @@ -3,7 +3,7 @@ order: 3 icon: material-symbols:summarize --- -# Use maa-cli +# Usage maa-cli is a command-line interface for MaaCore that automates tasks in the game Arknights. Additionally, maa-cli can manage MaaCore. @@ -85,7 +85,7 @@ Except for the above subcommands, maa-cli also provides other subcommands: More command usage can be viewed by `maa help`, and the usage of specific commands can be viewed by `maa help `. -[config-core]: cli-config.md#MaaCore-related-configurations -[custom-task]: cli-config.md#custom-task +[config-core]: ./config.md#maacore-related-configurations +[custom-task]: ./config.md#custom-tasks diff --git a/docs/en-us/manual/connection.md b/docs/en-us/manual/connection.md new file mode 100644 index 0000000000..eacbfcac97 --- /dev/null +++ b/docs/en-us/manual/connection.md @@ -0,0 +1,184 @@ +--- +order: 3 +icon: mdi:plug +--- + +# Connection + +:::note +For information about physical machines, please also check [Android Physical Devices](./device/android.md). +::: + +## ADB Path + +:::info Technical Details +Automatic detection uses the emulator's ADB, but sometimes problems occur with automatic detection, then manual settings are required. +`Replace ADB` is to download the ADB provided by Google and then replace it. If you set up Google's ADB yourself, you can do it once and for all. +::: + +### Use the ADB provided by the emulator + +Go to the simulator installation path. In Windows, when the simulator is running, right-click the process in the Task Manager and click `Open the location of the file`. + +There should be an exe file with `adb` in its name in the top-level or lower directory. You can search and select it. + +:::details Examples +`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe` +::: + +### Use ADB provided by Google + +[Click](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) to download and unzip, then select `adb.exe`. + +We are recommended to extract it directly to the MAA folder, so that you can directly fill in `.\platform-tools\adb.exe` in the ADB path, and move it with MAA. + +## Connection Address + +::: tip +The connection address of the emulator running on this computer should be `127.0.0.1:` 或 `emulator-`。 +::: + +### Obtain Port Number + +#### Simulator documents and ports for reference + +:::warning +TODO: replace these Chinese emulators links with English ones +::: + +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` +- [Memu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503` +- [Nox](https://support.yeshen.com/zh-CN/qt/ml) `62001` + +For other simulators, please check [Zhao Qingqing’s blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html). + +#### Multiple Emulators + +- MuMu 12: The running emulator ports can be found in the upper right corner of the MultiPlayer. +- Bluestacks 5: The current emulator ports can be viewed in the emulator settings. +- _TODO_ + +#### Alternatives + +- Method 1: Use the adb command to view the running port directly + + 1. Launch **one** emulator and make sure no other Android devices are connected to this computer. + 2. Launch a terminal in the folder where the adb executable is. + 3. Execute the following command. + + ```sh + # Windows CMD + adb devices + # Windows PowerShell + .\adb devices + ``` + + An example of output: + + ```text + List of devices attached + 127.0.0.1: device + emulator- device + ``` + + Use `127.0.0.1:` or `emulator-` as the connection address. + +- Method 2: Find established adb connections + + 1. Do method 1. + 2. Press `Win+S` to open the search bar, type `Resource Monitor` and open it. + 3. Switch to the `Network` tab and look for the emulator process name in the name column of `Listening Port`, such as `HD-Player.exe`. + 4. Make a note of all listening ports for the emulator process. + 5. Find `adb.exe` in the name column of `TCP connection`. The port in the remote port column that is consistent with the simulator listening port is the simulator debugging port. + +### Automatically Start Multiple Emulators + +- If you need to operate multiple emulators simultaneously, you can copy the MAA folder multiple times, and use **different MAAs**, **the same adb.exe**, and **different connection addresses** to connect. +- Taking `BlueStacks International Version` as an example, two ways to start multiple emulators are introduced. + + - Perform multiple operations by attaching commands to `HD-Player.exe`. + + 1. Start the corresponding emulator separately. + 2. Open the Task Manager, find the corresponding emulator process, go to the Details tab, right-click the column above, click `Select Columns`, and check `Command Line`. + 3. In the newly added `Command Line` column, find the content after `"...\Bluestacks_nxt\HD-Player.exe"`. + 4. Fill in the found content, similar to `--instance Nougat32`, in `Startup Settings` - `Additional Commands`. + + Note: After the operation is completed, it is recommended to hide the `Command Line` column opened in `Step 2` to prevent freezing. + + - Example: + + ```bash + Multi-instance 1: + Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe + Additional Commands: --instance Nougat32 --cmd launchApp --package "com.hypergryph.arknights" + Multi-instance 2: + Emulator Path: C:\Program Files\BlueStacks_nxt\HD-Player.exe + Additional Commands: --instance Nougat32_1 --cmd launchApp --package "com.hypergryph.arknights.bilibili" + ``` + + The `--cmd launchApp --package` part starts and automatically runs the specified package name application after startup, which can be changed as needed. + + - Perform multi-instance operation by using the shortcut of emulators or apps. + + 1. Open the multi-instance manager and add the corresponding emulator's shortcut. + 2. Fill in the path of the emulator shortcut in `Startup Settings` - `Emulator Path`. + + Note: Some emulators support creating app shortcuts, which can directly launch the emulator and open Arknights with the app shortcut. + + - Example: + + ```bash + Multi-instance 1: + Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 1.lnk + Multi-instance 2: + Emulator Path: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\Multi-instance 2 - Arknights.lnk + ``` + + If using `Emulator Path` for multi-instance operation, it is recommended to leave `Additional Commands` in `Startup Settings` empty. + +### The port number of BlueStack emulator Hyper-V is different every time it is started + +:::warning +TODO: replace these Chinese emulators links with English ones +::: + +## Connection Present + +You need to select the configuration of the simulator you are using. If it is not in the list, select General Mode. If General Mode is not available please try and select any of the other available presents. + +For specific differences, you can read the [source code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/4f1ef65a9c217c414f52461e88e9705115b5c338/resource/config.json#L74). + +### MuMu Screenshot Enhanced Mode + +You need to use the official China MuMu 12 3.8.13 and later versions, and close the background keep alive. Ark Edition and Global Edition are not supported now. + +1. Settings → Connection Settings, tick `Enable MuMu Screenshot Enhanced Mode`. + +2. `MuMu Emulator Path` Fill in the path to the `MuMuPlayer-12.0` folder, e.g. `C:`Program Files\Netease\MuMuPlayer-12.0`. + +3. `Instance Number` Fill in the serial number of the corresponding emulator in MuMu Multiplayer, e.g. `0` for Main Multiplayer. + +4. `Instance Screen` Fill in `0`. + +#### About background keep alive + +It is recommended to turn it off, at this time the instance screen is always `0`. + +When it is on, the order of MuMu emulator tabs should be the serial number of the instance screen, e.g. `0` for emulator desktop, `1` for Arknights client. + +Adaptation for backend live is very imperfect, there are always all kinds of inexplicable problems, it is very not recommended. + +## Touch Mode + +1. [Minitouch](https://github.com/DeviceFarmer/minitouch):An Android touch eventer written in C uses `evdev` to provide a Socket interface for external programs to trigger touch events and gestures. Starting with Android 10, Minitouch no longer works when SELinux is `Enforcing`.[Source](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up) +2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):A Java-based reimplementation of Minitouch by MAA, which uses Android's `InputDevice`, and added additional features. Availability of higher versions of Android is yet to be tested. ~~Help us do some testing~~ +3. Adb Input:Directly call ADB to use Android's `input` command to perform touch operations. It has the highest compatibility and the slowest speed. + +## ADB Lite + +The ADB Client independently implemented by MAA can avoid continuously opening multiple ADB processes and reduce performance loss compared to the original ADB, but some screenshot methods are not available. + +It is recommended to enable it, but the specific advantages and disadvantages need feedback. ~~Help us do some testing x2~~ diff --git a/docs/en-us/manual/device/README.md b/docs/en-us/manual/device/README.md new file mode 100644 index 0000000000..8f2c57b562 --- /dev/null +++ b/docs/en-us/manual/device/README.md @@ -0,0 +1,9 @@ +--- +title: Emulator and Device Supports +icon: mingcute:laptop-fill +index: false +dir: + order: 5 +--- + + diff --git a/docs/en-us/manual/device/android.md b/docs/en-us/manual/device/android.md new file mode 100644 index 0000000000..b483c85d61 --- /dev/null +++ b/docs/en-us/manual/device/android.md @@ -0,0 +1,180 @@ +--- +order: 4 +icon: mingcute:android-fill +--- + +# Android Physical Device + +::: info Note + +0. Please also check [Connection](../connection.md). +1. Starting from Android 10, Minitouch is no longer available when SELinux is in `Enforcing` mode, please switch to other touch modes or switch SELinux **temporary** to `Permissive` mode. +2. Due to the extreme complexity of the Android ecosystem, try to change the `Connection Configuration` in MAA `Settings` - `Connection` to `General Mode` or `Compatibility Mode` or `2nd Resolution` or `General Mode (Blocked exception output)` until one of the modes is working properly. +3. Since MAA only supports `16:9` ratio resolutions, devices with non-`16:9` or `9:16` screen ratios will need to be forced to change their resolution, which includes most modern devices. If the connected device has a native `16:9` or `9:16` screen resolution ratio, you can skip the `Change resolution' section. 4. +4. Switch your device's navigation method to something other than `Full Screen Gestures`, such as the `Classic Navigation Keys` to avoid misuse. +5. Please adjust the `Shaped Screen UI Adaptation` section in the in-game settings to 0 to avoid task errors. +::: + +::: tip +Typical `16:9` ratio resolutions are `3840*2160` (4K), `2560*1440` (2K), `1920*1080` (1080P), `1280*720` (720P). +::: + +## Download, run adb debugging tool and connect the device + +1. Download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it. +2. Open the extracted folder, clear the address bar and type `cmd` and enter. 3. +3. Type `adb` in the command prompt window that pops up, if it gives you a lot of help text in English, it will run successfully. +4. Turn on `USB debugging` on your mobile phone, this may be different for each brand of mobile phone, so please use a search engine. Manufacturers may provide additional options for USB debugging, such as `USB Installation` and `USB Debugging (Security Settings)` in MIUI, please enable them at the same time. +5. Connect your phone to your computer via data cable and enter the following command in the command prompt window you just got. + + ```bash + adb devices + ``` + +- If executed successfully, it will give you a message that the ``USB debugging`` device is connected. + + - Example of a successful connection: + + ```bash + List of devices attached + VFNDU1682100xxxx device + ``` + + - **The alphanumeric combination in front of `device` is the serial number of the device, which also serves as the `connection address` of the MAA.** + +- For modern Android devices to perform `USB debugging`, you need to click the pop-up window on the debugged device to authorise it, if not authorised, the example is as follows: + + ```bash + List of devices attached + VFNDU1682100xxxx unauthorized + Unauthorised + ``` + +- If you are prompted for unauthorised or the serial number of the device shows `offline`, you need to reboot the device and computer and try again. If the problem is still not solved, you can delete the `.android` folder under the current user's personal folder and reboot again to retry, please search for the exact location. + +## Change resolution + +::: tip +Mobile phone screen resolution is `short side*long side`, not `long side*short side` of computer monitor. Please determine the exact value according to your target device. +::: + +- If there is only one device within the device list above, you can change/restore the resolution directly by running the following command. + + ```bash + # View current resolution + adb shell wm size + # Restore the default resolution + adb shell wm size reset + + # Change resolution to 720p + adb shell wm size 720x1280 + # Change resolution to 1080p + adb shell wm size 1080x1920 + ``` + +- If there are multiple devices, you need to add the parameter `-s ` between `adb` and `shell`, as shown in the following example. + + ```bash + # View current resolution + adb -s VFNDU1682100xxxx shell wm size + # Restore the default resolution + adb -s VFNDU1682100xxxx shell wm size reset + + # Change resolution to 720p + adb -s VFNDU1682100xxxx shell wm size 720x1280 + # Change resolution to 1080p + adb -s VFNDU1682100xxxx shell wm size 1080x1920 + ``` + +- Some applications with irregular design may still have wrong layout after restoring the resolution, usually restarting the corresponding application or device can solve the problem. + +::: danger Note +It is strongly recommended to restore the resolution **before** restarting the device next time, otherwise it may lead to unpredictable consequences depending on the device, ~~including but not limited to chaotic layout, touch misalignment, application flashback, unlocking, etc~~. +::: + +## Automating resolution changes + +1. Create two new text files in the MAA directory and fill them with the following contents. + + ```bash + # Adjust resolution to 1080p + adb -s shell wm size 1080x1920 + # Reduce screen brightness (optional) + adb -s shell settings put system screen_brightness 1 + ``` + + ```bash + # Restore resolution + adb -s shell wm size reset + # Increase screen brightness (optional) + adb -s shell settings put system screen_brightness 20 + # Return to desktop (optional) + adb -s shell input keyevent 3 + # Lock screen (optional) + adb -s shell input keyevent 26 + ``` + +2. Rename the first file to `startup.bat` and the second file to `finish.bat`. + + - If you don't see the double confirmation dialogue box for changing extension after renaming, and the file icon doesn't change, please search for ‘How to display file extension in Windows’. 3. + +3. In `Settings` - `Connection` - `Starts with Script` and `Ends with Script` of MAA, fill in `startup.bat` and `finish.bat` respectively. + +## Connecting to MAA + +### Wired connection + +::: tip +A wired connection does not require any IP address or port, only the device serial number given by `adb devices`. +::: + +1. Fill in the MAA `Settings` - `Connection` - `Connection address` with the serial number of the target device obtained above. +2. Link Start! + +### Wireless Connection + +- Make sure that the device and the computer are on the same LAN and can communicate with each other. Settings such as `AP Isolation`, `Guest Network`, etc. can prevent communication between devices, please refer to the documentation of the corresponding router. +- Wireless debugging is disabled after a device reboot and needs to be reset. + +#### To open a wireless port using `adb tcpip` + +1. Enable wireless debugging by entering the following command in the command prompt window you just opened. + + ```bash + adb tcpip 5555 + # Add the -s parameter to specify the serial number if multiple devices are present. + ``` + +2. View the device IP address. + + - Go to `Settings` - `WLAN` on your mobile phone and click on the currently connected wireless network to view the IP address. + - The IP address is different for different brands of devices, so please find it yourself. + +3. Put `:5555` into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`. +4. Link Start! + +#### Use `adb pair` to open the wireless port + +::: tip +`adb pair` wireless pairing, i.e. connecting after pairing using `wireless debugging` in Developer Options on Android 11 and newer, avoids the need for a wired connection compared to `adb tcpip`. +::: + +1. Go to your phone's developer options, tap `Wireless debugging` and turn it on, tap OK, tap `Pair device using pairing code` and don't close the pop-up window that appears until pairing is complete. 2. + +2. To perform pairing. + + 1. At the command prompt, type `adb pair ` and enter. + 2. Type `` and enter. + 3. The window appears with something like `Successfully paired to ` and the pop-up window on the device disappears automatically, and the computer name appears at the bottom in the paired devices. + +3. Put the `` given on the current device's screen into MAA `Settings` - `Connection` - `Connection Address`, e.g. `192.168.1.2:11451`, **must be different from the one you have just put in**. +4. Link Start! + +#### Enable the wireless port with root privileges + +~~If you have access to root, why do you need to read this document~~ + +1. Download, install [WADB](https://github.com/RikkaApps/WADB/releases) and grant it root privileges. 2. +2. Open WADB and start wireless adb. 3. +3. Put the IP address and port provided by WADB into MAA `Settings` - `Connection` - `Connection Address`, such as `192.168.1.2:5555`. +4. Link Start! diff --git a/docs/en-us/1.5-EMULATOR_SUPPORTS_FOR_LINUX.md b/docs/en-us/manual/device/linux.md similarity index 90% rename from docs/en-us/1.5-EMULATOR_SUPPORTS_FOR_LINUX.md rename to docs/en-us/manual/device/linux.md index ccf727e989..d59f232d09 100644 --- a/docs/en-us/1.5-EMULATOR_SUPPORTS_FOR_LINUX.md +++ b/docs/en-us/manual/device/linux.md @@ -1,4 +1,9 @@ -# Emulator Support for Linux +--- +order: 3 +icon: teenyicons:linux-alt-solid +--- + +# Linux Emulator and Container ## Preparation @@ -16,7 +21,7 @@ The MAA WPF GUI can currently be run using Wine. 1. Go to the [.NET Release Page](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) to download and install the .NET **Desktop** Runtime for Windows. -3. Download MAA for Windows, unzip it and run `wine MAA.exe`. +2. Download MAA for Windows, unzip it and run `wine MAA.exe`. ::: info Note You need to set the ADB path to [`adb.exe` for Windows](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) in the connection settings. @@ -30,7 +35,7 @@ Download the [MAA Wine Bridge](https://github.com/MaaAssistantArknights/MaaAssis Running `MAA.exe` through Wine will load the Linux native libraries. -::: info Note +::: info Note To use Linux native MaaCore, you need to set the ADB path to Linux native ADB in the connection settings. ::: @@ -42,12 +47,12 @@ Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in #### Known Issues -* Wine DirectWrite forces hinting to be enabled and does not pass DPI to FreeType, resulting in poor font display. -* When not using native desktop notifications, the popup notification will grab the system-wide mouse focus, making it impossible to operate other windows. This can be mitigated by enabling virtual desktop mode via `winecfg`, or disabling desktop notifications. -* Wine-staging users need to disable the `Hide Wine Version` option in `winecfg` in order for MAA to properly detect the Wine environment. -* Wine's Light theme causes some text colours in WPF to be abnormal, it is recommended to switch to no theme (Windows Classic theme) in `winecfg`. -* Wine uses the old XEmbed tray icon, which may not work properly under GNOME. -* Auto-update is not supported when using Linux native MaaCore (~~Updater: I think I should download a Windows version~~). +- Wine DirectWrite forces hinting to be enabled and does not pass DPI to FreeType, resulting in poor font display. +- When not using native desktop notifications, the popup notification will grab the system-wide mouse focus, making it impossible to operate other windows. This can be mitigated by enabling virtual desktop mode via `winecfg`, or disabling desktop notifications. +- Wine-staging users need to disable the `Hide Wine Version` option in `winecfg` in order for MAA to properly detect the Wine environment. +- Wine's Light theme causes some text colours in WPF to be abnormal, it is recommended to switch to no theme (Windows Classic theme) in `winecfg`. +- Wine uses the old XEmbed tray icon, which may not work properly under GNOME. +- Auto-update is not supported when using Linux native MaaCore (~~Updater: I think I should download a Windows version~~). ### Use Python @@ -62,7 +67,7 @@ Enable it by placing `MaaDesktopIntegration.so` generated by MAA Wine Bridge in > **Note** > The precompiled version is built in a relatively new distro (Ubuntu 22.04), you may run into binary compatability problem, if libstdc++ in your environment is too old. -> Where you should reference to [Linux tutorial](./2.1-LINUX_TUTORIAL.md), or run inside a container instead. +> Where you should reference to [Linux tutorial](../../develop/linux-tutorial.md), or run inside a container instead. #### 2. `adb` Settings diff --git a/docs/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC.md b/docs/en-us/manual/device/macos.md similarity index 95% rename from docs/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC.md rename to docs/en-us/manual/device/macos.md index 38c78390d3..c945b54397 100644 --- a/docs/en-us/1.4-EMULATOR_SUPPORTS_FOR_MAC.md +++ b/docs/en-us/manual/device/macos.md @@ -1,4 +1,9 @@ -# Emulator Support for Mac +--- +order: 2 +icon: basil:apple-solid +--- + +# Mac Emulator ## Apple Silicon Chips @@ -40,7 +45,7 @@ Fully compatible. Need to turn on `Settings` - `Advanced` - `Android Debug Bridg ### ✅ [Nox](https://www.yeshen.com/) -Fully compatible. MAAX cannot auto-detect adb port now, so you need to fill in adb port `127.0.0.1:62001` in MAA `Setting` - `Connect Setting`. Notice that port is not default `5555` , you can get more info in [Common ADB ports for popular Android emulators](1.2-FAQ.md#common-adb-ports-for-popular-android-emulators) +Fully compatible. MAAX cannot auto-detect adb port now, so you need to fill in adb port `127.0.0.1:62001` in MAA `Setting` - `Connect Setting`. Notice that port is not default `5555` , you can get more info in [Common ADB ports for popular Android emulators](../faq.md#common-adb-ports-for-popular-android-emulators) P.S.: Nox adb bin file path in Mac is `/Applications/NoxAppPlayer.app/Contents/MacOS/adb` , in parent path `MacOS` you are able to use `adb devices` command to get adb path. diff --git a/docs/en-us/manual/device/windows.md b/docs/en-us/manual/device/windows.md new file mode 100644 index 0000000000..a772e48435 --- /dev/null +++ b/docs/en-us/manual/device/windows.md @@ -0,0 +1,112 @@ +--- +order: 1 +icon: ri:windows-fill +--- + +# Windows Emulator + +:::warning +TODO: replace these Chinese emulators links with English ones +::: + +The following emulators are displayed randomly in no particular order. + + + +## ✅ Fully supported + +
+ +## ⚠️ Partially supported + +
+ +## 🚫 Unsupported + +
diff --git a/docs/en-us/1.2-FAQ.md b/docs/en-us/manual/faq.md similarity index 59% rename from docs/en-us/1.2-FAQ.md rename to docs/en-us/manual/faq.md index 06ae536793..20e1b847e0 100644 --- a/docs/en-us/1.2-FAQ.md +++ b/docs/en-us/manual/faq.md @@ -1,7 +1,13 @@ -# Frequently Asked Questions +--- +order: 4 +icon: ph:question-fill +--- + +# FAQs ::: warning MAA has been updated to .NET 8 in version 5.0. For end users, the impact is as follows: + 1. MAA now requires the .NET 8 runtime library, which will automatically prompt the user to install it when starting. If the installation fails, please read the following and download the installation package to install manually. 2. MAA will no longer be falsely reported by Windows Defender. 3. [.NET 8 does not support Windows 7/8/8.1](https://github.com/dotnet/core/issues/7556), so MAA is also no longer supported, even though it can still run normally. @@ -10,28 +16,32 @@ MAA has been updated to .NET 8 in version 5.0. For end users, the impact is as f ## The program crashes immediately when I try to run it -### Possible cause 0: incomplete file downloaded +### Incomplete file downloaded - If you don't have a complete package of this software already, please DO NOT download the zip files marked with `OTA` in the file name, which are for incremental update and shall not be used alone. In most cases, Windows users should download `MAA-vX.X.X-win-x64.zip`. +- In most cases, you need x64 operating system and x64 variant of MAA, i.e. `MAA-*-win-x64.zip`. There are no support for 32-bit (x86) operating systems. - If the application does not run properly after an automatic update, it may be due to some bugs within the autoupdater. Please try reinstalling the application and migrating `config` directory from the old install to the new install. -### Possible cause 1: architecture mismatch +### Missing runtime libraries -- In most cases, you need x64 operating system and x64 variant of MAA, i.e. `MAA-*-win-x64.zip`. There are no support for 32-bit (x86) operating systems. +Only official sources are listed here. We can't gurantee whether some random third-party all-in-one pack can work. -### Possible cause 2: missing runtime libraries +- Please try installing [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) and [.NET 8.0.6](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=x86-,.NET%20Desktop%20Runtime,-8.0.6), then restart computer. + Windows 10 or 11 users can also install using Winget by running the following command in the terminal. -> Only official sources listed here. We can't gurantee whether some random third-party all-in-one pack can work. + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` -- Please try installing [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) and [.NET8](https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-8.0.1-windows-x64-installer), and restart your computer and the application. +- If MAA cannot run after an update, it may be caused by the runtime too. You can also try to install or update the runtime again. #### Notes on Windows N/KN -- If you are using Windows 8/8.1/10/11 N/KN(Europe/Korea)editions,you also need [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。 +- If you are using Windows 8/8.1/10/11 N/KN(Europe/Korea)editions, you also need [Media Feature Pack](https://support.microsoft.com/en-us/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。 #### Notes on Windows 7 -- If you are using Windows 7,you need to check following updates before installing runtime libraries: +- If you are using Windows 7, you need to check following updates before installing runtime libraries: 1. [Windows 7 Service Pack 1](https://support.microsoft.com/en-us/windows/b3da2c0f-cdb6-0572-8596-bab972897f61) 2. SHA-2 code-signing update: @@ -39,75 +49,41 @@ MAA has been updated to .NET 8 in version 5.0. For end users, the impact is as f - KB4490628:[link 1](https://catalog.s.download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu), [link 2](http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu) 3. Platform Update for Windows 7 (DXGI 1.2 & Direct3D 11.1, KB2670838):[link 1](https://catalog.s.download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu), [link 2](http://download.windowsupdate.com/msdownload/update/software/ftpk/2013/02/windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu) -Mitigation measures for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238) +##### Mitigation measures for .NET 8 applications running abnormally on Windows 7 [#8238](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/8238) - 1. Open `Computer`, right-click a blank space, click Properties, click `Advanced System Settings` on the left, and click `Environment Variables`. - 2. Create a new system variable with variable name `DOTNET_EnableWriteXorExecute` and variable value `0`. - 3. Restart the computer. +1. Open `Computer`, right-click a blank space, click Properties, click `Advanced System Settings` on the left, and click `Environment Variables`. +2. Create a new system variable with variable name `DOTNET_EnableWriteXorExecute` and variable value `0`. +3. Restart the computer. We cannot guarantee compatibility of future versions with Windows 7, ~~it's all Microsoft's fault~~. -#### Alternative approach: install development tools - -- Install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) to configure a complete development environment (only .NET and C++ environments are required). - -- **Please note that you may need about 10GB disk space to install these tools, so make sure that your free space is enough.** - -### Possible cause 3: broken system +### System broken - Installation of runtime libraries above requires the Component-Based Servicing (CBS) infrastructure (i.e. TrustedInstaller/TiWorker, WinSxS). Installation may fail if CBS is broken. -- We have no suggestion other than reinstalling Windows. Please avoid using so-called "lite" editions. +- We have no suggestion other than reinstalling Windows. Please avoid using so-called "lite" editions, or some old versions of Windows from thousands of years ago (e.g. 1809). ## Connection error -- Tips: please refer to the [List of the Supported Emulators](1.3-EMULATOR_SUPPORTS.md) section to ensure that the emulator you are using is officially supported and that your configuration is correct. +- Tips: please refer to the [List of the Supported Emulators](./device/) section to ensure that the emulator you are using is officially supported and that your configuration is correct. - If you are using softwares such as a game accelerator, please close the softwares, RESTART your computer and try again. - Please check your decompression software - in some cases, using uncommon software such as `7z` or _other niche decompression software_ may cause errors in Minitouch related files. -### Approach 1: make sure ADB and address are correct +### Make sure ADB and address are correct -- Make sure that MAA `Settings` - `Connection Settings` - `adb path` is automatically filled in. If so, skip to the next step. Otherwise: - - Option 1: find the installation path of your emulator, where there may be a file named `adb.exe` (or something similar, e.g. `nox_adb.exe`, `HD-adb.exe`, `adb_server.exe`, etc., any EXE files with `adb`). Simply choose the file in the connection settings of MAA! - - Option 2: download [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) and unzip it. Select the `adb.exe` file. +Check [Connection](./connection.md) -- Confirm that your connection address is filled in correctly. The ADB address is usually like `127.0.0.1:5555`, depending on the emulators (except Leidian emulator). - -#### Common ADB ports for popular Android emulators - -- Single instance / first instance in multi-instance mode - - For single instance mode, please refer to the documentation for each emulator and the blog post by NetEase senior game development engineer @Zhao Qingqing to find the default ADB ports for common Android emulators: - - |Emulator|Default ADB port| - |-|:-:| - |NetEase MuMu emulator 6/X|7555| - |NetEase MuMu emulator 12|16384| - |NoxPlayer emulator|62001| - |BlueStacks emulator|5555| - |LDPlayer emulator 9|5555 / emulator-5554| - - You can connect to emulators with purely numeric ports using `127.0.0.1:[port]`. LDPlayer emulator has its own wrapper, so you can also use `emulator-5554` to connect. - - If you need to modify the connection settings in the `Settings` - `Connection Settings` - `Connection Address` on Windows or Mac, please refer to the table above. - -- Multi-instance mode - - - For NoxPlayer emulator, the port of the first device is `62001`, and the ports for subsequent devices start from `62025`. - - For NetEase MuMu emulator 12, the ADB ports for multi-instance mode are irregular. To find the ADB port for a running emulator, launch the emulator from MuMu Multi-instance Manager 12, then click on the ADB icon in the upper-right corner. - - For LDPlayer emulator 9, the local ADB port starts from `5555`, and subsequent ports increment by 2. For example, the second emulator has a local port of `5557`. - -### Approach 2: change emulator +### Change emulator Change to another emulator, such as [Bluestacks international version](https://www.bluestacks.com/download.html) Nougat 64 bit. _After installation of Bluestack, you need to enable `Android Debug Bridge` in the settings._ -### Approach 3: close extra adb processes +### Close extra adb processes - Close MAA and check for any adb processes in the task manager. If there are any, please close them and retry. -### Approach 4: restart computer +### Restart computer Try restarting your computer. @@ -115,7 +91,7 @@ Try restarting your computer. The adb version packaged with some emulators is too old and does not support minitouch. Please open MAA with administrator priviledge and navigate to `Settings` - `Connection Settings` - `Forced Replace ADB`. (It is recommended to close the emulator and restart MAA before proceeding, otherwise the replacement may not be sussessful.) -The emulator will reset the ADB version after updating. If the problems occurs again, please repeat the above steps. Or you can try to use the [custom connection](1.1-USER_MANUAL.md#custom-connection) method to solve it once and for all. +The emulator will reset the ADB version after updating. If the problems occurs again, please repeat the above steps. Or you can try to use the [custom connection](./connection.md) method to solve it once and for all. If it still doesn't work, please retry after switching to `MaaTouch` from `Minitouch` in `Settings` - `Connection Settings`. @@ -135,7 +111,7 @@ If it still doesn't work, please retry after switching to `MaaTouch` from `Minit ## The download speed is slow and the mirror site is not accessible -1. Go to [Download](../../README.md#Download) to get the link (non-mirror) to you want to download. +1. Go to [Download](../readme.md) to get the link (non-mirror) to you want to download. 2. Find the link to your file you need to download. 3. Right-click it and select `Copy link address`. 4. Paste the link into your browser. diff --git a/docs/en-us/manual/introduction/README.md b/docs/en-us/manual/introduction/README.md new file mode 100644 index 0000000000..dbfd248054 --- /dev/null +++ b/docs/en-us/manual/introduction/README.md @@ -0,0 +1,9 @@ +--- +title: Introduction +icon: mdi:information-outline +index: false +dir: + order: 2 +--- + + diff --git a/docs/en-us/manual/introduction/combat.md b/docs/en-us/manual/introduction/combat.md new file mode 100644 index 0000000000..0bbcc90e8e --- /dev/null +++ b/docs/en-us/manual/introduction/combat.md @@ -0,0 +1,101 @@ +--- +order: 3 +--- + +# Combat + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## General Settings + +- Fight options include `Use Sanity Potion + Use Originium`, `Perform Battles` and `Material`, you can specific any of them. The fight tasks stops once one of the specifications is met. + + - `Use Sanity Potion` specifies the number of sanity potions to use at most. Multiple medicines may be used at a time. + - `Use Originium` specifies the number of Originium to use at most. It is used one at a time. The Origin Stone will not be used when there is Sanity Potion in depot. + - `Perform Battles` specifies the number of battles to perform at most. + - `Material` specifies the number of materials to collect. + +- `Material` and `Stage` are independent options. `Material` is not going to automatically navigate to the the stage for the specified material. You still need to manually configure the stage option. +- `Use Originium` will only be used after `Use Sanity Option`, because MAA will only use Originium to replenish sanity when there are no Sanity Potions left. Therefore, after checking `Use Originium`, MAA will lock the number of `Use Sanity Potion` to 999, making sure to consume all the Sanity Potions to avoid skipping the `Use Originium` judgment. + +::: details Example +| Use Sanity Potion | Use Originium | Perform Battles | Material | Result | +| :------: | :----: | :------: | :------: | -------------------------------------------------------------------------------------------------------------------------------------- | +| | | | | 刷完现有理智即结束。 | +| 2 | | | | 先刷完现有理智,然后吃一次理智药,一共吃 `2` 次,刷完理智后结束。 | +| _999_ | 2 | | | 先刷完现有理智,并吃光理智药后,再碎石,一共碎 `2` 次,刷完理智后结束。 | +| | | 2 | | 刷 `2` 次选择的关卡即结束。 | +| | | | 2 | 掉落统计刷到 `2` 个指定的材料即结束。 | +| 2 | | 4 | | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。 | +| 2 | | | 4 | 在最多吃 `2` 次理智药的情况下,掉落统计刷到 `4` 个指定的材料即结束。 | +| 2 | | 4 | 8 | 在最多吃 `2` 次理智药的情况下,刷 `4` 次选择的关卡即结束。但如果在没刷完 `4` 次之前就获得了 `8` 个指定材料,则会提前结束。 | +| _999_ | 4 | 8 | 16 | 在最多吃光理智药并碎 `4` 次石头的情况下,刷 `8` 次选择的关卡即结束。但如果在没刷完 `8` 次之前就获得了 `16` 个指定材料,则会提前结束。 | +| | 2 | | | 先刷完现有理智,如果仓库中有理智药则结束,如果没有理智药则碎 `2` 次石,刷完理智后结束。_非 MAA GUI 行为_ | +| 2 | 4 | | | 先刷完现有理智,如果吃完 `2` 次理智药后还有理智药,则结束;如果吃完 ≤`2` 次理智药后没有理智药了,则继续碎 `4` 次石头,刷完理智后结束。_非 MAA GUI 行为_ | + +::: + +### Operations + +- If the stage you need is not available in the selection, please choose `Cur/Last` in MAA and manually locate the stage in the game. + Make sure the screen stays on the stage detail page with the **Start** and **Auto-Deploy** buttons available. +- If you are not on this page, `Cur/Last` will automatically navigate to the last stage played according to the record in the lower right corner of the terminal homepage. +- You can also enable `Manual entry of stage names` in `Combat` - `Advanced` and enter the stage number manually. Currently supported stages include: + - All main theme stages, where `-NORMAL` or `-HARD` can be added at the end to switch between standard and challenge modes. + - LMD stages and Battle Record stages 5/6. The input must be `CE-6` or `LS-6` even if you have not unlocked it yet. In that case, the program will automatically switch to corresponding stage 5. + - Skill Summary, Shop Voucher, and Carbon Stages 5. The input also must be `CA-5`, `AP-5`, and `SK-5` respectively. + - Chip stages. The input must be complete with stage number, such as `PR-A-1`. + - Annihilation. The input must be `Annihilation`. + - Some side story stages, now contains `OF-1`, `OF-F3` and `GT-5`. + - The last three stages of the current SS event. This is available after downloading updates automatically from the [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) when the event is on. Prompt will be shown in the main page when this is available. + - For the SS event rerun, you can enter `SSReopen-XX` to clear XX-1 ~ XX-9 levels once. Example `SSReopen-IC`. + +::: details Example +![Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/56174894/e94a0842-a42f-449d-9f2e-f2339175cbdd) +::: + +### Annihilation Mode + +- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。 +- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。 +- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。 + +## Advanced Settings + +### Alternative Stage + +备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。 + +1. 例子:关卡选择 `龙门币-6/5`,备选选择 `1-7` 和 `经验-6/5`: + - 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` 和 `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错。 + - 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错。 + - 由于 `经验-6/5` 前存在常驻关卡 `1-7`,在这种情况下,MAA 永远也不会前往 `经验-6/5` 战斗。 +2. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。 + +### Remaining Sanity Stage + +在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。 + +- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。 +- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。 +- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。 +- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。 + +### Series + +- MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。 +- 若设置的次数过多但理智不足,MAA 会直接进行 `吃理智药` 或 `吃源石` 操作,并继续尝试连战。 +- 若未设置 `吃理智药` 或 `吃源石`,MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` ,MAA 会直接开始刷 `剩余理智` 关卡。 + +### Drop Recognition + +- Material drops are automatically recognized and printed to the program log. The data also gets uploaded to [Penguin Stats](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/). +- You can manually set your Penguin Stats user ID in the settings. + +## Abnormal Detection + +- `Auto-Deploy` will be automatically selected if not already in case you forget to do so. +- After disconnection or flashing at 4 am, it will automatically reconnect and continue to play the last stage selected in the game. If you need to cross the day, please check the last stage selection. +- A level up situation can be automatically handled as well as a failed delegation in which case this time of the operation will be given up. diff --git a/docs/en-us/manual/introduction/copilot.md b/docs/en-us/manual/introduction/copilot.md new file mode 100644 index 0000000000..f0918fdcff --- /dev/null +++ b/docs/en-us/manual/introduction/copilot.md @@ -0,0 +1,42 @@ +--- +order: 9 +--- + +# Copilot + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +Welcome to share your tasks with [prts.plus](https://prts.plus)! + +## Load Tasks + +支持任意 `可编队关卡` 和 `保全派驻` 模式的自动战斗。 + +- Please run it on the screen with `Start Operation` button. + 之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件` 或 `填写作业站神秘代码` 即可导入作业。 +- `Auto Squad` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。 + - 可根据个人需要(例如需要使用 `好友助战` 时)取消 `Auto Squad`,手动编队后开始。 + - 可根据任务需要为自动编队 `Add custom operators` 和 `Add low-trust operators`。 + - 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。 + - 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。 +- 可设置 `Loop Times`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。 +- 可使用 `Battle list` 功能进行同一区域关卡的自动连续战斗。 + - Battle list 下方三个按钮从左到右依次为 `批量导入`、`添加关卡`、`清空关卡`。 + `添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡, + - 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。 + - 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。 + - 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。 +- Remember to like the tasks that you think helpful! + ![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) + +## Create Tasks + +- 请使用 [作业编辑器](https://prts.plus/create) 制作. A tool for creating tasks is provided in the directory of MAA. See also: [Copilot Schema](../../protocol/copilot-schema.md) for help. +- Get map coordinates: + - 在作业编辑器中填写关卡后,左下角会自动加载可拖动缩放的坐标地图,可点选设置当前干员位置。 + - Start an operation after filling in `stage_name`. A file under `debug\map` named `map.png` will be generated for your reference. + - Refer to [PRTS.map](https://map.ark-nights.com/), with the `coordinates` set to `MAA` mode. +- Drill plan is available for testing. +- It is recommended to write your own name, video walkthrough URL, or other things that you think helpful in the description. diff --git a/docs/en-us/manual/introduction/credit.md b/docs/en-us/manual/introduction/credit.md new file mode 100644 index 0000000000..216726ad92 --- /dev/null +++ b/docs/en-us/manual/introduction/credit.md @@ -0,0 +1,19 @@ +--- +order: 5 +--- + +# Credit Store + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +- Automatically visit friends to obtain credit points 并前往信用交易所购物. +- With the help of Warfarin's credit: + - Use a support operator to clear the `OF-1` stage in Heart of Surging Flame. If the stage is not unlocked, please do not select this option. + - It does not take effect when the stage selection is set to `Cur/Last`. + +## Advanced Settings + +- Whitelist and Blacklist 都是关键字匹配,例如填 `碳` 会匹配 `碳` 和 `碳素`。 +- `Stop purchasing items when credits below 300` 即使在低于 300 时也会购买 Whitelist 商品。 diff --git a/docs/en-us/manual/introduction/infrastructure.md b/docs/en-us/manual/introduction/infrastructure.md new file mode 100644 index 0000000000..973ed37140 --- /dev/null +++ b/docs/en-us/manual/introduction/infrastructure.md @@ -0,0 +1,31 @@ +--- +order: 4 +--- + +# Infrastructure + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## Shifting Strategy + +- Automatically calculate and choose the **optimal solution within a single facility**. Supports all general and special skill combinations. +- Supports recognition of Battle Record, Pure Gold, Originium Shard, Chip and so on for different operators. +- 自动按照 `无人机用途` 选择的方式使用无人机。 +- Recognizes the percentage of the Morale bar. When Morale is below some threshold, the operator will be moved to the dormitory. + +## Note + +- The shifting strategy is based on the optimal solution within a single facility instead of multiple facilities. Combination such as: `Shamare-Tequila`, `Vermeil-Scene` within a single facility can be recognized correctly; while combination like `Rosmontis`, `Pinus Sylvestris` among facilities is not supported yet. +- If `Usage of Drone` is selected with the option `Trading Post-LMD`, it will recognize `Shamare` and reserve it for her. +- Operators of corresponding fraction will be selected when only one Clue is needed Reception Room; otherwise general operators will be chosen. +- Reception Room will send out Clues only when your Clues are full. Three Clues will be send out at most. You can edit `SelectClue` - `maxTimes` field in `resource/tasks.json` to edit number of Clues sent if you want. +- If you do not want operators like `Irene` or someone else to be put into the dormitory when the training room is not in use, you can switch off `Working operator shall not be put into the dormitory` in the settings. Note that this may cause the operators with non-full fatigue not entering the dormitory as well. +- Due to the complexity of Control Center, only `Amiya`, `Swire`, `Kal'tsit`, `Team Rainbow` and other Morale+0.05 operators will be considered. To be improved in future. +- Some alternate operators may have conflicts in Infrastructure. Please notice if there is "Operator conflict" warnings on the UI, and double check the Infrastructure to shift manually (e.g. some facilities may not have any operator). +- 可自行选择需要 MAA 处理的设施类别,默认全选。 + +## Custom infrastructure shift change (Beta) + +- Several sets of extremely efficient tasks are built-in under the MAA folder `/resource/custom_infrast/`, which can be used as a reference. 由于其对干员及练度的需求极高,不推荐直接使用。 diff --git a/docs/en-us/manual/introduction/integrated-strategy.md b/docs/en-us/manual/introduction/integrated-strategy.md new file mode 100644 index 0000000000..f6e45953ad --- /dev/null +++ b/docs/en-us/manual/introduction/integrated-strategy.md @@ -0,0 +1,33 @@ +--- +order: 7 +--- + +# Integrated Strategy (I.S.) + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +MAA selects the latest theme by default, and can be changed in `Auto I.S.` - `General`. + +- Please pin the corresponding I.S. theme to the terminal in the game. 虽然目前也可以自动导航,但不保证长期可用性。 +- If there is exploration of non-target themes (such as if you plan to use MAA to brush Mizuki, but there is still an unfinished exploration of Phantom), please end it manually. +- MAA will not automatically select the difficulty. If the difficulty is not selected, it will get stuck/repeatedly enter and exit the difficulty selection interface. +- In the settings, you can choose the team, starting operator (only one operator name), etc. + +## Battle Strategy + +MAA 没有 AI 功能,自动肉鸽中的一切操作都是预置的策略,所有关卡战斗都是调用内置的作业文件。 + +详情请查阅 [肉鸽协议](../../protocol/integrated-strategy-schema.md)。 + +- It supports automatic recognition of operators and proficiency, and automatically selects better operators and skills. +- It supports identifying store items and prioritizes purchasing more powerful collectibles. + +## Abnormal Detection + +- It supports reconnection after disconnection and supports continuing to return to brush after 4 a.m. update. +- If the scraping cannot be completed during the battle, all ground units will be automatically withdrawn after more than 5 minutes; if it exceeds 6 minutes, the current battle will be automatically abandoned without getting stuck. +- If the task gets stuck, it will automatically abandon the exploration and retry. + +However, if it often gets stuck in a certain place and then gives up, seriously affecting efficiency, please feel free to submit an issue for feedback. diff --git a/docs/en-us/manual/introduction/others.md b/docs/en-us/manual/introduction/others.md new file mode 100644 index 0000000000..a451b11800 --- /dev/null +++ b/docs/en-us/manual/introduction/others.md @@ -0,0 +1,31 @@ +--- +order: 11 +--- + +# Others + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## Automatically switch configurations on startup + +MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`。 + +部分符号需要转义,参考 Json。例子:在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`。 + +## Pre/Post-Script + +Starting from v4.13.0, it is possible to set pre/post-script that automatically executes batch files before and after the task. + +You need to provide the absolute or relative path to the batch file, which should have a `.bat` extension. + +## Note + +- Tasks order can be changed on the UI. So can the shifting order in the infrastructure. +- Almost all configuration changes will be saved automatically, except for options with `*`, `(only once)` and half-select by right-clicking on the checkbox. +- All clicking event is randomized within a region, following Poisson distribution (higher probability at the center, lower probability around). +- Developed in C++, the core algorithm supports multi-level cache, in order to reduce CPU and memory usage as much as possible. +- Our software supports auto-update ✿✿ ヽ(°▽°)ノ ✿ Beta-testers can try beta versions, which updates faster and less buggy (maybe). +- If auto-update fails, you can download the OTA package manually and put the ZIP file under the same directory. The update will start automatically. +- 在 Windows 版本中,MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。 diff --git a/docs/en-us/manual/introduction/reclamation-algorithm.md b/docs/en-us/manual/introduction/reclamation-algorithm.md new file mode 100644 index 0000000000..68a640cf5f --- /dev/null +++ b/docs/en-us/manual/introduction/reclamation-algorithm.md @@ -0,0 +1,24 @@ +--- +order: 8 +--- + +# Reclamation Algorithm + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。 + +## 默认模式 + +1. 需要在生息演算主界面开始任务(导航还没写) +2. 不能在已经有存档的情况下使用(删除现有存档即可) +3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后) + +## 制造刷点数 + +1. 需要在进入生息演算中能看到驻扎地的页面开始 +2. 若未填写道具名称,则默认制造荧光棒 +3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地 +4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修 diff --git a/docs/en-us/manual/introduction/recruit.md b/docs/en-us/manual/introduction/recruit.md new file mode 100644 index 0000000000..e87c091a98 --- /dev/null +++ b/docs/en-us/manual/introduction/recruit.md @@ -0,0 +1,23 @@ +--- +order: 2 +--- + +# Recruit + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +Auto-recruitment and [recruitment recognition](./tools.md#recruitment-recognition) are two different features. + +## Auto-recruitment + +Auto-recruitment supports using `Expedited Plan` to make it fully automated. Please enable `Auto use Expedited Plan` and modify `Recruit max times` in `Recruit` - `General`. + +Pop-up notification when 1★, 5★, 6★ operators are recruited. + +Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/) and [Yituliu](https://ark.yituliu.cn/) while auto-recruitment. + +## Advanced Settings + +`Auto confirm` 即 MAA 自动选择标签并进行招募,`Manually confirm` 即不进行自动选择与招募。 diff --git a/docs/en-us/manual/introduction/rewards.md b/docs/en-us/manual/introduction/rewards.md new file mode 100644 index 0000000000..ac59e70e5a --- /dev/null +++ b/docs/en-us/manual/introduction/rewards.md @@ -0,0 +1,13 @@ +--- +order: 6 +--- + +# Rewards + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动领取每日奖励和每周奖励。 + +同时支持其他奖励类型,具体请查看设置。 diff --git a/docs/en-us/manual/introduction/startup.md b/docs/en-us/manual/introduction/startup.md new file mode 100644 index 0000000000..36d678a993 --- /dev/null +++ b/docs/en-us/manual/introduction/startup.md @@ -0,0 +1,23 @@ +--- +order: 1 +--- + +# Startup + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动启动模拟器,自动启动客户端,自动进入游戏。 + +自动启动模拟器需额外设置,详见启动设置。 + +## Account Switch + +仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。 + +Example:`123****8901` can be input `123****8901`、`123`、`8901`、`3****8`. + +## Connection + +[Click me](../connection.md) diff --git a/docs/en-us/manual/introduction/tools.md b/docs/en-us/manual/introduction/tools.md new file mode 100644 index 0000000000..88fd746d90 --- /dev/null +++ b/docs/en-us/manual/introduction/tools.md @@ -0,0 +1,43 @@ +--- +order: 10 +--- + +# Tools + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## Recruitment Recognition + +打开公招标签界面,点击开始识别即可启动。 + +如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。 + +## Operator Recognition (Beta) + +可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。 + +## Depot Recognition (Beta) + +Support automatically entering the depot from the main page. If the automatic jump fails, please manually switch to the `Upgrade materials` screen and slide to the far left to start the function. + +Currently, exporting is supported to [Penguin-Stats](https://penguin-stats.cn/planner), [Arknights Toolbox](https://arkntools.app/#/material), and [Arknights | Planner](https://ark-nights.com/settings). + +Please feel free to contact us if you hope to integrate with our JSON schema. + +More useful features **may** be added in the future. + +## Task Video Recognition (Alpha) + +It can recognize strategy videos and automatically generate job files. Drag the video files into the `Copilot` tab page to start. + +Only 16:9 aspect ratio videos with a resolution of 720p or higher are supported. The video content must not contain any black borders, distortion correction, emulator borders or other elements. + +## Gacha + +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** + +牛牛航空没报上名?没关系!现在每个人都有自己的牛牛航空!并且在抽卡的过程中还会截图并显示在界面中央! diff --git a/docs/en-us/1.0-BEGINNER'S_GUIDE.md b/docs/en-us/manual/newbie.md similarity index 74% rename from docs/en-us/1.0-BEGINNER'S_GUIDE.md rename to docs/en-us/manual/newbie.md index 6b8971558f..2cae85bbf6 100644 --- a/docs/en-us/1.0-BEGINNER'S_GUIDE.md +++ b/docs/en-us/manual/newbie.md @@ -1,4 +1,5 @@ --- +order: 1 icon: ri:guide-fill --- @@ -8,17 +9,18 @@ icon: ri:guide-fill 1. Confirm system version - MAA only supports Windows 10 / 11. For earlier versions of Windows, please refer to [FAQ](1.2-FAQ.md) at the top. + MAA only supports Windows 10 / 11. For earlier versions of Windows, please refer to [FAQ](./faq.md) at the top. 2. Install the runtime library MAA requires VCRedist x64 and .NET 8. Right-click the start button to open the terminal, paste the following command in it and Enter to install. ```sh - winget install Microsoft.VCRedist.2015+.x64 - winget install Microsoft.DotNet.DesktopRuntime.8 + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 ``` + Refer to [FAQ](faq.md#missing-runtime-libraries) for more information + 3. Download the correct version [MAA official website](https://maa.plus/) will automatically selects the correct version architecture, which for most users reading this article should be Windows x64. @@ -29,7 +31,7 @@ icon: ri:guide-fill 5. Confirm simulator support - Check [Emulator Supports](./1.3-EMULATOR_SUPPORTS.md) to confirm the support of the emulator you are using. + Check [Emulator Supports](./device/) to confirm the support of the emulator you are using. 6. Correctly set the emulator resolution @@ -37,11 +39,14 @@ icon: ri:guide-fill ## Initial -1. Follow the setting guide to configure. If there are no special requirements such as multiple openings, there is no need to change the connection settings. +0. If you'd like to use automatic detection, run **one** emulator and make sure no other Android devices are connected to the computer. + +1. Follow the setup guide to configure, and MAA will automatically detect the running emulator. If you'd like to run multiple emulator or customize your connection, please check [Connection](./connection.md). 2. A hot update will be performed when MAA is run for the first time. Please close MAA and restart after prompting in the log on the right. -3. Drag the task list on the left to sort the tasks, and check or uncheck the checkboxes to select the tasks to be run. +3. Drag the task list on the left to sort the tasks, and check or uncheck the checkboxes to select + the tasks to be run. 4. Link Start! @@ -51,7 +56,7 @@ Check out the documentation. ## Other -- **When encountering problems, read the documents plz.** +- **When encountering problems, read the documents please.** 1. The log files are located in the folder under the MAA folder which named `debug`. Logs are important. When asking others for help, be sure to take `asst.log` and `gui.log` with you. diff --git a/docs/en-us/protocol/README.md b/docs/en-us/protocol/README.md new file mode 100644 index 0000000000..3565ade552 --- /dev/null +++ b/docs/en-us/protocol/README.md @@ -0,0 +1,9 @@ +--- +title: Protocol Docs +icon: basil:document-solid +index: false +dir: + order: 3 +--- + + diff --git a/docs/en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA.md b/docs/en-us/protocol/base-scheduling-schema.md similarity index 98% rename from docs/en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA.md rename to docs/en-us/protocol/base-scheduling-schema.md index 76895bcf5c..a742e3f769 100644 --- a/docs/en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA.md +++ b/docs/en-us/protocol/base-scheduling-schema.md @@ -1,3 +1,8 @@ +--- +order: 6 +icon: material-symbols:view-quilt-rounded +--- + # Infrastructure Schedule Schema This document is machine-translated. If you have the ability, please refer to the Chinese version. We would greatly appreciate any errors or suggestions for improvement. @@ -5,7 +10,7 @@ This document is machine-translated. If you have the ability, please refer to th Usage and Field Description for `resource/custom_infrast/*.json` files ::: tip -Note: As JSON format does not support comments, please remove the comments when using the examples below. +As JSON format does not support comments, please remove the comments when using the examples below. ::: [Visual Schedule Generation Tool](https://ark.yituliu.cn/tools/schedule) diff --git a/docs/en-us/3.2-CALLBACK_SCHEMA.md b/docs/en-us/protocol/callback-schema.md similarity index 98% rename from docs/en-us/3.2-CALLBACK_SCHEMA.md rename to docs/en-us/protocol/callback-schema.md index fc74a686bb..2e7dac359e 100644 --- a/docs/en-us/3.2-CALLBACK_SCHEMA.md +++ b/docs/en-us/protocol/callback-schema.md @@ -1,3 +1,8 @@ +--- +order: 2 +icon: material-symbols:u-turn-left +--- + # Callback Schema **Callback messages are being iterated rapidly with version updates, and this document may be outdated. For the latest content, please refer to [C# Integration Source Code](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/MaaWpfGui/Main/AsstProxy.cs)** @@ -440,7 +445,6 @@ Todo } ``` - - `RecruitTagsSelected` Recruitment tags selected @@ -554,7 +558,7 @@ Todo }, "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}" } - // Only ArkPlanner and Lolicon formats are supported. More websites will be supported in future. + // Only ArkPlanner and Lolicon (Arkntools) formats are supported. More websites will be supported in future. ``` - `OperBoxInfo` diff --git a/docs/en-us/3.3-COPILOT_SCHEMA.md b/docs/en-us/protocol/copilot-schema.md similarity index 99% rename from docs/en-us/3.3-COPILOT_SCHEMA.md rename to docs/en-us/protocol/copilot-schema.md index 7bae0b2f6f..81b4f60d76 100644 --- a/docs/en-us/3.3-COPILOT_SCHEMA.md +++ b/docs/en-us/protocol/copilot-schema.md @@ -1,3 +1,8 @@ +--- +order: 3 +icon: ph:sword-bold +--- + # Copilot Schema Usage of `resource/copilot/*.json` and field description. diff --git a/docs/en-us/3.5-INTEGRATED_STRATEGY_SCHEMA.md b/docs/en-us/protocol/integrated-strategy-schema.md similarity index 75% rename from docs/en-us/3.5-INTEGRATED_STRATEGY_SCHEMA.md rename to docs/en-us/protocol/integrated-strategy-schema.md index 0096bca73d..76f281ab76 100644 --- a/docs/en-us/3.5-INTEGRATED_STRATEGY_SCHEMA.md +++ b/docs/en-us/protocol/integrated-strategy-schema.md @@ -1,33 +1,32 @@ --- +order: 5 icon: ri:game-fill --- -# Integrated Strategy (I.S.) -- Schema + +# Integrated Strategy (I.S.) Schema ::: tip Please note that JSON files do not support comments. Comments are for demonstration purposes only and should not be copied directly ::: -## Integrated Strategy resources location +## Integrated Strategy resources location - - `resource/roguelike/` the files for each theme are below - - Theme folder +- `resource/roguelike/` the files for each theme are below + - Theme folder `Phantom/` for Phantom's I.S. `Mizuki/` for Mizuki's I.S. `Sami/` for Sami's I.S. - - `autopilot/`combat json for each level - - `level_name_in_chinese.json` combat logic of the level - - `encounter.json` encounter nodes logic(levelling mode) - - `encounter_for_deposit.json` encounter nodes logic (investing mode) - - `recruitment.json` operators recruitment logic - - `shopping.json` trade store purchasing logic + - `autopilot/`combat json for each level + - `level_name_in_chinese.json` combat logic of the level + - `encounter.json` encounter nodes logic(levelling mode) + - `encounter_for_deposit.json` encounter nodes logic (investing mode) + - `recruitment.json` operators recruitment logic + - `shopping.json` trade store purchasing logic - - -## Integrated Strategy Step 1 -- Operator Recruitment +## Integrated Strategy Step 1: Operator Recruitment `resource/roguelike/theme_name/recruitment.json` describes the logic of the operator recruitment - ```json { "theme": "Phantom", // I.S. Theme (In this case Phantom) @@ -40,23 +39,25 @@ Please note that JSON files do not support comments. Comments are for demonstrat } ``` - ### Operator classification -Split operators in different ***groups*** according to your understanding of the game(Group, related conceptual references [COPILOT_SCHEMA](3.3-COPILOT_SCHEMA.md)) +Split operators in different ***groups*** according to your understanding of the game(Group, related conceptual references [Copilot Schema](./copilot-schema.md)) ::: info - 1. Operators and summons within the same group must be deployed in the same way (i.e. both melee or ranged) - - 2. Allows the same operator or summon to be sorted in different groups, depending on its usage. - - 3. Please do not change the name of an existing group, as this may cause previous versions of the task to be unavailable when MAA is updated! - - 4. Please try not to add new group, instead try to implement new operators added to the task, into existing groups according to the usage +1. Operators and summons within the same group must be deployed in the same way (i.e. both melee or ranged) +2. Allows the same operator or summon to be sorted in different groups, depending on its usage. + +3. Please do not change the name of an existing group, as this may cause previous versions of the task to be unavailable when MAA is updated! + +4. Please try not to add new group, instead try to implement new operators added to the task, into existing groups according to the usage ::: - + +::: tip +By default, only E1 Level 55 operators will be recruited +::: + ```json { "theme": "Phantom", @@ -118,7 +119,7 @@ Currently fixed to group unidentified ground crews behind the penultimate format In a team that you expect to pass or reach the top, what are the basic core players? Are they essential? How many do you need? -::: info +::: info The current script's recruiting logic is to only recruit 0 hope and key agents before the lineup meets the lineup readiness level, and save hope for high star key agents. So don't set the threshold number too high, it is recommended that the number of all the operators needed (the basic core lineup) should add up to 4-8 digits. ::: @@ -149,74 +150,76 @@ So don't set the threshold number too high, it is recommended that the number of ] } ``` + ### Adjusting parameters for operator recruitment 1. The order within a group represents the priority of the deployment detection 2. Meaning of each field and script-related logic for group members -```json -{ - "theme": "Phantom", - "priority": [ - "name": "GroundBlocking", // Group name (in this case GroundBlocking) - "doc": "The standard line is 1st gear (clearing ability or field ability is better than mountain) > Mountain > 2nd gear (block>2, can return to itself) > Spot, field ability is less than spot to single cut or cannon fodder group", - // Doc field are just notes. Has no effect on the program - "opers": [ // What operators should be included, in ordered, represents deployment priority. - { - "name": "Gavial the Invincible", // Operator name (Gavial the Invincible, the first position in the group indicates that - //when it is necessary to deploy a ground blocking group, the first thing to check is whether it is a Gavial Alter or not.) - "skill": 3, // Which skill to use (In this case skill 3) - "skill_usage": 2, // Skill usage mode, refer to 3.3COPILOT_SCHEMA, default to 1 if empty, 2 is only put x times - // (x is set by "skill_times" field), 3 is not supported for now. - "skill_times": 2, // Skill usage, default is 1, effective when "skill_usage" field is 2. - "alternate_skill": 2, // Alternative skills used when there is no designated skill, usually 6-star operators who have not - // E2'd and use 3 skills after promotion - // (in this case, 2 skills are used when there is no 3 skills). - "alternate_skill_usage": 1 // Skill use mode for alternative skills (this field has not yet been implemented) - "alternate_skill_times": 1 // Number of skill uses for alternative skills (this field has not yet been implemented) - "recruit_priority": 900, // Recruitment priority, bigger number, higher priority, more than 900 belongs to must be recruited - // 400 below the recruitment priority than some of the key operator essence of the second priority is still low - // Temporarily recruited operator priority automatically +800 - "promote_priority": 600, // Advancement priority, bigger number, higher priority, above 900 is a guaranteed E2 if there's enough hope - // below 400 recruitment priority is lower than the recruitment of ordinary three-star operators - // Tip: When you lower your recruitment priority or don't write it in, and raise the priority of some of - // your E2, you're actually raising the priority of the E2 who temporarily recruited these operators. - "is_key": true, // If true, the operator is a key element. Default to false if empty. - // If the lineup completeness test is not passed, only key and 0 hope are recruited, saving hope. - "is_start": true, // If true, the operator is a stater. Default to false if empty. If there is no start player in the team, - // only start players and 0 hopeful players will be recruited, and user-filled players will be recruited. - "auto_retreat": 0, // Auto-retreat after a few full-seconds of deployment, takes effect when greater than 0, mainly used for specialists and vanguards, - // since I.S. usually starts at 2x speed, it is recommended to set it to skill duration divided by 2 - "promote_priority_when_team_full": 850, - "recruit_priority_offsets": [ // Prioritise recruitment according to current line-up - { - "groups": [ // Which groups are required to fulfil the conditions - "Kaltsit", - "GroundBlocking", - "Thorns" - ], - "is_less": false, // True is less than, false is greater than. Default to false if empty - "threshold": 2, // Number of conditions met - "offset": -300 // Adjustments to recruitment priorities after fulfilment - // (This means that when there are 2 or more operators in Kaltsit, GroundBlocking and Thorns, - // the recruitment priority of Gavial the Invincible is reduced by 300) - } - ] - }, - ... - ], - ], - "team_complete_condition": [ - ... - ] -} -``` + + ```json + { + "theme": "Phantom", + "priority": [ + "name": "GroundBlocking", // Group name (in this case GroundBlocking) + "doc": "The standard line is 1st gear (clearing ability or field ability is better than mountain) > Mountain > 2nd gear (block>2, can return to itself) > Spot, field ability is less than spot to single cut or cannon fodder group", + // Doc field are just notes. Has no effect on the program + "opers": [ // What operators should be included, in ordered, represents deployment priority. + { + "name": "Gavial the Invincible", // Operator name (Gavial the Invincible, the first position in the group indicates that + //when it is necessary to deploy a ground blocking group, the first thing to check is whether it is a Gavial Alter or not.) + "skill": 3, // Which skill to use (In this case skill 3) + "skill_usage": 2, // Skill usage mode, refer to 3.3COPILOT_SCHEMA, default to 1 if empty, 2 is only put x times + // (x is set by "skill_times" field), 3 is not supported for now. + "skill_times": 2, // Skill usage, default is 1, effective when "skill_usage" field is 2. + "alternate_skill": 2, // Alternative skills used when there is no designated skill, usually 6-star operators who have not + // E2'd and use 3 skills after promotion + // (in this case, 2 skills are used when there is no 3 skills). + "alternate_skill_usage": 1 // Skill use mode for alternative skills (this field has not yet been implemented) + "alternate_skill_times": 1 // Number of skill uses for alternative skills (this field has not yet been implemented) + "recruit_priority": 900, // Recruitment priority, bigger number, higher priority, more than 900 belongs to must be recruited + // 400 below the recruitment priority than some of the key operator essence of the second priority is still low + // Temporarily recruited operator priority automatically +800 + "promote_priority": 600, // Advancement priority, bigger number, higher priority, above 900 is a guaranteed E2 if there's enough hope + // below 400 recruitment priority is lower than the recruitment of ordinary three-star operators + // Tip: When you lower your recruitment priority or don't write it in, and raise the priority of some of + // your E2, you're actually raising the priority of the E2 who temporarily recruited these operators. + "is_key": true, // If true, the operator is a key element. Default to false if empty. + // If the lineup completeness test is not passed, only key and 0 hope are recruited, saving hope. + "is_start": true, // If true, the operator is a stater. Default to false if empty. If there is no start player in the team, + // only start players and 0 hopeful players will be recruited, and user-filled players will be recruited. + "auto_retreat": 0, // Auto-retreat after a few full-seconds of deployment, takes effect when greater than 0, mainly used for specialists and vanguards, + // since I.S. usually starts at 2x speed, it is recommended to set it to skill duration divided by 2 + "promote_priority_when_team_full": 850, + "recruit_priority_offsets": [ // Prioritise recruitment according to current line-up + { + "groups": [ // Which groups are required to fulfil the conditions + "Kaltsit", + "GroundBlocking", + "Thorns" + ], + "is_less": false, // True is less than, false is greater than. Default to false if empty + "threshold": 2, // Number of conditions met + "offset": -300 // Adjustments to recruitment priorities after fulfilment + // (This means that when there are 2 or more operators in Kaltsit, GroundBlocking and Thorns, + // the recruitment priority of Gavial the Invincible is reduced by 300) + } + ] + }, + ... + ], + ], + "team_complete_condition": [ + ... + ] + } + ``` + 3. Add groups and opeators as you see fit When you add a new group, you can copy the operator from an existing group. Refer to the ratings already given by the devs, and modify them on that basis - -## Integrated Strategy Step 2 -- Battle Logic +## Integrated Strategy Step 2: Battle Logic `resource/roguelike/theme_name/autopilot/level_name.json` Describes the combat strategy for each level @@ -227,7 +230,7 @@ So don't set the threshold number too high, it is recommended that the number of - MAA performs basic combat operations based on whether the grid on the map is a blue or red gate, whether it's a high platform or ground, and whether it can be deployed or not. - MAA decides which job to use based on the name or number of the map only, and does not judge the map's **Standard**, **Emergency**, **Road Network**, **Classified Board Use**, etc. - + - MAA does not judge **in combat the situation of undefined squares on the map**, e.g. the position of the altar in the `Taming Hut`, the `follower effect` of monsters coming out of the left side or the right side. So in the future, you need to try to design a set of combat logic that can cope with **all the different scenarios of a map name** (the above mentioned scenarios), and be careful of being hung up on the issue that this map operates in Emergency Mode. @@ -244,9 +247,9 @@ So don't set the threshold number too high, it is recommended that the number of 1. Blue Gate Alternative - It's obviously not smart to just pile up your operators in front of the blue door, some levels have grids where you can't get through, and the defence is obviously very efficient here + It's obviously not smart to just pile up your operators in front of the blue door, some levels have grids where you can't get through, and the defence is obviously very efficient here - Or if there are levels with multiple blue gates, and the MAA doesn't know which blue gate corresponds to which red gate, they may deploy randomly + Or if there are levels with multiple blue gates, and the MAA doesn't know which blue gate corresponds to which red gate, they may deploy randomly At this point you'll need to open the [map wiki](https://map.ark-nights.com/areas?coord_override=maa) while imagining the battle in your head @@ -297,6 +300,7 @@ So don't set the threshold number too high, it is recommended that the number of ] ], ``` + 3. Alternative map strategies For example, if there is a monster at the blue door in Mizuki I.S. should we use the dice to ease the pressure of stacking monsters? @@ -315,7 +319,8 @@ The customised strategy takes precedence over the basic combat strategy, and whe There is no need to set up too many customised plans when there is a problem. It may be better to hand over to MAA after completing the key steps, or a combination of both. 1. Deployment of operators using groups - ```json + + ```json "deploy_plan": [ // Deployment logic: order from top-to-bottom, left-to-right // Tries to deploy the first operator it finds, or skips it if it doesn't. { @@ -343,10 +348,11 @@ There is no need to set up too many customised plans when there is a problem. It If a "Gavial" operator on [6,4] is retreated during battle, the "Cornerstone" operator in hand, if avaiable, will be deployed on [6,4], instead of [6,3] ::: -3. Deployment of operators at a point in time +2. Deployment of operators at a point in time ::: tip Suitable for certain single-cutting operators or usage scenarios that require cannon fodder ::: + ```json "deploy_plan": [ { @@ -364,10 +370,12 @@ There is no need to set up too many customised plans when there is a problem. It ... ] ``` -4. Retrieval of the operators at some point + +3. Retrieval of the operators at some point ::: tip Sometimes the fodder is too strong to hold the field or you need to deploy to move the lineup. What should I do? Retreat! ::: + ```json "retreat_plan": [ // Retrieval targets at specific points in time { @@ -376,12 +384,12 @@ There is no need to set up too many customised plans when there is a problem. It } ] ``` -5. Disable a skill at a certain point in time (to do) - -7. Additional fields (not recommended) +4. Disable a skill at a certain point in time (to do) - ```json +5. Additional fields (not recommended) + + ```json "role_order_Doc": "Operator type deployment order, the unspecified parts will be filled in with the order of Guard, Vanguard, Medic, Defender, Sniper, Caster, Supporter, Specialist, Summoner, and so on.", "role_order": [ // Not recommended, please configure the deploy_plan field. "warrior", @@ -426,6 +434,7 @@ There is no need to set up too many customised plans when there is a problem. It } ], ``` + ### Have a special understanding of an operator’s playing style? -- Refined operation of specific operators Please group this officer separately @@ -438,7 +447,7 @@ It’s also possible to use just one operator! Use MAA to clear the level (due t Reference examples: 1. Thorns in Phantom I.S. 2. Texas the Omertosa in Mizuki I.S. 3. Reed the Flame Shadow in Sami I.S. -## Integrated Strategy Step 3 -- Encounters Node logic +## Integrated Strategy Step 3: Encounters Node logic `resource/roguelike/theme_name/encounter.json` Strategy for the selection of Encounter events in the leveling mode @@ -457,7 +466,8 @@ Generally, it only requires slight adjustment or no adjustment at all (the devs Please refer to [prts.wiki](https://prts.wiki/w/%E9%9B%86%E6%88%90%E6%88%98%E7%95%A5) to see the effects of each Encouter's options, note that the options are not necessarily fixed. The Encounter options can be modified to guide MAA towards special endings -```json + +```json { "theme": "Sami", // I.S. Theme "stage": [ // Encounter event @@ -491,13 +501,10 @@ The Encounter options can be modified to guide MAA towards special endings ### Dynamically prioritise certain options according to the team situation (TODO) - - -## Integrated Strategy Step 4 -- Prioritising Trade Store collection +## Integrated Strategy Step 4: Prioritising Trade Store collection `resource/roguelike/theme_name/shopping.json` Describes strategies for purchasing collectibles in the store (and selecting collectibles after combat?) - ```json { "theme": "Phantom", // I.S. Theme @@ -566,3 +573,5 @@ The operator deployed in a certain frame, wait x seconds for the skill to turn o ### Skills Shutdown Useful for operators that have ammo skills + + diff --git a/docs/en-us/3.1-INTEGRATION.md b/docs/en-us/protocol/integration.md similarity index 94% rename from docs/en-us/3.1-INTEGRATION.md rename to docs/en-us/protocol/integration.md index ee7738cdc8..f215b4f7f2 100644 --- a/docs/en-us/3.1-INTEGRATION.md +++ b/docs/en-us/protocol/integration.md @@ -1,3 +1,8 @@ +--- +order: 1 +icon: bxs:book +--- + # Integration ## API @@ -70,6 +75,7 @@ Appends a task. "expiring_medicine": int, // Maximum number of expired Sanity Potion within 48 hours, optional, by default 0 "stone": int, // Maximum number of Originite Prime used, optional, by default 0 "times": int, // Maximum times, optional, by default infinite + "series": int, // Number of series, optional, 1~6 "drops": { // Specifying the number of drops, optional, no specification by default "30011": int, // Key: item ID; value: number of items. Key refers to resource/item_index.json "30062": int // OR combination @@ -87,7 +93,7 @@ Appends a task. } ``` -Supports some of the special stages,Please refer to [autoLocalization example](..\..\tools\AutoLocalization\example\en-us.xaml#L260). +Supports some of the special stages,Please refer to [autoLocalization example](..\..\..\tools\AutoLocalization\example\en-us.xaml#L260). - `Recruit` Recruitment @@ -232,7 +238,7 @@ Supports some of the special stages,Please refer to [autoLocalization example](. } ``` -For more details about auto-copilot JSON, please refer to [Copilot Schema](3.3-COPILOT_SCHEMA.md) +For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md) - `SSSCopilot` Copilot auto-combat feature for STATIONARY SECURITY SERVICE @@ -245,7 +251,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.3-C } ``` -For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-SECURITY_PRESENCE_SCHEMA.md) +For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md) - `Depot` Depot recognition @@ -268,7 +274,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S ``` - `ReclamationAlgorithm` - ReclamationAlgorithm ( A new mode in CN client) + ReclamationAlgorithm ( A new mode in CN client) ```json { @@ -276,15 +282,17 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S "theme": int, // Theme, optional, 1 by default // 0 - *Fire Within the Sand* // 1 - *Tales Within the Sand* - "mode": int // Mode, optional, by default 0 (supported by theme *Fire Within the Sand* only) + "mode": int, // Mode, optional, 0 by default // 0 - Farm badges & construction pts (exiting the stage immediately) - // 1 - Farm Crude Gold (forging Gold at headquarter after purchasing water) + // 1 - Fire Within the Sand: Farm Crude Gold (forging Gold at headquarter after purchasing water) + // Tales Within the Sand: Automatically craft items and load to earn currency + "product": string // Automatically crafted items, optional, glow stick by default + // Suggested fill in the substring } ``` - `Custom` - - Custom Task + Custom Task ```json { @@ -298,8 +306,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S ``` - `SingleStep` - - Single-step task (currently only supports copilot) + Single-step task (currently only supports copilot) ```json { @@ -317,8 +324,7 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.7-S ``` - `VideoRecognition` - - Video recognition, currently only supports operation (combat) video + Video recognition, currently only supports operation (combat) video ```json { @@ -410,13 +416,13 @@ Set instance-level parameters ##### List of Key and value -```json +```cpp enum InstanceOptionKey { Invalid = 0, // Deprecated // MinitouchEnabled = 1, // Is minitouch enabled // If you can't use minitouch, it's useless to turn it on. - // "1" - on,"0" - off + // "1" - on, "0" - off TouchMode = 2, // Touch mode, minitouch by default // minitouch | maatouch | adb DeploymentWithPause = 3, // Deployment with Pause (Works for IS, Copilot and 保全派驻) diff --git a/docs/en-us/protocol/remote-control-schema.md b/docs/en-us/protocol/remote-control-schema.md new file mode 100644 index 0000000000..47a92e76df --- /dev/null +++ b/docs/en-us/protocol/remote-control-schema.md @@ -0,0 +1,149 @@ +--- +order: 8 +icon: mdi:remote-desktop +--- + +# Remote Control Schema + +To achieve remote control of MAA, you need to provide a service that must be an HTTP(S) service and provide the following two anonymously accessible endpoints. These endpoints must be HTTP(S) web endpoints. + +::: warning +If the endpoint is an HTTP protocol, MAA will issue a security warning with each connection. **Deploying plaintext transmission services on the public network is highly discouraged and dangerous, for testing purposes only.** +::: + +::: tip +Please note that JSON files do not support comments. The comments in the text are for demonstration purposes only and should NOT be copied directly. +::: + +## Task Retrieval Endpoint + +MAA will continuously poll this endpoint at 1-second intervals, attempting to retrieve tasks it needs to perform and execute them in the order they are retrieved. + +The endpoint path is arbitrary but must be an HTTP(S) endpoint. For example: `https://your-control-host.net/maa/getTask` + +The controlled MAA needs to fill this endpoint into the `Task Retrieval Endpoint` text box in the MAA configuration. + +This endpoint must be able to accept a `Content-Type=application/json` POST request and must be able to accept the following JSON as the request content: + +```json +{ + "tasks": // A list of Tasks that need to be allowed to be executed by the MAA, the types supported currently are shown in the example, and the connection is considered invalid if the tasks do not exist. + [ + // Sequential tasks: the following tasks are queued for execution in the order in which they are issued. + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //A unique uuid for the task, type : string, which will be used when reporting on the task. + "type": "CaptureImage", //A screenshot task that takes a screenshot of the current emulator and puts it in the payload of the reporting task as a Base64 string. If you need to issue this type of task, be sure to pay attention to the maximum request size that your endpoint can accept, as the screenshot size will lager than 10MB and exceed the default size limit of a typical gateway. + }, + { + "id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", //A unique uuid for the task, type : string, which will be used when reporting on the task. + "type": "LinkStart", //LinkStart😄 + }, + { + "id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", // A unique uuid, used in the same way as above. + "type": "LinkStart-Recruiting", // Immediately executes the corresponding sub-function of ‘LinkStart’ individually according to the current configuration, ignoring the tick box of this function on the GUI. The optional values for this type of Type are detailed below. + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", // Same as ‘id’ above + "type": "Toolbox-GachaOnce", //The Gacha function in the toolbox, with optional values for this class Type:Toolbox-GachaOnce, Toolbox-GachaTenTimes + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above. + "type": "Settings-ConnectionAddress", //The task of modifying a configuration item is equivalent to executing the ConfigurationHelper.SetValue("ConnectionAddress", params); For security reasons, not every configuration can be modified, and those that can are detailed below. + "params": "value" //The value you want to config + }, + // Immediate Execution Tasks: these following tasks can be executed in a Sequential Execution Task run and the MAA guarantees that any of the following tasks will return results as soon as possible, and are typically used for control of the remote control function itself. + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above. + "type": "CaptureImageNow", //The Immediate Screenshot task is basically the same as the Screenshot task above, the only difference is that this task will be run immediately without waiting for other tasks. + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above. + "type": "StopTask", //The "Stop current task" task will attempt to end the currently running task. If there are other tasks in the task list it will continue with the next one. This task does not wait to confirm that the current task has stopped before returning, so use the "HeartBeat" task to confirm that the stop command has taken effect. + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", // A unique uuid, used in the same way as above. + "type": "HeartBeat", // "Heartbeat" task, the task will immediately return the current ‘sequential task’ queue in the task is executing as the Payload, if there is currently no task execution, return the empty string. + }, + ], + ... // If you have other uses for this endpoint, you can add other return values of your own, but MAA will only read tasks. +} +``` + +This endpoint must return a JSON formatted Response and must at least meet the following format: + +::: note + +- The `LinkStart-[TaskName]` series of tasks have optinal `type` : `LinkStart-Base`,`LinkStart-WakeUp`,`LinkStart-Combat`,`LinkStart-Recruiting`,`LinkStart-Mall`,`LinkStart-Mission`,`LinkStart-AutoRoguelike`,`LinkStart-ReclamationAlgorithm` +- The `Settings-[SettingsName]` series of tasks have optinal `type` : `Settings-ConnectionAddress`, `Settings-Stage1` +- The Settings series of tasks are still meant to be executed sequentially, not immediately upon receipt, but after the previous task. +- Multiple immediately executable tasks are also executed in the order in which they are issued, except that they are all executed so quickly that, in general, it is not necessary to be concerned about their order. + ::: + +## Report Status Endpoint + +When MAA completes a task, it will report the result to this endpoint. + +The endpoint path is arbitrary but must be an HTTP(S) endpoint. For example: `https://your-control-host.net/maa/reportStatus` + +The controlled MAA needs to fill this endpoint into the `Report Status Endpoint` text box in the MAA configuration. + +This endpoint must be able to accept a `Content-Type=application/json` POST request and must be able to accept the following JSON as the request content: + +```json +{ + "user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // The "User Identifier" you filled in the MAA settings. + "device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec", // The "Device Identifier" automatically generated in the MAA. + "task":"15be4725-5bd3-443d-8ae3-0a5ae789254c", // The Id of the task to be reported on, corresponding to the Id when 'getTask'. + "status":"SUCCESS", // The result of the task execution, SUCCESS or FAILED. generally, regardless of the success of the task execution will only return SUCCESS, only in special circumstances will return FAILED, will return FAILED situation, will be explicitly described in the above task introduction. + "payload":"", //The data to carry when reporting, string type. Depends on the task type, for example, when reporting on a screenshot task, the Base64 string of the screenshot will be carried here. + ... // If you have other uses for this endpoint, you can add other return values of your own, but MAA will only post upper value. +} +``` + +The content returned by this endpoint is arbitrary, but if you do not return `200 OK`, a notification will pop up on the MAA side displaying `Upload failed`. + +## Example Workflow : Controlling MAA with QQBot + +A developer wants to control MAA with their QQBot (QQ is an instant messaging software,like WhatsApp or Telegram), so they develop a backend exposed on the public network, providing two endpoints: + +```text +https://myqqbot.com/maa/getTask +https://myqqbot.com/maa/reportStatus +``` + +To make it more convenient for users, their `getTask` interface always returns `200 OK` and an empty tasks list regardless of the parameters received. +Each time they receive a request, they check the database for duplicate devices, and if none, they record the device and user in the database. +In this workflow, this interface also serves as a user registration function. + +They provide a command on the QQBot for users to submit their deviceId. + +In the QQBot's usage instructions, they tell users to fill in their QQ number in the `User Identifier` field of MAA and send the `Device Identifier` to the Bot via QQ chat. + +Upon receiving the identifier, the QQBot checks the database for corresponding data based on the user's QQ number in the message. If none is found, it tells the user to configure MAA first. + +Since MAA continuously sends requests once configured, if the user has configured MAA, there should be matching records in the database when they submit via QQ. + +At this point, the Bot marks the record in the database as verified, so future requests from getTask with this device and user will return the real task list. + +When the user submits a command via QQBot, the Bot writes a task into the database. Shortly after, getTask will return this task. Additionally, the QQBot thoughtfully adds a screenshot task each time the user submits a command. + +MAA will call reportStatus to report the result after completing the task. The Bot will send a message notifying the user and display the screenshot on QQ. + +## Example Workflow : Controlling MAA with a Website + +Developer B wrote a website to manage MAA in bulk through a website, so they have their own user management system. However, their backend is publicly accessible, providing two anonymously accessible endpoints: + +```text +https://mywebsite.com/maa/getTask +https://mywebsite.com/maa/reportStatus +``` + +On the website, there is an interface to connect MAA instances, will generate a random string called `User Key`, along with a text box for entering the `Device Identifier`. + +The website requires users to fill in their `User Key` in the `User Identifier` field of MAA GUI and then enter the `Device Identifier` on the website. + +Only after successfully creating a connection to MAA on the website, `getTask` will return `200 OK`. Otherwise, it returns `401 Unauthorized`. + +If the user fills it incorrectly on MAA and presses the test connection button, they will get a test failure prompt. + +Users can issue tasks on the website, queue tasks, view screenshots, and more. The implementation of these functions is similar to the QQBot example above, achieved through a combination of `getTask` and `reportStatus`. diff --git a/docs/en-us/3.7-SECURITY_PRESENCE_SCHEMA.md b/docs/en-us/protocol/sss-schema.md similarity index 97% rename from docs/en-us/3.7-SECURITY_PRESENCE_SCHEMA.md rename to docs/en-us/protocol/sss-schema.md index 68a598f329..88afbf1281 100644 --- a/docs/en-us/3.7-SECURITY_PRESENCE_SCHEMA.md +++ b/docs/en-us/protocol/sss-schema.md @@ -1,8 +1,15 @@ +--- +order: 7 +icon: game-icons:prisoner +--- + # Security Presence Schema This document is machine-translated. If you have the ability, please refer to the Chinese version. We would greatly appreciate any errors or suggestions for improvement. -**Note: As JSON format does not support comments, please remove the comments when using the examples below.** +::: tip +As JSON format does not support comments, please remove the comments when using the examples below. +::: ```json { diff --git a/docs/en-us/3.4-TASK_SCHEMA.md b/docs/en-us/protocol/task-schema.md similarity index 94% rename from docs/en-us/3.4-TASK_SCHEMA.md rename to docs/en-us/protocol/task-schema.md index d1a8dbf86b..8df78aeb63 100644 --- a/docs/en-us/3.4-TASK_SCHEMA.md +++ b/docs/en-us/protocol/task-schema.md @@ -1,3 +1,8 @@ +--- +order: 4 +icon: material-symbols:task +--- + # Task Schema Usage of `resource/tasks.json` and description of each field @@ -147,9 +152,9 @@ Allows a task "A" to be used as a template, and then "B@A" to represent the task ``` - If task "B@A" is defined in `tasks.json`, then - 1. if the `algorithm` field of `B@A` is different from that of `A`, the derived class parameters are not inherited (only the parameters defined by `TaskInfo` are inherited) - 2. for image matching task, `template` is `B@A.png` if not explicitly defined (instead of inheriting the `template` name of "A"), otherwise any derived class parameters are inherited directly from "A" task if not explicitly defined - 3. for the parameters defined in the `TaskInfo` base class (any type of task parameters, such as `algorithm`, `roi`, `next`, etc.), if not explicitly defined in "B@A", all parameters are inherited directly from the "A" task parameters, except for the five fields mentioned above, such as `sub`, which will be prefixed with "B@" when inherited + 1. if the `algorithm` field of `B@A` is different from that of `A`, the derived class parameters are not inherited (only the parameters defined by `TaskInfo` are inherited) + 2. for image matching task, `template` is `B@A.png` if not explicitly defined (instead of inheriting the `template` name of "A"), otherwise any derived class parameters are inherited directly from "A" task if not explicitly defined + 3. for the parameters defined in the `TaskInfo` base class (any type of task parameters, such as `algorithm`, `roi`, `next`, etc.), if not explicitly defined in "B@A", all parameters are inherited directly from the "A" task parameters, except for the five fields mentioned above, such as `sub`, which will be prefixed with "B@" when inherited ### Base Task @@ -164,6 +169,7 @@ Any parameter that is not explicitly defined uses the value of the `baseTask` pa #### Multi-File Task If a task defined in a later loaded task file (e.g. `tasks.json` for foreign services; hereinafter called File 2) also has a task of the same name defined in a earlier loaded task file (e.g. `tasks.json` for official services; hereinafter called File 1), then. + - if the task in File 2 does not have a `baseTask` field, then it inherits the fields of the task with the same name in File 1 directly. - If the task in File 2 has a `baseTask` field, then it does not inherit the fields of the task with the same name in File 1, but overwrites them. diff --git a/docs/en-us/readme.md b/docs/en-us/readme.md index 46aac0d23c..9813f68afd 100644 --- a/docs/en-us/readme.md +++ b/docs/en-us/readme.md @@ -1,27 +1,22 @@ -
+--- +icon: ic:round-home +index: true +dir: + order: 0 +--- -LOGO +::: center + +![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256) # MaaAssistantArknights -
-
- C++ -
-
- platform -
-
- license - commit -
-
- stars - GitHub all releases -
-
+![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus) +![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet) +![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4) +![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social) -[简体中文](../readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) +[简体中文](../zh-cn/readme.md) | [繁體中文](../zh-tw/readme.md) | English | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) MAA means MAA Assistant Arknights @@ -29,36 +24,66 @@ An Arknights assistant Based on image recognition, helps you to complete daily quests efficiently! -Development in progress ✿✿ヽ(°▽°)ノ✿
+Development in progress ✿✿ヽ(°▽°)ノ✿ -
+::: ## Features -- Auto-battle, drop items recognition, auto-uploading to [Penguin Stats](https://penguin-stats.io/). -- Auto-shifting in the Base, auto efficiency calculation of operators, optimal solution in single room. +- Auto-battle, drop items recognition, auto-uploading to [Penguin Stats](https://penguin-stats.io/), [Yituliu](https://ark.yituliu.cn/). +- Auto-shifting in the Base, auto efficiency calculation of operators, optimal solution in single room; also supports [customized schedule](./protocol/base-scheduling-schema.md). - Auto-recruitment, support for expedited plan. Auto-uploading recruitment data to [Penguin Stats](https://penguin-stats.io/result/stage/recruit/recruit), [Yituliu](https://ark.yituliu.cn/survey/maarecruitdata). +- Supports manual identification of the public recruitment interface to facilitate selection of high-star public recruitment. +- Supports identifying operator lists, counting existing and unavailable operators and their potential, and displaying them in the open recruitment identification interface. +- Depot recognition and upports exporting to [Penguin Stats Planner](https://penguin-stats.cn/planner)、[Arknight Tools](https://arkntools.app/#/material)、[ARK-NIGHTS Operator Builds](https://ark-nights.com/settings). - Visiting friends, collecting credits and purchasing items, collecting daily rewards, completing daily quests in one click! - Auto-battle for Integrated Strategy (I.S.) for collecting originium ingots and candles. - Importing JSON task file for auto-battle! [Video](https://www.bilibili.com/video/BV1H841177Fk/) -- Depot recognition and upports exporting to [Penguin Stats Planner](https://penguin-stats.cn/planner), [Arknight Tools](https://arkntools.app/#/material), and [ARK-NIGHTS Operator Builds](https://ark-nights.com/settings) - Support C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP and other interfaces, easy to integrate and call, customize your MAA! -Talk is cheap. Show me the pictures!
+Talk is cheap. Show me the pictures! -![en1](https://user-images.githubusercontent.com/99072975/232383365-0b6f657a-c482-4a82-86eb-c129bf676f0c.png) -![en2](https://user-images.githubusercontent.com/99072975/232383370-250eec85-15a1-49cd-8d8d-77545658ae74.png) + + +
+ + +
+ + + + ## Download -- [Stable/Beta](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest)
+- [Stable/Beta](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest) - [Nightly](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) ## How to Use ### Basic Settings -Check [Beginner’s Guide](./1.0-BEGINNER'S_GUIDE.md) and [User Manual](./1.1-USER_MANUAL.md). +Check [Beginner’s Guide](./manual/newbie.md) and [User Manual](./manual/introduction/). ## FAQ @@ -68,23 +93,78 @@ Check [Beginner’s Guide](./1.0-BEGINNER'S_GUIDE.md) and [User Manual](./1.1-US - Custom connection settings. - Download speed is too slow, or the mirror site is not accessible. - Download halfway and prompt "login"/"authentication" +- The connection is fine and the task starts, but nothing happens. -Check [FAQ](./1.2-FAQ.md). +Check [FAQ](./manual/faq.md). ## Supports for overseas clients -At present, most of the functions of the International client (US client), Japanese client, Korean client, and traditional Chinese client have been supported. However, due to the small number of overseas users and the shortage of project personnel, many functions have not been fully tested, so please experience it yourself.
+At present, most of the functions of the International client (US client), Japanese client, Korean client, and traditional Chinese client have been supported. However, due to the small number of overseas users and the shortage of project personnel, many functions have not been fully tested, so please experience it yourself. If you encounter a bug, or have a strong demand for a certain function, welcome to [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) and [Discussions](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) to ask questions. And feel free to join us in building the MAA! Please refer to [Overseas Clients Adaptation](#overseas-clients-adaptation) -## Associated Projects +### CLI Support -- New Framework: [MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework) -- New GUI: [MaaAsstElectronUI](https://github.com/MaaAssistantArknights/MaaAsstElectronUI) -- [Co-pilot (auto-battle) site](https://prts.plus): [frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend) -- Backend: [MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter) -- [Website](https://www.maa.plus): [frontend](https://github.com/MaaAssistantArknights/maa-website) +MAA supports command line interface (CLI) operation, supports Linux, macOS and Windows, and can be used for automated scripts or on servers without graphical interfaces. Check [CLI Guide](./manual/cli/intro.md) + +## Join us + +### Associated Projects + +**Currently, the project team is very short of front-end experts. If you have relevant experience, you are welcome to join us!** + +- New Framework: [MaaFramework](https://github.com/MaaXYZ/MaaFramework) +- New GUI: [MaaAsstElectronUI](https://github.com/MaaAssistantArknights/MaaX) +- [Co-pilot (auto-battle) site](https://prts.plus) Frontend: [maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend) +- [Co-pilot (auto-battle) site](https://prts.plus) Backend: [MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter) +- [Website](https://www.maa.plus): [Frontend](https://github.com/MaaAssistantArknights/maa-website) - Deep Learning: [MaaAI](https://github.com/MaaAssistantArknights/MaaAI) +### i18n + +MAA supports multiple languages and uses Weblate for localization management. If you're multilingual, feel free to help us translate at [MAA Weblate](https://weblate.maa-org.net). + +MAA uses Chinese (Simplified) as its first language, and all translation entries are in Chinese (Simplified). + +[![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/) + +### Development Related Information + +#### Windows + +Check [Development Guide](./develop/development.md). + +#### Linux | MacOS + +Check [Linux Compiling Tutorial](./develop/linux-tutorial.md) + +#### API + +- [C interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/include/AsstCaller.h): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Cpp/main.cpp) +- [Python interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/asst/asst.py): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/sample.py) +- [Golang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Golang): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Golang/maa/maa.go) +- [Dart interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Dart) +- [Java interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) +- [Java HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/Readme.md) +- [Rust interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust/src/maa_sys): [HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust) +- [TypeScript interface](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader) +- [Woolang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/maa.wo):[Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/demo.wo) +- [Integration Documentation](./protocol/integration.md) +- [Callback Schema](./protocol/callback-schema.md) +- [Task Schema](./protocol/task-schema.md) +- [Copilot Schema](./protocol/copilot-schema.md) + +#### Overseas Clients Adaptation + +Please refer to [Overseas clients Adaptation](./develop/overseas-client-adaptation.md). For the functions already supported by the CN client, most of the overseas clients adaptation tasks only need screenshots and simple JSON modification. + +#### For Novice Users of GitHub + +Check [Introduction to Github Pull request Flow](./develop/development.md#introduction-to-github-pull-request-flow). + +#### Issue Bot + +Check [Issue Bot Usage](./develop/issue-bot-usage.md). + ## Acknowledgements ### Open-source Libraries @@ -101,12 +181,13 @@ If you encounter a bug, or have a strong demand for a certain function, welcome - ~~C++ Base64 encoding/decoding[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ ZIP library: [zlib](https://github.com/madler/zlib) - C++ Gzip library: [gzip-hpp](https://github.com/mapbox/gzip-hpp) -- Touch event producer for Android: [minitouch](https://github.com/openstf/minitouch) +- Touch event producer for Android: [Minitouch](https://github.com/DeviceFarmer/minitouch) - Touch event producer for Android: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) - WPF MVVM framework: [Stylet](https://github.com/canton7/Stylet) -- WPF control library: [HandyControl](https://github.com/HandyOrg/HandyControl) -- C# JSON library: [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) -- Downloader: [aria2](https://github.com/aria2/aria2) +- WPF control library: [HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) +- C# Log:[Serilog](https://github.com/serilog/serilog) +- C# JSON library: [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime) +- ~~Downloader: [aria2](https://github.com/aria2/aria2)~~ ### Data Source @@ -122,51 +203,6 @@ Thanks to all friends who contribute to development/testing for making MAA bette [![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) -## Development Related Information - -### Windows - -1. Download pre-built third-party libraries. - - ```cmd - python maadeps-download.py - ``` - -2. Open `MAA.sln` with Visual Studio 2022, right-click `MaaWpfGui` and set it as the startup project. -3. Right-click `MaaWpfGui` - Properties - Debugging - Enable Local Debugging (so you can hang the breakpoint on the C++ Core). -4. (Optional) If you are going to submit a PR, I recommend you enable [clang-format support](./2.2-DEVELOPMENT.md#using-clang-format-in-visual-studio). - -### Linux/MacOS - -Please refer to [Linux Tutorial](./2.1-LINUX_TUTORIAL.md) - -### API - -- [C interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/include/AsstCaller.h): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) -- [Python interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/asst/asst.py): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py) -- [Golang interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Golang/): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Golang/maa/maa.go) -- [Dart interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Dart) -- [Java interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java): [Integration Example](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) -- [Java HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Java/Readme.md) -- [Rust interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Rust/src/maa_sys): [HTTP interface](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/master/src/Rust) -- [TypeScript interface](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader) -- [Integration Documentation](./3.1-INTEGRATION.md) -- [Callback Schema](./3.2-CALLBACK_SCHEMA.md) -- [Task Schema](./3.4-TASK_SCHEMA.md) -- [Copilot Schema](./3.3-COPILOT_SCHEMA.md) - -### Overseas Clients Adaptation - -Please refer to [Overseas clients Adaptation](./2.5-OVERSEAS_CLIENTS_ADAPTATION.md). For the functions already supported by the CN client, most of the overseas clients adaptation tasks only need screenshots and simple JSON modification. - -### For Novice Users of GitHub - -[Development](./2.2-DEVELOPMENT.md#introduction-to-github-pull-request-flow) - -### Issue Bot - -Please refer to [Issue Bot Usage](./2.3-ISSUE_BOT_USAGE.md) - ## Disclaimer - This software is open source under the [GNU Affero General Public License v3.0 only](https://spdx.org/licenses/AGPL-3.0-only.html). @@ -175,10 +211,12 @@ Please refer to [Issue Bot Usage](./2.3-ISSUE_BOT_USAGE.md) ## Advertisement -User Group: [Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1), [QQ Group](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html)
-[Copilot JSON Sharing](https://prts.plus)
-[Bilibili Live](https://live.bilibili.com/2808861): live coding on this program
-[Technical Discussion (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2)
+User Group: [Telegram](https://t.me/+Mgc2Zngr-hs3ZjU1), [QQ Group](https://ota.maa.plus/MaaAssistantArknights/api/qqgroup/index.html) +[Copilot JSON Sharing](https://prts.plus) +[Bilibili Live](https://live.bilibili.com/2808861): live coding on this program +[Technical Discussion (QQ Group)](https://jq.qq.com/?_wv=1027&k=ypbzXcA2) [Dev Group(QQ Group)](https://jq.qq.com/?_wv=1027&k=JM9oCk3C) Please click "Star" if you consider it helpful! Thank you for your support! + + diff --git a/docs/glossary/class.md b/docs/glossary/class.md index 74fe5e9c1f..3c64b85e25 100644 --- a/docs/glossary/class.md +++ b/docs/glossary/class.md @@ -77,3 +77,5 @@ ---|---|---|--- 干员附带单位|Operator attached unit|召喚ユニット|오퍼레이터 추가 유닛 无职业陷阱|No class trap|罠|무직업 함정 + + \ No newline at end of file diff --git a/docs/glossary/general.md b/docs/glossary/general.md index a9e5baab64..128fd79e18 100644 --- a/docs/glossary/general.md +++ b/docs/glossary/general.md @@ -15,3 +15,5 @@ 好友|Friends|戦友|친구 情报|Info|図鑑|정보 理智|Sanity|理性|이성 + + diff --git a/docs/glossary/items.md b/docs/glossary/items.md index f1d4ff4966..a759159ba2 100644 --- a/docs/glossary/items.md +++ b/docs/glossary/items.md @@ -186,3 +186,5 @@ ID信息更新卡|ID Info Update Card|ID情報更新カード|ID 정보 갱신 声望|EXP|名声|경험치 演习券|Drill Plan|演習券|연습권 无人机|Drone|ドローン|드론 + + diff --git a/docs/glossary/operators.md b/docs/glossary/operators.md index ad45b4e105..0fd9488e60 100644 --- a/docs/glossary/operators.md +++ b/docs/glossary/operators.md @@ -357,3 +357,5 @@ char_4132_ascln|阿斯卡纶|Ascalon|| char_4133_logos|逻各斯|Logos|| char_4134_cetsyr|魔王|Civilight Eterna|| char_4145_ulpia|乌尔比安|Ulpianus|| + + diff --git a/docs/index.md b/docs/index.md index 79e14052cf..7daac2843e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,25 +1,35 @@ --- home: true - +navbar: false +containerClass: home +heroText: MAA 文档站 | Document +tagline: 选择语言 | Select Language +heroAlt: MAA Logo +heroImage: https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png +heroFullScreen: true actions: - - text: Link Start! - link: /readme.html + - text: 简体中文 + link: ./zh-cn/ + icon: signs-post type: primary -# features: -# - title: 多设备兼容 -# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 -# - title: 完全托管 -# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 -# - title: 高性能 -# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 -# - title: 高效率 -# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 -# - title: 高自定义 -# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... -# - title: 允许商用 -# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 + - text: 繁體中文 + link: ./zh-tw/ + icon: signs-post + type: primary -# 这到底是谁写的??? + - text: English + icon: lightbulb + link: ./en-us/ + type: primary + - text: 日本語 + link: ./ja-jp/ + icon: signs-post + type: primary + + - text: 한국어 + link: ./ko-kr/ + icon: signs-post + type: primary --- diff --git a/docs/ja-jp/develop/README.md b/docs/ja-jp/develop/README.md new file mode 100644 index 0000000000..429f77147e --- /dev/null +++ b/docs/ja-jp/develop/README.md @@ -0,0 +1,9 @@ +--- +title: 開発関連 +icon: ph:code-bold +index: false +dir: + order: 2 +--- + + diff --git a/docs/ja-jp/開発関連/開発を開始.md b/docs/ja-jp/develop/development.md similarity index 90% rename from docs/ja-jp/開発関連/開発を開始.md rename to docs/ja-jp/develop/development.md index 247140fbee..8b7657c603 100644 --- a/docs/ja-jp/開発関連/開発を開始.md +++ b/docs/ja-jp/develop/development.md @@ -18,9 +18,11 @@ icon: iconoir:developer 3. (自分のアカウントの)リポジトリの `dev` のブランチをローカルに clone をします。 ```bash - git clone <リポジトリの git のリンク> -b dev + git clone --recurse-submodules <リポジトリの git のリンク> -b dev ``` + Visual Studioなどの `--recurse-submodules` パラメータを含まないGit GUIを使用している場合は、クローン後に `git submodule update --init` を実行して、サブモジュールを取得する必要があります。 + 4. 構築済みのサードパーティライブラリをダウンロードする **Python環境が必要ですので、Pythonインストールチュートリアルを自分で検索してください** @@ -37,11 +39,11 @@ icon: iconoir:developer 6. ダブルクリックして `MAA.sln` ファイルを開きます。 Visual Studioは、プロジェクト全体を自動的に読み込みます。 7. VS を設定する - - VS 上記の `RelWithDebInfo` 、 `x64` を選択します (リリース パッケージまたは ARM プラットフォームをコンパイルする場合は、この手順を無視してください) + - VS 上で構成を `RelWithDebInfo` `x64` に選択します (リリースパッケージまたは ARM プラットフォームをコンパイルする場合は、この手順をスキップしてください) - `MaaWpfGui` を右クリックして、 - `プロパティー` - `デバッグ` - `ローカル デバッグを有効にする` (これにより、ブレークポイントを C++ コアにフックできます) 8. ここまで楽しくコードを変更できます~ -9. 開発中は、一定量修正するたびに commit を忘れず、コメントを書くことを忘れないでください。 +9. 開発中は、一定量修正するたびに commit を忘れず、コミットメッセージを書くことを忘れないでください。 git を初めて使用する場合は、 `dev` に直接コミットする代わりに、新しいブランチを作成して変更を加えることをお勧めします ```bash @@ -78,7 +80,7 @@ icon: iconoir:developer git rebase upstream/dev # リベース ``` - 或いは + または ```bash git merge # マージ diff --git a/docs/ja-jp/開発関連/ドキュメントのガイドライン.md b/docs/ja-jp/develop/documentation-guidelines.md similarity index 100% rename from docs/ja-jp/開発関連/ドキュメントのガイドライン.md rename to docs/ja-jp/develop/documentation-guidelines.md diff --git a/docs/ja-jp/開発関連/IssueBotの使う方.md b/docs/ja-jp/develop/issue-bot-usage.md similarity index 100% rename from docs/ja-jp/開発関連/IssueBotの使う方.md rename to docs/ja-jp/develop/issue-bot-usage.md diff --git a/docs/ja-jp/開発関連/Linuxチュートリアル.md b/docs/ja-jp/develop/linux-tutorial.md similarity index 99% rename from docs/ja-jp/開発関連/Linuxチュートリアル.md rename to docs/ja-jp/develop/linux-tutorial.md index 00c98dd4b9..5463708bec 100644 --- a/docs/ja-jp/開発関連/Linuxチュートリアル.md +++ b/docs/ja-jp/develop/linux-tutorial.md @@ -77,6 +77,6 @@ MAAの構築方法はまだ議論されていますが、このチュートリ [CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Cpp/main.cpp) での実装を参照可能 -### C# +### C\# [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Main/AsstProxy.cs) での実装を参照可能 diff --git a/docs/ja-jp/開発関連/海外クライアントの対応.md b/docs/ja-jp/develop/overseas-client-adaptation.md similarity index 100% rename from docs/ja-jp/開発関連/海外クライアントの対応.md rename to docs/ja-jp/develop/overseas-client-adaptation.md diff --git a/docs/ja-jp/開発関連/純WebサイトのPRチュートリアル.md b/docs/ja-jp/develop/pr-tutorial.md similarity index 98% rename from docs/ja-jp/開発関連/純WebサイトのPRチュートリアル.md rename to docs/ja-jp/develop/pr-tutorial.md index 562b5fb449..193955864a 100644 --- a/docs/ja-jp/開発関連/純WebサイトのPRチュートリアル.md +++ b/docs/ja-jp/develop/pr-tutorial.md @@ -60,7 +60,7 @@ Conflictを解決するのは少し面倒ですが、ここでは概念につい 1. まず、MAAのメインリポジトリにアクセスして、コードをforkします。 - ![~ NKHB1CIE8`G(UK@ %3 `H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) + ![image](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) 2. 「Copy the master branch only」オプションを外して、Create Forkをクリックします。 diff --git a/docs/ja-jp/index.md b/docs/ja-jp/index.md deleted file mode 100644 index 0b68a2aba8..0000000000 --- a/docs/ja-jp/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -home: true - -actions: - - text: Link Start! - link: /readme.html - type: primary - -# features: -# - title: 多设备兼容 -# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 -# - title: 完全托管 -# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 -# - title: 高性能 -# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 -# - title: 高效率 -# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 -# - title: 高自定义 -# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... -# - title: 允许商用 -# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 - - ---- diff --git a/docs/ja-jp/manual/cli/README.md b/docs/ja-jp/manual/cli/README.md new file mode 100644 index 0000000000..a5c22b1d27 --- /dev/null +++ b/docs/ja-jp/manual/cli/README.md @@ -0,0 +1,9 @@ +--- +title: CLI ユーザーガイド +icon: material-symbols:terminal +index: false +dir: + order: 6 +--- + + diff --git a/docs/ja-jp/manual/cli/config.md b/docs/ja-jp/manual/cli/config.md new file mode 100644 index 0000000000..c1588f9141 --- /dev/null +++ b/docs/ja-jp/manual/cli/config.md @@ -0,0 +1,452 @@ +--- +order: 4 +icon: material-symbols:settings +--- + +# 配置 maa-cli + +::: 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` 来表示配置目录。 + +所有的配置文件都可以使用 TOML,YAML 或者 JSON 格式,在下面的例子中,我们将使用 TOML 格式,并使用 `.toml` 作为文件扩展名。但是你可以混合这三种格式中的任意一种,只要你的文件扩展名正确。 + +此外,部份任务接受 `filename` 作为参数,如果你使用相对路径,那么相对路径将会相对于配置目录的对应子目录。比如自定义基建计划文件的相对路径应该相对于 `$MAA_CONFIG_DIR/infrast`,而保全派驻的作业文件则相对于 `$MAA_CONFIG_DIR/ssscopilot`。 + +## 自定义任务 + +每一个自定义任务都是一个单独的文件,它们应该位于 `$MAA_CONFIG_DIR/tasks` 目录中。 + +### 基本结构 + +一个任务文件包含多个子任务,每一个子任务是一个 MAA 任务,其包含一下几个选项: + +```toml +[[tasks]] +name = "启动游戏" # 任务的名字,可选,默认为任务类型 +type = "StartUp" # 任务的类型 +params = { client_type = "Official", start_game_enabled = true } # 对应任务的参数 +``` + +具体的任务类型和参数可以在 [MAA 集成文档][task-types] 中找到。注意,目前 maa-cli 并不会验证参数名和参数值是否正确,即使出错也不会产生任何错误信息,除非 MaaCore 在运行时检测到错误。 + +### 任务条件 + +如果你想要根据一些条件运行不同参数的任务,你可以定义多个任务的变体: + +```toml +[[tasks]] +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` + +# 在 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" } # 当结束时间小于开始时间时,结束时间被视为第二天的时间 +params = { plan_index = 0 } + +[[tasks.variants]] +condition = { type = "Time", end = "12:00:00" } # 如果开始时间被省略,那么只要当前时间小于结束时间时,这个条件就会被匹配 +params = { plan_index = 1 } + +[[tasks.variants]] +condition = { type = "Time", start = "12:00:00" } # 如果结束时间被省略,那么只要当前时间大于开始时间时,这个条件就会被匹配 +params = { plan_index = 2 } +``` + +这里的 `condition` 字段用于确定哪一个变体应该被使用,而匹配的变体的 `params` 字段将会被合并到任务的参数中。 + +**注意**:如果你的自定义基建计划文件使用相对路径,应该相对于 `$MAA_CONFIG_DIR/infrast`。此外,由于基建文件是由 MaaCore 而不是 maa-cli 读取的,因此这些文件的格式必须是 JSON。同时,maa-cli 不会读取基建文件,也不会根据其中定义的时间段来选择相应的子计划。因此,必须通过 `condition` 字段来指定在相应时间段使用正确的基建计划的参数中的 `plan_index` 字段。这样可以确保在适当的时间段使用正确的基建计划。 + +除了 `Time` 条件,还有 `DateTime`,`Weekday`,`DayMod`条件。`DateTime` 条件用于指定一个时间段,`Weekday` 条件用于指定一周中的某些天,`DayMod` 用于指定一个自定义周期的某些天。 + +```toml +[[tasks]] +type = "Fight" + +# 在夏活期间,刷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 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"], timezone = "Official"} +params = { stage = "CE-6" } + +# 其他时间,刷1-7 +[[tasks.variants]] +params = { stage = "1-7" } +``` + +对与上述所有时间相关的条件,其都可以通过 `timezone` 参数来指定时区,这个参数的值可以是一个数字,表示与 UTC 的偏移量,如果你的时区是东八区,那么你可以指定 `timezone = 8`。这个参数也可以是一个客户端类型,比如 `timezone = "Official"`,这样将会使用官服对应的服务器时间来判断。**注意**,官服的时区不是东八区而是东四区,因为游戏中每天开始时间是 04:00:00 而不是 00:00:00。如果不指定时区,那么直接使用你的本地时区。 + +除了上述确定的条件之外,还有一个依赖于热更新资源的条件 `OnSideStory`,当你启动该条件后,maa-cli 会尝试读取相应的资源来判断当前是否有正在开启的活动,如果有那么对应的变体会被匹配。 比如上述夏活期间刷 `SL-8` 的条件就可以简化为 `{ type = "OnSideStory", client = "Official" }`,这里的 `client` 参数用于确定你使用的客户端,因为不同的客户端的活动时间不同,对于使用官服或者 b 服的用户,这可以省略。通过这个条件,每次活动更新之后你可以只需要更新需要刷的关卡而不需要手动编辑对应活动的开放时间。 + +除了以上基础条件之外,你可以使用 `{ type = "And", conditions = [...] }`,`{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }` 来对条件进行逻辑运算。 +对于想要基建多天排班的用户,可以将 `DayMod` 和 `Time` 组合使用,可以实现多天排班。比如,你想要实现每两天换六次班,那么你可以这样写: + +```toml +[[tasks]] +name = "基建换班 (2天6班)" +type = "Infrast" + +[tasks.params] +mode = 10000 +facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] +dorm_trust_enabled = true +filename = "normal.json" + +# 第一班,第一天 4:00:00 - 12:00:00 +[[tasks.variants]] +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 ` 来获取. + # 比如,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" }, +] + +# 第二班,第一天 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 1 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 第三班,第一天 20:00:00 - 第二天 4:00:00 +[[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 不会被匹配 +# 当然通过调整你的排班时间避免跨天是更好的选择,这里只是为了演示 +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", end = "04:00:00" }, + ] }, +] + +# 第四班,第二天 4:00:00 - 12:00:00 +[[tasks.variants]] +params = { plan_index = 3 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "04:00:00", end = "12:00:00" }, +] + +# 第五班,第二天 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 4 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 第六班,第二天 20:00:00 - 第三天(新的第一天)4:00:00 +[[tasks.variants]] +params = { plan_index = 5 } +[tasks.variants.condition] +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", end = "04:00:00" }, + ] }, +] +``` + +在默认的策略下,如果有多个变体被匹配,第一个将会被使用。如果没有给出条件,那么变体将会总是被匹配,所以你可以把没有条件的变体放在最后,作为默认的情况。 + +你可以使用 `strategy` 字段来改变匹配策略: + +```toml +[[tasks]] +type = "Fight" +strategy = "merge" # 或者 "first" (默认) + +# 在周天晚上使用所有的将要过期的理智药 +[[tasks.variants]] +params = { expiring_medicine = 1000 } + +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "Time", start = "18:00:00" }, + { type = "Weekday", weekdays = ["Sun"] }, +] + +# 默认刷1-7 +[[tasks.variants]] +params = { stage = "1-7" } + +# 在周二、周四和周六,刷CE-6 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } +params = { stage = "CE-6" } + +# 在夏活期间,刷SL-8 +[[tasks.variants]] +params = { stage = "SL-8" } +condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } +``` + +这个例子和上面的例子将刷同样的关卡,但是在周天晚上,将会使用所有的将要过期的理智药。在 `merge` 策略下,如果有多个变体被匹配,后面的变体的参数将合并入前面的变体的参数中。如果多个变体都有相同的参数,那么后面的变体的参数将会覆盖前面的变体的参数。 + +如果没有变体被匹配,那么任务将不会被执行,这可以用于只在特定的条件下运行子任务: + +```toml +# 只在在18:00:00之后进行信用商店相关的操作 +[[tasks]] +type = "Mall" + +[[tasks.variants]] +condition = { type = "Time", start = "18:00:00" } +``` + +### 用户输入 + +对于一些任务,你可能想要在运行时输入一些参数,例如关卡名称。 你可以将对应需要输入的参数设置为 `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 (轻锰矿)" +] +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" # 描述,可选 +[tasks.variants.params.medicine] +# 依赖的参数,键为参数名,值为依赖的参数的预期值 +# 当设置时,只有所有的依赖参数都满足预期值时,这个参数才会被要求输入 +deps = { stage = "1-7" } +default = 1000 +description = "medicine to use" +``` + +对于 `Input` 类型,当运行任务时,你将会被提示输入一个值。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。 +对于 `Select` 类型,当运行任务时,你将会被提示输入一个的索引或者自定义的值(如果允许)。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。 + +`--batch` 选项可以用于在运行任务时跳过所有的输入,这将会使用默认值;如果有任何输入没有默认值,那么将会导致错误。 + +## MaaCore 相关配置 + +和 MaaCore 相关的配置需要放在 `$MAA_CONFIG_DIR/profiles` 目录中。该目录下的每一个文件都是一个配置文件,你可以通过 `-p` 或者 `--profile` 选项来指定配置文件名,不指定时尝试读取 `default` 配置文件。 + +目前支持的配置字段如下: + +```toml +[connection] +preset = "MuMuPro" +adb_path = "adb" +device = "emulator-5554" +config = "CompatMac" + +[resource] +global_resource = "YoStarEN" +platform_diff_resource = "iOS" +user_resource = true + +[static_options] +cpu_ocr = false +gpu_ocr = 1 + +[instance_options] +touch_mode = "MAATouch" +deployment_with_pause = false +adb_lite_enabled = false +kill_adb_on_exit = false +``` + +### 连接配置 + +`[connection]` 相关字段用于指定 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` 可执行文件的路径,你可以指定其路径,或者将其添加到环境变量 `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` 来使用预设的配置: + +```toml +[connection] +preset = "MuMuPro" # 使用 MuMuPro 预设的连接配置 +adb_path = "/path/to/adb" # 如果你需要的话,你可以覆盖预设的 adb 路径,大多数情况下你不需要这么做 +address = "127.0.0.1:7777" # 如果你需要的话,你可以覆盖预设的地址 +``` + +目前只有 `MuMuPro` 一个模拟器的预设,如果有其他常用模拟器的预设,欢迎提交 issue 或者 PR。 + +此处有一个特殊的预设 `PlayCover`,其用于在 macOS 上连接直接通过 `PlayCover` 原生运行的游戏客户端。这种情况下不需要指定 `adb_path` 且 `address` 不是 `adb` l连接的地址而是 `PlayTools` 的地址,具体使用参见 [PlayCover 支持文档][playcover-doc]. + +### 资源配置 + +`[resource]` 相关字段用于指定 MaaCore 加载的资源: + +```toml +[resource] +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`。 + +### 静态选项 + +`[static_options]` 相关字段用于指定 MaaCore 静态选项: + +```toml +[static_options] +cpu_ocr = false # 是否使用 CPU OCR,默认使用 CPU OCR +gpu_ocr = 1 # 使用 GPU OCR 时使用的 GPU ID,如果这个值被留空,那么将会使用 CPU OCR +``` + +### 实例选项 + +`[instance_options]` 相关字段用于指定 MaaCore 实例的选项: + +```toml +[instance_options] +touch_mode = "ADB" # 使用的触摸模式,可选值为 "ADB","MiniTouch","MAATouch" 或者 "MacPlayTools" +deployment_with_pause = false # 是否在部署时暂停游戏 +adb_lite_enabled = false # 是否使用 adb-lite +kill_adb_on_exit = false # 是否在退出时杀死 adb +``` + +注意,`touch_mode` 可选项 `MacPlayTools` 和连接方式 `PlayTools` 绑定。当你使用 `PlayTools` 连接时,`touch_mode` 将会被强制设置为 `MacPlayTools`。 + +## CLI 相关配置 + +CLI 相关的配置需要放在 `$MAA_CONFIG_DIR/cli.toml` 中。目前其包含的配置如下: + +```toml +# MaaCore 安装和更新相关配置 +[core] +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 对应的组件,不推荐使用,分开安装可能会导致版本不一致,从而导致一些问题,该选项可能在未来的版本中移除 +[core.components] +library = true # 是否安装 MaaCore 的库,默认为 true +resource = true # 是否安装 MaaCore 的资源,默认为 true + +# CLI 更新相关配置 +[cli] +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 对应的组件 +[cli.components] +binary = true # 是否安装 maa-cli 的二进制文件,默认为 true + +# 资源热更新相关配置 +[resource] +auto_update = true # 是否在每次运行任务时自动更新资源,默认为 false +backend = "libgit2" # 资源热更新后端,可选值为 "git" 或者 "libgit2",默认为 "git" + +# 资源热更新远程仓库相关配置 +[resource.remote] +branch = "main" # 远程仓库的分支,默认为 "main" +# 远程仓库的 url,如果你想要使用 ssh,你必须配置 ssh_key 的路径 +url = "https://github.com/MaaAssistantArknights/MaaResource.git" +# url = "git@github.com:MaaAssistantArknights/MaaResource.git" +# ssh_key = "~/.ssh/id_ed25519" # path to ssh key +``` + +**注意事项**: + +- MaaCore 的更新通道中 `Alpha` 只在 Windows 上可用; +- 由于 CLI 默认的 API 链接和下载链接都是 GitHub 的链接,因此在国内可能会有一些问题,你可以通过配置 `api_url` 和 `download_url` 来使用镜像。 +- 即使启动了资源热更新,你依然需要安装 MaaCore 的资源,因为资源热更新并不包含所有的资源文件,只是包含部份可更新的资源文件,基础资源文件仍然需要安装。 +- 资源热更新是通过 Git 来拉取远程仓库,如果后端设置为 `git` 那么 `git` 命令行工具必须可用。 +- 如果你想要使用 SSH 协议来拉取远程仓库,你必须配置 `ssh_key` 字段,这个字段应该是一个路径,指向你的 SSH 私钥。 +- 远程仓库的 `url` 设置目前只对首次安装资源有效,如果你想要更改远程仓库的地址,你需要通过 `git` 命令行工具手动更改,或者删除对应的仓库。仓库所在位置可以通过 `maa dir hot-update` 获取。 +- 远程仓库的 `url` 会根据你本机的语言自动设置,如果你的语言是简体中文,那么远程仓库的 `url` 将会被设置为国内的镜像 ,在其他情况则会被设置为 GitHub。如果你在国内但是使用的不是简体中文,或者在国外使用简体中文,那么你可能需要手动设置以获得最佳的体验。 + +## 参考配置 + +- [示例配置][example-config] +- [自用配置][wangl-cc-dotfiles] + +## 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]。 + +[task-types]: ../../protocol/integration.md#任务类型一览 +[emulator-ports]: ../../manual/faq.md#模拟器调试端口 +[playcover-doc]: ../../manual/device/macos.md#-playcover原生运行最流畅- +[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples +[wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa +[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/ +[task-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/task.schema.json +[asst-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/asst.schema.json +[cli-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/cli.schema.json + + diff --git a/docs/ja-jp/manual/cli/faq.md b/docs/ja-jp/manual/cli/faq.md new file mode 100644 index 0000000000..cf1dbb366b --- /dev/null +++ b/docs/ja-jp/manual/cli/faq.md @@ -0,0 +1,35 @@ +--- +order: 5 +icon: ph:question-fill +--- + +# maa-cli 常见问题 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 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 风格配置目录,但是不想设置环境变量,你可以使用下面的命令创建一个符号链接: + +```bash +mkdir -p "$HOME/.config/maa" +ln -s "$HOME/.config/maa" "$(maa dir config)" +``` + +## 2. 运行过程中出现奇怪日志,如何关闭? + +MaaCore 的依赖 `fastdeploy` 会输出一些日志,因此你在运行 maa-cli 时可能会看到类似于下面的日志: + +```plaintext +[INFO] ... /fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.` +``` + +这个日志是由 `fastdeploy` 输出的,对于官方预编译的 MaaCore,这个日志无法关闭。但是如果你是使用包管理器安装的 maa-cli,你可以尝试安装包管理器提供的 MaaCore。包管理器提供的 MaaCore 使用了较新版本的 `fastdeploy`,其日志默认是关闭的。 + +## 3. 在 macOS 下使用 maa-cli 启动的 PlayCover 游戏客户端,无法代理作战且肉鸽无法结算 + +由于未知原因,通过终端启动的 PlayCover 游戏客户端无法代理作战,且肉鸽无法结算。但是该状况仅限于通过终端运行的 maa-cli。因此如果你是在终端交互使用,那么你可能需要手动启动游戏。如果你是通过 cron 等方式运行 maa-cli,那么该问题不会影响你的使用。 + + diff --git a/docs/ja-jp/manual/cli/install.md b/docs/ja-jp/manual/cli/install.md new file mode 100644 index 0000000000..a604b36f7d --- /dev/null +++ b/docs/ja-jp/manual/cli/install.md @@ -0,0 +1,124 @@ +--- +order: 2 +icon: material-symbols:download +--- + +# 安装及编译 maa-cli + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +maa-cli 提供多种方式安装,包括包管理器、预编译二进制文件和通过 `cargo` 自行编译安装。 + +## 通过包管理器安装 + +对于 macOS 和受支持的 Linux 发行版用户,推荐使用包管理器安装 maa-cli。 + +### macOS + +Homebrew 用户可以通过非官方的 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) 安装 maa-cli: + +- 稳定版本: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli + ``` + +- 不稳定预发行版本: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli-beta + ``` + +### Linux + +- Arch Linux 用户可以安装 [AUR 包](https://aur.archlinux.org/packages/maa-cli/): + + ```bash + yay -S maa-cli + ``` + +- ❄️ Nix 用户可以直接运行: + + ```bash + # 稳定版 + nix run nixpkgs#maa-cli + ``` + + ```bash + # 每夜构建 + 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 Action 每日自动更新和构建验证。 + +- 对于在 Linux 上使用 Homebrew 的用户,参见上述 macOS 的安装方式。 + +## 预编译二进制文件 + +如果你的系统不受支持或者不想使用包管理器,你可以点击以下链接下载对应平台的预编译二进制文件,解压后将可执行文件放入 `PATH` 中即可使用。 + +- [macOS](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-universal-apple-darwin.zip) +- [Linux x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-unknown-linux-gnu.tar.gz) +- [Linux aarch64 (arm64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-aarch64-unknown-linux-gnu.tar.gz) +- [Windows x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-pc-windows-msvc.zip) + +如果你的平台不在上述列表中,可以尝试自行编译安装(参见下文)。 + +## 编译安装 + +Rust 开发者可以通过 `cargo` 自行编译安装 maa-cli: + +- 稳定版本: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked + ``` + +- 开发版本: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked + ``` + +### 编译选项 + +从源码编译时,你可以通过 `--no-default-features` 禁用默认的特性,然后通过 `--features` 来启用特定的特性。目前可用的特性有: + +- `cli_installer`: 启用 `maa self update` 命令,用于更新自身,这个特性默认启用; +- `core_installer`: 启用 `maa install` 和 `maa update` 命令,用于安装和更新 MaaCore 及资源,这个特性默认启用; +- `git2`: 提供 `libgit2` 资源更新后端,这个特性默认启用; +- `vendored-openssl`: 自行编译 `openssl` 库,而不是使用系统的 `openssl` 库,这个特性默认禁用,这个特性通常在你的系统没有安装 `openssl` 库或者 `openssl` 版本过低时启用。 + +## 安装 MaaCore 及资源 + +maa-cli 只提供了一个命令行界面,它需要 MaaCore 和资源来运行任务。一旦 maa-cli 安装完成,你可以通过它安装 MaaCore 及资源: + +```bash +maa install +``` + +对于使用包管理器安装的用户,可以通过包管理器安装 MaaCore: + +- Homebrew: + + ```bash + brew install MaaAssistantArknights/tap/maa-core + ``` + +- Arch Linux: + + ```bash + yay -S maa-assistant-arknights + ``` + +- Nix: + + ```bash + nix-env -iA nixpkgs.maa-assistant-arknights + ``` + +**注意**:只有使用包管理器安装 maa-cli 的用户才能使用包管理器安装 MaaCore,否则请使用 `maa install` 命令安装。此外,`maa install` 通过下载官方预编译的 MaaCore,而包管理器安装的 MaaCore 的编译选项和依赖版本与官方预编译的版本不同。这不会影响 maa-cli 的使用,但可能会导致 MaaCore 的功能和性能有所不同。比如,包管理器安装的 MaaCore 使用较新版本的 `fastdeploy`,而官方预编译的 MaaCore 使用较旧版本的 `fastdeploy`。而在新版本的 `fastdeploy` 中,日志可以被隐藏,这可以消除了一些不必要的日志输出。 + + diff --git a/docs/ja-jp/manual/cli/intro.md b/docs/ja-jp/manual/cli/intro.md new file mode 100644 index 0000000000..774bd79b1d --- /dev/null +++ b/docs/ja-jp/manual/cli/intro.md @@ -0,0 +1,27 @@ +--- +order: 1 +icon: material-symbols:toc +--- + +# maa-cli 介绍 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +一个使用 Rust 编写的简单 [MAA][maa-home] 命令行工具。 + +## 功能 + +- 运行预定义或自定义的任务,例如 `maa fight`,`maa run `; +- 使用 `maa install` 和 `maa update` 安装和更新MaaCore及资源; +- 使用 `maa self update` 更新自身。 + +## 文档 + +- [安装及编译](install.md) +- [使用](usage.md) +- [配置](config.md) +- [常见问题](faq.md) + +[maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights/ diff --git a/docs/ja-jp/manual/cli/usage.md b/docs/ja-jp/manual/cli/usage.md new file mode 100644 index 0000000000..2f36545f37 --- /dev/null +++ b/docs/ja-jp/manual/cli/usage.md @@ -0,0 +1,97 @@ +--- +order: 3 +icon: material-symbols:summarize +--- + +# 使用 maa-cli + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +maa-cli 主要功能是通过调用 MaaCore,自动化完成明日方舟的游戏任务。此外,为了方便使用,maa-cli 还提供了管理 MaaCore 的功能。 + +## 管理 MaaCore + +maa-cli 可以安装和更新 MaaCore 及资源,只需运行以下命令: + +```bash +maa install # 安装 MaaCore 及资源 +maa update # 更新 MaaCore 及资源 +``` + +## 更新 maa-cli 自身 + +maa-cli 可以更新自身,只需运行以下命令: + +```bash +maa self update +``` + +**注意**:使用包管理器安装 maa-cli 的用户请使用包管理器更新 maa-cli,此命令在这些用户中无效。 + +## 运行任务 + +一旦完成了 MaaCore 的安装,通常情况下,你无需额外配置就可以直接运行任务。默认配置可能不适用于所有用户,如果你在运行任务时遇到问题,你可以参考 [配置文档][config-core] 修改配置。 + +### 预定义任务 + +对于常见任务,maa-cli 提供了一些预定义的任务: + +- `maa startup [client]`: 启动游戏并进入主界面,`[client]` 是客户端类型,如果留空则不会启动游戏客户端。 +- `maa closedown`: 关闭游戏客户端; +- `maa fight [stage]`: 运行战斗任务,`[stage]` 是关卡名称,例如 `1-7`;留空选择上次或者当前关卡; +- `maa copilot `: 运行自动战斗任务,其中 `` 是作业的 URI,其可以是 `maa://1234` 或者本地文件路径 `./1234.json`; +- `maa roguelike [theme]`: 自动集成战略,`[theme]` 是集成战略的主题,可选值为 `Phantom`,`Mizuki` 以及 `Sami`; + +上述任务接受一些参数,你可以通过 `maa --help` 来查看具体的参数。 + +对于官服玩家,如果你想要打开游戏,使用 3 个理智药刷 BB-7,然后关闭游戏,你可以运行以下命令: + +```bash +maa startup Official && maa fight BB-7 -m 3 && maa closedown +``` + +### 自定义任务 + +由于MAA支持的任务繁多,maa-cli无法提供所有任务的预定义选项。除此之外,你可能需要像上述的例子一样运行多个任务。为了解决这个问题,maa-cli提供了自定义任务的功能。自定义任务能够组合不同的任务,并且更精细地控制每个任务的参数以及执行顺序。此外,自定义任务支持条件判断,可以根据条件来决定是否执行某个任务,或者以何种参数执行某个任务。这可以用于自动化你的日常任务。自定义任务通过配置文件定义,具体配置文件的位置和编写方式请参考 [自定义任务文档][custom-task]。在编写好配置文件后,你可以通过 `maa run ` 来运行自定义任务,这里的 `` 是一个自定义任务文件名,不包括扩展名。 + +### 任务总结 + +不管是预定义任务还是自定义任务,maa-cli 都会在任务运行结束后输出任务的总结信息, +其包括每个子任务的运行时间(开始时间、结束时间、运行时长)。对于部份任务,还会输出任务的结果汇总: + +- `fight` 任务: 关卡名称,次数,消耗理智药个数以及掉落统计; +- `infrast`: 各设施进驻的干员,对于制造站和贸易站,还会包括产物类型; +- `recruit`: 每次公招的 tag ,星级以及状态,以及总共的招募次数; +- `roguelike`: 探索次数,投资次数。 + +如果你不想要任务总结,可以通过 `--no-summary` 参数来关闭。 + +### 任务日志 + +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_LOG_PREFIX` 来改变这个行为。设置为 `Always` 时,总是会包含前缀,设置为 `Auto` 时输出到日志文件时会包含前缀,而输出到 stderr 时不会包含前缀,而设置为 `Never` 时即使是写入日志文件时也不会包含前缀。 + +### 其他子命令 + +除了上述的命令外,maa-cli 还提供了其他一些子命令: + +- `maa list`: 列出所有可用的任务; +- `maa dir `: 获取特定目录的路径,比如 `maa dir config` 可以用来获取配置目录的路径; +- `maa version`: 获取 `maa-cli` 以及 `MaaCore` 的版本信息; +- `maa convert [output]`: 将 `JSON`,`YAML` 或者 `TOML` 格式的文件转换为其他格式; +- `maa complete `: 生成自动补全脚本; +- `maa activity [client]`: 获取游戏的当前活动信息,`client` 是客户端类型,默认为 `Official`。 +- `maa cleanup`: 清除 `maa-cli` 和 `MaaCore` 的缓存。 +- `maa import [-t ]:` 导入配置文件,`file` 是配置文件的路径。`-t` 选项可以指定配置文件的类型,如 `cli`, `profile`, `infrast` 等。 + +更多命令的使用方法可以通过 `maa help` 查看,具体命令的使用方法可以 通过 `maa help ` 查看。 + +[config-core]: config.md#MaaCore-相关配置 +[custom-task]: config.md#自定义任务 + + diff --git a/docs/ja-jp/manual/connection.md b/docs/ja-jp/manual/connection.md new file mode 100644 index 0000000000..e21210d828 --- /dev/null +++ b/docs/ja-jp/manual/connection.md @@ -0,0 +1,241 @@ +--- +order: 3 +icon: mdi:plug +--- + +# 接続設定 + +:::note +実機に関する問題については、[Android 実機](./device/android.md) を参照してください。 +::: + +## ADB パス + +:::info 技術的詳細 +自動検出ではエミュレータの ADB を使用しますが、自動検出に問題が発生することがあります。その場合、手動で設定する必要があります。 +`ADB の強制置換`は、Google が提供する ADB をダウンロードして置換することで、一度設定すれば解決します。 +::: + +### エミュレータ提供の ADB を使用する + +エミュレータのインストールパスに移動し、Windows ではタスクマネージャでプロセスを右クリックし、「ファイルの場所を開く」を選択します。 + +最上位またはサブディレクトリに、`adb` を含む exe ファイルがあるはずです。検索機能を使用して選択します。 + +:::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` を選択します。 + +おすすめは、直接 `MAA` フォルダに解凍することです。そうすると、ADB パスに `.\platform-tools\adb.exe` を入力することができます。`MAA` フォルダと一緒に移動することもできます。 + +## 接続アドレス + +:::tip +ローカルで実行しているエミュレータの接続アドレスは `127.0.0.1:<ポート番号>` または `emulator-<四桁の数字>` です。 +::: + +### ポート番号の取得 + +#### エミュレータ関連ドキュメントおよび参考ポート + +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` +- [逍遥](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503` +- [夜神](https://support.yeshen.com/zh-CN/qt/ml) `62001` + +他のエミュレータについては[Zhaoqingqing's Blog](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)を参照してください。 + +#### 多重起動について + +- MuMu 12 の多重起動マネージャーでは、実行中のポートを確認できます。 +- Bluestacks 5 の設定内で現在の多重ポートを確認できます。 +- _追加予定_ + +#### 代替案 + +- オプション 1 : ADB コマンドを使用してエミュレータのポートを確認します + + 1. **単一**のエミュレータを起動し、他に Android デバイスがこのコンピュータに接続されていないことを確認します。 + 2. ADB 実行可能ファイルが格納されているフォルダでターミナルを起動します。 + 3. 次のコマンドを実行します。 + + ```sh + # Windows コマンド プロンプト + adb devices + # Windows PowerShell + .\adb devices + ``` + + 以下は、出力例です + + ```text + List of devices attached + 127.0.0.1:<ポート番号> device + emulator-<四桁の数字> device + ``` + + 使用 `127.0.0.1:<ポート>` または `emulator-<四桁の数字>` を接続アドレスとして使用します。 + +- 方法2:すでに確立されたADB接続を検索する + + 1. 方法1を実行します。 + 2. `Windowsキー+S` を押して検索バーを開き、「リソースモニター」を入力して開きます。 + 3. `ネットワーク` タブに切り替えて、モニターするポート名であるシミュレータープロセス名(例:`HD-Player.exe`)を検索します。 + 4. シミュレータープロセスのすべてのリッスンポートを記録します。 + 5. `TCP接続` タブの中で、`adb.exe` を探し、リモートポート列でシミュレーターリッスンポートに一致するポートを探します。 + +### 自動的に複数のエミュレーターを起動する + +複数のエミュレーターを同時に操作する場合、MAAフォルダを複数コピーし、**異なるMAA**、**同じadb.exe**、**異なる接続アドレス** を使用して接続します。 +**[ブルースタックス国際版](./device/windows.md)を例に**、2つの多重起動エミュレーターの開始方法を紹介します。 + +#### エミュレーターexeにコマンドを添付して複数起動する + +1. **単一**のエミュレーターを複数開始します。 +2. タスクマネージャーを開き、該当するエミュレータープロセスを見つけます。詳細情報タブに移動し、列ヘッダーで右クリックし、「列の選択」をクリックし、「コマンドライン」を選択します。 +3. 追加された「コマンドライン」列で、「...\Bluestacks_nxt\HD-Player.exe」の後にある内容を見つけます。 +4. 見つけた `--instance Nougat32` のような内容を「起動設定」 - 「追加コマンド」に記入します。 + +::: tip +操作が終了したら、「ステップ2」で開いた「コマンドライン」列を再度非表示にすることをお勧めします。これにより、パフォーマンスの低下を防ぎます。 +::: + +::: details 例 + +```text +多開1: +エミュレーターパス: C:\Program Files\BlueStacks_nxt\HD-Player.exe +追加コマンド: --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" +``` + +`--cmd launchApp --package` の部分は起動後に指定のパッケージ名のアプリを自動で起動するためのものであり、必要に応じて変更してください。 +::: + +#### シミュレーターやアプリを使用した複数起動の方法 + +1. マルチインスタンス管理ツールを開き、対応するシミュレーターのショートカットを追加します。 +2. シミュレーターのショートカットのパスを「起動設定」-「シミュレーターのパス」に入力します。 + +::: tip +一部のシミュレーターはアプリケーションのショートカットを作成することができ、それを使用してシミュレーターを直接起動し、明日方舟を開くことができます。 +::: + +::: details 例 + +```text +多開1: +シミュレーターのパス: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開1.lnk +多開2: +シミュレーターのパス: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開2-明日方舟.lnk +``` + +::: + +もし `シミュレータのパス` を使用して複数の起動操作を行う場合、`起動設定` - `追加コマンド` を空に設定することをお勧めします。 + +### BlueStacksシミュレータ Hyper-V 启動ごとにポート番号が異なります + +`接続設定` で `接続構成` を `BlueStacksシミュレータ` に設定し、その後 `自動接続の検出` と `毎回再検出` をチェックします。 + +通常、これで接続できるはずです。接続できない場合、複数のシミュレータコアが存在するか、問題が発生している可能性がありますので、以下の追加設定をお読みください。 + +#### `Bluestacks.Config.Keyword` を指定 + +::: info 注意 +複数の起動機能が有効になっている場合や複数のシミュレータコアがインストールされている場合は、追加の設定が必要です。 +::: + +`.\config\gui.json` 内で `Bluestacks.Config.Keyword` フィールドを検索し、内容を `"bst.instance.<シミュレータ番号>.status.adb_port"` に設定します。シミュレータ番号はシミュレータパスの `BlueStacks_nxt\Engine` 内で確認できます。 + +::: details 例 +Nougat64 コア: + +```json +"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", +``` + +Pie64_2 コア:(コア名の後の数字は複数の起動コアを示します) + +```json +"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", +``` + +::: + +#### `Bluestacks.Config.Path` を指定 + +::: info 注意 +MAA は現在 `bluestacks.conf` の保存場所をレジストリから読み取ろうとしますが、この機能が機能しない場合は、手動で設定ファイルのパスを指定する必要があります。 +::: + +1. ブルースタックスシミュレータのデータディレクトリ内にある `bluestacks.conf` ファイルを見つけます。 + + - 国際版のデフォルトパスは `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` です。 + - 中国本土版のデフォルトパスは `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf` です。 + +2. 初めて使用する場合は、一度 MAA を実行して、MAA が設定ファイルを自動生成するようにします。 + +3. **MAA を閉じた後に**、`gui.json` を開き、`Configurations` の下の現在の設定名フィールド(設定-切り替え設定 で確認できます。デフォルトは `Default`)を検索し、`Bluestacks.Config.Path` フィールドを検索して、`bluestacks.conf` の完全なパスを入力します。(スラッシュはエスケープ `\\` を使用してください) + +::: details 例 +`C:\ProgramData\BlueStacks_nxt\bluestacks.conf` を使用しています。 + +```json +{ + "Configurations": { + "Default": { + "Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf" + // 残りの構成フィールドは、手入力しないで修正します。 + } + } +} +``` + +::: + +## 接続設定 + +対応するエミュレーターの設定を選択してください。リストにない場合は汎用設定を選択してください。汎用設定が利用できない場合は他の利用可能な設定を試し、選択してください。 + +具体的な違いについては、[ソースコード](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/4f1ef65a9c217c414f52461e88e9705115b5c338/resource/config.json#L74)をご覧ください。 + +### MuMu スクリーンショット強化モード + +公式版 MuMu 12 V3.8.13 またはそれ以降のバージョンを使用し、バックグラウンドでの保持を無効にしてください。方舟専用版や国際版などはサポートされていません。 + +1. `設定` - `接続設定` で `MuMu スクリーンショット強化モードを有効にする` をチェックします。 + +2. `MuMu エミュレーターのパス` には `MuMuPlayer-12.0` フォルダのパスを入力してください。例: `C:\Program Files\Netease\MuMuPlayer-12.0`。 + +3. `インスタンス番号` には MuMu マルチインスタンス内でのエミュレーターの番号を入力してください。主インスタンスの場合は `0` です。 + +4. `インスタンスのスクリーン` には `0` を入力してください。 + +#### バックグラウンドでの保持について + +推奨される設定は、バックグラウンドでの保持を無効にすることです。この設定では、インスタンスのスクリーンは常に `0` です。 + +バックグラウンドでの保持を有効にすると、MuMu エミュレーターのタブの順序がインスタンスのスクリーンの番号と一致する必要があります。例: `0` はエミュレーターのデスクトップ、`1` は明日方舟クライアントです。 + +バックグラウンドでの保持についてのサポートは非常に不完全であり、さまざまな問題が発生する可能性がありますので、使用を強く推奨しません。 + +## タッチモード + +1. [Minitouch](https://github.com/DeviceFarmer/minitouch):Android タッチイベントを操作するための C 言語で書かれたツールで、`evdev` デバイスを操作し、外部プログラムがタッチイベントとジェスチャーをトリガーできる Socket インターフェースを提供します。Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できなくなりました。[出典](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up) +2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):MAA による Java で Minitouch を再実装し、Android の `InputDevice` を使用し、追加の機能を付加しました。高バージョンの Android での利用可能性はまだテスト中です。~~テストを手伝ってください~~ +3. Adb Input:直接 ADB を呼び出して、Android の `input` コマンドを使用してタッチ操作を行います。最も互換性があり、最も遅い速度です。 + +## ADB Lite + +MAA によって独自に実装された ADB クライアントで、オリジナルの ADB よりも多重の ADB プロセスを開始せずに済み、パフォーマンスの低下を抑えることができますが、一部のスクリーンショット方法は使用できません。 + +推奨されますが、具体的な利点と欠点はまだフィードバックを得ていません。~~テストを手伝ってください x2~~ diff --git a/docs/ja-jp/manual/device/README.md b/docs/ja-jp/manual/device/README.md new file mode 100644 index 0000000000..9eff87ceec --- /dev/null +++ b/docs/ja-jp/manual/device/README.md @@ -0,0 +1,9 @@ +--- +title: エミュレータのサポート +icon: mingcute:laptop-fill +index: false +dir: + order: 5 +--- + + diff --git a/docs/ja-jp/使用説明/エミュレータのサポート/物理的なAndroidデバイス.md b/docs/ja-jp/manual/device/android.md similarity index 99% rename from docs/ja-jp/使用説明/エミュレータのサポート/物理的なAndroidデバイス.md rename to docs/ja-jp/manual/device/android.md index 28018346f7..4492192b6f 100644 --- a/docs/ja-jp/使用説明/エミュレータのサポート/物理的なAndroidデバイス.md +++ b/docs/ja-jp/manual/device/android.md @@ -6,6 +6,7 @@ icon: mingcute:android-fill # 物理的な**Android**デバイス ::: info 注意 + 1. Android 10 以降、SELinux が `Enforcing` モードの場合、Minitouch は使用できません、別のタッチモードに切り替えてください。または SELinux を **一時的に** `Permissive` モードに切り替え。 2. Androidエコシステムは複雑なため、モードが正常に使用できるようになるまで、MAAの `設定` - `接続設定` で `接続構成` を `一般モード` 、 `互換モード` 、 `2番目の決議` または `一般モード(ブロックされた例外出力)`に変更してみてください。 3. MAAは `16:9` 比率の `720p` 以上の解像度にしか対応していません、ほとんどの近代的なデバイスを含む、`16:9` または `9:16` の画面比率でないデバイスは解像度を強制的に変更する必要があります。接続されているデバイスの画面解像度の比率がネイティブで `16:9` または `9:16`,の場合は、`解像度の変更` セクションをスキップできます。 @@ -17,7 +18,7 @@ icon: mingcute:android-fill 典型的な `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` と入力しエンターキーを押します。 @@ -86,7 +87,7 @@ icon: mingcute:android-fill - 一部の不規則なデザインのアプリケーションでは、解像度を元に戻した後もコンテンツのレイアウトが正しくない場合がありますが、該当するアプリケーションまたはデバイスを再起動することで解決できます。 ::: danger 注意 -この作業を行う前に**必ずデバイスを再起動し**解像度を元に戻さないと、デバイスによっては予期せぬ結果を招く可能性があります ~~,レイアウトミス、アプリ点滅、起動の失敗などをありえるが、それだけじゃないかも~~ +この作業を行う前に**必ずデバイスを再起動し**解像度を元に戻さないと、デバイスによっては予期せぬ結果を招く可能性があります ~~,レイアウトミス、アプリ点滅、起動の失敗などをありえるが、それだけじゃないかも~~ ::: ## 解像度の自動変更 diff --git a/docs/ja-jp/使用説明/エミュレータのサポート/Linuxでのエミューレータ.md b/docs/ja-jp/manual/device/linux.md similarity index 99% rename from docs/ja-jp/使用説明/エミュレータのサポート/Linuxでのエミューレータ.md rename to docs/ja-jp/manual/device/linux.md index 258c12c22f..54c72d8c7e 100644 --- a/docs/ja-jp/使用説明/エミュレータのサポート/Linuxでのエミューレータ.md +++ b/docs/ja-jp/manual/device/linux.md @@ -3,7 +3,7 @@ order: 3 icon: teenyicons:linux-alt-solid --- -# Linuxでのエミューレータ +# Linux でのエミューレータ ## 準備作業 diff --git a/docs/ja-jp/使用説明/エミュレータのサポート/Macでのエミューレータ.md b/docs/ja-jp/manual/device/macos.md similarity index 100% rename from docs/ja-jp/使用説明/エミュレータのサポート/Macでのエミューレータ.md rename to docs/ja-jp/manual/device/macos.md diff --git a/docs/ja-jp/使用説明/エミュレータのサポート/Windowsでのエミューレータ.md b/docs/ja-jp/manual/device/windows.md similarity index 99% rename from docs/ja-jp/使用説明/エミュレータのサポート/Windowsでのエミューレータ.md rename to docs/ja-jp/manual/device/windows.md index 6d5d1af2ca..3216e60b20 100644 --- a/docs/ja-jp/使用説明/エミュレータのサポート/Windowsでのエミューレータ.md +++ b/docs/ja-jp/manual/device/windows.md @@ -3,7 +3,7 @@ order: 1 icon: ri:windows-fill --- -# Windowsでのエミューレータ +# Windows でのエミューレータ ::: tip 問題がある場合は [よくある質問](../よくある質問.md)を、先にお読みください。 diff --git a/docs/ja-jp/使用説明/よくある質問.md b/docs/ja-jp/manual/faq.md similarity index 92% rename from docs/ja-jp/使用説明/よくある質問.md rename to docs/ja-jp/manual/faq.md index 1a73635ae0..21080a2825 100644 --- a/docs/ja-jp/使用説明/よくある質問.md +++ b/docs/ja-jp/manual/faq.md @@ -1,4 +1,5 @@ --- +order: 4 icon: ph:question-fill --- @@ -6,6 +7,7 @@ icon: ph:question-fill ::: warning MAA はバージョン 5.0 で .NET 8 に更新され、エンドユーザーにとって次のような影響を与えます: + 1. MAA には .NET 8 Runtime が必要になり、起動時にインストールするようにユーザーに自動的にプロンプトが表示されます。インストールに失敗した場合は、以下をお読みになり、インストールパッケージをダウンロードして手動でインストールしてください。 2. MAA が Windows Defender によって誤検出されることはなくなりました。~~それが目的です~~ 3. [.NET 8 は Windows 7/8/8.1 システムをサポートしていません](https://github.com/dotnet/core/issues/7556)、その結果、MAA もサポートしなくなりました。 たとえそれがまだ機能していたとしても。 @@ -29,7 +31,7 @@ MAA はバージョン 5.0 で .NET 8 に更新され、エンドユーザーに ここでは公式のインストール方法のみを掲載しており、サードパーティの統合パックの信頼性を保証することはできません。 ::: -- [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) と [.NET8](https://download.visualstudio.microsoft.com/download/pr/f18288f6-1732-415b-b577-7fb46510479a/a98239f751a7aed31bc4aa12f348a9bf/windowsdesktop-runtime-8.0.1-win-x64.exe)パッケージをインストールし、コンピューターを再起動してアプリを実行してみてください。 +- [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) と [.NET 8.0.6](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=x86-,.NET%20Desktop%20Runtime,-8.0.6)パッケージをインストールし、コンピューターを再起動してアプリを実行してみてください。 #### Windows N/KN 関連 @@ -57,7 +59,7 @@ MAA はバージョン 5.0 で .NET 8 に更新され、エンドユーザーに - 記のランタイム・ライブラリのインストールはすべて、コンポーネントストレージサービス(CBS、TrustedInstaller/TiWorker、WinSxS)に依存しています。 コンポーネントストレージサービスが破損している場合、インストールは正しく動作しません。 -- システムの再インストール以外の修正はお勧めできませんので、いわゆる「軽量/ライト」システムの使用は避けてください。 +- システムの再インストール以外の修正はお勧めできませんので、いわゆる「軽量/ライト」システムの使用は避けてください。 ## 接続エラー @@ -70,8 +72,9 @@ MAA はバージョン 5.0 で .NET 8 に更新され、エンドユーザーに - MAA `設定` - `接続設定` - `adbパス` が自動的に入力されていることを確認してください。入力されている場合は、この手順を無視してください。 ::: details 未記入の場合は -+ エミュレータのインストールパスを見つける。Windowsはエミュレータの実行中にタスクマネージャーでプロセスを右クリックし、 `ファイルの場所を開く` をクリックします。 -+ トップまたはボトムのディレクトリに高確率で `adb.exe` が存在する可能性があります(必ずしもこの名前で呼ばれているとは限りません。`nox_adb.exe`、`HD-adb.exe`、`adb_server.exe` などと呼ばれる場合があります。とにかく名前に `adb` が含まれるexeです) 。それを選択してください。 + +- エミュレータのインストールパスを見つける。Windowsはエミュレータの実行中にタスクマネージャーでプロセスを右クリックし、 `ファイルの場所を開く` をクリックします。 +- トップまたはボトムのディレクトリに高確率で `adb.exe` が存在する可能性があります(必ずしもこの名前で呼ばれているとは限りません。`nox_adb.exe`、`HD-adb.exe`、`adb_server.exe` などと呼ばれる場合があります。とにかく名前に `adb` が含まれるexeです) 。それを選択してください。 ::: - 接続アドレスが正しく入力されていることを確認してください。使用しているエミュレータのadbアドレスをインターネットで検索できます。通常は `127.0.0.1:5555` のような形式です(LDPlayerを除く)。 @@ -80,11 +83,11 @@ MAA はバージョン 5.0 で .NET 8 に更新され、エンドユーザーに 関連資料およびリファレンス adbポート: - - [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` - - [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` - - [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` - - [Nemu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503` - - [NOX](https://support.yeshen.com/zh-CN/qt/ml) `62001` +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [Nemu](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503` +- [NOX](https://support.yeshen.com/zh-CN/qt/ml) `62001` 他のエミュレーターは[@赵青青のブログ](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)を参照してください @@ -144,6 +147,7 @@ Pie64_2コア:(コア名の後の数字は、これがマルチコアであ ```json "Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", ``` + ::: ### `Bluestacks.Config.Path` を指定する diff --git a/docs/ja-jp/manual/introduction/README.md b/docs/ja-jp/manual/introduction/README.md new file mode 100644 index 0000000000..7e93e71106 --- /dev/null +++ b/docs/ja-jp/manual/introduction/README.md @@ -0,0 +1,9 @@ +--- +title: 詳細説明 +icon: mdi:information-outline +index: false +dir: + order: 2 +--- + + diff --git a/docs/ja-jp/manual/introduction/combat.md b/docs/ja-jp/manual/introduction/combat.md new file mode 100644 index 0000000000..c7f8be29ee --- /dev/null +++ b/docs/ja-jp/manual/introduction/combat.md @@ -0,0 +1,102 @@ +--- +order: 3 +--- + +# 刷理智 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 常规设置 + +- `吃理智药` + `吃源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智。 + + - `吃理智药` 指定补充几次理智(可能一次吃多瓶药)。 + - `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。 + - `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。 + - `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。 + +- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。 +- `吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后,MAA 会将 `吃理智药` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `吃源石` 判断。 + +::: 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 行为_ | + +::: + +### 关卡选择 + +- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡 + 确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。 +- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。 +- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有: + - 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。 + - 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。 + - 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。 + - 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。 + - 剿灭作战。必须输入 `Annihilation`。 + - 别传中的 `OF-1` / `OF-F3` / `GT-5`。 + - 当期 SS 活动 后三关。在自动访问 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。 + - 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。 + +::: details 示例画面 +![示例画面](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/2d466efd-142a-4c28-9b2f-06caa08ef9f4) +::: + +### 剿灭模式 + +- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。 +- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。 +- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。 + +## 高级设置 + +### 备选关卡 + +备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。 + +1. 例子:关卡选择 `龙门币-6/5`,备选选择 `1-7` 和 `经验-6/5`: + - 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` 和 `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错。 + - 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错。 + - 由于 `经验-6/5` 前存在常驻关卡 `1-7`,在这种情况下,MAA 永远也不会前往 `经验-6/5` 战斗。 +2. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。 + +### 剩余理智 + +在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。 + +- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。 +- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。 +- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。 +- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。 + +### 连战次数 + +- MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。 +- 若设置的次数过多但理智不足,MAA 会直接进行 `吃理智药` 或 `吃源石` 操作,并继续尝试连战。 +- 若未设置 `吃理智药` 或 `吃源石`,MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` ,MAA 会直接开始刷 `剩余理智` 关卡。 + +### 掉落识别 + +- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 +- 支持自定义企鹅物流用户 ID。 + +## 异常检测 + +- 支持自动勾选 `代理指挥`。 +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 支持等级提升后继续任务。 +- 代理失败时会放弃本次行动并重新战斗。 diff --git a/docs/ja-jp/manual/introduction/copilot.md b/docs/ja-jp/manual/introduction/copilot.md new file mode 100644 index 0000000000..60011833c0 --- /dev/null +++ b/docs/ja-jp/manual/introduction/copilot.md @@ -0,0 +1,43 @@ +--- +order: 9 +--- + +# 自动战斗 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +欢迎使用作业分享站 [prts.plus](https://prts.plus),[抄作业.com](https://抄作业.com) 使用及分享作业文件。 + +## 抄作业 + +支持任意 `可编队关卡` 和 `保全派驻` 模式的自动战斗。 + +- 本功能需要在有 `开始行动` 按钮的编队选择界面开始运行。 + 之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件` 或 `填写作业站神秘代码` 即可导入作业。 +- `自动编队` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。 + - 可根据个人需要(例如需要使用 `好友助战` 时)取消 `自动编队`,手动编队后开始。 + - 可根据任务需要为自动编队 `追加自定干员` 和 `补充低信赖干员`。 + - 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。 + - 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。 +- 可设置 `循环次数`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。 +- 可使用 `战斗列表` 功能进行同一区域关卡的自动连续战斗。 + - 战斗列表下方三个按钮从左到右依次为 `批量导入`、`添加关卡`、`清空关卡`。 + `添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡, + - 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。 + - 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。 + - 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。 +- **请务必为优质作业点赞,以提高作业评分并激励作业制作者。** + ![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) + +## 写作业 + +- 请使用 [作业编辑器](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) 共同讨论作业制作等问题。 diff --git a/docs/ja-jp/manual/introduction/credit.md b/docs/ja-jp/manual/introduction/credit.md new file mode 100644 index 0000000000..3b85a8e50a --- /dev/null +++ b/docs/ja-jp/manual/introduction/credit.md @@ -0,0 +1,20 @@ +--- +order: 5 +--- + +# 获取信用及购物 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +- 会自动访问好友获取信用点,并前往信用交易所购物。 +- 借助战赚信用: + - MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。 + - 关卡选择为 `当前/上次` 时不会执行借助战任务。 + +## 高级设置 + +- 优先购买和黑名单都是关键字匹配,例如填 `碳` 会匹配 `碳` 和 `碳素`。 +- 分隔符的分号既可以使用英文半角 `;` 也可以使用中文全角 `;`。 +- `信用点低于300时停止购买商品` 即使在低于 300 时也会购买优先购买商品。 diff --git a/docs/ja-jp/manual/introduction/infrastructure.md b/docs/ja-jp/manual/introduction/infrastructure.md new file mode 100644 index 0000000000..7017c7e970 --- /dev/null +++ b/docs/ja-jp/manual/introduction/infrastructure.md @@ -0,0 +1,33 @@ +--- +order: 4 +--- + +# 基建换班 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 换班策略 + +- 自动计算并选择**单设施内的最优解**,支持所有通用类技能和特殊技能组合。 +- 自动识别经验书、赤金、源石碎片、芯片,分别使用相应的干员组合。 +- 自动按照 `无人机用途` 选择的方式使用无人机。 +- 自动识别心情进度条,将剩余心情百分比小于 `基建工作心情阈值` 的干员进驻宿舍。 + +## 额外说明 + +- 基建换班目前均为单设施最优解,而非跨设施的全局最优解。 + - 可识别并使用的例子:`巫恋+龙舌兰`、`红云+稀音`。 + - 不可识别并使用的例子:`迷迭香体系`、`红松骑士团`。 +- 若 `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。 +- 会客室仅缺一个线索时,会选择对应线索倾向的干员,其余情况选择通用干员。 +- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks.json` 中的 `SelectClue` - `maxTimes` 字段。 +- 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮`、`逻各斯` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。 +- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 +- 可自行选择需要 MAA 处理的设施类别,默认全选。 + +## 自定义基建换班 (Beta) + +- 一图流的大佬们帮忙写了一个 [排班生成器](https://ark.yituliu.cn/tools/schedule),可参考 [基建协议文档](../../protocol/base-scheduling-schema.md) 使用。 +- MAA 文件夹下 `/resource/custom_infrast/` 中内置了几套理论极限效率的作业,可用作参考。由于其对干员及练度的需求极高,不推荐直接使用。 diff --git a/docs/ja-jp/manual/introduction/integrated-strategy.md b/docs/ja-jp/manual/introduction/integrated-strategy.md new file mode 100644 index 0000000000..0872a28cc3 --- /dev/null +++ b/docs/ja-jp/manual/introduction/integrated-strategy.md @@ -0,0 +1,33 @@ +--- +order: 7 +--- + +# 自动肉鸽 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +MAA 默认选择最新一期主题,可在 `自动肉鸽` - `肉鸽主题` 中更改目标主题。 + +- 请在游戏内将对应肉鸽主题置顶在终端处,虽然目前也可以自动导航,但不保证长期可用性。 +- 请提前手动结束**非目标主题**的探索。 +- MAA 不会自动选择难度,在未选择难度的情况下会在难度选择界面卡住/反复进出。 +- 设置中可选择分队、开局干员(仅单个干员名)等。 + +## 战斗策略 + +MAA 没有 AI 功能,自动肉鸽中的一切操作都是预设的策略,所有关卡战斗都是调用内置的作业文件。 + +详情请查阅 [肉鸽协议](../../protocol/integrated-strategy-schema.md)。 + +- 支持自动识别干员及练度,并自动选择较优干员及技能。 +- 支持识别商店物品,优先购买更强力的收藏品。 + +## 异常检测 + +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 战斗时长超过 5 分钟会自动撤退所有地面单位,超过 6 分钟会自动放弃当局战斗,避免互相刮痧耗时。 +- 如果任务出现问题,会自动放弃当次探索并重试。 + +但如果多次在同一个位置卡住,请提交 Issue 反馈,并附带日志和截图。 diff --git a/docs/ja-jp/使用説明/詳細説明.md b/docs/ja-jp/manual/introduction/introduction_old.md similarity index 94% rename from docs/ja-jp/使用説明/詳細説明.md rename to docs/ja-jp/manual/introduction/introduction_old.md index 953b0211d9..4d1a09a94e 100644 --- a/docs/ja-jp/使用説明/詳細説明.md +++ b/docs/ja-jp/manual/introduction/introduction_old.md @@ -1,8 +1,9 @@ --- +order: 0 icon: ic:baseline-article --- -# MAA使用説明書 +# 使用説明書(古い) ## 詳細な説明 @@ -11,13 +12,13 @@ icon: ic:baseline-article - ステージ選択に必要なステージがない場合ならば、MAAで `現在/前回` を選択し、ゲーム内で手動でステージを選択し、**任務開始**と**自動指揮**がゲーム画面に存在することを確認してください。 - 現在この画面が表示されていない場合、 `現在/前回` は自動的に端末のホームページの右下隅にある「前回の参加作戦へ」ステージに入ります。 - `タスク設定` - `作戦` - `高度な設定` の `ステージ名を入力する` を有効にすることで、ステージ番号を手動で入力することもできます。 現在サポートされているナビゲーションステージは以下の通りです: - - すべてのメインストーリーステージ。通常または厄難奮戦に切り替えるには、ステージの末尾に `-NORMAL` または `-HARD` を追加します。 - - 龍門幣、作戦記録の5/6ステージ。ただし、 `CE-6` / `LS-6` を入力する必要があります。6ステージを実行できない場合は、自動的に5ステージに移行します。 - - アーツ学、購買資格証、建築資材。 `CA-5` / `AP-5` / `SK-5` を入力する必要があります。 - - SoCの場合のみ、完全なステージ番号を入力する必要があります。例: `PR-A-1` 。 - - `Annihilation`(殲滅作戦)。 - - `OF-1` / `OF-F3` / `GT-5` のみサポートされます。 - - 現在のSSイベントの最後の3つのステージ。 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。 + - すべてのメインストーリーステージ。通常または厄難奮戦に切り替えるには、ステージの末尾に `-NORMAL` または `-HARD` を追加します。 + - 龍門幣、作戦記録の5/6ステージ。ただし、 `CE-6` / `LS-6` を入力する必要があります。6ステージを実行できない場合は、自動的に5ステージに移行します。 + - アーツ学、購買資格証、建築資材。 `CA-5` / `AP-5` / `SK-5` を入力する必要があります。 + - SoCの場合のみ、完全なステージ番号を入力する必要があります。例: `PR-A-1` 。 + - `Annihilation`(殲滅作戦)。 + - `OF-1` / `OF-F3` / `GT-5` のみサポートされます。 + - 現在のSSイベントの最後の3つのステージ。 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) で更新が自動的にダウンロードされた後、メイン画面に対応するメッセージが表示されます。 - 再刻印SSアクティビティは `SSReopen-XX` と入力するとXX-1~XX-9ステージを一度にクリアできます。 `SSReopen-IC` など。 ::: details 画面例 @@ -64,8 +65,8 @@ icon: ic:baseline-article #### ストラテジー - - **単一施設内での最適解**を自動的に計算して選択した上で全てのスキルとスキルの組み合わせをサポートしています。 - - 作戦記録・純金・源石の欠片・SoCに対応したオペレーターの組み合わせを変えて配置することをサポートします! +- **単一施設内での最適解**を自動的に計算して選択した上で全てのスキルとスキルの組み合わせをサポートしています。 +- 作戦記録・純金・源石の欠片・SoCに対応したオペレーターの組み合わせを変えて配置することをサポートします! #### 基地で働く体力をパーセントで指定可能 @@ -82,7 +83,7 @@ icon: ic:baseline-article - 訓練所を使用していない場合 `アイリーニ` などのオペレーターを宿舎に移動させたくない場合は、設定で `作業中のオペレーターを宿舎に移動しない` にチェックしてください。 ただし、この場合、疲労が蓄積していないオペレータも宿舎に入れなくなる可能性があります。 - 制御中枢のストラテジーが複雑すぎるため。現在では `アーミヤ` `スワイヤー` `ケルシー` `レインボー小隊` および体力値が+0.05のスキルのオペレーターのみが考慮されており、今後徐々に最適化される予定です。 -### カスタム基地設定(テスト中) +### カスタム基地設定(テスト中) - [Yituliu](https://ark.yituliu.cn/)のエキスパートが、基地シフトをドキュメントでエクスポートできる[ジェネレーター](https://ark.yituliu.cn/tools/schedule)の作成に協力しました。[ドキュメント](../プロトコルドキュメント/基地シフトAPI.md)を参照して使用できます。 - `/resource/custom_infrast/`のフォルダに、非常に効率的なタスクのセットがいくつか組み込まれており、参考として使用することができます。(昇進2の該当オペレーターがいれば、直接使用可能です。) @@ -90,7 +91,7 @@ icon: ic:baseline-article ### FPと購買部 - 戦友の基地訪問は自動的に行われ、FPポイントを獲得します。 -- ワルファリンの金の助けで: +- ワルファリンの金の助けで: - サポートオペレーターを使用し、「青く燃ゆる心」の`OF-1`ステージをクリアします(理性消費無し)。ステージがアンロックされていない場合は、このオプションを選択しないでください。 - ステージ選択が`現在/前回`に設定されている場合は、反映されません。 diff --git a/docs/ja-jp/manual/introduction/others.md b/docs/ja-jp/manual/introduction/others.md new file mode 100644 index 0000000000..b8827f391e --- /dev/null +++ b/docs/ja-jp/manual/introduction/others.md @@ -0,0 +1,29 @@ +--- +order: 11 +--- + +# 其他 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 启动时自动切换配置 + +MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`。 + +部分符号需要转义,参考 Json。例子:在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`。 + +## 开始前/结束后脚本 + +v4.13.0 后支持设置开始前/结束后脚本,可在任务前后自动执行批处理文件。输入框内需填写批处理文件即 `*.bat` 的绝对或相对路径。 + +## 其他说明 + +- 首页左侧任务可以拖动改变顺序,基建换班设置中设施顺序同理。 +- 主界面和设置中的配置更改通常会自动保存,标有 `*` 号或 `(仅一次)` 的选项,以及通过右键单击复选框得到的半选开关都会在 MAA 重启后重置。 +- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮中心的点击概率最高,距离中心越远,点击概率越低)。 +- 底层算法纯 C++ 开发,并设计了多重缓存技术,最大限度降低 CPU 和内存占用。 +- 软件支持自动更新 ✿✿ ヽ(°▽°)ノ ✿ ,推荐非杠精的同学使用公测版,一般来说更新快且 bug 少。(什么 MIUI (╯‵□′)╯︵┻━┻ +- 如果新版本自动下载失败,可手动下载 OTA 压缩包后直接放到 MAA 目录下,会自动更新的。 +- 在 Windows 版本中,MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。 diff --git a/docs/ja-jp/manual/introduction/reclamation-algorithm.md b/docs/ja-jp/manual/introduction/reclamation-algorithm.md new file mode 100644 index 0000000000..072dab0c51 --- /dev/null +++ b/docs/ja-jp/manual/introduction/reclamation-algorithm.md @@ -0,0 +1,24 @@ +--- +order: 8 +--- + +# 生息演算 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。 + +## 默认模式 + +1. 需要在生息演算主界面开始任务(导航还没写) +2. 不能在已经有存档的情况下使用(删除现有存档即可) +3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后) + +## 制造刷点数 + +1. 需要在进入生息演算中能看到驻扎地的页面开始 +2. 若未填写道具名称,则默认制造荧光棒 +3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地 +4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修 diff --git a/docs/ja-jp/manual/introduction/recruit.md b/docs/ja-jp/manual/introduction/recruit.md new file mode 100644 index 0000000000..e3c19c8322 --- /dev/null +++ b/docs/ja-jp/manual/introduction/recruit.md @@ -0,0 +1,23 @@ +--- +order: 2 +--- + +# 公开招募 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动公招 和 [公招识别](./tools.md#公招识别) 是两个不同的功能! + +## 自动公招 + +支持自动使用 `加急许可`,支持设置单次任务最大招募次数,可配合 `自动使用加急许可` 一次性刷光招募券。 + +当识别到出现 1、5、6 星标签都会弹出通知提示。 + +公招刷新时会自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 + +## 高级设置 + +`自动确认` 即 MAA 自动选择标签并进行招募,`手动确认` 即不进行自动选择与招募。 diff --git a/docs/ja-jp/manual/introduction/rewards.md b/docs/ja-jp/manual/introduction/rewards.md new file mode 100644 index 0000000000..47bc207a52 --- /dev/null +++ b/docs/ja-jp/manual/introduction/rewards.md @@ -0,0 +1,13 @@ +--- +order: 6 +--- + +# 领取奖励 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动领取每日奖励和每周奖励。 + +同时支持其他奖励类型,具体请查看设置。 diff --git a/docs/ja-jp/manual/introduction/startup.md b/docs/ja-jp/manual/introduction/startup.md new file mode 100644 index 0000000000..23911c7b24 --- /dev/null +++ b/docs/ja-jp/manual/introduction/startup.md @@ -0,0 +1,25 @@ +--- +order: 1 +--- + +# 开始唤醒 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动启动模拟器,自动启动客户端,自动进入游戏。 + +自动启动模拟器需额外设置,详见启动设置,且需勾选连接设置内的 `ADB 连接失败时尝试启动模拟器`。 + +## 账号切换 + +仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。 + +- 例子: + - 官服:`123****8901`,可输入 `123****8901`、`123`、`8901`、`3****8` + - B 服:`张三`,可输入 `张三`、`张`、`三` + +## 连接设置 + +[点我](../connection.md) diff --git a/docs/ja-jp/manual/introduction/tools.md b/docs/ja-jp/manual/introduction/tools.md new file mode 100644 index 0000000000..84e0663dfe --- /dev/null +++ b/docs/ja-jp/manual/introduction/tools.md @@ -0,0 +1,43 @@ +--- +order: 10 +--- + +# 小工具 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 公招识别 + +打开公招标签界面,点击开始识别即可启动。 + +如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。 + +## 干员识别 (Beta) + +可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。 + +## 仓库识别 (Beta) + +支持从首页自动进入仓库。若自动跳转失败,请手动切换到仓库 `养成材料` 界面并**滑动到最左侧**后开始功能。 + +目前支持导出到[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 干员培养表](https://ark-nights.com/settings)。 + +如您是某个数据站的站长,也欢迎联系我们适配贵站的材料 JSON 协议~ + +也许后面可能会用来做一些更实用的功能。(画饼 + +## 视频识别 (Alpha) + +可识别攻略视频,并自动生成作业文件,在自动战斗页面拖入视频文件即可启动。 + +要求 16:9 画幅 720p 及以上画质,无黑边、模拟器边框、异形屏适配等干扰因素。 + +## 牛牛抽卡 + +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** + +[牛牛航空](https://www.bilibili.com/opus/926129394412421126)没报上名?没关系!现在每个人都有自己的牛牛航空!并且在抽卡的过程中还会截图并显示在界面中央! diff --git a/docs/ja-jp/manual/newbie.md b/docs/ja-jp/manual/newbie.md new file mode 100644 index 0000000000..a66d915441 --- /dev/null +++ b/docs/ja-jp/manual/newbie.md @@ -0,0 +1,64 @@ +--- +order: 1 +icon: ri:guide-fill +--- + +# 始めに + +## 準備 + +1. システムバージョンの確認 + + MAAはWindows 10 / 11 のみサポートしています。それ以前のバージョンのWIndowsについては[よくある質問](./faq.md)を確認してください。 + +2. ランタイムライブラリをインストールする + + MAAはVCRedist x64と.NET 8が必要です。スタートボタンを右クリックしてターミナルを開き、下記のコマンドを入力しエンターキーを押してインストールしてください。 + + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` + +3. 環境にあったバージョンのダウンロード + + [MAA公式ウェブサイト](https://maa.plus/) は自動的に環境を感知しバージョンを選択します。この文章を読んでいるほとんどのユーザーはWindows x64だと思われます。 + +4. Zipファイルを解凍する + + 解凍が完了したことを確認し、MAAを別のフォルダに解凍してください。`C:\`や`C:\Program Files\`などのUACパーミッションが必要なパスにMAAを展開しないでください。 + +5. エミュレータのサポートを確認 + + [エミュレータのサポート](./device)をクリックして、使用しているエミュレータのサポートを確認してください。 + +6. エミュレータの解像度を正しく設定する + + エミュレータの解像度は比率が`16:9`で、英語版は最小`1280x720`それ以外のクライアントの場合は最小`1920x1080`に設定してください。 + +## 初回起動 + +1. 設定ガイドに従って設定してください。複数のポートがあるなど、特別な要件がない場合は、接続設定を変更する必要はありません。 + +2. MAAを初めて実行すると、ホットアップデートが実行されます。MAAを終了し、右のログでプロンプトが表示された後に再起動してください。 + +3. 左側のタスクリストをドラッグしてタスクを並べ替え、チェックボックスをオンまたはオフにして実行するタスクを選択します。 + +4. Link Start! + +## 高度な設定 + +ドキュメントを参照してください。 + +## その他 + +- **問題が発生したらドキュメントをお読みください。** + +1. ログファイルはMAAフォルダの下にある`debug`という名前のフォルダにあります。ログは重要です。他の人に助けを求めるときは、必ず`asst.log`と`gui.log`を準備してください。 + +2. MAAでは,ユーザーの皆様の多様なニーズに可能な限りお応えするため,数多くのカスタマイズオプションを用意しています。例えば,「ステージ名の手入力」や「オペレーターを宿舎に入れない」などです。 + +3. いくつかのオプションの上にマウスポインターを置くと、「仕事中のオペレーターを宿舎に入れない」など、詳細な指示が表示されます。 + +4. チェックボックスの中には、右クリックで半選択状態にできるものもあります。このチェックボックスは、次回MAAを起動したときに自動的にクリアになります。 + +5. 使用用途がはっきりしない場合は、先行版リリースを選択しないでください。 diff --git a/docs/ja-jp/protocol/README.md b/docs/ja-jp/protocol/README.md new file mode 100644 index 0000000000..cdd9a25690 --- /dev/null +++ b/docs/ja-jp/protocol/README.md @@ -0,0 +1,9 @@ +--- +title: プロトコルドキュメント +icon: basil:document-solid +index: false +dir: + order: 3 +--- + + diff --git a/docs/ja-jp/プロトコルドキュメント/基地シフトAPI.md b/docs/ja-jp/protocol/base-scheduling-schema.md similarity index 100% rename from docs/ja-jp/プロトコルドキュメント/基地シフトAPI.md rename to docs/ja-jp/protocol/base-scheduling-schema.md diff --git a/docs/ja-jp/プロトコルドキュメント/コールバックAPI.md b/docs/ja-jp/protocol/callback-schema.md similarity index 97% rename from docs/ja-jp/プロトコルドキュメント/コールバックAPI.md rename to docs/ja-jp/protocol/callback-schema.md index a252dee309..f71f756dde 100644 --- a/docs/ja-jp/プロトコルドキュメント/コールバックAPI.md +++ b/docs/ja-jp/protocol/callback-schema.md @@ -5,7 +5,9 @@ icon: material-symbols:u-turn-left # コールバック図式 -**This document is outdated due to the rapid update of the interface. Since the developers are not good at foreign languages, it is recommended that you refer to the Chinese or English documentation for the latest content** +::: info 注意 +This document is outdated due to the rapid update of the interface. Since the developers are not good at foreign languages, it is recommended that you refer to the Chinese or English documentation for the latest content +::: ::: info 注意 コールバックメッセージがバージョンとともに更新される高速反復では、本書は古くなる可能性があります。最新のコンテンツを入手するには、[C#統合ソースコード](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/MaaWpfGui/Main/AsstProxy.cs) を参照してください。 @@ -567,7 +569,7 @@ Todo }, "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}" } - // 現在は ArkPlanner と Lolicon 形式のみ対応、今後対応するサイトが増える可能性あり + // 現在は ArkPlanner と Lolicon (Arkntools) 形式のみ対応、今後対応するサイトが増える可能性あり ``` - `OperBoxInfo` diff --git a/docs/ja-jp/プロトコルドキュメント/自動戦闘API.md b/docs/ja-jp/protocol/copilot-schema.md similarity index 100% rename from docs/ja-jp/プロトコルドキュメント/自動戦闘API.md rename to docs/ja-jp/protocol/copilot-schema.md diff --git a/docs/ja-jp/プロトコルドキュメント/統合戦略API.md b/docs/ja-jp/protocol/integrated-strategy-schema.md similarity index 84% rename from docs/ja-jp/プロトコルドキュメント/統合戦略API.md rename to docs/ja-jp/protocol/integrated-strategy-schema.md index 1cb2e8f121..21a539984f 100644 --- a/docs/ja-jp/プロトコルドキュメント/統合戦略API.md +++ b/docs/ja-jp/protocol/integrated-strategy-schema.md @@ -43,6 +43,7 @@ JSONファイルはコメントをサポートしていません。テキスト ゲーム理解に基づいて、オペレーターを異なる **_groups_** (グループ、関連概念は[自動戦闘フロープロトコル](./自動戦闘API.md)を参照)に分類します ::: info 注意 + 1. 同じグループ内のオペレーターと召喚物は、配置方法が同じである必要があります(つまり、両方が近接か、両方が高所に配置されている) 2. 同じオペレーターや召喚物でも、使用方法に応じて異なるグループに分類されることがあります @@ -155,52 +156,52 @@ JSONファイルはコメントをサポートしていません。テキスト 2. グループ内のオペレーターの各フィールドの意味とスクリプト関連のロジック -```json -{ - "theme": "Phantom", - "priority": [ - "name": "地面阻挡", // グループ名(ここは近距離ブロックグループ) - "doc": "標準ラインは1ギア(雑魚を除去する能力または戦場に立て能力がマウンテンよりも強い)、>マウンテン>2ギア(ブロック>2、自身回復力持て)>スポットであり、戦場に立て能力はスポットよりも少なく、单切または炮灰グループに入れます", - // "doc" フィールドを持つものは、プログラムの実行に影響を与えません - "opers": [ // これにはどのオペレーターが含まれ、順序があり、配置の優先度を表します - { - "name": "百炼嘉维尔", // オペレーター名(ここでは百錬ガヴィル、グループ内で1番目、地上阻止グループを配置する際に、最初に百錬ガヴィルかどうかを確認します) - "skill": 3, // 何技能を使用するか(ここでは3技能を使用する例) - "skill_usage": 2, // スキル使用モード、自動戦闘プロトコルを参照してください、空白または1は自動、2はX回だけ使用(Xは"skill_times" フィールドで設定)、3は現在サポートされていません - "skill_times": 2, // スキルの使用回数、デフォルトは1、"skill_usage" フィールドが2の場合に有効 - "alternate_skill": 2, // 指定されたスキルがない場合に使用される代替スキル、通常は6星オペレーターがE2になってから3技能を使用する場合に指定する必要があります(ここでは3技能がない場合に2技能を使用する) - "alternate_skill_usage": 1, // 代替スキルのスキル使用モード(このフィールドはまだ実装されていません) - "alternate_skill_times": 1, // 代替スキルのスキル使用回数(このフィールドはまだ実装されていません) - "recruit_priority": 900, // 募集優先度、数字が大きいほど優先度が高くなり、900以上は必ず募集することを示し、400以下は一部の重要なオペレーターのE2優先度よりも低い - // 臨時オペレーターの募集優先度は自動的に+800 - "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_offsets": [ // 現在の陣形に応じた募集優先度の調整 - { - "groups": [ // 条件を満たすためにどのグループが必要か - "凯尔希", - "地面阻挡", - "棘刺" - ], - "is_less": false, // 条件は大きいか小さいか、false または省略した場合は大きいです、true の場合は小さいです - "threshold": 2, // 条件を満たす数 - "offset": -300 // 条件を満たした後の募集優先度の調整 - // (ここでは、凯尔希、地面阻挡、棘刺の3つのグループに2人以上のオペレーターがいる場合、バイランカジュビールの募集優先度が300減少します) - } - ] - }, - ... - ], - ], - "team_complete_condition": [ - ... - ] -} -``` + ```json + { + "theme": "Phantom", + "priority": [ + "name": "地面阻挡", // グループ名(ここは近距離ブロックグループ) + "doc": "標準ラインは1ギア(雑魚を除去する能力または戦場に立て能力がマウンテンよりも強い)、>マウンテン>2ギア(ブロック>2、自身回復力持て)>スポットであり、戦場に立て能力はスポットよりも少なく、单切または炮灰グループに入れます", + // "doc" フィールドを持つものは、プログラムの実行に影響を与えません + "opers": [ // これにはどのオペレーターが含まれ、順序があり、配置の優先度を表します + { + "name": "百炼嘉维尔", // オペレーター名(ここでは百錬ガヴィル、グループ内で1番目、地上阻止グループを配置する際に、最初に百錬ガヴィルかどうかを確認します) + "skill": 3, // 何技能を使用するか(ここでは3技能を使用する例) + "skill_usage": 2, // スキル使用モード、自動戦闘プロトコルを参照してください、空白または1は自動、2はX回だけ使用(Xは"skill_times" フィールドで設定)、3は現在サポートされていません + "skill_times": 2, // スキルの使用回数、デフォルトは1、"skill_usage" フィールドが2の場合に有効 + "alternate_skill": 2, // 指定されたスキルがない場合に使用される代替スキル、通常は6星オペレーターがE2になってから3技能を使用する場合に指定する必要があります(ここでは3技能がない場合に2技能を使用する) + "alternate_skill_usage": 1, // 代替スキルのスキル使用モード(このフィールドはまだ実装されていません) + "alternate_skill_times": 1, // 代替スキルのスキル使用回数(このフィールドはまだ実装されていません) + "recruit_priority": 900, // 募集優先度、数字が大きいほど優先度が高くなり、900以上は必ず募集することを示し、400以下は一部の重要なオペレーターのE2優先度よりも低い + // 臨時オペレーターの募集優先度は自動的に+800 + "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_offsets": [ // 現在の陣形に応じた募集優先度の調整 + { + "groups": [ // 条件を満たすためにどのグループが必要か + "凯尔希", + "地面阻挡", + "棘刺" + ], + "is_less": false, // 条件は大きいか小さいか、false または省略した場合は大きいです、true の場合は小さいです + "threshold": 2, // 条件を満たす数 + "offset": -300 // 条件を満たした後の募集優先度の調整 + // (ここでは、凯尔希、地面阻挡、棘刺の3つのグループに2人以上のオペレーターがいる場合、バイランカジュビールの募集優先度が300減少します) + } + ] + }, + ... + ], + ], + "team_complete_condition": [ + ... + ] + } + ``` 3. あなたの理解に基づいて新しいグループとオペレーターを追加してください @@ -334,6 +335,7 @@ JSONファイルはコメントをサポートしていません。テキスト ::: tip これは、シングルカットオペレーターまたは大砲の飼料が必要な一部のユースケースに適しています ::: + ```json "deploy_plan": [ { @@ -351,10 +353,12 @@ JSONファイルはコメントをサポートしていません。テキスト ... ] ``` + 3. 特定の時間にオペレーターを撤退させる ::: tip 肉壁が強すぎてスタンドに留まりたい場合や、配置スペースを移動したい場合は、撤退します! ::: + ```json "retreat_plan": [ // 特定の時間に対象のオペレーターを撤退させます { @@ -363,6 +367,7 @@ JSONファイルはコメントをサポートしていません。テキスト } ] ``` + 4. 特定の時間にスキルを発動する(to do) 5. その他のフィールド(おすすめではありません) @@ -591,3 +596,5 @@ OCRで思わぬ遭遇イベントを認識しますが、選択肢は固定さ ### スキル停止 弾薬消費系のオペレータに便利です。 + + diff --git a/docs/ja-jp/プロトコルドキュメント/統合ドキュメント.md b/docs/ja-jp/protocol/integration.md similarity index 96% rename from docs/ja-jp/プロトコルドキュメント/統合ドキュメント.md rename to docs/ja-jp/protocol/integration.md index 8134daf4b5..0a3b047864 100644 --- a/docs/ja-jp/プロトコルドキュメント/統合ドキュメント.md +++ b/docs/ja-jp/protocol/integration.md @@ -5,7 +5,9 @@ icon: bxs:book # インテグレーション -**This document is outdated due to the rapid update of the interface. Since the developers are not good at foreign languages, it is recommended that you refer to the Chinese or English documentation for the latest content** +::: warning +This document is outdated due to the rapid update of the interface. Since the developers are not good at foreign languages, it is recommended that you refer to the Chinese documentation for the latest content. +::: ## API @@ -81,6 +83,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p "expiring_medicine": int, // 48 時間以内に期限切れになった理性回復剤の最大使用数、オプション、デフォルトは 0 "stone": int, // 純正源石の最大使用数、オプション、デフォルトは 0 "times": int, // 最大周回数、オプション、デフォルトは無限 + "series": int, // 連戦回数、オプション、1~6 "drops": { // ドロップ数の指定、オプション、デフォルトは指定なし "30011": int, // Key: item_ID; value: 素材の数。Keyは resource/item_index.json に記載されています "30062": int // OR 組み合わせ @@ -289,9 +292,12 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p "theme": int, // テーマ、オプション、デフォルトは 1 // 0 - *砂中の火* // 1 - *沙洲遺聞* - "mode": int // モード、オプション、デフォルトは 0 (テーマ *砂中の火* のみがサポートされています) + "mode": int, // モード、オプション、デフォルトは 0 // 0 - すぐにバトルをやめることでバッジと建設ポイントを周回 - // 1 - 水を買ってから基地で鍛造して粗製純金を周回 + // 1 - *砂中の火*:水を買ってから基地で鍛造して粗製純金を周回 + // *沙洲遺聞*:アイテムを自動的に製造してロードして通貨を稼ぐ + "product": string // 自動的に製造されるアイテム、オプション、デフォルトは螢光棒 + // サブストリングを入力することをお勧めします } ``` diff --git a/docs/ja-jp/プロトコルドキュメント/リモート制御API.md b/docs/ja-jp/protocol/remote-control-schema.md similarity index 99% rename from docs/ja-jp/プロトコルドキュメント/リモート制御API.md rename to docs/ja-jp/protocol/remote-control-schema.md index 75380241ac..db803042ef 100644 --- a/docs/ja-jp/プロトコルドキュメント/リモート制御API.md +++ b/docs/ja-jp/protocol/remote-control-schema.md @@ -117,7 +117,7 @@ MAAは、タスクの実行を終了するたびに、エンドポイントを 開発者Aは、 QQBot で MAA を制御したいので、パブリックネットワークで公開されるバックエンドを開発し、2つのエンドポイントを提供します: -``` +```text https://myqqbot.com/maa/getTask https://myqqbot.com/maa/reportStatus。 ``` @@ -144,7 +144,7 @@ Bot がデータベース内のこのレコードに検証済みフラグを設 B開発者はサイトを通じて MAA を一括管理することを想定したサイトを書いているので、独自のユーザー管理システムを持っています。しかし、バックエンドはパブリックネットワーク上にあり、匿名でアクセスできる2つのエンドポイントを提供します。 -``` +```text https://mywebsite.com/maa/getTask https://mywebsite.com/maa/reportStatus。 ``` diff --git a/docs/ja-jp/プロトコルドキュメント/保全駐在API.md b/docs/ja-jp/protocol/sss-schema.md similarity index 100% rename from docs/ja-jp/プロトコルドキュメント/保全駐在API.md rename to docs/ja-jp/protocol/sss-schema.md diff --git a/docs/ja-jp/プロトコルドキュメント/タスクAPI.md b/docs/ja-jp/protocol/task-schema.md similarity index 100% rename from docs/ja-jp/プロトコルドキュメント/タスクAPI.md rename to docs/ja-jp/protocol/task-schema.md diff --git a/docs/ja-jp/readme.md b/docs/ja-jp/readme.md index bdfa9cd89b..d1f7b485f7 100644 --- a/docs/ja-jp/readme.md +++ b/docs/ja-jp/readme.md @@ -1,27 +1,22 @@ -
+--- +icon: ic:round-home +index: true +dir: + order: 0 +--- -LOGO +::: center + +![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256) # MaaAssistantArknights -
-
- C++ -
-
- platform -
-
- license - commit -
-
- stars - GitHub all releases -
-
+![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus) +![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet) +![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4) +![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social) -[简体中文](../readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) +[简体中文](../zh-cn/readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | 日本語 | [한국어](../ko-kr/readme.md) MAAは、MAA Assistant Arknightsです。 @@ -29,9 +24,9 @@ MAAは、MAA Assistant Arknightsです。 画像認識技術に基づいて、ワンクリックですべてのデイリーリクエストを完了します! -絶賛開発中 ✿✿ヽ(°▽°)ノ✿
+絶賛開発中 ✿✿ヽ(°▽°)ノ✿ -
+::: ## 機能一覧 @@ -39,17 +34,45 @@ MAAは、MAA Assistant Arknightsです。 - 自動基地シフト、オペレーター効率計算、単一設備内に最適なソリューション;[カスタムシフト](./プロトコルドキュメント/基地シフトAPI.md)にも対応しています。 - 自動公開求人、緊急招集票を使う、使い切るのもサポート。[PenguinStats](https://penguin-stats.io/result/stage/recruit/recruit)と[Yituliu](https://ark.yituliu.cn/survey/maarecruitdata)へ公開求人データのアップロード。 - 高スターの公開求人を選択するのに便利な公開求人のパネルの手動認識をサポートします。~~(この上級エリートとCost回復はシージかシージか)~~ -- オペレーターのリストを識別し、既存および未所有のオペレーターを記録するためのサポート、公開求人を手動で識別するための潜在データヒントを提供することもできます。(日本語版のクライアントではオペレーターの名刺のフォントサイズが異なるためサポートが貧弱です) -- 倉庫のアイテム認識機能(ベータ) [Arkplanner](https://penguin-stats.io/planner)/[ARK-NIGHTS.com](https://ark-nights.com/settings)と[アークナイツ ツールボックス](https://arkntools.app/#/material)へ出力可能!使用方法はツール内文章を参照してください。 +- 所持オペレーターを認識し、既存および未所有のオペレーターの記録サポート、公開求人を手動で設定するためのヒントを提供することもできます。(日本サーバーではオペレーターの名前部分のフォントサイズが異なるため認識にややブレがあります) +- 倉庫のアイテム認識機能 [Arkplanner](https://penguin-stats.io/planner)/[ARK-NIGHTS.com](https://ark-nights.com/settings)と[アークナイツ ツールボックス](https://arkntools.app/#/material)へ出力可能!使用方法はツール内文章を参照してください。 - 戦友訪問、FP収集、買い物、デイリーリワード収集、ワンクリックして全自動操作! -- 統合戦略自動作戦、オペレーターとレベルの自動認識、源石錐とキャンドルの自動収集、電気ケトルを獲得する! +- 統合戦略自動作戦、オペレーターとレベルの自動認識、源石錐とキャンドルの自動収集、電気ケトルを獲得! - 作業JSONファイルをインポートし、自動操作も可能! [ビデオデモ](https://www.bilibili.com/video/BV1H841177Fk/)(現在JP未対応/中文) - C、Python、Java、Rust、Golang、Java HTTP、Rust HTTPなどの多種多様なインターフェースに対応、統合や呼び出しが簡単で、自分好みにMAAをカスタマイズできます! UIを見れば使い方もすぐ分かる! -![jp1](https://user-images.githubusercontent.com/99072975/232383662-9000d3dd-f6be-4bb6-8ffd-526a8815aa24.png) -![jp2](https://user-images.githubusercontent.com/99072975/232383668-6a42a55c-8c83-4c3c-a203-51e64eb4f39a.png) + + +
+ + +
+ + + + ## ダウンロードリンク @@ -60,12 +83,7 @@ UIを見れば使い方もすぐ分かる! ### 基本設定 -1. [エミュレータのサポート](./使用説明/エミュレータのサポート/Windowsでのエミューレータ.md)を参照して、対応するエミュレーターの操作に進んでください。 -2. エミュレータの解像度を「1280 * 720」以上に変更します。最大は「2K」、アスペクト比は「16:9」です。 - YoStarENでは、ゲームインターフェイスの問題から、解像度を`1920 * 1080`に変更することをお勧めします。 -3. ゲームスタート! - -詳しいマニュアルは[MAA使用説明書](./使用説明/詳細説明.md)を参照してください。 +はじめに[エミュレータのサポート](./manual/device)と[MAA使用説明書](./manual/introduction.md)を参照してください。 ## よくある質問 @@ -77,7 +95,7 @@ UIを見れば使い方もすぐ分かる! - ダウンロードが中途半端になり "ログイン"/"認証 "のプロンプトが出る。 - 接続は成功しますが、オペレーション開始した後に反応がない。 -[よくある質問](./使用説明/よくある質問.md)を参照してください。 +[よくある質問](./manual/faq.md)を参照してください。 ## サーバーに応じてサポートされる機能 @@ -86,9 +104,9 @@ UIを見れば使い方もすぐ分かる! ### CLI支持 -MAA はコマンドラインインタフェース(CLI)操作をサポートし、LinuxとmacOSをサポートし、自動スクリプトやグラフィックインタフェースのないサーバで使用することができる。[CLI使用ガイド](./使用説明/CLIユーザーガイド.md)を参照してください。 +MAA はコマンドラインインタフェース(CLI)操作をサポートし、LinuxとmacOSをサポートし、自動スクリプトやグラフィックインタフェースのないサーバで使用することができる。[CLI使用ガイド](./manual/cli)を参照してください。 -## 私たちに参加して +## 一緒に参加しよう ### 主な関連プロジェクト @@ -96,7 +114,7 @@ MAA はコマンドラインインタフェース(CLI)操作をサポート - 新しいFramework: [MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework) - 新しいGUI:[MaaX](https://github.com/MaaAssistantArknights/MaaX) -- [作業シェアサイト](https://www.prts.plus):[フロントエンド](https://github.com/MaaAssistantArknights/maa-copilot-frontend) +- [作業シェアサイト](https://prts.plus):[フロントエンド](https://github.com/MaaAssistantArknights/maa-copilot-frontend) - バックエンド:[MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter) - [公式ウェブサイト](https://www.maa.plus): [フロントエンド](https://github.com/MaaAssistantArknights/maa-website) - Deep Learning: [MaaAI](https://github.com/MaaAssistantArknights/MaaAI) @@ -105,7 +123,7 @@ MAA はコマンドラインインタフェース(CLI)操作をサポート MAA は多言語をサポートし、Weblateを使用してローカライズ管理を行います。複数の言語に精通している場合は、[MAA Weblate](https://weblate.maa-org.net)で翻訳のお手伝いをしてください。 -MAA は中国語(簡体字)を第一言語とし、翻訳見出しはすべて中国語(簡体字)を基準とする。 +MAA は中国語(簡体字)を第一言語とし、翻訳見出しはすべて中国語(簡体字)を基準としています。 [![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/) @@ -170,7 +188,7 @@ MAA は中国語(簡体字)を第一言語とし、翻訳見出しはすべ - ~~C++ base64エンコードとデコード:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ 圧縮・解凍ライブラリ:[zlib](https://github.com/madler/zlib) - C++ Gzipカプセル化ライブラリ:[gzip-hpp](https://github.com/mapbox/gzip-hpp) -- Android タッチ イベント: [minitouch](https://github.com/openstf/minitouch) +- Android タッチ イベント: [Minitouch](https://github.com/DeviceFarmer/minitouch) - Android タッチ イベント: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) - WPF MVVWフレームワーク:[Stylet](https://github.com/canton7/Stylet) - WPFコントロールライブラリ:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) @@ -207,3 +225,5 @@ MAAをより良くするために開発・テストに貢献してくれたす 開発者グループ:[QQグループ](https://jq.qq.com/?_wv=1027&k=JM9oCk3C) ソフトウェアが役立つと思うなら、Star(ページの右上隅にある星)をクリックしてください。私たちにとって最高のサポートです! + + diff --git a/docs/ja-jp/使用説明/CLIユーザーガイド.md b/docs/ja-jp/使用説明/CLIユーザーガイド.md deleted file mode 100644 index bf43630004..0000000000 --- a/docs/ja-jp/使用説明/CLIユーザーガイド.md +++ /dev/null @@ -1,569 +0,0 @@ ---- -icon: material-symbols:terminal ---- - -# CLI ユーザーガイド - -## 機能紹介 - -- 定義済みタスクまたはカスタムタスクの実行、例 `maa fight`, `maa run `; -- `maa install` と `maa update` を使用して `MaaCore`と `resources` をインストールおよび更新する; -- `maa self-update` を使用して自身を更新する。 - -## インストール - -### Appimage - -CLIはLinuxプラットフォーム上のMAAのデフォルト インタフェースであり、最新のAppimageパッケージを直接ダウンロードしてCLIを使用できます。 - -### パッケージマネージャー - -#### macOS - -[Homebrew](https://brew.sh/) を使用してインストールします: - -```bash -brew install MaaAssistantArknights/tap/maa-cli -``` - -#### Linux - -ArchLinux ユーザーは [AUR パッケージ](https://aur.archlinux.org/packages/maa-cli/) をインストールできます: - -```bash -yay -S maa-cli -``` - -LinuxBrew ユーザーは [LinuxBrew](https://docs.brew.sh/Homebrew-on-Linux) を使用してインストールできます: - -```bash -brew install MaaAssistantArknights/tap/maa-cli -``` - -### プリコンパイル済みバイナリ - -プリコンパイルされたバイナリーを [maa-cli リリース・ページ](https://github.com/MaaAssistantArknights/maa-cli/releases/latest) からダウンロードし、結果の実行可能ファイルを任意の場所に配置できます。 各プラットフォームのファイル名は次のとおりです: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
オペレーティング システムプロセッサのアーキテクチャファイル名
Linuxx86_64maa_cli-x86_64-unknown-linux-gnu.tar.gz
aarch64maa_cli-aarch64-unknown-linux-gnu.tar.gz
macOSx86_64 - maa_cli-universal-apple-darwin.zip -
aaarch64
Windowsx86_64maa_cli-x86_64-pc-windows-msvc.zip
- -## 使う - -`maa-cli` の主な機能はタスクを実行することであり、 `maa run ` でタスクを実行できます。ここでの `` はタスクの名前であり、`maa list` を使用して使用可能なすべてのタスクを一覧表示できます。 - -詳細については、 `maa help` で見ることができます。 - -### タスクの実行 - -`maa-cli` の主な機能は、事前定義タスクやカスタム タスクなどのタスクを実行することです。 - -#### 事前定義タスク - -- `maa startup [client]`: ゲームを起動し、メインインターフェイスに入ります。 `[client]` はクライアントバージョンで、空白のままにするとゲームクライアントは起動しません。 -- `maa closedown`: ゲームを閉じます; -- `maa fight [stage]`: 作戦タスクを実行する。 `[stage]` はステージ名、例 `1-7`;空白のままにして、最後または現在のレベルを選択します; -- `maa copilot `: 自動戦闘ミッションを実行します。ここで、 `` は `maa://1234` ジョブの URI で、ローカル ファイル パス `./1234.json` のいずれかです; -- `maa roguelike [theme]`: ローグライクモードで戦闘ミッションを実行する、 `[theme]` はローグライクモードのテーマであり、オプションの値は `Phantom` `Mizuki` と `Sami`; - -#### カスタム タスク - -カスタムタスクは、 `maa run ` で実行できます。ここの `` はクエストの名前であり、利用可能なすべてのクエストを `maa list` で一覧表示できます。 -特定のタスク定義は、 [設定サブセクション](#カスタムタスクの定義) にあります。 - -#### タスクの概要 - -`maa-cli` タスクの概要は、タスクの実行後に、各サブタスクの実行時間と結果を含む標準出力に出力されます。 `--no-summary` オプションを使用して、タスクの要約を無効にすることができます。 - -タスクの概要には、主に各タスクの実行時間が含まれます。また、以下のタスクに関する追加情報も含まれています: - -- 自動戦闘 `fight`: レベル名、回数、ドロップ統計; -- インフラシフト `infrast`: 各施設に常駐するオペレーター(製造および取引ステーション向けの製品の種類を含む); -- 公開求人 `recruit`: 公開求人タグの更新回数、採用数、検出されたタグと星評価; -- ローグ `roguelike`: 実行される回数、それが投資される回数。 - -#### ログ出力 - -`maa-cli` デフォルトでは、ログは stderr に出力されます。低から高までのログ出力レベルは、 `Error`,`Warn`,`Info`,`Debug` と `Trace`。デフォルトのログ出力レベルは `Warn`。ログレベルは、 `MAA_LOG` で `MAA_LOG=debug` などの環境変数で設定できます。また、ログ出力のレベルを増減するには、 `-v` または `-q` を使用します。 - -`--log-file` オプションを使用してログをファイルに出力し、ログを `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log` に保存します。ここで、 `$(maa dir log)` はログディレクトリで、 `maa dir log` から取得できます。ログ・ファイルへのパスは、 `--log-file=path/to/log` で指定することもできます。 - -### インストールとアップデート - -#### MaaCore のインストールとアップデート - -`MaaCore`およびリソースをインストールおよびアップデートするには、 `maa install` および `maa update` を使用できます。詳細な情報は、 `maa help install` および `maa help update` を使用して取得できます。 - -#### リソースのホットアップデート - -ゲームのアップデートにより、 `MaaCore` は最新のリソースが必要になる場合があります。リソースを更新するには、 `maa hot-update` を使用するか、リソースの自動更新を設定できます。詳細については、[CLI関連設定](#maa-cli-関連設定)を参照してください。 - -#### maa-cliのアップデート - -`maa-cli`自体を更新するには、 `maa self update` を使用できます。パッケージマネージャーでインストールされた `maa-cli` の場合、パッケージマネージャーを使用して `maa-cli` を更新する必要があります。 - -その他のコマンドについては、 `maa help` を使用して取得できます。 - -### その他のサブコマンド - -- `maa list`: 利用可能なすべてのタスクを一覧表示します。 -- `maa dir `: 特定ディレクトリのパスを取得します。たとえば、 `maa dir config` を使用して構成ディレクトリのパスを取得できます。 -- `maa version`: `maa-cli`および`MaaCore`のバージョン情報を取得します。 -- `maa convert [output]`: `JSON`、`YAML`、または`TOML`形式のファイルを他の形式に変換します。 -- `maa complete `: 自動完了スクリプトを生成します。 -- `maa activity [client]`: ゲームの現在のアクティビティ情報を取得します。 `client` はクライアントタイプであり、デフォルトは `Official` です。 - - -## 設定 - -### 設定ディレクトリー - -`maa-cli` 設定ファイルは、 `maa dir config` で取得できる特定の設定ディレクトリーにあります。 設定ディレクトリは、環境変数 `MAA_CONFIG_DIR` で変更することもできます。 以下の例では、設定ディレクトリを表すために `$MAA_CONFIG_DIR` を使用します。 - -すべての構成ファイルは、TOML、YAML、またはJSON形式にすることができますが、以下の例では、TOML形式を使用し、ファイル拡張子 `.toml` を使用します。 ただし、正しいファイル拡張子がある限り、これら3つの形式のいずれかを混在させることができます。 - -### カスタムタスクの定義 - -各カスタムタスクは個別のファイルであり、`$MAA_CONFIG_DIR/tasks` ディレクトリに配置する必要があります。 - -#### 基本構造 - -タスクファイルには複数のサブタスクが含まれており、各サブタスクは、次のオプションを持つ [MAAタスク](../プロトコルドキュメント/統合ドキュメント.md#asstappendtask) です: - -```toml -[[tasks]] -name = "ゲームを起動する" # タスク名、オプション、デフォルトでタスクタイプです -type = "StartUp" # MAA タスクのタイプ -params = { client_type = "Official", start_game_enabled = true } # MAA タスクのパラメーター -``` - -#### タスク条件 - -いくつかの条件に基づいて異なるパラメータでタスクを実行する場合は、タスクの複数のバリエーションを定義できます: - -```toml -[[tasks]] -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` に配置する必要があります。 - -# プラン 1 は 12:00:00 まで、プラン 2 は 12:00:00 から 18:00:00 まで、プラン 0 は 18:00:00 以降に使用します。 -[[tasks.variants]] -condition = { type = "Time", end = "12:00:00" } # start が定義されていない場合は、00:00:00 になります。 -params = { plan_index = 1 } - -[[tasks.variants]] -condition = { type = "Time", start = "12:00:00", end = "18:00:00" } -params = { plan_index = 2 } - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } -params = { plan_index = 0 } -``` - -ここでの `condition` フィールドは、どの変種を使用するかを決定するために使用され、一致する変種の `params` フィールドがタスクのパラメータにマージされます。 - -**注意**: カスタムインフラ計画ファイルが相対パスを使用する場合は、 `$MAA_CONFIG_DIR/infrast` を基準にする必要があります。また、インフラファイルは `MaaCore` によって読み込まれるため、ファイルの形式は `JSON` である必要があります。同時に、`maa-cli` はインフラファイルを読み込まず、定義された時間帯に基づいてサブプランを選択しません。したがって、`condition` フィールドを使用して、正しいインフラ計画を正しい時間帯に使用するように、パラメータ内の `plan_index` フィールドを指定する必要があります。これにより、適切な時間帯に正しいインフラ計画を使用できます。 - -`Time` 条件に加えて、`DateTime`、`Weekday`、`DayMod` 条件もあります。 `DateTime` 条件は時間帯を指定するために使用され、`Weekday` 条件は週の特定の日を指定するために使用されます。`DayMod` は以下の複数日のシフトを参照してください。 - -```toml -[[tasks]] -type = "Fight" - -# 夏のイベントでは 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 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 別の時間には 1-7 -[[tasks.variants]] -params = { stage = "1-7" } -``` - -上記の条件に加えて、ホットアップデートリソースに依存する `OnSideStory` 条件があります。この条件を有効にすると、`maa-cli` は対応するリソースを読み込んで現在有効なイベントがあるかどうかを判断し、対応する変種を選択します。たとえば、前述の夏イベント中に `SL-8` を周回する条件は、`{ type = "OnSideStory", client = "Official" }` と簡略化することができます。ここでの `client` パラメータは使用するクライアントを決定するために使用されます。異なるクライアントでは、イベントの時間が異なるため、公式サーバーまたは bilibili サーバーを使用するユーザーにとってはこれを省略できます。この条件を使用すると、毎回のイベント更新後に、特定のステージのみを更新する必要があり、対応するイベントの開始時間を手動で編集する必要がありません。 - -基本条件の他に、条件を論理演算するために `{ type = "And", conditions = [...] }`、`{ type = "Or", conditions = [...] }`、`{ type = "Not", condition = ... }` を使用できます。 - -複数日のシフトを設定したい場合は、`DayMod` と `Time` を組み合わせて使用することができ、複数日のシフトを実現できます。たとえば、2日ごとに6回のシフトを切り替えたい場合は、次のように記述できます: - -```toml -[[tasks]] -name = "基地シフト (2天6班)" -type = "Infrast" - -[tasks.params] -mode = 10000 -facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] -dorm_trust_enabled = true -filename = "normal.json" - -# 第一班,第一天 4:00:00 - 12:00:00 -[[tasks.variants]] -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 ` で当日のオフセットを取得できます - # たとえば、 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" }, -] - -# 第二班,第一天 12:00:00 - 20:00:00 -[[tasks.variants]] -params = { plan_index = 1 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", start = "12:00:00", end = "20:00:00" }, -] - -# 第三班,第一天 20:00:00 - 第二天 4:00:00 -[[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 はマッチしません -# もちろん、スケジュールを調整して日を越えないようにする方が良いですが、ここではデモンストレーションのためだけに -type = "Or" -conditions = [ - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", start = "20:00:00" }, - ] }, - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", end = "04:00:00" }, - ] }, -] - -# 第四班,第二天 4:00:00 - 12:00:00 -[[tasks.variants]] -params = { plan_index = 3 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "04:00:00", end = "12:00:00" }, -] - -# 第五班,第二天 12:00:00 - 20:00:00 -[[tasks.variants]] -params = { plan_index = 4 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "12:00:00", end = "20:00:00" }, -] - -# 第六班,第二天 20:00:00 - 第三天(新的第一天)4:00:00 -[[tasks.variants]] -params = { plan_index = 5 } -[tasks.variants.condition] -type = "Or" -conditions = [ - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "20:00:00" }, - ] }, - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", end = "04:00:00" }, - ] }, -] -``` - -デフォルトの戦略では、複数の変種が一致した場合、最初の変種が使用されます。条件が指定されていない場合、変種は常に一致するため、条件がない変種を最後に置いて、デフォルトの状況として使用できます。 - -`strategy` フィールドを使用して一致戦略を変更できます: - -```toml -[[tasks]] -type = "Fight" -strategy = "merge" # 或いは "first" (デフォルト) - -# 日曜日の夜に期限切れになる理性回復薬をすべて使います -[[tasks.variants]] -params = { expiring_medicine = 1000 } - -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "Time", start = "18:00:00" }, - { type = "Weekday", weekdays = ["Sun"] }, -] - -# デフォルトは 1-7 -[[tasks.variants]] -params = { stage = "1-7" } - -# 夏のイベント以外、火曜、木曜、土曜では CE-6 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 夏のイベントでは SL-8 -[[tasks.variants]] -params = { stage = "SL-8" } -condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } -``` - -この例と前述の例では同じステージを周回しますが、日曜日の夜には期限切れの理性薬をすべて使用します。`merge` 戦略では、複数の変種が一致した場合、後続の変種のパラメータが前の変種のパラメータにマージされます。複数の変種が同じパラメータを持つ場合、後続の変種のパラメータが前の変種のパラメータを上書きします。 - -一致する変種がない場合、タスクは実行されません。これは特定の条件下でのみサブタスクを実行するために使用できます: - -```toml -# FPショップの操作は、18:00:00 以降にのみ利用できます。 -[[tasks]] -type = "Mall" - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } -``` - -#### ユーザー入力 - -一部のタスクでは、実行時にいくつかのパラメータを入力する必要がある場合があります。たとえば、ステージ名などです。対応する入力が必要なパラメータを `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] -# オプションステージの場合、少なくとも1つのオプション値を指定する必要があります -# 省略可能な値は、単一の値、または値と説明の両方を含むテーブルです -alternatives = [ - "SL-7", # "1. SL-7" に表示されます - { value = "SL-8", desc = "轻锰矿" } # "2. SL-8 (マンガン)" に表示されます -] -default_index = 1 # デフォルト値のインデックスは、1から始まって、設定されていない場合は、null値を入力すると、再度プロンプトが表示されます -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" # デフォルトステージ、オプション(デフォルト値がない場合は、null値を入力すると再度プロンプトが表示されます) -description = "a stage to fight" # 説明、オプション -[tasks.variants.params.medicine] -# 依存パラメータ、キーはパラメータ名であり、値は依存パラメータの期待値です -# 設定すると、このパラメータは、すべての依存パラメータが期待値を満たしている場合にのみ入力を求められます -deps = { stage = "1-7" } -default = 1000 -description = "medicine to use" -``` - -`Input` タイプの場合、タスクを実行すると値の入力を求められます。空の値を入力した場合、デフォルト値があればそれが使用され、そうでない場合は再入力を求められます。 - -`Select` タイプの場合、タスクを実行するとインデックスまたはカスタム値(許可されている場合)の入力が求められます。空の値を入力した場合、デフォルト値があればそれが使用され、そうでない場合は再入力を求められます。 - -`--batch` オプションは、タスクを実行する際にすべての入力をスキップするために使用できます。これにより、デフォルト値が使用されます。ただし、デフォルト値の設定されていない入力がある場合はエラーが発生します。 - -### MaaCore 関連の設定 - -MaaCore 関連の設定は `$MAA_CONFIG_DIR/asst.toml` に配置する必要があります。 -現在、以下の設定が含まれています: - -```toml -[connection] -type = "ADB" -adb_path = "adb" -device = "emulator-5554" -config = "CompatMac" - -[resource] -global_resource = "YoStarEN" -platform_diff_resource = "iOS" -user_resource = true - -[static_options] -cpu_ocr = false -gpu_ocr = 1 - -[instance_options] -touch_mode = "MAATouch" -deployment_with_pause = false -adb_lite_enabled = false -kill_adb_on_exit = false -``` - -#### 接続設定 - -`[connection]` 関連のフィールドは、MaaCore との接続方法とパラメータを指定するために使用されます。現在利用可能な接続方法は `ADB` と `PlayTools` です。 - -`ADB` 接続を使用する場合、`adb` のパスとデバイスのシリアル番号を指定する必要があります: - -```toml -[connection] -type = "ADB" -adb_path = "adb" # adb 実行可能ファイルのパス -device = "emulator-5554" # Android端末のシリアル番号 -config = "General" # MAA Connect の設定 -``` - -注意:ここでのデバイスは、`adb -s` が受け入れる任意の値(例: `emulator-5554` や `127.0.0.1:5555`)です。 - -`PlayTools` 接続を使用する場合、`PlayTools` のアドレスを指定する必要があります: - -```toml -[connection] -type = "PlayCover" -address = "localhost:1717" # PlayTools のアドレス -config = "CompatMac" # MAA Connect の設定 -``` - -いずれの場合も `config` を提供する必要があります。この値は、いくつかのプラットフォームやエミュレータに関連する設定を指定するために MaaCore に渡されます。Linux の場合はデフォルトで `CompatPOSIXShell`、macOS の場合は `CompatMac`、Windows の場合は `General` が使用されます。さらに詳細な設定については、リソースフォルダ内の `config.json` ファイルを参照してください。 - -#### リソース設定 - -`[resource]` 関連のフィールドは、MaaCore がロードするリソースを指定するために使用されます: - -```toml -[resource] -global_resource = "YoStarEN" # 中国語以外のクライアントのリソース -platform_diff_resource = "iOS" # Android バージョン以外のリソース -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 のスタチチオプチンを指定するために使用されます。詳細については [統合ドキュメント](../プロトコルドキュメント/統合ドキュメント.html#asstsetstaticoption) を参照してください: - -```toml -[static_options] -cpu_ocr = false # CPU OCR を使用するかどうか、デフォルトで CPU OCR が使用されます -gpu_ocr = 1 # GPU OCR を使用するときに使用される GPU ID で、この値を空白のままにすると、CPU OCR が使用されます -``` - -#### インスタンスのオプション - -`[instance_options]` 関連フィールドは、MaaCore インスタンスのオプションを指定するために使用されます。詳細については [統合ドキュメント](../プロトコルドキュメント/統合ドキュメント.html#asstsetinstanceoption) を参照してください: - -```toml -[instance_options] -touch_mode = "ADB" # タッチモードを使用し、"ADB","MiniTouch","MAATouch" または "MacPlayTools" として選択可能な値を使用します -deployment_with_pause = false # デプロイ中にゲームを一時停止するかどうか -adb_lite_enabled = false # adb-liteを使用するかどうか -kill_adb_on_exit = false # 終了時にADBを強制終了するかどうか -``` - -注意,`touch_mode` のオプションは `MacPlayTools` と `PlayTools` 接続方式に関連付けられています。`PlayTools` 接続を使用する場合、`touch_mode` は自動的に `MacPlayTools` に設定されます。 - -### `maa-cli` 関連設定 - -`maa-cli` に関連する設定は、 `$MAA_CONFIG_DIR/cli.toml` に配置する必要があります。現在、以下の設定が含まれています: - -```toml -# MaaCoreのインストールと更新に関する設定 -[core] -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に関連するコンポーネントをインストールするかどうかの設定。推奨しません。個別にインストールするとバージョンの不一致が発生し、問題が発生する可能性があります。このオプションは将来のバージョンで削除される可能性があります。 -[core.components] -library = true # MaaCore のライブラリをインストールするかどうか。デフォルトは true です。 -resource = true # MaaCore のリソースをインストールするかどうか。デフォルトは true です。 - -# CLIの更新に関する設定 -[cli] -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/" - -# CLIに関連するコンポーネントをインストールするかどうかの設定 -[cli.components] -binary = true # maa-cliのバイナリファイルをインストールするかどうか。デフォルトはtrueです。 - -# リソースのホットアップデートに関する設定 -[resource] -auto_update = true # タスクを実行するたびにリソースを自動的に更新するかどうか。デフォルトは false です。 -backend = "libgit2" # リソースのホットアップデートバックエンド。 "git" または "libgit2" を選択します。デフォルトは "git" です。 - -# リソースのホットアップデートリモートリポジトリに関連する設定 -[resource.remote] -branch = "main" # リモートリポジトリのブランチ、デフォルトは "main" です -# リモートリポジトリの URL 、 SSH を使用する場合は、ssh_key へのパスを設定する必要があります -url = "https://github.com/MaaAssistantArknights/MaaResource.git" -# url = "git@github.com:MaaAssistantArknights/MaaResource.git" -# ssh_key = "~/.ssh/id_ed25519" # SSH 秘密鍵のパス (拡張可能) 、ただし、他の環境変数はサポートされていません -``` - -**注意事項**: - -- MaaCore の更新チャネルの `Alpha` は、Windows でのみ使用できます。 -- CLIのデフォルトのAPIリンクとダウンロードリンクは全てGitHubリンクなので、中国では多少の問題があるかもしれませんが、 `api_url` と `download_url` を設定することでミラーサイトを利用することができます。 -- リソースのホット アップデートを有効にした場合でも、 `MaaCore` リソースをインストールする必要があります。リソースのホット アップデートにはすべてのリソース ファイルが含まれているわけではなく、更新可能なリソース ファイルの一部のみが含まれるため、基本リソース ファイルをインストールする必要があります。 -- リソースのホット アップデートはGitを介してリモート リポジトリから取得され、バックエンドが `git` に設定されている場合は、 `git` コマンドラインツールが使用可能である必要があります。 -- SSH プロトコルを使用してリモートリポジトリをプルする場合は、SSH 秘密鍵へのパスである `ssh_key` フィールドを構成する必要があります。 -- リモートリポジトリの `url` 設定は現在、リソースの最初のインストールでのみ有効であり、リモートリポジトリのアドレスを変更する場合は、 `git` コマンドラインツールを使用して手動で変更するか、或いはリポジトリを削除する。 リポジトリの場所は、 `maa dir hot-update` で取得できます。 -- リモートリポジトリの `url` はローカル言語に従って自動的に設定され、言語が簡体字中国語の場合、リモートリポジトリの `url` は国内ミラーの `https://git.maa-org.net/MAA/MaaResource.git` に設定され、それ以外の場合は Github に設定されます。 中国にいて簡体字中国語を使用していない場合、または海外で簡体字中国語を使用している場合は、最適なエクスペリエンスを得るために手動で設定する必要があります。 - -### JSON Schema - -`maa-cli` の JSON Schema ファイルは、CLI リポジトリーの `maa-cli/schemas` ディレクトリーにあり、これを使用して構成ファイルを検証したり、エディターでオートコンプリートを取得したりできます。 -タスク ファイルの JSON Schema ファイルは [`task.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json); -MaaCore の構成の JSON Schema ファイルは、 [`asst.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json); -CLI 設定の JSON Schema ファイルは [`cli.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json)。 diff --git a/docs/ko-kr/develop/README.md b/docs/ko-kr/develop/README.md new file mode 100644 index 0000000000..7457080295 --- /dev/null +++ b/docs/ko-kr/develop/README.md @@ -0,0 +1,9 @@ +--- +title: 개발 관련 +icon: ph:code-bold +index: false +dir: + order: 2 +--- + + diff --git a/docs/ko-kr/개발문서/1.개발시작.md b/docs/ko-kr/develop/development.md similarity index 87% rename from docs/ko-kr/개발문서/1.개발시작.md rename to docs/ko-kr/develop/development.md index d7f80165eb..e56785afbb 100644 --- a/docs/ko-kr/개발문서/1.개발시작.md +++ b/docs/ko-kr/develop/development.md @@ -1,21 +1,15 @@ --- +order: 1 icon: iconoir:developer --- # 개발 환경 구축 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ## Github Pull Request 진행 과정 ### 프로그래밍을 잘 모르지만, json 파일과 docs 문서를 수정하고싶어요. 어떻게 해야하나요? -[웹사이트로 GitHub Pull Request 하기!](./3.웹기반PR.md)를 참고하세요! (웹사이트로만 가능합니다) +[웹 기반 PR 가이드](./pr-tutorial.md)를 참고하세요! (GitHub.com 웹사이트에서만 가능합니다) ### 프로그래밍을 할 줄 알지만 GitHub/C++/...에 익숙하지 않아요. 어떻게 해야 하나요? @@ -24,10 +18,10 @@ icon: iconoir:developer 3. 로컬에서 레포(dev 브랜치)를 클론합니다. ```bash - git clone <당신의 저장소 git 링크> -b dev + git clone --recurse-submodules <당신의 저장소의 git 링크> -b dev ``` -4. 사전 빌드된 서드파티 라이브러리를 다운로드합니다. +4. Visual Studio와 같은 --recurse-submodules 매개변수가 포함되지 않은 Git GUI를 사용 중이라면, 클론한 후에 `git submodule update --init` 명령을 실행하여 서브모듈을 가져와야 합니다. **Python 환경이 필요합니다. Python 설치 방법은 스스로 찾아보세요.** _(maadeps-download.py 파일은 프로젝트 루트에 있습니다)_ @@ -49,6 +43,7 @@ icon: iconoir:developer 8. 이제 마음껏 개발을 시작할 수 있습니다. 9. 개발 중에 정기적으로 커밋을 하고 메시지를 작성하는 것을 잊지 마세요. Git 사용에 익숙하지 않다면 변경 사항을 직접 `dev` 브랜치에 제출하는 대신 새 브랜치를 만들어 작업하고 커밋하는 것이 좋습니다. + ```bash git branch your_own_branch git checkout your_own_branch @@ -108,7 +103,7 @@ Visual Studio 2022를 열면 관련된 git 작업을 명령 줄 도구 대신 vs 3. Visual Studio에서 `도구`-`옵션`을 검색하여 `clang-format`을 클릭합니다. 4. `ClangFormat 지원 활성화`를 클릭하고 아래의 `사용자 정의 clang-format.exe 파일 사용`을 선택한 다음 2단계에서 찾은 `clang-format.exe`를 선택합니다. -![Visual Studio 设置 clang-format](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2) +![Visual Studio에서 clang-format 사용 설정](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2) 이제 Visual Studio에서 C++20 구문을 지원하는 clang-format을 사용할 수 있습니다! @@ -122,4 +117,4 @@ GitHub codespace를 사용하여 자동으로 C++ 개발 환경을 구성하세 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights) -그런 다음 vscode의 지침을 따르거나 [Linux 컴파일 가이드](./2.Linux가이드.md)를 참고하여 GCC 12 및 CMake 프로젝트를 설정하세요. +그런 다음 vscode의 지침을 따르거나 [Linux 컴파일 가이드](./linux-tutorial.md)를 참고하여 GCC 12 및 CMake 프로젝트를 설정하세요. diff --git a/docs/ko-kr/개발문서/6.문서가이드.md b/docs/ko-kr/develop/documentation-guidelines.md similarity index 90% rename from docs/ko-kr/개발문서/6.문서가이드.md rename to docs/ko-kr/develop/documentation-guidelines.md index e5d15cb399..f39520b68b 100644 --- a/docs/ko-kr/개발문서/6.문서가이드.md +++ b/docs/ko-kr/develop/documentation-guidelines.md @@ -1,22 +1,22 @@ --- +order: 6 icon: jam:write-f --- # 문서 작성 가이드 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: tip 이 문서의 목적은 문서 작성자가 주제가 제공하는 기능을 더 잘 활용하여 더 읽기 쉬운 효과를 얻는 데 도움을 주는 것입니다. ::: 우리의 문서는 [vuepress](https://github.com/vuejs/vuepress)로 작성되었으며, [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 테마를 사용하고 있습니다. 더 자세한 설명은 [공식 문서](https://theme-hope.vuejs.press/zh/)를 참조할 수 있으며, 여기서는 일부 일반적인 기능에 대해서만 소개하겠습니다. +## 로컬 배포 + +1. [pnpm](https://pnpm.io/zh/installation)을 설치하고, [Pull Request 가이드](./development.md#github-pull-request-진행-과정)을 참고해, 저장소를 로컬에 클론합니다. +2. `website` 경로에서 새로운 터미널을 열고, `pnpm i` 을 실행하여 의존성 파일을 다운로드합니다. +3. `pnpm run dev` 를 실행하여 배포를 시작합니다. + ## 컨테이너 ~~도커 컨테이너가 아닙니다~~ diff --git a/docs/ko-kr/개발문서/4.IssueBot.md b/docs/ko-kr/develop/issue-bot-usage.md similarity index 93% rename from docs/ko-kr/개발문서/4.IssueBot.md rename to docs/ko-kr/develop/issue-bot-usage.md index 21ba9f06a4..070d5d7448 100644 --- a/docs/ko-kr/개발문서/4.IssueBot.md +++ b/docs/ko-kr/develop/issue-bot-usage.md @@ -1,22 +1,16 @@ --- +order: 4 icon: bxs:bot --- # Issue Bot 사용 방법 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +Issue Bot의 동작은 [issue-checker](https://github.com/zzyyyl/issue-checker)로 이루어지며, 설정 파일은 [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) 입니다. ::: warning Commitizen 규격으로 커밋하지 않는 경우, 병합 요청(Merge Request)가 `ambiguous(애매모호한)`로 표시됨에 주의해주세요. ::: -Issue Bot의 동작은 [issue-checker](https://github.com/zzyyyl/issue-checker)로 이루어지며, 설정 파일은 [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) 입니다. - ## 기능 ### 자동 알림 @@ -60,7 +54,6 @@ Issue Bot은 풀 리퀘스트의 제목을 확인합니다. 아래 키워드로 - `Duplicate of #{ISSUE_NUMBER}`는 이슈에 `duplicate(중복)` 라벨을 추가합니다. - **코멘트가 Issue Bot을 혼동시킬 수 있는 경우 `skip` 작업을 추가할 수 있습니다.** - ::: info 참고 1 여기서 `COMMIT_HASH`는 40자 길이의 전체 해시값입니다. ::: diff --git a/docs/ko-kr/개발문서/2.Linux가이드.md b/docs/ko-kr/develop/linux-tutorial.md similarity index 83% rename from docs/ko-kr/개발문서/2.Linux가이드.md rename to docs/ko-kr/develop/linux-tutorial.md index 6442f6f61b..27e5fd8316 100644 --- a/docs/ko-kr/개발문서/2.Linux가이드.md +++ b/docs/ko-kr/develop/linux-tutorial.md @@ -1,24 +1,16 @@ --- +order: 2 icon: teenyicons:linux-alt-solid --- # Linux 컴파일 가이드 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +**이 튜토리얼은 독자가 일정한 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)을 참고할 수 있습니다. ::: -**이 튜토리얼은 독자가 일정한 Linux 환경 설정 능력과 프로그래밍 기초를 가지고 있다고 가정합니다!** - -만약 당신이 MAA를 직접 컴파일하는 대신에 단순히 설치하길 원한다면 [Linux 설명서](../사용자설명서/플랫폼/3.Linux.md)를 참고하세요. - ## 컴파일 과정 1. 컴파일에 필요한 종속성 다운로드 @@ -68,11 +60,9 @@ MAA의 빌드 방법은 여전히 논의 중입니다. 이 튜토리얼의 내 cmake --install build --prefix ``` -## 다른 방법 +## 통합 문서 -- Archlinux User Repository: [maa-assistant-arknights](https://aur.archlinux.org/packages/maa-assistant-arknights) - -## 통합 +[~~문서가 아닐수도 있습니다~~](../protocol/integration.md) ### Python @@ -85,6 +75,3 @@ MAA의 빌드 방법은 여전히 논의 중입니다. 이 튜토리얼의 내 ### C\# [MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Helper/AsstProxy.cs)의 구현을 참조하세요. - - - diff --git a/docs/ko-kr/개발문서/5.해외클라이언트현지화.md b/docs/ko-kr/develop/overseas-client-adaptation.md similarity index 90% rename from docs/ko-kr/개발문서/5.해외클라이언트현지화.md rename to docs/ko-kr/develop/overseas-client-adaptation.md index d27e3a73c1..2978285d2b 100644 --- a/docs/ko-kr/개발문서/5.해외클라이언트현지화.md +++ b/docs/ko-kr/develop/overseas-client-adaptation.md @@ -1,22 +1,16 @@ --- +order: 5 icon: ri:earth-fill --- # 해외 클라이언트 현지화 가이드 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ## 준비 이 튜토리얼을 시작하기 전에 다음 사항이 준비되었는지 확인해야 합니다. 1. 필요한 소프트웨어를 설치하고 올바르게 구성했습니다. ZH-CN 클라이언트 또는 해당 클라이언트의 `readme.md` 에 지원되는 기능이 제대로 작동하는지 확인할 수 있는 정보가 있서야 합니다. -2. `3.4-작업_스키마.md` 를 읽고 각 필드의 의미와 사용법을 기본적으로 이해해야 합니다. 코드에서 `@` 와 `#` 의 의미와 용법도 이해해야 합니다. +2. [작업 스키마](../protocol/task-schema.md) 를 읽고 각 필드의 의미와 사용법을 기본적으로 이해해야 합니다. 코드에서 `@` 와 `#` 의 의미와 용법도 이해해야 합니다. 3. ZH-CN 클라이언트의 `task.json` 파일과 템플릿 이미지는 해외 클라이언트에 대해 언급되지 않았거나 누락된 경우의 대안으로 사용된다는 점을 이해해야합니다. 해외 클라이언트에 대한 `task.json` 의 내용은 ZH-CN 작업 필드에 따라 다시 작성해야 합니다. 4. 영어 실력이 있고, 영어 로그를 읽을 수 있으며, 로그를 통해 누락된 사진과 다른 정보를 찾을 수 있는 역량이 있으면 좋습니다. 5. 작업 체인에 따라 개별적으로 수정을 수행하는 것이 좋습니다. 예를 들어, Award 작업을 수정하려면 `next` 필드의 순서에 따라 `template image`, `text`, 그리고 `roi` 를 단계적으로 수정해야 합니다. 이렇게 하면 수정 후 모든 작업이 정상적으로 작동하고 오류를 쉽게 발견할 수 있습니다. 또한 이렇게 하면 한 번에 너무 많은 콘텐츠가 수정될 때 소프트웨어가 어떤 작업에 고정되어 있는지 혼동하거나 잊어버리는 것을 방지할 수 있습니다. @@ -130,19 +124,18 @@ ROI 범위를 수정하는 방법: 이 로그에서 다음 사실을 확인할 수 있습니다: -- `"taskchain"` 는 현재 진행 중인 작업을 나타냅니다. -- `"details"` 는 인식할 필드(`to_be_recognized`)와 현재 재시도 횟수 (`cur_retry`), 그리고 총 재시도 횟수(`retry_times`)를 나타냅니다. -- `"first"` 는 작업의 시작을 나타냅니다. -- `"taskid"` 는 작업에 부여된 ID 번호입니다. -- `"class"` 와 `subtask` 는 각각 작업의 클래스와 하위 작업을 나타냅니다. -- `"pre_task"` 는 이전 작업을 나타냅니다. +- `taskchain` 는 현재 진행 중인 작업을 나타냅니다. +- `details` 는 인식할 필드(`to_be_recognized`)와 현재 재시도 횟수 (`cur_retry`), 그리고 총 재시도 횟수(`retry_times`)를 나타냅니다. +- `first` 는 작업의 시작을 나타냅니다. +- `taskid` 는 작업에 부여된 ID 번호입니다. +- `class` 와 `subtask` 는 각각 작업의 클래스와 하위 작업을 나타냅니다. +- `pre_task` 는 이전 작업을 나타냅니다. 또한, 명령의 실행 (예: `Call`) 과 `OCR` 정보 (예: `OcrPack::recognize`) 가 로그에 기록됩니다. -예를 들어, 이 로그에서, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` 은 작업이 10번 인식 시도되었음을 의미하며, 최대 횟수는 20회입니다. 최대 횟수에 도달하면 작업을 건너뛰고 오류가 보고되고 다음 작업이 수행됩니다. 이전 작업에 문제가 없으면 여기 인식에 문제가 있을 가능성이 높습니다. 이 문제를 해결하려면 로그에 언급된 작업에 해당하는 템플릿 파일이 있는지, 해당 작업의 `text` 필드가 잘못되었는지, 작업 인식을 위한 `roi` 범위가 잘못되었는지 확인하고 필요한 수정을 수행할 수 있습니다. +예를 들어, 이 로그에서, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` 은 작업이 10번 인식 시도되었음을 의미하며, 최대 횟수는 20회입니다. 최대 횟수에 도달하면 작업을 건너뛰고 오류가 보고되고 다음 작업이 수행됩니다. 이전 작업에 문제가 없으면 여기 인식에 문제가 있을 가능성이 높습니다. 이 문제를 해결하려면 로그에 언급된 작업에 해당하는 `템플릿` 파일이 있는지, 해당 작업의 `text` 필드가 잘못되었는지, 작업 인식을 위한 `roi` 범위가 잘못되었는지 확인하고 필요한 수정을 수행할 수 있습니다. 해당 템플릿 이미지를 보면, EN 클라이언트 템플릿 폴더에 이 이미지에 대한 템플릿이 있지만 크기가 ZH-CN 클라이언트의 템플릿 폴더에 있는 이미지보다 클 수 있습니다. 이로 인해 ZH-CN 클라이언트의 `roi` 가 EN 클라이언트에서 인식되지 않을 수 있으므로 EN 클라이언트의 `task.json` 파일에서 해당 작업의 `roi` 를 EN 클라이언트의 이미지 크기와 일치하도록 수정해야 할 수 있습니다. ## 변경사항 제출 -[Github Pull Requst 가이드](./1.개발시작.md#github-pull-request-진행-과정)을 참고하세요! - +[Github Pull Requst 가이드](./development.md#github-pull-request-진행-과정)을 참고하세요! diff --git a/docs/ko-kr/develop/pr-tutorial.md b/docs/ko-kr/develop/pr-tutorial.md new file mode 100644 index 0000000000..8b0b485b56 --- /dev/null +++ b/docs/ko-kr/develop/pr-tutorial.md @@ -0,0 +1,127 @@ +--- +order: 3 +icon: mingcute:git-pull-request-fill +--- + +# 웹 기반 PR 가이드 + +::: warning +이 가이드는 많은 개념을 단순화하여 더 많은 사람들이 실제로 사용할 수 있도록 설계되었습니다. 때로는 꽤 불안불안한 ~~하지만 간단한~~ 조치들과 약간 부정확한 설명이 있을 수 있으므로 전문가 분들의 이해를 부탁드립니다. +만약 Git 사용 경험이 있고 프로그래밍 기초를 가지고 계시다면 ~~그럼 당신은 왜 보고 있나요🔨~~, 약간 더 발전된 가이드인 [Github Pull Request 진행과정](./development.md#github-pull-request-진행-과정)을 확인해주세요. +::: + +소소한 GitHUb Pull Request 사용 가이드 (\*´▽`)ノノ + +## 기본 개념 및 용어 설명 + + 장에서는 다소 지루한 내용을 다루고 있습니다. 관심 없으면 바로 실제 조작 부분으로 건너뛸 수 있으며, 이해되지 않는 부분은 나중에 다시 찾아보세요. + +### Repository (저장소) + +repo로도 알려져 있으며 코드 및 다른 리소스 파일을 저장하는 곳입니다. + +👇 현재 이 웹 페이지 및 그 내용 전체가 MAA의 저장소입니다 (일반적으로 MAA의 기본 저장소로 불립니다). + +![image](https://user-images.githubusercontent.com/18511905/193747349-5964bd12-de3c-4ce7-b444-29b0bd104acc.png) + +### Fork (복사) + +단어 그대로 MAA의 코드를 복사하고 나서 수정 등의 작업을 수행할 수 있습니다. 원본을 망치지 않도록 조심하세요. +그러나 중국어로 "복사"라는 용어를 사용할 때는 일반적으로 "복사"라는 용어를 생각합니다.또한 "fork"라는 명확한 번역이 없으므로 일반적으로 영어를 사용합니다. 예를 들어 "코드를 fork하여 복사합니다." + +복사한 것은 `MAA (1)` (bushi)입니다. +원래 저장소와 구별하기 위해 일반적으로 원래 MAA 저장소를 "원본 저장소", "원격 저장소", "상위 저장소"로 지칭합니다. +각 사람이 자신의 복사본을 만들 수 있기 때문에 복사본을 "개인 저장소"로 지칭합니다. + +![image](https://user-images.githubusercontent.com/18511905/193750507-b8167df5-7a70-48d4-ba69-5dda8327e8ec.png) + +### Pull Request + +PR로도 알려져 있으며, "풀 리퀘스트"라는 용어는 너무 길고 타이핑 하기 싫어서 ~~글자 수가 많고 너무 힘들어~~ 그래서 모두 간단하게 "PR"이라고 부릅니다. +앞서 fork(복사)한 개인 저장소에서 수정한 내용을 주 저장소에 제공하려면 PR을 엽니다. + +물론 "요청"이니까 승인이 필요합니다. MAA 팀의 분들이 당신의 변경 사항에 대해 몇 가지 의견을 제시할 수 있습니다. 물론 우리의 의견이 모두 옳은 것은 아니며, 합리적으로 논의합니다~ + +👇 아래는 현재 전문가들이 제시한 PR을 대기 중인 상태입니다. + +![image](https://user-images.githubusercontent.com/18511905/193750539-9106d425-2087-4116-a599-61904690718b.png) + +### Conflict (충돌) + +가정해 봅시다. 원 저장소에는 A 파일이 있으며 내용이 111입니다. 당신은 이를 fork하여 내용을 222로 변경했지만, PR을 제출하기 직전에 누군가가 fork하여 PR을 제출하고 A 파일을 333으로 변경했습니다. +이 경우 둘 다 A 파일을 수정했으며 수정 사항이 다르므로 누구의 것을 사용할지 결정해야 합니다. 이것이 충돌입니다. +충돌 해결은 꽤 복잡하지만 여기서는 개념을 설명하기 위해만 언급하며 실제로 발생할 때 무슨 일이 일어나는지 이해할 수 있도록 하겠습니다. 해결 방법에 대해서는 현재 설명하지 않겠습니다. + +## 웹 기반 PR 작업 전체 프로세스 + +1. 먼저 MAA 주 저장소로 이동하여 코드를 fork합니다. + + ![~ NKHB1CIE8`G(UK@ %3`H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) + +2. "마스터 브랜치만" 옵션을 해제한 다음 Fork를 클릭합니다. + + ![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) + +3. 이제 개인 저장소로 이동하면 제목이 "YourName/MaaAssistantArknights"이고 아래에 한 줄짜리 작은 글씨로 "forked from MaaAssistantArknights/MaaAssistantArknights" (MAA 주 저장소에서 복제됨)이라고 표시됩니다. + + ![image](https://user-images.githubusercontent.com/18511905/193751864-0d2d0caf-b5ef-4c91-9331-d9827f23f36b.png) + +4. dev 브랜치로 전환합니다. (브랜치 개념은 이 문서와는 관련이 없으며~~사실 나는 귀찮아서 쓰지 않았습니다~~, 관심이 있다면 검색하여 알아보세요. 여기에서는 그냥 이렇게 조작하면 됩니다. 원리를 고려할 필요는 없습니다) + + ![image](https://user-images.githubusercontent.com/18511905/193752379-90d5b317-b1aa-4563-b8b0-583c78373f9b.png) + +5. 수정하려는 파일을 찾아 "Go to file"을 클릭하여 전역 검색을 수행하거나 아래 폴더에서 직접 찾을 수 있습니다. (파일의 위치를 알고 있다면) + + ![image](https://user-images.githubusercontent.com/18511905/193752691-7102a405-dc08-4dce-9617-7f862b0b32b9.png) + +6. 파일을 열면 파일 오른쪽 상단의 ✏️을 클릭하여 편집합니다. + + ![image](https://user-images.githubusercontent.com/18511905/193752862-a9cf6019-b363-4c22-b7c7-35f4aca7377f.png) + +7. 수정하세요! (리소스 파일과 같은 경우 먼저 컴퓨터에있는 MAA 폴더에서 수정 사항을 테스트 한 다음 웹 페이지로 복사하여 잘못된 수정을 방지하세요) +8. 수정이 완료되면 맨 아래로 스크롤하여 수정 내용을 적습니다. + + ![image](https://user-images.githubusercontent.com/18511905/193754154-b21f4176-1418-49c8-87a3-dab088868fdc.png) + +9. 두 번째 파일을 수정해야합니까? 수정 후 오류가 발생하여 수정을 다시하고 싶습니까? 전혀 문제가되지 않습니다! 5-8을 반복하세요! +10. 모두 완료되면 PR을 제출하세요! Pull Request 탭을 클릭합니다. + Compare & Pull Request 버튼이 있으면 좋지만 없어도 걱정하지 마세요. 아래의 New Pull Request를 클릭하면 됩니다. (11단계 참조) + + ![image](https://user-images.githubusercontent.com/18511905/193755450-59137215-4e0b-4eca-9ec9-8b35b52cd5ff.png) + +11. 이제 주 저장소로 이동하여 제출할 PR을 확인합니다. + 아래 그림에서 화살표가 있는 곳은 오른쪽에 개인 이름/MAA의 dev 브랜치를 주 저장소/MAA의 dev 브랜치에 병합하는 것입니다. + 그런 다음 제목, 수정한 내용 등을 작성하고 확인을 클릭합니다. + + ![20221004151004](https://user-images.githubusercontent.com/18511905/193756875-556df699-96b3-411f-815e-47050e283f4d.png) + +12. MAA 팀의 전문가들의 검토를 기다립니다! 물론 그들도 의견을 제시 할 수 있습니다. + 👇 예를 들어(오로지 오락을 위한 것이니 진지하게 받아들이지 마세요) + ![image](https://user-images.githubusercontent.com/18511905/193757006-75170e78-4c8d-4cd2-b8eb-ca590ea7aa50.png) + +13. 만약 전문가들이 몇 가지 작은 문제를 수정하라고 말한다면 개인 저장소로 돌아가 이전의 dev 브랜치로 이동하여 3-9 단계를 반복하세요! + 당신의 현재 PR은 여전히 검토 대기 중이므로 나중에 수정 사항이 이 PR에 직접 반영됩니다. + 👇 예를 들어 아래에서 "재수정 데모"라는 새로운 내용이 추가된 것을 볼 수 있습니다. + ![image](https://user-images.githubusercontent.com/18511905/193757668-4064273c-576d-4259-bbaa-e9f65ae486c1.png) + +14. 전문가들의 승인을 기다리면 모두 완료됩니다! **버전이 출시**되면 당신의 GitHub 프로필 사진이 자동으로 기여자 목록에 추가됩니다. 모든 분들의 자비로운 공헌에 감사드립니다! + ~~왜 모든 사람들이 이중 인격이야, 오 나도 그렇지, 그럼 괜찮아~~ + + ::: tip 기여자 + 개발/테스트에 참여한 모든 친구들에게 감사드립니다. 여러분의 도움으로 MAA가 점점 더 좋아지고 있습니다! (\*´▽ `)ノノ + + [![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) + ::: + +15. 다음에 다른 PR을 제출하려면 먼저 dev 브랜치로 전환한 다음 아래 그림과 같이 진행하세요. + + ::: warning + 이 조작은 개인 저장소를 주 저장소와 완전히 동일한 상태로 강제로 동기화합니다. 이것은 충돌을 해결하는 가장 간단하고 효과적인 방법입니다. 그러나 개인 저장소에 이미 추가한 것이 있으면 그것이 삭제됩니다! + ::: + 충돌을 일으키지 않을 경우 오른쪽에 초록색 `Update Branch` 버튼을 사용하세요. + + 에서 설명한 이 모든 것을 모르거나 알 필요가 없다면 왼쪽의 버튼을 클릭하세요. + + ![image](https://user-images.githubusercontent.com/18511905/194709964-3ea0d5b0-1bfe-4d0e-a1dc-bf4f735af655.png) + + 그러면 3-14 단계를 반복하여 수정하고 PR을 제출하면 됩니다~ diff --git a/docs/ko-kr/index.md b/docs/ko-kr/index.md deleted file mode 100644 index 0b68a2aba8..0000000000 --- a/docs/ko-kr/index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -home: true - -actions: - - text: Link Start! - link: /readme.html - type: primary - -# features: -# - title: 多设备兼容 -# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 -# - title: 完全托管 -# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 -# - title: 高性能 -# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 -# - title: 高效率 -# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 -# - title: 高自定义 -# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... -# - title: 允许商用 -# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 - - ---- diff --git a/docs/ko-kr/manual/README.md b/docs/ko-kr/manual/README.md new file mode 100644 index 0000000000..b6a1827c66 --- /dev/null +++ b/docs/ko-kr/manual/README.md @@ -0,0 +1,9 @@ +--- +title: 사용자 설명서 +icon: mdi:user +index: false +dir: + order: 1 +--- + + diff --git a/docs/ko-kr/manual/cli/README.md b/docs/ko-kr/manual/cli/README.md new file mode 100644 index 0000000000..7eac911367 --- /dev/null +++ b/docs/ko-kr/manual/cli/README.md @@ -0,0 +1,9 @@ +--- +title: CLI 가이드 +icon: material-symbols:terminal +index: false +dir: + order: 6 +--- + + diff --git a/docs/ko-kr/manual/cli/config.md b/docs/ko-kr/manual/cli/config.md new file mode 100644 index 0000000000..803fc30040 --- /dev/null +++ b/docs/ko-kr/manual/cli/config.md @@ -0,0 +1,448 @@ +--- +order: 4 +icon: material-symbols:settings +--- + +# 설정 + +## 설정 경로 + +maa-cli 설정 파일은 특정 설정 경로에 위치하며, `maa dir config` 명령어를 통해 설정 경로를 확인할 수 있습니다. 설정 경로는 환경 변수 `MAA_CONFIG_DIR`을 통해 변경할 수 있습니다. 아래 예시에서는 설정 경로를 `$MAA_CONFIG_DIR`로 표시하겠습니다. + +모든 설정 파일은 TOML, YAML 또는 JSON 형식을 사용할 수 있으며, 아래 예시에서는 TOML 형식을 사용하고 파일 확장자는 `.toml`을 사용하겠습니다. 하지만 파일 확장자가 올바르면 이 세 가지 형식을 혼합해서 사용할 수 있습니다. + +또한 일부 작업은 `filename`을 매개변수로 받아들이며, 상대 경로를 사용할 경우 설정 경로의 해당 하위 경로를 기준으로 합니다. 예를 들어, 사용자 정의 기반 시설 계획 파일의 상대 경로는 `$MAA_CONFIG_DIR/infrast`를 기준으로 해야 하고, 보안 파견 작업 파일은 `$MAA_CONFIG_DIR/ssscopilot`를 기준으로 해야 합니다. + +## 사용자 정의 작업 + +각 사용자 정의 작업은 개별 파일로, `$MAA_CONFIG_DIR/tasks` 경로에 위치해야 합니다. + +### 기본 구조 + +작업 파일은 여러 하위 작업을 포함하며, 각 하위 작업은 MAA 작업으로 다음과 같은 옵션을 포함합니다: + +```toml +[[tasks]] +name = "게임 시작" # 작업 이름, 선택 사항, 기본값은 작업 유형 +type = "StartUp" # 작업 유형 +params = { client_type = "Official", start_game_enabled = true } # 해당 작업의 매개변수 +``` + +구체적인 작업 유형과 매개변수는 [MAA 통합 문서][task-types]에서 찾을 수 있습니다. 주의할 점은 현재 maa-cli는 매개변수 이름과 값이 올바른지 확인하지 않으며, 실행 중 오류가 발생하지 않는 한 MaaCore가 실행 시 오류를 감지하지 않습니다. + +### 작업 조건 + +조건에 따라 다른 매개변수로 작업을 실행하려면 여러 작업 변형을 정의할 수 있습니다: + +```toml +[[tasks]] +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`에 있어야 합니다. + +# 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" } # 종료 시간이 시작 시간보다 작으면 종료 시간은 다음 날로 간주됩니다. +params = { plan_index = 0 } + +[[tasks.variants]] +condition = { type = "Time", end = "12:00:00" } # 시작 시간이 생략되면 현재 시간이 종료 시간보다 작을 때 이 조건이 일치합니다. +params = { plan_index = 1 } + +[[tasks.variants]] +condition = { type = "Time", start = "12:00:00" } # 종료 시간이 생략되면 현재 시간이 시작 시간보다 클 때 이 조건이 일치합니다. +params = { plan_index = 2 } +``` + +`condition` 필드는 어떤 변형이 사용될지를 결정하는 데 사용되며, 일치하는 변형의 `params` 필드는 작업의 매개변수에 합쳐집니다. + +**주의**: 사용자 정의 기반 시설 계획 파일이 상대 경로를 사용하는 경우, `$MAA_CONFIG_DIR/infrast`를 기준으로 해야 합니다. 또한, 기반 시설 파일은 maa-cli가 아닌 MaaCore가 읽기 때문에 해당 파일 형식은 반드시 JSON이어야 합니다. maa-cli는 기반 시설 파일을 읽지 않으며, 파일에 정의된 시간대에 따라 적절한 서브 계획을 선택하지 않습니다. 따라서 `condition` 필드를 통해 적절한 시간대에 올바른 기반 시설 계획의 `plan_index` 매개변수를 지정해야 합니다. 이렇게 하면 적절한 시간대에 올바른 기반 시설 계획이 사용될 수 있습니다. + +`Time` 조건 외에도 `DateTime`, `Weekday`, `DayMod` 조건이 있습니다. `DateTime` 조건은 특정 시간대를 지정하는 데 사용되고, `Weekday` 조건은 일주일 중 특정 요일을 지정하는 데 사용됩니다. `DayMod`는 사용자 정의 주기의 특정 일을 지정하는 데 사용됩니다. + +```toml +[[tasks]] +type = "Fight" + +# 여름 이벤트 기간 동안 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 파밍 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"], timezone = "Official"} +params = { stage = "CE-6" } + +# 그 외 시간에는 1-7 파밍 +[[tasks.variants]] +params = { stage = "1-7" } +``` + +위와 같은 모든 시간 관련 조건에는 `timezone` 매개변수를 통해 시간대를 지정할 수 있습니다. 이 매개변수 값은 숫자일 수 있으며, UTC의 오프셋을 나타냅니다. 만약 사용자의 시간대가 동부 8구역이라면 `timezone = 8`로 지정할 수 있습니다. 이 매개변수는 클라이언트 유형일 수도 있으며, 예를 들어 `timezone = "Official"`로 지정하면 공식 서버의 시간을 사용하여 판단하게 됩니다. **주의**: 공식 서버의 시간대는 동부 8구역이 아닌 동부 4구역입니다. 게임에서 하루의 시작 시간은 00:00:00이 아닌 04:00:00이기 때문입니다. 시간대를 지정하지 않으면 사용자의 로컬 시간대를 사용하게 됩니다. + +위의 특정 조건 외에도, `OnSideStory`라는 조건이 있으며, 이 조건을 활성화하면 maa-cli는 해당 리소스를 읽어 현재 이벤트가 진행 중인지 판단합니다. 만약 진행 중인 이벤트가 있으면 해당 변형이 일치하게 됩니다. 예를 들어, 여름 이벤트 기간 동안 SL-8 파밍을 위한 조건은 `{ type = "OnSideStory", client = "Official" }`로 간단히 할 수 있습니다. 여기서 `client` 매개변수는 사용 중인 클라이언트를 나타내며, 각 클라이언트의 이벤트 시간은 다릅니다. 공식 서버나 b 서버를 사용하는 경우 이 매개변수를 생략할 수 있습니다. 이 조건을 통해 매번 이벤트가 업데이트될 때마다 이벤트의 열림 시간을 수동으로 수정할 필요 없이 해당 이벤트의 스테이지만 업데이트하면 됩니다. + +위의 기본 조건 외에도 `{ type = "And", conditions = [...] }`, `{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }`를 사용하여 조건을 논리적으로 결합할 수 있습니다. +여러 날에 걸친 기반 시설 교대를 원하는 사용자는 `DayMod`와 `Time`을 조합하여 여러 날에 걸친 교대를 설정할 수 있습니다. 예를 들어, 매 이틀마다 6번 교대를 원한다면 다음과 같이 작성할 수 있습니다: + +```toml +[[tasks]] +name = "기반 시설 교대 (2일 6교대)" +type = "Infrast" + +[tasks.params] +mode = 10000 +facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] +dorm_trust_enabled = true +filename = "normal.json" + +# 첫 번째 교대, 첫날 4:00:00 - 12:00:00 +[[tasks.variants]] +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 ` 명령어를 통해 확인할 수 있습니다. + # 예를 들어, 2024-01-27은 738,912일이며, 738912 % 2 = 0입니다. + # 이 경우 오프셋은 0이며, 이 조건이 일치합니다. + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "04:00:00", end = "12:00:00" }, +] + +# 두 번째 교대, 첫날 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 1 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 세 번째 교대, 첫날 20:00:00 - 다음날 4:00:00 +[[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이 일치하지 않습니다. +# 물론 교대 시간을 조정하여 하루를 넘기지 않는 것이 더 좋습니다. 이 예시는 단지 설명을 위한 것입니다. +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", end = "04:00:00" }, + ] }, +] + +# 네 번째 교대, 둘째 날 4:00:00 - 12:00:00 +[[tasks.variants]] +params = { plan_index = 3 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "04:00:00", end = "12:00:00" }, +] + +# 다섯 번째 교대, 둘째 날 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 4 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 여섯 번째 교대, 둘째 날 20:00:00 - 셋째 날(새로운 첫날) 4:00:00 +[[tasks.variants]] +params = { plan_index = 5 } +[tasks.variants.condition] +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", end = "04:00:00" }, + ] }, +] + +``` + +기본 전략에서는 여러 변형이 일치하면 첫 번째 변형이 사용됩니다. 조건이 주어지지 않으면 변형은 항상 일치하므로 조건이 없는 변형을 마지막에 두어 기본값으로 사용할 수 있습니다. + +`strategy` 필드를 사용하여 매칭 전략을 변경할 수 있습니다: + +```toml +[[tasks]] +type = "Fight" +strategy = "merge" # 또는 "first" (기본값) + +# 일요일 저녁에는 모든 만료 임박한 약물을 사용 +[[tasks.variants]] +params = { expiring_medicine = 1000 } + +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "Time", start = "18:00:00" }, + { type = "Weekday", weekdays = ["Sun"] }, +] + +# 기본 1-7 파밍 +[[tasks.variants]] +params = { stage = "1-7" } + +# 화요일, 목요일, 토요일에는 CE-6 파밍 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } +params = { stage = "CE-6" } + +# 여름 이벤트 기간에는 SL-8 파밍 +[[tasks.variants]] +params = { stage = "SL-8" } +condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } +``` + +이 예시와 위의 예시는 동일한 스테이지를 파밍하지만, 일요일 저녁에는 모든 만료 임박한 약물을 사용합니다. `merge` 전략에서는 여러 변형이 일치하면 후속 변형의 매개변수가 앞선 변형의 매개변수에 합쳐집니다. 여러 변형에 동일한 매개변수가 있으면 후속 변형의 매개변수가 앞선 변형의 매개변수를 덮어씁니다. + +어떤 변형도 일치하지 않으면 작업이 실행되지 않으며, 이는 특정 조건에서만 하위 작업을 실행하는 데 사용할 수 있습니다: + +```toml +# 18:00:00 이후에만 크레딧 상점 관련 작업 수행 +[[tasks]] +type = "Mall" + +[[tasks.variants]] +condition = { type = "Time", start = "18:00:00" } +``` + +### 사용자 입력 + +일부 작업에서는 실행 시 매개변수를 입력해야 할 수도 있습니다. 예를 들어, 스테이지 이름을 입력할 수 있습니다. 해당 매개변수를 `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 (경맹광물)"로 표시됨 +] +default_index = 1 # 기본값의 인덱스, 1부터 시작, 설정하지 않으면 빈 값 입력 시 다시 입력하라는 메시지가 표시됨 +description = "여름 이벤트에서 싸울 스테이지" # 설명, 선택 사항 +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 = "싸울 스테이지" # 설명, 선택 사항 +[tasks.variants.params.medicine] +# 의존 매개변수, 키는 매개변수 이름, 값은 의존 매개변수의 예상 값 +# 설정 시 모든 의존 매개변수가 예상 값을 만족할 때만 이 매개변수를 입력해야 함 +deps = { stage = "1-7" } +default = 1000 +description = "사용할 이성 회복제" +``` + +`Input` 유형의 경우, 작업 실행 시 값을 입력하라는 메시지가 표시됩니다. 빈 값을 입력하면 기본값이 있으면 기본값이 사용되며, 없으면 다시 입력하라는 메시지가 표시됩니다. `Select` 유형의 경우, 작업 실행 시 인덱스 또는 사용자 정의 값을 입력하라는 메시지가 표시됩니다(허용할 경우). 빈 값을 입력하면 기본값이 있으면 기본값이 사용되며, 없으면 다시 입력하라는 메시지가 표시됩니다. + +`--batch` 옵션은 작업 실행 시 모든 입력을 건너뛰고 기본값을 사용하도록 할 수 있습니다. 입력에 기본값이 없으면 오류가 발생합니다. + +## MaaCore 관련 설정 + +MaaCore 관련 설정은 `$MAA_CONFIG_DIR/profiles` 경로에 있어야 합니다. 이 경로의 각 파일은 설정 파일이며, `-p` 또는 `--profile` 옵션을 통해 설정 파일 이름을 지정할 수 있습니다. 지정하지 않으면 `default` 설정 파일을 읽으려고 시도합니다. + +현재 지원되는 설정 필드는 다음과 같습니다: + +```toml +[connection] +preset = "MuMuPro" +adb_path = "adb" +device = "emulator-5554" +config = "CompatMac" + +[resource] +global_resource = "YoStarEN" +platform_diff_resource = "iOS" +user_resource = true + +[static_options] +cpu_ocr = false +gpu_ocr = 1 + +[instance_options] +touch_mode = "MAATouch" +deployment_with_pause = false +adb_lite_enabled = false +kill_adb_on_exit = false +``` + +### 연결 설정 + +`[connection]` 관련 필드는 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` 실행 파일의 경로입니다. 경로를 지정하거나 환경 변수 `PATH`에 추가하여 MaaCore가 찾을 수 있도록 할 수 있습니다. 대부분의 에뮬레이터는 자체적으로 `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`을 사용하여 사전 설정된 구성을 사용할 수 있습니다: + +```toml +[connection] +preset = "MuMuPro" # MuMuPro 사전 설정 연결 구성 사용 +adb_path = "/path/to/adb" # 필요 시 사전 설정된 adb 경로를 재정의할 수 있으며, 대부분의 경우 필요하지 않습니다. +address = "127.0.0.1:7777" # 필요 시 사전 설정된 주소를 재정의할 수 있습니다. +``` + +현재 `MuMuPro` 한 가지 에뮬레이터만 사전 설정이 있으며, 다른 일반적인 에뮬레이터의 사전 설정을 추가하고 싶다면 issue나 PR을 제출하세요. + +여기에는 `PlayCover`라는 특수한 사전 설정이 있으며, 이는 macOS에서 `PlayCover`를 통해 네이티브로 실행되는 게임 클라이언트에 연결하는 데 사용됩니다. 이 경우 `adb_path`를 지정할 필요가 없으며, `address`는 `adb` 연결 주소가 아닌 `PlayTools`의 주소입니다. 자세한 내용은 [PlayCover 지원 문서][playcover-doc]를 참고하세요. + +### 리소스 설정 + +`[resource]` 관련 필드는 MaaCore가 로드하는 리소스를 지정하는 데 사용됩니다: + +```toml +[resource] +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`로 설정해야 합니다. + +### 정적 옵션 + +`[static_options]` 관련 필드는 MaaCore 정적 옵션을 지정하는 데 사용됩니다: + +```toml +[static_options] +cpu_ocr = false # CPU OCR을 사용할지 여부, 기본값은 CPU OCR 사용 +gpu_ocr = 1 # GPU OCR을 사용할 때 사용하는 GPU ID, 이 값이 비어 있으면 CPU OCR을 사용 +``` + +### 인스턴스 옵션 + +`[instance_options]` 관련 필드는 MaaCore 인스턴스 옵션을 지정하는 데 사용됩니다: + +```toml +[instance_options] +touch_mode = "ADB" # 사용할 터치 모드, 가능한 값은 "ADB", "MiniTouch", "MAATouch", "MacPlayTools" +deployment_with_pause = false # 배포 시 게임을 일시 중지할지 여부 +adb_lite_enabled = false # adb-lite를 사용할지 여부 +kill_adb_on_exit = false # 종료 시 adb를 종료할지 여부 +``` + +`touch_mode`의 `MacPlayTools` 옵션은 연결 방식 `PlayTools`와 연동됩니다. `PlayTools`로 연결할 때 `touch_mode`는 강제로 `MacPlayTools`로 설정됩니다. + +## CLI 관련 설정 + +CLI 관련 설정은 `$MAA_CONFIG_DIR/cli.toml`에 있어야 합니다. 현재 포함된 설정은 다음과 같습니다: + +```toml +# MaaCore 설치 및 업데이트 관련 설정 +[core] +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의 관련 구성 요소를 설치할지 여부를 설정, 분리 설치는 버전 불일치 문제를 야기할 수 있어 권장되지 않음. 이 옵션은 미래 버전에서 제거될 수 있음. +[core.components] +library = true # MaaCore 라이브러리를 설치할지 여부, 기본값은 true +resource = true # MaaCore 리소스를 설치할지 여부, 기본값은 true + +# CLI 업데이트 관련 설정 +[cli] +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의 관련 구성 요소를 설치할지 여부를 설정 +[cli.components] +binary = true # maa-cli 바이너리 파일을 설치할지 여부, 기본값은 true + +# 리소스 핫 업데이트 관련 설정 +[resource] +auto_update = true # 각 작업 실행 시 리소스를 자동 업데이트할지 여부, 기본값은 false +backend = "libgit2" # 리소스 핫 업데이트 백엔드, 가능한 값은 "git" 또는 "libgit2", 기본값은 "git" + +# 리소스 핫 업데이트 원격 저장소 관련 설정 +[resource.remote] +branch = "main" # 원격 저장소의 분기, 기본값은 "main" +# 원격 저장소의 URL, ssh를 사용하려면 ssh_key 경로를 설정해야 함 +url = "https://github.com/MaaAssistantArknights/MaaResource.git" +# url = "git@github.com:MaaAssistantArknights/MaaResource.git" +# ssh_key = "~/.ssh/id_ed25519" # ssh 키 경로 +``` + +**주의사항**: + +- MaaCore의 업데이트 채널에서 `Alpha`는 Windows에서만 사용할 수 있습니다. +- CLI의 기본 API 링크와 다운로드 링크는 GitHub 링크이므로 국내에서는 문제가 있을 수 있습니다. `api_url`과 `download_url`을 설정하여 미러를 사용할 수 있습니다. +- 리소스 핫 업데이트를 시작해도 MaaCore 리소스를 설치해야 합니다. 리소스 핫 업데이트는 모든 리소스 파일을 포함하지 않고 일부 업데이트 가능한 리소스 파일만 포함합니다. 기본 리소스 파일은 여전히 설치해야 합니다. +- 리소스 핫 업데이트는 Git을 통해 원격 저장소를 가져옵니다. 백엔드를 `git`으로 설정한 경우 `Git` 명령어 도구가 사용 가능해야 합니다. +- SSH 프로토콜을 사용하여 원격 저장소를 가져오려면 `ssh_key` 필드를 설정해야 합니다. 이 필드는 SSH 개인 키를 가리키는 경로여야 합니다. +- 원격 저장소의 `url` 설정은 최초 리소스 설치에만 유효합니다. 원격 저장소 주소를 변경하려면 Git 명령어 도구를 통해 수동으로 변경하거나 해당 저장소를 삭제해야 합니다. 저장소 위치는 `maa dir hot-update` 명령어로 확인할 수 있습니다. +- 원격 저장소의 `url`은 시스템 언어에 따라 자동으로 설정됩니다. 언어가 간체 중국어인 경우 원격 저장소 `url`은 국내 미러 로 설정되며, 다른 경우 GitHub로 설정됩니다. 국내에서 간체 중국어가 아닌 언어를 사용하거나, 해외에서 간체 중국어를 사용하는 경우 최상의 경험을 위해 수동으로 설정해야 할 수 있습니다. + +## 참고 설정 + +- [예시 설정][example-config] +- [사용자 설정][wangl-cc-dotfiles] + +## 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]입니다. + +[task-types]: ../../protocol/integration.md#任务类型一览 +[emulator-ports]: ../../manual/faq.md#模拟器调试端口 +[playcover-doc]: ../../manual/device/macos.md#-playcover原生运行最流畅- +[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples +[wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa +[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/ +[task-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/task.schema.json +[asst-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/asst.schema.json +[cli-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/cli.schema.json + + diff --git a/docs/ko-kr/manual/cli/faq.md b/docs/ko-kr/manual/cli/faq.md new file mode 100644 index 0000000000..b30904e7c5 --- /dev/null +++ b/docs/ko-kr/manual/cli/faq.md @@ -0,0 +1,31 @@ +--- +order: 5 +icon: ph:question-fill +--- + +# 자주 묻는 질문 + +## 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 스타일 설정 디렉토리를 사용하려면, 다음 명령어로 심볼릭 링크를 생성할 수 있습니다: + +```bash +mkdir -p "$HOME/.config/maa" +ln -s "$HOME/.config/maa" "$(maa dir config)" +``` + +## 2. 실행 중 이상한 로그가 나타납니다. 이걸 어떻게 끌 수 있나요? + +MaaCore의 종속성인 `fastdeploy`가 일부 로그를 출력합니다. 따라서 maa-cli를 실행할 때 다음과 같은 로그를 볼 수 있습니다: + +```plaintext +[INFO] ... /fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.` +``` + +이 로그는 `fastdeploy`에서 출력하는 것으로, 공식적으로 사전 컴파일된 MaaCore에서는 이 로그를 끌 수 없습니다. 그러나 패키지 관리자를 통해 설치된 maa-cli를 사용하는 경우, 패키지 관리자가 제공하는 MaaCore를 설치해보세요. 패키지 관리자가 제공하는 MaaCore는 최신 버전의 `fastdeploy`를 사용하며, 기본적으로 로그가 비활성화되어 있습니다. + +## 3. macOS에서 maa-cli로 실행한 PlayCover 게임 클라이언트가 전투를 대리할 수 없고 로그라이크 모드를 완료할 수 없습니다 + +알 수 없는 이유로, 터미널을 통해 실행한 PlayCover 게임 클라이언트는 전투를 대리할 수 없고 로그라이크 모드를 완료할 수 없습니다. 하지만 이 문제는 터미널에서 실행한 maa-cli에만 해당됩니다. 터미널에서 상호작용할 때는 게임을 수동으로 실행해야 할 수도 있습니다. cron 등의 방법으로 maa-cli를 실행하는 경우, 이 문제는 영향을 미치지 않습니다. + + diff --git a/docs/ko-kr/manual/cli/install.md b/docs/ko-kr/manual/cli/install.md new file mode 100644 index 0000000000..1629f51ade --- /dev/null +++ b/docs/ko-kr/manual/cli/install.md @@ -0,0 +1,120 @@ +--- +order: 2 +icon: material-symbols:download +--- + +# 설치 및 빌드 + +maa-cli는 패키지 관리자, 사전 컴파일된 바이너리 파일, `cargo`를 통한 자체 컴파일 설치 등 다양한 설치 방법을 제공합니다. + +## 패키지 관리자를 통한 설치 + +macOS 및 지원되는 Linux 배포판 사용자에게는 패키지 관리자를 통해 maa-cli를 설치하는 것을 권장합니다. + +### macOS + +Homebrew 사용자는 비공식 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/)을 통해 maa-cli를 설치할 수 있습니다: + +- 안정 버전: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli + ``` + +- 불안정 베타 버전: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli-beta + ``` + +### Linux + +- Arch Linux 사용자는 [AUR 패캐지](https://aur.archlinux.org/packages/maa-cli/)를 설치할 수 있습니다: + + ```bash + yay -S maa-cli + ``` + +- ❄️ Nix 사용자는 다음 명령어를 실행할 수 있습니다: + + ```bash + # 안정 버전 + nix run nixpkgs#maa-cli + ``` + + ```bash + # 매일 최신화 버전 + 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 채널의 Rust 도구 체인을 사용하고 GitHub Action을 통해 매일 자동으로 업데이트 및 빌드 검증을 수행합니다. + +- Linux에서 Homebrew를 사용하는 경우 위의 macOS 설치 방법을 참조하세요. + +## 사전 컴파일된 바이너리 파일 + +지원되지 않는 시스템을 사용하거나 패키지 관리자를 사용하지 않으려는 경우, 아래 링크를 통해 해당 플랫폼의 사전 컴파일된 바이너리 파일을 다운로드하고, 압축을 풀어 실행 파일을 `PATH`에 추가하여 사용할 수 있습니다. + +- [macOS](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-universal-apple-darwin.zip) +- [Linux x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-unknown-linux-gnu.tar.gz) +- [Linux aarch64 (arm64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-aarch64-unknown-linux-gnu.tar.gz) +- [Windows x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-pc-windows-msvc.zip) + +위의 목록에 없는 플랫폼의 경우, 직접 컴파일하여 설치할 수 있습니다(아래 참조). + +## 컴파일 설치 + +Rust 개발자는 `cargo`를 통해 maa-cli를 직접 컴파일하여 설치할 수 있습니다: + +- 안정 버전: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked + ``` + +- 개발 버전: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked + ``` + +### 컴파일 옵션 + +소스에서 컴파일할 때 `--no-default-features`를 통해 기본 기능을 비활성화하고 `--features`를 통해 특정 기능을 활성화할 수 있습니다. 현재 사용 가능한 기능은 다음과 같습니다: + +- `cli_installer`: `maa self update` 명령어를 활성화하여 자체 업데이트를 가능하게 합니다. 이 기능은 기본적으로 활성화되어 있습니다. +- `core_installer`: `maa install` 및 `maa update` 명령어를 활성화하여 MaaCore 및 리소스를 설치하고 업데이트할 수 있습니다. 이 기능은 기본적으로 활성화되어 있습니다. +- `git2`: `libgit2` 리소스 업데이트 백엔드를 제공합니다. 이 기능은 기본적으로 활성화되어 있습니다. +- `vendored-openssl`: 시스템의 `openssl` 라이브러리를 사용하는 대신 자체적으로 `openssl` 라이브러리를 컴파일합니다. 이 기능은 기본적으로 비활성화되어 있으며, 시스템에 `openssl` 라이브러리가 없거나 버전이 너무 낮을 때 활성화합니다. + +## MaaCore 및 리소스 설치 + +maa-cli는 명령줄 인터페이스만 제공하며, 작업을 실행하려면 MaaCore와 리소스가 필요합니다. maa-cli를 설치한 후, 다음 명령어를 통해 MaaCore와 리소스를 설치할 수 있습니다: + +```bash +maa install +``` + +패키지 관리자를 통해 설치한 사용자는 패키지 관리자를 통해 MaaCore를 설치할 수 있습니다: + +- Homebrew: + + ```bash + brew install MaaAssistantArknights/tap/maa-core + ``` + +- Arch Linux: + + ```bash + yay -S maa-assistant-arknights + ``` + +- Nix: + + ```bash + nix-env -iA nixpkgs.maa-assistant-arknights + ``` + +**주의**: 패키지 관리자를 통해 maa-cli를 설치한 경우에만 패키지 관리자를 통해 MaaCore를 설치할 수 있습니다. 그렇지 않으면 `maa install` 명령어를 사용해야 합니다. 또한, `maa install` 명령어는 공식적으로 사전 컴파일된 MaaCore를 다운로드합니다. 패키지 관리자를 통해 설치된 MaaCore는 컴파일 옵션과 종속성 버전이 공식 사전 컴파일 버전과 다를 수 있습니다. 이는 maa-cli의 사용에 영향을 미치지 않지만, MaaCore의 기능과 성능에 차이가 있을 수 있습니다. 예를 들어, 패키지 관리자를 통해 설치된 MaaCore는 최신 버전의 `fastdeploy`를 사용하고, 공식 사전 컴파일된 MaaCore는 구버전의 `fastdeploy`를 사용합니다. 최신 버전의 `fastdeploy`에서는 로그를 숨길 수 있어 불필요한 로그 출력을 줄일 수 있습니다. + + diff --git a/docs/ko-kr/manual/cli/intro.md b/docs/ko-kr/manual/cli/intro.md new file mode 100644 index 0000000000..331576a7c5 --- /dev/null +++ b/docs/ko-kr/manual/cli/intro.md @@ -0,0 +1,23 @@ +--- +order: 1 +icon: material-symbols:toc +--- + +# 소개 + +Rust로 작성된 간단한 [MAA][maa-home] 명령줄 도구입니다. + +## 기능 + +- `maa fight`, `maa run `와 같은 미리 정의된 또는 사용자 정의 작업을 실행합니다. +- `maa install` 및 `maa update`를 사용하여 MaaCore 및 리소스를 설치하고 업데이트합니다. +- `maa self update`를 사용하여 자체 업데이트를 수행합니다. + +## 문서 + +- [설치 및 빌드](install.md) +- [사용법](usage.md) +- [설정](config.md) +- [FAQ](faq.md) + +[maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights/ diff --git a/docs/ko-kr/manual/cli/usage.md b/docs/ko-kr/manual/cli/usage.md new file mode 100644 index 0000000000..8758aab495 --- /dev/null +++ b/docs/ko-kr/manual/cli/usage.md @@ -0,0 +1,92 @@ +--- +order: 3 +icon: material-symbols:summarize +--- + +# 사용법 + +maa-cli의 주요 기능은 MaaCore를 호출하여 명일방주의 게임 작업을 자동화하는 것입니다. 또한 사용의 편의성을 위해 MaaCore 관리 기능도 제공합니다. + +## MaaCore 관리 + +maa-cli는 MaaCore 및 리소스를 설치하고 업데이트할 수 있습니다. 다음 명령어를 실행하세요: + +```bash +maa install # MaaCore 및 리소스 설치 +maa update # MaaCore 및 리소스 업데이트 +``` + +## maa-cli 자체 업데이트 + +maa-cli는 자체 업데이트가 가능합니다. 다음 명령어를 실행하세요: + +```bash +maa self update +``` + +**주의**: 패키지 관리자를 통해 maa-cli를 설치한 사용자는 이 명령어가 작동하지 않으므로, 패키지 관리자를 통해 업데이트하세요. + +## 작업 실행 + +MaaCore 설치가 완료되면 일반적으로 추가 설정 없이 바로 작업을 실행할 수 있습니다. 기본 설정이 모든 사용자에게 적합하지 않을 수 있으며, 작업 실행 중 문제가 발생하면 [설정 문서][config-core]를 참고하여 설정을 변경할 수 있습니다. + +### 사전 정의 작업 + +일반적인 작업에 대해 maa-cli는 몇 가지 사전 정의 작업을 제공합니다: + +- `maa startup [client]`: 게임을 시작하고 메인 화면으로 이동합니다. `[client]`는 클라이언트 유형이며, 생략하면 게임 클라이언트를 시작하지 않습니다. +- `maa closedown`: 게임 클라이언트를 종료합니다. +- `maa fight [stage]`: 전투 작업을 실행합니다. `[stage]`는 스테이지 이름이며, 예를 들어 `1-7`입니다. 생략하면 이전 또는 현재 스테이지를 선택합니다. +- `maa copilot `: 자동 전투 작업을 실행합니다. ``는 작업의 URI로 `maa://1234` 또는 로컬 파일 경로 `./1234.json`일 수 있습니다. +- `maa roguelike [theme]`: 자동 통합 전략을 실행합니다. `[theme]`는 통합 전략의 주제이며, 선택 가능한 값은 `Phantom`, `Mizuki`, `Sami`입니다. + +위 작업들은 몇 가지 매개변수를 받습니다. `maa --help` 명령어를 통해 자세한 매개변수를 확인할 수 있습니다. + +예를 들어, 공식 서버 사용자가 게임을 열고, BB-7을 3번 플레이하고, 게임을 종료하려면 다음 명령어를 실행할 수 있습니다: + +```bash +maa startup Official && maa fight BB-7 -m 3 && maa closedown +``` + +### 사용자 정의 작업 + +MAA가 지원하는 작업이 많기 때문에, maa-cli는 모든 작업에 대한 미리 정의된 옵션을 제공할 수 없습니다. 위 예시처럼 여러 작업을 실행해야 할 수도 있습니다. 이를 해결하기 위해 maa-cli는 사용자 정의 작업 기능을 제공합니다. 사용자 정의 작업은 다양한 작업을 조합하고 각 작업의 매개변수와 실행 순서를 세부적으로 제어할 수 있습니다. 또한, 조건 판단을 통해 특정 작업을 실행할지 여부나 어떤 매개변수를 사용할지 결정할 수 있습니다. 이를 통해 일상 작업을 자동화할 수 있습니다. 사용자 정의 작업은 설정 파일을 통해 정의되며, 설정 파일의 위치와 작성 방법은 [사용자 정의 작업 문서][custom-task]를 참고하세요. 설정 파일 작성이 완료되면 `maa run ` 명령어를 통해 사용자 정의 작업을 실행할 수 있습니다. 여기서 ``는 확장자를 제외한 사용자 정의 작업 파일 이름입니다. + +### 작업 요약 + +미리 정의된 작업이든 사용자 정의 작업이든, maa-cli는 작업이 종료되면 작업 요약 정보를 출력합니다. 여기에는 각 하위 작업의 실행 시간(시작 시간, 종료 시간, 실행 기간)이 포함됩니다. 일부 작업의 경우 결과 요약도 출력됩니다: + +- `fight` 작업: 스테이지 이름, 실행 횟수, 사용된 약물 수량 및 드롭 통계. +- `infrast`: 각 시설에 배치된 오퍼레이터, 제조소 및 무역소의 경우 생성된 아이템 유형 포함. +- `recruit`: 각 모집의 태그, 별 등급 및 상태, 총 모집 횟수. +- `roguelike`: 탐험 횟수, 투자 횟수. + +작업 요약을 원하지 않는 경우 `--no-summary` 매개변수를 통해 비활성화할 수 있습니다. + +### 작업 로그 + +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_LOG_PREFIX` 환경 변수를 통해 이 동작을 변경할 수 있습니다. `Always`로 설정하면 항상 접두사를 포함하고, `Auto`로 설정하면 로그 파일 출력 시에만 접두사를 포함하며, 표준 오류 출력 시에는 포함하지 않습니다. `Never`로 설정하면 로그 파일 출력 시에도 접두사를 포함하지 않습니다. + +### 기타 하위 명령어 + +위 명령어 외에도 maa-cli는 다음과 같은 하위 명령어를 제공합니다: + +- `maa list`: 모든 사용 가능한 작업을 나열합니다. +- `maa dir `:특정 디렉토리의 경로를 확인합니다. 예: `maa dir config`는 설정 디렉토리의 경로를 확인합니다. +- `maa version`: `maa-cli` 및 `MaaCore`의 버전 정보를 확인합니다. +- `maa convert [output]`: `JSON`, `YAML`, `TOML` 형식 파일을 다른 형식으로 변환합니다. +- `maa complete `: 자동 완성 스크립트를 생성합니다. +- `maa activity [client]`: 게임의 현재 이벤트 정보를 확인합니다. `client`는 클라이언트 유형이며, 기본값은 `Official`입니다. +- `maa cleanup`: `maa-cli` 및 `MaaCore`의 캐시를 정리합니다. +- `maa import [-t ]:` 설정 파일을 가져옵니다. `file`은 설정 파일의 경로입니다. `-t` 옵션을 통해 설정 파일의 유형(`cli`, `profile`, `infrast` 등)을 지정할 수 있습니다. + +더 많은 명령어 사용 방법은 `maa help`를 통해 확인할 수 있으며, 특정 명령어의 사용 방법은 `maa help 를 통해 확인할 수 있습니다. + +[config-core]: config.md#maacore-관련-설정 +[custom-task]: config.md#사용자-정의-작업 + + diff --git a/docs/ko-kr/manual/connection.md b/docs/ko-kr/manual/connection.md new file mode 100644 index 0000000000..f74ec0db38 --- /dev/null +++ b/docs/ko-kr/manual/connection.md @@ -0,0 +1,169 @@ +--- +order: 3 +icon: mdi:plug +--- + +# 연결 설정 + +:::note +에뮬레이터가 아닌 실제 디바이스의 경우 [Android 디바이스 지원](./device/android.md)을 참고하세요. +::: + +## ADB 경로 + +:::info 기술적 정보 +자동 감지는 에뮬레이터의 ADB를 사용하지만, 자동 감지에 문제가 있을 경우 수동 설정이 필요합니다. +`ADB 강제 교체`는 구글이 제공하는 ADB를 다운로드한 후 교체하는 것으로, 구글 ADB를 설정하면 한 번만 설정해두면 됩니다. +::: + +### 에뮬레이터에서 제공하는 ADB 사용 + +에뮬레이터 설치 경로로 이동합니다. Windows에서는 에뮬레이터 실행 중 작업 관리자를 열어 프로세스를 오른쪽 클릭하고 `파일 위치 열기`를 선택합니다. + +상위 또는 하위 디렉토리에서 `adb`가 포함된 exe 파일을 찾을 수 있습니다. 검색 기능을 사용하여 파일을 찾고 선택하세요. + +:::details 예시 +`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe` +::: + +### 구글이 제공하는 ADB 사용 + +[여기서](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 다운로드 후 압축을 풀고, `adb.exe`를 선택합니다. + +MAA 폴더에 직접 압축을 푸는 것을 권장합니다. 그러면 ADB 경로에 `.\platform-tools\adb.exe`를 입력할 수 있으며, MAA 폴더와 함께 이동할 수 있습니다. + +## 연결 주소 + +::: tip +로컬에서 실행되는 에뮬레이터의 연결 주소는 `127.0.0.1:<포트 번호>` 또는 `emulator-<네 자리 숫자>`이어야 합니다. +::: + +### 포트 번호 입력 + +#### 에뮬레이터 관련 문서 및 참조 포트 + +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` +- [逍遥(Xiaoyao)](https://bbs.xyaz.cn/forum.php?mod=viewthread&tid=365537) `21503` +- [夜神(Yeshen)](https://support.yeshen.com/zh-CN/qt/ml) `62001` + +기타 에뮬레이터는 [赵青青의 블로그](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)를 참고하세요. + +#### 멀티 인스턴스에 관하여 + +- MuMu 12 의 멀티 인스턴스 관리자 오른쪽 상단에서 실행 중인 인스턴스의 포트를 확인할 수 있습니다. +- Bluestacks 5 에뮬레이터 설정 내에서 현재 멀티 인스턴스 포트를 확인할 수 있습니다. +- *추가 예정* + +#### 대체 방법 + +- 방법 1: adb 명령어로 에뮬레이터 포트 확인 + + 1. **하나의 에뮬레이터**를 실행하고, 다른 안드로이드 장치가 이 컴퓨터에 연결되어 있지 않은지 확인합니다. + 2. adb 실행 파일이 있는 폴더에서 명령어 창을 엽니다. + 3. 다음 명령어를 실행합니다. + + ```sh + # Windows 명령 프롬프트 + adb devices + # Windows PowerShell + .\adb devices + ``` + + 다음은 출력 예시입니다: + + ```text + List of devices attached + 127.0.0.1:<포트 번호> device + emulator-<네 자리 숫자> device + ``` + + `127.0.0.1:<포트>` 또는 `emulator-<네 자리 숫자>`를 연결 주소로 사용합니다. + +- 방법 2: 기존 adb 연결 찾기 + + 1. 방법 1을 시도합니다. + 2. `윈도우 키 + S`를 눌러 검색 창을 열고, `리소스 모니터`를 입력한 후 실행합니다. + 3. `네트워크` 탭으로 전환하고, 수신 대기 포트의 이름 열에서 에뮬레이터 프로세스명을 찾습니다. 예: `HD-Player.exe`. + 4. 에뮬레이터 프로세스의 모든 수신 대기 포트를 기록합니다. + 5. `TCP 연결`의 목록에서 `adb.exe`를 찾아, 원격 포트 열에서 에뮬레이터 수신 대기 포트와 일치하는 포트를 에뮬레이터 디버깅 포트로 사용합니다. + +### Bluestacks 에뮬레이터 Hyper-V 포트 번호 변경 + +`연결 설정`에서 `연결 프리셋`을 `Bluestacks 에뮬레이터`로 설정한 후, `연결 자동 감지`와 `매번 재감지`를 선택합니다. + +일반적으로 이렇게 설정하면 연결됩니다. 연결되지 않는 경우, 여러 에뮬레이터 코어가 존재하거나 문제가 발생한 것입니다. 아래의 추가 설정을 읽어보세요. + +#### `Bluestacks.Config.Keyword` 지정 + +::: info 주의 +멀티 인스턴스 기능을 활성화했거나 여러 에뮬레이터 코어를 설치한 경우, 사용 중인 에뮬레이터 번호를 지정해야 합니다. +::: + +`.\config\gui.json`에서 `Bluestacks.Config.Keyword` 필드를 검색합니다. 내용은 `"bst.instance.<에뮬레이터 번호>.status.adb_port"`입니다. 에뮬레이터 번호는 에뮬레이터 경로의 `BlueStacks_nxt\Engine`에서 확인할 수 있습니다. + +::: details 예시 +Nougat64 코어: + +```json +"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", +``` + +Pie64_2 코어:(코어 이름 뒤의 숫자는 멀티 인스턴스 코어를 나타냅니다) + +```json +"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", +``` + +::: + +#### `Bluestacks.Config.Path` 지정 + +::: info 주의 +MAA는 이제 레지스트리에서 `bluestacks.conf`의 저장 위치를 읽어오려고 시도합니다. 이 기능이 작동하지 않을 경우 수동으로 구성 파일 경로를 지정해야 합니다. +::: + +1. 블루스택 데이터 디렉토리에서 `bluestacks.conf` 파일을 찾습니다. + + - 글로벌 버전 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` + - 중국 내륙 버전 `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf` + +2. 처음 사용하는 경우, MAA를 한 번 실행하여 MAA가 자동으로 구성 파일을 생성하게 합니다. + +3. **MAA를 종료**한 후, `gui.json`을 열어 `Configurations` 아래의 현재 구성 이름 필드를 찾습니다(설정-구성 전환에서 확인할 수 있으며, 기본값은 `Default`입니다). 그 안에서 `Bluestacks.Config.Path` 필드를 찾아 `bluestacks.conf`의 전체 경로를 입력합니다. (슬래시를 이스케이프 `\\`해서 사용해야 합니다.) + +::: details 예시 +`C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 경로 예시 + +```json +{ + "Configurations": { + "Default": { + "Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf" + // 다른 구성 필드, 수동으로 입력하지 마세요. + } + } +} +``` + +::: + +## 연결 구성 + +해당 에뮬레이터의 구성을 선택해야 합니다. 목록에 없으면 일반 구성을 선택하세요. 일반 구성이 작동하지 않으면 다른 사용 가능한 구성을 시도하세요. + +자세한 차이점은 [소스 코드](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L68)를 참조하세요. + +## 터치 모드 + +1. [Minitouch](https://github.com/DeviceFarmer/minitouch): C로 작성된 Android 터치 이벤트 핸들러로, 외부 프로그램이 터치 이벤트와 제스처를 트리거할 수 있는 소켓 인터페이스를 제공합니다. Android 10부터는 SELinux가 `Enforcing` 모드일 때 Minitouch가 더 이상 사용되지 않습니다. +2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch): MAA가 Java 기반으로 Minitouch를 재구현한 것입니다. 높은 버전의 Android에서도 사용 가능성이 테스트 중입니다. +3. Adb Input: ADB 명령어를 직접 호출하여 터치 작업을 수행하며, 호환성이 가장 좋고 속도는 가장 느립니다. + +## ADB Lite + +MAA가 독립적으로 구현한 ADB 클라이언트로, 원본 ADB와 비교했을 때 여러 ADB 프로세스를 계속해서 실행하지 않아도 되지만, 일부 스크린샷 방식은 사용할 수 없습니다. + +활성화하는 것을 권장하지만, 구체적인 장단점은 피드백이 필요합니다. ~~테스트를 도와주세요~~ diff --git a/docs/ko-kr/manual/device/README.md b/docs/ko-kr/manual/device/README.md new file mode 100644 index 0000000000..cb9b00b34a --- /dev/null +++ b/docs/ko-kr/manual/device/README.md @@ -0,0 +1,9 @@ +--- +title: 플랫폼 별 지원 +icon: mingcute:laptop-fill +index: false +dir: + order: 5 +--- + + diff --git a/docs/ko-kr/사용자설명서/플랫폼/4.Android.md b/docs/ko-kr/manual/device/android.md similarity index 95% rename from docs/ko-kr/사용자설명서/플랫폼/4.Android.md rename to docs/ko-kr/manual/device/android.md index 7e0ad630d0..20f28e552a 100644 --- a/docs/ko-kr/사용자설명서/플랫폼/4.Android.md +++ b/docs/ko-kr/manual/device/android.md @@ -1,17 +1,12 @@ --- +order: 4 icon: mingcute:android-fill --- # Android 디바이스 지원 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: info 주의사항 + 1. Android 10부터 `Minitouch`는 `SELinux`가 `Enforcing` 모드인 경우 더 이상 사용할 수 없습니다. 다른 터치 모드로 전환하거나 `SELinux`를 일시적으로 `Permissive` 모드로 전환하세요. 2. Android 생태계가 매우 복잡하기 때문에 `MAA 설정` - `연결 설정`에서 `연결 구성`을 `일반 모드` 또는 `호환 모드` 또는 `두 번째 해상도` 또는 `일반 모드(이상 출력 차단)`로 변경하여 작동하는 모드를 찾을 수 있습니다. 3. MAA는 오직 `16:9` 비율의 해상도만 지원하므로, `16:9` 또는 `9:16` 화면 비율이 아닌 장치는 해상도를 강제로 변경해야 합니다. 이는 대부분의 현대적인 장치에 해당됩니다. 연결된 장치의 화면 비율이 원래 `16:9` 또는 `9:16`인 경우에는 해상도 변경 부분을 건너뛸 수 있습니다. @@ -140,7 +135,7 @@ icon: mingcute:android-fill - 장치가 컴퓨터와 동일한 LAN 환경에 있고 서로 통신할 수 있는지 확인하세요. `AP 격리`, `게스트 네트워크` 등의 설정은 장치 간 통신을 차단할 수 있습니다. 관련 라우터 문서를 참조하세요. - 장치를 다시 시작하면 무선 디버깅이 비활성화되므로 다시 설정해야 합니다. -#### `adb tcpip`를 사용하여 무선 포트를 엽니다. +#### `adb tcpip`를 사용하여 무선 포트를 엽니다 1. 방금 열린 명령 프롬프트 창에 다음 명령을 입력하여 무선 디버깅을 활성화합니다. @@ -157,7 +152,7 @@ icon: mingcute:android-fill 3. MAA `설정` - `연결 설정` - `연결 주소에` `:5555`와 같이 현재 장치의 IP 주소를 입력합니다. (예: `192.168.1.2:5555`) 4. Link Start! -#### `adb pair`를 사용하여 무선 포트를 엽니다. +#### `adb pair`를 사용하여 무선 포트를 엽니다 ::: tip `adb pair`는 안드로이드 11 이상에서 개발자 옵션의 `무선 디버깅`을 사용하여 페어링한 후 연결하는 것으로, 유선 연결을 안할 수 있습니다. @@ -174,7 +169,7 @@ icon: mingcute:android-fill 3. 현재 장치 화면에 나타나는 ``를 MAA `설정` - `연결 설정` - `연결 주소`에 입력합니다. (예: `192.168.1.2:11451`), **이전에 입력한 것과 반드시 다르게 입력하세요.** 4. Link Start! -#### 루트 권한을 사용하여 무선 포트를 엽니다. +#### 루트 권한을 사용하여 무선 포트를 엽니다 ~~root를 했으면 이 문서를 더이상 보지 않아도 됩니다~~ diff --git a/docs/ko-kr/사용자설명서/플랫폼/3.Linux.md b/docs/ko-kr/manual/device/linux.md similarity index 85% rename from docs/ko-kr/사용자설명서/플랫폼/3.Linux.md rename to docs/ko-kr/manual/device/linux.md index 60ecf2cb80..443de9fc9a 100644 --- a/docs/ko-kr/사용자설명서/플랫폼/3.Linux.md +++ b/docs/ko-kr/manual/device/linux.md @@ -1,15 +1,9 @@ --- +order: 3 icon: teenyicons:linux-alt-solid --- -# Linux 에뮬레이터 지원 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +# Linux 지원 ## 준비 작업 @@ -17,7 +11,7 @@ icon: teenyicons:linux-alt-solid ### maa-cli 사용 -[maa-cli](https://github.com/MaaAssistantArknights/maa-cli)는 Rust로 작성된 간단한 MAA 커맨드 라인 도구입니다. 관련 설치 및 사용 방법은 [CLI 가이드](../CLI.md)를 참조하세요. +[maa-cli](https://github.com/MaaAssistantArknights/maa-cli)는 Rust로 작성된 간단한 MAA 커맨드 라인 도구입니다. 관련 설치 및 사용 방법은 [CLI 가이드](../cli/intro.md)를 참조하세요. ### Python 사용 @@ -31,7 +25,7 @@ icon: teenyicons:linux-alt-solid 2. `./MAA-v{버전}-linux-{아키텍처}/Python/` 폴더로 이동하여 `sample.py` 파일을 엽니다. ::: tip -사전 컴파일된 버전은 상대적으로 최신 버전의 리눅스 배포판 (Ubuntu 22.04)에서 컴파일된 동적 라이브러리를 포함하고 있습니다. 시스템의 libstdc++ 버전이 오래되어 ABI 호환성 문제가 발생할 수 있습니다. [Linux 컴파일 가이드](../../개발문서/2.Linux가이드.md)를 참조하여 다시 컴파일하거나 컨테이너를 실행할 수 있습니다. +사전 컴파일된 버전은 상대적으로 최신 버전의 리눅스 배포판 (Ubuntu 22.04)에서 컴파일된 동적 라이브러리를 포함하고 있습니다. 시스템의 libstdc++ 버전이 오래되어 ABI 호환성 문제가 발생할 수 있습니다. [Linux 컴파일 가이드](../../develop/linux-tutorial.md)를 참조하여 다시 컴파일하거나 컨테이너를 실행할 수 있습니다. ::: #### 2. `adb` 구성 @@ -68,7 +62,7 @@ icon: teenyicons:linux-alt-solid #### 3. 작업 설정 -사용자 정의 작업: [통합 문서](../../스키마/1.통합문서.md)를 참조하고, `sample.py`의 # 작업 및 매개 변수는 [예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54)를 참조해 줄을 수정하세요. +사용자 정의 작업: [통합 문서](../../protocol/integration.md)를 참조하고, `sample.py`의 # 작업 및 매개 변수는 [예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54)를 참조해 줄을 수정하세요. ## 모바일 시뮬레이터 지원 diff --git a/docs/ko-kr/사용자설명서/플랫폼/2.Mac.md b/docs/ko-kr/manual/device/macos.md similarity index 91% rename from docs/ko-kr/사용자설명서/플랫폼/2.Mac.md rename to docs/ko-kr/manual/device/macos.md index 125980d2d3..6912bd66d2 100644 --- a/docs/ko-kr/사용자설명서/플랫폼/2.Mac.md +++ b/docs/ko-kr/manual/device/macos.md @@ -1,18 +1,12 @@ --- +order: 2 icon: basil:apple-solid --- -# Mac 에뮬레이터 지원 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +# Mac 지원 ::: tip -문제가 발생하면 [FAQ](../FAQ.md)를 먼저 참조하세요. +문제가 발생하면 [FAQ](../faq.md)를 먼저 참조하세요. ::: ## Apple Silicon 칩셋 @@ -59,11 +53,10 @@ icon: basil:apple-solid ### ✅ [녹스 에뮬레이터](https://www.yeshen.com/) -완벽하게 지원됩니다. 현재 Mac의 MAAX 버전은 에뮬레이터 자동 감지 기능을 지원하지 않으므로 MAA 설정 - 연결 설정에서 adb를 사용하여 127.0.0.1:62001에 연결해야 합니다. 포트가 기본 5555가 아니라는 점에 유의하세요. 에뮬레이터 포트에 대한 자세한 설명은 [에뮬레이터 포트](../FAQ.md#adb-및-연결-주소-확인)를 참조하세요. +완벽하게 지원됩니다. 현재 Mac의 MAAX 버전은 에뮬레이터 자동 감지 기능을 지원하지 않으므로 MAA 설정 - 연결 설정에서 adb를 사용하여 127.0.0.1:62001에 연결해야 합니다. 포트가 기본 5555가 아니라는 점에 유의하세요. 에뮬레이터 포트에 대한 자세한 설명은 [에뮬레이터 포트](../faq.md#adb-및-연결-주소-확인)를 참조하세요. 추가로, macOS에서 녹스 에뮬레이터의 adb 이진 파일의 위치는 `/Applications/NoxAppPlayer.app/Contents/MacOS/adb`이며 부모 디렉토리 `MacOS`에서 `adb devices` 명령을 사용하여 adb 포트를 확인할 수 있습니다. ### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) 지원됩니다. 그러나 Android 10부터는 SELinux가 `Enforcing` 모드일 때 `Minitouch`를 사용할 수 없습니다. 다른 터치 모드로 전환하거나 SELinux를 **임시**로 `Permissive` 모드로 변경하세요. - diff --git a/docs/ko-kr/manual/device/windows.md b/docs/ko-kr/manual/device/windows.md new file mode 100644 index 0000000000..866ace45f0 --- /dev/null +++ b/docs/ko-kr/manual/device/windows.md @@ -0,0 +1,155 @@ +--- +order: 1 +icon: ri:windows-fill +--- + +# Windows 지원 + +아래의 목록은 무작위순이며, 성능순이 아닙니다. + + + +## ✅ 완벽한 지원 + +
+ +## ⚠️ 부분 지원 + +
+ +## 🚫 미지원 + +
diff --git a/docs/ko-kr/사용자설명서/FAQ.md b/docs/ko-kr/manual/faq.md similarity index 89% rename from docs/ko-kr/사용자설명서/FAQ.md rename to docs/ko-kr/manual/faq.md index 8530ee9226..d8ebe1d424 100644 --- a/docs/ko-kr/사용자설명서/FAQ.md +++ b/docs/ko-kr/manual/faq.md @@ -1,18 +1,13 @@ --- +order: 4 icon: ph:question-fill --- # 자주 묻는 질문 (FAQ) -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: warning MAA는 5.0 버전에서 .NET 8로 업데이트 되었습니다. 사용자에게는 다음과 같은 영향이 있습니다. + 1. MAA는 이제 .NET 8 런타임이 필요하며, 시작 시 사용자에게 자동으로 설치를 안내합니다. 설치가 실패하는 경우 아래 내용을 참조하여 수동으로 설치할 수 있습니다. 2. MAA가 더 이상 Windows Defender에 오진되지 않습니다.~~이 냄새나는 만두를 위해?~~ 3. [.NET 8 은 Windows 7/8/8.1을 지원하지 않습니다](https://github.com/dotnet/core/issues/7556), 따라서 MAA도 더 이상 지원되지 않습니다. 현재 정상적으로 작동하지만요... @@ -36,12 +31,11 @@ MAA는 5.0 버전에서 .NET 8로 업데이트 되었습니다. 사용자에게 이곳에서는 공식 설치 방법만 안내합니다. 공식 설치가 아닌 제 3자의 설치 패키지의 신뢰성은 보장할 수 없습니다. ::: -- [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe)와 [.NET 8](https://download.visualstudio.microsoft.com/download/pr/84ba33d4-4407-4572-9bfa-414d26e7c67c/bb81f8c9e6c9ee1ca547396f6e71b65f/windowsdesktop-runtime-8.0.2-win-x64.exe)를 설치하고 컴퓨터를 다시 시작한 후 MAA를 다시 실행해보세요. +- [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe)와 [.NET 8.0.6](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=x86-,.NET%20Desktop%20Runtime,-8.0.6)를 설치하고 컴퓨터를 다시 시작한 후 MAA를 다시 실행해보세요. Windows 10 또는 11을 사용하는 경우 winget 도구를 사용하여 설치할 수도 있습니다. 다음 명령어를 터미널에서 실행하세요. - ```bash - winget install Microsoft.VCRedist.2015+.x64 - winget install Microsoft.DotNet.DesktopRuntime.8 + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 ``` #### Windows N/KN 관련 @@ -56,7 +50,7 @@ Windows 7를 사용하는 경우, 아래 언급된 런타임 이전에 아래 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) + 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) @@ -83,7 +77,7 @@ Windows 7를 사용하는 경우, 아래 언급된 런타임 이전에 아래 ## 연결 오류 ::: tip -사용 중인 에뮬레이터가 지원하는지, 확인하려면 다음 문서를 참조하세요. [Windows 지원 목록](./플랫폼/1.Windows.md) +사용 중인 에뮬레이터가 지원하는지, 확인하려면 다음 문서를 참조하세요. [Windows 지원 목록](./device/windows.md) ::: ### adb 및 연결 주소 확인 @@ -91,8 +85,9 @@ Windows 7를 사용하는 경우, 아래 언급된 런타임 이전에 아래 - MAA의 `설정` - `연결 설정` - `adb 경로`가 채워졌는지 확인하세요. 이미 채워져 있다면 이 단계를 건너뛰세요. ::: details 미 입력시 -+ 에뮬레이터의 설치 경로를 찾으세요. Windows에서는 작업 관리자에서 에뮬레이터를 실행한 후 프로세스를 마우스 오른쪽 클릭하여 `파일 위치 열기`를 선택할 수 있습니다. -+ 최상위 또는 하위 폴더에는 일반적으로 adb.exe가 있을 것입니다. 해당 파일을 선택하세요! (이름이 정확히 일치하지 않을 수 있습니다. 예를 들어 `nox_adb.exe`, `HD-adb.exe`, `adb_server.exe` 등이 있을 수 있습니다. 어쨌든 adb가 들어간 이름의 exe 파일입니다) + +- 에뮬레이터의 설치 경로를 찾으세요. Windows에서는 작업 관리자에서 에뮬레이터를 실행한 후 프로세스를 마우스 오른쪽 클릭하여 `파일 위치 열기`를 선택할 수 있습니다. +- 최상위 또는 하위 폴더에는 일반적으로 adb.exe가 있을 것입니다. 해당 파일을 선택하세요! (이름이 정확히 일치하지 않을 수 있습니다. 예를 들어 `nox_adb.exe`, `HD-adb.exe`, `adb_server.exe` 등이 있을 수 있습니다. 어쨌든 adb가 들어간 이름의 exe 파일입니다) ::: - 연결 주소가 올바르게 입력되었는지 확인하세요. 사용 중인 에뮬레이터의 adb 디버깅 주소를 인터넷에서 검색하세요. 일반적으로 127.0.0.1:5555와 같은 형식입니다. (단, LDPlayer는 예외입니다) @@ -110,6 +105,7 @@ Windows 7를 사용하는 경우, 아래 언급된 런타임 이전에 아래 | Memu | 21503 | | BlueStacks | 5555 | | LDPlayer 9 | 5555 / emulator-5554 | + ::: 이 외의 에뮬레이터를 사용할 경우에는, 다음 블로그를 참조하세요. [Zhao Qingqing의 블로그](https://www.cnblogs.com/zhaoqingqing/p/15238464.html)。 @@ -133,7 +129,7 @@ adb 버전이 다를 경우, 새로 시작된 프로세스가 이전 프로세 ### 에뮬레이터 변경 -[Windows 지원 목록](./플랫폼/1.Windows.md)을 참고하세요. +[Windows 지원 목록](./device/windows.md)을 참고하세요. ## 연결은 정상이지만, 조작이 안됨 @@ -171,6 +167,7 @@ Pie64_2 코어: (코어 이름 뒤의 숫자는 멀티 오픈 코어를 나타 ```json "Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", ``` + ::: ### `Bluestacks.Config.Path` 지정 @@ -204,26 +201,26 @@ MAA는 이제 레지스트리에서 `bluestacks.conf`의 위치를 읽으려고 ::: -## 연결은 정상이지만 작업이 버벅거리거나 이상 또는 빈번한 오류가 발생합니다. +## 연결은 정상이지만 작업이 버벅거리거나 이상 또는 빈번한 오류가 발생합니다 - `UI 위치 조절`을 사용하는 경우 0으로 설정하세요. - 국가 별 클라이언트를 플레이하는 경우 먼저 `설정` - `게임 설정` - `클라이언트 유형`에서 `클라이언트 버전`을 선택하세요. 해외 클라이언트의 경우 일부 기능이 완전히 호환되지 않을 수 있으므로 해당 해외 클라이언트 사용 설명서를 참조하세요. -- 통합전략 기능을 사용할 경우, [사용자 설명서](./사용자설명서.md)를 참조하고 `통합전략` - `테마`에서 올바른 테마를 선택하세요 +- 통합전략 기능을 사용할 경우, [사용자 설명서](./introduction/integrated-strategy.md)를 참조하고 `통합전략` - `테마`에서 올바른 테마를 선택하세요 - `Adb Input` 터치 모드 작업이 느린 것은 정상입니다. Copilot 기능이 필요한 경우 다른 모드로 전환해 보세요. -### 스크린샷 촬영이 오래 걸리거나 오랜 시간이 걸립니다. +### 스크린샷 촬영이 오래 걸리거나 오랜 시간이 걸립니다 - MAA는 현재 `RawByNc`, `RawWithGzip`, `Encode` 세 가지 방법으로 스크린샷을 지원하며 평균 스크린샷 시간이 400/800보다 클 때 한 번의 메시지를 출력합니다. (한 번의 작업에서 한 번만 메시지를 출력합니다) - `설정` - `연결 설정`에서 최근 30회 스크린샷 시간의 최소/평균/최대값을 표시하며 10회마다 스크린샷이 새로 고침됩니다. - Copilot(자동 전투) 기능은 스크린샷 시간에 크게 영향을 받습니다. - 이 시간은 MAA와 관련이 없으며 컴퓨터 성능, 현재 사용률 또는 시뮬레이터에 따라 달라집니다. 백그라운드를 정리하거나 시뮬레이터를 변경하거나 컴퓨터 구성을 업그레이드하는 등의 조치를 취해보세요. -## 파일 다운로드 속도가 느립니다. +## 파일 다운로드 속도가 느립니다 [MAA 다운로드 사이트](https://ota.maa.plus/MaaAssistantArknights/MaaRelease/releases/download/)에서 다운로드 하세요. 우리의 서버는 대역폭이 낮고 트래픽이 제한됩니다. 사용하기 위해 만들어졌지만 너무 남용하지 마세요. GitHub 또는 다른 미러 사이트에서 정상적으로 다운로드할 수 있는 경우 거기에서 먼저 시도해보세요. -## 중간에 다운로드 중 "로그인"/"인증" 메시지가 표시됩니다. +## 중간에 다운로드 중 "로그인"/"인증" 메시지가 표시됩니다 브라우저 / IDM / FDM 등의 다운로드 관리자를 사용하여 파일을 다운로드하세요. **위쳐를 사용하지 마세요!** diff --git a/docs/ko-kr/manual/introduction/README.md b/docs/ko-kr/manual/introduction/README.md new file mode 100644 index 0000000000..1da18f1947 --- /dev/null +++ b/docs/ko-kr/manual/introduction/README.md @@ -0,0 +1,9 @@ +--- +title: 기능 +icon: mdi:information-outline +index: false +dir: + order: 2 +--- + + diff --git a/docs/ko-kr/manual/introduction/combat.md b/docs/ko-kr/manual/introduction/combat.md new file mode 100644 index 0000000000..de30aea3ac --- /dev/null +++ b/docs/ko-kr/manual/introduction/combat.md @@ -0,0 +1,97 @@ +--- +order: 3 +--- + +# 이성 사용 (Combat) + +## 일반 설정 + +- `이성 사용`의 일반 설정에있는 `이성 회복제 사용 + 순오리지늄 사용`과 `횟수 제한` 및 `드롭 제한` 세 가지 옵션은 하나만 만족해도 종료가 됩니다. + + - `이성 회복제` 는 특정 횟수의 이성 회족제를 사용해 이성을 회복합니다. (연속으로 이성회복제 사용이 가능합니다) + - `순오리지늄` 은 특정 횟수의 순오리지늄을 사용하며, 이성 회복제가 남아있을 경우 사용되지 않습니다. + - `횟수 제한` 은 선택한 스테이지를 몇번 클리어 할 지 정합니다. (예시: 15번 클리어 후 정지) + - `드롭 제한` 은 특정 재화를 몇개 획득할 지 정합니다. (5개의 장치 획득 후 정지) + +- `드롭 제한`과 `스테이지 선택`은 연관되어 있지 않습니다. `드롭 제한`은 재료의 개수를 기준으로 작업을 종료하는 스위치일 뿐 재료를 지정한다고 해서 스테이지를 자동으로 설정해주는 것은 아닙니다. +- `순오리지늄`은 `이성 회복제` 이후에만 판단하므로 MAA는 이성 회복제가 없는 경우에만 이성을 보충합니다. 그래서 `순오리지늄`을 선택한 경우, `이성 회복제`의 사용 횟수를 보유하고 있는 `이성 회복제`보다 더 많이 설정해야 합니다! + +::: details 예시 +| 이성 회복제 | 순오리지늄 | 횟수 제한 | 드롭 제한 | 결과 | +| :---------: | :--------: | :-------: | :-------: | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| | | | | 보유한 이성을 소모하고 정지합니다. | +| 2 | | | | 현재 이성을 소모한 후, 이성 회복제를 `2`회 소모하고 정지합니다. | +| _999_ | 2 | | | 현재 이성을 소모한 후, 이성 회복제를 소모하고, 순오리지늄을 `2`회 사용 후 정지합니다. | +| | | 2 | | 지정한 스테이지를 `2`회 반복하고 정지합니다. | +| | | | 2 | 특정 재화를 `2`개 획득하면 정지합니다. | +| 2 | | 4 | | 작전을 `4`회 시도하며, 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | +| 2 | | | 4 | 특정 재화를 `4`개 획득하면 정지하며, 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | +| 2 | | 4 | 8 | 작전을 `4`회 시도하며, 작전이 전부 끝나기전에 재화를 `8`개를 획득하면 정지합니다. 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | +| _999_ | 4 | 8 | 16 | 모든 이성 회복제를 사용하며, `4`개의 순오리지늄을 사용합니다. 단, `8`회의 작전을 끝내면 정지하며, 그 이전에 `16`개의 재화를 획득하면 정지합니다. | +| | 2 | | | `2`개의 순오리지늄을 사용하며, 이성을 전부 소모하면 정지합니다. | +| 2 | 4 | | | `2`개의 이성 회복제를 사용하며, 이후 `4`개의 순오리지늄을 사용합니다. 이성을 전부 소모하면 정지합니다. | + +::: + +### 작전 개시 (이성 사용) + +- 만약 여러분이 원하는 스테이지가 목록에 없다면 MAA에서 `현재/최근`을 선택한 다음 게임 내에서 수동으로 스테이지를 찾으세요. +스테이지 이름, 정보, 소모 이성이 뜨고 오른쪽 하단에 대리지휘와 시작 버튼이 표시된 화면으로 가세요. +- 해당 화면이 아닌 경우 `현재/이전`은 자동으로 가장 최근에 실행한 스테이지로 이동합니다. +- 또는 작업 `설정` - `이성 사용` - `고급 설정`에서 `스테이지 코드 수동 입력`을 체크해 스테이지 코드를 직접 입력할 수 있습니다. 현재 내비게이션할 수 있는 스테이지는 다음과 같습니다: + - 모든 메인 스토리 스테이지. 표준 또는 어려움 난이도를 전환하려면 스테이지 코드 뒤에 -NORMAL 또는 -HARD를 추가하세요. + - 용문폐 혹은 작전 기록의 5/6스테이지는 `CE-6`/`LS-6`를 입력해야 합니다. MAA는 6 스테이지가 대리 지휘가 불가능할 경우자동으로 5 스테이지로 전환합니다. + - 스킬 북, 구매 증명서, 카본 부품 5스테이지는 `CA-5`/`AP-5`/`SK-5`를 입력해야 합니다. + - 모든 칩 스테이지. 완전한 스테이지 코드를 입력해야 합니다. 예: `PR-A-1`. + - 섬멸 작전. `Annihilation`을 입력해야 합니다. + - 상시 개방 이벤트의 경우 `OF-1`/`OF-F3`/`GT-5`와 같이 입력합니다. + - 현재 개방된 사이드 스토리 이벤트의 세 개의 스테이지입니다. [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json)에서 업데이트를 자동으로 다운로드 한 후 화면 하단에 표시됩니다. + - 재개방된 사이드 스토리 이벤트. `SSReopen-<스테이지 접두사>`를 입력하면 XX-1~XX-9 스테이지를 한 번에 완료할 수 있습니다. 예: `SSReopen-IC`. + +::: details 예시 화면 +![Image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/128385247/c57fc9ed-42be-4df3-8056-64be2e2d4652) +::: + +### 섬멸 작전 + +- MAA는 현재 게임에서 전투 시작 페이지로 이동하기 위해 오른쪽 상단의 핀을 사용합니다. 현재 기간의 섬멸이 `전권 위임`으로 설정되어 있으며 `PRTS 섬멸 작전 대리권`을 충분히 가지고 있어야합니다. +- 현재 섬멸 작전에서 400킬을 한 독타들만 MAA가 자동으로 진행합니다. + +## 고급 설정 + +### 대체 스테이지 + +그날 그날의 개방 여부에 따라 선택된 스테이지가 전투되는지 여부를 결정합니다. 즉, 첫 번째 개방된 스테이지를 전투합니다. + +1. 용문폐, 1-7, 작전기록 스테이지 순으로 선택하세요: + + - 용문폐, 1-7, 작전기록 스테이지가 모두 열려있는 경우 용문폐 스테이지를 실행하고 1-7/작전기록 스테이지는 실행되지 않습니다. 이때 플레이어가 용문폐 스테이지 대리를 개방하지 않은 경우 작업이 실패합니다 + - 1-7, 작전기록 스테이지가 열려있는 경우 1-7을 실행하고 작전기록 스테이지는 실행되지 않습니다. 이때 플레이어가 1-7 대리를 개방하지 않은 경우 작업이 실패합니다. + +2. 섬멸 작전, 용문폐, 1-7 스테이지를 차례로 선택하면 섬멸을 먼저 시도하고 후속 로직이 이전과 같이 실행됩니다. 섬멸 전투 결과는 다른 예비 스테이지의 필터링 로직에 영향을주지 않습니다. + +### 남은 이성 + +`이성 사용`이 종료된 후에 시작되며, 이성 회복제 사용, 순오리지늄 사용, 횟수 제한, 드롭 제한, 연속 전투 횟수 등의 제어를 받지 않고, 이성을 모두 소비하면 종료됩니다. + +- 스테이지 개시 시 이성이 부족한 경우, 남은 이성 스테이지로 이동하여 "나머지" 이성을 소모합니다. (예: 1-7) +- 이성이 부족하여 연속 전투 횟수가 너무 높게 설정된 경우에도 자동으로 단일 전투 횟수로 선택되어 이성을 모두 소비합니다(예: 1-7을 6회 연속 전투 설정하지만, 이성이 30밖에 되지 않는 경우, 자동으로 연속 전투 없는 1-7로 전환됩니다). +- 여전히 이성이 부족하면 작업을 중지합니다.(예: 6 이하의 이성) +- 남은 이성 선택 스테이지가 개방되지 않은 스테이지인 경우, 이성 사용에 실패합니다. + +### 연속 전투 횟수 + +- 현재 MAA는 사용자가 설정한 횟수만큼 연속 전투를 진행하며, 최대 연속 전투 횟수를 자동으로 인식하는 기능은 아직 지원되지 않습니다. +- 설정된 횟수가 많지만 이성이 부족한 경우, MAA는 직접적으로 `이성 회복제 사용` 또는 `순오리지늄 사용`을 수행하고 계속해서 연속 전투를 시도합니다. +- 만약 `이성 회복제 사용` 또는 `순오리지늄 사용`이 설정되어 있지 않은 경우, MAA는 이성이 부족하다고 판단하고 이성 사용을 종료합니다. 만약 `남은 이성`이 설정되어 있다면, MAA는 바로 `남은 이성` 스테이지를 시작합니다. + +### 드롭 인식 + +- 자동으로 자재 드롭을 인식하고 통계를 내며 [펭귄 물류](https://penguin-stats.cn/) 및 [Yituliu](https://ark.yituliu.cn/)로 자동으로 업로드 합니다. +- 수동으로 펭귄물류 ID를 설정할 수 있습니다. + +## 비정상 상황 감지 (대처) + +- `대리 지휘`가 선택되지 않는 경우에도 자동으로 선택해줍니다. +- 연결이 끊어진 후 또는 새벽 4시에 끊어진 후 자동으로 재연결되어 게임에서 마지막으로 선택한 스테이지를 계속해서 플레이할 수 있습니다. 다음 날로 넘어가려면 마지막 스테이지 선택을 확인하세요. +- 레벨 업 상황은 자동으로 처리되며, 미션 실패 시에는 해당 작업이 중단됩니다. diff --git a/docs/ko-kr/manual/introduction/copilot.md b/docs/ko-kr/manual/introduction/copilot.md new file mode 100644 index 0000000000..dad97f6d3f --- /dev/null +++ b/docs/ko-kr/manual/introduction/copilot.md @@ -0,0 +1,37 @@ +--- +order: 9 +--- + +# Copilot (자동 전투) + +[prts.plus](https://prts.plus)에서 이용해 다운로드/업로드 및 제작할 수 있습니다! + +## 작업 불러오기 + +Copilot은 `일반/이벤트 스테이지` 및 `보안파견` 등을 지원합니다. + +- 이 기능을 사용하려면 전투 준비 화면에서 `작전 개시` 버튼이 있는 곳에서 시작해야 합니다. + 그런 다음 MAA의 `자동지휘` 칸에서 `JSON 파일`을 가져오거나 [prts.plus](https://prts.plus)와 같은 사이트에서 코드를 입력하면 됩니다. +- `자동 편성` 기능은 현재 편성을 초기화하고, 작업에 필요한 오퍼레이터를 자동으로 편성합니다. + - `지원 유닛`을 사용하거나, 자동 편성이 불가능할 경우 수동 편성도 가능합니다. + - `맞춤 오퍼레이터 추가`및 `신뢰도가 낮은 오퍼레이터 추가`도 할 수 있습니다. + - `패러독스 시뮬레이션`의 경우 `자동 편성`을 사용하면 안됩니다! 스킬을 수동 선택 후 `시뮬레이션 시작` 버튼이 있는 화면에서 실행하세요. + - `보안 파견`의 경우 자동편성이 불가능합니다! `수동 편성` 해주세요. +- `반복 횟수` 기능이 있지만 `반복 횟수` 기능을 사용할 경우, MAA는 `지원 유닛`을 자동으로 빌리는 기능은 아직 없기에 주의하세요! +- 동일한 지역의 스테이지를 연속적으로 전투하려면, `전투 목록` 기능을 사용할 수 있습니다. + - `전투 목록 아래`의 세 가지 버튼은 왼쪽에서 부터 `폴더 가져오기`, `스테이지 추가`, `스테이지 지우기`입니다. + - 작업을 시작하려면 해당 지역의 지도 화면에서 자동 전투를 시작하세요. 이성이 부족하거나, 3성 클리어를 못한 경우 전투를 정지합니다. + - 전투 목록에 있는 스테이지는 `동일한 지역`에 있어야 합니다. (지도를 좌우로 스크롤하여 이동할 수 있어야 합니다) +- **우수한 Copilot 파일에 반드시 추천을 눌러 제작자를 격려하세요! 큰 도움이 됩니다!** + + ![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) + +## Copilot 파일 작성 + +- [파일 작성기](https://prts.plus/create)를 사용할 수 있고, [전투 스키마 문서](../../protocol/copilot-schema.md)를 참조할 수도 있습니다. +- 좌표를 가져오려면: + - 파일 작성기에서 스테이지를 입력한 후, 왼쪽 하단에 자동으로 확대/축소 가능한 좌표 지도가 표시됩니다. 오퍼레이터 위치를 클릭하여 설정할 수 있습니다. + - 스테이지를 입력하고 JSON을 내보낸 후, 시작 버튼을 누르면 MAA 폴더의 `debug\map`에 좌표 정보가 포함된 지도 스크린샷이 생성됩니다. + - [PRTS.Map](https://map.ark-nights.com/areas)은 `설정`에서 `좌표 표시`를 `MAA`로 변경하고 사용할 수 있습니다 +- 훈련 모드를 지원합니다. +- 파일 설명에는 귀하의 서명(작성자 이름), 참고하는 공략 비디오 링크, 기타 의견 등을 기입하는 것이 좋습니다! diff --git a/docs/ko-kr/manual/introduction/credit.md b/docs/ko-kr/manual/introduction/credit.md new file mode 100644 index 0000000000..0e510ca7b4 --- /dev/null +++ b/docs/ko-kr/manual/introduction/credit.md @@ -0,0 +1,15 @@ +--- +order: 5 +--- + +# 크레딧 상점 + +- 친구를 자동으로 방문하여 크레딧을 획득합니다. +- 전투를 해 크레딧을 획득합니다 + - MAA는 전투에서 지원 유닛을 사용하여 `파란 불꽃의 마음의 OF-1` 스테이지를 한 번 클리어합니다. 해당 스테이지가 잠금 해제되었는지 확인하세요. + - 스테이지 선택이 `현재/최근`인 경우 도우미 전투를 실행하지 않습니다. + +## 고급 설정 + +- 화이트 리스트와 블랙 리스트는 모두 키워드 매칭입니다. 예를 들어 `카본`을 입력하면 `카본 번들`과 `카본` 둘다 매칭됩니다. +- `크레딧 포인트 300 미만 시 구매 X` 크레딧이 300보다 낮을 때에도 화이트리스트 상품은 구매합니다. diff --git a/docs/ko-kr/manual/introduction/infrastructure.md b/docs/ko-kr/manual/introduction/infrastructure.md new file mode 100644 index 0000000000..404514560e --- /dev/null +++ b/docs/ko-kr/manual/introduction/infrastructure.md @@ -0,0 +1,29 @@ +--- +order: 4 +--- + +# 기반시설 + +## 교대 전략 + +- 각 시설 내에서 **최적의 솔루션을 자동으로 계산하고 선택**합니다. 모든 보편적인 기술 및 특수 기술 조합을 지원합니다. +- 작전 기록, 용문폐, 오리지늄 조각, 칩셋을 인식하여 각각 해당하는 오퍼레이터들을 사용합니다. +- `드론 사용처`에 따라 드론을 자동적으로 사용합니다. +- 컨디션 값을 인식합니다. 컨디션이 일정 임계값 이하로 내려가면, 오퍼레이터를 숙소로 보냅니다. + +## 참고 + +- 교대 전략은 다중 시설이 아닌 단일 시설 내에서의 최적의 방안을 바탕으로 합니다. 단일 시설 내의 `샤마르-테킬라` 조합, `버메일-씬` 조합 등은 제대로 인식되지만 `로즈몬티스`나 `피누스 실베스트리스` 등의 다중 시설간 조합은 아직 지원되지 않습니다. +- 만약 다중 시설간 조합을 원할 경우, `커스텀 기반시설`을 이용하세요. +- `드론 사용처`가 `무역소-용문폐`로 지정되어 있을 경우, `샤마르`를 인식하고 드론을 아껴둘 것입니다. +- 응접실에서 단 한 종류의 단서가 부족하다면 해당 진영의 오퍼레이터가 선택됩니다. 그렇지 않은 경우 일반적인 오퍼레이터가 선택됩니다. +- 응접실이 꽉 차 있을 때만 단서를 내보낼 것입니다. 최대 3개의 단서가 전달됩니다. `resource/tasks.json`에서 `SelectClue`-`maxTimes` 필드를 수정해 단서의 전달 개수를 조절할 수 있습니다. +- `아이린`이나 다른 오퍼레이터가 당장 업무 중이 아니라는 이유로 숙소로 보내지는 것을 원치 않는다면, `이미 배치된 오퍼레이터를 숙소에 넣지 않기` 옵션을 활성화할 수 있습니다. 단, 컨디션이 0이 아닌 한 어떤 오퍼레이터도 숙소로 들어오지 못하게 되는 문제를 불러올 수도 있습니다. +- 제어 센터의 복잡성으로 인해서, `아미야`, `스와이어`, `켈시`, `레인보우 팀`과 기타 시간당 컨디션 +0.05 오퍼레이터만이 고려됩니다. 향후 개선될 예정입니다. +- 몇몇 이격 오퍼레이터로 인한 충돌이 발생할 수 있습니다. UI에 오퍼레이터 충돌 경고가 있는지 확인하시고, 경고가 있다면 기반시설의 상태를 수동으로 확인하여 적절하게 배치해 주세요. (예시: 특정 시설이 완전히 비어 있을 수 있음) +- 필요한 시설 유형만 선택해 MAA가 처리하도록 할 수 있습니다. 기본값은 모두 선택되어있습니다. + +## 커스텀 기반시설 (테스트) + +- MAA 폴더의 `/resource/custom_infrast/`에는 이론적 최대 효율의 작업 몇 개가 내장되어 있습니다. 오퍼레이터 인원 수 및 육성의 요구 사항이 매우 높기 때문에 직접 사용하는 것은 권장하지 않습니다. +- Yituliu의 JSON 생성기를 참고해서 작성하세요. [기반시설 JSON 생성기](https://ark.yituliu.cn/tools/schedule), [기반시설 스키마 문서](../../protocol/base-scheduling-schema.md)도 참조하세요. diff --git a/docs/ko-kr/manual/introduction/integrated-strategy.md b/docs/ko-kr/manual/introduction/integrated-strategy.md new file mode 100644 index 0000000000..6cbd470bca --- /dev/null +++ b/docs/ko-kr/manual/introduction/integrated-strategy.md @@ -0,0 +1,29 @@ +--- +order: 7 +--- + +# 통합전략 + +MAA는 기본적으로 가장 최신의 테마를 선택하며, `통합전략` - `일반 설정`에서 변경할 수 있습니다. + +- 게임 내에서 해당 통합전략 테마를 터미널에서 고정(`PIN`)해주세요. 현재 자동 탐색이 가능하지만 장기적인 사용을 보장할 수는 없습니다. +- 대상이 아닌 테마를 탐색하는 도중인 경우(예: 미즈키를 하려고 하는데, 팬텀이 아직 클리어되지 않은 경우) 수동으로 종료해주세요. +- MAA는 난이도를 자동으로 선택하지 않습니다. 난이도가 선택되지 않은 경우에는 난이도 선택 인터페이스에 갇히거나 반복해서 들어가고 나갈 수 있습니다. +- 설정에서 팀, 시작 오퍼레이터(하나의 오퍼레이터만 가능) 등을 선택할 수 있습니다. + +## 전투 전략 + +MAA에는 AI 기능이 없으며, 자동 전투 중의 모든 작업은 미리 설정된 전략이며, 모든 스테이지 전투는 내장된 작업 파일을 호출합니다. + +자세한 내용은 [통합전략 스키마](../../protocol/integrated-strategy-schema.md)를 참고하세요. + +- 오퍼레이터와 숙련도를 자동으로 인식하고 더 나은 오퍼레이터와 기술을 자동으로 선택합니다. +- 상점 아이템을 식별하고 더 좋은 수집품을 우선적으로 구매합니다. + +## 비정상 상황 감지 (대처) + +- 연결이 끊긴 후 다시 연결을 지원하며, 새벽 4시 업데이트 이후에 통합전략을 계속 할 수 있습니다. +- 전투가 5분 이상 완료되지 않을 경우, 모든 지상 부대가 자동으로 철수됩니다. 고착 상태가 6분 이상 지속되면 현재 전투를 자동으로 포기됩니다. +- 작업이 멈추면 자동으로 탐색을 포기하고 재시도합니다. + +그러나 특정 부분에서 자주 멈추고 포기해 효율에 심각한 영향을 미친다면, 피드백을 제공하기 위해 언제든지 문제를 제출해주세요. diff --git a/docs/ko-kr/manual/introduction/others.md b/docs/ko-kr/manual/introduction/others.md new file mode 100644 index 0000000000..0f906e23dc --- /dev/null +++ b/docs/ko-kr/manual/introduction/others.md @@ -0,0 +1,27 @@ +--- +order: 11 +--- + +# Others + +## 시작 시 자동으로 구성 변경 + +MAA는 시작 매개변수를 통해 구성을 자동으로 전환할 수 있습니다. MAA 프로세스 이름 뒤에 `--config <구성 이름>`을 추가하면 됩니다. 예: `./MAA/MAA.exe --config 공식서버` + +일부 기호는 이스케이프해야 합니다. `Json` 참조하세요. 예를 들어 구성 이름이 `"공식서버"`인 경우 매개변수는 --config `\"공식서버\"`가 되어야 합니다 + +## 시작 전/후 스크립트 + +v4.13.0 이후에는 시작 전/후 스크립트를 설정할 수 있으며, 작업 전후에 배치 파일을 자동으로 실행할 수 있습니다. + +배치 파일인 `*.bat` 파일의 경로를 입력해야 합니다. + +## 참고 + +- UI에서 작업 순서를 변경할 수 있습니다. 인프라에서도 이동 순서를 변경할 수 있습니다. +-거의 모든 구성 변경은 자동으로 저장됩니다. `*`, `(only once)` 및 우클릭으로 반 선택하는 옵션은 예외입니다. +- 모든 클릭 이벤트는 해당 지역 내에서 랜덤하게 발생하며, 포아송 분포를 따릅니다. (중심 부근에서 높은 확률, 주변에서 낮은 확률) +- C++로 개발되었으며, 핵심 알고리즘은 CPU 및 메모리 사용량을 최소화하기 위해 다단계 캐시를 지원합니다. +- 소프트웨어는 자동 업데이트를 지원합니다 ✿✿ ヽ(°▽°)ノ ✿ 베타 테스터들은 더 빠르고 덜 버그가 있는 베타 버전을 시도할 수 있습니다 (아마도). +- 자동 업데이트에 실패한 경우 OTA(Over-The-Air) 패키지를 수동으로 다운로드하여 ZIP 파일을 동일한 디렉토리에 넣으면 자동으로 업데이트가 시작됩니다. +- Windows 버전에서는 MAA 폴더의 `config` 폴더에 있는 `gui.json`이 모든 설정을 기록합니다. 새로운 완전한 패키지를 다운로드한 경우 이 폴더를 새로운 MAA 폴더로 복사할 수 있습니다. diff --git a/docs/ko-kr/manual/introduction/reclamation-algorithm.md b/docs/ko-kr/manual/introduction/reclamation-algorithm.md new file mode 100644 index 0000000000..a1525614e9 --- /dev/null +++ b/docs/ko-kr/manual/introduction/reclamation-algorithm.md @@ -0,0 +1,13 @@ +--- +order: 8 +--- + +# 생명연산 + +현재 생명연산 기능은 초기 단계이며, 다음 사항을 주의하세요: + +1. 기존 데이터(진행사항)가 있으면 사용할 수 없습니다 +2. 생명연산의 편성창에 오퍼레이터가 있으면 안됩니다 +3. 생명연산 메인화면에서 시작해야합니다 + +현재 새벽에 작업 시키는건 권장하지 않으며, 안정성을 보장할 수 없습니다. diff --git a/docs/ko-kr/manual/introduction/recruit.md b/docs/ko-kr/manual/introduction/recruit.md new file mode 100644 index 0000000000..0c2b524887 --- /dev/null +++ b/docs/ko-kr/manual/introduction/recruit.md @@ -0,0 +1,19 @@ +--- +order: 2 +--- + +# 공개모집 + +공개모집과 툴박스의 [공개모집 태그 인식](./tools.md#recruitment-recognition)과는 다른 기능입니다!! + +## 자동 공개모집 + +공개모집은 `즉시 완료 허가증`을 사용하여 자동으로 연속적으로 모집합니다. Please `공개모집` - `일반 설정`으로 이동하여 자동으로 `즉시 완료 허가증을 자동 사용`을 선택하고 실행 시 최대 모집 횟수를 수정하세요. + +1★, 5★, 6★이 나오면 알림이 표시됩니다. + +공개모집이 될 때마다 공채 태그 데이터가 자동으로 [펭귄 물류](https://penguin-stats.cn/) 및 [Yituliu](https://ark.yituliu.cn/)에 업로드 됩니다. + +## 고급 설정 + +`자동 모집`은 MAA가 태그를 자동으로 선택하고 모집을 진행합니다. `수동 모집`은 자동 선택 및 모집을 하지 않습니다. diff --git a/docs/ko-kr/manual/introduction/rewards.md b/docs/ko-kr/manual/introduction/rewards.md new file mode 100644 index 0000000000..5267f55982 --- /dev/null +++ b/docs/ko-kr/manual/introduction/rewards.md @@ -0,0 +1,9 @@ +--- +order: 6 +--- + +# 임무 + +매일 보상과 매주 보상을 자동으로 수령합니다. + +`고급 설정`에서 다른 보상 유형도 지원됩니다. 자세한 설정은 설정을 참고하세요. diff --git a/docs/ko-kr/manual/introduction/startup.md b/docs/ko-kr/manual/introduction/startup.md new file mode 100644 index 0000000000..5097cea2a1 --- /dev/null +++ b/docs/ko-kr/manual/introduction/startup.md @@ -0,0 +1,23 @@ +--- +order: 1 +--- + +# 로그인 + +자동으로 에뮬레이터를 시작하고, 클라이언트를 자동으로 시작하며, 게임에 자동으로 로그인합니다. + +자동으로 에뮬레이터를 시작하려면 별도의 설정이 필요합니다. 자세한 내용은 TODO를 참조하세요. + +## 계정 전환 + +**글로벌 서버는 해당이 안됩니다. (CN만 가능)** + +이미 로그인된 계정으로만 전환할 수 있습니다. 로그인 이름으로 검색되므로 입력 내용이 모든 로그인된 계정에서 고유하도록 해주세요. + +예시: `123****8901`은 `123****8901`, `123`, `8901`, `3****8`로 입력될 수 있습니다. + +## 연결 설정 + +[여기로!](../connection.md) + + diff --git a/docs/ko-kr/manual/introduction/tools.md b/docs/ko-kr/manual/introduction/tools.md new file mode 100644 index 0000000000..62fa35d448 --- /dev/null +++ b/docs/ko-kr/manual/introduction/tools.md @@ -0,0 +1,43 @@ +--- +order: 10 +--- + +# 툴박스 + +## 공개모집 태그 인식 + +공개모집 화면에서 시작하기를 클릭하여 시작할 수 있습니다. + +이전에 오퍼레이터 인식을 실행한 경우 인식이 완료된 오퍼레이터의 잠재력 데이터가 표시됩니다. + +## 오퍼레이터 인식 (Beta) + +보유한 및 보유하지 않은 오퍼레이터 목록을 인식하고 공개모집 인식에 표시될 잠재력 데이터를 인식하여 저장할 수 있습니다. + +## 창고 인식 (Beta) + +메인 페이지에서 자동으로 창고 화면으로 이동하는 기능을 지원합니다. 자동으로 이동하는데 실패하면 수동으로 `육성 재료` 화면으로 전환하고 왼쪽 끝까지 슬라이드하여 기능을 시작하세요. + +현재 [펭귄 물류](https://penguin-stats.cn/planner), [Arknights Toolbox](https://arkntools.app/#/material), [Arknights | Planner](https://ark-nights.com/settings)로 내보내기 기능을 지원합니다. + +JSON 스키마와 통합을 희망하는 경우 언제든지 문의해주세요. + +앞으로 더 유용한 기능이 추가될 **가능성**이 있습니다. + +## 영상 인식 (Alpha) + +전술 비디오를 인식하고 자동으로 Copilot 파일을 생성할 수 있습니다. 비디오 파일을 Copilot 탭 페이지로 끌어다 놓으면 시작됩니다. + +가로세로 비율이 16:9 이고 720p 이상의 해상도를 갖는 비디오만 지원됩니다. 비디오 내용에는 검은 테두리, 왜곡 보정, 에뮬레이터 테두리 또는 기타 요소가 없어야 합니다. + +## 헤드헌팅 (가챠) + +::: warning +진짜로 가챠를 진행합니다. +::: + +**당신의 계정으로 오퍼레이터를 뽑았어! 당신의 계정으로 오퍼레이터를 뽑았어!** +**당신의 계정으로 오퍼레이터를 뽑았어! 당신의 계정으로 오퍼레이터를 뽑았어!** +**당신의 계정으로 오퍼레이터를 뽑았어! 당신의 계정으로 오퍼레이터를 뽑았어!** + +니우니우 항공을 탈 기회를 놓쳤나요? 걱정 마세요! 이제 모두가 자신의 니우니우 항공을 가지고 있어요! 그리고 헤드헌팅 과정 중에는 스크린샷이 찍혀서 자동적으로 인터페이스 중앙에 표시될 거에요! diff --git a/docs/ko-kr/manual/newbie.md b/docs/ko-kr/manual/newbie.md new file mode 100644 index 0000000000..0a7b47875c --- /dev/null +++ b/docs/ko-kr/manual/newbie.md @@ -0,0 +1,70 @@ +--- +order: 1 +icon: ri:guide-fill +--- + +# 초보자 가이드 + +한 문장으로 배우기! + +## 사전 준비 + +1. 시스템 버전 확인 + + MAA 는 Windows 10/11만 지원합니다. 이전 버전의 Windows를 사용하는 경우 [FAQ](./faq.md)를 참조하세요. + +2. 런타임 설치 + + MAA는 VCRedist x64와 .NET 8이 필요합니다. 시작 버튼을 우클릭하여 터미널을 열고, 아래 명령어를 터미널에 붙여넣고 엔터를 눌러 설치합니다. + + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` + + 자세한 정보는 [FAQ](./faq.md#가능성-2-런타임-문제)를 참조하세요. + +3. 알맞는 버전 다운로드 + + [MAA 홈페이지](https://maa.plus/)는 일반적으로 알맞는 버전 아키텍처를 자동으로 선택합니다. 대부분의 사용자에게는 Windows x64가 해당됩니다. + +4. 알맞는 압축 해제 + + 압축 해제가 완료되었는지 확인하고, MAA를 독립된 폴더에 압축 해제하세요. `C:\`, `C:\Program Files\`와 같이 UAC 권한이 필요한 경로에는 압축을 해제하지 마세요. + +5. 에뮬레이터 지원 확인 + + [에뮬레이터 및 지원 장치](./device/)를 참조하여 사용 중인 에뮬레이터가 지원되는지 확인하세요. + +6. 에뮬레이터 해상도 설정 + + 에뮬레이터 해상도는 `16:9` 비율이어야 하며, 최소 해상도는 `1280x720`입니다. YoStarKR 사용자의 경우 권장 해상도는 `1920x720`과 `1280x720` 입니다. + +## 초기 설정 + +0. 자동 감지 기능을 사용하려면, 하나의 에뮬레이터만 설치되어 있고 멀티 인스턴스 기능을 사용안해야 합니다. + +1. 설정 지침을 따라 설정합니다. 멀티 인스턴스를 실행할 필요가 없다면 연결 설정을 변경할 필요는 없습니다. 멀티 인스턴스를 사용할 경우 [연결 설정](./connection.md)을 확인하세요. + +2. MAA를 처음 실행하면 리소스 업데이트가 진행됩니다. 오른쪽 로그에서 재시작 메시지가 나오면 MAA를 종료하고 다시 시작하세요. + +3. 왼쪽의 작업 목록을 드래그하여 작업 순서를 정리하고, 체크박스를 선택하거나 해제하여 실행할 작업을 선택하세요. + +4. Link Start! + +## 고급 설정 + +문서를 참조하세요! + +## 기타 정보 + +- **문제가 발생하면 문서를 여러 번 읽어보세요** + +1. 실행 로그는 MAA 폴더 내 debug 폴더에 있습니다. 로그는 매우 중요합니다. 다른 사람에게 도움을 요청할 때는 반드시 `asst.log`와 `gui.log`를 함께 제공하세요. + +2. MAA는 모든 사용자의 다양한 요구를 최대한 충족시키기 위해 많은 사용자 정의 옵션을 제공합니다. MAA에 특정 기능이 없는 것 같다면, 해당 기능을 찾지 못한 것일 가능성이 큽니다. 예를 들어, `스테이지 코드 수동 입력` 및 `이미 배치된 오퍼레이터 숙소 배치 X` 등의 기능이 있습니다. + +3. 일부 옵션에 마우스 포인터를 올리면 자세한 설명이 표시됩니다. 예를 들어, `이미 배치된 오퍼레이터 숙소 배치 X` 과 같은 옵션이 있습니다. + +4. 일부 체크박스의 경우, 오른쪽 클릭으로 임시 선택 상태로 변경할 수 있습니다. 이 상태의 체크박스는 MAA가 다음에 시작될 때 자동으로 해제됩니다. 이는 `한번 만` 실행됩니다. + +5. 문제가 뭔지 모르고, 어떻게 해야할 지 모르겠다면, 베타 및 개발버전을 사용하지 마세요. diff --git a/docs/ko-kr/protocol/README.md b/docs/ko-kr/protocol/README.md new file mode 100644 index 0000000000..19cbd4ed8f --- /dev/null +++ b/docs/ko-kr/protocol/README.md @@ -0,0 +1,9 @@ +--- +title: 프로토콜 문서 +icon: basil:document-solid +index: false +dir: + order: 3 +--- + + diff --git a/docs/ko-kr/스키마/6.기반시설.md b/docs/ko-kr/protocol/base-scheduling-schema.md similarity index 66% rename from docs/ko-kr/스키마/6.기반시설.md rename to docs/ko-kr/protocol/base-scheduling-schema.md index f0c26c6d9e..f1c1c55e8f 100644 --- a/docs/ko-kr/스키마/6.기반시설.md +++ b/docs/ko-kr/protocol/base-scheduling-schema.md @@ -1,22 +1,16 @@ --- +order: 6 icon: material-symbols:view-quilt-rounded --- # 기반시설 스키마 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +`resource/custom_infrast/*.json` 파일들의 사용법과 각 필드에 대한 설명입니다. ::: tip 주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. ::: -`resource/custom_infrast/*.json` 파일들의 사용법과 각 필드에 대한 설명입니다. - [기반시설 시각적 표 제작도구(yituliu)](https://ark.yituliu.cn/tools/schedule) ## 완전한 필드 목록 @@ -56,7 +50,19 @@ icon: material-symbols:view-quilt-rounded "rule": "all", // 사용 규칙입니다. 예약 필드로 현재는 사용되지 않지만 플러그인 등의 작업 지원을 위해 나중에 사용될 수 있습니다. "order": "pre" // 오퍼레이터 교대 전에 드론을 사용할지 후에 사용할지 여부입니다. 선택 사항입니다. 가능한 값으로는 "pre" / "post"가 있습니다. 기본값은 "pre"입니다. }, - "rooms": { // 방 정보입니다. 필수 항목입니다. + "groups": [ + // "control" / "manufacture" / "trading"에 대해 오퍼레이터 그룹을 설정할 수 있습니다. + { + "name": "古+银", + "operators": ["古米", "银灰", "梅"] + }, + { + "name": "清流", + "operators": ["清流", "森蚺", "温蒂"] + } + ], + "rooms": { + // 방 정보입니다. 필수 항목입니다. // 가능한 값으로는 "control(제어 센터)" / "manufacture(제조소)" / "trading(무역소)" / "power(발전소)" / "meeting(응접실)" / "hire(사무소)" / "dormitory()"가 있습니다. // 방이 지정되지 않은 경우 기본 알고리즘으로 오퍼레이터 교대를 수행합니다. // 특정 방에서 오퍼레이터 교대를 하지 않으려면 "skip" 필드를 사용하거나 소프트웨어의 인프라 설정에서 해당 시설을 선택 해제하세요. @@ -73,42 +79,45 @@ icon: material-symbols:view-quilt-rounded ], "manufacture": [ { - "operators": [ // 이 방에 할당된 오퍼레이터들입니다. - "芬", - "稀音", - "克洛丝" - ], + "operators": ["芬", "稀音", "克洛丝"], "sort": false, // 오퍼레이터들을 위의 순서에 따라 정렬할지 여부입니다. 선택 사항입니다. 기본값은 false입니다. - // 예를 들어 "稀音", "帕拉斯", "巫恋"(씬, 팔라스, 샤마르)와 같은 오퍼레이터를 사용하는 경우 - // "sort": false로 설정하면 순서가 뒤바뀔 수 있으며, 특히 시간이 지남에 따라 효율이 상승하는 오퍼레이터의 효과가 초기화되어 손실로 이어질 수 있습니다. - // "sort": true를 사용하면 이러한 문제를 피할 수 있습니다. + // 예를 들어 "稀音", "帕拉斯", "巫恋"(씬, 팔라스, 샤마르)와 같은 오퍼레이터를 사용하는 경우 + // "sort": false로 설정하면 순서가 뒤바뀔 수 있으며, 특히 시간이 지남에 따라 효율이 상승하는 오퍼레이터의 효과가 초기화되어 손실로 이어질 수 있습니다. + // "sort": true를 사용하면 이러한 문제를 피할 수 있습니다. }, { "skip": true // 이 방을 건너뛸지 여부를 나타냅니다 (배열 인덱스에 해당). 선택 사항입니다. 기본값은 false입니다. - // true로 설정하면 다른 모든 필드를 비워둘 수 있습니다. 오퍼레이터 변경만 건너뛰게 됩니다. 드론 사용 및 단서 교환과 같은 다른 작업은 계속 진행됩니다. + // true로 설정하면 다른 모든 필드를 비워둘 수 있습니다. 오퍼레이터 변경만 건너뛰게 됩니다. 드론 사용 및 단서 교환과 같은 다른 작업은 계속 진행됩니다. }, { - "operators": [ - "Castle-3" - ], + "operators": ["Castle-3"], "autofill": true, // 원래 알고리즘을 사용하여 나머지 위치를 자동으로 채울지 여부를 나타냅니다. 선택 사항입니다. 기본값은 false입니다. - // 오퍼레이터 배열이 비어있는 경우 방 전체의 스케줄링은 원래 알고리즘을 기반으로 합니다. - // 오퍼레이터 배열이 비어 있지 않은 경우 개별 오퍼레이터의 효율성만 고려되며 전체 조합의 효율성은 고려되지 않습니다. - // 이후에 정의된 사용자 정의 오퍼레이터들과 충돌할 수 있으므로 주의해야 합니다. 예를 들어, 이후에 필요한 오퍼레이터들이 여기서 사용되는 경우에는 주의해서 사용하거나, 자동채우기를 하는 방의 순서를 뒤로 미루세요. + // 오퍼레이터 배열이 비어있는 경우 방 전체의 스케줄링은 원래 알고리즘을 기반으로 합니다. + // 오퍼레이터 배열이 비어 있지 않은 경우 개별 오퍼레이터의 효율성만 고려되며 전체 조합의 효율성은 고려되지 않습니다. + // 이후에 정의된 사용자 정의 오퍼레이터들과 충돌할 수 있으므로 주의해야 합니다. 예를 들어, 이후에 필요한 오퍼레이터들이 여기서 사용되는 경우에는 주의해서 사용하거나, 자동채우기를 하는 방의 순서를 뒤로 미루세요. "product": "Battle Record" // 현재 제조되는 제품, 선택 사항. - // 시설에서 인식된 제품이 작업에 설정된 제품과 일치하지 않으면 인터페이스에 빨간색 경고 메시지가 표시됩니다. 미래에 추가 기능이 추가될 수 있습니다. - // 가능한 값으로는 "Battle Record()" | "Pure Gold(순금)" | "Dualchip(듀얼 칩)" | "Originium Shard(오리지늄 조각)" | "LMD(용문폐)" | "Orundum()"가 있습니다. + // 시설에서 인식된 제품이 작업에 설정된 제품과 일치하지 않으면 인터페이스에 빨간색 경고 메시지가 표시됩니다. 미래에 추가 기능이 추가될 수 있습니다. + // 가능한 값으로는 "Battle Record()" | "Pure Gold(순금)" | "Dualchip(듀얼 칩)" | "Originium Shard(오리지늄 조각)" | "LMD(용문폐)" | "Orundum()"가 있습니다. }, { "operators": [ "多萝西" ], - "candidates": [ // 선택적 후보 오퍼레이터입니다. 모든 위치가 채워질 때까지 목록에 있는 오퍼레이터들을 사용합니다. - // autofill=true와 호환되지 않습니다. 이 배열이 비어 있지 않은 경우 autofill을 false로 설정하세요. + "candidates": [ + // 선택적 후보 오퍼레이터입니다. 모든 위치가 채워질 때까지 목록에 있는 오퍼레이터들을 사용합니다. + // autofill=true와 호환되지 않습니다. 이 배열이 비어 있지 않은 경우 autofill을 false로 설정하세요. "星源", "白面鸮", "赫默" ] + }, + { + "use_operator_groups": true, // groups에 있는 오퍼레이터 그룹을 사용하려면 true로 설정, 기본값은 false + "operators": [ + // 활성화되면, operators에 있는 이름이 그룹 이름으로 해석됩니다. + "古+银", // 컨디션 임계값 및 설정 순서에 따라 그룹 선택 + "清流" // 만약 古+银 그룹의 오퍼레이터 컨디션이 임계값 이하인 경우 清流 그룹 사용 + ] } ], "meeting": [ diff --git a/docs/ko-kr/스키마/2.콜백.md b/docs/ko-kr/protocol/callback-schema.md similarity index 97% rename from docs/ko-kr/스키마/2.콜백.md rename to docs/ko-kr/protocol/callback-schema.md index d894ddbbbb..222848f88c 100644 --- a/docs/ko-kr/스키마/2.콜백.md +++ b/docs/ko-kr/protocol/callback-schema.md @@ -1,16 +1,10 @@ --- +order: 2 icon: material-symbols:u-turn-left --- # 콜백 메세지 프로토콜 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: info 정보 콜백 메시지는 버전 업데이트를 통해 빠르게 변경되고 있으며 이 문서는 오래된 것일 수 있습니다. 최신 콘텐츠는 [C# 통합 소스 코드](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/MaaWpfGui/Main/AsstProxy.cs)를 참조하세요. ::: @@ -49,6 +43,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom SubTaskStopped, // 서브태스크 중지 }; ``` + - `const char* details` 메시지 세부사항, JSON 형식입니다. 또한 [필드 설명](#필드-설명)도 참조하세요. - `void* custom_arg` @@ -202,6 +197,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom #### 자주 사용되는 `subtask` 필드 값 - `ProcessTask` + ```json // 상세 정보에 대한 예시 { @@ -212,6 +208,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "algorithm": 0 } ``` + - 기타 할 일 ##### 자주 사용되는 `task` 필드 값 @@ -330,7 +327,9 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom } ] } + ``` + - `RecruitTagsDetected` 공개모집 태그 감지 @@ -345,8 +344,8 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "近战位" ] } - ``` + - `RecruitSpecialTag` 고급 특별 채용 감지 @@ -356,6 +355,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "tag": "高级资深干员" // 고급 특별 채용 } ``` + - `RecruitResult` 공개모집 결과 @@ -432,6 +432,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom ] } ``` + - `RecruitTagsRefreshed` 공개모집 태그 갱신 완료 @@ -442,6 +443,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "refresh_limit": 3 // 갱신 횟수 제한 } ``` + - `RecruitNoPermit` 모집 라이센스가 없습니다 @@ -451,6 +453,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "continue": true, // 계속 새로고침할지 말지 } ``` + - `RecruitTagsSelected` 공개모집 태그 선택 완료 @@ -463,6 +466,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom ] } ``` + - `RecruitSlotCompleted` 모집 슬롯 완료 - `RecruitError` @@ -477,6 +481,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "index": 0 // 시설 ID } ``` + - `NotEnoughStaff` 사용 가능한 오퍼레이터가 부족함 @@ -487,6 +492,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "index": 0 // 시설 ID } ``` + - `ProductOfFacility` 시설의 생산물 @@ -498,6 +504,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "index": 0 // 시설 ID } ``` + - `StageInfo` 자동 전투 스테이지 정보 @@ -507,6 +514,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "name": string // 스테이지 이름 } ``` + - `StageInfoError` 자동 전투 스테이지 정보 오류 - `PenguinId` @@ -518,6 +526,7 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom "id": string } ``` + - `DepotInfo` 창고 인식 결과 @@ -557,8 +566,9 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom }, "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}" } - // 현재는 ArkPlanner와 Lolicon 포맷만 지원하며, 미래에 더 많은 웹사이트가 지원될 예정입니다. + // 현재는 ArkPlanner와 Lolicon (Arkntools) 포맷만 지원하며, 미래에 더 많은 웹사이트가 지원될 예정입니다. ``` + - `OperBoxInfo` 오퍼레이터 보유 목록 인식 결과 @@ -603,5 +613,6 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom } ] ``` + - `UnsupportedLevel` 지원되지 않는 레벨 이름 diff --git a/docs/ko-kr/스키마/3.전투.md b/docs/ko-kr/protocol/copilot-schema.md similarity index 97% rename from docs/ko-kr/스키마/3.전투.md rename to docs/ko-kr/protocol/copilot-schema.md index 336e55ed6d..0ae0f31366 100644 --- a/docs/ko-kr/스키마/3.전투.md +++ b/docs/ko-kr/protocol/copilot-schema.md @@ -1,16 +1,10 @@ --- +order: 3 icon: ph:sword-bold --- # 전투 스키마 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: tip 주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. ::: diff --git a/docs/ko-kr/protocol/integrated-strategy-schema.md b/docs/ko-kr/protocol/integrated-strategy-schema.md new file mode 100644 index 0000000000..33799537a1 --- /dev/null +++ b/docs/ko-kr/protocol/integrated-strategy-schema.md @@ -0,0 +1,575 @@ +--- +order: 5 +icon: ri:game-fill +--- + +# 통합전략 스키마 + +::: tip +주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. +::: + +## 로그라이크 리소스 파일 위치 + +- `resource/roguelike/`아래에 테마별 로그라이크 작업의 리소스를 저장합니다. + - 테마 폴더: `Phantom/` 팬텀 로그라이크, `Mizuki/` 미즈키 로그라이크,`Sami/` 사미 로그라이크. + - `autopilot/` 내에는 각 레벨의 작전 json이 있습니다. + - `关卡名.json` 레벨의 작전 로직 + - `encounter.json` 우연한 만남의 로직 + - `encounter_for_deposit.json` 우연한 만남의 사건 로직 + - `recruitment.json` 오퍼레이터 모집 로직 + - `shopping.json` 상점 구매 로직 + +특별히, `Sami/` 아래의 `foldartal.json`은 사미 로그라이크의 예견 밀문판의 사용 로직을 나타냅니다. + +## 로그라이크 첫 단계 - 오퍼레이터 모집 + +`resource/roguelike/主题名/recruitment.json` 은 오퍼레이터 모집의 로직을 설명합니다. + +```json +{ + "theme": "Phantom", //로그라이크 테마 (팬텀) + "priority": [ //그룹의 우선순위, 순서대로 + ... + ], + "team_complete_condition": [ //팀의 완성도 검사 + ... + ] +} +``` + +### 오퍼레이터 분류 + +게임 이해에 따라 오퍼레이터를 다양한 ***groups*** (관련 개념은 [전투 스키마](./copilot-schema.md)를 참고)으로 분류합니다 + +::: info 주의 + +1. 같은 그룹 내의 오퍼레이터와 소환물은 배치 방식이 일치해야 합니다(즉, 근접이거나 원거리로 동일). + +2. 같은 오퍼레이터나 소환물을 다르게 사용할 수 있게 다른 그룹으로 분류할 수 있습니다. + +3. 기존의 그룹 이름을 수정하지 마세요. MAA 업데이트 시 이전 버전의 작업을 사용할 수 없게 될 수 있습니다. + +4. 새로운 그룹을 가능한 한 추가하지 마시고, 새로 추가하는 단위를 기존 그룹에 편입시키세요. +::: + +::: tip +기본적으로 1정 55레벨 이상의 오퍼레이터만 모집합니다. +::: + +```json +{ + "theme": "Phantom", + "priority": [ // 그룹, 순서대로 + { + "name": "棘刺", // 그룹 이름(이 그룹 이름은 쏜즈) + "opers": [ // 그룹에 포함된 오퍼레이터, 순서대로, 오퍼레이터 배치 시 우선순위 표시, + // (예를 들어 이 그룹의 오퍼레이터를 배치할 때, 먼저 가시가 있는지 확인하고, 가시가 있으면 가시를 배치하고, 없으면 다음 오퍼레이터를 확인) + { + "name": "棘刺", // 오퍼레이터 이름 + ... + }, + { + "name": "号角", + ... + } + ] + }, + "team_complete_condition": [ + ... + ] + ] +} +``` + +1. 기존 그룹 소개 + + 팬텀의 로그라이크를 예로 들어 설명: 오퍼레이터는 주로 다음과 같이 분류됩니다. + | Group | Considerations | Class | Operators | + | :------------------------ | :------------------- | :--------------- | :----------------------------------------------------------------- | + | ***Ground block*** | 전장과 잡몹 정리 | 디펜더, 가드 | 라 플루마, 마운틴, 몬3터, 링과 씬의 소환물, 스팟, 디펜더 예비 인원 | + | ***Ground single-block*** | 단독으로 보스와 교전 | 처형자, 스페셜 | 수르트, 키린R 야토, 몬3터, 레드 | + | ***Ranged C*** | 일반과 결전 | 스나이퍼, 캐스터 | 첸 더 홀룽데이, 골든글로우, 에이야퍄들라, 피아메타 | + | ***Ranged DPS*** | 대공 및 일반 | 스나이퍼, 캐스터 | 아르케토, 엑시아, 크루스, 스튜어드 | + | ***힐러*** | 치료 능력 | 힐러, 서포터 | 켈시, 스카디 더 커럽팅 하트, 히비스커스, 안셀 | + | ***코스트 회복*** | 코스트 회복 | 뱅가드 | 머틀, 이네스, 팽, 바닐라 | + | ***포탄 흡수*** | 포탄 흡수, 재배치 | 특수, 소환물 | 몬3터, 레드, 머틀, 예비 인원 | + | ***고지대 예비*** | 일정한 공격 능력 | | 오키드, 예비 인원 | + +2. 특별 취급이 필요한 그룹 + + 위의 일반적인 그룹 외에도 일부 오퍼레이터나 유형에 대한 맞춤형 조정이 필요할 수 있습니다. + | Group | Operators | Features | + | :---------- | :-------------------- | :--------------------------------------------------------------------------------------------------- | + | Thorns | 쏜즈, 혼 | 장거리 근접, 많은 맵에서 좋음 | + | Summoners | 켈시, 링, 씬 | 근접 블록, 일부 맵은 배치 우선순위 필요, 소환물은 블록 또는 포드로 사용 가능 | + | Agent | 칸타빌레, 이네스 | 코스트 회복 가능, DPS 제공 및 단일 블록 | + | Skadi Alter | 스카디 더 커럽팅 하트 | 낮은 DP 비용, 특별한 범위, 일부 맵에서 최적의 위치 | + | Reed Alter | 리드 더 플레임 섀도우 | 사미 로그라이크에서 개막 캐스터, DPS 및 치유로 자주 사용, 일부 맵에서 최적의 위치 | + | SilverAsh | 실버애쉬, 무에나 | 큰 범위의 지상 오퍼레이터, 보스에게 매우 유용 | + | Surtr | 수르트 | 수르트는 항상 세 번째 스킬을 사용하므로 위치 선정 능력이 거의 없으며, 배치 우선순위가 매우 낮습니다. | + | Dice | 주사위 | 미즈키 로그라이크에서 주사위는 별도로 작동해야 합니다. | + +::: info +현재 정해진 그룹을 알 수 없는 지상 크루는 마지막 전형 (다른 지상) 뒤에, 고지대 그룹는 마지막 전형 (다른 고지대) 뒤에 고정되어 있습니다. +::: + +### 사전 설정 그룹--완전한 라인업 테스트 + +높은 계층을 통과하거나 도달하기 위해 기본 핵심 플레이어가 필요한 팀에서는 어떤 오퍼레이터가 필수적일까요? 몇 명이 필요할까요? + +::: info +현재 스크립트의 모집 로직은 라인업 완성도를 충족하기 전에 0 희망과 코어 오퍼레이터를 모집하며, 높은 레어도의 코어 오퍼레이터를 위해 희망을 존버합니다. +따라서 너무 높은 임계값 수치를 설정하지 마시고, 필요한 모든 오퍼레이터 수 (기본 핵심 라인업)가 4-8 자릿수가 되도록 권장합니다. +::: + +```json +{ + "theme": "Phantom", // 로그라이크 테마 + "priority": [ // 그룹 + ... + ], + "team_complete_condition": [ // 라인업 완성도 검사 + { + "groups": [ // 필요한 그룹 멤버 + "C-team" + ], + "threshold": 1 // 필요한 오퍼레이터 수 + }, // (이것은 C팀의 고지대 오퍼레이터이 필요하다는 것을 나타냅니다) + { + "groups": [ + "Thorns", // (최소 2명의 오퍼레이터가 필요합니다 Thorns, GroundBlock, Ground1Block, Fodder) + "GroundBlock", + "Ground1Block", + "Fodder" + ], + "threshold": 2 + }, + ... + ] +} +``` + +### 오퍼레이터 모집을 위한 매개변수 조정 + +1. 그룹 내의 순서는 배치 검사 우선순위를 나타냅니다. + +2. 그룹 멤버의 각 필드와 스크립트 관련 로직의 의미 + + ```json + { + "theme": "Phantom", + "priority": [ + "name": "GroundBlocking", // 그룹 이름 (이 경우 GroundBlocking) + "doc": "기준 라인은 1단 기어 (청소 능력 또는 필드 능력이 산보다 우수) > 산 > 2단 기어 (블록>2, 자체 회복 가능) > Spot, 필드 능력이 Spot보다 적은 경우 단일 절단 또는 포드 그룹", + // Doc 필드는 노트입니다. 프로그램에는 영향을 미치지 않습니다. + "opers": [ // 포함된 오퍼레이터, 순서대로 배치 우선순위를 나타냅니다. + { + "name": "가비알 디 인빈서블", // 오퍼레이터 이름 (가비알 디 인빈서블, 그룹 내 첫 번째 위치는 + // 지상 블로킹 그룹 배치 시 우선적으로 이격 가비알의 여부를 확인합니다.) + "skill": 3, // 사용할 스킬 (이 경우 스킬 3) + "skill_usage": 2, // 스킬 사용 모드, 3.3COPILOT_SCHEMA 참조, 비어 있으면 기본값은 1, 2는 지정된 횟수만큼 사용 + // (x는 "skill_times" 필드에 설정됨), 3은 아직 지원되지 않음. + "skill_times": 2, // 스킬 사용 횟수, 기본값은 1, "skill_usage" 필드가 2일 때 유효합니다. + "alternate_skill": 2, // 지정된 스킬이 없을 때 사용하는 대체 스킬, 일반적으로 6성 오퍼레이터가 E2를 달성하지 않았고 + // 승진 후 3 스킬을 사용하는 경우 + // (이 경우 3 스킬이 없을 때 2 스킬을 사용). + "alternate_skill_usage": 1 // 대체 스킬의 사용 모드 (이 필드는 아직 구현되지 않음) + "alternate_skill_times": 1 // 대체 스킬의 사용 횟수 (이 필드는 아직 구현되지 않음) + "recruit_priority": 900, // 모집 우선순위, 큰 숫자일수록 우선순위가 높으며, 900 이상은 반드시 모집 + // 400 이하의 우선순위는 일부 핵심 오퍼레이터의 우선순위보다 낮음 + // 임시로 모집된 오퍼레이터 우선순위는 자동으로 +800 + "promote_priority": 600, // 승진 우선순위, 큰 숫자일수록 우선순위가 높으며, 900 이상은 충분한 희망이 있으면 보장된 E2 + // 400 이하의 우선순위는 일반 3성 오퍼레이터보다 낮음 + // 팁: 모집 우선순위를 낮추거나 작성하지 않고, 일부 E2의 우선순위를 높이면 + // 임시로 모집된 오퍼레이터의 우선순위를 높이는 것입니다. + "is_key": true, // true인 경우, 오퍼레이터는 핵심 요소입니다. 비어 있으면 기본값은 false. + // 라인업 완성도 검사를 통과하지 못하면, 핵심 오퍼레이터와 0 희망 오퍼레이터만 모집하여 희망을 절약합니다. + "is_start": true, // true인 경우, 오퍼레이터는 시작 오퍼레이터입니다. 비어 있으면 기본값은 false. 팀에 시작 오퍼레이터이 없으면, + // 시작 오퍼레이터과 0 희망 오퍼레이터만 모집하고, 사용자로부터 작성된 오퍼레이터을 모집합니다. + "auto_retreat": 0, // 배치 후 몇 초 동안 자동 후퇴, 0보다 큰 경우 유효, 주로 특수 오퍼레이터 및 전위에 사용, + // 로그라이크는 보통 2배 속도로 시작하므로 스킬 지속 시간을 2로 나누는 것이 좋습니다. + "promote_priority_when_team_full": 850, + "recruit_priority_offsets": [ // 현재 라인업에 따라 우선순위 조정 + { + "groups": [ // 조건을 충족해야 하는 그룹 + "Kaltsit", + "GroundBlocking", + "Thorns" + ], + "is_less": false, // true는 미만, false는 초과. 비어 있으면 기본값은 false + "threshold": 2, // 조건 충족 횟수 + "offset": -300 // 충족 후 모집 우선순위 조정 + // (이것은 Kaltsit, GroundBlocking, Thorns에서 2명 이상의 오퍼레이터가 있을 때, + // 가비알 디 인빈서블의 모집 우선순위가 300 감소한다는 것을 의미합니다.) + } + ] + }, + ... + ], + ], + "team_complete_condition": [ + ... + ] + } + ``` + +3. 그룹과 오퍼레이터를 필요에 따라 추가합니다. + + 새로운 그룹을 추가할 때 기존 그룹에서 오퍼레이터를 복사할 수 있습니다. 개발자가 이미 부여한 평가를 참고하고, 이를 바탕으로 수정합니다. + +## 통합 전략 2단계 - 전투 로직 + +`resource/roguelike/theme_name/autopilot/level_name.json` 은 각 레벨의 전투 전략을 설명합니다. + +### MAA의 기본 로그라이크 전투 로직 + +1. 맵의 그리드 유형에 따라 기본 전투 작업 수행 + + - MAA는 맵의 그리드가 목표 지점인지 적 출현 지점인지, 고지대인지 지상인지, 배치 가능한지 여부에 따라 기본 전투 작업을 수행합니다. + + - MAA는 맵 이름이나 번호를 기준으로 직업을 결정하며, 맵의 **표준**, **긴급**, **분기점**, **아이템 사용** 등의 상황을 판단하지 않습니다. + + - MAA는 전투 중 **맵의 정의되지 않은 그리드**을 판단하지 않습니다. 예를 들어, `Taming Hut`의 제단 위치, 왼쪽이나 오른쪽에서 나오는 몬스터의 `팔로워 효과` 등을 판단하지 않습니다. + + 따라서 미래에는 **맵 이름의 모든 시나리오**에 대응할 수 있는 전투 로직을 설계해야 하며, 이 맵이 긴급 모드에서 작동하는 문제에 주의해야 합니다. + +2. MAA의 기본 전투 전략 -- 목표 지점 진입 막기 + + 1. 지상 크루는 우선적으로 목표 지점 (그리드)를 중심으로 (또는 주변) 배치되며, 적 출현 지점을 향해 배치됩니다 (자동으로 계산됨). 적 출현 지점에는 배치되지 않습니다. + + 2. 고지대보다 지상을 우선 배치하고, 목표 지점에서 주변으로 원형으로 배치됩니다. + + 3. 위의 로직에 따라 배치할 수 있는 것들 (오퍼레이터, 소환물, 지원 아이템 등)을 계속 배치합니다. + +### 기본 전투 전략 최적화 + +1. 목표 지점 대체 + + 목표 지점 앞에 오퍼레이터를 쌓는 것은 분명히 현명하지 않습니다. 일부 레벨에는 통과할 수 없는 그리드가 있으며, 이러한 위치에서는 방어가 매우 효율적입니다. + + 또는 여러 목표 지점이 있는 레벨에서 MAA가 어떤 목표 지점가 어떤 적 출현 지점와 대응되는지 모를 경우, 무작위로 배치할 수 있습니다. + + 이 경우 [map wiki](https://map.ark-nights.com/areas?coord_override=maa)를 열고 전투를 상상하면서 방어해야 할 우선순위 그리드와 방향을 찾아 `replacement_home`에 작성합니다. + + 이 링크를 사용하세요. 그렇지 않으면 `설정`에서 `좌표 표시`를 `MAA`로 전환하세요. + + 그런 다음, 경험을 바탕으로 방어 우선순위가 필요한 지점의 좌표와 방향을 찾아 json의 `replacement_home`에 작성하세요. + + ```json + { + "stage_name": "蓄水池", // 레벨 이름 (중국어) + "replacement_home": [ // 진입 지점 (목표 지점 대체 지점), + // 최소 1개 이상이어야 완전합니다. + { + "location": [ // 그리드 좌표, 맵 위키에서 얻을 수 있음 + 6, + 4 + ], + "direction_Doc1": "선호 방향, 반드시 해당 방향이라는 의미는 아님 (알고리즘이 자체적으로 판단함)", + "direction_Doc2": "기본값은 없음, 즉 추천 방향이 없으며, 완전히 알고리즘에 의해 결정됨", + "direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右", + "direction": "left" // (이것은 그리드 6,4에서 왼쪽으로 오퍼레이터를 우선 배치함을 나타냅니다.) + } + ], + ... + ``` + +2. 배치 그리드 블랙리스트 + + 방어를 우선해야 할 지점과 오퍼레이터를 배치하지 않아야 할 지점이 있습니다. 예를 들어 화염구가 지나가는 곳, 보스의 발 밑, 배치하기 좋지 않은 위치 등입니다. + + 이 경우 `blacklist_location`을 도입하여 MAA가 오퍼레이터를 배치하지 않도록 그리드를 블랙리스트에 추가합니다. + ::: info + 여기에 추가된 그리드는 나중에 배치 전략에 포함되더라도 배치되지 않습니다. + ::: + + ```json + ... + "blacklist_location_Doc": "이것은 사용 예시이며, 맵 '蓄水池'가 필요로 하는 것은 아님.", + "blacklist_location": [ // 오퍼레이터 배치 금지 위치 + [ + 0, + 0 + ], + [ + 1, + 1 + ] + ], + ``` + +3. 대체 맵 전략 + + 예를 들어, 미즈키 로그라이크에서 목표 지점에 몬스터가 있다면 주사위를 사용하여 몬스터 쌓이는 상황을 완화할 수 있습니다. + + ```json + "not_use_dice_Doc": "목표 지점 오퍼레이터가 후퇴할 때 MAA가 주사위를 사용할 필요가 있는지 여부. 비어 있으면 기본값은 false입니다.", + "not_use_dice": false, + ``` + +### 이제 긴급 작전인가요? 이제 진정한 실력을 발휘할 때에요! - 맞춤형 전투 전략 + +`"deploy_plan"` 및 `"retreat_plan"`을 사용하여 맞춤 설정 + +맞춤형 전략은 기본 전투 전략보다 우선하며, 맞춤형 전략의 모든 단계를 시도한 후 저장되거나 퇴각한 오퍼레이터가 기본 전투 전략에 따라 배치됩니다. + +문제가 발생했을 때 맞춤형 계획을 너무 많이 설정할 필요는 없습니다. 중요한 단계를 완료한 후 MAA에 맡기거나 둘 다 결합하는 것이 더 나을 수 있습니다. + +1. 그룹을 사용하여 오퍼레이터 배치 + + ```json + "deploy_plan": [ // 배치 로직: 위에서 아래로, 왼쪽에서 오른쪽으로 순서대로 + // 첫 번째 오퍼레이터를 찾고, 찾지 못하면 건너뜁니다. + { + + "groups": ["GavialAlter", "Mudrock", "GroundC", "Horn", "Vanguard"], // 이 그룹에서 오퍼레이터를 찾습니다. + "location": [ 6, 4 ], // 첫 번째 오퍼레이터을 그리드 6,4에 배치하고 왼쪽을 향합니다. + "direction": "left", // 찾지 못하면 다음 배치 작업으로 넘어갑니다. + }, + { + "groups": [ "Summoner" ], + "location": [ 6, 3 ], + "direction": "left" + }, + { + "groups": [ "单奶", "群奶" ], + "location": [ 6, 2 ], + "direction": "down" + } + ] + ``` + + ::: info + MAA는 모든 배치 명령을 평탄화한 후 가장 높은 우선순위 배치 작업을 실행합니다. + 예: [ "Gavial", "Cornerstone", "GroundC"]를 [6,4]에 배치하고, [ "Cornerstone", "GroundC"]를 [6,3]에 배치한 후 MAA는 배치 명령을 포매팅하여 [ "Gavial", "Cornerstone", "GroundC", "Cornerstone", "GroundC"]로 만듭니다. + 전투 중 [6,4]에 있는 "Gavial" 오퍼레이터가 후퇴하면, "Cornerstone" 오퍼레이터가 있다면 [6,4]에 배치되며 [6,3]에는 배치되지 않습니다. + ::: + +2. 특정 시간에 오퍼레이터 배치 + ::: tip + 특정 단일 절단 오퍼레이터나 포드가 필요한 사용 시나리오에 적합합니다. + ::: + + ```json + "deploy_plan": [ + { + "groups": [ "StrangeVirtue", "Assassin", "Vanguard", "OtherFloors" ], + "location": [ 5, 3 ], + "direction": "left", + "condition": [ 0, 3 ] // 처치 수가 0 - 3일 때만 이 작업을 수행합니다. + }, + { + "groups": [ "StrangeVirtue", "Assassin", "Vanguard", "OtherFloors" ], + "location": [ 5, 3 ], + "direction": "left", + "condition": [ 6, 10 ] + }, + ... + ] + ``` + +3. 특정 시간에 오퍼레이터 퇴각 + ::: tip + 때때로 포드가 너무 강해 필드를 유지하거나 라인업을 이동하기 위해 배치해야 할 때가 있습니다. 이때 퇴각하세요! + ::: + + ```json + "retreat_plan": [ // 특정 시간에 오퍼레이터 퇴각 대상 + { + "location": [ 4, 1 ], + "condition": [ 7, 8 ] // 처치 수가 7 - 8일 때 [4,1]에 있는 오퍼레이터를 제거합니다. 없으면 건너뜁니다. + } + ] + ``` + +4. 특정 시간에 스킬 비활성화 (*TODO*) + +5. 추가 필드 (권장하지 않음) + + ```json + "role_order_Doc": "오퍼레이터 유형 배치 순서, 지정되지 않은 부분은 Guard, Vanguard, Medic, Defender, Sniper, Caster, Supporter, Specialist, Summoner 순서로 채워집니다.", + "role_order": [ // 권장하지 않음, deploy_plan 필드를 구성하세요. + "warrior", + "pioneer", + "medic", + "tank", + "sniper", + "caster", + "support", + "special", + "drone" + ], + "force_air_defense_when_deploy_blocking_num_Doc": "필드에 10000개의 블록 유닛이 있을 때 강제적으로 총 1쌍의 공중 유닛을 배치합니다 (기본 배치 로직에는 영향을 미치지 않음), 이 기간 동안 의료 유닛 배치는 금지되지 않습니다 (기본값은 false).", + "force_air_defense_when_deploy_blocking_num": { // 권장하지 않음, deploy_plan 필드를 구성하세요. + "melee_num": 10000, + "air_defense_num": 1, + "ban_medic": false + }, + "force_deploy_direction_Doc": "특정 직업에 대한 강제 배치 방향", + "force_deploy_direction": [ // 권장하지 않음, deploy_plan 필드를 구성하세요. + { + "location": [ + 1, + 1 + ], + "role_Doc": "입력된 직업에 대한 강제 배치 방향 적용", + "role": [ + "warrior", + "pioneer" + ], + "direction": "up" + }, + { + "location": [ + 3, + 1 + ], + "role": [ + "sniper" + ], + "direction": "left" + } + ], + ``` + +### 오퍼레이터의 플레이 스타일에 대한 특별한 이해가 있습니까? -- 특정 오퍼레이터의 정교한 운영 + +이 오퍼레이터를 별도로 그룹화하세요. + +과제를 작성할 때 이 오퍼레이터가 기존 과제와의 우선순위를 고려하세요. + +또는 이 오퍼레이터에 대한 전투 로직을 따로 작성할 수도 있습니다. + +오퍼레이터 한 명만 사용해도 됩니다! MAA로 레벨을 클리어하세요 (다른 논리의 불완전성 때문에 가능성은 매우 낮습니다). + +참고 예시: 1. 팬텀 로그라이크의 Thorns 2. 미즈키 로그라이크의 Texas the Omertosa 3. 사미 로그라이크의 Reed the Flame Shadow + +## 통합 전략 단계 3: 조우 노드 로직 + +`resource/roguelike/theme_name/encounter.json` 레벨링 모드에서 조우 이벤트 선택에 대한 전략 + +`resource/roguelike/theme_name/encounter_for_deposit.json` 투자 모드에서 조우 이벤트 선택에 대한 전략 + +### MAA가 조우를 판단하는 방법 + +OCR이 조우를 인식하지만 선택은 고정된 위치에서 이루어집니다. + +조우를 인식하지 못하면 하단의 선택지를 클릭합니다. + +일반적으로 약간의 조정만 필요하거나 조정이 필요 없습니다 (개발자가 이미 처리했습니다). + +### 조우 옵션의 우선순위 최적화 + +각 조우 옵션의 효과를 확인하려면 [prts.wiki](https://prts.wiki/w/%E9%9B%86%E6%88%90%E6%88%98%E7%95%A5)를 참조하세요. 옵션이 반드시 고정되지 않습니다. + +조우 옵션을 수정하여 MAA가 특별한 결말로 향하도록 유도할 수 있습니다. + +```json +{ + "theme": "Sami", // 로그라이크 테마 + "stage": [ // 조우 이벤트 + { + "name": "低地市集", // 조우 이름 + "option_num": 3, // 총 몇 개의 옵션이 있는지 (이 경우: 3) + "choose": 3, // 어떤 옵션을 먼저 선택해야 하는지 (여기서는 세 번째 옵션을 우선 선택함) + // 선택할 수 없으면 도주 옵션을 선택합니다 (기본적으로 마지막 옵션) + + "choice_require": [ // 옵션 선택 요구 사항 + // (프로그램 운영에는 영향을 미치지 않음 + // 적용 가능한 상황만 표시하여 수정하기 쉽게 함) + { + "name": "약초 선택", // 옵션 이름 + "ChaosLevel": { // 면역 / 가벼운 수준 + "value": "3", // 필요한 수 + "type": ">" // 초과인지 미만인지 + //(여기서는 면역 / 가벼운 수준이 3을 초과하는 경우만 + // "약초 선택" 옵션이 활성화됨) + } + }, + { + "name": "보기 좋은 천 선택", + "ChaosLevel": { + "value": "3", + "type": ">" + } + }, + ... +``` + +### 팀 상황에 따라 특정 옵션의 우선순위 동적으로 설정 (*TODO*) + +## 통합 전략 단계 4: 무역 상점 수집 우선순위 + +`resource/roguelike/theme_name/shopping.json` 상점에서 수집품 구매에 대한 전략을 설명 (전투 후 수집품 선택?) + +```json +{ + "theme": "Phantom", // 로그라이크 테마 + "priority": [ // 순서가 우선순위 + // 순서가 높을수록 구매 우선순위가 높음. + // 그러나 우선순위 판단은 오퍼레이터 및 역할의 스크리닝 이전에 이루어집니다. + // 고우선순위 제품이 스크리닝되어 아무것도 구매하지 않는 경우가 발생할 수 있습니다. + { + "name": "Golden Chalice", // 수집품 이름 (이 경우 Golden Chalice) + "no_longer_buy": true, // true는 아이템을 획득한 후 더 이상 돈을 쓰지 않음을 의미 + // false 또는 비어 있으면 아이템을 계속 구매함 + "ignore_no_longer_buy": true, // true는 상점에 수집품이 있을 때 "no_longer_buy"를 무시함 + // 즉, 구매함 + // false 또는 생략된 경우, 상점에 있음 + "effect": "每有5源石锭, 所有我方单位的攻击速度+7", // 수집품 효과 (운영에는 영향을 미치지 않으며 정렬에 유용함) + "no": 167 // 수집품 번호 (위키에서 찾을 수 있으며, 운영에는 영향을 미치지 않음) + }, + + ... + { + "name": "Hand of Diffusion", + "chars": [ // 팀에 이러한 오퍼레이터가 있을 때 이 아이템을 구매함 + "Passenger" // (이 경우 팀에 패신저가 있으면, + // Hand of Diffusion을 만났을 때 구매하려고 시도함) + ], + "effect": "[Diffusion Artist], [Chain Artist], and [Blast Artist] regain 2 SP for each unit they deal damage to.", + "no": 136 + }, + ... + + { + "name": "Folding the halberd - Breaking the cauldron", + "roles": [ // 팀에 이러한 직군이 있을 때 이 수집품을 구매함 + "WARRIOR" // (이 경우 팀에 가드 오퍼레이터가 있으면 + // Halberd-Breaker를 만났을 때 구매하려고 시도함) + ], + "effect": "All [Guard] Operators members have -40% Defence, but +40% Attack Power and +30% Attack Speed.", + "no": 16 + }, + ... + + { + "name": "Miss.Christine Touch coupon", + "promotion": 2, // 팀에 승진할 오퍼레이터가 2명 있을 때 구매함 + "effect": "Immediate promote two operators (Does not consume Hope)", + "no": 15 + }, +``` + +## 원하는 로직 (*TODO*) + +### 자동 포메이션 로직 + +1. 다양한 맵의 포메이션 완성도 테스트 및 스킬 우선순위를 설정할 수 있습니다. + +2. 사용할 수 있는 라인업에 따라 일부 어려운 전투를 피할 수 있습니다. + +### 경로 찾기 알고리즘 최적화 + +예를 들어, 첫 3개의 스테이지에서는 더 많은 전투를 달성하고 나중에는 적은 전투를 달성하여 개발을 더 좋게 만들 수 있습니다. + +### 스킬 유지 + +특정 프레임에 배치된 오퍼레이터는 스킬이 켜진 후 x초 동안 대기하며, 축에 맞추기 쉽습니다. `Skill_hold` 를 `Deploy_plan` 아래에 작성하거나 `Skill_hold_plan`을 작성할 수 있습니다. + +### 스킬 종료 + +탄약 스킬이 있는 오퍼레이터에게 유용합니다. + + diff --git a/docs/ko-kr/스키마/1.통합문서.md b/docs/ko-kr/protocol/integration.md similarity index 93% rename from docs/ko-kr/스키마/1.통합문서.md rename to docs/ko-kr/protocol/integration.md index b1cc83848a..39470b010d 100644 --- a/docs/ko-kr/스키마/1.통합문서.md +++ b/docs/ko-kr/protocol/integration.md @@ -1,16 +1,10 @@ --- +order: 1 icon: bxs:book --- # 통합문서 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ## API ### `AsstAppendTask` @@ -80,6 +74,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p "expiring_medicine": int, // 48시간 이내에 만료되는 이성 회복제 수, 선택 사항, 기본값은 0 "stone": int, // 최대 사용 가능한 오리지늄의 수, 선택 사항, 기본값은 0 "times": int, // 최대 반복 횟수, 선택 사항, 기본값은 무한대입니다. + "series": int, // 연전 횟수, 선택사항, 1~6 "drops": { // 드랍 수량을 지정합니다. 선택 사항, 기본적으로 지정되지 않습니다. "30011": int, // 키: 아이템 ID; 값: 아이템 수량. 키는 resource/item_index.json을 참조합니다. "30062": int // OR 조합 @@ -97,6 +92,8 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p } ``` +특수 스테이지의 일부를 지원합니다. 자세한 내용은 [자동 현지화 예제](..\..\..\tools\AutoLocalization\example\ko-kr.xaml)를 참고하세요. + - `Recruit` 공개모집 @@ -235,7 +232,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p } ``` -더 많은 자세한 정보는 [전투 스키마](./3.전투.md)를 참조하세요. +더 많은 자세한 정보는 [전투 스키마](./copilot-schema.md)를 참조하세요. - `SSSCopilot` 보안파견용 AI 동반(Copilot 기반) 자동 전투 기능 @@ -248,7 +245,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p } ``` -더 많은 자세한 정보는 [보안파견 스키마](./7.보안파견.md)를 참조하세요. +더 많은 자세한 정보는 [보안파견 스키마](./sss-schema.md)를 참조하세요. - `Depot` 창고 인식 @@ -279,9 +276,12 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p "theme": int, // 테마, 선택사항, 기본값은 1입니다. // 0 - *모래 속의 불꽃* // 1 - *모래 안의 이야기* - "mode": int // 모드,선택사항, 기본값은 0 (*모래 속의 불꽃*에서만 지원) + "mode": int, // 모드,선택사항, 기본값은 0 // 0 - 점수를 획득하고 건설 점수를 얻어 전투에 진입한 후 바로 나가기 - // 1 - 황금을 얻기 위해 오퍼레이터가 물을 사고 기지를 강화합니다. + // 1 - *모래 속의 불꽃*: 황금을 얻기 위해 오퍼레이터가 물을 사고 기지를 강화합니다. + // *모래 안의 이야기*: 모래 안의 이야기: 자동으로 아이템을 제작하고 로드하여 통화를 획득 + "product": string // 자동으로 제작되는 아이템, 선택 사항, 기본값은 형광봉 + // 부분 문자열을 채우는 것이 좋습니다 } ``` @@ -312,7 +312,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p // "stage"는 단계 이름 설정 (예: "details": { "stage": "xxxx" }) // "start"는 미션 시작으로, 추가적인 세부사항 없이 시작합니다. // "action"은 단일 전투 동작으로, 세부사항은 Copilot의 단일 동작입니다. - // 예: "details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },자세한 내용은 전투 스키마 문서 참조 + // 예시: "details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },자세한 내용은 전투 스키마 문서 참조 "details": { ... } diff --git a/docs/ko-kr/스키마/8.원격제어.md b/docs/ko-kr/protocol/remote-control-schema.md similarity index 95% rename from docs/ko-kr/스키마/8.원격제어.md rename to docs/ko-kr/protocol/remote-control-schema.md index bdfa5d2888..01b480ba31 100644 --- a/docs/ko-kr/스키마/8.원격제어.md +++ b/docs/ko-kr/protocol/remote-control-schema.md @@ -1,16 +1,11 @@ --- +order: 8 icon: mdi:remote-desktop --- # 원격 제어 프로토콜 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: +MAA를 원격으로 제어하려면 http(s) 서비스를 제공해야 합니다. 이 서비스는 아래 두 가지 익명 엔드포인트를 제공해야 합니다. 이 두 엔드포인트는 웹 엔드포인트이며 http(s) 프로토콜이어야 합니다. ::: warning 엔드포인트가 http 프로토콜인 경우 MAA는 연결시마다 안전하지 않음 경고를 발생시킵니다. **공개 네트워크에 프로토콜을 배포하는 것은 매우 권장되지 않으며 위험합니다. 테스트 용도로만 사용하세요!** @@ -20,8 +15,6 @@ icon: mdi:remote-desktop 주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. ::: -MAA를 원격으로 제어하려면 http(s) 서비스를 제공해야 합니다. 이 서비스는 아래 두 가지 익명 엔드포인트를 제공해야 합니다. 이 두 엔드포인트는 웹 엔드포인트이며 http(s) 프로토콜이어야 합니다. - ## 작업 엔드포인트 가져오기 MAA는 이 엔드 포인트를 계속하여 폴링하여 실행해야하는 작업을 시도하고 가져와야합니다. 그리고 가져온 목록에 따라 순서대로 실행합니다. @@ -91,7 +84,7 @@ MAA는 이 엔드 포인트를 계속하여 폴링하여 실행해야하는 작 ::: note --LinkStart-[TaskName] 유형의 작업 유형의 LinkStart의 선택 가능한 값은 LinkStart-Base, LinkStart-WakeUp, LinkStart-Combat, LinkStart-Recruiting, LinkStart-Mall, LinkStart-Mission, LinkStart-AutoRoguelike, LinkStart-ReclamationAlgorithm입니다. +- LinkStart-[TaskName] 유형의 작업 유형의 LinkStart의 선택 가능한 값은 LinkStart-Base, LinkStart-WakeUp, LinkStart-Combat, LinkStart-Recruiting, LinkStart-Mall, LinkStart-Mission, LinkStart-AutoRoguelike, LinkStart-ReclamationAlgorithm입니다. - Settings-[SettingsName] 작업 유형의 유형 매개 변수의 선택 가능한 값은 Settings-ConnectionAddress, Settings-Stage1입니다. - 설정 시리즈 작업은 여전히 순서대로 실행되며 작업을 받은 즉시 실행되지 않으며 이전 작업 뒤에 배치됩니다. - 여러 즉시 실행 작업은 순서대로 실행되지만 이러한 작업은 모두 빠르게 실행되므로 순서에 관심을 두지 않아도됩니다. @@ -124,10 +117,9 @@ MAA가 작업을 완료하면 작업의 실행 결과를 원격에 보고해야 A 개발자는 자신의 QQBot을 사용하여 MAA를 제어하려고합니다. 따라서 공개 네트워크에서 노출 된 백엔드를 개발하여 다음 두 가지 엔드포인트를 제공합니다. -``` -https://myqqbot.com/maa/getTask -https://myqqbot.com/maa/reportStatus。 -``` +> [!tip] +> https://myqqbot.com/maa/getTask +> https://myqqbot.com/maa/reportStatus 사용자의 편의를 위해 getTask 인터페이스는 어떤 매개 변수를 받더라도 기본적으로 200OK와 비어있는 작업 목록을 반환합니다. 요청이 수신되면 A는 데이터베이스에서 중복 장치를 확인하고 그렇지 않으면 해당 장치와 사용자를 데이터베이스에 기록합니다. @@ -150,10 +142,9 @@ MAA를 구성 한 후 사용자가 MAA를 구성하면 MAA가 지속적으로 B 개발자는 웹 사이트를 작성했으며 웹 사이트를 통해 MAA를 대량으로 관리하려고합니다. 따라서 공개 네트워크에서 자체 사용자 관리 시스템을 보유하고 두 가지 익명 엔드 포인트를 제공하는 백엔드를 개발했습니다. -``` -https://mywebsite.com/maa/getTask -https://mywebsite.com/maa/reportStatus。 -``` +> [!tip] +> https://mywebsite.com/maa/getTask +> https://mywebsite.com/maa/reportStatus。 웹 사이트에는 MAA 인스턴스에 대한 연결을 표시하는 페이지가 있습니다. B 개발자는 랜덤 문자열을 `사용자 키`라고하는 이 페이지에 표시하고 장치 ID를 입력할 수있는 텍스트 상자가 있습니다. @@ -165,4 +156,6 @@ MAA의 설정에 올바르게 MAA 연결을 만들려면 웹 사이트에서 사 웹 사이트는이 페이지를 공개하기 때문에 누구나 사용자 키를 복사하여 사용할 수 있지만 장치 ID가 없으면 적절한 데이터베이스 레코드를 찾을 수 없으므로 getTask 호출에 대한 결과는 빈 목록입니다. -작업이 완료되면 MAA가 reportStatus를 호출하여 결과를 보고하면 웹 사이트는 결과를받고 사용자에게 페이지를 업데이트하여 작업 결과를 표시합니다. \ No newline at end of file +작업이 완료되면 MAA가 reportStatus를 호출하여 결과를 보고하면 웹 사이트는 결과를받고 사용자에게 페이지를 업데이트하여 작업 결과를 표시합니다. + + \ No newline at end of file diff --git a/docs/ko-kr/스키마/7.보안파견.md b/docs/ko-kr/protocol/sss-schema.md similarity index 96% rename from docs/ko-kr/스키마/7.보안파견.md rename to docs/ko-kr/protocol/sss-schema.md index 9336b9bc3a..0a2d97e2af 100644 --- a/docs/ko-kr/스키마/7.보안파견.md +++ b/docs/ko-kr/protocol/sss-schema.md @@ -1,16 +1,11 @@ --- +order: 7 icon: game-icons:prisoner --- + # 보안파견 스키마 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: tip 주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. ::: diff --git a/docs/ko-kr/스키마/4.작업.md b/docs/ko-kr/protocol/task-schema.md similarity index 98% rename from docs/ko-kr/스키마/4.작업.md rename to docs/ko-kr/protocol/task-schema.md index 899377e0d1..292b0d4046 100644 --- a/docs/ko-kr/스키마/4.작업.md +++ b/docs/ko-kr/protocol/task-schema.md @@ -1,16 +1,10 @@ --- +order: 4 icon: material-symbols:task --- # Tasks 스키마 -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - ::: tip 주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. ::: @@ -146,6 +140,7 @@ icon: material-symbols:task - 작업 "B@A"가 `tasks.json`에 명시적으로 정의되어 있지 않으면 `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` 필드에 "B@" 접두사를 추가합니다(또는 작업 이름이 `#`로 시작하는 경우 "B"로 접두사를 추가 합니다). 나머지 매개변수는 "A" 작업과 동일합니다. 즉, 작업 "A"에 다음과 같은 매개변수가 있는 경우: + ```json "A": { "template": "A.png", @@ -186,6 +181,7 @@ icon: material-symbols:task #### 멀티 파일 Task 나중에 로드된 작업 파일 (예: 글로벌 서버의 `tasks.json` 파일)에서 정의된 작업이 먼저 로드된 작업 파일 (예: CN 서버의 `tasks.json` 파일)에서도 동일한 이름의 작업이 정의된 경우 다음과 같습니다: + - 파일 2에 작업에 `baseTask` 필드가 없으면 파일 1에서 동일한 이름의 작업의 필드를 직접 상속합니다 - 파일 2에 작업에 `baseTask` 필드가 있으면 파일 1에서 동일한 이름의 작업의 필드를 직접 상속하는 대신에 덮어씁니다. diff --git a/docs/ko-kr/readme.md b/docs/ko-kr/readme.md index 1b68156c9b..19c566cc73 100644 --- a/docs/ko-kr/readme.md +++ b/docs/ko-kr/readme.md @@ -1,28 +1,22 @@ -
+--- +icon: ic:round-home +index: true +dir: + order: 0 +--- -LOGO +::: center + +![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256) # MaaAssistantArknights -
-
- C++ -
-
- platform -
-
- license - commit -
-
- stars - GitHub all releases -
-
-
+![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus) +![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet) +![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4) +![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social) -[简体中文](../readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](./readme.md) +[简体中文](../zh-cn/readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | 한국어 MAA는 MAA Assistant Arknights의 약자입니다 @@ -30,28 +24,57 @@ MAA는 MAA Assistant Arknights의 약자입니다 이미지 인식을 기반으로, 한 번의 클릭만으로 그날의 모든 작업을 끝내드립니다! -개발 진행 중입니다 ✿✿ヽ(°▽°)ノ✿
+개발 진행 중입니다 ✿✿ヽ(°▽°)ノ✿ -
+::: ## 개요 - - 이성을 사용하고, 아이템 드랍을 인식해 자동으로 통계 사이트에 업로드 합니다. [펭귄 물류](https://penguin-stats.cn/), [Yituliu](https://ark.yituliu.cn/) -- 자동으로 오퍼레이터 효율을 고려해 기반시설 교대를 하며, 동시에 사용자 커스텀 교대 기능도 지원합니다. [기반시설 스키마](./스키마/6.기반시설.md) +- 자동으로 오퍼레이터 효율을 고려해 기반시설 교대를 하며, 동시에 사용자 커스텀 교대 기능도 지원합니다. [기반시설 스키마](./protocol/base-scheduling-schema.md) - 자동으로 공개모집 및 즉시 모집을 선택할 수 있으며, 자동으로 통계 사이트에 업로드 합니다. [펭귄 물류](https://penguin-stats.cn/result/stage/recruit/recruit), [Yituliu](https://ark.yituliu.cn/survey/maarecruitdata) - 공개 모집 화면에서 태그 인식을 할 수 있습니다. - 오퍼레이터 목록을 인식해, 보유중인 오퍼레이터들 및 잠재를 통계화하여 공개모집 태그 인식 시 표시합니다. -- 현재 보유중인 육성 재화를 인식해 다음 사이트로 데이터를 내보낼 수 있습니다. [펭귄 물류 플래너](https://penguin-stats.cn/planner), [arkn.lolicon](https://arkntools.app/#/material), [ark-nights](https://ark-nights.com/settings) -- 원클릭으로 친구 방문 및 크레딧 획득/구매를 하며, 임무 보상 수령 등의 모든 일과를 수행합니다. +- 현재 보유중인 육성 재화를 인식해 다음 사이트로 데이터를 내보낼 수 있습니다. [펭귄 물류 플래너](https://penguin-stats.cn/planner), [Arkntools](https://arkntools.app/#/material), [ark-nights](https://ark-nights.com/settings) +- 공개 모집 인터페이스에 수동 식별을 지원하여 높은 등급의 오퍼레이터 공개 모집을 용이하게 합니다. +- 오퍼레이터 목록을 식별하고, 보유 및 미보유 오퍼레이터와 그들의 잠재를 계산하며, 이를 공개 모집 인터페이스에서 표시하는 것을 지원합니다. +- 원클릭으로 친구 방문 및 크레딧 획득/구매를 하며, 임무 보상 수령 등의 모든 일과를 수행합니다. - 통합전략에서 자동으로 오퍼레이터 레벨을 인식하며, 오리지늄 각뿔 획득 및 노드 개방과 레벨을 올려줍니다. - Copliot 파일을 통한 자동 지휘가 가능합니다. [영상 설명](https://www.bilibili.com/video/BV1H841177Fk/) - C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 다음과 같은 다양한 환경에서 MAA를 사용할 수 있습니다!! 말로만 설명하기보다는 사진으로 보여드리겠습니다! -![Screenshot 2023-02-04 011534](https://user-images.githubusercontent.com/61264540/216660360-dc8b96b4-2daa-41d1-a6fc-024886861e4c.png) -![Screenshot 2023-02-04 013950](https://user-images.githubusercontent.com/61264540/216660420-2b0c759e-f8fd-48bf-ae7f-112105faa3a4.png) + + +
+ + +
+ + + + ## 다운로드 @@ -62,12 +85,16 @@ MAA는 MAA Assistant Arknights의 약자입니다 ### 기본 설정 -1. [Windows 지원 목록](./사용자설명서/플랫폼/1.Windows.md) 문서를 참고하여 에뮬레이터/기기를 설정해 주세요. -2. 에뮬레이터 해상도를 '1280 * 720' 이상으로 변경하세요. 최대값은 '2K'이고 가로세로 비율은 '16:9'입니다. - > YoStarKR의 경우 게임 인터페이스 문제로 인해 해상도를 '1280 * 720' 또는 '1920 * 1080'으로 변경하는 것을 권장합니다. +1. [Windows 지원 목록](./manual/device/windows.md) 문서를 참고하여 에뮬레이터/기기를 설정해 주세요. +2. 에뮬레이터 해상도를 `1280x720` 이상으로 변경하세요. 최대값은 `2K`이고 가로세로 비율은 `16:9`입니다. + +::: tip + YoStarKR의 경우 게임 인터페이스 문제로 인해 `1280x720` 또는 `1920x1080` 해상도를 권장합니다. +::: + 1. 어시스턴트 시작! -자세한 내용은 [사용자 설명서](./사용자설명서/사용자설명서.md)를 참조해 주세요. +자세한 내용은 [사용자 설명서](./manual/introduction/)를 참조해 주세요. ### FAQ @@ -78,7 +105,7 @@ MAA는 MAA Assistant Arknights의 약자입니다 - 다운로드 속도가 너무 느려요/미러 사이트가 접속이 안 돼요 - 다운로드 도중에 “로그인”이나 “인증”이라는 메시지가 떠요 -[FAQ](./사용자설명서/FAQ.md) 문서를 참조해 주세요. +[FAQ](./manual/faq.md) 문서를 참조해 주세요. ### 해외 서버 지원 @@ -86,11 +113,11 @@ MAA는 MAA Assistant Arknights의 약자입니다 그러나, 해외 서버 사용자가 적고 프로젝트 인원이 부족하기 때문에 대부분의 기능이 자세하게 테스트를 거치지 않았습니다. 그러니 직접 사용해서 어떠한지 확인하시기 바랍니다. 만약 버그가 있거나, 특정 기능에 대한 강한 요구가 있다면 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 및 [토론](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 에서 요청하거나 참여해주세요! -현지화는 다음을 참조해주세요. [해외 클라이언트 현지화](./개발문서/5.해외클라이언트현지화.md) +현지화는 다음을 참조해주세요. [해외 클라이언트 현지화](./develop/overseas-client-adaptation.md) ### CLI지원 -MAA는 명령줄 인터페이스(CLI)를 지원하며, Linux,macOS 및 Window에서 사용할 수 있으며, 자동화 스크립트 작성 및 그래픽 인터페이스가 없는 서버에서 사용할 수 있습니다. [CLI 가이드](./사용자설명서/CLI.md) +MAA는 명령줄 인터페이스(CLI)를 지원하며, Linux,macOS 및 Window에서 사용할 수 있으며, 자동화 스크립트 작성 및 그래픽 인터페이스가 없는 서버에서 사용할 수 있습니다. [CLI 가이드](./manual/cli/intro.md) ## 관련 프로젝트 @@ -123,40 +150,40 @@ MAA는 중국어(간체)를 기본 언어로 하며, 번역 단어는 중국어( 2. Visual Studio 2022 로 `MAA.sln`파일을 열고, `MaaWpfGui`를 마우스 우클릭을 해 시작 프로젝트로 설정합니다. 3. VS 상단에서 `RelWithDebInfo` `x64`을 선택합니다. (릴리즈 패키지 또는 ARM 플랫폼을 컴파일하는 경우 이 단계를 무시하세요) -4. `MaaWpfGui` - 속성 - 디버깅 - 로컬 디버깅 활성화(이렇게 하면 C++ Core에 중단점을 설정할 수 있습니다) -5. (선택사항)PR을 제출하기전에, [clang-format 지원](./개발문서/1.개발시작.md#visual-studio에서-clang-format-사용-설정)을 활성화하는 것이 좋습니다. +4. `MaaWpfGui` - 속성 - 디버깅 - 로컬 디버깅 활성화(이렇게 하면 C++ Core에 중단점을 설정할 수 있습니다) +5. (선택사항)PR을 제출하기전에, [clang-format 지원](./develop/development.md#visual-studio에서-clang-format-사용-설정)을 활성화하는 것이 좋습니다. ### Linux | macOS -[Linux 가이드](./개발문서/2.Linux가이드.md)을 참조하세요 +[Linux 가이드](./develop/linux-tutorial.md)을 참조하세요 ### API -- [C 인터페이스](include/AsstCaller.h):[예제](src/Cpp/main.cpp) -- [Python 인터페이스](src/Python/asst/asst.py):[예제](src/Python/sample.py) -- [Golang 인터페이스](src/Golang/):[예제](src/Golang/maa/maa.go) -- [Dart 인터페이스](src/Dart/) -- [Java 인터페이스](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java):[예제](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) -- [Java HTTP 인터페이스](src/Java/Readme.md) -- [Rust 인터페이스](src/Rust/src/maa_sys/):[HTTP 인터페이스](src/Rust) -- [TypeScript 인터페이스](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader) -- [Woolang 인터페이스](src/Woolang/maa.wo):[예제](src/Woolang/main.wo) -- [통합문서](./스키마/1.통합문서.md) -- [콜백 스키마](./스키마/2.콜백.md) -- [전투 스키마](./스키마/3.전투.md) -- [작업 스키마](./스키마/4.작업.md) +- [C 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/include/AsstCaller.h):[예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Cpp/main.cpp) +- [Python 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/asst/asst.py):[예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/sample.py) +- [Golang 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Golang):[예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Golang/maa/maa.go) +- [Dart 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Dart) +- [Java 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java):[예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) +- [Java HTTP 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/Readme.md) +- [Rust 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust/src/maa_sys):[HTTP 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust) +- [TypeScript 인터페이스](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader) +- [Woolang 인터페이스](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/maa.wo):[예제](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/demo.wo) +- [통합문서](./protocol/integration.md) +- [콜백 스키마](./protocol/callback-schema.md) +- [전투 스키마](./protocol/copilot-schema.md) +- [작업 스키마](./protocol/task-schema.md) ### 해외 서버 현지화 -[해외 클라이언트 현지화](./개발문서/5.해외클라이언트현지화.md)를 참조하세요. 대부분은 스크린샷 + 간단한 json 수정만 필요합니다. +[해외 클라이언트 현지화](./develop/overseas-client-adaptation.md)를 참조하세요. 대부분은 스크린샷 + 간단한 json 수정만 필요합니다. ### 개발에 기여를 원하지만, GitHub 사용이 어려운 경우? -[GitHub Pull Request 가이드](./개발문서/3.웹기반PR.md) +[GitHub Pull Request 가이드](./develop/pr-tutorial.md) ### Issue bot -[Issue bot 사용법](./개발문서/4.IssueBot.md) +[Issue bot 사용법](./develop/issue-bot-usage.md) ## 감사의 말 @@ -174,7 +201,7 @@ MAA는 중국어(간체)를 기본 언어로 하며, 번역 단어는 중국어( - ~~C++ Base64 인코딩/디코딩: [cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ ZIP 라이브러리: [zlib](https://github.com/madler/zlib) - C++ Gzip 라이브러리: [gzip-hpp](https://github.com/mapbox/gzip-hpp) -- 안드로이드 터치 이벤트 구현: [minitouch](https://github.com/openstf/minitouch) +- 안드로이드 터치 이벤트 구현: [Minitouch](https://github.com/DeviceFarmer/minitouch) - 안드로이드 터치 이벤트 구현: [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) - WPF MVVM 프레임워크: [Stylet](https://github.com/canton7/Stylet) - WPF 조작 라이브러리: [HandyControl](https://github.com/HandyOrg/HandyControl) @@ -209,3 +236,5 @@ MAA의 개선을 위한 개발/테스트에 기여해준 모든 친구들에게 [개발자 그룹 (QQ 그룹)](https://jq.qq.com/?_wv=1027&k=JM9oCk3C) 프로그램이 도움이 된다고 생각하시면 Star를 눌러주세요! (페이지 우측 상단의 작은 별) 저희에게 가장 큰 도움이 됩니다! + + diff --git a/docs/ko-kr/개발문서/3.웹기반PR.md b/docs/ko-kr/개발문서/3.웹기반PR.md deleted file mode 100644 index efb1c2e243..0000000000 --- a/docs/ko-kr/개발문서/3.웹기반PR.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -icon: mingcute:git-pull-request-fill ---- - -# 웹 기반 PR 가이드 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - -::: warning -이 가이드는 많은 개념을 단순화하여 더 많은 사람들이 실제로 사용할 수 있도록 설계되었습니다. 때로는 꽤 불안불안한 ~~하지만 간단한~~ 조치들과 약간 부정확한 설명이 있을 수 있으므로 전문가 분들의 이해를 부탁드립니다. -만약 Git 사용 경험이 있고 프로그래밍 기초를 가지고 계시다면 ~~그럼 당신은 왜 보고 있나🔨~~, 약간 더 발전된 가이드인 [Github Pull Request 진행과정](./1.개발시작.md#github-pull-request-진행-과정)을 확인해주세요. -::: - -소소한 GitHUb Pull Request 사용 가이드 (\*´▽`)ノノ - -## 기본 개념 및 용어 설명 - - 장에서는 다소 지루한 내용을 다루고 있습니다. 관심 없으면 바로 실제 조작 부분으로 건너뛸 수 있으며, 이해되지 않는 부분은 나중에 다시 찾아보세요. - -### Repository (저장소) - -repo로도 알려져 있으며 코드 및 다른 리소스 파일을 저장하는 곳입니다. - -👇 현재 이 웹 페이지 및 그 내용 전체가 MAA의 저장소입니다 (일반적으로 MAA의 기본 저장소로 불립니다). - -![image](https://user-images.githubusercontent.com/18511905/193747349-5964bd12-de3c-4ce7-b444-29b0bd104acc.png) - -### Fork (복사) - -단어 그대로 MAA의 코드를 복사하고 나서 수정 등의 작업을 수행할 수 있습니다. 원본을 망치지 않도록 조심하세요. -그러나 중국어로 "복사"라는 용어를 사용할 때는 일반적으로 "복사"라는 용어를 생각합니다.또한 "fork"라는 명확한 번역이 없으므로 일반적으로 영어를 사용합니다. 예를 들어 "코드를 fork하여 복사합니다." - -복사한 것은 `MAA (1)` (bushi)입니다. -원래 저장소와 구별하기 위해 일반적으로 원래 MAA 저장소를 "원본 저장소", "원격 저장소", "상위 저장소"로 지칭합니다. -각 사람이 자신의 복사본을 만들 수 있기 때문에 복사본을 "개인 저장소"로 지칭합니다. - -![image](https://user-images.githubusercontent.com/18511905/193750507-b8167df5-7a70-48d4-ba69-5dda8327e8ec.png) - -### Pull Request - -PR로도 알려져 있으며, "풀 리퀘스트"라는 용어는 너무 길고 타이핑 하기 싫어서 ~~글자 수가 많고 너무 힘들어~~ 그래서 모두 간단하게 "PR"이라고 부릅니다. -앞서 fork(복사)한 개인 저장소에서 수정한 내용을 주 저장소에 제공하려면 PR을 엽니다. - -물론 "요청"이니까 승인이 필요합니다. MAA 팀의 분들이 당신의 변경 사항에 대해 몇 가지 의견을 제시할 수 있습니다. 물론 우리의 의견이 모두 옳은 것은 아니며, 합리적으로 논의합니다~ - -👇 아래는 현재 전문가들이 제시한 PR을 대기 중인 상태입니다. - -![image](https://user-images.githubusercontent.com/18511905/193750539-9106d425-2087-4116-a599-61904690718b.png) - -### Conflict (충돌) - -가정해 봅시다. 원 저장소에는 A 파일이 있으며 내용이 111입니다. 당신은 이를 fork하여 내용을 222로 변경했지만, PR을 제출하기 직전에 누군가가 fork하여 PR을 제출하고 A 파일을 333으로 변경했습니다. -이 경우 둘 다 A 파일을 수정했으며 수정 사항이 다르므로 누구의 것을 사용할지 결정해야 합니다. 이것이 충돌입니다. -충돌 해결은 꽤 복잡하지만 여기서는 개념을 설명하기 위해만 언급하며 실제로 발생할 때 무슨 일이 일어나는지 이해할 수 있도록 하겠습니다. 해결 방법에 대해서는 현재 설명하지 않겠습니다. - -## 웹 기반 PR 작업 전체 프로세스 - -1. 먼저 MAA 주 저장소로 이동하여 코드를 fork합니다. - - ![~ NKHB1CIE8`G(UK@ %3`H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) - -2. "마스터 브랜치만" 옵션을 해제한 다음 Fork를 클릭합니다. - - ![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) - -3. 이제 개인 저장소로 이동하면 제목이 "YourName/MaaAssistantArknights"이고 아래에 한 줄짜리 작은 글씨로 "forked from MaaAssistantArknights/MaaAssistantArknights" (MAA 주 저장소에서 복제됨)이라고 표시됩니다. - - ![image](https://user-images.githubusercontent.com/18511905/193751864-0d2d0caf-b5ef-4c91-9331-d9827f23f36b.png) - -4. dev 브랜치로 전환합니다. (브랜치 개념은 이 문서와는 관련이 없으며~~사실 나는 귀찮아서 쓰지 않았습니다~~, 관심이 있다면 검색하여 알아보세요. 여기에서는 그냥 이렇게 조작하면 됩니다. 원리를 고려할 필요는 없습니다) - - ![image](https://user-images.githubusercontent.com/18511905/193752379-90d5b317-b1aa-4563-b8b0-583c78373f9b.png) - -5. 수정하려는 파일을 찾아 "Go to file"을 클릭하여 전역 검색을 수행하거나 아래 폴더에서 직접 찾을 수 있습니다. (파일의 위치를 알고 있다면) - - ![image](https://user-images.githubusercontent.com/18511905/193752691-7102a405-dc08-4dce-9617-7f862b0b32b9.png) - -6. 파일을 열면 파일 오른쪽 상단의 ✏️을 클릭하여 편집합니다. - - ![image](https://user-images.githubusercontent.com/18511905/193752862-a9cf6019-b363-4c22-b7c7-35f4aca7377f.png) - -7. 수정하세요! (리소스 파일과 같은 경우 먼저 컴퓨터에있는 MAA 폴더에서 수정 사항을 테스트 한 다음 웹 페이지로 복사하여 잘못된 수정을 방지하세요) -8. 수정이 완료되면 맨 아래로 스크롤하여 수정 내용을 적습니다. - - ![image](https://user-images.githubusercontent.com/18511905/193754154-b21f4176-1418-49c8-87a3-dab088868fdc.png) - -9. 두 번째 파일을 수정해야합니까? 수정 후 오류가 발생하여 수정을 다시하고 싶습니까? 전혀 문제가되지 않습니다! 5-8을 반복하세요! -10. 모두 완료되면 PR을 제출하세요! Pull Request 탭을 클릭합니다. - Compare & Pull Request 버튼이 있으면 좋지만 없어도 걱정하지 마세요. 아래의 New Pull Request를 클릭하면 됩니다. (11단계 참조) - - ![image](https://user-images.githubusercontent.com/18511905/193755450-59137215-4e0b-4eca-9ec9-8b35b52cd5ff.png) - -11. 이제 주 저장소로 이동하여 제출할 PR을 확인합니다. - 아래 그림에서 화살표가 있는 곳은 오른쪽에 개인 이름/MAA의 dev 브랜치를 주 저장소/MAA의 dev 브랜치에 병합하는 것입니다. - 그런 다음 제목, 수정한 내용 등을 작성하고 확인을 클릭합니다. - - ![20221004151004](https://user-images.githubusercontent.com/18511905/193756875-556df699-96b3-411f-815e-47050e283f4d.png) - -12. MAA 팀의 전문가들의 검토를 기다립니다! 물론 그들도 의견을 제시 할 수 있습니다. - 👇 예를 들어(오로지 오락을 위한 것이니 진지하게 받아들이지 마세요) - ![image](https://user-images.githubusercontent.com/18511905/193757006-75170e78-4c8d-4cd2-b8eb-ca590ea7aa50.png) - -13. 만약 전문가들이 몇 가지 작은 문제를 수정하라고 말한다면 개인 저장소로 돌아가 이전의 dev 브랜치로 이동하여 3-9 단계를 반복하세요! - 당신의 현재 PR은 여전히 검토 대기 중이므로 나중에 수정 사항이 이 PR에 직접 반영됩니다. - 👇 예를 들어 아래에서 "재수정 데모"라는 새로운 내용이 추가된 것을 볼 수 있습니다. - ![image](https://user-images.githubusercontent.com/18511905/193757668-4064273c-576d-4259-bbaa-e9f65ae486c1.png) - -14. 전문가들의 승인을 기다리면 모두 완료됩니다! **버전이 출시**되면 당신의 GitHub 프로필 사진이 자동으로 기여자 목록에 추가됩니다. 모든 분들의 자비로운 공헌에 감사드립니다! - ~~왜 모든 사람들이 이중 인격이야, 오 나도 그렇지, 그럼 괜찮아~~ - - ::: tip 기여자 - 개발/테스트에 참여한 모든 친구들에게 감사드립니다. 여러분의 도움으로 MAA가 점점 더 좋아지고 있습니다! (\*´▽ `)ノノ - - [![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) - ::: - -15. 다음에 다른 PR을 제출하려면 먼저 dev 브랜치로 전환한 다음 아래 그림과 같이 진행하세요. - - ::: warning - 이 조작은 개인 저장소를 주 저장소와 완전히 동일한 상태로 강제로 동기화합니다. 이것은 충돌을 해결하는 가장 간단하고 효과적인 방법입니다. 그러나 개인 저장소에 이미 추가한 것이 있으면 그것이 삭제됩니다! - ::: - 충돌을 일으키지 않을 경우 오른쪽에 초록색 `Update Branch` 버튼을 사용하세요. - - 에서 설명한 이 모든 것을 모르거나 알 필요가 없다면 왼쪽의 버튼을 클릭하세요. - - ![image](https://user-images.githubusercontent.com/18511905/194709964-3ea0d5b0-1bfe-4d0e-a1dc-bf4f735af655.png) - - 그러면 3-14 단계를 반복하여 수정하고 PR을 제출하면 됩니다~ - - - - - - - - -# GitHub Pull Request 사용 가이드 - -이 문서는 기계 번역된 것입니다. 가능하시다면, 중국어 버전을 참조해주세요. 오류나 개선 제안에 대해 감사드리겠습니다. - -⚠️ **팔라스 경고** ⚠️ **버프 스태킹 경고** ⚠️ - -이 튜토리얼에서는 일부 개념을 간소화하여 더 넓은 사용자들이 쉽게 접근할 수 있도록 설명되었습니다. 이를 위해 일부 우아함과 정확성이 희생되었을 수 있습니다. Git과 프로그래밍 지식에 익숙한 경우, 더 고급스러운 튜토리얼인 [개발 환경 구축](./1.개발시작.md)을 참조하시기 바랍니다. - -## 기본 개념과 용어 - -이 장에는 약간의 이론적인 내용이 포함되어 있습니다. 관심 없으시다면 바로 아래의 실제 섹션으로 건너뛰시면 됩니다. 이해하지 못하는 내용이 있다면 나중에 다시 읽어보세요. - -### Repository - -"Repo"는 "repository(저장소)"의 약자로, 코드와 기타 리소스 파일들을 저장하는 장소입니다. - -👇 MAA(일반적으로 MAA의 메인 저장소라고도 합니다)의 현재 웹 페이지와 그 내용 전체를 저장소로 생각하실 수 있습니다. - -![이미지](https://user-images.githubusercontent.com/18511905/193747349-5964bd12-de3c-4ce7-b444-29b0bd104acc.png) - -### Fork - -복사, 말 그대로 MAA의 코드를 복사하여 이후 수정과 작업을 수행하면서 원본을 손상하지 않도록 합니다. - -복사본이므로 `MAA (1)`이라고 가정해봅시다. 원본 저장소와 구분하기 위해 일반적으로 원본 MAA 저장소를 "메인 저장소", "upstream", 또는 "origin"이라고 부릅니다. 또한, 누구나 자신의 복사본을 만들 수 있으므로 이 복사본 저장소를 "개인 저장소"라고 합니다. - -![이미지](https://user-images.githubusercontent.com/18511905/193750507-b8167df5-7a70-48d4-ba69-5dda8327e8ec.png) - -### Pull Request(풀 리퀘스트) - -이전 섹션에서 진행한 작업 후에, 변경한 내용을 메인 저장소에 제공하는 방법은 무엇일까요? 이때 Pull Request(PR)를 열어서 수정된 내용을 메인 저장소에 추가해달라고 요청할 수 있습니다. - -물론, 이것이 "요청(request)"이기 때문에 승인이 필요합니다. MAA 팀에서는 당신의 변경 사항에 대한 피드백을 제공할 수 있으나, 피드백이 항상 완전히 정확한 것은 아닐 수 있습니다. 함께 합리적인 토론을 진행해봅시다~ - -👇 다음은 기여자들이 현재 제출한 PR이며, MAA 팀의 승인을 기다리고 있습니다. - -![이미지](https://user-images.githubusercontent.com/18511905/193750539-9106d425-2087-4116-a599-61904690718b.png) - -### Conflict(충돌) - -메인 저장소에 A라는 파일이 있으며, 그 내용은 111입니다. 당신은 이를 포크하여 복사하고 내용을 222로 변경했습니다. 그러나 PR을 제출하기 직전에 다른 사람인 Zhangsan이 A 파일을 포크하여 내용을 333으로 변경하고 PR을 제출했습니다. -이제 우리는 충돌(conflict)이 발생했습니다. 두 사람 모두 A 파일을 수정했지만, 다른 방식으로 수정한 것입니다. 이 충돌은 해결하기 어려울 수 있으며, 여기서는 상세한 해결 방법에 대해 설명하지 않고 개념만 설명합니다. - -## 웹 기반 PR 작업의 전체 과정 - -1. 먼저 MAA 메인 저장소로 이동하여 코드의 복사본을 포크합니다. - - ![~ NKHB1CIE8 G(UK@ %3 H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) -2. "Only master branch" 옵션을 해제하고 "Create Fork"를 클릭합니다. - - ![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) -3. 본인의 개인 저장소로 이동합니다. 제목은 "Your Name/MaaAssistantArknights"로 되어 있으며, 아래에 "forked from MaaAssistantArknights/MaaAssistantArknights"라는 작은 메모가 있습니다(이는 MAA 메인 저장소에서 복사한 것입니다). - - ![이미지](https://user-images.githubusercontent.com/18511905/193751864-0d2d0caf-b5ef-4c91-9331-d9827f23f36b.png) -4. "dev" 브랜치로 전환합니다(브랜치 개념은 이 튜토리얼과 관련이 없으므로 이 곳에서는 설명을 생략합니다. 단순히 브랜치를 전환 - -하기 위해서는 이 지침을 따르기만 하면 됩니다). - - ![이미지](https://user-images.githubusercontent.com/18511905/193752379-90d5b317-b1aa-4563-b8b0-583c78373f9b.png) -5. 수정하려는 파일을 찾습니다. 전역적으로 검색하려면 "Go to file"을 클릭하거나 아래 폴더를 탐색할 수 있습니다(파일의 위치를 알고 있다면). - - ![이미지](https://user-images.githubusercontent.com/18511905/193752691-7102a405-dc08-4dce-9617-7f862b0b32b9.png) -6. 파일을 열면 파일 우측 상단의 ✏️ 아이콘을 클릭하여 편집을 시작합니다. - - ![이미지](https://user-images.githubusercontent.com/18511905/193752862-a9cf6019-b363-4c22-b7c7-35f4aca7377f.png) -7. 변경 사항을 작성하세요! (리소스 파일인 경우, 오류를 방지하기 위해 웹 페이지에 붙이기 전에 로컬 MAA 폴더에서 변경 사항을 테스트하는 것이 좋습니다). -8. 편집을 마치면 페이지 하단으로 스크롤하여 변경 사항을 설명합니다. - - ![이미지](https://user-images.githubusercontent.com/18511905/193754154-b21f4176-1418-49c8-87a3-dab088868fdc.png) -9. 다른 파일을 수정해야 하나요? 실수를 해서 다시 변경해야 하나요? 문제 없습니다! 다른 파일에 대해 위 단계 5-8을 반복하기만 하면 됩니다. -10. 모든 변경 사항이 완료되었다면, 개인 저장소의 Pull Request 탭으로 이동하여 Pull Request을 생성합니다. - "Compare & Pull Request" 버튼이 있으면 클릭하시면 됩니다! 없다면 걱정하지 마세요. 아래 "New Pull Request"를 클릭해도 됩니다(단계 11 참조). - - ![이미지](https://user-images.githubusercontent.com/18511905/193755450-59137215-4e0b-4eca-9ec9-8b35b52cd5ff.png) -11. 이제 메인 저장소로 이동하게 됩니다. PR을 제출할 변경 사항을 다시 한 번 확인하세요. - 위 그림과 같이 왼쪽 화살표가 있습니다. 이것은 본인이 포크한 "Your name/MAA" 저장소의 dev 브랜치를 "MAA" 메인 저장소의 dev 브랜치로 병합하려는 의미입니다. - 그런 다음, 변경 사항에 대한 제목과 설명을 작성하고 "Create Pull Request"를 클릭하세요. - - ![20221004151004](https://user-images.githubusercontent.com/18511905/193756875-556df699-96b3-411f-815e-47050e283f4d.png) -12. MAA 팀 전문가들의 리뷰를 기다리세요! 물론, 그들은 몇 가지 코멘트를 제공할 수도 있습니다. - 👇 예를 들면(즐겁게 보세요, 심각하게 받아들이지 마세요): - ![이미지](https://user-images.githubusercontent.com/18511905/193757006-75170e78-4c8d-4cd2-b8eb-ca590ea7aa50.png) -13. 추가 변경 사항이 요청되면 개인 저장소로 돌아가 dev 브랜치로 전환하고 단계 3-9를 반복하세요! - 현재 Pull Request은 리뷰를 기다리고 있기 때문에 단계 2(재포크)와 단계 10(재Pull Request)을 다시 수행할 필요는 없으며, 후속 변경 사항은 이러한 Pull Request에 직접 추가됩니다. - 👇 예를 들어, "revised demo"가 아래에 추가된 것을 볼 수 있습니다. - ![이미지](https://user-images.githubusercontent.com/18511905/193757668-4064273c-576d-4259-bbaa-e9f65ae486c1.png) -14. 전문가들이 PR을 승인하면 모두 완료됩니다! 버전이 릴리스되면 GitHub 아바타가 자동으로 기여자 목록에 추가됩니다. 무한한 헌신에 감사드립니다! - ![이미지](https://user-images.githubusercontent.com/18511905/193758284-7a38f6e5-a2d1-4898-b7d3-27b4f9d0641b.png) -15. 다음 번에 또 다른 PR을 제출하려면 먼저 dev 브랜치로 전환한 다음, 아래 이미지에 표시된 단계를 따르세요. - **주의하세요!** 이 작업은 개인 저장소를 메인 저장소와 정확히 동일한 상태로 강제로 동기화합니다. 이것은 충돌을 해결하는 가장 간단하고 효과적인 방법이지만, 개인 저장소에서 추가 편집한 내용이 직접 삭제됩니다! - 충돌이 발생하지 않을 것이라고 확신한다면, 오른쪽의 "Update Branch" 버튼을 사용하세요. - - 위에서 설명한 내용에 대해 확신이 없거나 신경 쓰지 않으시면, 왼쪽의 버튼을 클릭하세요. - - ![이미지](https://user-images.githubusercontent.com/18511905/194709964-3ea0d5b0-1bfe-4d0e-a1dc-bf4f735af655.png) - - 그런 다음 단계 3-14를 반복하여 변경 사항을 만들고 PR을 제출하세요. diff --git a/docs/ko-kr/사용자설명서/CLI.md b/docs/ko-kr/사용자설명서/CLI.md deleted file mode 100644 index 9503e626d7..0000000000 --- a/docs/ko-kr/사용자설명서/CLI.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -icon: material-symbols:terminal ---- -# CLI 가이드 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - -## 기능 - -- TOML, YAML 또는 JSON 파일로 작업을 정의하고, `maa run `을 사용해 실행합니다. -- `maa install` 및 `maa update`을 사용하여 `Maa Core` 및 리소스를 설치, 업데이트 합니다. -- `maa self update`로 업데이트합니다. - -## 설치방법 - -### Appimage - -MAA의 CLI는 Linux에서의 기본 인터페이스입니다. 최신 [Appimage](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest)를 다운로드하여 CLI를 직접 사용할 수 있습니다. - -### 패키지 관리자 - -#### macOS - -[Homebrew](https://brew.sh/)를 사용하여 설치합니다: - -```bash -brew install MaaAssistantArknights/tap/maa-cli -``` - -#### Linux - -- Arch Linux 사용자는 [AUR package](https://aur.archlinux.org/packages/maa-cli/)를 설치할 수 있습니다: - - ```bash - yay -S maa-cli - ``` - -- Nix 사용자는 다음을 직접 실행할 수 있습니다: - - ```bash - # Stable - nix run nixpkgs#maa-cli - ``` - - ```bash - # Nightly - nix run github:Cryolitia/nur-packages#maa-cli-nightly - ``` - -안정 버전은 nixpkgs에 패키지화된 `maa-cli`로, [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-cli/package.nix)의 Rust 도구 체인을 사용합니다. Nightly 버전은 [NUR](https://github.com/Cryolitia/nur-packages/blob/master/pkgs/maa-assistant-arknights/maa-cli.nix)에 있으며, Rust 도구 체인의 베타 채널을 사용하며, 자동으로 업데이트되고 매일 Github Action으로 확인을 위해 빌드됩니다. - -- Linux Brew 사용자는 다음과 같이 [Linux Brew](https://docs.brew.sh/Homebrew-on-Linux)로 설치할 수 있습니다: - - ```bash - brew install MaaAssistantArknights/tap/maa-cli - ``` - -### 사전빌드 바이너리 - -[`maa-cli` release page](https://github.com/MaaAssistantArknights/maa-cli/releases/latest)에서 미리 빌드된 바이너리를 다운로드하여 즐겨 사용하는 위치에 압축 해제하여 CLI를 설치할 수 있습니다. 다른 플랫폼용 파일 이름은 다음과 같습니다: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
운영 체제아키텍처파일 이름
Linuxx86_64maa_cli-x86_64-unknown-linux-gnu.tar.gz
aarch64maa_cli-aarch64-unknown-linux-gnu.tar.gz
macOSx86_64 - maa_cli-universal-apple-darwin.zip -
aaarch64
Windowsx86_64maa_cli-x86_64-pc-windows-msvc.zip
- -### 소스 코드로 빌드하기 - -`cargo` 를 사용하여 직접 소스 코드로부터 빌드할 수도 있습니다: - -```bash -cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked -``` - -### 종속성 - -#### MaaCore - -`maa-cli`는 MaaCore의 인터페이스만 제공합니다. 작업을 실행하기 위해 `MaaCore` 및 리소스가 필요합니다. 이는 다음 명령어로 설치할 수 있습니다: - -```bash -maa install -``` - -## 사용법 - -### 명령어 - -`maa-cli`의 주요 기능은 작업을 실행하는 것입니다. 작업은 `maa run `를 사용하여 실행할 수 있습니다. 여기서 ``는 작업의 이름이며, `maa list`를 사용하여 모든 사용 가능한 작업을 나열할 수 있습니다. - -`maa help`를 통해 자세한 정보를 확인할 수 있습니다. - -## 구성 - -### 구성 디렉토리 - -`maa-cli`의 모든 구성은 특정 구성 디렉토리에 위치합니다. 이 디렉토리는 `maa dir config`를 통해 얻을 수 있습니다. 구성 디렉토리는 환경 변수 `MAA_CONFIG_DIR`에 의해 변경할 수 있습니다. 아래 예시에서는 `$MAA_CONFIG_DIR`를 구성 디렉토리를 나타내는 변수로 사용합니다. - -모든 구성 파일은 TOML, YAML 또는 JSON 형식으로 작성할 수 있습니다. 아래 예시에서는 TOML 형식과 파일 확장자 `.toml`을 사용합니다. 그러나 파일 확장자가 올바른 경우 이 세 가지 형식을 혼합하여 사용할 수 있습니다. - -### 작업 정의 - -`maa-cli` 작업은 하나의 파일에 정의되어야 합니다. 이 파일은 `$MAA_CONFIG_DIR/tasks` 디렉토리에 위치해야 합니다. - -#### 기본 구조 - -`maa-cli` 작업은 `MAA` 작업의 시퀀스입니다. 각 MAA 작업은 `type` 및 `params` 필드로 정의됩니다: - -```toml -[[tasks]] -type = "StartUp" # maa 작업의 유형 -params = { client_type = "Official", start_game_enabled = true } # 주어진 작업의 매개 변수 -``` - -모든 사용 가능한 작업 유형 및 매개 변수에 대한 문서를 확인하려면 [MAA](../스키마/1.통합문서.md#asstappendtask) 문서를 참조하세요. - -#### 작업 변형 및 조건 - -어떤 경우에는 조건에 따라 다른 매개 변수로 작업을 실행하고 싶을 수 있습니다. 작업에 대한 여러 변형을 정의하고 `condition` 필드를 사용하여 변형을 사용해야 할지를 결정할 수 있습니다. 예를 들어, 하루 중 다른 시간대에 다른 인프라 계획을 사용하고 싶을 수 있습니다: - -```toml -[[tasks]] -type = "Infrast" - -[tasks.params] -mode = 10000 -facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] -dorm_trust_enabled = true -filename = "normal.json" # 사용자 정의 인프라 플랜의 파일 이름 - -# 12:00:00 이전에는 계획 1을 사용하고, 12:00:00부터 18:00:00까지는 계획 2를 사용하고, 18:00:00 이후에는 계획 0을 사용합니다. -[[tasks.variants]] -condition = { type = "Time", end = "12:00:00" } # 시작이 정의되지 않으면 00:00:00이 됩니다. -params = { plan_index = 1 } - -[[tasks.variants]] -condition = { type = "Time", start = "12:00:00", end = "18:00:00" } -params = { plan_index = 2 } - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } # 종료가 정의되지 않으면 23:59:59가 됩니다. -params = { plan_index = 0 } -``` - -`condition` 필드는 변형이 사용되어야 하는지 여부를 결정하는 데 사용되며, 일치하는 변형의 `params` 필드는 작업의 매개 변수에 병합됩니다. - -**참고:** `filename` 필드가 상대 경로인 경우 `$MAA_CONFIG_DIR/infrast`로부터 상대적입니다. 또한 사용자 정의 인프라 플랜 파일은 `maa-cli`가 아닌 `MaaCore`에서 읽힙니다. 따라서 파일의 형식은 반드시 `JSON`이어야 하며, 파일에 정의된 시간대는 해당 서브 플랜을 선택하는 데 사용되지 않습니다. 따라서 해당 시간대에 올바른 인프라 플랜을 사용하려면 작업의 매개 변수에 `plan_index` 필드를 지정해야 합니다. 이렇게 하면 적절한 시간대에 올바른 인프라 플랜이 사용됩니다. - -`Time` 조건 이외에도 `DateTime`, `Weekday`, `Combined` 조건도 있습니다. `DateTime` 조건은 특정 날짜 및 시간대를 지정하는 데 사용되며, `Weekday` 조건은 주 중 일부 요일을 지정하는 데 사용됩니다. `Combined` 조건은 여러 조건의 조합을 지정하는 데 사용됩니다: - -```toml -[[tasks]] -type = "Fight" - -# 여름 이벤트에서 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 전투 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } -# 그렇지 않은 경우 1-7 전투 -[[tasks.variants]] -params = { stage = "1-7" } -``` - -기본 전략을 사용하면 여러 변형이 일치하는 경우 첫 번째 변형만 사용됩니다. 그리고 조건이 지정되지 않은 경우 변형은 항상 일치합니다. 따라서 변형이 조건 없이 가장 뒤에 위치하도록 할 수 있습니다. - -`strategy` 필드에 의해 전략을 변경할 수 있습니다: - -```toml -[[tasks]] -type = "Fight" -strategy = "merge" # 또는 "first" (기본값) - -# 일요일 밤에는 모든 유통기한이 지난 약을 사용합니다. -[[tasks.variants]] -params = { expiring_medicine = 1000 } -[tasks.variants.condition] -type = "Combined" -conditions = [ - { type = "Time", start = "18:00:00" }, - { type = "Weekday", weekdays = ["Sun"] }, -] - -# 기본적으로 1-7을 전투합니다. -[[tasks.variants]] -params = { stage = "1-7" } - -# 여름 이벤트가 아닌 경우 화요일, 목요일, 토요일에 CE-6 전투 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 여름 이벤트에서 SL-8 전투 -[[tasks.variants]] -params = { stage = "SL-8" } -condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } -``` - -이 예제의 결과 스테이지는 이전과 동일해야하지만, 유통기한이 지난 약을 추가로 일요일 밤에 사용할 것입니다. -`merge` 전략을 사용하면 여러 변형이 일치하는 경우 모든 일치한 변형의 매개 변수가 병합됩니다. 여러 변형에 동일한 매개 변수가 있는 경우 마지막 것이 사용됩니다. - -일치하는 변형이 없는 경우 작업이 실행되지 않습니다. 이는 일부 조건에서만 작업을 실행하려는 경우에 유용합니다: - -```toml -# 18:00 이후에 상점 방문 -[[tasks]] -type = "Mall" - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } -``` - -#### 사용자 입력 - -어떤 경우에는 실행 시간에 일부 값을 입력 받고 싶을 수 있습니다. 작업 파일에 하드코딩하는 대신에. 예를 들어, 싸울 스테이지, 구매할 아이템 등을 지정할 수 있습니다. 이러한 값을 `Input` 또는 `Select` 유형으로 지정할 수 있습니다: - -```toml -[[tasks]] -type = "Fight" - -# 전투할 스테이지 선택 -[[tasks.variants]] -condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } - -# 스테이지를 `Select` 유형으로 설정하고 대체 및 설명을 제공합니다. -[tasks.variants.params.stage] -alternatives = ["SL-6", "SL-7", "SL-8"] # 스테이지의 대체품, 적어도 하나의 대체품이 제공되어야 합니다. -description = "여름 이벤트에서 전투할 스테이지" # 입력의 설명, 선택 사항 - -# 입력이 없는 작업 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 전투할 스테이지를 입력합니다. -[[tasks.variants]] - -# 스테이지를 `Input` 유형으로 설정하고 기본값과 설명을 제공합니다. -[tasks.variants.params.stage] -default = "1-7" # 스테이지의 기본값, 선택 사항 (지정하지 않으면 사용자가 빈 값으로 다시 프롬프트됩니다.) -description = "전투할 스테이지" # 입력의 설명, 선택 사항 -``` - -`Input` 유형의 경우 사용자에게 값을 입력하라는 메시지가 표시됩니다. 기본값이 지정된 경우 사용자가 빈 값을 입력하면 기본값이 사용되고 그렇지 않으면 다시 프롬프트됩니다. `Select` 유형의 경우 사용자에게 대체품에서 값을 선택하라는 메시지가 표시됩니다 (색인별). 사용자 입력이 유효한 색인이 아닌 경우 다시 프롬프트됩니다. 프롬프트 및 입력은 `--batch` 옵션으로 비활성화할 수 있으며, 이 옵션은 일정에 따라 작업을 실행하는 데 유용합니다. - -### `MaaCore` 관련 구성 - -MaaCore의 관련 구성은 `$MAA_CONFIG_DIR/asst.toml`에 위치합니다. 현재 사용 가능한 구성은 다음과 같습니다: - -```toml -user_resource = true -resources = ["platform_diff/iOS"] - -[connection] -type = "ADB" -adb_path = "adb" -device = "emulator-5554" -config = "CompatMac" - -[static_options] -cpu_ocr = false -gpu_ocr = 1 - -[instance_options] -touch_mode = "MAATouch" -deployment_with_pause = false -adb_lite_enabled = false -kill_adb_on_exit = false -``` - - -`user_resource` 필드는 사용자 리소스를 로드할지 여부를 지정하는 불리언 값입니다. `true`인 경우, 추가 리소스가 `$MAA_CONFIG_DIR/resource` 디렉토리에 로드됩니다(다른 모든 리소스 이후에). 이는 `--user-resource` 명령행 옵션과 동일합니다. 자세한 정보는 `maa help run`을 참조하세요. - -`resources` 필드는 추가 리소스를 지정하는 데 사용되며, 리소스 디렉토리의 목록입니다(상대 경로가 주어진 경우 `$(maa dir resource)/resource` 디렉토리를 기준으로 합니다): - -`connection` 섹션은 게임에 연결하는 방법을 지정하는 데 사용됩니다. 현재 `ADB` 및 `PlayTools` 두 가지 유형의 연결이 있습니다. - -`ADB`를 사용하는 경우 `adb_path` 및 `device` 필드를 설정해야 합니다: - -```toml -[connection] -type = "ADB" -adb_path = "adb" # adb 실행 파일의 경로 -device = "emulator-5554" # Android 장치의 시리얼 번호 -config = "General" # maa의 설정 -``` -`PlayTools`를 사용하는 경우 `address`를 설정해야 합니다. 이것은 `PlayCover`에서 설정한 `MaaTools`의 주소입니다. 자세한 내용은 [여기](./1.4-Mac용_에뮬레이터_지원.md)에서 확인할 수 있습니다: - -```toml -[connection] -type = "PlayTools" -address = "localhost:1717" # MaaTools의 주소 -config = "CompatMac" # 위와 동일 -``` - -`ADB` 및 `PlayTools` 모두 `config` 필드를 공유합니다. 이는 `maa`의 `connect` 함수의 매개 변수이며, `macOS`에서는 기본값이 `CompatMac`, `Linux`에서는 `CompatPOSIXShell`, 다른 플랫폼에서는 `General`입니다. 추가 옵션 구성은 리소스 디렉토리의 `config.json`에서 찾을 수 있습니다. - -`instance_options` 섹션은 `maa` [인스턴스 옵션](../스키마/1.통합문서.md#asstsetinstanceoption)을 구성하는 데 사용됩니다: - -```toml -[instance_options] -touch_mode = "ADB" # 사용할 터치 모드, "ADB", "MiniTouch", "MAATouch" 또는 "MacPlayTools" (PlayCover 전용)일 수 있습니다. -deployment_with_pause = false # 배치 시 게임을 일시 정지할지 여부 -adb_lite_enabled = false # adb-lite 사용 여부 -kill_adb_on_exit = false # 종료 시 adb 종료 여부 -``` - -**참고:** `PlayCover`로 게임에 연결하는 경우 `touch_mode`는 무시되고 `MacPlayTools`가 사용됩니다. - -### `maa-cli` 관련 구성 - -`maa-cli` 관련 구성은 `$MAA_CONFIG_DIR/cli.toml`에 있어야 합니다. 현재 `core` 섹션만 포함되어 있습니다: - -```toml -[core] -channel = "beta" -[core.components] -resource = false -``` - -`channel` 필드는 설치할 `MaaCore`의 채널을 지정하는 데 사용됩니다. `stable`, `beta`, `alpha` 중 하나가 될 수 있습니다. `MaaCore`의 구성 요소는 `components` 필드로 지정할 수 있으며, 이는 부울 값의 테이블입니다. 현재 `resource` 구성 요소만 지원됩니다. diff --git a/docs/ko-kr/사용자설명서/사용자설명서.md b/docs/ko-kr/사용자설명서/사용자설명서.md deleted file mode 100644 index b51d68d23f..0000000000 --- a/docs/ko-kr/사용자설명서/사용자설명서.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -icon: ic:baseline-article ---- - -# MAA 사용자 설명서 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - -## 기능 소개 - -### 원클릭 이성 사용! (이성 사용) - -- 만약 여러분이 원하는 스테이지가 목록에 없다면 MAA에서 `현재/최근`을 선택한 다음 게임 내에서 수동으로 스테이지를 찾으세요. -스테이지 이름, 정보, 소모 이성이 뜨고 오른쪽 하단에 대리지휘와 시작 버튼이 표시된 화면으로 가세요. -- 해당 화면이 아닌 경우 `현재/이전`은 자동으로 가장 최근에 실행한 스테이지로 이동합니다. -- 또는 작업 `설정` - `이성 사용` - `고급 설정`에서 `스테이지 코드 수동 입력`을 체크해 스테이지 코드를 직접 입력할 수 있습니다. 현재 내비게이션할 수 있는 스테이지는 다음과 같습니다: - - 모든 메인 스토리 스테이지. 표준 또는 어려움 난이도를 전환하려면 스테이지 코드 뒤에 -NORMAL 또는 -HARD를 추가하세요. - - 용문폐 혹은 작전 기록의 5/6스테이지는 `CE-6`/`LS-6`를 입력해야 합니다. MAA는 6 스테이지가 대리 지휘가 불가능할 경우자동으로 5 스테이지로 전환합니다. - - 스킬 북, 구매 증명서, 카본 부품 5스테이지는 `CA-5`/`AP-5`/`SK-5`를 입력해야 합니다. - - 모든 칩 스테이지. 완전한 스테이지 코드를 입력해야 합니다. 예: `PR-A-1`. - - 섬멸 작전. `Annihilation`을 입력해야 합니다. - - 상시 개방 이벤트의 경우 `OF-1`/`OF-F3`/`GT-5`와 같이 입력합니다. - - 현재 개방된 사이드 스토리 이벤트의 세 개의 스테이지입니다. [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json)에서 업데이트를 자동으로 다운로드 한 후 화면 하단에 표시됩니다. - - 재개방된 사이드 스토리 이벤트. `SSReopen-<스테이지 접두사>`를 입력하면 XX-1~XX-9 스테이지를 한 번에 완료할 수 있습니다. 예: `SSReopen-IC`. - -::: details 예시 화면 -![Image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/128385247/c57fc9ed-42be-4df3-8056-64be2e2d4652) -::: - -- `이성 사용`의 일반 설정에있는 이성 회복제 사용 + 순오리지늄 사용과 횟수 제한 및 드롭 제한 세 가지 옵션은 하나만 만족해도 종료가 됩니다. - - - `이성 회복제` 는 특정 횟수의 이성 회족제를 사용해 이성을 회복합니다. (연속으로 이성회복제 사용이 가능합니다) - - `순오리지늄` 은 특정 횟수의 순오리지늄을 사용하며, 이성 회복제가 남아있을 경우 사용되지 않습니다. - - `횟수 제한` 은 선택한 스테이지를 몇번 클리어 할 지 정합니다. (예시: 15번 클리어 후 정지) - - `드롭 제한` 은 특정 재화를 몇개 획득할 지 정합니다. (5개의 장치 획득 후 정지) - -`순오리지늄`은 `이성 회복제` 이후에만 판단하므로 MAA는 이성 회복제가 없는 경우에만 이성을 보충합니다. 그래서 `순오리지늄`을 선택한 경우, `이성 회복제`의 사용 횟수를 보유하고 있는 `이성 회복제`보다 더 많이 설정해야 합니다! - -::: details 예시 -| 이성 회복제 | 순오리지늄 | 횟수 제한 | 드롭 제한 | 결과 | -| :---------: | :--------: | :-------: | :-------: | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| | | | | 보유한 이성을 소모하고 정지합니다. | -| 2 | | | | 현재 이성을 소모한 후, 이성 회복제를 `2`회 소모하고 정지합니다. | -| _999_ | 2 | | | 현재 이성을 소모한 후, 이성 회복제를 소모하고, 순오리지늄을 `2`회 사용 후 정지합니다. | -| | | 2 | | 지정한 스테이지를 `2`회 반복하고 정지합니다. | -| | | | 2 | 특정 재화를 `2`개 획득하면 정지합니다. | -| 2 | | 4 | | 작전을 `4`회 시도하며, 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | -| 2 | | | 4 | 특정 재화를 `4`개 획득하면 정지하며, 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | -| 2 | | 4 | 8 | 작전을 `4`회 시도하며, 작전이 전부 끝나기전에 재화를 `8`개를 획득하면 정지합니다. 이성이 부족하면 최대 `2`개의 이성 회복제를 사용합니다. | -| _999_ | 4 | 8 | 16 | 모든 이성 회복제를 사용하며, `4`개의 순오리지늄을 사용합니다. 단, `8`회의 작전을 끝내면 정지하며, 그 이전에 `16`개의 재화를 획득하면 정지합니다. | -| | 2 | | | `2`개의 순오리지늄을 사용하며, 이성을 전부 소모하면 정지합니다. | -| 2 | 4 | | | `2`개의 이성 회복제를 사용하며, 이후 `4`개의 순오리지늄을 사용합니다. 이성을 전부 소모하면 정지합니다. | -::: - - -- `드롭 제한`과 `스테이지 선택`은 연관되어 있지 않습니다. - - `드롭 제한`은 재료의 개수를 기준으로 작업을 종료하는 스위치일 뿐 재료를 지정한다고 해서 스테이지를 자동으로 설정해주는 것은 아닙니다. -- `대리지휘`를 체크하는 것을 깜빡해 벌어지는 참사가 일어나지 않도록 자동으로 체크해 드립니다~ -- 자동으로 자재 드롭을 인식하고 통계를 내며 [펭귄 물류](https://penguin-stats.cn/) 및 [Yituliu](https://ark.yituliu.cn/)로 자동으로 업로드 합니다. -- 연결이 끊어진 후 또는 새벽 4시에 끊어진 후 자동으로 재연결되어 게임에서 마지막으로 선택한 스테이지를 계속해서 플레이할 수 있습니다. 다음 날로 넘어가려면 마지막 스테이지 선택을 확인하세요. -- 대리 지휘가 실패할 경우 자동으로 작전을 포기하고 메인 화면으로 돌아갑니다. -- 섬멸 작전: - - MAA는 현재 게임에서 전투 시작 페이지로 이동하기 위해 오른쪽 상단의 핀을 사용합니다. 현재 기간의 섬멸이 '전권 위임'으로 설정되어 있으며 'PRTS 섬멸 작전 대리권'을 충분히 가지고 있어야합니다. - - 현재 섬멸 작전에서 400킬을 한 독타들만 MAA가 자동으로 진행합니다. -- 연속 전투 횟수: - - MAA는 현재 사용자가 설정한 횟수만큼 전투를 진행하며 최대 전투 횟수를 자동으로 식별하지 않습니다. - - 설정된 횟수가 많지만, 이성이 부족한 경우 MAA는 직접적으로 `이성 회복제` 또는 `순오리지늄` 작업을 수행하고 전투를 계속 시도합니다. - - `이성 회복제` 또는 `순오리지늄`이 설정되어 있지 않은 경우 MAA는 바로 이성이 부족하다고 판단하고 이성 사용을 중지합니다. `남은 이성`이 설정되어 있으면 MAA는 바로 남은 이성 스테이지를 실행합니다. -- 예비 스테이지: - - 예비 스테이지는 그날 그날의 개방 여부에 따라 선택된 스테이지가 전투되는지 여부를 결정합니다. 즉, 첫 번째 개방된 스테이지를 전투합니다. - 1. 용문폐, 1-7, 작전기록 스테이지 순으로 선택하세요: - - 용문폐, 1-7, 작전기록 스테이지가 모두 열려있는 경우 용문폐 스테이지를 실행하고 1-7/작전기록 스테이지는 실행되지 않습니다. 이때 플레이어가 용문폐 스테이지 대리를 개방하지 않은 경우 작업이 실패합니다 - - 1-7, 작전기록 스테이지가 열려있는 경우 1-7을 실행하고 작전기록 스테이지는 실행되지 않습니다. 이때 플레이어가 1-7 대리를 개방하지 않은 경우 작업이 실패합니다. - 2. 섬멸 작전, 용문폐, 1-7 스테이지를 차례로 선택하면 섬멸을 먼저 시도하고 후속 로직이 이전과 같이 실행됩니다. 섬멸 전투 결과는 다른 예비 스테이지의 필터링 로직에 영향을주지 않습니다. -- 남은 이성: - - 스테이지 개시 시 이성이 부족한 경우, 남은 이성 스테이지로 이동하여 "나머지" 이성을 소모합니다. (예: 1-7) - - 여전히 이성이 부족하면 작업을 중지합니다.(예: 6 이하의 이성) - -### 공개 모집 - -- **툴박스의 공개 모집 인식과는 다른 기능입니다!!** -- 공개 모집은 `즉시 완료 허가증`을 사용하여 자동으로 연속적으로 모집합니다. `공개모집` - `일반 설정`으로 이동하여 자동으로 `즉시 완료 허가증을 자동 사용`을 선택하고 실행 시 최대 모집 횟수를 수정하세요. -- 1, 5, 6성이 나오면 알림이 표시됩니다. -- 공채가 갱신될 때마다 공채 태그 데이터가 자동으로 [펭귄 물류](https://penguin-stats.cn/) 및 [Yituliu](https://ark.yituliu.cn/)에 업로드 됩니다. - -### 기반시설 교대 - -#### 교대 전략 - -- 각 시설 내에서 **최적의 솔루션을 자동으로 계산하고 선택**합니다. 모든 보편적인 기술 및 특수 기술 조합을 지원합니다. -- 작전 기록, 용문폐, 오리지늄 조각, 칩셋을 인식하여 각각 해당하는 오퍼레이터들을 사용합니다. - -#### 기반시설 오퍼레이터 컨디션 임계 값 - -- 각 오퍼레이터들의 남은 컨디션이 임계 값을 넘기지 못하면, 자동으로 그 오퍼레이터를 숙소로 보내 휴식을 취하게 합니다. - -#### 주의사항 - -- 교대 전략은 다중 시설이 아닌 단일 시설 내에서의 최적의 방안을 바탕으로 합니다. 단일 시설 내의 `샤마르-테킬라` 조합, `버메일-씬` 조합 등은 제대로 인식되지만 `로즈몬티스`나 `피누스 실베스트리스` 등의 다중 시설간 조합은 아직 지원되지 않습니다. -- 만약 다중 시설간 조합을 원할 경우, `커스텀 기반시설`을 이용하세요. -- `드론 사용처`가 `무역소-용문폐`로 지정되어 있을 경우, `샤마르`를 인식하고 드론을 아껴둘 것입니다. -- 응접실에서 단 한 종류의 단서가 부족하다면 해당 진영의 오퍼레이터가 선택됩니다. 그렇지 않은 경우 일반적인 오퍼레이터가 선택됩니다. -- 응접실이 꽉 차 있을 때만 단서를 내보낼 것입니다. 최대 3개의 단서가 전달됩니다. `resource/tasks.json`에서 `SelectClue`-`maxTimes` 필드를 수정해 단서의 전달 개수를 조절할 수 있습니다. -- `아이린`이나 다른 오퍼레이터가 당장 업무 중이 아니라는 이유로 숙소로 보내지는 것을 원치 않는다면, `이미 배치된 오퍼레이터를 숙소에 넣지 않기` 옵션을 활성화할 수 있습니다. 단, 컨디션이 0이 아닌 한 어떤 오퍼레이터도 숙소로 들어오지 못하게 되는 문제를 불러올 수도 있습니다. -- 제어 센터의 복잡성으로 인해서, `아미야`, `스와이어`, `켈시`, `레인보우 팀`과 기타 시간당 컨디션 +0.05 오퍼레이터만이 고려됩니다. 미래에 개선될 예정입니다. -- 몇몇 이격 오퍼레이터로 인한 충돌이 발생할 수 있습니다. UI에 오퍼레이터 충돌 경고가 있는지 확인하시고, 경고가 있다면 기반시설의 상태를 수동으로 확인하여 적절하게 배치해 주세요. (예시: 특정 시설이 완전히 비어 있을 수 있음) - -#### 커스텀 기반시설 (테스트) - -- Yituliu의 JSON 생성기를 참고해서 작성하세요. [기반시설 JSON 생성기](https://ark.yituliu.cn/tools/schedule), [기반시설 스키마 문서](../스키마/6.기반시설.md)도 참조하세요. -- MAA 폴더의 `/resource/custom_infrast/`에는 이론적 최대 효율의 작업 몇 개가 내장되어 있습니다. 오퍼레이터 인원 수 및 육성의 요구 사항이 매우 높기 때문에 직접 사용하는 것은 권장하지 않습니다. - -### 크레딧 수급 및 상점 - -- 친구를 자동으로 방문하여 크레딧을 획득합니다. -- 전투를 해 크레딧을 획득합니다 - - MAA는 전투에서 지원 유닛을 사용하여 `파란 불꽃의 마음의 OF-1` 스테이지를 한 번 클리어합니다. 해당 스테이지가 잠금 해제되었는지 확인하세요. - - 스테이지 선택이 `현재/최근`인 경우 도우미 전투를 실행하지 않습니다. - -### 통합전략 (로그라이크) - -- MAA는 기본적으로 최신 테마를 선택하며 `통합전략` - `테마`에서 `테마`를 변경할 수 있습니다. - - 대상 테마를 탐색 창에서 최상단에 고정해야 합니다. (PIN 고정 기능) - - **대상 테마가 아닌 탐험을 미리 종료해야 합니다.** - - MAA가 난이도 선택 화면에서 멈추거나 반복적으로 들어가는 경우 난이도를 수동으로 선택한 후 재시작하세요. (초기에는 난이도 설정 필요) -- 설정에서 분대 및 시작 오퍼레이터(단일) 등을 선택할 수 있습니다. -- 오퍼레이터 및 육성도를 자동으로 인식하고 최적의 오퍼레이터 및 스킬을 자동으로 선택합니다 -- 상점 상품을 인식하여 더 강력한 소장품을 우선하여 구매합니다. -- 네트워크 연결이 끊기거나 새벽 4시에 끊긴 경우 자동으로 재연결하고 임무를 계속합니다. -- 전투 시간이 5분을 초과하면 모든 지상 유닛을 자동으로 퇴각하고 6분을 초과하면 클리어를 포기하여 멈춰있는 시간을 줄입니다. -- 임무에 문제가 발생한 경우 해당 탐색을 포기하고 다시 시도합니다. -- 동일한 위치에서 여러 번 멈추는 경우 Issue를 제기하고 로그 및 스크린샷을 첨부하세요. - -### 계정 전환 - -- 글로벌 서버는 해당이 안됩니다. (CN만 가능) - -### Copilot (자동 전투) - -- [prts.plus](https://prts.plus) 및 [抄作业.com](https://抄作业.com)의 사이트들을 이용해 다운로드/업로드 및 제작할 수 있습니다. - -#### Copilot 기능 사용 - -Copilot은 `일반/이벤트 스테이지` 및 `보안파견` 등을 지원합니다 (위기협약은 안됩니다!) - -- 이 기능을 사용하려면 전투 준비 화면에서 `작전 개시` 버튼이 있는 곳에서 시작해야 합니다. - 그런 다음 MAA의 `자동지휘` 칸에서 `JSON 파일`을 가져오거나 [prts.plus](https://prts.plus)와 같은 사이트에서 코드를 입력하면 됩니다. - - 또한 비디오 인식(α)도 지원됩니다. 비디오 파일을 드래그하여 활성화할 수 있습니다. - 16:9 비율, 720p 이상의 화질, 블랙박스, 에뮬레이터 테두리, 비틀림 형태 화면 조정 등이 없어야 합니다. -- `자동 편성` 기능은 현재 편성을 초기화하고, 작업에 필요한 오퍼레이터를 자동으로 편성합니다. - - `지원 유닛`을 사용하거나, 자동 편성이 불가능할 경우 수동 편성도 가능합니다. - - `맞춤 오퍼레이터 추가`및 `신뢰도가 낮은 오퍼레이터 추가`도 할 수 있습니다. - - `패러독스 시뮬레이션`의 경우 `자동 편성`을 사용하면 안됩니다! 스킬을 수동 선택 후 `시뮬레이션 시작` 버튼이 있는 화면에서 실행하세요. - - `보안 파견`의 경우 자동편성이 불가능합니다! `수동 편성` 해주세요. -- `반복 횟수` 기능이 있지만 `반복 횟수` 기능을 사용할 경우, MAA는 `지원 유닛`을 자동으로 빌리는 기능은 아직 없기에 주의하세요! -- 동일한 지역의 스테이지를 연속적으로 전투하려면, `전투 목록` 기능을 사용할 수 있습니다. - - `전투 목록 아래`의 세 가지 버튼은 왼쪽에서 부터 `폴더 가져오기`, `스테이지 추가`, `스테이지 지우기`입니다. - - 작업을 시작하려면 해당 지역의 지도 화면에서 자동 전투를 시작하세요. 이성이 부족하거나, 3성 클리어를 못한 경우 전투를 정지합니다. - - 전투 목록에 있는 스테이지는 `동일한 지역`에 있어야 합니다. (지도를 좌우로 스크롤하여 이동할 수 있어야 합니다) -- **우수한 Copilot 파일에 반드시 추천을 눌러 제작자를 격려하세요! 큰 도움이 됩니다!** - -![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) - -#### Copilot 파일 작성 - -- [파일 작성기](https://prts.plus/create)를 사용할 수 있고, [전투 스키마 문서](../스키마/3.전투.md)를 참조할 수도 있습니다. -- 좌표를 가져오려면: - - 파일 작성기에서 스테이지를 입력한 후, 왼쪽 하단에 자동으로 확대/축소 가능한 좌표 지도가 표시됩니다. 오퍼레이터 위치를 클릭하여 설정할 수 있습니다. - - 스테이지를 입력하고 JSON을 내보낸 후, 시작 버튼을 누르면 MAA 폴더의 `debug\map`에 좌표 정보가 포함된 지도 스크린샷이 생성됩니다. - - [PRTS.Map](https://map.ark-nights.com/areas)은 `설정`에서 `좌표 표시`를 `MAA`로 변경하고 사용할 수 있습니다 -- 훈련 모드를 지원합니다. -- 파일 설명에는 귀하의 서명(작성자 이름), 참고하는 공략 비디오 링크, 기타 의견 등을 기입하는 것이 좋습니다. -- 파일 제작 등 문제에 대해 토론하고 싶으신 경우 [펭귄 그룹](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G)에 참여하시기 바랍니다. - -### 창고 인식 (테스트) - -- 자동으로 전환되지 않으면 창고 "자원 획득" 화면으로 수동으로 전환한 다음 가장 왼쪽으로 스크롤하여 기능을 시작하세요. -- 현재 [펭귄 물류](https://penguin-stats.cn/planner)、[arkn.lolicon](https://arkntools.app/#/material)、[ark-nights.com](https://ark-nights.com/settings)로 내보낼 수 있습니다. -- 나중에 유용한 기능을 위해 사용될 수도 있습니다. (아마) -- 만약 귀하가 어떤 데이터 사이트의 웹 마스터라면, 저희에게 귀하의 재료 JSON 프로토콜을 적용하는 데 관심이 있으시다면 언제든지 연락주세요~ - -## 설정 안내 - -`설정` 탭 외에도 Windows 버전 MAA에는 `작업 설정`이 있습니다. `한번에 모두 작동`의 `기어`를 클릭하면 다양한 작업 설정을 선택할 수 있습니다. - -### 사용자 정의 연결 - -- 내장된 시뮬레이터 adb를 사용하거나 직접 다운로드하여 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)를 압축 해제할 수 있습니다. -- 소프트웨어 `설정` - `연결 설정`으로 이동하여 adb 파일 경로를 선택하고 adb 주소(예: `127.0.0.1:5555`)를 입력하고 에뮬레이터 유형을 선택하세요. - -#### 포트번호 가져오기 - -- 방법 1: adb 명령을 사용하여 시뮬레이터 포트를 확인합니다. - - 1. **하나**의 에뮬레이터를 시작하고 해당 컴퓨터에 다른 안드로이드 장치가 연결되어 있지 않은지 확인합니다. - 2. adb가 있는 폴더에서 명령 창을 엽니다. - 3. 다음 명령을 실행합니다. - - ```sh - # Windows 명령 프롬프트 - adb devices - # Windows PowerShell - .\adb devices - ``` - - 다음은 예상 출력입니다. - - ```sh - List of devices attached - 127.0.0.1:<포트> device - ``` - - `127.0.0.1:<포트>`를 연결 주소로 사용합니다. `emulator-****`가 출력되면 방법 2를 참조하세요. - -- 방법 2: 이미 설정된 adb 연결을 찾습니다. - - 1. 방법 1을 실행합니다. - 2. `win + S`를 눌러 검색 창을 열고 `리소스 모니터`를 입력하고 엽니다. - 3. `네트워크` 탭으로 전환하여 `리스닝 포트` 열에서 시뮬레이터 프로세스 이름(예: `HD-Player.exe`)을 찾습니다. - 4. 에뮬레이터 프로세스의 모든 `리스닝 포트`를 찾습니다.。 - 5. `TCP 연결`의 원격 포트 열에서 에뮬레이터의 디버그 포트와 일치하는 포트를 찾습니다. - -### 자동으로 다중 시뮬레이터 시작 - -여러 시뮬레이터를 동시에 작동하려면 MAA 폴더를 복사하여 여러 MAA를 사용하고 동일한 adb.exe 및 다른 연결 주소를 사용하여 연결하세요. - -#### 에뮬레이터 exe에 명령을 추가하여 다중 시작 - -1. **하나**의 에뮬레이터를 여러 번 시작하세요. -2. 업 관리자를 열고 해당 시뮬레이터 프로세스를 찾아 상세 정보 탭으로 이동하고 열기를 클릭합니다. `선택한 열`을 마우스 오른쪽 단추로 클릭하여 `명령 행`을 선택하세요. -3. 추가된 `명령 행` 열에서 `...\Bluestacks_nxt\HD-Player.exe`뒤에 있는 내용을 찾으세요. -4. 찾은 내용(예: `--instance Nougat32`)을 `시작 설정` - `추가 명령`에 입력하세요. - -::: tip -작업이 끝난 후 당신이 마우스 오른쪽 단추로 클릭하여 `명령 행` 열을 다시 숨기는 것이 좋습니다. -::: - -::: details 예시 - -```text -다중 시작1: -시뮬레이터 경로: C:\Program Files\BlueStacks_nxt\HD-Player.exe -추가 명령: --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" -``` - -`--cmd launchApp --package` 부분은 시작 후 자동으로 지정된 패키지 응용 프로그램을 실행하는 부분이므로 필요에 따라 변경할 수 있습니다. -::: - -#### 에뮬레이터나 응용 프로그램의 바로 가기를 사용하여 다중 시작 - -1. 여러 관리자를 열고 새로운 에뮬레이터의 바로 가기를 추가합니다. -2. 바로 가기의 경로를 `시작 설정` - `에뮬레이터 경로`에 입력하세요. - -::: tip -`시작 설정` - `추가 명령`을 비워두는 것이 좋습니다. -::: - -::: details 예시 - -```text -다중 시작1: -시뮬레이터 경로: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\다중 시작1.lnk -다중 시작2: -시뮬레이터 경로: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\다중 시작2-명일방주.lnk -``` -::: - -`Start Menu\Programs\BlueStacks` 폴더에 `다중 시작1.lnk`와 `다중 시작2-명일방주.lnk`가 있는지 확인합니다. - -이렇게 하면 동일한 adb.exe를 공유하고 동일한 연결 주소를 사용하여 여러 모의를 제어할 수 있습니다. - -### 시작 전/후 스크립트 - -- v4.13.0 이후에는 시작 전/후 스크립트를 설정할 수 있으며, 작업 전후에 배치 파일을 자동으로 실행할 수 있습니다. -- 배치 파일인 `*.bat` 파일의 경로를 입력해야 합니다. - -## 기타 설명 - -- 메인 화면의 왼쪽에서 작업을 드래그하여 순서를 변경할 수 있습니다. 기반시설 교대 순서도 마찬가지입니다. -- 설정 메뉴와 주요 인터페이스에서의 모든 변경 사항은 일반적으로 자동으로 저장됩니다. '*' 또는 '(한 번만)' 표시가 있는 항목과 마우스 오른쪽 클릭으로 얻은 반만 선택된 스위치는 MAA를 다시 시작한 후에만 재설정됩니다. -- 모든 클릭 동작은 버튼 공간내에서 무작위 위치를 클릭하며 푸아송 분포를 시뮬레이션합니다. (클릭의 중심이 가장 높은 확률을 가지며 중심에서 멀어질수록 클릭 확률이 낮아집니다) -- 하부 알고리즘은 순수 C++로 개발되었으며 다중 캐시 기술이 구현되어 CPU 및 메모리 사용량을 최대한 낮춥니다. -- 소프트웨어는 자동 업데이트를 지원합니다 ✿✿ ヽ(°▽°)ノ ✿ . 공개 개발버전을 사용하는 것이 좋으며 일반적으로 빠르게 업데이트되고 버그가 적습니다 (그런데 MIUI가 뭐에요 (╯‵□′)╯︵┻━┻) -- 새 버전의 자동 다운로드가 실패하면 OTA 압축 파일을 수동으로 다운로드하여 MAA 폴더에 직접 넣으면 자동으로 업데이트됩니다. -- Windows 버전에서는 `config` 폴더의 `gui.json` 파일에 모든 설정이 기록됩니다. 새로운 완전한 패키지를 다운로드한 경우 이 폴더를 새 MAA 폴더로 복사할 수 있습니다. diff --git a/docs/ko-kr/사용자설명서/플랫폼/1.Windows.md b/docs/ko-kr/사용자설명서/플랫폼/1.Windows.md deleted file mode 100644 index f313ded34f..0000000000 --- a/docs/ko-kr/사용자설명서/플랫폼/1.Windows.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -icon: ri:windows-fill ---- - -# Windows 에뮬레이터 지원 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - -::: tip -문제가 발생하면 [FAQ](../FAQ.md)를 먼저 참조하세요. -::: - -아래의 목록은 무작위순이며, 성능순이 아닙니다. - -## ✅ 완벽한 지원 - -### ✅ [Bluestacks-CN 5](https://www.bluestacks.cn/) - -완벽히 지원됩니다. `Settings` - `Engine Settings`에서 `Allow ADB connection`을 켜야 합니다. - -### ✅ [Bluestacks 5](https://www.bluestacks.com/ko/) (권장 👍) - -완벽히 지원됩니다. `Settings` - `Advanced`에서 `Android Debug Bridge`를 켜야 합니다. - -### ✅ [Bluestacks 5 Hyper-V 버전](https://support.bluestacks.com/hc/ko-kr/articles/4415238471053-System-requirements-for-BlueStacks-5-on-Hyper-V-enabled-Windows-10-and-11-) - -지원됩니다. - -- `Settings`-`Advanced`에서 `Android Debug Bridge`를 켜 주세요. -- Bluestack Hyper-V 포트는 수시로 변경됩니다. 간단한 해법을 알려드립니다. - - 1. 에뮬레이터의 데이터 경로에서 `bluestacks.conf` 파일을 찾으세요. (기본값: `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`) - 2. MAA를 최초로 사용하신다면, 실행하실 때 `gui.json` 파일이 생성됩니다. - 3. MAA를 **종료하고 나서**, `gui.json` 파일을 열고, `Bluestacks.Config.Path` 필드를 추가하세요. 값은 `bluestacks.conf`의 절대 경로로 설정합니다. (백슬래시는 `\\`와 같이 이스케이프되어야 합니다). - 예시: (파일이 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf`에 위치해 있음을 가정함) - - ```json - { - "Configurations": { - "Default": { - "Bluestacks.Config.Path":"C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf", - // ... - } - } - } - ``` - - 4. LinkStart! - -- 여러 에뮬레이터를 구동해야 하는 경우 (해당되지 않으면 이 단계는 넘어가주세요), MAA의 키워드를 변경해서 구성 파일을 감지할 수 있습니다. - `Bluestacks.Config.Keyword` 필드를 추가로 입력해주세요 - 예시: - - ```json - "Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", - ``` - -### ✅ [Nox](https://kr.bignox.com/) - -완벽히 지원됩니다. - -### ✅ [Nox Android 9](https://kr.bignox.com/) - -완벽히 지원됩니다. - -### ✅ [Memu](https://www.memuplay.com/ko/) - -지원되지만, 테스트 수가 적으며 알려지지 않은 오류가 있을 수 있습니다. - -### ✅ [Android Virtual Device](https://developer.android.com/studio/run/managing-avds) - -지원됩니다. - -## ⚠️ 부분 지원 - -### ⚠️ [MuMu Player](https://www.mumuglobal.com/kr/) - -지원됩니다. 단, - -- minitouch 또는 maatouch의 효율적인 터치 방식을 사용하려면 adb를 강제 교체해야 합니다. -- MAA가 adb 경로와 주소를 얻기 위해 관리자 권한으로 실행되어야 합니다. (MuMu가 관리자 권한으로 실행되기 때문입니다) -- 관리자 권한으로 실행하고 싶지 않다면 adb 경로와 주소를 직접 입력할 수도 있습니다. -- MAA의 기본 해상도 사용은 권장되지 않습니다. `1280×720`, `1920×1080`, `2560×1440` 등의 일반적인 해상도를 사용해 주세요. -- MuMu는 여러 개를 열어도 하나의 adb 포트를 사용하므로, 여러 개의 클라이언트를 지원하지는 못합니다. - -### ⚠️ [MuMu Player X](https://www.mumuglobal.com/kr/faq/system-requirement-mumu-player-x.html) (가장 부드러움 👍) - -지원됩니다. 단, - -- minitouch 또는 maatouch의 효율적인 터치 방식을 사용하려면 adb를 강제 교체해야 합니다. -- 에뮬레이터를 종료하는 기능을 사용하려면 버전 3.3.7 이상을 사용해야 합니다. -- 에뮬레이터를 종료하는 기능을 사용하려면 MuMu 12 멀티 오프너의 ADB 버튼으로 해당하는 인스턴스의 포트 정보를 확인하여 MAA 설정의 연결 설정에서 포트를 해당하는 포트로 변경해야 합니다. - -### ⚠️ [LDPlayer](https://kr.ldplayer.net/) - -지원됩니다. - -- LDPlayer 9는 9.0.37 버전 이상을, LDPlayer 5는 5.0.44 버전 이상을 권장드립니다. -- minitouch 또는 maatouch의 효율적인 터치 방식을 사용하려면 adb를 강제 교체해야 합니다. - -### ⚠️ [Windows Subsystem for Android](https://learn.microsoft.com/ko-kr/windows/android/wsa/) - -부분적으로 지원됩니다. - -- 수동 연결을 사용해야 합니다. -- WSA 2204 이상 버전의 경우 '일반 모드'를 시도해 보세요. -- WSA 2203 이하 버전의 경우 'WSA 레거시 버전'을 시도해 보세요. -- WSA는 해상도 변경을 지원하지 않으므로, 수동으로 720p 이상의 `16:9` 비율의 해상도가 되도록 창의 크기를 조절해주세요. (16:9 모니터를 사용하고 있다면 `F11`을 눌러 전체화면으로 전환하는 것으로도 가능합니다) -- 에뮬레이터의 창이 활성화된 상태(가장 위에 있는 상태)를 유지하고 다른 안드로이드 앱이 실행되고 있지 않게 해 주세요. 그렇지 않을 경우 게임이 일시정지되거나 인식에 실패할 수 있습니다. -- 가끔은 WSA의 스크린샷이 비어 있어 인식 실패를 유발합니다. WSA 사용은 권장되지 않습니다. - - - - - -## 🚫 미지원 - -### 🚫 [Google Play Games Beta](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer) - -호환되지 않습니다. [소비자 클라이언트](https://developer.android.com/games/playgames/pg-emulator?hl=zh-cn#installing-game-consumer)의 ADB 포트를 사용할 수 없습니다. - -단, KR의 경우 [PlayBridge](https://github.com/ACK72/PlayBridge)를 이용해 사용이 가능하지만, 오류가 있을 수 있습니다! - -### 🚫 Tencent Mobile Game Assistant - -지원되지 않습니다. ADB 포트가 닫혀 있습니다. - -### 🚫 MuMu Mobile Game Assistant - -지원되지 않습니다. ADB 포트가 닫혀 있습니다. \ No newline at end of file diff --git a/docs/ko-kr/스키마/5.통합전략.md b/docs/ko-kr/스키마/5.통합전략.md deleted file mode 100644 index 01e8f4c29e..0000000000 --- a/docs/ko-kr/스키마/5.통합전략.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -icon: ri:game-fill ---- - -# 통합전략 스키마 - -::: warning -해당 문서는 잠재적으로 잘못된 정보를 포함할 수 있습니다! - - -이 문서는 2024년 4월에 작성됐습니다! 오랜 시간이 지났다면 원본 문서를 보는 것을 권장합니다! -::: - -::: tip -주의: JSON 형식은 주석을 지원하지 않으므로 아래의 예시에서 주석은 제거해주시기 바랍니다. -::: - -`resource/roguelike_copilot.json` 파일의 사용법과 각 필드에 대한 설명을 제공하겠습니다. - -## 개요 - -```json -[ - { - "stage_name": "驯兽小屋", // 스테이지 이름, 필수 항목 - "replacement_home": { // 홈 위치를 대체하는 필드, 선택 사항 (기본값은 비어 있음) - "location": [ // 홈을 대체할 위치를 [x ,y] 형식으로 지정해야합니다. - 6, - 4 - ], - "direction": "left" // 권장 방향, 기본값 없음. - // "none / left / right / up / down / 无 / 上 / 下 / 左 / 右" - }, - "blacklist_location": [ // 블랙리스트 위치, 선택 사항 (기본값은 비어 있음) - [ - 0, - 0 - ], - [ - 1, - 1 - ] - ], - "key_kills": [ // 킬 수, 선택 사항 (기본값은 비어 있음) - 15, // 이 값이 비어있지 않으면 오퍼레이터들은 기술을 시전 준비되었을 때가 아닌, 킬 수가 해당 값에 도달했을 때 기술을 사용합니다. - ... // 모든 요소를 처리하면, 오퍼레이터들은 기술을 사용 가능한 상태일 때 시전합니다. - ] - }, - ... -] diff --git a/docs/package.json b/docs/package.json index 9b6af3bf2f..5475486052 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,24 +3,26 @@ "version": "2.0.0", "description": "manual for MaaAssistantArknights", "main": "index.js", + "type": "module", "repository": "https://github.com/MaaAssistantArknights/MaaAssistantArknights", "author": "bakashigure ", "license": "AGPL-3.0", "private": true, "devDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.2", - "@vuepress/plugin-docsearch": "2.0.0-rc.3", - "markdown-it": "^14.0.0", - "markdown-it-anchor": "^8.6.7", + "@vuepress/bundler-vite": "2.0.0-rc.13", + "@vuepress/plugin-docsearch": "2.0.0-rc.36", + "@vuepress/plugin-google-analytics": "2.0.0-rc.34", + "@vuepress/plugin-shiki": "^2.0.0-rc.34", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^9.0.1", "markdownlint-cli": "^0.39.0", - "vue": "^3.4.15", - "vuepress": "2.0.0-rc.2", - "vuepress-theme-hope": "2.0.0-rc.18", - "@vuepress/plugin-google-analytics": "2.0.0-rc.21" + "vue": "^3.4.27", + "vuepress": "2.0.0-rc.13", + "vuepress-theme-hope": "2.0.0-rc.49" }, "scripts": { "dev": "vuepress dev .", "build": "vuepress build .", "clean": "vuepress dev . --clean-cache" } -} \ No newline at end of file +} diff --git a/docs/staticwebapp.config.json b/docs/staticwebapp.config.json new file mode 100644 index 0000000000..9178114102 --- /dev/null +++ b/docs/staticwebapp.config.json @@ -0,0 +1,7 @@ +{ + "responseOverrides": { + "404": { + "rewrite": "/docs/404.html" + } + } +} \ No newline at end of file diff --git a/docs/tsconfig.json b/docs/tsconfig.json index da6c6eb5e5..f7aa40d166 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,5 +1,9 @@ { + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Node" + }, "include": [ ".vuepress/**/*.ts" ] -} \ No newline at end of file +} diff --git a/docs/zh-cn/develop/README.md b/docs/zh-cn/develop/README.md new file mode 100644 index 0000000000..3d4bdea16c --- /dev/null +++ b/docs/zh-cn/develop/README.md @@ -0,0 +1,9 @@ +--- +title: 开发文档 +icon: ph:code-bold +index: false +dir: + order: 2 +--- + + diff --git a/docs/开发文档/开始开发.md b/docs/zh-cn/develop/development.md similarity index 66% rename from docs/开发文档/开始开发.md rename to docs/zh-cn/develop/development.md index 26a3db6a7c..64638b111a 100644 --- a/docs/开发文档/开始开发.md +++ b/docs/zh-cn/develop/development.md @@ -9,7 +9,7 @@ icon: iconoir:developer ### 我不懂编程,只是想改一点点 JSON 文件/文档等,要怎么操作? -欢迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./纯网页端PR教程.md) (纯网页端操作) +欢迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (纯网页端操作 Github.com) ### 我会编程,但没接触过 GitHub/C++/……,要怎么操作? @@ -17,41 +17,43 @@ icon: iconoir:developer 2. 打开 [MAA 主仓库](https://github.com/MaaAssistantArknights/MaaAssistantArknights),点击 `Fork`,继续点击 `Create fork` 3. 克隆你自己仓库下的 dev 分支到本地,并拉取子模块 - ```bash - git clone --recurse-submodules <你的仓库的 git 链接> -b dev - ``` + ```bash + git clone --recurse-submodules <你的仓库的 git 链接> -b dev + ``` - 如果正在使用 Visual Studio 等不附带 `--recurse-submodules` 参数的 Git GUI,则需在克隆后再执行 `git submodule update --init` 以拉取子模块。 + ::: warning + 如果正在使用 Visual Studio 等不附带 `--recurse-submodules` 参数的 Git GUI,则需在克隆后再执行 `git submodule update --init` 以拉取子模块。 + ::: 4. 下载预构建的第三方库 - **需要有 Python 环境,请自行搜索 Python 安装教程** - _(maadeps-download.py 文件在项目根目录)_ + **需要有 Python 环境,请自行搜索 Python 安装教程** + _(maadeps-download.py 文件在项目根目录)_ - ```cmd - python maadeps-download.py - ``` + ```cmd + python maadeps-download.py + ``` 5. 配置编程环境 - - 下载并安装 `Visual Studio 2022 community`, 安装的时候需要选中 `基于c++的桌面开发` 和 `.NET桌面开发` + - 下载并安装 `Visual Studio 2022 community`, 安装的时候需要选中 `基于c++的桌面开发` 和 `.NET桌面开发`。 -6. 双击打开 `MAA.sln` 文件。Visual Studio 会自动加载整个项目。 +6. 双击打开 `MAA.sln` 文件,Visual Studio 会自动加载整个项目。 7. 设置 VS - - VS 上方配置选择 `RelWithDebInfo` `x64` (如果编译 Release 包 或 ARM 平台,请忽略这步) - - 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了) + - VS 上方配置选择 `RelWithDebInfo` `x64` (如果编译 Release 包 或 ARM 平台,请忽略这步) + - 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了) 8. 到这里,你就可以愉快地 ~~瞎 JB 改~~ 发电了 9. 开发过程中,每一定数量,记得提交一个 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` 更新的打扰 10. 完成开发后,推送你修改过的本地分支(以 `dev` 为例)到远程(fork 的仓库) @@ -64,27 +66,27 @@ icon: iconoir:developer 1. 关联 MAA 原仓库 - ```bash - git remote add upstream https://github.com/MaaAssistantArknights/MaaAssistantArknights.git - ``` + ```bash + git remote add upstream https://github.com/MaaAssistantArknights/MaaAssistantArknights.git + ``` 2. 从 MAA 原仓库拉取更新 - ```bash - git fetch upstream - ``` + ```bash + git fetch upstream + ``` 3. 变基(推荐)或者合并修改 - ```bash - git rebase upstream/dev # 变基 - ``` + ```bash + git rebase upstream/dev # 变基 + ``` - 或者 + 或者 - ```bash - git merge # 合并 - ``` + ```bash + git merge # 合并 + ``` 4. 重复上述 7, 8, 9, 10 中的操作 @@ -119,4 +121,4 @@ icon: iconoir:developer [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights) -随后根据 vscode 的提示或 [Linux 教程](./Linux编译教程.md) 配置 GCC 12 和 CMake 工程 +随后根据 vscode 的提示或 [Linux 教程](./linux-tutorial.md) 配置 GCC 12 和 CMake 工程 diff --git a/docs/开发文档/文档编写指南.md b/docs/zh-cn/develop/documentation-guidelines.md similarity index 79% rename from docs/开发文档/文档编写指南.md rename to docs/zh-cn/develop/documentation-guidelines.md index 4d1a285824..628bedcc32 100644 --- a/docs/开发文档/文档编写指南.md +++ b/docs/zh-cn/develop/documentation-guidelines.md @@ -6,11 +6,17 @@ icon: jam:write-f # 文档编写指南 ::: tip -本文档的目的在于指导文档编写者更好的使用主题提供的功能,以此达到更易读的效果 +本文档的目的在于指导文档编写者更好的使用主题提供的功能,以此达到更易读的效果。 ::: 我们的文档基于 [vuepress](https://github.com/vuejs/vuepress) 构建,使用了 [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 主题,你也可以查看[官方文档](https://theme-hope.vuejs.press/zh/)来获取更加详细的说明,这里仅介绍一些常用的功能 +## 本地部署 + +1. 安装 [pnpm](https://pnpm.io/installation),并参考 [Pull Request 流程简述](./development.md#github-pull-request-流程简述)将仓库克隆到本地。 +2. 在 `website` 目录下新建终端,运行 `pnpm i` 部署依赖。 +3. 运行 `pnpm run dev` 进行部署。 + ## 容器 ~~不是 docker 那个容器~~ @@ -64,17 +70,17 @@ icon: jam:write-f 该主题提供了图标支持,你可以在以下地方使用图标: -- 文档标题: 在 frontmatter 中设置文档标题旁边的图标 +- 文档标题: 在 frontmatter 中设置文档标题旁边的图标。 -- 导航栏/侧边栏: 设置在导航栏与侧边栏中显示的图标 +- 导航栏/侧边栏: 设置在导航栏与侧边栏中显示的图标。 -- 文档内容: 在文档中使用图标 +- 文档内容: 在文档中使用图标。 ### 设置文档的图标 -你可以在文档的 [frontmatter](#frontmatter) 中使用 icon 来设置文档的图标 +你可以在文档的 [frontmatter](#frontmatter) 中使用 `icon` 来设置文档的图标。 -这个图标会显示在文档标题的旁边 +这个图标会显示在文档标题的旁边。 ::: details 本文档的 frontmatter 设置 @@ -109,11 +115,11 @@ icon: jam:write-f ### 图标关键字的获取 -本文档使用的图标来自于 [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 文档开头一段用 `---` 包裹起来的内容,其内部使用 yml 语法。通过 Frontmatter,我们可以标识文档的编辑时间,使用的图标,分类,标签等等。 ::: details 示例 @@ -133,6 +139,6 @@ order: 1 各字段含义如下: -- `date` 文档的编辑时间 -- `icon` 文档标题旁边的图标 -- `order` 文档在侧边栏中的排序 +- `date`:文档的编辑时间 +- `icon`:文档标题旁边的图标 +- `order`:文档在侧边栏中的排序 diff --git a/docs/开发文档/IssueBot使用方法.md b/docs/zh-cn/develop/issue-bot-usage.md similarity index 100% rename from docs/开发文档/IssueBot使用方法.md rename to docs/zh-cn/develop/issue-bot-usage.md diff --git a/docs/开发文档/Linux编译教程.md b/docs/zh-cn/develop/linux-tutorial.md similarity index 50% rename from docs/开发文档/Linux编译教程.md rename to docs/zh-cn/develop/linux-tutorial.md index 7fcc0c30b0..98cee9af83 100644 --- a/docs/开发文档/Linux编译教程.md +++ b/docs/zh-cn/develop/linux-tutorial.md @@ -5,7 +5,7 @@ icon: teenyicons:linux-alt-solid # Linux 编译教程 -**本教程需要读者有一定的 Linux 环境配置能力及编程基础!**,若您仅希望直接安装MAA而非自行编译,请阅读[用户手册 - Linux 模拟器与容器](../用户手册/模拟器和设备支持/Linux模拟器与容器)。 +**本教程需要读者有一定的 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)。 @@ -15,54 +15,54 @@ MAA 的构建方法仍在讨论中, 本教程的内容可能过时, 请以 [GitH 1. 下载编译所需的依赖 - - Ubuntu/Debian + - Ubuntu/Debian - ```bash - sudo apt install gcc-12 g++-12 cmake zlib1g-dev - ``` + ```bash + sudo apt install gcc-12 g++-12 cmake zlib1g-dev + ``` 2. 构建第三方库 - 可以选择下载预构建的依赖库或从头进行编译 + 可以选择下载预构建的依赖库或从头进行编译 - - 下载预构建的第三方库 (推荐的) + - 下载预构建的第三方库 (推荐的) - > **Note** - > 包含在相对较新的 Linux 发行版 (Ubuntu 22.04) 中编译的动态库, 如果您系统中的 libstdc++ 版本较老, 可能遇到 ABI 不兼容的问题. + > **Note** + > 包含在相对较新的 Linux 发行版 (Ubuntu 22.04) 中编译的动态库, 如果您系统中的 libstdc++ 版本较老, 可能遇到 ABI 不兼容的问题. - ```bash - python maadeps-download.py - ``` + ```bash + python maadeps-download.py + ``` - 如果您发现上面的方法下载的库由于 ABI 版本等原因无法在您的系统上运行且不希望使用容器等方案, 也可以尝试从头编译 + 如果您发现上面的方法下载的库由于 ABI 版本等原因无法在您的系统上运行且不希望使用容器等方案, 也可以尝试从头编译 - - 自行构建第三方库 (将花费较长时间) + - 自行构建第三方库 (将花费较长时间) - ```bash - git submodule update --init --recursive - cd MaaDeps - python build.py - ``` + ```bash + git submodule update --init --recursive + cd MaaDeps + python build.py + ``` 3. 编译 MAA - ```bash - CC=gcc-12 CXX=g++-12 cmake -B build \ - -DINSTALL_THIRD_LIBS=ON \ - -DINSTALL_RESOURCE=ON \ - -DINSTALL_PYTHON=ON - cmake --build build - ``` + ```bash + CC=gcc-12 CXX=g++-12 cmake -B build \ + -DINSTALL_THIRD_LIBS=ON \ + -DINSTALL_RESOURCE=ON \ + -DINSTALL_PYTHON=ON + cmake --build build + ``` - 来将 MAA 安装到目标位置, 注意 MAA 推荐通过指定 `LD_LIBRARY_PATH` 来运行, 不要使用管理员权限将 MAA 装入 `/usr` + 来将 MAA 安装到目标位置, 注意 MAA 推荐通过指定 `LD_LIBRARY_PATH` 来运行, 不要使用管理员权限将 MAA 装入 `/usr` - ```bash - cmake --install build --prefix - ``` + ```bash + cmake --install build --prefix + ``` ## 集成文档 -[~~或许算不上文档~~](../协议文档/集成文档.md) +[~~或许算不上文档~~](../protocol/integration.md) ### Python diff --git a/docs/开发文档/外服适配教程.md b/docs/zh-cn/develop/overseas-client-adaptation.md similarity index 96% rename from docs/开发文档/外服适配教程.md rename to docs/zh-cn/develop/overseas-client-adaptation.md index 03df335852..2fb87a0b55 100644 --- a/docs/开发文档/外服适配教程.md +++ b/docs/zh-cn/develop/overseas-client-adaptation.md @@ -10,7 +10,7 @@ icon: ri:earth-fill 在开始这个教程之前,请确保你已经: 1. 安装并正确配置了所需软件。在国服或相应客户端的 `readme.md` 中应该会有相关信息,确保所支持的功能可以正常运行。 -2. 阅读了 [任务流程协议](../协议文档/任务流程协议.md),对各个字段的含义和用法有基本了解,并能理解 `@`、`#` 类型任务的含义和用法。 +2. 阅读了 [任务流程协议](../protocol/task-schema.md),对各个字段的含义和用法有基本了解,并能理解 `@`、`#` 类型任务的含义和用法。 3. 了解外服的 `task.json` 和模板图片中未提及的和缺少的内容会使用国服的 `task.json` 和模板图片等内容作为备选。外服的 `task.json` 中的内容会覆盖并重写国服对应任务的相应字段。 4. 具备一定的英语能力,能够阅读英文日志,并能通过日志找出缺失的图片等信息。 5. 推建议按照任务链进行修改。例如,对于 `Award` 任务,根据国服 `task.json` 中 `Award` 任务的 `next` 顺序逐步替换 `模板图片` / `文本` / `修改 roi`,以确保修改后的每一步都能正常运行,或者能够迅速发现错误。这样可以避免因为一次修改修改了太多内容而不清楚程序因为哪一步卡住而不能运行。 @@ -140,4 +140,4 @@ amplified roi: 426, 272, 177, 201 ## 提交你的修改 -请参考 [Github Pull Requst 指南](./开始开发.md#github-pull-request-流程简述) +请参考 [Github Pull Request 指南](./pr-tutorial.md) diff --git a/docs/开发文档/纯网页端PR教程.md b/docs/zh-cn/develop/pr-tutorial.md similarity index 95% rename from docs/开发文档/纯网页端PR教程.md rename to docs/zh-cn/develop/pr-tutorial.md index 9294b7908f..805cf41b58 100644 --- a/docs/开发文档/纯网页端PR教程.md +++ b/docs/zh-cn/develop/pr-tutorial.md @@ -9,7 +9,7 @@ icon: mingcute:git-pull-request-fill ::: warning 本教程中对很多概念进行了简化,为了让更多朋友能实际用起来,甚至有一些很不优雅~~但是简单~~的操作,还有一些不那么正确的解释,还请大佬们轻喷。 -若您有一定的 git 使用经验及编程基础,~~那你还看个~~🔨,可以看稍微进阶一点的教程 [Github Pull Request 流程简述](./开始开发.md#github-pull-request-流程简述) +若您有一定的 git 使用经验及编程基础,~~那你还看个~~🔨,可以看稍微进阶一点的教程 [Github Pull Request 流程简述](./development.md) ::: ## 基本概念及名词解释 @@ -57,11 +57,11 @@ icon: mingcute:git-pull-request-fill 1. 首先进入 MAA 主仓库,fork 一份代码 - ![~ NKHB1CIE8`G(UK@ %3`H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) + ![image](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png) 2. 把 “仅 master 分支” 这个选项去掉,然后点击 Create Fork - ![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) + ![image](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png) 3. 接下来来到了你的个人仓库,可以看到标题是 “你的名字/MaaAssistantArknights”,下面一行小字 forked from MaaAssistantArknights/MaaAssistantArknights (复制自 MAA 主仓库) diff --git a/docs/zh-cn/manual/README.md b/docs/zh-cn/manual/README.md new file mode 100644 index 0000000000..ab244eae3a --- /dev/null +++ b/docs/zh-cn/manual/README.md @@ -0,0 +1,9 @@ +--- +title: 用户手册 +icon: mdi:user +index: false +dir: + order: 1 +--- + + diff --git a/docs/zh-cn/manual/cli/README.md b/docs/zh-cn/manual/cli/README.md new file mode 100644 index 0000000000..14efe9626a --- /dev/null +++ b/docs/zh-cn/manual/cli/README.md @@ -0,0 +1,9 @@ +--- +title: CLI 使用指南 +icon: material-symbols:terminal +index: false +dir: + order: 6 +--- + + diff --git a/docs/用户手册/user_manual_for_cli/cli-config.md b/docs/zh-cn/manual/cli/config.md similarity index 98% rename from docs/用户手册/user_manual_for_cli/cli-config.md rename to docs/zh-cn/manual/cli/config.md index 475e52330a..ee4568ce58 100644 --- a/docs/用户手册/user_manual_for_cli/cli-config.md +++ b/docs/zh-cn/manual/cli/config.md @@ -3,7 +3,7 @@ order: 4 icon: material-symbols:settings --- -# 配置 maa-cli +# 配置 ## 配置目录 @@ -435,9 +435,9 @@ url = "https://github.com/MaaAssistantArknights/MaaResource.git" - MaaCore 配置的 JSON Schema 文件为 [`asst.schema.json`][asst-schema]; - CLI 配置的 JSON Schema 文件为 [`cli.schema.json`][cli-schema]。 -[task-types]: ../../协议文档/集成文档.md#任务类型一览 -[emulator-ports]: ../../用户手册/常见问题.md#模拟器调试端口 -[playcover-doc]: ../../用户手册/模拟器和设备支持/Mac模拟器.md#✅-playcover-原生运行最流畅-🚀 +[task-types]: ../../protocol/integration.md#任务类型一览 +[emulator-ports]: ../../manual/faq.md#模拟器调试端口 +[playcover-doc]: ../../manual/device/macos.md#-playcover原生运行最流畅- [example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples [wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa [schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/ diff --git a/docs/用户手册/user_manual_for_cli/cli-faq.md b/docs/zh-cn/manual/cli/faq.md similarity index 98% rename from docs/用户手册/user_manual_for_cli/cli-faq.md rename to docs/zh-cn/manual/cli/faq.md index 7c2ebf0fe9..22ecd930d9 100644 --- a/docs/用户手册/user_manual_for_cli/cli-faq.md +++ b/docs/zh-cn/manual/cli/faq.md @@ -3,7 +3,7 @@ order: 5 icon: ph:question-fill --- -# maa-cli 常见问题 +# 常见问题 ## 1. 如何在 macOS 上使用 `$HOME/.config/maa` 作为配置文件目录? diff --git a/docs/用户手册/user_manual_for_cli/cli-install.md b/docs/zh-cn/manual/cli/install.md similarity index 99% rename from docs/用户手册/user_manual_for_cli/cli-install.md rename to docs/zh-cn/manual/cli/install.md index 55eb4cf834..d63fc0a58f 100644 --- a/docs/用户手册/user_manual_for_cli/cli-install.md +++ b/docs/zh-cn/manual/cli/install.md @@ -3,7 +3,7 @@ order: 2 icon: material-symbols:download --- -# 安装及编译 maa-cli +# 安装及编译 maa-cli 提供多种方式安装,包括包管理器、预编译二进制文件和通过 `cargo` 自行编译安装。 diff --git a/docs/用户手册/user_manual_for_cli/cli-intro.md b/docs/zh-cn/manual/cli/intro.md similarity index 74% rename from docs/用户手册/user_manual_for_cli/cli-intro.md rename to docs/zh-cn/manual/cli/intro.md index 369a778f06..faea4610e9 100644 --- a/docs/用户手册/user_manual_for_cli/cli-intro.md +++ b/docs/zh-cn/manual/cli/intro.md @@ -3,7 +3,7 @@ order: 1 icon: material-symbols:toc --- -# maa-cli +# 介绍 一个使用 Rust 编写的简单 [MAA][maa-home] 命令行工具。 @@ -13,11 +13,4 @@ icon: material-symbols:toc - 使用 `maa install` 和 `maa update` 安装和更新MaaCore及资源; - 使用 `maa self update` 更新自身。 -## 文档 - -- [安装及编译](cli-install.md) -- [使用](cli-usage.md) -- [配置](cli-config.md) -- [常见问题](cli-faq.md) - [maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights/ diff --git a/docs/用户手册/user_manual_for_cli/cli-usage.md b/docs/zh-cn/manual/cli/usage.md similarity index 98% rename from docs/用户手册/user_manual_for_cli/cli-usage.md rename to docs/zh-cn/manual/cli/usage.md index 6e2338f66e..fc4cffe74c 100644 --- a/docs/用户手册/user_manual_for_cli/cli-usage.md +++ b/docs/zh-cn/manual/cli/usage.md @@ -3,7 +3,7 @@ order: 3 icon: material-symbols:summarize --- -# 使用 maa-cli +# 使用 maa-cli 主要功能是通过调用 MaaCore,自动化完成明日方舟的游戏任务。此外,为了方便使用,maa-cli 还提供了管理 MaaCore 的功能。 @@ -87,7 +87,7 @@ maa-cli 默认会向标准误 (stderr) 输出日志。`--log-file` 选项可以 更多命令的使用方法可以通过 `maa help` 查看,具体命令的使用方法可以 通过 `maa help ` 查看。 -[config-core]: cli-config.md#MaaCore-相关配置 -[custom-task]: cli-config.md#自定义任务 +[config-core]: config.md#MaaCore-相关配置 +[custom-task]: config.md#自定义任务 diff --git a/docs/zh-cn/manual/connection.md b/docs/zh-cn/manual/connection.md new file mode 100644 index 0000000000..5adf24d80a --- /dev/null +++ b/docs/zh-cn/manual/connection.md @@ -0,0 +1,242 @@ +--- +order: 3 +icon: mdi:plug +--- + +# 连接设置 + +## ADB 路径 + +:::info 技术细节 +自动检测使用的是模拟器的 ADB,但有时自动检测会出现问题,此时就需要手动设置。 +`强制替换 ADB` 是下载谷歌提供的 ADB 后再进行替换,如果自己设置谷歌的 ADB 即可一劳永逸。 +::: + +### 使用模拟器提供的 ADB + +前往模拟器安装路径,Windows 可在模拟器运行时在任务管理器中右键进程点击 `打开文件所在的位置`。 + +顶层或下层目录中应该会有一个名字中带有 `adb` 的 exe 文件,可以使用搜索功能,然后选择。 + +:::details 一些例子 +`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe` +::: + +### 使用谷歌提供的 ADB + +[点击下载](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)后解压,然后选择其中的 `adb.exe`。 + +推荐直接解压到 MAA 文件夹下,这样可以直接在 ADB 路径中填写 `.\platform-tools\adb.exe`,也可以随着 MAA 文件夹一起移动。 + +## 连接地址 + +::: tip +运行在本机的模拟器连接地址应该是 `127.0.0.1:<端口号>` 或 `emulator-<四位数字>`。 +::: + +### 获取端口号 + +#### 模拟器相关文档及参考端口 + +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` +- [逍遥](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 12 多开器右上角可查看正在运行的多开端口。 +- Bluestacks 5 模拟器设置内可查看当前的多开端口。 +- _待补充_ + +::: details 备选方案 + +- 方案 1 : 使用 ADB 命令查看模拟器端口 + + 1. 启动**一个**模拟器,并确保没有其他安卓设备连接在此计算机上。 + 2. 在存放有 ADB 可执行文件的文件夹中启动终端。 + 3. 执行以下命令。 + + ```sh + # Windows 命令提示符 + adb devices + # Windows PowerShell + .\adb devices + ``` + + 以下为输出内容的例子: + + ```text + List of devices attached + 127.0.0.1:<端口号> device + emulator-<四位数字> device + ``` + + 使用 `127.0.0.1:<端口>` 或 `emulator-<四位数字>` 作为连接地址。 + +- 方案 2 : 查找已建立的 ADB 连接 + + 1. 执行方案 1。 + 2. 按 `徽标键+S` 打开搜索栏,输入 `资源监视器` 并打开。 + 3. 切换到 `网络` 选项卡,在 `侦听端口` 的名称列中查找模拟器进程名,如 `HD-Player.exe`。 + 4. 记录模拟器进程的所有侦听端口。 + 5. 在 `TCP 连接` 的名称列中查找 `adb.exe`,在远程端口列中与模拟器侦听端口一致的端口即为模拟器调试端口。 + +::: + +### 蓝叠模拟器 Hyper-V 每次启动端口号都不一样 + +在 `连接设置` 中设置 `连接配置` 为 `蓝叠模拟器` ,随后勾选 `自动检测连接` 和 `每次重新检测`。 + +通常情况下这样就可以连接。如果无法连接,可能是存在多个模拟器核心或出现了问题,请阅读下文进行额外设置。 + +#### 指定 `Bluestacks.Config.Keyword` + +::: info 注意 +如果启用了多开功能或安装了多个模拟器核心,则需要进行额外设置来指定使用的模拟器编号 +::: + +在 `.\config\gui.json` 中搜索 `Bluestacks.Config.Keyword` 字段,内容为 `"bst.instance.<模拟器编号>.status.adb_port"`,模拟器编号可在模拟器路径的 `BlueStacks_nxt\Engine` 中看到 + +::: details 示例 +Nougat64 核心: + +```json +"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", +``` + +Pie64_2 核心:(核心名称后的数字代表这是一个多开核心) + +```json +"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", +``` + +::: + +#### 指定 `Bluestacks.Config.Path` + +::: info 注意 +MAA 现在会尝试从注册表中读取 `bluestacks.conf` 的存储位置,当该功能无法工作时,则需要手动指定配置文件路径 +::: + +1. 在蓝叠模拟器的数据目录下找到 `bluestacks.conf` 这个文件 + + - 国际版默认路径为 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` + - 中国内地版默认路径为 `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf` + +2. 如果是第一次使用,请运行一次 MAA,使 MAA 自动生成配置文件。 + +3. **先关闭** MAA,**然后**打开 `gui.json`,找到 `Configurations` 下的当前配置名字段(可在 设置-切换配置 中查看,默认为 `Default`),在其中搜索字段 `Bluestacks.Config.Path`,填入 `bluestacks.conf` 的完整路径。(注意斜杠要用转义 `\\`) + +::: details 示例 +以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 为例 + +```json +{ + "Configurations": { + "Default": { + "Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf" + // 其余配置字段,不要手动输入修改 + } + } +} +``` + +::: + +## 连接配置 + +需选择对应模拟器的配置,若列表中没有则选择通用配置。若通用配置不可用请尝试并选择其他任一可用的配置。 + +具体区别可以阅读[源码](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/4f1ef65a9c217c414f52461e88e9705115b5c338/resource/config.json#L74)。 + +### MuMu 截图增强模式 + +需使用官版 MuMu 12 V3.8.13 及更新版本,并关闭后台保活。方舟专版、国际版等暂不支持。 + +1. `设置` - `连接设置`,勾选 `启用 MuMu 截图增强模式`。 + +2. `MuMu 模拟器路径` 填写 `MuMuPlayer-12.0` 文件夹的路径,如 `C:\Program Files\Netease\MuMuPlayer-12.0`。 + +3. `实例编号` 填写 MuMu 多开器内对应模拟器的序号,如主多开为 `0`。 + +4. `实例屏幕` 填 `0`。 + +#### 关于后台保活 + +推荐关闭,此时实例屏幕始终为 `0`。 + +开启时,MuMu 模拟器标签页的顺序应为实例屏幕的序号,如 `0` 为模拟器桌面,`1` 为明日方舟客户端。 + +针对后台保活的适配非常不完善,总会出现各种各样莫名其妙的问题,非常不建议使用。 + +## 触控模式 + +1. [Minitouch](https://github.com/DeviceFarmer/minitouch):使用 C 编写的 Android 触控事件器,操作 `evdev` 设备,提供 Socket 接口供外部程序触发触控事件和手势。从 Android 10 开始,Minitouch 在 SELinux 为 `Enforcing` 模式时不再可用。[源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up) +2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基于 Java 对 Minitouch 的重新实现,使用安卓原生的 `InputDevice`,并添加了额外特性。高版本 Android 可用性尚待测试。~~帮我们做做测试~~ +3. Adb Input:直接调用 ADB 使用安卓的 `input` 命令进行触控操作,兼容性最强,速度最慢。 + +## ADB Lite + +由 MAA 独立实现的 ADB Client,相较原版 ADB 可以避免不停开启多个 ADB 进程,减少性能损耗,但部分截图方式不可用。 + +推荐启用,但具体优缺点尚待反馈。~~帮我们做做测试 x2~~ + +## 多开 MAA + +::: info +若需要多开模拟器同时操作,可将 MAA 文件夹复制多份,使用 **不同的 MAA**、**同一个 adb.exe**、**不同的连接地址** 来进行连接。 +::: + +### 自动启动多开模拟器 + +以[蓝叠国际版](./device/windows.md)为例,介绍两种自动启动多开模拟器的方式。 + +#### 通过附加命令启动 + +1. 启动**单一**模拟器多开。 +2. 打开任务管理器,找到对应模拟器进程,转到详细信息选项卡,右键列首,点击 `选择列`,勾选 `命令行`。 +3. 在多出来的 `命令行` 列中找到 `...\Bluestacks_nxt\HD-Player.exe"` 后的内容。 +4. 将找到的类似于 `--instance Nougat32` 的内容填写到 `启动设置` - `附加命令` 中。 + +::: note +操作结束后建议重新隐藏 `步骤 2` 中打开的 `命令行` 列以防止卡顿 +::: + +::: details 示例 + +```text +多开1: +模拟器路径: C:\Program Files\BlueStacks_nxt\HD-Player.exe +附加命令: --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" +``` + +其中 `--cmd launchApp --package` 部分为启动后自动运行指定包名应用,可自行更改。 +::: + +#### 通过模拟器的快捷方式启动 + +部分模拟器支持创建应用快捷方式,可直接使用应用的快捷方式直接启动模拟器并打开明日方舟。 + +1. 打开多开管理器,新增对应模拟器的快捷方式。 +2. 将模拟器快捷方式的路径填入 `启动设置` - `模拟器路径` 中 + +::: details 示例 + +```text +多开1: +模拟器路径: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多开1.lnk +多开2: +模拟器路径: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多开2-明日方舟.lnk +``` + +::: + +若使用 `模拟器路径` 进行多开操作,建议将 `启动设置` - `附加命令` 置空。 diff --git a/docs/zh-cn/manual/device/README.md b/docs/zh-cn/manual/device/README.md new file mode 100644 index 0000000000..a5f390d68d --- /dev/null +++ b/docs/zh-cn/manual/device/README.md @@ -0,0 +1,9 @@ +--- +title: 模拟器和设备支持 +icon: mingcute:laptop-fill +index: false +dir: + order: 5 +--- + + diff --git a/docs/用户手册/模拟器和设备支持/Android实体设备.md b/docs/zh-cn/manual/device/android.md similarity index 91% rename from docs/用户手册/模拟器和设备支持/Android实体设备.md rename to docs/zh-cn/manual/device/android.md index 9497a44ac2..7dc7462167 100644 --- a/docs/用户手册/模拟器和设备支持/Android实体设备.md +++ b/docs/zh-cn/manual/device/android.md @@ -6,6 +6,8 @@ icon: mingcute:android-fill # Android 实体设备 ::: 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`,则可跳过 `更改分辨率` 部分。 @@ -17,9 +19,9 @@ icon: mingcute:android-fill 典型的 `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) 并解压。 +1. 下载 [ADB](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 并解压。 2. 打开解压后的文件夹,清空地址栏并输入 `cmd` 后回车。 3. 在弹出的命令提示符窗口中输入 `adb` ,若给出大量英文帮助文本则运行成功。 4. 手机开启 `USB 调试`,每个品牌的手机进入方式可能不同,请善用搜索引擎。厂商可能会提供有关 USB 调试的额外选项,如 MIUI 中的 `USB安装` 和 `USB调试(安全设置)`,请同时开启。 @@ -58,28 +60,28 @@ icon: mingcute:android-fill - 如果上文设备列表内仅有一台设备,则可直接运行以下命令更改/还原分辨率。 ```bash - :: 查看当前分辨率 + # 查看当前分辨率 adb shell wm size - :: 还原默认分辨率 + #还原默认分辨率 adb shell wm size reset - :: 更改分辨率为 720p + # 更改分辨率为 720p adb shell wm size 720x1280 - :: 更改分辨率为 1080p + # 更改分辨率为 1080p adb shell wm size 1080x1920 ``` - 若存在多台设备,则需在 `adb` 和 `shell` 中间添加参数 `-s <目标设备序列号>`,例子如下。 ```bash - :: 查看当前分辨率 + # 查看当前分辨率 adb -s VFNDU1682100xxxx shell wm size - :: 还原默认分辨率 + # 还原默认分辨率 adb -s VFNDU1682100xxxx shell wm size reset - :: 更改分辨率为 720p + # 更改分辨率为 720p adb -s VFNDU1682100xxxx shell wm size 720x1280 - :: 更改分辨率为 1080p + # 更改分辨率为 1080p adb -s VFNDU1682100xxxx shell wm size 1080x1920 ``` @@ -94,20 +96,20 @@ icon: mingcute:android-fill 1. 在 MAA 目录下新建两个文本文件,分别在其中填入以下内容。 ```bash - :: 调整分辨率为 1080p + # 调整分辨率为 1080p 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 ``` @@ -139,7 +141,7 @@ icon: mingcute:android-fill ```bash adb tcpip 5555 - :: 存在多台设备则添加参数 -s 以指定序列号 + # 存在多台设备则添加参数 -s 以指定序列号 ``` 2. 查看设备 IP 地址。 diff --git a/docs/用户手册/模拟器和设备支持/Linux模拟器与容器.md b/docs/zh-cn/manual/device/linux.md similarity index 74% rename from docs/用户手册/模拟器和设备支持/Linux模拟器与容器.md rename to docs/zh-cn/manual/device/linux.md index dcb1a1bda3..64ae190efd 100644 --- a/docs/用户手册/模拟器和设备支持/Linux模拟器与容器.md +++ b/docs/zh-cn/manual/device/linux.md @@ -11,7 +11,7 @@ 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/intro.md)。 ### 使用 Wine @@ -21,7 +21,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。 1. 前往 [.NET 发布页](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)下载并安装 Windows 版 .NET **桌面**运行时。 -3. 下载 Windows 版 MAA,解压后运行 `wine MAA.exe`。 +2. 下载 Windows 版 MAA,解压后运行 `wine MAA.exe`。 ::: info 注意 需要在连接设置中将 ADB 路径设置为 [Windows 版 `adb.exe`](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)。 @@ -35,7 +35,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。 此时通过 Wine 运行 `MAA.exe`,将会加载 Linux 原生动态库。 -::: info 注意 +::: info 注意 使用 Linux 原生 MaaCore 时,需要在连接设置中将 ADB 路径设置为 Linux 原生 ADB。 ::: @@ -47,12 +47,12 @@ MAA WPF GUI 当前可以通过 Wine 运行。 #### 已知问题 -* Wine DirectWrite 强制启用 hinting,并且不将 DPI 传递给 FreeType,导致字体显示效果不佳。 -* 不使用原生桌面通知时,弹出通知会抢占全系统鼠标焦点,导致无法操作其他窗口。可以通过 `winecfg` 启用虚拟桌面模式缓解,或禁用桌面通知。 -* Wine-staging 用户需要关闭 `winecfg` 中的 `隐藏 Wine 版本` 选项,以便 MAA 正确检测 Wine 环境。 -* Wine 的 Light 主题会导致 WPF 中部分文字颜色异常,建议在 `winecfg` 中切换到无主题(Windows 经典主题)。 -* Wine 使用旧式 XEmbed 托盘图标,在 GNOME 下可能无法正常工作。 -* 使用 Linux 原生 MaaCore 时暂不支持自动更新(~~更新程序:我寻思我应该下载个 Windows 版~~) +- Wine DirectWrite 强制启用 hinting,并且不将 DPI 传递给 FreeType,导致字体显示效果不佳。 +- 不使用原生桌面通知时,弹出通知会抢占全系统鼠标焦点,导致无法操作其他窗口。可以通过 `winecfg` 启用虚拟桌面模式缓解,或禁用桌面通知。 +- Wine-staging 用户需要关闭 `winecfg` 中的 `隐藏 Wine 版本` 选项,以便 MAA 正确检测 Wine 环境。 +- Wine 的 Light 主题会导致 WPF 中部分文字颜色异常,建议在 `winecfg` 中切换到无主题(Windows 经典主题)。 +- Wine 使用旧式 XEmbed 托盘图标,在 GNOME 下可能无法正常工作。 +- 使用 Linux 原生 MaaCore 时暂不支持自动更新(~~更新程序:我寻思我应该下载个 Windows 版~~) ### 使用 Python @@ -67,26 +67,26 @@ MAA WPF GUI 当前可以通过 Wine 运行。 ::: tip 预编译的版本包含在相对较新的 Linux 发行版 (Ubuntu 22.04) 中编译的动态库,如果您系统中的 libstdc++ 版本较老,可能遇到 ABI 不兼容的问题 -可以参考 [Linux 编译教程](../../开发文档/Linux编译教程.md) 重新编译或使用容器运行 +可以参考 [Linux 编译教程](../../develop/linux-tutorial.md) 重新编译或使用容器运行 ::: -#### 2. `adb` 配置 +#### 2. ADB 配置 -1. 找到 [`if asst.connect('adb.exe', '127.0.0.1:5554'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48) 一栏 +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` 工具调用 +2. ADB 工具调用 - - 如果模拟器使用 `Android Studio` 的 `avd` ,其自带 `adb` 。可以直接在 `adb.exe` 一栏填写 `adb` 路径,一般在 `$HOME/Android/Sdk/platform-tools/` 里面可以找到,例如: + - 如果模拟器使用 `Android Studio` 的 `avd` ,其自带 ADB 。可以直接在 `adb.exe` 一栏填写 ADB 路径,一般在 `$HOME/Android/Sdk/platform-tools/` 里面可以找到,例如: ```python - if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "模拟器的 adb 地址"): + if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "模拟器的 ADB 地址"): ``` - - 如果使用其他模拟器须先下载 `adb` : `$ sudo apt install adb` 后填写路径或利用 `PATH` 环境变量直接填写 `adb` 即可。 + - 如果使用其他模拟器须先下载 ADB : `$ sudo apt install adb` 后填写路径或利用 `PATH` 环境变量直接填写 `adb` 即可。 -3. 模拟器 `adb` 路径获取 +3. 模拟器 ADB 路径获取 - - 可以直接使用 adb 工具: `$ adb路径 devices` ,例如: + - 可以直接使用 ADB 工具: `$ adb路径 devices` ,例如: ```shell $ /home/foo/Android/Sdk/platform-tools/adb devices @@ -94,7 +94,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。 emulator-5554 device ``` - - 返回的 `emulator-5554` 就是模拟器的 adb 地址,覆盖掉 `127.0.0.1:5555` ,例如: + - 返回的 `emulator-5554` 就是模拟器的 ADB 地址,覆盖掉 `127.0.0.1:5555` ,例如: ```python if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5554"): @@ -104,7 +104,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。 #### 3. 任务配置 -自定义任务: 根据需要参考 [集成文档](../../协议文档/集成文档.md) 对 `sample.py` 的 [`# 任务及参数请参考 docs/集成文档.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏进行修改 +自定义任务: 根据需要参考 [集成文档](../../protocol/integration.md) 对 `sample.py` 的 [`# 任务及参数请参考 docs/integration.md`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏进行修改 ## 模拟器支持 @@ -120,7 +120,7 @@ MAA WPF GUI 当前可以通过 Wine 运行。 高版本安卓自带 x86_64 框架,轻量但是运行明日方舟时易闪退 -暂未严格测试, adb 功能和路径获取没有问题 +暂未严格测试, ADB 功能和路径获取没有问题 ## 容器化安卓的支持 @@ -137,7 +137,7 @@ 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...` 的文本来确认这一点. @@ -145,4 +145,4 @@ waydroid prop set persist.waydroid.height 720 ### ✅ [redroid](https://github.com/remote-android/redroid-doc) -安卓 11 版本的镜像可正常运行游戏, 需要暴露 5555 adb 端口. +安卓 11 版本的镜像可正常运行游戏, 需要暴露 5555 ADB 端口. diff --git a/docs/用户手册/模拟器和设备支持/Mac模拟器.md b/docs/zh-cn/manual/device/macos.md similarity index 86% rename from docs/用户手册/模拟器和设备支持/Mac模拟器.md rename to docs/zh-cn/manual/device/macos.md index 5a401b2c7a..183a9f6261 100644 --- a/docs/用户手册/模拟器和设备支持/Mac模拟器.md +++ b/docs/zh-cn/manual/device/macos.md @@ -5,10 +5,6 @@ icon: basil:apple-solid # Mac 模拟器 -::: tip -遇到问题请先参阅 [常见问题](../常见问题.md) -::: - ## Apple Silicon 芯片 ### ✅ [PlayCover](https://playcover.io)(原生运行最流畅 🚀) @@ -53,9 +49,9 @@ icon: basil:apple-solid ### ✅ [夜神模拟器](https://www.yeshen.com/) -完美支持。目前 mac 上 MAAX 版本还不支持模拟器自动适配,需要在 MAA `设置` - `连接设置` 中使用 `adb` 连接 `127.0.0.1:62001` ,注意端口不是默认的 `5555` ,关于模拟器端口的详细说明参见[模拟器调试端口](../常见问题.md#模拟器调试端口)。 +完美支持。目前 mac 上 MAAX 版本还不支持模拟器自动适配,需要在 MAA `设置` - `连接设置` 中使用 ADB 连接 `127.0.0.1:62001` ,注意端口不是默认的 `5555` ,关于模拟器端口的详细说明参见[模拟器调试端口](../faq.md#模拟器调试端口)。 -补充: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) diff --git a/docs/zh-cn/manual/device/windows.md b/docs/zh-cn/manual/device/windows.md new file mode 100644 index 0000000000..2444bfbb4a --- /dev/null +++ b/docs/zh-cn/manual/device/windows.md @@ -0,0 +1,121 @@ +--- +order: 1 +icon: ri:windows-fill +--- + +# Windows 模拟器 + +以下模拟器排序为随机生成,排名不分先后。 + + + +## ✅ 完美支持 + +
+ +## ⚠️ 部分支持 + +
+ +## 🚫 不支持 + +
diff --git a/docs/zh-cn/manual/faq.md b/docs/zh-cn/manual/faq.md new file mode 100644 index 0000000000..2986a72fa5 --- /dev/null +++ b/docs/zh-cn/manual/faq.md @@ -0,0 +1,125 @@ +--- +order: 4 +icon: ph:question-fill +--- + +# 常见问题 + +::: warning +MAA 在 5.0 版本更新到了 .NET 8,对于最终用户来说,影响如下: + +1. MAA 现在需要 .NET 8 运行库,在启动时会自动提示用户安装。若安装失败,请阅读下文并手动安装。 +2. MAA 不会再被 Windows Defender 误报了。~~为了这碟醋包的饺子~~ +3. .NET 8 不支持 Windows 7/8/8.1 系统[源](https://github.com/dotnet/core/issues/7556),所以 MAA 也同样不再支持,~~即使它现在依旧能正常运行~~。 +4. ~~在 Windows 7 上运行 MAA 时,会出现内存占用异常的问题,请参阅[下文](#net-8-应用在-windows-7-上运行异常的缓解措施-8238)实施缓解措施。Windows 8/8.1 未经测试,若存在相同问题,请顺手发个 Issue 提醒我们补充文档。~~ +5. 经确认,MAA 自 `v5.4.0-beta.1.d037.g98ecb301b` 版本开始不再支持在 Windows 7 系统上运行[源](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9413),原因未知。若发现了问题原因或解决方案,也请发个 Issue 给我们补补知识。 + ::: + +## 软件无法运行/闪退/报错 + +### 下载/安装问题 + +- 完整 MAA 软件压缩包命名格式为 "MAA-`版本`-`平台`-`架构`.zip",其余均为无法单独使用的“零部件”,请仔细阅读。 + 在大部分情况下,您需要使用 x64 架构的 MAA,即您需要下载 `MAA-*-win-x64.zip`,而非 `MAA-*-win-arm64.zip`。 +- 若在某次自动更新后无法使用或缺失功能,可能是自动更新出现了问题, 请尝试重新下载并解压完整包后手动迁移 `config` 文件夹。 + +### 运行库问题 + +此处仅列出官方安装方法,我们无法保证第三方整合包的可靠性。 + +- 请安装 [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) 和 [.NET 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=x86-,.NET%20Desktop%20Runtime,-8.0.6) 并重新启动计算机后再次运行 MAA。 + 推荐使用 Windows 10 或 11 的用户使用 winget 工具进行安装,只需在终端中运行以下命令。 + + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` + +- 若 MAA 在某次更新后无法运行,也有可能是因运行库版本导致的问题,同样可以尝试再次安装或更新运行库。 + +### 系统问题 + +- MAA 不支持 32 位操作系统。 +- 以上运行库安装均需要依赖组件存储服务(CBS、TrustedInstaller/TiWorker、WinSxS)。如果组件存储服务被破坏,将不能正常安装。 + 我们无法提供除重装系统以外的修复建议,请避免使用未标明精简项及精简风险的“精简版”系统,亦或万年前的旧版系统(1809 等)。 + +#### Windows N/KN + +对于 Windows N/KN(欧洲/韩国),还需安装[媒体功能包](https://support.microsoft.com/zh-cn/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。 + +#### Windows 7 + +对于 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) + +1. 打开 `计算机`,右键空白处,点击属性,点击左侧 `高级系统设置`,点击 `环境变量`。 +2. 新建一个系统变量,变量名 `DOTNET_EnableWriteXorExecute`,变量值 `0`。 +3. 重启电脑。 + +我们无法保证将来的版本对 Windows 7 的兼容性,~~都是微软的错~~。+ + +## 连接错误 + +### 确认 ADB 及连接地址正确 + +参阅 [连接设置](./connection.md)。 + +### 关闭现有 ADB 进程 + +关闭 MAA 后查找 `任务管理器` - `详细信息` 中有无名称包含 `adb` 的进程,如有,结束它后重试连接。 + +### 正确使用多个 ADB + +当 ADB 版本不同时,新启动的进程会关闭旧的进程。因此在需要同时运行多个 ADB,如 Android Studio、Alas、手机助手时,请确认它们的版本相同。 + +### 避免游戏加速器 + +部分加速器在启动加速和停止加速之后,都需要重启 MAA、ADB 和模拟器再连接。 + +同时使用 UU 加速器 和 MuMu 12 可以参考[官方文档](https://mumu.163.com/help/20240321/35047_1144608.html)。 + +### 重启电脑 + +重启能解决 97% 的问题。(确信 + +### 换模拟器 + +请参阅 [模拟器和设备支持](./device/)。 + +## 连接正常,但是无操作 + +小部分模拟器自带的 ADB 版本过于老旧,不支持 `Minitouch`、`MaaTouch`。 + +请使用管理员权限打开 MAA,关闭模拟器并重启 MAA 后点击 `MAA 设置` - `连接设置` - `强制替换 ADB`。 + +模拟器更新后可能会重新覆盖 ADB 文件。若更新后问题复现,请再次尝试替换,或使用 [其他 ADB](./connection.md#使用谷歌提供的-adb)。 + +## 连接正常,但是操作卡顿、异常或频繁出错 + +- 若使用了 `异形屏UI适配`,请将其调整为 0。 +- 若正在游玩非国服客户端,请先在 `设置` - `游戏设置` - `客户端类型` 中选择客户端版本。非国服部分功能可能并非完全适配,请参阅对应的外服使用文档。 +- 若正在进行自动肉鸽,请参阅 [自动肉鸽文档](./introduction/integrated-strategy.md),并在 `自动肉鸽` - `肉鸽主题` 中正确选择主题。 +- `Adb Input` 触控模式操作缓慢为正常情况,如需自动战斗等请尝试切换其他模式。 + +### 提示截图用时较长 / 过长 + +- MAA 目前支持 `RawByNc` 、 `RawWithGzip` 、 `Encode` 三种基于 ADB 的截图方式,当执行任务平均截图耗时 >400 / >800 时会输出一次提示信息(单次任务只会输出一次)。 +- `设置 - 连接设置` 中会显示近 30 次截图耗时的 最小/平均/最大值,每 10 次截图刷新。 +- 自动战斗类功能(如自动肉鸽)受截图耗时影响较大。 +- 此项耗时与 MAA 无关,与电脑性能、当前占用或模拟器相关,可尝试清理后台/更换模拟器/升级电脑配置。 + +## 文件下载速度慢 + +[官网](https://maa.plus)会自动选择镜像源,若单次下载慢可以尝试刷新网页重新选择,或使用 [MAA 下载站](https://ota.maa.plus/MaaAssistantArknights/MaaRelease/releases/download/) 下载。 + +我们的小水管带宽较低,且流量有限。虽然搭出来就是给大家用的,但也希望不要滥用,若 Github 或其他镜像站可正常下载,建议优先选择。 + +## 下载到一半提示“登陆”/“鉴权” + +请使用 浏览器 / IDM / FDM 等下载器下载文件,**不要用 ↑↓ 迅雷!** diff --git a/docs/zh-cn/manual/introduction/README.md b/docs/zh-cn/manual/introduction/README.md new file mode 100644 index 0000000000..1756d13e86 --- /dev/null +++ b/docs/zh-cn/manual/introduction/README.md @@ -0,0 +1,9 @@ +--- +title: 功能介绍 +icon: mdi:information-outline +index: false +dir: + order: 2 +--- + + diff --git a/docs/zh-cn/manual/introduction/combat.md b/docs/zh-cn/manual/introduction/combat.md new file mode 100644 index 0000000000..8f5205802e --- /dev/null +++ b/docs/zh-cn/manual/introduction/combat.md @@ -0,0 +1,98 @@ +--- +order: 3 +--- + +# 刷理智 + +## 常规设置 + +- `吃理智药` + `吃源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智。 + + - `吃理智药` 指定补充几次理智(可能一次吃多瓶药)。 + - `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。 + - `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。 + - `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。 + +- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。 +- `吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后,MAA 会将 `吃理智药` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `吃源石` 判断。 + +::: 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 行为_ | + +::: + +### 关卡选择 + +- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡 + 确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。 +- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。 +- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有: + - 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。 + - 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。 + - 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。 + - 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。 + - 剿灭作战。必须输入 `Annihilation`。 + - 别传中的 `OF-1` / `OF-F3` / `GT-5`。 + - 当期 SS 活动 后三关。在自动访问 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。 + - 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。 + +::: details 示例画面 +![示例画面](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/2d466efd-142a-4c28-9b2f-06caa08ef9f4) +::: + +### 剿灭模式 + +- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。 +- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。 +- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。 + +## 高级设置 + +### 备选关卡 + +备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。 + +1. 例子:关卡选择 `龙门币-6/5`,备选选择 `1-7` 和 `经验-6/5`: + - 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` 和 `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错。 + - 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错。 + - 由于 `经验-6/5` 前存在常驻关卡 `1-7`,在这种情况下,MAA 永远也不会前往 `经验-6/5` 战斗。 +2. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。 + +### 剩余理智 + +在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。 + +- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。 +- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。 +- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。 +- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。 + +### 连战次数 + +- MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。 +- 若设置的次数过多但理智不足,MAA 会直接进行 `吃理智药` 或 `吃源石` 操作,并继续尝试连战。 +- 若未设置 `吃理智药` 或 `吃源石`,MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` ,MAA 会直接开始刷 `剩余理智` 关卡。 + +### 掉落识别 + +- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 +- 支持自定义企鹅物流用户 ID。 + +## 异常检测 + +- 支持自动勾选 `代理指挥`。 +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 支持等级提升后继续任务。 +- 代理失败时会放弃本次行动并重新战斗。 diff --git a/docs/zh-cn/manual/introduction/copilot.md b/docs/zh-cn/manual/introduction/copilot.md new file mode 100644 index 0000000000..ebfe030460 --- /dev/null +++ b/docs/zh-cn/manual/introduction/copilot.md @@ -0,0 +1,39 @@ +--- +order: 9 +--- + +# 自动战斗 + +欢迎使用作业分享站 [prts.plus](https://prts.plus),[抄作业.com](https://抄作业.com) 使用及分享作业文件。 + +## 抄作业 + +支持任意 `可编队关卡` 和 `保全派驻` 模式的自动战斗。 + +- 本功能需要在有 `开始行动` 按钮的编队选择界面开始运行。 + 之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件` 或 `填写作业站神秘代码` 即可导入作业。 +- `自动编队` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。 + - 可根据个人需要(例如需要使用 `好友助战` 时)取消 `自动编队`,手动编队后开始。 + - 可根据任务需要为自动编队 `追加自定干员` 和 `补充低信赖干员`。 + - 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。 + - 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。 +- 可设置 `循环次数`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。 +- 可使用 `战斗列表` 功能进行同一区域关卡的自动连续战斗。 + - 战斗列表下方三个按钮从左到右依次为 `批量导入`、`添加关卡`、`清空关卡`。 + `添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡, + - 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。 + - 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。 + - 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。 +- **请务必为优质作业点赞,以提高作业评分并激励作业制作者。** + ![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) + +## 写作业 + +- 请使用 [作业编辑器](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) 共同讨论作业制作等问题。 diff --git a/docs/zh-cn/manual/introduction/credit.md b/docs/zh-cn/manual/introduction/credit.md new file mode 100644 index 0000000000..63dcaeaf58 --- /dev/null +++ b/docs/zh-cn/manual/introduction/credit.md @@ -0,0 +1,16 @@ +--- +order: 5 +--- + +# 获取信用及购物 + +- 会自动访问好友获取信用点,并前往信用交易所购物。 +- 借助战赚信用: + - MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。 + - 关卡选择为 `当前/上次` 时不会执行借助战任务。 + +## 高级设置 + +- 优先购买和黑名单都是关键字匹配,例如填 `碳` 会匹配 `碳` 和 `碳素`。 +- 分隔符的分号既可以使用英文半角 `;` 也可以使用中文全角 `;`。 +- `信用点低于300时停止购买商品` 即使在低于 300 时也会购买优先购买商品。 diff --git a/docs/zh-cn/manual/introduction/infrastructure.md b/docs/zh-cn/manual/introduction/infrastructure.md new file mode 100644 index 0000000000..088532869e --- /dev/null +++ b/docs/zh-cn/manual/introduction/infrastructure.md @@ -0,0 +1,29 @@ +--- +order: 4 +--- + +# 基建换班 + +## 换班策略 + +- 自动计算并选择**单设施内的最优解**,支持所有通用类技能和特殊技能组合。 +- 自动识别经验书、赤金、源石碎片、芯片,分别使用相应的干员组合。 +- 自动按照 `无人机用途` 选择的方式使用无人机。 +- 自动识别心情进度条,将剩余心情百分比小于 `基建工作心情阈值` 的干员进驻宿舍。 + +## 额外说明 + +- 基建换班目前均为单设施最优解,而非跨设施的全局最优解。 + - 可识别并使用的例子:`巫恋+龙舌兰`、`红云+稀音`。 + - 不可识别并使用的例子:`迷迭香体系`、`红松骑士团`。 +- 若 `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。 +- 会客室仅缺一个线索时,会选择对应线索倾向的干员,其余情况选择通用干员。 +- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks.json` 中的 `SelectClue` - `maxTimes` 字段。 +- 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮`、`逻各斯` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。 +- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 +- 可自行选择需要 MAA 处理的设施类别,默认全选。 + +## 自定义基建换班 (Beta) + +- 一图流的大佬们帮忙写了一个 [排班生成器](https://ark.yituliu.cn/tools/schedule),可参考 [基建协议文档](../../protocol/base-scheduling-schema.md) 使用。 +- MAA 文件夹下 `/resource/custom_infrast/` 中内置了几套理论极限效率的作业,可用作参考。由于其对干员及练度的需求极高,不推荐直接使用。 diff --git a/docs/zh-cn/manual/introduction/integrated-strategy.md b/docs/zh-cn/manual/introduction/integrated-strategy.md new file mode 100644 index 0000000000..eb909381b4 --- /dev/null +++ b/docs/zh-cn/manual/introduction/integrated-strategy.md @@ -0,0 +1,29 @@ +--- +order: 7 +--- + +# 自动肉鸽 + +MAA 默认选择最新一期主题,可在 `自动肉鸽` - `肉鸽主题` 中更改目标主题。 + +- 请在游戏内将对应肉鸽主题置顶在终端处,虽然目前也可以自动导航,但不保证长期可用性。 +- 请提前手动结束**非目标主题**的探索。 +- MAA 不会自动选择难度,在未选择难度的情况下会在难度选择界面卡住/反复进出。 +- 设置中可选择分队、开局干员(仅单个干员名)等。 + +## 战斗策略 + +MAA 没有 AI 功能,自动肉鸽中的一切操作都是预设的策略,所有关卡战斗都是调用内置的作业文件。 + +详情请查阅 [肉鸽协议](../../protocol/integrated-strategy-schema.md)。 + +- 支持自动识别干员及练度,并自动选择较优干员及技能。 +- 支持识别商店物品,优先购买更强力的收藏品。 + +## 异常检测 + +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 战斗时长超过 5 分钟会自动撤退所有地面单位,超过 6 分钟会自动放弃当局战斗,避免互相刮痧耗时。 +- 如果任务出现问题,会自动放弃当次探索并重试。 + +但如果多次在同一个位置卡住,请提交 Issue 反馈,并附带日志和截图。 diff --git a/docs/zh-cn/manual/introduction/others.md b/docs/zh-cn/manual/introduction/others.md new file mode 100644 index 0000000000..11cff9132a --- /dev/null +++ b/docs/zh-cn/manual/introduction/others.md @@ -0,0 +1,25 @@ +--- +order: 11 +--- + +# 其他 + +## 启动时自动切换配置 + +MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`。 + +部分符号需要转义,参考 Json。例子:在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`。 + +## 开始前/结束后脚本 + +v4.13.0 后支持设置开始前/结束后脚本,可在任务前后自动执行批处理文件。输入框内需填写批处理文件即 `*.bat` 的绝对或相对路径。 + +## 其他说明 + +- 首页左侧任务可以拖动改变顺序,基建换班设置中设施顺序同理。 +- 主界面和设置中的配置更改通常会自动保存,标有 `*` 号或 `(仅一次)` 的选项,以及通过右键单击复选框得到的半选开关都会在 MAA 重启后重置。 +- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮中心的点击概率最高,距离中心越远,点击概率越低)。 +- 底层算法纯 C++ 开发,并设计了多重缓存技术,最大限度降低 CPU 和内存占用。 +- 软件支持自动更新 ✿✿ ヽ(°▽°)ノ ✿ ,推荐非杠精的同学使用公测版,一般来说更新快且 bug 少。(什么 MIUI (╯‵□′)╯︵┻━┻ +- 如果新版本自动下载失败,可手动下载 OTA 压缩包后直接放到 MAA 目录下,会自动更新的。 +- 在 Windows 版本中,MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。 diff --git a/docs/zh-cn/manual/introduction/reclamation-algorithm.md b/docs/zh-cn/manual/introduction/reclamation-algorithm.md new file mode 100644 index 0000000000..7a26fa0802 --- /dev/null +++ b/docs/zh-cn/manual/introduction/reclamation-algorithm.md @@ -0,0 +1,20 @@ +--- +order: 8 +--- + +# 生息演算 + +目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。 + +## 默认模式 + +1. 需要在生息演算主界面开始任务(导航还没写) +2. 不能在已经有存档的情况下使用(删除现有存档即可) +3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后) + +## 制造刷点数 + +1. 需要在进入生息演算中能看到驻扎地的页面开始 +2. 若未填写道具名称,则默认制造荧光棒 +3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地 +4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修 diff --git a/docs/zh-cn/manual/introduction/recruit.md b/docs/zh-cn/manual/introduction/recruit.md new file mode 100644 index 0000000000..3f3e9cc2f5 --- /dev/null +++ b/docs/zh-cn/manual/introduction/recruit.md @@ -0,0 +1,19 @@ +--- +order: 2 +--- + +# 公开招募 + +自动公招 和 [公招识别](./tools.md#公招识别) 是两个不同的功能! + +## 自动公招 + +支持自动使用 `加急许可`,支持设置单次任务最大招募次数,可配合 `自动使用加急许可` 一次性刷光招募券。 + +当识别到出现 1、5、6 星标签都会弹出通知提示。 + +公招刷新时会自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 + +## 高级设置 + +`自动确认` 即 MAA 自动选择标签并进行招募,`手动确认` 即不进行自动选择与招募。 diff --git a/docs/zh-cn/manual/introduction/rewards.md b/docs/zh-cn/manual/introduction/rewards.md new file mode 100644 index 0000000000..e37096aaf5 --- /dev/null +++ b/docs/zh-cn/manual/introduction/rewards.md @@ -0,0 +1,9 @@ +--- +order: 6 +--- + +# 领取奖励 + +自动领取每日奖励和每周奖励。 + +同时支持其他奖励类型,具体请查看设置。 diff --git a/docs/zh-cn/manual/introduction/startup.md b/docs/zh-cn/manual/introduction/startup.md new file mode 100644 index 0000000000..797a52de83 --- /dev/null +++ b/docs/zh-cn/manual/introduction/startup.md @@ -0,0 +1,21 @@ +--- +order: 1 +--- + +# 开始唤醒 + +自动启动模拟器,自动启动客户端,自动进入游戏。 + +自动启动模拟器需额外设置,详见启动设置,且需勾选连接设置内的 `ADB 连接失败时尝试启动模拟器`。 + +## 账号切换 + +仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。 + +- 例子: + - 官服:`123****8901`,可输入 `123****8901`、`123`、`8901`、`3****8` + - B 服:`张三`,可输入 `张三`、`张`、`三` + +## 连接设置 + +[点我](../connection.md) diff --git a/docs/zh-cn/manual/introduction/tools.md b/docs/zh-cn/manual/introduction/tools.md new file mode 100644 index 0000000000..3d3538ad0f --- /dev/null +++ b/docs/zh-cn/manual/introduction/tools.md @@ -0,0 +1,39 @@ +--- +order: 10 +--- + +# 小工具 + +## 公招识别 + +打开公招标签界面,点击开始识别即可启动。 + +如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。 + +## 干员识别 (Beta) + +可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。 + +## 仓库识别 (Beta) + +支持从首页自动进入仓库。若自动跳转失败,请手动切换到仓库 `养成材料` 界面并**滑动到最左侧**后开始功能。 + +目前支持导出到[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 干员培养表](https://ark-nights.com/settings)。 + +如您是某个数据站的站长,也欢迎联系我们适配贵站的材料 JSON 协议~ + +也许后面可能会用来做一些更实用的功能。(画饼 + +## 视频识别 (Alpha) + +可识别攻略视频,并自动生成作业文件,在自动战斗页面拖入视频文件即可启动。 + +要求 16:9 画幅 720p 及以上画质,无黑边、模拟器边框、异形屏适配等干扰因素。 + +## 牛牛抽卡 + +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** + +[牛牛航空](https://www.bilibili.com/opus/926129394412421126)没报上名?没关系!现在每个人都有自己的牛牛航空!并且在抽卡的过程中还会截图并显示在界面中央! diff --git a/docs/用户手册/新手上路.md b/docs/zh-cn/manual/newbie.md similarity index 57% rename from docs/用户手册/新手上路.md rename to docs/zh-cn/manual/newbie.md index 1b487e2a4d..e32bff10d4 100644 --- a/docs/用户手册/新手上路.md +++ b/docs/zh-cn/manual/newbie.md @@ -1,4 +1,5 @@ --- +order: 1 icon: ri:guide-fill --- @@ -10,38 +11,39 @@ icon: ri:guide-fill 1. 确认系统版本 -MAA 仅支持 Windows 10 / 11,旧版 Windows 请参考[常见问题](常见问题.md)置顶。 + MAA 仅支持 Windows 10 / 11,旧版 Windows 请参阅[常见问题](./faq.md)置顶。 2. 安装运行库 -MAA 需要 VCRedist x64 和 .NET 8,请右键开始按钮打开终端,在终端内粘贴以下命令回车以进行安装。 + MAA 需要 VCRedist x64 和 .NET 8,请右键开始按钮打开终端,在终端内粘贴以下命令回车以进行安装。 -```sh -winget install Microsoft.VCRedist.2015+.x64 -winget install Microsoft.DotNet.DesktopRuntime.8 -``` + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` -更多信息参考[常见问题](常见问题.md#可能性-2--运行库问题)。 + 更多信息参考[常见问题](faq.md#运行库问题)。 3. 下载正确的版本 -[MAA 官网](https://maa.plus/)一般会自动选择正确的版本架构,对于大多数阅读本文的用户来说,应为 Windows x64。 + [MAA 官网](https://maa.plus/)一般会自动选择正确的版本架构,对于大多数阅读本文的用户来说,应为 Windows x64。 4. 正确解压 -确认解压完整,并确保将 MAA 解压到一个独立的文件夹中。请勿将 MAA 解压到如 `C:\`、`C:\Program Files\` 等需要 UAC 权限的路径。 + 确认解压完整,并确保将 MAA 解压到一个独立的文件夹中。请勿将 MAA 解压到如 `C:\`、`C:\Program Files\` 等需要 UAC 权限的路径。 5. 确认模拟器支持 -查阅[模拟器和设备支持](模拟器和设备支持),确认正在使用的模拟器支持情况。 + 查阅[模拟器和设备支持](./device/),确认正在使用的模拟器支持情况。 6. 正确设置模拟器分辨率 -模拟器分辨率应为 `16:9` 比例,最低为 `1280x720`;对于国际服(美服)玩家,唯一支持的分辨率是 `1920x1080`。 +模拟器分辨率应为 `16:9` 比例,最低为 `1280x720`;对于国际服(美服)玩家,必须为 `1920x1080`。 ## 初始配置 -1. 跟随设置指引进行配置,若没有多开等特殊需求,则无需更改连接设置。 +0. 若需要使用自动检测,则运行**一个**模拟器,并确保没有其他安卓设备连接电脑。 + +1. 跟随设置指引进行配置,MAA 会自动检测正在运行的模拟器。若需要多开或自定义连接请参阅[连接设置](./connection.md)。 2. 第一次运行 MAA 时会进行热更新,请在右侧日志处提示重启后关闭 MAA 并重新启动。 diff --git a/docs/zh-cn/protocol/README.md b/docs/zh-cn/protocol/README.md new file mode 100644 index 0000000000..03f3ed9fe6 --- /dev/null +++ b/docs/zh-cn/protocol/README.md @@ -0,0 +1,9 @@ +--- +title: 协议文档 +icon: basil:document-solid +index: false +dir: + order: 3 +--- + + diff --git a/docs/zh-cn/protocol/base-scheduling-schema.md b/docs/zh-cn/protocol/base-scheduling-schema.md new file mode 100644 index 0000000000..9e1dd0a6cc --- /dev/null +++ b/docs/zh-cn/protocol/base-scheduling-schema.md @@ -0,0 +1,142 @@ +--- +order: 6 +icon: material-symbols:view-quilt-rounded +--- + +# 基建排班协议 + +`resource/custom_infrast/*.json` 的使用方法及各字段说明 + +::: tip +请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 +::: + +[可视化排班生成工具](https://ark.yituliu.cn/tools/schedule) + +## 完整字段一览 + +```json +{ + "title": "小号的换班方案", // 作业名,可选 + "description": "哈哈哈哈", // 作业描述,可选 + "plans": [ + { + "name": "早班", // 计划名,可选 + "description": "lol", // 计划描述,可选 + "description_post": "", // 计划执行完时显示的描述,可选 + "period": [ + // 换班时间段,可选 + // 若当前时间在该区间内,则自动选择该计划(整个 json 文件中可能包含多个计划) + // 如果该字段不存在,则每次换班结束后,自动切换为下一个计划 + // core 不处理该字段,若您使用接口集成 maa,请自行实现该逻辑 + [ + "22:00", // 要求格式 hh:mm,目前只是简单的比较数字大小,如果要跨天请仿照该示例中写法 + "23:59" + ], + [ + "00:00", + "06:00" + ] + ], + "duration": 360, // 工作持续时长(分钟),保留字段,目前无作用。以后可能到时间了弹窗提醒该换班了,或者直接自动换了 + "Fiammetta": { + // “菲亚梅塔” 为哪位干员使用,可选,不填写则不使用 + "enable": true, // 是否使用“菲亚梅塔”,可选,默认 true + "target": "巫恋", // 目标干员,使用 OCR 进行,需要传入对应客户端语言的干员名 + "order": "pre" // 在整个换班前使用,还是换完班才用,可选,取值范围 "pre" / "post",默认 "pre" + }, + "drones": { + // 无人机使用,可选,不填写则不使用无人机 + "enable": true, // 是否使用无人机,可选,默认 true + "room": "trading", // 为哪个类型房间使用,取值范围 "trading" / "manufacture" + "index": 1, // 为第几个该类型房间使用,对应左边 tab 栏序号,取值范围 [1, 5] + "rule": "all", // 使用规则,保留字段,目前无作用。以后可能拿来支持插拔等操作 + "order": "pre" // 在换干员前使用还是在换完才用,可选,取值范围 "pre" / "post",默认 "pre" + }, + "groups": [ + // 对于 "control" / "manufacture" / "trading",可以设置干员编组 + { + "name": "古+银", + "operators": ["古米", "银灰", "梅"] + }, + { + "name": "清流", + "operators": ["清流", "森蚺", "温蒂"] + } + ], + "rooms": { + // 房间信息,必选 + // 取值范围 "control" / "manufacture" / "trading" / "power" / "meeting" / "hire" / "dormitory" / "processing" + // 缺少某个则该设施使用默认算法进行换班。 + // 若想不对某个房间换班请使用 skip 字段,或直接在软件 任务设置 - 基建换班 - 常规设置 中取消改设施的勾选 + "control": [ + { + "operators": [ + "夕", // 使用 OCR 进行,需要传入对应客户端语言的干员名 + "令", + "凯尔希", + "阿米娅", + "玛恩纳" + ] + } + ], + "manufacture": [ + { + "operators": ["芬", "稀音", "克洛丝"], + "sort": false // 是否排序(按照上面 operators 的顺序),可选,默认 false + // 例子:当使用稀音、帕拉斯、巫恋、等干员且 "sort": false,干员顺序可能会被打乱,导致暖机效果丢失。 + // 使用 "sort": true,可以避免这个问题 + }, + { + "skip": true // 是否跳过当前房间(数组序号对应),可选,默认 false + // 若为 true,其他字段均可为空。仅跳过换干员操作,其他如使用无人机、线索交流等仍会正常进行 + }, + { + "operators": ["Castle-3"], + "autofill": true, // 使用原先的算法,自动填充剩下的位置,可选,默认 false + // 若 operators 为空,则该房间完整的使用原先算法进行排班 + // 若 operators 不为空,将仅考虑单干员效率,而不考虑整个组合效率 + // 注意可能和后面自定义的干员产生冲突,比如把后面需要的干员拿到这里用了,请谨慎使用,或将 autofill 的房间顺序放到最后 + "product": "Battle Record" // 当前制造产物,可选。 + // 若识别到当前设施与作业中设置的产物不符合,界面会弹个红色字样提示,以后可能有更多作用 + // 取值范围: "Battle Record" | "Pure Gold" | "Dualchip" | "Originium Shard" | "LMD" | "Orundum" + }, + { + "operators": ["多萝西"], + "candidates": [ + // 备选干员,可选。这里面的有谁用谁,选满为止 + // 与 autofill=true 不兼容,即该数组不为空时,autofill 需要为 false + "星源", + "白面鸮", + "赫默" + ] + }, + { + "use_operator_groups": true, // 设置为 true 以使用 groups 中的干员编组,默认为 false + "operators": [ + // 启用后, operators 中的名字将被解释为编组名 + "古+银", // 将按照心情阈值以及设置顺序选择编组 + "清流" // 如 古+银 组中有干员心情低于阈值,将使用 清流 组 + ] + } + ], + "meeting": [ + { + "autofill": true // 这个房间内整个 autofill + } + ] + } + }, + { + "name": "晚班" + // ... + } + ] +} +``` + +## 举例 + +[243 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json) + +[153 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json) diff --git a/docs/协议文档/回调消息协议.md b/docs/zh-cn/protocol/callback-schema.md similarity index 99% rename from docs/协议文档/回调消息协议.md rename to docs/zh-cn/protocol/callback-schema.md index 53085fdc2a..e36e6dfa4b 100644 --- a/docs/协议文档/回调消息协议.md +++ b/docs/zh-cn/protocol/callback-schema.md @@ -553,7 +553,7 @@ Todo }, "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}" } - // 目前只支持 ArkPlanner 和 Lolicon 的格式,以后可能会兼容更多网站 + // 目前只支持 ArkPlanner 和 Lolicon (Arkntools) 的格式,以后可能会兼容更多网站 ``` - `OperBox` diff --git a/docs/zh-cn/protocol/copilot-schema.md b/docs/zh-cn/protocol/copilot-schema.md new file mode 100644 index 0000000000..04197ed37e --- /dev/null +++ b/docs/zh-cn/protocol/copilot-schema.md @@ -0,0 +1,160 @@ +--- +order: 3 +icon: ph:sword-bold +--- + +# 战斗流程协议 + +`resource/copilot/*.json` 的使用方法及各字段说明 + +::: tip +请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 +::: + +## 完整字段一览 + +```json +{ + "stage_name": "暴君", // 关卡名,必选。关卡中文名、code、stageId、levelId等,只要能保证唯一均可。 + "opers": [ + // 指定干员 + { + "name": "重岳", // 干员名 + "skill": 3, // 技能序号。可选,默认为 1,取值范围 [1, 3] + "skill_usage": 2, // 技能用法。可选,默认为 0 + // 0 - 不自动使用(依赖 "actions" 字段) + // 1 - 好了就用,有多少次用多少次(例如干员 棘刺 3 技能、桃金娘 1 技能等) + // 2 - 使用 X 次(例如干员 山 2 技能用 1 次、重岳 3 技能用 5 次,通过 "skill_times" 字段设置) + // 3 - 自动判断使用时机(画饼.jpg) + // 如果是全自动的技能,填 0 + "skill_times": 5, // 技能使用次数。可选,默认为 1 + "requirements": { + // 练度要求。保留接口,暂未实现。可选,默认为空 + "elite": 2, // 精英化等级。可选,默认为 0, 不要求精英化等级 + "level": 90, // 干员等级。可选,默认为 0 + "skill_level": 10, // 技能等级。可选,默认为 0 + "module": 1, // 模组编号。可选,默认为 0 + "potentiality": 1 // 潜能要求。可选,默认为 0 + } + } + ], + "groups": [ + { + "name": "任意正常群奶", // 群组名,必选 + // 自己随便取名字,与下面 deploy 中的 name 对应起来就行 + "opers": [ + // 干员任选其一,无序,会优先选练度高的,用法同上述 opers 字段 + { + "name": "夜莺", + "skill": 3, + "skill_usage": 2 // 若是指定时刻,不同的干员技能 cd 可能不同,请留意 + }, + { + "name": "白面鸮", + "skill": 2, + "skill_usage": 2 + } + ] + } + ], + "actions": [ + // 战斗中的操作。有序,执行完前一个才会去执行下一个。必选 + { + "type": "部署", // 操作类型,可选,默认为 "Deploy" + // "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera" + // "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" + // 中英文皆可,效果相同 + // 若为 "部署", 当费用不够时,会一直等待到费用够(除非 timeout) + // 若为 "技能", 当技能 cd 没转好时,一直等待到技能 cd 好(除非 timeout) + // "二倍速" 是可切换的,即使用一次变成二倍速,再次使用又变回一倍速 + // "子弹时间" 即点击任意干员后的 1/5 速度,再进行任意 action 会恢复正常速度 + // "name" 或 "location" 必填一项,即点哪个干员进入子弹时间,战场上的干员或待部署区的干员均可(会自动判断) + // 若下一个动作是 "技能" / "撤退",需要填与下一个动作相同的 "name" 或 "location" + // 若下一个动作是 "部署",随便填谁(但最好不要填待部署的那个人,头像被点了会影响识别) + // "打印" 界面不显示这条步骤,仅用于输出 doc 里的内容(用来做字幕之类的) + // "摆完挂机" 仅使用 "好了就用" 的技能,其他什么都不做,直到战斗结束 + // "移动镜头" 用于 “引航者试炼” 模式,还需要填写 distance 字段 + // 目前下面四个条件是且的关系,即 && + "kills": 0, // 击杀数条件,如果没达到就一直等待。可选,默认为 0,直接执行 + "costs": 50, // 费用条件,如果没达到就一直等待。可选,默认为 0,直接执行 + // 费用受潜能等影响,可能并不完全正确,仅适合对时间轴要求不严格的战斗。 + // 否则请使用下面的 cost_changes + // 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用 + "cost_changes": 5, // 费用变化量条件,如果没达到就一直等待。可选,默认为 0,直接执行 + // 注意是从开始执行本 actions 开始计算的(即前一个 action 结束时的费用作为基准) + // 支持负数,即费用变少了(例如“孑”等吸费干员使得费用变少了) + // 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用 + "cooling": 2, // CD 中干员数量条件,如果没达到就一直等待。可选,默认为 -1,不识别 + // TODO: 其他条件 + // TODO: "condition_type": 0, // 执行条件间的关系,可选,默认为 0 + // // 0 - 且; 1 - 或 + "name": "棘刺", // 干员名 或 群组名, type 为 "部署" 时必选,为 "技能" | "撤退" 时可选 + "location": [ + 5, + 5 + ], // 部署干员的位置。 + // type 为 "部署" 时必选。 + // type 为 "技能" | "撤退" 时可选, + // "技能":仅推荐场地上自动的装置等,不填写 name,并使用 location 开启技能。正常部署的干员推荐使用 name 开启技能 + // 撤退":仅推荐有多个同名召唤物时,不填写 name, 并使用 location 进行撤退。正常部署的干员推荐 name 进行撤退 + "direction": "左", // 部署干员的干员朝向。 type 为 "部署" 时必选 + // "Left" | "Right" | "Up" | "Down" | "None" + // "左" | "右" | "上" | "下" | "无" + // 中英文皆可,效果相同 + "skill_usage": 1, // 修改技能用法。当 type 为 "技能用法" 时必选 + // 举例:刚下淘金娘需要她帮忙打几个怪,不能自动开技能,中后期平稳了需要她自动开技能 + // 则可以在对应时刻设置为 1 + "skill_times": 5, // 技能使用次数。可选,默认为 1 + "pre_delay": 0, // 前置延时。可选,默认为 0, 单位毫秒 + "post_delay": 0, // 后置延时。可选,默认为 0, 单位毫秒 + // "timeout": 999999999, // 保留字段,暂未实现。 + // 超时时间。当 type 为 "部署" | "技能" 时可选。默认 INT_MAX, 单位毫秒 + // 等待超时则放弃当前动作, 转而执行下一个动作 + "distance": [ + 4.5, + 0 + ], // type 为 "移动镜头" 时必选 + // [ x 移动格子数,y 移动格子数 ],可为小数 + // 注意 "移动镜头" 时是识别不到正在站场中的,需要用 sleep 完整覆盖整个移动动画 + "doc": "下棘刺了!", // 描述,可选。会显示在界面上,没有实际作用 + "doc_color": "orange" // 描述文字的颜色,可选,默认灰色。会显示在界面上,没有实际作用。 + }, + // 举例 1 + { + "name": "任意正常群奶", + "location": [ + 5, + 6 + ], + "direction": "右" + }, + // 举例 2 + { + "name": "史尔特尔", + "location": [ + 4, + 5 + ], + "direction": "左", + "doc": "你史尔特尔奶奶来啦!", + "doc_color": "red" + }, + // 举例 3 + { + "type": "二倍速" + } + ], + "minimum_required": "v4.0", // 最低要求 maa 版本号,必选。保留字段,暂未实现 + "doc": { + // 描述,可选。 + "title": "低练度高成功率作业", + "title_color": "dark", + "details": "对练度要求很低balabala……", // 建议在这里写上你的名字!(作者名)、参考的视频攻略链接等 + "details_color": "dark" + } +} +``` + +## 举例 + +[OF-1](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/OF-1_credit_fight.json) diff --git a/docs/协议文档/肉鸽辅助协议.md b/docs/zh-cn/protocol/integrated-strategy-schema.md similarity index 58% rename from docs/协议文档/肉鸽辅助协议.md rename to docs/zh-cn/protocol/integrated-strategy-schema.md index 27c2d44abb..edb31a7c14 100644 --- a/docs/协议文档/肉鸽辅助协议.md +++ b/docs/zh-cn/protocol/integrated-strategy-schema.md @@ -40,9 +40,10 @@ icon: ri:game-fill ### 干员分类 -按照你的游戏理解将干员分成不同的 **_groups_** (群组,相关概念参考 [战斗流程协议](./战斗流程协议.md)) +按照你的游戏理解将干员分成不同的 **_groups_** (群组,相关概念参考 [战斗流程协议](./copilot-schema.md)) ::: info 注意 + 1. 同一 group 内的干员和召唤物必须部署方式一致(即同为近战或者同为高台) 2. 允许同一干员或者召唤物根据用法不同,被分类至不同的 group @@ -97,9 +98,8 @@ icon: ri:game-fill | **_地面远程_** | 地面长手,可以在盾后输出 | 教官、领主 | 帕拉斯、棘刺、银灰 | | **_炮灰_** | 吸收炮弹、再部署 | 特种、召唤物 | M3、红、桃金娘、预备干员 | | **_高台预备_** | 有一定输出能力 | | 梓兰、预备干员 | - -3. 需要特殊操作的群组 +2. 需要特殊操作的群组 除了上面那些比较笼统的分组,我们有时候需要对一些干员或者干员种类进行一些定制的精细化操作,比如 | 分组 | 包括干员 | 主要特点 | @@ -164,56 +164,56 @@ icon: ri:game-fill 3. 群组内干员各个字段的意思和脚本相关的逻辑 -```json -{ - "theme": "Phantom", - "priority": [ - "name": "地面阻挡", // 群组名(这里是地面阻挡组) - "doc": "标准线为1档(清杂能力或者站场能力比山强)>山>2档(阻挡>2,可自回)>斑点,站场能力小于斑点放到单切或者炮灰组", - // 带“doc”字段均为json内备注文档,对程序运行没有影响 - "opers": [ // 该包括哪些干员,有序,代表部署优先度 - { - "name": "百炼嘉维尔", // 干员名称(这里是百嘉,在组内第1位,表示需要部署地面阻挡组的时候,首先检测是不是百嘉) - "skill": 3, // 使用几技能(这里举例使用3技能) - "skill_usage": 2, // 技能使用模式,参考3-3战斗流程协议,不填或者1为自动放,2为只放x次(x通过"skill_times"字段设置),3暂时不支持 - "skill_times": 2, // 技能使用次数,默认为1,在"skill_usage"字段为2时生效 - "alternate_skill": 2, // 当没有指定技能时使用的备选技能,一般是6星干员未精二且精二后使用3技能时才需要指定(这里指没有3技能时使用2技能) - "alternate_skill_usage": 1 // 备选技能的技能使用模式(该字段尚未实现) - "alternate_skill_times": 1 // 备选技能的技能使用次数(该字段尚未实现) - "recruit_priority": 900, // 招募优先级,数字越大优先级越高,900以上属于看到必招,400以下招募优先级比一些关键干员精二优先度还低 - // 临时招募的干员优先度自动+600 - "promote_priority": 600, // 进阶优先级,数字越大优先级越高,900以上属于有希望就精二,400以下招募优先级低于招募普通三星干员 - // 小技巧:当你将招募优先度压低或者不写,拉高一些精二优先度,实际上就是在拉高临时招募到这些干员的精二优先度 - "is_key": true, // true为key(关键)干员,false或省略为非key干员。在阵容完备检测未通过时,仅招募key干员与0希望干员,保存希望。 - "is_start": true, // true为开局选择干员,false或省略为非开局干员。在队伍中没有start干员时,仅招募start干员与0希望干员,用户填写的干员会强制未start干员 - "auto_retreat": 0, // 部署几秒后自动撤退,整数,大于 0 时生效,主要用于特种干员和投锋,由于肉鸽一般是2倍速,推荐设置为技能持续时间/2 - "promote_priority_when_team_full": 850, - "recruit_priority_offsets": [ // 按当前阵容调控招募优先级 - { - "groups": [ // 需要哪些组满足条件 - "凯尔希", - "地面阻挡", - "棘刺" - ], - "is_less": false, // 条件是大于还是小于, false或者省略是大于, true是小于 - "threshold": 2, // 满足条件的数量 - "offset": -300 // 满足后对招募优先级的调整 - // (这里表示当 凯尔希, 地面阻挡, 棘刺 这三个群组中有2名以上干员时, 百炼嘉维尔的招募优先级减300) - } - ] - }, - ... - ], - ], - "team_complete_condition": [ - ... - ] -} -``` + ```json + { + "theme": "Phantom", + "priority": [ + "name": "地面阻挡", // 群组名(这里是地面阻挡组) + "doc": "标准线为1档(清杂能力或者站场能力比山强)>山>2档(阻挡>2,可自回)>斑点,站场能力小于斑点放到单切或者炮灰组", + // 带“doc”字段均为json内备注文档,对程序运行没有影响 + "opers": [ // 该包括哪些干员,有序,代表部署优先度 + { + "name": "百炼嘉维尔", // 干员名称(这里是百嘉,在组内第1位,表示需要部署地面阻挡组的时候,首先检测是不是百嘉) + "skill": 3, // 使用几技能(这里举例使用3技能) + "skill_usage": 2, // 技能使用模式,参考3-3战斗流程协议,不填或者1为自动放,2为只放x次(x通过"skill_times"字段设置),3暂时不支持 + "skill_times": 2, // 技能使用次数,默认为1,在"skill_usage"字段为2时生效 + "alternate_skill": 2, // 当没有指定技能时使用的备选技能,一般是6星干员未精二且精二后使用3技能时才需要指定(这里指没有3技能时使用2技能) + "alternate_skill_usage": 1 // 备选技能的技能使用模式(该字段尚未实现) + "alternate_skill_times": 1 // 备选技能的技能使用次数(该字段尚未实现) + "recruit_priority": 900, // 招募优先级,数字越大优先级越高,900以上属于看到必招,400以下招募优先级比一些关键干员精二优先度还低 + // 临时招募的干员优先度自动+600 + "promote_priority": 600, // 进阶优先级,数字越大优先级越高,900以上属于有希望就精二,400以下招募优先级低于招募普通三星干员 + // 小技巧:当你将招募优先度压低或者不写,拉高一些精二优先度,实际上就是在拉高临时招募到这些干员的精二优先度 + "is_key": true, // true为key(关键)干员,false或省略为非key干员。在阵容完备检测未通过时,仅招募key干员与0希望干员,保存希望。 + "is_start": true, // true为开局选择干员,false或省略为非开局干员。在队伍中没有start干员时,仅招募start干员与0希望干员,用户填写的干员会强制未start干员 + "auto_retreat": 0, // 部署几秒后自动撤退,整数,大于 0 时生效,主要用于特种干员和投锋,由于肉鸽一般是2倍速,推荐设置为技能持续时间/2 + "promote_priority_when_team_full": 850, + "recruit_priority_offsets": [ // 按当前阵容调控招募优先级 + { + "groups": [ // 需要哪些组满足条件 + "凯尔希", + "地面阻挡", + "棘刺" + ], + "is_less": false, // 条件是大于还是小于, false或者省略是大于, true是小于 + "threshold": 2, // 满足条件的数量 + "offset": -300 // 满足后对招募优先级的调整 + // (这里表示当 凯尔希, 地面阻挡, 棘刺 这三个群组中有2名以上干员时, 百炼嘉维尔的招募优先级减300) + } + ] + }, + ... + ], + ], + "team_complete_condition": [ + ... + ] + } + ``` -3. 按照你的理解新增群组和干员 +4. 按照你的理解新增群组和干员 - 新增群组后,你可以从已有的群组中复制干员过来,参考大佬们已有的评分,在此基础上修改 + 新增群组后,你可以从已有的群组中复制干员过来,参考大佬们已有的评分,在此基础上修改 ## 肉鸽第二步——战斗逻辑 @@ -223,85 +223,85 @@ icon: ri:game-fill 1. 根据地图上格子类型进行基本的战斗操作 - - MAA 会根据地图上的格子是蓝门还是红门,是高台还是地面,能不能被部署来进行基本的战斗操作 + - MAA 会根据地图上的格子是蓝门还是红门,是高台还是地面,能不能被部署来进行基本的战斗操作 - - MAA 仅根据地图名称或者编号决定使用哪份作业,不会判断地图的**普通**、**紧急**、**路网**、**密文板使用**等情况 - - MAA 不会判断**作战中地图上无法确定的格子的情况**,比如`驯兽小屋`的祭坛位置,`从众效应`是从左边还是从右边出怪 + - MAA 仅根据地图名称或者编号决定使用哪份作业,不会判断地图的**普通**、**紧急**、**路网**、**密文板使用**等情况 + - MAA 不会判断**作战中地图上无法确定的格子的情况**,比如`驯兽小屋`的祭坛位置,`从众效应`是从左边还是从右边出怪 - 所以在后面,你需要尽量设计一套能够应付一个地图名**所有不同情况**(上面提到的几种情况)的战斗逻辑,小心被大家挂到 issue 上说这张图操作高血压哦(笑) + 所以在后面,你需要尽量设计一套能够应付一个地图名**所有不同情况**(上面提到的几种情况)的战斗逻辑,小心被大家挂到 issue 上说这张图操作高血压哦(笑) 2. MAA 的基本作战策略--堵蓝门 - 1. 地面干员会优先部署在蓝门的格子上(为什么是格子上,请往下看)或者周围,方向朝向红门(自动计算), + 1. 地面干员会优先部署在蓝门的格子上(为什么是格子上,请往下看)或者周围,方向朝向红门(自动计算), - 2. 优先部署地面,然后部署治疗干员和高台干员,一圈一圈的由蓝门向四周部署, + 2. 优先部署地面,然后部署治疗干员和高台干员,一圈一圈的由蓝门向四周部署, - 3. 会不停的按照上面的逻辑部署可以部署的东西(干员、召唤物、支援物品等等) + 3. 会不停的按照上面的逻辑部署可以部署的东西(干员、召唤物、支援物品等等) ### 优化基本战斗策略 1. 蓝门替代方案 - 仅仅把干员堆在蓝门门口显然不太聪明,有些关卡有格子是一夫当关万夫莫开,防守在这里显然效率很高, + 仅仅把干员堆在蓝门门口显然不太聪明,有些关卡有格子是一夫当关万夫莫开,防守在这里显然效率很高, - 或者有些关卡有多个蓝门,MAA 不知道哪个蓝门对应哪个红门,也会胡乱部署, + 或者有些关卡有多个蓝门,MAA 不知道哪个蓝门对应哪个红门,也会胡乱部署, - 这个时候你需要打开 [地图 Wiki](https://map.ark-nights.com/areas?coord_override=MAA) 一边对着地图一边在脑海里指挥作战了 + 这个时候你需要打开 [地图 Wiki](https://map.ark-nights.com/areas?coord_override=MAA) 一边对着地图一边在脑海里指挥作战了 - 首先在`设置`里将`坐标展示`切换为`MAA` + 首先在`设置`里将`坐标展示`切换为`MAA` - 然后根据你的经验寻找需要优先防守的点的坐标和朝向,写入到 json 的`"replacement_home"`里面 + 然后根据你的经验寻找需要优先防守的点的坐标和朝向,写入到 json 的`"replacement_home"`里面 ```json - { - "stage_name": "蓄水池", // 关卡名 - "replacement_home": [ // 重要防守点(蓝门替代点),至少需要填写1个 - { - "location": [ // 格子坐标,从地图wiki获得 - 6, - 4 - ], - "direction_Doc1": "优先朝向,但并不代表绝对是这个方向(算法自行判断)", - "direction_Doc2": "不填默认 none,即没有推荐方向,完全由算法自行判断", - "direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右", - "direction": "left" // (这里表示将干员优先部署到坐标6,4的格子朝左) - } - ], + { + "stage_name": "蓄水池", // 关卡名 + "replacement_home": [ // 重要防守点(蓝门替代点),至少需要填写1个 + { + "location": [ // 格子坐标,从地图wiki获得 + 6, + 4 + ], + "direction_Doc1": "优先朝向,但并不代表绝对是这个方向(算法自行判断)", + "direction_Doc2": "不填默认 none,即没有推荐方向,完全由算法自行判断", + "direction_Doc3": "none / left / right / up / down / 无 / 上 / 下 / 左 / 右", + "direction": "left" // (这里表示将干员优先部署到坐标6,4的格子朝左) + } + ], ``` 2. 部署格子黑名单 - 有优先防守的点就有优先不部署干员的点,比如大火球经过的位置,boss 脚底下,一些不好输出的位置, + 有优先防守的点就有优先不部署干员的点,比如大火球经过的位置,boss 脚底下,一些不好输出的位置, - 这个时候我们引入了`"blacklist_location"`将不想让他部署干员的格子加到黑名单里 + 这个时候我们引入了`"blacklist_location"`将不想让他部署干员的格子加到黑名单里 - ::: info 注意 - 这里加入的格子,就算在后面的部署策略里面写进去的话,也是没法部署的 - ::: + ::: info 注意 + 这里加入的格子,就算在后面的部署策略里面写进去的话,也是没法部署的 + ::: - ```json - ... - "blacklist_location_Doc": "这里是用法举例,不是说蓄水池这个图需要 ban 这两个点", - "blacklist_location": [ // 禁止程序进行部署的位置 - [ - 0, - 0 - ], - [ - 1, - 1 - ] - ], - ``` + ```json + ... + "blacklist_location_Doc": "这里是用法举例,不是说蓄水池这个图需要 ban 这两个点", + "blacklist_location": [ // 禁止程序进行部署的位置 + [ + 0, + 0 + ], + [ + 1, + 1 + ] + ], + ``` 3. 其他地图策略 - 比如水月肉鸽中如果蓝门进怪了是不是要用骰子,缓解堆怪压力 + 比如水月肉鸽中如果蓝门进怪了是不是要用骰子,缓解堆怪压力 - ```json - "not_use_dice_Doc": "蓝门干员撤退时是否需要用骰子,不写默认false", - "not_use_dice": false, - ``` + ```json + "not_use_dice_Doc": "蓝门干员撤退时是否需要用骰子,不写默认false", + "not_use_dice": false, + ``` ### 还是高血压?是时候展现你真正的技术了——定制作战策略! @@ -313,114 +313,118 @@ icon: ri:game-fill 1. 使用各个群组部署干员 - ```json - "deploy_plan": [ // 部署逻辑,按从上到下、从左到右的顺序进行检索,并尝试部署找到的第一个干员,如果没有就跳过 - { - "groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋" ],//这一步从这些群组中寻找干员 - "location": [ 6, 4 ], //遍历百嘉群组、基石群组、地面C群组等等群组 - "direction": "left" //将找到的第一个干员部署到6,4这个坐标上并朝向左边 - }, //没找到就进行下一个部署操作 - { - "groups": [ "召唤" ], - "location": [ 6, 3 ], - "direction": "left" - }, - { - "groups": [ "单奶", "群奶" ], - "location": [ 6, 2 ], - "direction": "down" - } - ] - ``` + ```json + "deploy_plan": [ // 部署逻辑,按从上到下、从左到右的顺序进行检索,并尝试部署找到的第一个干员,如果没有就跳过 + { + "groups": [ "百嘉", "基石", "地面C", "号角", "挡人先锋" ],//这一步从这些群组中寻找干员 + "location": [ 6, 4 ], //遍历百嘉群组、基石群组、地面C群组等等群组 + "direction": "left" //将找到的第一个干员部署到6,4这个坐标上并朝向左边 + }, //没找到就进行下一个部署操作 + { + "groups": [ "召唤" ], + "location": [ 6, 3 ], + "direction": "left" + }, + { + "groups": [ "单奶", "群奶" ], + "location": [ 6, 2 ], + "direction": "down" + } + ] + ``` - ::: info 注意 - MAA 会将所有部署指令扁平化后,执行最优先级部署操作 - 例:在[6,4]部署[ "百嘉", "基石", "地面 C"],在[6,3]部署[ "基石", "地面 C"],那么 MAA 会将部署指令扁平化成附带坐标的[ "百嘉", "基石", "地面 C","基石", "地面 C"] - 如果在战斗中[6,4]位置的"百嘉"组干员倒下,手里有有可部署的“基石”组干员,会优先布置到[6,4]而不是[6,3] - ::: + ::: info 注意 + MAA 会将所有部署指令扁平化后,执行最优先级部署操作 + 例:在[6,4]部署[ "百嘉", "基石", "地面 C"],在[6,3]部署[ "基石", "地面 C"],那么 MAA 会将部署指令扁平化成附带坐标的[ "百嘉", "基石", "地面 C","基石", "地面 C"] + 如果在战斗中[6,4]位置的"百嘉"组干员倒下,手里有有可部署的“基石”组干员,会优先布置到[6,4]而不是[6,3] + ::: 2. 在某个时间点部署干员 - ::: tip - 适用于某些单切干员或者需要炮灰的使用场景 - ::: - ```json - "deploy_plan": [ - { - "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], - "location": [ 5, 3 ], - "direction": "left", - "condition": [ 0, 3 ] // 该操作仅在击杀数为0-3时进行 - }, - { - "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], - "location": [ 5, 3 ], - "direction": "left", - "condition": [ 6, 10 ] - }, - ... - ] - ``` + ::: tip + 适用于某些单切干员或者需要炮灰的使用场景 + ::: + + ```json + "deploy_plan": [ + { + "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], + "location": [ 5, 3 ], + "direction": "left", + "condition": [ 0, 3 ] // 该操作仅在击杀数为0-3时进行 + }, + { + "groups": [ "异德", "刺客", "挡人先锋", "其他地面" ], + "location": [ 5, 3 ], + "direction": "left", + "condition": [ 6, 10 ] + }, + ... + ] + ``` + 3. 在某个时间点撤退干员 - ::: tip - 有时候炮灰过强站住场或者需要部署位腾挪阵容怎么办,撤退! - ::: - ```json + ::: tip + 有时候炮灰过强站住场或者需要部署位腾挪阵容怎么办,撤退! + ::: + + ```json "retreat_plan": [ // 在特定时间点撤退目标 - { - "location": [ 4, 1 ], - "condition": [ 7, 8 ] // 在击杀数为7-8时,撤去位置[4,1]的干员,没有就跳过 - } - ] - ``` + { + "location": [ 4, 1 ], + "condition": [ 7, 8 ] // 在击杀数为7-8时,撤去位置[4,1]的干员,没有就跳过 + } + ] + ``` + 4. 在某个时间点释放技能(to do) 5. 一些其他的字段(不推荐使用) - ```json - "role_order_Doc": "干员类型部署顺序,未写出部分以近卫,先锋,医疗,重装,狙击,术士,辅助,特种,召唤物的顺序补全,输入英文", - "role_order": [ // 不推荐使用,请配置deploy_plan字段 - "warrior", - "pioneer", - "medic", - "tank", - "sniper", - "caster", - "support", - "special", - "drone" - ], - "force_air_defense_when_deploy_blocking_num_Doc": "场上有10000个阻挡单位时就开始强制部署总共1个对空单位(填不填写均不影响正常部署逻辑),在此期间不禁止部署医疗单位(不写默认false)", - "force_air_defense_when_deploy_blocking_num": { // 不推荐使用,请配置deploy_plan字段 - "melee_num": 10000, - "air_defense_num": 1, - "ban_medic": false - }, - "force_deploy_direction_Doc": "这些点对某些职业强制部署方向", - "force_deploy_direction": [ // 不推荐使用,请配置deploy_plan字段 - { - "location": [ - 1, - 1 - ], - "role_Doc": "填入的职业适用强制方向", - "role": [ - "warrior", - "pioneer" - ], - "direction": "up" - }, - { - "location": [ - 3, - 1 - ], - "role": [ - "sniper" - ], - "direction": "left" - } - ], - ``` + ```json + "role_order_Doc": "干员类型部署顺序,未写出部分以近卫,先锋,医疗,重装,狙击,术士,辅助,特种,召唤物的顺序补全,输入英文", + "role_order": [ // 不推荐使用,请配置deploy_plan字段 + "warrior", + "pioneer", + "medic", + "tank", + "sniper", + "caster", + "support", + "special", + "drone" + ], + "force_air_defense_when_deploy_blocking_num_Doc": "场上有10000个阻挡单位时就开始强制部署总共1个对空单位(填不填写均不影响正常部署逻辑),在此期间不禁止部署医疗单位(不写默认false)", + "force_air_defense_when_deploy_blocking_num": { // 不推荐使用,请配置deploy_plan字段 + "melee_num": 10000, + "air_defense_num": 1, + "ban_medic": false + }, + "force_deploy_direction_Doc": "这些点对某些职业强制部署方向", + "force_deploy_direction": [ // 不推荐使用,请配置deploy_plan字段 + { + "location": [ + 1, + 1 + ], + "role_Doc": "填入的职业适用强制方向", + "role": [ + "warrior", + "pioneer" + ], + "direction": "up" + }, + { + "location": [ + 3, + 1 + ], + "role": [ + "sniper" + ], + "direction": "left" + } + ], + ``` ### 对某个干员打法有特殊理解?——精细化操作特定干员 @@ -462,7 +466,7 @@ OCR 识别不期而遇事件,但是选项是操作固定的位置 "name": "低地市集", //不期而遇事件名称 "option_num": 3, //总共有几个选项(这里是3) "choose": 3, //优先选择第几个选项(这里优先选第三个),如果选不到就选跑路选项(基本上是最后一个) - "choice_require": [ //选择选项的要求(暂时不影响程序运行,只做适用情况的标注方便修改) + "choices": [ //选择选项的要求(暂时不影响程序运行,只做适用情况的标注方便修改) { "name": "选择碎草药", //选项的名字 "ChaosLevel": { //抗干扰/灯火等级 @@ -600,3 +604,5 @@ OCR 识别不期而遇事件,但是选项是操作固定的位置 ### 技能关闭 对弹药类干员有用 + + diff --git a/docs/协议文档/集成文档.md b/docs/zh-cn/protocol/integration.md similarity index 89% rename from docs/协议文档/集成文档.md rename to docs/zh-cn/protocol/integration.md index 87f871eca3..111c1b64f0 100644 --- a/docs/协议文档/集成文档.md +++ b/docs/zh-cn/protocol/integration.md @@ -22,17 +22,17 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha #### 返回值 - `AsstTaskId` - 若添加成功,返回该任务 ID, 可用于后续设置任务参数; - 若添加失败,返回 0 + 若添加成功,返回该任务 ID, 可用于后续设置任务参数; + 若添加失败,返回 0 #### 参数说明 - `AsstHandle handle` - 实例句柄 + 实例句柄 - `const char* type` - 任务类型 + 任务类型 - `const char* params` - 任务参数,json string + 任务参数,json string ##### 任务类型一览 @@ -54,7 +54,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `CloseDown` - 关闭游戏 + 关闭游戏 ```json // 对应的任务参数 @@ -64,7 +64,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Fight` - 刷理智 + 刷理智 ```json // 对应的任务参数 @@ -79,6 +79,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha "expiring_medicine": int, // 最大使用 48 小时内过期理智药数量,可选,默认 0 "stone": int, // 最大吃石头数量,可选,默认 0 "times": int, // 指定次数,可选,默认无穷大 + "series": int, // 连战次数,可选,1~6 "drops": { // 指定掉落数量,可选,默认不指定 "30011": int, // key - item_id, value 数量. key 可参考 resource/item_index.json 文件 "30062": int // 是或的关系 @@ -96,7 +97,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha } ``` -另支持少部分资源关卡名请参考[集成示例](..\tools\AutoLocalization\example\zh-cn.xaml#L260) +另支持少部分资源关卡名请参考[集成示例](..\..\..\tools\AutoLocalization\example\zh-cn.xaml#L260) - `Recruit` 公开招募 @@ -143,14 +144,14 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Infrast` - 基建换班 + 基建换班 ```json { "enable": bool, // 是否启用本任务,可选,默认为 true "mode": int, // 换班工作模式,可选,默认 0 // 0 - 默认换班模式,单设施最优解 - // 10000 - 自定义换班模式,读取用户配置,可参考 协议文档/基建排班协议.md + // 10000 - 自定义换班模式,读取用户配置,可参考 protocol/base-scheduling-schema.md "facility": [ // 要换班的设施(有序),必选。不支持运行中设置 string, // 设施名,"Mfg" | "Trade" | "Power" | "Control" | "Reception" | "Office" | "Dorm" @@ -173,8 +174,8 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Mall` - 领取信用及商店购物。 - 会先有序的按 `buy_first` 购买一遍,再从左到右并避开 `blacklist` 购买第二遍,在信用溢出时则会无视黑名单从左到右购买第三遍直到不再溢出 + 领取信用及商店购物。 + 会先有序的按 `buy_first` 购买一遍,再从左到右并避开 `blacklist` 购买第二遍,在信用溢出时则会无视黑名单从左到右购买第三遍直到不再溢出 ```json // 对应的任务参数 @@ -196,7 +197,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Award` - 领取各种奖励 + 领取各种奖励 ```json // 对应的任务参数 @@ -212,7 +213,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Roguelike` - 无限刷肉鸽 + 无限刷肉鸽 ```json { @@ -245,7 +246,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `Copilot` - 自动抄作业 + 自动抄作业 ```json { @@ -255,10 +256,10 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha } ``` -作业 JSON 请参考 [战斗流程协议](./战斗流程协议.md) +作业 JSON 请参考 [战斗流程协议](./copilot-schema.md) - `SSSCopilot` - 自动抄保全作业 + 自动抄保全作业 ```json { @@ -268,10 +269,10 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha } ``` -保全作业 JSON 请参考 [保全派驻协议](./保全派驻协议.md) +保全作业 JSON 请参考 [保全派驻协议](./sss-schema.md) - `Depot` - 仓库识别 + 仓库识别 ```json // 对应的任务参数 @@ -281,7 +282,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `OperBox` - 干员 box 识别 + 干员 box 识别 ```json // 对应的任务参数 @@ -291,7 +292,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `ReclamationAlgorithm` - 生息演算 + 生息演算 ```json { @@ -299,14 +300,17 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha "theme": int, // 主题,可选项。默认为 1 // 0 - *沙中之火* // 1 - *沙洲遗闻* - "mode": int // 模式,可选项。默认 0 (仅主题 *沙中之火* 支持) + "mode": int, // 模式,可选项。默认为 0 // 0 - 刷分与建造点,进入战斗直接退出 - // 1 - 刷赤金,联络员买水后基地锻造 + // 1 - 沙中之火:刷赤金,联络员买水后基地锻造; + // 沙洲遗闻:自动制造物品并读档刷货币 + "product": string // 自动制造的物品,可选项,默认为荧光棒 + // 建议填写子串 } ``` - `Custom` - 自定义任务 + 自定义任务 ```json { @@ -320,7 +324,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha ``` - `SingleStep` - 单步任务(目前仅支持战斗) + 单步任务(目前仅支持战斗) ```json { @@ -330,7 +334,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha // "stage" 设置关卡名,需要 "details": { "stage": "xxxx" } // "start" 开始作战,无 details // "action": 单步作战操作,details 需为作战协议中的单个 action, - // 例如:"details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 协议文档/战斗流程协议.md + // 例如:"details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 protocol/copilot-schema.md "details": { ... } @@ -362,17 +366,17 @@ bool ASSTAPI AsstSetTaskParams(AsstHandle handle, AsstTaskId id, const char* par #### 返回值 - `bool` - 返回是否设置成功 + 返回是否设置成功 #### 参数说明 - `AsstHandle handle` - 实例句柄 + 实例句柄 - `AsstTaskId task` - 任务 ID, `AsstAppendTask` 接口的返回值 + 任务 ID, `AsstAppendTask` 接口的返回值 - `const char* params` - 任务参数,json string,与 `AsstAppendTask` 接口相同。 - 未标注“不支持运行中设置”的字段都支持实时修改;否则若当前任务正在运行,会忽略对应的字段 + 任务参数,json string,与 `AsstAppendTask` 接口相同。 + 未标注“不支持运行中设置”的字段都支持实时修改;否则若当前任务正在运行,会忽略对应的字段 ### `AsstSetStaticOption` @@ -389,14 +393,14 @@ bool ASSTAPI AsstSetStaticOption(AsstStaticOptionKey key, const char* value); #### 返回值 - `bool` - 返回是否设置成功 + 返回是否设置成功 #### 参数说明 - `AsstStaticOptionKey key` - 键 + 键 - `const char* value` - 值 + 值 ##### 键值一览 @@ -417,20 +421,20 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, #### 返回值 - `bool` - 返回是否设置成功 + 返回是否设置成功 #### 参数说明 - `AsstHandle handle` - 实例句柄 + 实例句柄 - `AsstInstanceOptionKey key` - 键 + 键 - `const char* value` - 值 + 值 ##### 键值一览 -```json +```cpp enum InstanceOptionKey { Invalid = 0, diff --git a/docs/协议文档/远程控制协议.md b/docs/zh-cn/protocol/remote-control-schema.md similarity index 99% rename from docs/协议文档/远程控制协议.md rename to docs/zh-cn/protocol/remote-control-schema.md index dfdf817759..20ae0eed1b 100644 --- a/docs/协议文档/远程控制协议.md +++ b/docs/zh-cn/protocol/remote-control-schema.md @@ -88,7 +88,7 @@ MAA 会以 1 秒的间隔持续轮询这个端点,尝试获取他要执行的 - Settings-[SettingsName] 型的任务的 type 的可选值为 Settings-ConnectionAddress, Settings-Stage1 - Settings 系列任务仍然是要按顺序执行的,并不会在收到任务的时候立刻执行,而是排在上一个任务的后面 - 多个立即执行的任务也会按下发顺序执行,只不过这些任务的执行速度都很快,通常来说,并不需要关注他们的顺序。 - ::: +::: ## 汇报任务端点 @@ -117,9 +117,9 @@ MAA 会以 1 秒的间隔持续轮询这个端点,尝试获取他要执行的 A 开发者想要用自己的 QQBot 控制 MAA,于是他开发了一个后端,暴露在公网上,提供两个端点: -``` +```text https://myqqbot.com/maa/getTask -https://myqqbot.com/maa/reportStatus。 +https://myqqbot.com/maa/reportStatus ``` 为了让用户用的更方便,他的 getTask 接口不管接收什么参数都默认返回 200OK 和一个空的 tasks 列表。 @@ -144,9 +144,9 @@ MAA 在任务执行完后,会调用 reportStatus 汇报结果,Bot 在收到 B 开发者写了一个网站,设想通过网站批量管理 MAA,因此,他拥有一套自己的用户管理系统。但是它的后端在公网上,提供两个可匿名访问的端点: -``` +```text https://mywebsite.com/maa/getTask -https://mywebsite.com/maa/reportStatus。 +https://mywebsite.com/maa/reportStatus ``` 在网站上,有个连接 MAA 实例的界面,会展示一个 B 开发者称之为 `用户密钥` 的随机字符串,并有一个填入设备 id 的文本框。 diff --git a/docs/zh-cn/protocol/sss-schema.md b/docs/zh-cn/protocol/sss-schema.md new file mode 100644 index 0000000000..e1c3800d49 --- /dev/null +++ b/docs/zh-cn/protocol/sss-schema.md @@ -0,0 +1,159 @@ +--- +order: 7 +icon: game-icons:prisoner +--- + +# 保全派驻协议 + +::: tip +请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 +::: + +```json +{ + "type": "SSS", // 协议类型,SSS 表示保全派驻,必选,不可修改 + "stage_name": "多索雷斯在建地块", // 保全派驻地图名,必选 + "minimum_required": "v4.9.0", // 最低要求 maa 版本号,必选 + "doc": { + // 描述,可选 + "title": "低练度高成功率作业", + "title_color": "dark", + "details": "对练度要求很低balabala……", // 建议在这里写上你的名字!(作者名)、参考的视频攻略链接等 + "details_color": "dark" + }, + "buff": "自适应补给元件", // 开局导能元件选择,可选 + "equipment": [ + // 开局装备选择,横着数,可选 + // 当前版本暂未实现,只会在界面上显示一下 + "A", + "A", + "A", + "A", + "B", + "B", + "B", + "B" + ], + "strategy": "优选策略", // 或者 自由策略,可选 + // 当前版本暂未实现,只会在界面上显示一下 + "opers": [ + // 指定干员,可选 + { + "name": "棘刺", + "skill": 3, + "skill_usage": 1 + } + ], + "tool_men": { + // 剩余所需各职业人数,按费用排序随便拿,可选 + // 当前版本暂未实现,只会在界面上显示一下 + "Pioneer": 13, + "近卫": 2, // 中英文均可 + "Medic": 2 + }, + "drops": [ + // 战斗开始时和战斗中途,招募干员、获取装备优先级 + "空弦", + "能天使", // 支持干员名、职业名 + "先锋", // 职业名中英文均可 + "Support", + "无需增调干员", // 不招人 + "重整导能组件", // 支持装备名,全写一起.jpg + "反制导能组件", + "战备激活阀", // 关卡中途的可选装备,也也放这里 + "改派发讯器" + ], + "blacklist": [ + // 黑名单,可选。在 drops 里不会选这些人。 + // 后续版本支持编队后,编队工具人也不会选这些人 + "夜半", + "梅尔" + ], + "stages": [ + { + "stage_name": "蜂拥而上", // 单层关卡名,必选 + // 支持 name, stageId, levelId,推荐 stageId 或 levelId + // 请勿使用 code(例如 LT-1),因为会和其他保全关卡冲突 + "strategies": [ + // 必选 + // 会按部署各 object 里的 tool_men,如果当前手牌都没有,才会部署下一个 object 里的 + { + "core": "棘刺", + "tool_men": { + "Pioneer": 1, // 中英文均可 + "Warrior": 1, + "Medic": 1 + }, + "location": [ + 10, + 1 + ], + "direction": "Left" + }, + { + "core": "泥岩", + "tool_men": { + "Pioneer": 1, + "Warrior": 1, + "Medic": 1 + }, + "location": [ + 2, + 8 + ], + "direction": "Left" + }, + { + // 不填写 core,可以用于部署辅助过牌的之类的 + "tool_men": { + "Support": 100 + }, + "location": [ + 2, + 8 + ], + "direction": "Left" + } + ], + "draw_as_possible": true, // “调配干员”按钮,是否好了就用,可选,默认 true + "actions": [ + // 可选 + // 基本复用抄作业的逻辑,可参考 protocol/copilot-schema.md + // 符合 action 的条件就执行 action,否则执行上面的 strategies 的逻辑 + { + "type": "调配干员" // 新 type,“调配干员” 按钮,点一下,在 "draw_as_possible" 为 true 时无效 + }, + { + "type": "CheckIfStartOver", // 新 type,检查干员在不在,不在就退出重开 + "name": "棘刺" + }, + { + "name": "桃金娘", + "location": [ + 4, + 5 + ], + "direction": "左" + }, + { + "kills": 10, + "type": "撤退", + "name": "桃金娘" + } + ], + "retry_times": 3 // 战斗失败重试次数,超过了直接放弃整局 + }, + { + "stage_name": "见者有份" + // ... + } + // 写几关打几关,比如只写到了 4,则打完 4 自动重开 + ] +} +``` + +## 示例文件 + +[SSS\_阿卡胡拉丛林.json](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/SSS_阿卡胡拉丛林.json) + +[SSS\_多索雷斯在建地块.json](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/SSS_多索雷斯在建地块.json) diff --git a/docs/协议文档/任务流程协议.md b/docs/zh-cn/protocol/task-schema.md similarity index 91% rename from docs/协议文档/任务流程协议.md rename to docs/zh-cn/protocol/task-schema.md index 1345ac2613..cecf86dfec 100644 --- a/docs/协议文档/任务流程协议.md +++ b/docs/zh-cn/protocol/task-schema.md @@ -137,28 +137,28 @@ Template task 与 base task 合称**模板任务**。 - 如果 `tasks.json` 中未显式定义任务 "B@A",则在 `sub`, `next`, `onErrorNext`, `exceededNext`, `reduceOtherTimes` 字段中增加 `B@` 前缀(如遇任务名开头为 `#` 则增加 `B` 前缀),其余参数与 "A" 任务相同。就是说如果任务 "A" 有以下参数: - ```json - "A": { - "template": "A.png", - ..., - "next": [ "N1", "N2" ] - } - ``` + ```json + "A": { + "template": "A.png", + ..., + "next": [ "N1", "N2" ] + } + ``` - 就相当于同时定义了 + 就相当于同时定义了 - ```json - "B@A": { - "template": "A.png", - ..., - "next": [ "B@N1", "B@N2" ] - } - ``` + ```json + "B@A": { + "template": "A.png", + ..., + "next": [ "B@N1", "B@N2" ] + } + ``` - 如果 `tasks.json` 中定义了任务 "B@A",则: - 1. 如果 "B@A" 与 "A" 的 `algorithm` 字段不同,则派生类参数不继承(只继承 `TaskInfo` 定义的参数) - 2. 如果是图像匹配任务,`template` 若未显式定义则为 `B@A.png`(而不是继承"A"的 `template` 名),其余情况任何派生类参数若未显式定义,直接继承 "A" 任务的参数 - 3. 对于 `TaskInfo` 基类中定义的参数(任何类型任务都有的参数,例如 `algorithm`, `roi`, `next` 等),若没有在 "B@A" 内显式定义,则除了上面提到的 `sub` 等五个字段在继承时会增加 "B@" 前缀外,其余参数直接继承 "A" 任务的参数 + 1. 如果 "B@A" 与 "A" 的 `algorithm` 字段不同,则派生类参数不继承(只继承 `TaskInfo` 定义的参数) + 2. 如果是图像匹配任务,`template` 若未显式定义则为 `B@A.png`(而不是继承"A"的 `template` 名),其余情况任何派生类参数若未显式定义,直接继承 "A" 任务的参数 + 3. 对于 `TaskInfo` 基类中定义的参数(任何类型任务都有的参数,例如 `algorithm`, `roi`, `next` 等),若没有在 "B@A" 内显式定义,则除了上面提到的 `sub` 等五个字段在继承时会增加 "B@" 前缀外,其余参数直接继承 "A" 任务的参数 ### Base Task @@ -195,15 +195,15 @@ _Note1: `"XXX#self"` 与 `"#self"` 含义相同。_ ```json { - "A": { "next": ["N1", "N2"] }, - "C": { "next": ["B@A#next"] }, + "A": { "next": ["N1", "N2"] }, + "C": { "next": ["B@A#next"] }, - "Loading": { - "next": ["#self", "#next", "#back"] - }, - "B": { - "next": ["Other", "B@Loading"] - } + "Loading": { + "next": ["#self", "#next", "#back"] + }, + "B": { + "next": ["Other", "B@Loading"] + } } ``` @@ -225,9 +225,9 @@ Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" }; ```json { - "A": { "next": ["N0"] }, - "B": { "next": ["A#next"] }, - "C@A": { "next": ["N1"] } + "A": { "next": ["N0"] }, + "B": { "next": ["A#next"] }, + "C@A": { "next": ["N1"] } } ``` @@ -244,18 +244,18 @@ Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" }; ```json { - "A": { - "baseTask": "A_default" - }, - "A_default": { - "next": ["xxx"] - }, - "A_mode1": { - "next": ["yyy"] - }, - "A_mode2": { - "next": ["zzz"] - } + "A": { + "baseTask": "A_default" + }, + "A_default": { + "next": ["xxx"] + }, + "A_mode1": { + "next": ["yyy"] + }, + "A_mode2": { + "next": ["zzz"] + } } ``` diff --git a/docs/readme.md b/docs/zh-cn/readme.md similarity index 55% rename from docs/readme.md rename to docs/zh-cn/readme.md index 7350a97d74..158dd7d8cf 100644 --- a/docs/readme.md +++ b/docs/zh-cn/readme.md @@ -1,27 +1,22 @@ -
+--- +icon: ic:round-home +index: true +dir: + order: 0 +--- -LOGO +::: center + +![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256) # MaaAssistantArknights -
-
- C++ -
-
- platform -
-
- license - commit -
-
- stars - GitHub all releases -
-
+![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus) +![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet) +![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4) +![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social) -[简体中文](readme.md) | [繁體中文](./zh-tw/readme.md) | [English](./en-us/readme.md) | [日本語](./ja-jp/readme.md) | [한국어](./ko-kr/readme.md) +简体中文 | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) MAA 的意思是 MAA Assistant Arknights @@ -29,32 +24,52 @@ MAA 的意思是 MAA Assistant Arknights 基于图像识别技术,一键完成全部日常任务! -绝赞更新中 ✿✿ヽ(°▽°)ノ✿
+绝赞更新中 ✿✿ヽ(°▽°)ノ✿ -
+::: ## 亮点功能 -- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/),[一图流](https://ark.yituliu.cn/); -- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](./协议文档/基建排班协议.md); -- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit),[一图流](https://ark.yituliu.cn/survey/maarecruitdata); -- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~; -- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示; -- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings); -- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草; -- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度; -- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/); +- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/),[一图流](https://ark.yituliu.cn/) +- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](./protocol/base-scheduling-schema.md) +- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit),[一图流](https://ark.yituliu.cn/survey/maarecruitdata) +- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高姿回费出的是推王呢还是推王呢)~~ +- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示 +- 支持识别养成材料,并导出至 [企鹅物流刷图规划](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[ARK-NIGHTS 干员培养表](https://ark-nights.com/settings) +- 访问好友、收取信用及购物、领取日常奖励等,一键全日常自动长草 +- 肉鸽全自动刷源石锭和等级,自动烧水和凹直升,智能识别干员及练度 +- 选择作业 JSON 文件,自动抄作业, [视频演示](https://www.bilibili.com/video/BV1H841177Fk/) - 支持 C, Python, Java, Rust, Golang, Java HTTP, Rust HTTP 等多种接口,方便集成调用,自定义你的 MAA! 话不多说,看图! -![zh1](https://user-images.githubusercontent.com/9762652/259595058-1529207a-ef3d-4eca-a016-4759eb534c6e.png) -![zh2](https://user-images.githubusercontent.com/9762652/259594965-882b61e6-bf31-40c1-8c03-3f51f82a0d42.png) -![zh3](https://user-images.githubusercontent.com/9762652/259594874-07abdd9f-33f0-4446-8da3-799849bf7328.png) -![zh4](https://user-images.githubusercontent.com/9762652/259594649-c08b6558-7d17-45a8-9ba0-3ebc9a6f5589.png) +```component ImageGrid +{ + "imageList": [ + { + "light": "image/zh-cn/readme/1-light.png", + "dark": "image/zh-cn/readme/1-dark.png" + }, + { + "light": "image/zh-cn/readme/2-light.png", + "dark": "image/zh-cn/readme/2-dark.png" + }, + { + "light": "image/zh-cn/readme/3-light.png", + "dark": "image/zh-cn/readme/3-dark.png" + }, + { + "light": "image/zh-cn/readme/4-light.png", + "dark": "image/zh-cn/readme/4-dark.png" + } + ] +} +``` ## 下载地址 +前往[官网](https://maa.plus)自动匹配镜像源并下载稳定版,或: + - [稳定版/公测版](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) - [内测版](https://github.com/MaaAssistantArknights/MaaRelease/releases) @@ -62,28 +77,28 @@ MAA 的意思是 MAA Assistant Arknights ### 基本说明 -请参阅 [新手上路](./用户手册/新手上路.md) 与 [详细介绍](./用户手册/详细介绍.md)。 +请参阅 [新手上路](./manual/newbie.md) 与 [功能介绍](./manual/introduction/)。 ### 常见问题 - 软件一打开就闪退; -- 连接错误、不知道 adb 路径怎么填写; +- 连接错误、不知道 ADB 路径怎么填写; - 连接成功了,但没反应; - 如何连接自定义端口; - 下载速度慢,且镜像站无法打开网页; - 下载到一半提示“登陆”/“鉴权”; - 连接正常,任务开始了,但是没反应。 -请参阅 [常见问题](./用户手册/常见问题.md) +请参阅 [常见问题](./manual/faq.md)。 ### 外服支持 目前国际服(美服)、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足,很多功能并没有进行全面的测试,所以请自行体验。 若您遇到了 Bug,或对某个功能有强需求,欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA!请参阅 [外服适配教程](#外服适配) -### CLI支持 +### CLI 支持 -MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](./用户手册/user_manual_for_cli/cli-intro.html) +MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](./manual/cli/intro.md) ## 加入我们 @@ -91,7 +106,7 @@ MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 Windows, **目前项目组非常缺前端大佬,若您有相关经验,欢迎加入我们!** -- 全新框架:[MaaFramework](https://github.com/MaaAssistantArknights/MaaFramework) +- 全新框架:[MaaFramework](https://github.com/MaaXYZ/MaaFramework) - 全新 GUI:[MaaX](https://github.com/MaaAssistantArknights/MaaX) - [作业站](https://prts.plus) 前端:[maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend) - [作业站](https://prts.plus) 后端:[MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter) @@ -106,50 +121,43 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体) [![Weblate](https://weblate.maa-org.net/widgets/maa-assistant-arknights/zh_Hans/maa-wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa-assistant-arknights/zh_Hans/) -### Windows +### 参与开发 -1. 下载预构建的第三方库 +#### Windows - ```cmd - python maadeps-download.py - ``` +请参阅 [开始开发](./develop/development.md)。 -2. 使用 Visual Studio 2022 打开 `MAA.sln`,右键 `MaaWpfGui`,设为启动项目 -3. VS 上方配置选择 `RelWithDebInfo` `x64` (如果编译 Release 包 或 ARM 平台,请忽略这步) -4. 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了) -5. (可选)若准备提交 PR,建议启用 [clang-format 支持](./开发文档/开始开发.md#在-visual-studio-中启用-clang-format) +#### Linux | macOS -### Linux | macOS +请参阅 [Linux 编译教程](./develop/linux-tutorial.md)。 -请参阅 [Linux 编译教程](./开发文档/Linux编译教程.md) +#### API -### API +- [C 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/include/AsstCaller.h):[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Cpp/main.cpp) +- [Python 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/asst/asst.py):[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Python/sample.py) +- [Golang 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Golang):[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Golang/maa/maa.go) +- [Dart 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Dart) +- [Java 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java):[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) +- [Java HTTP 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Java/Readme.md) +- [Rust 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust/src/maa_sys):[HTTP 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/tree/dev/src/Rust) +- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader) +- [Woolang 接口](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/maa.wo):[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/src/Woolang/demo.wo) +- [集成文档](./protocol/integration.md) +- [回调消息协议](./protocol/callback-schema.md) +- [任务流程协议](./protocol/task-schema.md) +- [自动抄作业协议](./protocol/copilot-schema.md) -- [C 接口](include/AsstCaller.h):[集成示例](src/Cpp/main.cpp) -- [Python 接口](src/Python/asst/asst.py):[集成示例](src/Python/sample.py) -- [Golang 接口](src/Golang/):[集成示例](src/Golang/maa/maa.go) -- [Dart 接口](src/Dart/) -- [Java 接口](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaCore.java):[集成示例](src/Java/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java) -- [Java HTTP 接口](src/Java/Readme.md) -- [Rust 接口](src/Rust/src/maa_sys/):[HTTP 接口](src/Rust) -- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaAsstElectronUI/tree/main/packages/main/coreLoader) -- [Woolang 接口](src/Woolang/maa.wo):[集成示例](src/Woolang/main.wo) -- [集成文档](./协议文档/集成文档.md) -- [回调消息协议](./协议文档/回调消息协议.md) -- [任务流程协议](./协议文档/任务流程协议.md) -- [自动抄作业协议](./协议文档/战斗流程协议.md) +#### 外服适配 -### 外服适配 +请参阅 [外服适配教程](./develop/overseas-client-adaptation.md),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。 -请参阅 [外服适配教程](./开发文档/外服适配教程.md),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。 +#### 想参与开发,但不太会用 GitHub? -### 想参与开发,但不太会用 GitHub? +[GitHub Pull Request 流程简述](./develop/development.md#github-pull-request-流程简述) -[GitHub Pull Request 流程简述](./开发文档/开始开发.md#github-pull-request-流程简述) +#### Issue bot -### Issue bot - -请参阅 [Issue bot 使用方法](./开发文档/IssueBot使用方法.md) +请参阅 [Issue Bot 使用方法](./develop/issue-bot-usage.md) ## 致谢 @@ -162,17 +170,17 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体) - 机器学习加速器:[onnxruntime](https://github.com/microsoft/onnxruntime) - ~~关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer)~~ - 地图格子识别:[Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos) -- C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) +- C++ JSON 库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) -- ~~C++ base64编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ +- ~~C++ base64 编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ 解压压缩库:[zlib](https://github.com/madler/zlib) -- C++ Gzip封装:[gzip-hpp](https://github.com/mapbox/gzip-hpp) -- 安卓触控事件器:[minitouch](https://github.com/openstf/minitouch) +- C++ Gzip 封装:[gzip-hpp](https://github.com/mapbox/gzip-hpp) +- 安卓触控事件器:[Minitouch](https://github.com/DeviceFarmer/minitouch) - 安卓触控事件器:[MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) -- WPF MVVM框架:[Stylet](https://github.com/canton7/Stylet) -- WPF控件库:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) +- WPF MVVM 框架:[Stylet](https://github.com/canton7/Stylet) +- WPF 控件库:[HandyControl](https://github.com/HandyOrg/HandyControl) -> [HandyControls](https://github.com/ghost1372/HandyControls) - C# 日志:[Serilog](https://github.com/serilog/serilog) -- C# JSON库:[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime) +- C# JSON 库:[Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) & [System.Text.Json](https://github.com/dotnet/runtime) - ~~下载器:[aria2](https://github.com/aria2/aria2)~~ ### 数据源 @@ -206,3 +214,5 @@ Bilibili 直播间:[直播间](https://live.bilibili.com/2808861) 每晚直播 开发者群:[QQ 群](https://jq.qq.com/?_wv=1027&k=JM9oCk3C) 如果觉得软件对你有帮助,帮忙点个 Star 吧!~(网页最上方右上角的小星星),这就是对我们最大的支持了! + + diff --git a/docs/zh-tw/1.3-模擬器支援.md b/docs/zh-tw/1.3-模擬器支援.md deleted file mode 100644 index 2145479dd0..0000000000 --- a/docs/zh-tw/1.3-模擬器支援.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -icon: ri:windows-fill ---- -# Windows 模擬器支援 - -::: tip -遇到問題請先參考 [常見問題](1.2-常見問題.md) -::: - -以下模擬器排序為隨機產生,排名不分先後 - - - -## ✅ 完美支援 - -
- -## ⚠️ 部分支援 - -
- -## 🚫 不支援 - -
- -## ⚙️ 手機、平板等實體**安卓**設備 - -::: info 注意 -本段內容雖已盡可能寫的簡潔易懂,但也許仍對部分萌新用戶不甚友好。若嫌麻煩、看不懂或操作不清還請繼續使用模擬器 -::: - -以 Windows 用戶為主,其他系統請依樣畫葫蘆。 - -- 由於 MAA 僅對 `16:9` 比例的 `720p` 及更高解析度的支援較為完善,所以非 `16:9` 或 `9:16` 螢幕比例的設備需要強制修改解析度,這包含大多數現代手機。 -- 若被連接設備螢幕解析度比例原生為 `16:9` 或 `9:16`,則可跳過 `更改解析度` 部分。 - -::: tip -典型的 `16:9` 比例的解析度有 `3840*2160`、`2560*1440`、`1920*1080`、`1280*720` 等 -::: - -### 下載、執行 adb 偵錯工具並連接設備 - -1. 下載 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 並解壓縮。 -2. 打開解壓縮後的資料夾,清空地址欄並輸入 `cmd` 後 Enter。 -3. 在彈出的命令提示視窗中輸入 `adb` ,若給出大量英文幫助文字則執行成功。 -4. 手機開啟 `USB 偵錯`,具體步驟可使用搜尋引擎搜尋 `<機型> + 開啟 USB 偵錯`。 -5. 將手機通過數據線連接至電腦,在剛剛的命令提示視窗中輸入以下命令。 - - ```bash - adb devices - ``` - -- 成功執行後會給出已連接 `USB 偵錯` 設備的資訊。 - - - 連接成功的例子: - - ```bash - List of devices attached - VFNDU1682100xxxx device - ``` - - - **`device` 前的英文數字組合為設備序列號,同時也作為 MAA 的 `連接地址`。** - -- 現代安卓設備進行 `USB 偵錯` 需在被偵錯設備上點擊彈窗授權,若未授權則例子如下: - - ```bash - List of devices attached - VFNDU1682100xxxx unauthorized - ``` - -- 若無論如何都提示未授權或設備序列號後顯示 `offline`,則需重開設備及電腦後重試。如仍未解決問題,可刪除目前用戶個人資料夾下的 `.android` 資料夾並再次重開後重試,具體位置請自行搜尋。 - -### 更改解析度 - -::: tip -手機螢幕解析度為 `短邊 * 長邊`,而非電腦顯示器的 `長邊 * 短邊`。具體數值請根據目標設備自行確定。 -::: - -- 如果上文設備列表內僅有一台設備,則可直接執行以下命令更改 / 還原解析度。 - - ```bash - adb shell wm size # 查看目前解析度 - adb shell wm size reset # 還原預設解析度 - - adb shell wm size 720x1280 # 更改解析度為 720p - adb shell wm size 1080x1920 # 更改解析度為 1080p - ``` - -- 若存在多台設備,則需在 `adb` 和 `shell` 中間添加參數 `-s <目標設備序列號>`,例子如下。 - - ```bash - adb -s VFNDU1682100xxxx shell wm size # 查看目前解析度 - adb -s VFNDU1682100xxxx shell wm size reset # 還原預設解析度 - - adb -s VFNDU1682100xxxx shell wm size 720x1280 # 更改解析度為 720p - adb -s VFNDU1682100xxxx shell wm size 1080x1920 # 更改解析度為 1080p - ``` - -- 部分設計不規則的應用可能在還原解析度後,內容佈局仍然錯亂,一般重開對應應用或設備即可解決。 - -::: danger 注意 -務必於**重開設備前**還原解析度 ,否則因設備而定可能會導致不可預料的後果 ~~,包括但不限於佈局錯亂,應用閃退,無法開機等~~ -::: - -### 自動化更改解析度 - -1. 在 MAA 目錄下新增兩個文字檔案,分別在其中填入以下內容。 - - ```bash - ::調整解析度為 1080p - 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 - ``` - -2. 將第一個檔案重新命名為 `startup.bat`,第二個檔案重新命名為 `finish.bat`。 - - - 如果重新命名後沒有彈出修改擴展名的二次確認對話框,且檔案圖示沒有變化,請自行搜尋 “Windows 如何顯示副檔名”。 - -3. 在 MAA 的 `設定` - `連接設定` - `開始前腳本` 和 `結束後腳本` 中分別填入 `startup.bat` 和 `finish.bat`。 - -### 連接 MAA - -1. 將上文解壓縮資料夾內的 `adb.exe` 路徑填入 MAA `設定` - `連接設定` - `adb 路徑` 中,可右鍵屬性查看路徑。 -2. 因不同安卓版本輸出差異較大,請在 MAA `設定` - `連接設定` 中嘗試將 `連接配置` 修改為 `通用模式`、`兼容模式`、`第二解析度`、`通用模式(阻擋異常輸出)` 其中之一,直到某個模式可以連上並正常使用。 -3. 將遊戲內設定中的 `異形螢幕 UI 適配` 一項調整為 0 以防止操作錯位。 - -#### 有線連接 - -1. 將上文獲取到的目標設備序列號填入 MAA `設定` - `連接設定` - `連接地址` 中。 -2. Link Start! -3. 任務結束後還原設備解析度。 - -#### 無線連接 - -- 請確保設備與電腦處在同一區域網路下且能互相通訊。諸如 `AP 隔離`、`訪客網絡` 等設定會阻止設備間通訊,具體請查閱對應路由器文件。 -- MAA 不支援 `adb pair` 無線配對方式連接,即通過安卓 11 及更新版本中開發者選項內的 `無線偵錯` 進行連接。 -- 無線偵錯在設備重開後失效,需要重新設定。 - -1. 在剛剛的命令提示視窗中輸入以下命令以開啟無線偵錯。 - - ```bash - adb tcpip 5555 # 如存在多台設備可參照上文內容在 adb 和 tcpip 中間添加參數 - ``` - -2. 查看設備 IP 地址。 - - - 進入手機 `設定` - `WLAN`,點擊目前已連接的無線網絡查看 IP 地址。 - - 各類品牌設備設定位置不同,請自行尋找。 - -3. 將 `:5555` 填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:5555`。 -4. Link Start! -5. 任務結束後還原設備解析度。 - -::: note -如連接失敗並提示 “發生未知錯誤”,有可能是觸控模式 `Minitouch` 的問題,可切換到 `MaaTouch` 再次嘗試。由於 `Adb Input` 操作過於緩慢,請僅將其作為萬不得已的模式。 -::: diff --git a/docs/zh-tw/1.6-CLI使用說明.md b/docs/zh-tw/1.6-CLI使用說明.md deleted file mode 100644 index 5d3d4283cf..0000000000 --- a/docs/zh-tw/1.6-CLI使用說明.md +++ /dev/null @@ -1,577 +0,0 @@ -# CLI 使用指南 - -## 功能介紹 - -- 執行預定義或自定義的任務,例如 `maa fight`, `maa run `; -- 使用 `maa install` 和 `maa update` 安裝和更新`MaaCore`及資源; -- 使用 `maa self-update` 更新自身。 - -## 安裝 - -### Appimage - -CLI 是 MAA 在 Linux 平臺的預設介面,你可以直接 [下載](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases/latest) 最新的 AppImage 包來使用 CLI。 - -### 包管理器 - -#### macOS - -使用 [Homebrew](https://brew.sh/) 安裝: - -```bash -brew install MaaAssistantArknights/tap/maa-cli -``` - -#### Linux - -- Arch Linux 使用者可以安裝 [AUR 包](https://aur.archlinux.org/packages/maa-cli/): - - ```bash - yay -S maa-cli - ``` - -- ❄️ Nix 使用者可以直接執行: - - ```bash - # 穩定版 - nix run nixpkgs#maa-cli - ``` - - ```bash - # 每夜構建 - 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 Action 每日自動更新和構建驗證。 - -- 對於 Linux Brew 使用者,可以使用 [Linux Brew](https://docs.brew.sh/Homebrew-on-Linux) 安裝: - - ```bash - brew install MaaAssistantArknights/tap/maa-cli - ``` - -### 預編譯二進位制檔案 - -你可以從 [`maa-cli` release 頁面](https://github.com/MaaAssistantArknights/maa-cli/releases/latest)下載預編譯的二進位制檔案,將其解壓後得到的可執行檔案放在你喜歡的位置。不同的平臺對應的檔名如下: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
作業系統處理器架構檔名
Linuxx86_64maa_cli-x86_64-unknown-linux-gnu.tar.gz
aarch64maa_cli-aarch64-unknown-linux-gnu.tar.gz
macOSx86_64 - maa_cli-universal-apple-darwin.zip -
aaarch64
Windowsx86_64maa_cli-x86_64-pc-windows-msvc.zip
- -## 使用 - -`maa-cli` 的主要功能是執行任務,你可以透過 `maa run ` 來執行一個任務。這裡的 `` 是一個任務的名字,你可以透過 `maa list` 來列出所有可用的任務。 - -更多資訊可以透過 `maa help` 獲取。 - -### 執行任務 - -`maa-cli` 的主要功能是執行任務,包括預定義的任務和自定義的任務。 - -#### 預定義任務 - -- `maa startup [client]`: 啟動遊戲並進入主介面,`[client]` 是客戶端型別,如果留空則不會啟動遊戲客戶端。 -- `maa closedown`: 關閉遊戲客戶端; -- `maa fight [stage]`: 執行戰鬥任務,`[stage]` 是關卡名稱,例如 `1-7`;留空選擇上次或者當前關卡; -- `maa copilot `: 執行自動戰鬥任務,其中 `` 是作業的 URI,其可以是 `maa://1234` 或者本地檔案路徑 `./1234.json`; -- `maa roguelike [theme]`: 執行 roguelike 模式的戰鬥任務,`[theme]` 是 roguelike 模式的主題,可選值為 `Phantom`,`Mizuki` 以及 `Sami`; - -#### 自定義任務 - -你可以透過 `maa run ` 來執行自定義任務。這裡的 `` 是一個任務的名字,你可以透過 `maa list` 來列出所有可用的任務。 -具體的任務定義可以在 [配置小節](#定義自定義任務) 中找到。 - -#### 任務總結 - -`maa-cli` 會在任務執行結束後向 stdout 輸出任務總結,包括每個子任務的執行時間和結果。你可以透過 `--no-summary` 選項來停用任務總結。 - -任務總結主要包括各任務的執行時間。對於以下任務,還會包括其他資訊: - -- 刷理智 `fight`: 關卡名稱,次數以及掉落統計; -- 基建換班 `infrast`: 各設施進駐的幹員,對於製造站和貿易站,還會包括產物型別; -- 公招 `recruit`: 公招標籤重新整理次數,招募次數以及檢測到的 tag 及星級。 -- 肉鴿 `roguelike`: 進行的次數,投資的次數。 - -#### 日誌輸出 - -`maa-cli` 預設會向 stderr 輸出日誌。日誌輸出級別從低到高分別為 `Error`,`Warn`,`Info`,`Debug` 和 `Trace`。預設的日誌輸出級別為 `Warn`。日誌級別可以透過 `MAA_LOG` 環境變數來設定,例如 `MAA_LOG=debug`。你也可以透過 `-v` 或者 `-q` 來增加或者減少日誌輸出級別。 - -`--log-file` 選項可以將日誌輸出到檔案中,日誌儲存在 `$(maa dir log)/YYYY/MM/DD/HH:MM:SS.log` 中,其中 `$(maa dir log)` 是日誌目錄,你可以透過 `maa dir log` 獲取。你也可以透過 `--log-file=path/to/log` 來指定日誌檔案的路徑。 - -### 安裝和更新 - -#### 安裝和更新 MaaCore - -你可以透過 `maa install` 和 `maa update` 來安裝和更新 `MaaCore` 及資源,更多資訊可以透過 `maa help install` 和 `maa help update` 獲取。 - -#### 資源熱更新 - -由於遊戲的更新,`MaaCore` 需要最新的資源才能正常執行,你可以透過 `maa hot-update` 來更新資源,或者設定資源自動更新,詳見 [CLI 相關配置](#maa-cli-相關配置) - -#### 更新自身 - -你可以透過 `maa self update` 來更新 `maa-cli` 自身,注意對於由包管理器安裝的 `maa-cli`,你應該使用包管理器來更新 `maa-cli`。 - -更多其他的命令可以透過 `maa help` 獲取。 - -### 其他子命令 - -- `maa list`: 列出所有可用的任務; -- `maa dir `: 獲取特定目錄的路徑,比如 `maa dir config` 可以用來獲取配置目錄的路徑; -- `maa version`: 獲取 `maa-cli` 以及 `MaaCore` 的版本資訊; -- `maa convert [output]`: 將 `JSON`,`YAML` 或者 `TOML` 格式的檔案轉換為其他格式; -- `maa complete `: 生成自動補全指令碼; -- `maa activity [client]`: 獲取遊戲的當前活動資訊,`client` 是客戶端型別,預設為 `Official`。 - -## 配置 - -### 配置目錄 - -`maa-cli` 配置檔案位於特定的配置目錄中,你可以透過`maa dir config`獲取配置目錄。配置目錄也可以透過環境變數 `MAA_CONFIG_DIR` 更改。在下面的例子中,我們將用 `$MAA_CONFIG_DIR` 來表示配置目錄。 - -所有的配置檔案都可以使用 TOML,YAML 或者 JSON 格式,在下面的例子中,我們將使用 TOML 格式,並使用 `.toml` 作為副檔名。但是你可以混合這三種格式中的任意一種,只要你的副檔名正確。 - -### 定義自定義任務 - -每一個自定義任務都是一個單獨的檔案,它們應該位於 `$MAA_CONFIG_DIR/tasks` 目錄中。 - -#### 基本結構 - -一個任務檔案包含多個子任務,每一個子任務是一個 [MAA 任務](../協議文件/整合文件.md#asstappendtask),其包含一下幾個選項: - -```toml -[[tasks]] -name = "啟動遊戲" # 任務的名字,可選,預設為任務型別 -type = "StartUp" # maa任務的型別 -params = { client_type = "Official", start_game_enabled = true } # maa任務的引數 -``` - -#### 任務條件 - -如果你想要根據一些條件執行不同引數的任務,你可以定義多個任務的變體: - -```toml -[[tasks]] -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` - -# 在12:00:00之前使用計劃1,在12:00:00到18:00:00之間使用計劃2,在18:00:00之後使用計劃0 -[[tasks.variants]] -condition = { type = "Time", end = "12:00:00" } # 如果沒有定義start,那麼它將會是00:00:00 -params = { plan_index = 1 } - -[[tasks.variants]] -condition = { type = "Time", start = "12:00:00", end = "18:00:00" } -params = { plan_index = 2 } - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } -params = { plan_index = 0 } -``` - -這裡的 `condition` 欄位用於確定哪一個變體應該被使用,而匹配的變體的 `params` 欄位將會被合併到任務的引數中。 - -**注意**:如果你的自定義基建計劃檔案使用相對路徑,應該相對於 `$MAA_CONFIG_DIR/infrast`。此外,由於基建檔案是由 `MaaCore` 而不是 `maa-cli` 讀取的,因此這些檔案的格式必須是 `JSON`。同時,`maa-cli` 不會讀取基建檔案,也不會根據其中定義的時間段來選擇相應的子計劃。因此,必須透過 `condition` 欄位來指定在相應時間段使用正確的基建計劃的引數中的 `plan_index` 欄位。這樣可以確保在適當的時間段使用正確的基建計劃。 - -除了 `Time` 條件,還有 `DateTime`,`Weekday`,`DayMod`條件。`DateTime` 條件用於指定一個時間段,`Weekday` 條件用於指定一週中的某些天,`DayMod` 見下文多天排班。 - -```toml -[[tasks]] -type = "Fight" - -# 在夏活期間,刷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 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 其他時間,刷1-7 -[[tasks.variants]] -params = { stage = "1-7" } -``` - -除了上述確定的條件之外,還有一個依賴於熱更新資源的條件 `OnSideStory`,當你啟動該條件後,`maa-cli` 會嘗試讀取相應的資源來判斷當前是否有正在開啟的活動,如果有那麼對應的變體會被匹配。 比如上述夏活期間刷 `SL-8` 的條件就可以簡化為 `{ type = "OnSideStory", client = "Official" }`,這裡的 `client` 引數用於確定你使用的客戶端,因為不同的客戶端的活動時間不同,對於使用官服或者 b 服的使用者,這可以省略。透過這個條件,每次活動更新之後你可以只需要更新需要刷的關卡而不需要手動編輯對應活動的開放時間。 - -除了以上基礎條件之外,你可以使用 `{ type = "And", conditions = [...] }`,`{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }` 來對條件進行邏輯運算。 - -對於想要基建多天排班的使用者,可以將 `DayMod` 和 `Time` 組合使用,可以實現多天排班。比如,你想要實現每兩天換六次班,那麼你可以這樣寫: - -```toml -[[tasks]] -name = "基建換班 (2天6班)" -type = "Infrast" - -[tasks.params] -mode = 10000 -facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] -dorm_trust_enabled = true -filename = "normal.json" - -# 第一班,第一天 4:00:00 - 12:00:00 -[[tasks.variants]] -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 ` 來獲取. - # 比如,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" }, -] - -# 第二班,第一天 12:00:00 - 20:00:00 -[[tasks.variants]] -params = { plan_index = 1 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", start = "12:00:00", end = "20:00:00" }, -] - -# 第三班,第一天 20:00:00 - 第二天 4:00:00 -[[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 不會被匹配 -# 當然透過調整你的排班時間避免跨天是更好的選擇,這裡只是為了演示 -type = "Or" -conditions = [ - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", start = "20:00:00" }, - ] }, - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", end = "04:00:00" }, - ] }, -] - -# 第四班,第二天 4:00:00 - 12:00:00 -[[tasks.variants]] -params = { plan_index = 3 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "04:00:00", end = "12:00:00" }, -] - -# 第五班,第二天 12:00:00 - 20:00:00 -[[tasks.variants]] -params = { plan_index = 4 } -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "12:00:00", end = "20:00:00" }, -] - -# 第六班,第二天 20:00:00 - 第三天(新的第一天)4:00:00 -[[tasks.variants]] -params = { plan_index = 5 } -[tasks.variants.condition] -type = "Or" -conditions = [ - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 1 }, - { type = "Time", start = "20:00:00" }, - ] }, - { type = "And", conditions = [ - { type = "DayMod", divisor = 2, remainder = 0 }, - { type = "Time", end = "04:00:00" }, - ] }, -] -``` - -在預設的策略下,如果有多個變體被匹配,第一個將會被使用。如果沒有給出條件,那麼變體將會總是被匹配,所以你可以把沒有條件的變體放在最後,作為預設的情況。 - -你可以使用 `strategy` 欄位來改變匹配策略: - -```toml -[[tasks]] -type = "Fight" -strategy = "merge" # 或者 "first" (預設) - -# 在周天晚上使用所有的將要過期的理智藥 -[[tasks.variants]] -params = { expiring_medicine = 1000 } - -[tasks.variants.condition] -type = "And" -conditions = [ - { type = "Time", start = "18:00:00" }, - { type = "Weekday", weekdays = ["Sun"] }, -] - -# 預設刷1-7 -[[tasks.variants]] -params = { stage = "1-7" } - -# 在週二、週四和週六,刷CE-6 -[[tasks.variants]] -condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } -params = { stage = "CE-6" } - -# 在夏活期間,刷SL-8 -[[tasks.variants]] -params = { stage = "SL-8" } -condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } -``` - -這個例子和上面的例子將刷同樣的關卡,但是在周天晚上,將會使用所有的將要過期的理智藥。在 `merge` 策略下,如果有多個變體被匹配,後面的變體的引數將合併入前面的變體的引數中。如果多個變體都有相同的引數,那麼後面的變體的引數將會覆蓋前面的變體的引數。 - -如果沒有變體被匹配,那麼任務將不會被執行,這可以用於只在特定的條件下執行子任務: - -```toml -# 只在在18:00:00之後進行信用商店相關的操作 -[[tasks]] -type = "Mall" - -[[tasks.variants]] -condition = { type = "Time", start = "18:00:00" } -``` - -#### 使用者輸入 - -對於一些任務,你可能想要在執行時輸入一些引數,例如關卡名稱。 你可以將對應需要輸入的引數設定為 `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 (輕錳礦)" -] -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" # 描述,可選 -[tasks.variants.params.medicine] -# 依賴的引數,鍵為引數名,值為依賴的引數的預期值 -# 當設定時,只有所有的依賴引數都滿足預期值時,這個引數才會被要求輸入 -deps = { stage = "1-7" } -default = 1000 -description = "medicine to use" -``` - -對於 `Input` 型別,當執行任務時,你將會被提示輸入一個值。如果你輸入了一個空值,如果有預設值,那麼預設值將會被使用,否則你將會被提示重新輸入。 -對於 `Select` 型別,當執行任務時,你將會被提示輸入一個的索引或者自定義的值(如果允許)。如果你輸入了一個空值,如果有預設值,那麼預設值將會被使用,否則你將會被提示重新輸入。 - -`--batch` 選項可以用於在執行任務時跳過所有的輸入,這將會使用預設值;如果有任何輸入沒有預設值,那麼將會導致錯誤。 - -### MaaCore 相關配置 - -和 MaaCore 相關的配置需要放在 `$MAA_CONFIG_DIR/asst.toml` 中。 -目前其包含的配置有: - -```toml -[connection] -type = "ADB" -adb_path = "adb" -device = "emulator-5554" -config = "CompatMac" - -[resource] -global_resource = "YoStarEN" -platform_diff_resource = "iOS" -user_resource = true - -[static_options] -cpu_ocr = false -gpu_ocr = 1 - -[instance_options] -touch_mode = "MAATouch" -deployment_with_pause = false -adb_lite_enabled = false -kill_adb_on_exit = false -``` - -#### 連線配置 - -`[connection]` 相關欄位用於指定 MaaCore 連線遊戲的方式和引數。目前可用的連線方式有 `ADB` 和 `PlayTools`。 - -當你使用 `ADB` 連線時,你需要提供 `adb` 的路徑和裝置的序列號: - -```toml -[connection] -type = "ADB" -adb_path = "adb" # adb可執行檔案的路徑 -device = "emulator-5554" # 你的android裝置的序列號 -config = "General" # maa connect的配置 -``` - -注意,此處的 device 是任何 `adb -s` 可以接受的值,比如 `emulator-5554` 和 `127.0.0.1:5555`。 - -當你使用 `PlayTools` 連線時,你需要提供 `PlayTools` 的地址: - -```toml -[connection] -type = "PlayCover" -address = "localhost:1717" # PlayTools的地址 -config = "CompatMac" # maa connect的配置 -``` - -兩者都需要提供 `config`,這個值將被傳給 MaaCore,用於指定一些平臺和模擬器相關的配置。對於 Linux 他預設為 `CompatPOSIXShell`,對於 macOS 他預設為 `CompatMac`,對於 Windows 他預設為 `General`。更多可選配置可以在資原始檔夾中的 `config.json` 檔案中找到。 - -#### 資源配置 - -`[resource]` 相關欄位用於指定 MaaCore 載入的資源: - -```toml -[resource] -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`。 - -#### 靜態選項 - -`[static_options]` 相關欄位用於指定 MaaCore 靜態選項,詳見 [整合文件](../協議文件/整合文件.html#asstsetstaticoption): - -```toml -[static_options] -cpu_ocr = false # 是否使用 CPU OCR,預設使用 CPU OCR -gpu_ocr = 1 # 使用 GPU OCR 時使用的 GPU ID,如果這個值被留空,那麼將會使用 CPU OCR -``` - -#### 例項選項 - -`[instance_options]` 相關欄位用於指定 MaaCore 例項的選項,詳見 [整合文件](../協議文件/整合文件.html#asstsetinstanceoption): - -```toml -[instance_options] -touch_mode = "ADB" # 使用的觸控模式,可選值為 "ADB","MiniTouch","MAATouch" 或者 "MacPlayTools" -deployment_with_pause = false # 是否在部署時暫停遊戲 -adb_lite_enabled = false # 是否使用 adb-lite -kill_adb_on_exit = false # 是否在退出時殺死 adb -``` - -注意,`touch_mode` 可選項 `MacPlayTools` 和連線方式 `PlayTools` 繫結。當你使用 `PlayTools` 連線時,`touch_mode` 將會被強制設定為 `MacPlayTools`。 - -### `maa-cli` 相關配置 - -`maa-cli` 相關的配置需要放在 `$MAA_CONFIG_DIR/cli.toml` 中。目前其包含的配置如下: - -```toml -# MaaCore 安裝和更新相關配置 -[core] -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 對應的元件,不推薦使用,分開安裝可能會導致版本不一致,從而導致一些問題,該選項可能在未來的版本中移除 -[core.components] -library = true # 是否安裝 MaaCore 的庫,預設為 true -resource = true # 是否安裝 MaaCore 的資源,預設為 true - -# CLI 更新相關配置 -[cli] -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 對應的元件 -[cli.components] -binary = true # 是否安裝 maa-cli 的二進位制檔案,預設為 true - -# 資源熱更新相關配置 -[resource] -auto_update = true # 是否在每次執行任務時自動更新資源,預設為 false -backend = "libgit2" # 資源熱更新後端,可選值為 "git" 或者 "libgit2",預設為 "git" - -# 資源熱更新遠端倉庫相關配置 -[resource.remote] -branch = "main" # 遠端倉庫的分支,預設為 "main" -# 遠端倉庫的 url,如果你想要使用 ssh,你必須配置 ssh_key 的路徑 -url = "https://github.com/MaaAssistantArknights/MaaResource.git" -# url = "git@github.com:MaaAssistantArknights/MaaResource.git" -# ssh_key = "~/.ssh/id_ed25519" # ssh 私鑰的路徑,支援展開 ~ 但不支援其他環境變數 -``` - -**注意事項**: - -- MaaCore 的更新通道中 `Alpha` 只在 Windows 上可用; -- 由於 CLI 預設的 API 連結和下載連結都是 GitHub 的連結,因此在國內可能會有一些問題,你可以透過配置 `api_url` 和 `download_url` 來使用映象。 -- 即使啟動了資源熱更新,你依然需要安裝 `MaaCore` 的資源,因為資源熱更新並不包含所有的資原始檔,只是包含部份可更新的資原始檔,基礎資原始檔仍然需要安裝。 -- 資源熱更新是透過 Git 來拉取遠端倉庫,如果後端設定為 `git` 那麼 `git` 命令列工具必須可用。 -- 如果你想要使用 SSH 協議來拉取遠端倉庫,你必須配置 `ssh_key` 欄位,這個欄位應該是一個路徑,指向你的 SSH 私鑰。 -- 遠端倉庫的 `url` 設定目前只對首次安裝資源有效,如果你想要更改遠端倉庫的地址,你需要透過 `git` 命令列工具手動更改,或者刪除對應的倉庫。倉庫所在位置可以透過 `maa dir hot-update` 獲取。 -- 遠端倉庫的 `url` 會根據你本機的語言自動設定,如果你的語言是簡體中文,那麼遠端倉庫的 `url` 將會被設定為國內的映象 `https://git.maa-org.net/MAA/MaaResource.git`,在其他情況則會被設定為 Github。如果你在國內但是使用的不是簡體中文,或者在國外使用簡體中文,那麼你可能需要手動設定以獲得最佳的體驗。 - -### JSON Schema - -你可以在 CLI 倉庫的 `maa-cli/schemas` 目錄下找到 `maa-cli` 的 JSON Schema 檔案,你可以使用這些檔案來驗證你的配置檔案,或者在編輯器中獲得自動補全。 -任務檔案的 JSON Schema 檔案為 [`task.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json); -MaaCore 相關配置的 JSON Schema 檔案為 [`asst.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json); -CLI 相關配置的 JSON Schema 檔案為 [`cli.schema.json`](https://github.com/MaaAssistantArknights/maa-cli/raw/v0.4.0/maa-cli/schemas/task.schema.json)。 diff --git a/docs/zh-tw/2.2-開發相關.md b/docs/zh-tw/develop/development.md similarity index 85% rename from docs/zh-tw/2.2-開發相關.md rename to docs/zh-tw/develop/development.md index 06bb089ba8..484ab3de14 100644 --- a/docs/zh-tw/2.2-開發相關.md +++ b/docs/zh-tw/develop/development.md @@ -1,13 +1,15 @@ --- +order: 1 icon: iconoir:developer --- -# 開發相關 + +# 開始開發 ## Github Pull Request 流程簡述 ### 我不懂程式,只是想改一點點 JSON 檔案,要怎麽操作? -歡迎收看 [牛牛也能看懂的 GitHub Pull Request 使用說明](2.4-純網頁端PR教學.md) (純網頁端操作) +歡迎收看 [牛牛也能看懂的 GitHub Pull Request 使用指南](./pr-tutorial.md) (純網頁端操作) ### 我會程式,但沒接觸過 GitHub/C++/……,要怎麽操作? @@ -16,9 +18,11 @@ icon: iconoir:developer 3. clone MAA 主倉庫(到你自己帳號下) dev 分支到本地 ```bash - git clone <你的倉庫 git 連結> -b dev + git clone --recurse-submodules <你的倉庫 git 連結> -b dev ``` + 如果正在使用 Visual Studio 等不附带 `--recurse-submodules` 参数的 Git GUI,則需在克隆後再執行 `git submodule update --init` 以拉取子模塊。 + 4. 下載預構建的第三方庫 **需要有 Python 環境,請自行搜尋 Python 安裝教學** @@ -36,7 +40,7 @@ icon: iconoir:developer 7. 設定 Visual Studio - Visual Studio 上方配置選擇 `RelWithDebInfo` `x64` (如果編譯 Release 包 或 ARM 平台,請忽略這步) - - 右鍵 `MaaWpfGui` - 屬性 - 偵錯 - 啟用本地偵錯(這樣就能把斷點掛到 C++ Core 那邊了) + - 右鍵 `MaaWpfGui` - 屬性 - 調試 - 啟用本地調試(這樣就能把斷點掛到 C++ Core 那邊了) 8. 到這裡,你就可以愉快地~~瞎ㄐㄅ改~~發電了 9. 開發過程中,每一定數量,記得提交一個 commit,別忘了寫上 message @@ -55,9 +59,8 @@ icon: iconoir:developer git push origin dev ``` -11. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights)。提交一個 Pull Request,等待管理員通過。 - 別忘了你是在 dev 分支上修改,別提交到 master 分支去了。 - +11. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights)。提交一個 Pull Request,等待管理員通過。別忘了你是在 dev 分支上修改,別提交到 master 分支去了。 + 12. 當 MAA 主倉庫出現更改(別人做的),你可能需要把這些更改同步到你的分支 1. 關聯 MAA 主倉庫 @@ -109,10 +112,10 @@ icon: iconoir:developer - `python tools\ClangFormatter\clang-formatter.py --clang-format=PATH\TO\YOUR\clang-format.exe --input=src\MaaCore` -## ## 使用 GitHub codespace 進行線上開發 +## 使用 GitHub codespace 進行在線開發 建立 GitHub codespace 自動配置 C++ 開發環境 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights) -隨後根據 vscode 的提示或 [Linux 教程](./2.1-Linux編譯教學.md) 配置 GCC 12 和 CMake 工程 +隨後根據 vscode 的提示或 [Linux 教程](./linux-tutorial.md) 配置 GCC 12 和 CMake 工程 diff --git a/docs/zh-tw/develop/documentation-guidelines.md b/docs/zh-tw/develop/documentation-guidelines.md new file mode 100644 index 0000000000..0db8c78341 --- /dev/null +++ b/docs/zh-tw/develop/documentation-guidelines.md @@ -0,0 +1,144 @@ +--- +order: 6 +icon: jam:write-f +--- + +# 文件編寫指南 + +::: tip +本文件的目的在於指導文件編寫者更好地使用主題提供的功能,以達到更易讀的效果。 +::: + +我們的文件基於 [vuepress](https://github.com/vuejs/vuepress) 構建,使用了 [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 主題,你也可以查看[官方文件](https://theme-hope.vuejs.press/zh/)來獲取更詳細的說明,這裡僅介紹一些常用的功能。 + +## 本地部署 + +1. 安裝 [pnpm](https://pnpm.io/zh/installation),並參考 [Pull Request 流程簡述](./development.md#github-pull-request-流程簡述)將倉庫克隆到本地。 +2. 在 `website` 目錄下新建終端,運行 `pnpm i` 下載依賴。 +3. 運行 `pnpm run dev` 進行部署。 + +## 容器 + +~~不是 docker 那個容器~~ + +該主題提供了關於提示、注釋、信息、注意、警告和詳情自定義容器的支持,我們可以利用這一特性來強調部分內容。 + +容器的使用方法: + +```markdown +::: [容器類型] [容器標題(可選)] +你想寫的內容 +::: +``` + +接受的容器内容与其默认标题如下: + +- `tip` 提示 +- `note` 注釋 +- `info` 信息 +- `warning` 注意 +- `danger` 警告 +- `details` 詳情 + +### 容器示例 + +::: tip +這是提示容器 +::: + +::: note +這是注釋容器 +::: + +::: info +這是信息容器 +::: + +::: warning +這是注意容器 +::: + +::: danger +這是危險容器 +::: + +::: details +這是詳情容器 +::: + +## 圖標 + +該主題提供了圖標支持,你可以在以下地方使用圖標: + +- 文件標題:在 frontmatter 中設置文件標題旁邊的圖標 + +- 導航欄/側邊欄:設置在導航欄與側邊欄中顯示的圖標 + +- 文件內容:在文件中使用圖標 + +### 設置文件的圖標 + +你可以在文件的 [frontmatter](#frontmatter) 中使用 icon 來設置文件的圖標。 + +这个图标会显示在文档标题的旁边。 + +::: details 本文件的 frontmatter 設置 + +```markdown +--- +icon: jam:write-f +--- +``` + +::: + +### 在文件中使用圖標 + +你可以使用 `` 組件在 markdown 中添加圖標。該組件有以下屬性: + +- `icon` 接受圖標關鍵字及 Url,如 `jam:write-f`,`ic:round-home` 等 +- `color` 接受 css 風格的顏色值,如 `#fff`,`red` 等(該選項僅對 svg 圖標有效) +- `size` 接受 css 風格的大小,如 `1rem`,`2em`,`100px` 等 + +::: details 案例 + + +```markdown + +``` + + +```markdown + +``` +::: + +### 圖標關鍵字的獲取 + +本文件使用的圖標來自於 [iconify](https://iconify.design/),你可以在其給出的 [圖標搜索界面](https://icon-sets.iconify.design/) 中搜索你想要的圖標,然後復制其關鍵字。 + +## Frontmatter + +Frontmatter 是 Markdown 文件開頭一段用 --- 包裹起來的內容,其內部使用 yml 語法。通過 Frontmatter,我們可以標識文件的編輯時間,使用的圖標,分類,標籤等等。 + +::: details 示例 + +```markdown +--- +date: 1919-08-10 +icon: jam:write-f +order: 1 +--- + +# 文件標題 + +... +``` + +::: + +各字段含義如下: + +- `date` 文件的編輯時間 +- `icon` 文件標題旁邊的圖標 +- `order` 文件在側邊欄中的排序 diff --git a/docs/zh-tw/2.3-IssueBot使用方法.md b/docs/zh-tw/develop/issue-bot-usage.md similarity index 97% rename from docs/zh-tw/2.3-IssueBot使用方法.md rename to docs/zh-tw/develop/issue-bot-usage.md index a5cf724f20..c91ccd8c7b 100644 --- a/docs/zh-tw/2.3-IssueBot使用方法.md +++ b/docs/zh-tw/develop/issue-bot-usage.md @@ -1,4 +1,5 @@ --- +order: 4 icon: bxs:bot --- # Issue Bot 使用方法 @@ -13,7 +14,7 @@ Pull Request 被增加 `ambiguous` 標籤是因為沒有按照 commitizen 規則 ### 自動觸發 -- 給 issue 和 Pull Request 增加標籤,包括 `module` 系列 、`Client` 系列、`ambiguous`、`translation required` 等。 +- 給 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` 標籤。 diff --git a/docs/zh-tw/2.1-Linux編譯教學.md b/docs/zh-tw/develop/linux-tutorial.md similarity index 95% rename from docs/zh-tw/2.1-Linux編譯教學.md rename to docs/zh-tw/develop/linux-tutorial.md index 0e0f977610..b96a142f04 100644 --- a/docs/zh-tw/2.1-Linux編譯教學.md +++ b/docs/zh-tw/develop/linux-tutorial.md @@ -1,9 +1,10 @@ --- +order: 2 icon: teenyicons:linux-alt-solid --- # Linux 編譯教學 -**本教程需要讀者有一定的 Linux 環境配置能力及程式設計基礎!**,若您僅希望直接安裝MAA而非自行編譯,請閱讀[使用者手冊 - Linux 模擬器&容器](./1.5-Linux模擬器支援)。 +**本教程需要讀者有一定的 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)。 diff --git a/docs/zh-tw/2.5-外服適配教學.md b/docs/zh-tw/develop/overseas-client-adaptation.md similarity index 99% rename from docs/zh-tw/2.5-外服適配教學.md rename to docs/zh-tw/develop/overseas-client-adaptation.md index 86b9c91931..0cee4510e2 100644 --- a/docs/zh-tw/2.5-外服適配教學.md +++ b/docs/zh-tw/develop/overseas-client-adaptation.md @@ -1,7 +1,8 @@ --- +order: 5 icon: ri:earth-fill --- -# 外服適配 +# 外服適配教學 ## 準備工作 diff --git a/docs/zh-tw/2.4-純網頁端PR教學.md b/docs/zh-tw/develop/pr-tutorial.md similarity index 99% rename from docs/zh-tw/2.4-純網頁端PR教學.md rename to docs/zh-tw/develop/pr-tutorial.md index 4da88921c5..261e0a91e6 100644 --- a/docs/zh-tw/2.4-純網頁端PR教學.md +++ b/docs/zh-tw/develop/pr-tutorial.md @@ -1,4 +1,5 @@ --- +order: 3 icon: mingcute:git-pull-request-fill --- # 純網頁端 PR 教學 @@ -111,7 +112,7 @@ icon: mingcute:git-pull-request-fill [![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) ::: -16. 下次如果還想提別的 PR,請先切換到 dev 分支,然後直接如下圖操作 +15. 下次如果還想提別的 PR,請先切換到 dev 分支,然後直接如下圖操作 ::: warning 這個操作會強制將你的個人倉庫同步到和主倉庫一模一樣的狀態,這是最簡單粗暴但行之有效的解決衝突的方法。但如果你的個人倉庫已經有額外的編輯了,會被直接刪掉! ::: diff --git a/docs/zh-tw/index.md b/docs/zh-tw/index.md deleted file mode 100644 index 779304fb49..0000000000 --- a/docs/zh-tw/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -home: true - -actions: - - text: Link Start! - link: /readme.html - type: primary - -# features: -# - title: 多設備相容 -# details: 手機真機、手機虛擬機、雲手機、模擬器全部支援。免 ROOT,適配異形螢幕。 -# - title: 完全托管 -# details: 定時啟動、自動熱更新、多帳號管理、原創 QQ 通知服務,助你遠離明日方舟。 -# - title: 高性能 -# details: 極致耗時優化,快過手操。每日任務速通、源石錠速刷冠軍。 -# - title: 高效率 -# details: 根據實際基建情況,窮舉計算最優基建排班,不套用固定組合。 -# - title: 高自定義 -# details: 多帳號獨立設定、信用商品優先級、搶登次數設定、自動吃到期理智藥... -# - title: 允許商用 -# details: 遵循 GPL3.0 協議,不限商用。修改代碼後商用必須開源。 - ---- diff --git a/docs/zh-tw/manual/README.md b/docs/zh-tw/manual/README.md new file mode 100644 index 0000000000..62a350c617 --- /dev/null +++ b/docs/zh-tw/manual/README.md @@ -0,0 +1,9 @@ +--- +title: 用戶說明書 +icon: mdi:user +index: false +dir: + order: 1 +--- + + diff --git a/docs/zh-tw/manual/cli/README.md b/docs/zh-tw/manual/cli/README.md new file mode 100644 index 0000000000..535880721f --- /dev/null +++ b/docs/zh-tw/manual/cli/README.md @@ -0,0 +1,9 @@ +--- +title: CLI 使用說明 +icon: material-symbols:terminal +index: false +dir: + order: 6 +--- + + diff --git a/docs/zh-tw/manual/cli/config.md b/docs/zh-tw/manual/cli/config.md new file mode 100644 index 0000000000..55d01b57af --- /dev/null +++ b/docs/zh-tw/manual/cli/config.md @@ -0,0 +1,452 @@ +--- +order: 4 +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` 来表示配置目录。 + +所有的配置文件都可以使用 TOML,YAML 或者 JSON 格式,在下面的例子中,我们将使用 TOML 格式,并使用 `.toml` 作为文件扩展名。但是你可以混合这三种格式中的任意一种,只要你的文件扩展名正确。 + +此外,部份任务接受 `filename` 作为参数,如果你使用相对路径,那么相对路径将会相对于配置目录的对应子目录。比如自定义基建计划文件的相对路径应该相对于 `$MAA_CONFIG_DIR/infrast`,而保全派驻的作业文件则相对于 `$MAA_CONFIG_DIR/ssscopilot`。 + +## 自定义任务 + +每一个自定义任务都是一个单独的文件,它们应该位于 `$MAA_CONFIG_DIR/tasks` 目录中。 + +### 基本结构 + +一个任务文件包含多个子任务,每一个子任务是一个 MAA 任务,其包含一下几个选项: + +```toml +[[tasks]] +name = "启动游戏" # 任务的名字,可选,默认为任务类型 +type = "StartUp" # 任务的类型 +params = { client_type = "Official", start_game_enabled = true } # 对应任务的参数 +``` + +具体的任务类型和参数可以在 [MAA 集成文档][task-types] 中找到。注意,目前 maa-cli 并不会验证参数名和参数值是否正确,即使出错也不会产生任何错误信息,除非 MaaCore 在运行时检测到错误。 + +### 任务条件 + +如果你想要根据一些条件运行不同参数的任务,你可以定义多个任务的变体: + +```toml +[[tasks]] +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` + +# 在 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" } # 当结束时间小于开始时间时,结束时间被视为第二天的时间 +params = { plan_index = 0 } + +[[tasks.variants]] +condition = { type = "Time", end = "12:00:00" } # 如果开始时间被省略,那么只要当前时间小于结束时间时,这个条件就会被匹配 +params = { plan_index = 1 } + +[[tasks.variants]] +condition = { type = "Time", start = "12:00:00" } # 如果结束时间被省略,那么只要当前时间大于开始时间时,这个条件就会被匹配 +params = { plan_index = 2 } +``` + +这里的 `condition` 字段用于确定哪一个变体应该被使用,而匹配的变体的 `params` 字段将会被合并到任务的参数中。 + +**注意**:如果你的自定义基建计划文件使用相对路径,应该相对于 `$MAA_CONFIG_DIR/infrast`。此外,由于基建文件是由 MaaCore 而不是 maa-cli 读取的,因此这些文件的格式必须是 JSON。同时,maa-cli 不会读取基建文件,也不会根据其中定义的时间段来选择相应的子计划。因此,必须通过 `condition` 字段来指定在相应时间段使用正确的基建计划的参数中的 `plan_index` 字段。这样可以确保在适当的时间段使用正确的基建计划。 + +除了 `Time` 条件,还有 `DateTime`,`Weekday`,`DayMod`条件。`DateTime` 条件用于指定一个时间段,`Weekday` 条件用于指定一周中的某些天,`DayMod` 用于指定一个自定义周期的某些天。 + +```toml +[[tasks]] +type = "Fight" + +# 在夏活期间,刷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 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"], timezone = "Official"} +params = { stage = "CE-6" } + +# 其他时间,刷1-7 +[[tasks.variants]] +params = { stage = "1-7" } +``` + +对与上述所有时间相关的条件,其都可以通过 `timezone` 参数来指定时区,这个参数的值可以是一个数字,表示与 UTC 的偏移量,如果你的时区是东八区,那么你可以指定 `timezone = 8`。这个参数也可以是一个客户端类型,比如 `timezone = "Official"`,这样将会使用官服对应的服务器时间来判断。**注意**,官服的时区不是东八区而是东四区,因为游戏中每天开始时间是 04:00:00 而不是 00:00:00。如果不指定时区,那么直接使用你的本地时区。 + +除了上述确定的条件之外,还有一个依赖于热更新资源的条件 `OnSideStory`,当你启动该条件后,maa-cli 会尝试读取相应的资源来判断当前是否有正在开启的活动,如果有那么对应的变体会被匹配。 比如上述夏活期间刷 `SL-8` 的条件就可以简化为 `{ type = "OnSideStory", client = "Official" }`,这里的 `client` 参数用于确定你使用的客户端,因为不同的客户端的活动时间不同,对于使用官服或者 b 服的用户,这可以省略。通过这个条件,每次活动更新之后你可以只需要更新需要刷的关卡而不需要手动编辑对应活动的开放时间。 + +除了以上基础条件之外,你可以使用 `{ type = "And", conditions = [...] }`,`{ type = "Or", conditions = [...] }`, `{ type = "Not", condition = ... }` 来对条件进行逻辑运算。 +对于想要基建多天排班的用户,可以将 `DayMod` 和 `Time` 组合使用,可以实现多天排班。比如,你想要实现每两天换六次班,那么你可以这样写: + +```toml +[[tasks]] +name = "基建换班 (2天6班)" +type = "Infrast" + +[tasks.params] +mode = 10000 +facility = ["Trade", "Reception", "Mfg", "Control", "Power", "Office", "Dorm"] +dorm_trust_enabled = true +filename = "normal.json" + +# 第一班,第一天 4:00:00 - 12:00:00 +[[tasks.variants]] +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 ` 来获取. + # 比如,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" }, +] + +# 第二班,第一天 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 1 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 第三班,第一天 20:00:00 - 第二天 4:00:00 +[[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 不会被匹配 +# 当然通过调整你的排班时间避免跨天是更好的选择,这里只是为了演示 +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", end = "04:00:00" }, + ] }, +] + +# 第四班,第二天 4:00:00 - 12:00:00 +[[tasks.variants]] +params = { plan_index = 3 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "04:00:00", end = "12:00:00" }, +] + +# 第五班,第二天 12:00:00 - 20:00:00 +[[tasks.variants]] +params = { plan_index = 4 } +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "12:00:00", end = "20:00:00" }, +] + +# 第六班,第二天 20:00:00 - 第三天(新的第一天)4:00:00 +[[tasks.variants]] +params = { plan_index = 5 } +[tasks.variants.condition] +type = "Or" +conditions = [ + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 1 }, + { type = "Time", start = "20:00:00" }, + ] }, + { type = "And", conditions = [ + { type = "DayMod", divisor = 2, remainder = 0 }, + { type = "Time", end = "04:00:00" }, + ] }, +] +``` + +在默认的策略下,如果有多个变体被匹配,第一个将会被使用。如果没有给出条件,那么变体将会总是被匹配,所以你可以把没有条件的变体放在最后,作为默认的情况。 + +你可以使用 `strategy` 字段来改变匹配策略: + +```toml +[[tasks]] +type = "Fight" +strategy = "merge" # 或者 "first" (默认) + +# 在周天晚上使用所有的将要过期的理智药 +[[tasks.variants]] +params = { expiring_medicine = 1000 } + +[tasks.variants.condition] +type = "And" +conditions = [ + { type = "Time", start = "18:00:00" }, + { type = "Weekday", weekdays = ["Sun"] }, +] + +# 默认刷1-7 +[[tasks.variants]] +params = { stage = "1-7" } + +# 在周二、周四和周六,刷CE-6 +[[tasks.variants]] +condition = { type = "Weekday", weekdays = ["Tue", "Thu", "Sat"] } +params = { stage = "CE-6" } + +# 在夏活期间,刷SL-8 +[[tasks.variants]] +params = { stage = "SL-8" } +condition = { type = "DateTime", start = "2023-08-01T16:00:00", end = "2023-08-21T03:59:59" } +``` + +这个例子和上面的例子将刷同样的关卡,但是在周天晚上,将会使用所有的将要过期的理智药。在 `merge` 策略下,如果有多个变体被匹配,后面的变体的参数将合并入前面的变体的参数中。如果多个变体都有相同的参数,那么后面的变体的参数将会覆盖前面的变体的参数。 + +如果没有变体被匹配,那么任务将不会被执行,这可以用于只在特定的条件下运行子任务: + +```toml +# 只在在18:00:00之后进行信用商店相关的操作 +[[tasks]] +type = "Mall" + +[[tasks.variants]] +condition = { type = "Time", start = "18:00:00" } +``` + +### 用户输入 + +对于一些任务,你可能想要在运行时输入一些参数,例如关卡名称。 你可以将对应需要输入的参数设置为 `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 (轻锰矿)" +] +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" # 描述,可选 +[tasks.variants.params.medicine] +# 依赖的参数,键为参数名,值为依赖的参数的预期值 +# 当设置时,只有所有的依赖参数都满足预期值时,这个参数才会被要求输入 +deps = { stage = "1-7" } +default = 1000 +description = "medicine to use" +``` + +对于 `Input` 类型,当运行任务时,你将会被提示输入一个值。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。 +对于 `Select` 类型,当运行任务时,你将会被提示输入一个的索引或者自定义的值(如果允许)。如果你输入了一个空值,如果有默认值,那么默认值将会被使用,否则你将会被提示重新输入。 + +`--batch` 选项可以用于在运行任务时跳过所有的输入,这将会使用默认值;如果有任何输入没有默认值,那么将会导致错误。 + +## MaaCore 相关配置 + +和 MaaCore 相关的配置需要放在 `$MAA_CONFIG_DIR/profiles` 目录中。该目录下的每一个文件都是一个配置文件,你可以通过 `-p` 或者 `--profile` 选项来指定配置文件名,不指定时尝试读取 `default` 配置文件。 + +目前支持的配置字段如下: + +```toml +[connection] +preset = "MuMuPro" +adb_path = "adb" +device = "emulator-5554" +config = "CompatMac" + +[resource] +global_resource = "YoStarEN" +platform_diff_resource = "iOS" +user_resource = true + +[static_options] +cpu_ocr = false +gpu_ocr = 1 + +[instance_options] +touch_mode = "MAATouch" +deployment_with_pause = false +adb_lite_enabled = false +kill_adb_on_exit = false +``` + +### 连接配置 + +`[connection]` 相关字段用于指定 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` 可执行文件的路径,你可以指定其路径,或者将其添加到环境变量 `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` 来使用预设的配置: + +```toml +[connection] +preset = "MuMuPro" # 使用 MuMuPro 预设的连接配置 +adb_path = "/path/to/adb" # 如果你需要的话,你可以覆盖预设的 adb 路径,大多数情况下你不需要这么做 +address = "127.0.0.1:7777" # 如果你需要的话,你可以覆盖预设的地址 +``` + +目前只有 `MuMuPro` 一个模拟器的预设,如果有其他常用模拟器的预设,欢迎提交 issue 或者 PR。 + +此处有一个特殊的预设 `PlayCover`,其用于在 macOS 上连接直接通过 `PlayCover` 原生运行的游戏客户端。这种情况下不需要指定 `adb_path` 且 `address` 不是 `adb` l连接的地址而是 `PlayTools` 的地址,具体使用参见 [PlayCover 支持文档][playcover-doc]. + +### 资源配置 + +`[resource]` 相关字段用于指定 MaaCore 加载的资源: + +```toml +[resource] +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`。 + +### 静态选项 + +`[static_options]` 相关字段用于指定 MaaCore 静态选项: + +```toml +[static_options] +cpu_ocr = false # 是否使用 CPU OCR,默认使用 CPU OCR +gpu_ocr = 1 # 使用 GPU OCR 时使用的 GPU ID,如果这个值被留空,那么将会使用 CPU OCR +``` + +### 实例选项 + +`[instance_options]` 相关字段用于指定 MaaCore 实例的选项: + +```toml +[instance_options] +touch_mode = "ADB" # 使用的触摸模式,可选值为 "ADB","MiniTouch","MAATouch" 或者 "MacPlayTools" +deployment_with_pause = false # 是否在部署时暂停游戏 +adb_lite_enabled = false # 是否使用 adb-lite +kill_adb_on_exit = false # 是否在退出时杀死 adb +``` + +注意,`touch_mode` 可选项 `MacPlayTools` 和连接方式 `PlayTools` 绑定。当你使用 `PlayTools` 连接时,`touch_mode` 将会被强制设置为 `MacPlayTools`。 + +## CLI 相关配置 + +CLI 相关的配置需要放在 `$MAA_CONFIG_DIR/cli.toml` 中。目前其包含的配置如下: + +```toml +# MaaCore 安装和更新相关配置 +[core] +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 对应的组件,不推荐使用,分开安装可能会导致版本不一致,从而导致一些问题,该选项可能在未来的版本中移除 +[core.components] +library = true # 是否安装 MaaCore 的库,默认为 true +resource = true # 是否安装 MaaCore 的资源,默认为 true + +# CLI 更新相关配置 +[cli] +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 对应的组件 +[cli.components] +binary = true # 是否安装 maa-cli 的二进制文件,默认为 true + +# 资源热更新相关配置 +[resource] +auto_update = true # 是否在每次运行任务时自动更新资源,默认为 false +backend = "libgit2" # 资源热更新后端,可选值为 "git" 或者 "libgit2",默认为 "git" + +# 资源热更新远程仓库相关配置 +[resource.remote] +branch = "main" # 远程仓库的分支,默认为 "main" +# 远程仓库的 url,如果你想要使用 ssh,你必须配置 ssh_key 的路径 +url = "https://github.com/MaaAssistantArknights/MaaResource.git" +# url = "git@github.com:MaaAssistantArknights/MaaResource.git" +# ssh_key = "~/.ssh/id_ed25519" # path to ssh key +``` + +**注意事项**: + +- MaaCore 的更新通道中 `Alpha` 只在 Windows 上可用; +- 由于 CLI 默认的 API 链接和下载链接都是 GitHub 的链接,因此在国内可能会有一些问题,你可以通过配置 `api_url` 和 `download_url` 来使用镜像。 +- 即使启动了资源热更新,你依然需要安装 MaaCore 的资源,因为资源热更新并不包含所有的资源文件,只是包含部份可更新的资源文件,基础资源文件仍然需要安装。 +- 资源热更新是通过 Git 来拉取远程仓库,如果后端设置为 `git` 那么 `git` 命令行工具必须可用。 +- 如果你想要使用 SSH 协议来拉取远程仓库,你必须配置 `ssh_key` 字段,这个字段应该是一个路径,指向你的 SSH 私钥。 +- 远程仓库的 `url` 设置目前只对首次安装资源有效,如果你想要更改远程仓库的地址,你需要通过 `git` 命令行工具手动更改,或者删除对应的仓库。仓库所在位置可以通过 `maa dir hot-update` 获取。 +- 远程仓库的 `url` 会根据你本机的语言自动设置,如果你的语言是简体中文,那么远程仓库的 `url` 将会被设置为国内的镜像 ,在其他情况则会被设置为 GitHub。如果你在国内但是使用的不是简体中文,或者在国外使用简体中文,那么你可能需要手动设置以获得最佳的体验。 + +## 参考配置 + +- [示例配置][example-config] +- [自用配置][wangl-cc-dotfiles] + +## 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]。 + +[task-types]: ../../protocol/integration.md#任务类型一览 +[emulator-ports]: ../../manual/faq.md#模拟器调试端口 +[playcover-doc]: ../../manual/device/macos.md#-playcover原生运行最流畅- +[example-config]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/config_examples +[wangl-cc-dotfiles]: https://github.com/wangl-cc/dotfiles/tree/master/.config/maa +[schema-dir]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/ +[task-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/task.schema.json +[asst-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/asst.schema.json +[cli-schema]: https://github.com/MaaAssistantArknights/maa-cli/blob/main/maa-cli/schemas/cli.schema.json + + diff --git a/docs/zh-tw/manual/cli/faq.md b/docs/zh-tw/manual/cli/faq.md new file mode 100644 index 0000000000..89d614b43b --- /dev/null +++ b/docs/zh-tw/manual/cli/faq.md @@ -0,0 +1,35 @@ +--- +order: 5 +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` 作为配置文件目录? + +由于 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" +ln -s "$HOME/.config/maa" "$(maa dir config)" +``` + +## 2. 运行过程中出现奇怪日志,如何关闭? + +MaaCore 的依赖 `fastdeploy` 会输出一些日志,因此你在运行 maa-cli 时可能会看到类似于下面的日志: + +```plaintext +[INFO] ... /fastdeploy/runtime.cc(544)::Init Runtime initialized with Backend::ORT in Device::CPU.` +``` + +这个日志是由 `fastdeploy` 输出的,对于官方预编译的 MaaCore,这个日志无法关闭。但是如果你是使用包管理器安装的 maa-cli,你可以尝试安装包管理器提供的 MaaCore。包管理器提供的 MaaCore 使用了较新版本的 `fastdeploy`,其日志默认是关闭的。 + +## 3. 在 macOS 下使用 maa-cli 启动的 PlayCover 游戏客户端,无法代理作战且肉鸽无法结算 + +由于未知原因,通过终端启动的 PlayCover 游戏客户端无法代理作战,且肉鸽无法结算。但是该状况仅限于通过终端运行的 maa-cli。因此如果你是在终端交互使用,那么你可能需要手动启动游戏。如果你是通过 cron 等方式运行 maa-cli,那么该问题不会影响你的使用。 + + diff --git a/docs/zh-tw/manual/cli/install.md b/docs/zh-tw/manual/cli/install.md new file mode 100644 index 0000000000..2321387a5f --- /dev/null +++ b/docs/zh-tw/manual/cli/install.md @@ -0,0 +1,124 @@ +--- +order: 2 +icon: material-symbols:download +--- + +# 安装及编译 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +maa-cli 提供多种方式安装,包括包管理器、预编译二进制文件和通过 `cargo` 自行编译安装。 + +## 通过包管理器安装 + +对于 macOS 和受支持的 Linux 发行版用户,推荐使用包管理器安装 maa-cli。 + +### macOS + +Homebrew 用户可以通过非官方的 [tap](https://github.com/MaaAssistantArknights/homebrew-tap/) 安装 maa-cli: + +- 稳定版本: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli + ``` + +- 不稳定预发行版本: + + ```bash + brew install MaaAssistantArknights/tap/maa-cli-beta + ``` + +### Linux + +- Arch Linux 用户可以安装 [AUR 包](https://aur.archlinux.org/packages/maa-cli/): + + ```bash + yay -S maa-cli + ``` + +- ❄️ Nix 用户可以直接运行: + + ```bash + # 稳定版 + nix run nixpkgs#maa-cli + ``` + + ```bash + # 每夜构建 + 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 Action 每日自动更新和构建验证。 + +- 对于在 Linux 上使用 Homebrew 的用户,参见上述 macOS 的安装方式。 + +## 预编译二进制文件 + +如果你的系统不受支持或者不想使用包管理器,你可以点击以下链接下载对应平台的预编译二进制文件,解压后将可执行文件放入 `PATH` 中即可使用。 + +- [macOS](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-universal-apple-darwin.zip) +- [Linux x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-unknown-linux-gnu.tar.gz) +- [Linux aarch64 (arm64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-aarch64-unknown-linux-gnu.tar.gz) +- [Windows x86_64 (x64, amd64)](https://github.com/MaaAssistantArknights/maa-cli/releases/latest/download/maa_cli-v0.4.5-x86_64-pc-windows-msvc.zip) + +如果你的平台不在上述列表中,可以尝试自行编译安装(参见下文)。 + +## 编译安装 + +Rust 开发者可以通过 `cargo` 自行编译安装 maa-cli: + +- 稳定版本: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --tag stable --locked + ``` + +- 开发版本: + + ```bash + cargo install --git https://github.com/MaaAssistantArknights/maa-cli.git --bin maa --locked + ``` + +### 编译选项 + +从源码编译时,你可以通过 `--no-default-features` 禁用默认的特性,然后通过 `--features` 来启用特定的特性。目前可用的特性有: + +- `cli_installer`: 启用 `maa self update` 命令,用于更新自身,这个特性默认启用; +- `core_installer`: 启用 `maa install` 和 `maa update` 命令,用于安装和更新 MaaCore 及资源,这个特性默认启用; +- `git2`: 提供 `libgit2` 资源更新后端,这个特性默认启用; +- `vendored-openssl`: 自行编译 `openssl` 库,而不是使用系统的 `openssl` 库,这个特性默认禁用,这个特性通常在你的系统没有安装 `openssl` 库或者 `openssl` 版本过低时启用。 + +## 安装 MaaCore 及资源 + +maa-cli 只提供了一个命令行界面,它需要 MaaCore 和资源来运行任务。一旦 maa-cli 安装完成,你可以通过它安装 MaaCore 及资源: + +```bash +maa install +``` + +对于使用包管理器安装的用户,可以通过包管理器安装 MaaCore: + +- Homebrew: + + ```bash + brew install MaaAssistantArknights/tap/maa-core + ``` + +- Arch Linux: + + ```bash + yay -S maa-assistant-arknights + ``` + +- Nix: + + ```bash + nix-env -iA nixpkgs.maa-assistant-arknights + ``` + +**注意**:只有使用包管理器安装 maa-cli 的用户才能使用包管理器安装 MaaCore,否则请使用 `maa install` 命令安装。此外,`maa install` 通过下载官方预编译的 MaaCore,而包管理器安装的 MaaCore 的编译选项和依赖版本与官方预编译的版本不同。这不会影响 maa-cli 的使用,但可能会导致 MaaCore 的功能和性能有所不同。比如,包管理器安装的 MaaCore 使用较新版本的 `fastdeploy`,而官方预编译的 MaaCore 使用较旧版本的 `fastdeploy`。而在新版本的 `fastdeploy` 中,日志可以被隐藏,这可以消除了一些不必要的日志输出。 + + diff --git a/docs/zh-tw/manual/cli/intro.md b/docs/zh-tw/manual/cli/intro.md new file mode 100644 index 0000000000..3328a5193f --- /dev/null +++ b/docs/zh-tw/manual/cli/intro.md @@ -0,0 +1,27 @@ +--- +order: 1 +icon: material-symbols:toc +--- + +# 介绍 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +一个使用 Rust 编写的简单 [MAA][maa-home] 命令行工具。 + +## 功能 + +- 运行预定义或自定义的任务,例如 `maa fight`,`maa run `; +- 使用 `maa install` 和 `maa update` 安装和更新MaaCore及资源; +- 使用 `maa self update` 更新自身。 + +## 文档 + +- [安装及编译](install.md) +- [使用](usage.md) +- [配置](config.md) +- [常见问题](faq.md) + +[maa-home]: https://github.com/MaaAssistantArknights/MaaAssistantArknights/ diff --git a/docs/zh-tw/manual/cli/usage.md b/docs/zh-tw/manual/cli/usage.md new file mode 100644 index 0000000000..17e043a971 --- /dev/null +++ b/docs/zh-tw/manual/cli/usage.md @@ -0,0 +1,97 @@ +--- +order: 3 +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 的功能。 + +## 管理 MaaCore + +maa-cli 可以安装和更新 MaaCore 及资源,只需运行以下命令: + +```bash +maa install # 安装 MaaCore 及资源 +maa update # 更新 MaaCore 及资源 +``` + +## 更新 maa-cli 自身 + +maa-cli 可以更新自身,只需运行以下命令: + +```bash +maa self update +``` + +**注意**:使用包管理器安装 maa-cli 的用户请使用包管理器更新 maa-cli,此命令在这些用户中无效。 + +## 运行任务 + +一旦完成了 MaaCore 的安装,通常情况下,你无需额外配置就可以直接运行任务。默认配置可能不适用于所有用户,如果你在运行任务时遇到问题,你可以参考 [配置文档][config-core] 修改配置。 + +### 预定义任务 + +对于常见任务,maa-cli 提供了一些预定义的任务: + +- `maa startup [client]`: 启动游戏并进入主界面,`[client]` 是客户端类型,如果留空则不会启动游戏客户端。 +- `maa closedown`: 关闭游戏客户端; +- `maa fight [stage]`: 运行战斗任务,`[stage]` 是关卡名称,例如 `1-7`;留空选择上次或者当前关卡; +- `maa copilot `: 运行自动战斗任务,其中 `` 是作业的 URI,其可以是 `maa://1234` 或者本地文件路径 `./1234.json`; +- `maa roguelike [theme]`: 自动集成战略,`[theme]` 是集成战略的主题,可选值为 `Phantom`,`Mizuki` 以及 `Sami`; + +上述任务接受一些参数,你可以通过 `maa --help` 来查看具体的参数。 + +对于官服玩家,如果你想要打开游戏,使用 3 个理智药刷 BB-7,然后关闭游戏,你可以运行以下命令: + +```bash +maa startup Official && maa fight BB-7 -m 3 && maa closedown +``` + +### 自定义任务 + +由于MAA支持的任务繁多,maa-cli无法提供所有任务的预定义选项。除此之外,你可能需要像上述的例子一样运行多个任务。为了解决这个问题,maa-cli提供了自定义任务的功能。自定义任务能够组合不同的任务,并且更精细地控制每个任务的参数以及执行顺序。此外,自定义任务支持条件判断,可以根据条件来决定是否执行某个任务,或者以何种参数执行某个任务。这可以用于自动化你的日常任务。自定义任务通过配置文件定义,具体配置文件的位置和编写方式请参考 [自定义任务文档][custom-task]。在编写好配置文件后,你可以通过 `maa run ` 来运行自定义任务,这里的 `` 是一个自定义任务文件名,不包括扩展名。 + +### 任务总结 + +不管是预定义任务还是自定义任务,maa-cli 都会在任务运行结束后输出任务的总结信息, +其包括每个子任务的运行时间(开始时间、结束时间、运行时长)。对于部份任务,还会输出任务的结果汇总: + +- `fight` 任务: 关卡名称,次数,消耗理智药个数以及掉落统计; +- `infrast`: 各设施进驻的干员,对于制造站和贸易站,还会包括产物类型; +- `recruit`: 每次公招的 tag ,星级以及状态,以及总共的招募次数; +- `roguelike`: 探索次数,投资次数。 + +如果你不想要任务总结,可以通过 `--no-summary` 参数来关闭。 + +### 任务日志 + +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_LOG_PREFIX` 来改变这个行为。设置为 `Always` 时,总是会包含前缀,设置为 `Auto` 时输出到日志文件时会包含前缀,而输出到 stderr 时不会包含前缀,而设置为 `Never` 时即使是写入日志文件时也不会包含前缀。 + +### 其他子命令 + +除了上述的命令外,maa-cli 还提供了其他一些子命令: + +- `maa list`: 列出所有可用的任务; +- `maa dir `: 获取特定目录的路径,比如 `maa dir config` 可以用来获取配置目录的路径; +- `maa version`: 获取 `maa-cli` 以及 `MaaCore` 的版本信息; +- `maa convert [output]`: 将 `JSON`,`YAML` 或者 `TOML` 格式的文件转换为其他格式; +- `maa complete `: 生成自动补全脚本; +- `maa activity [client]`: 获取游戏的当前活动信息,`client` 是客户端类型,默认为 `Official`。 +- `maa cleanup`: 清除 `maa-cli` 和 `MaaCore` 的缓存。 +- `maa import [-t ]:` 导入配置文件,`file` 是配置文件的路径。`-t` 选项可以指定配置文件的类型,如 `cli`, `profile`, `infrast` 等。 + +更多命令的使用方法可以通过 `maa help` 查看,具体命令的使用方法可以 通过 `maa help ` 查看。 + +[config-core]: config.md#MaaCore-相关配置 +[custom-task]: config.md#自定义任务 + + diff --git a/docs/zh-tw/manual/connection.md b/docs/zh-tw/manual/connection.md new file mode 100644 index 0000000000..92e5285d6d --- /dev/null +++ b/docs/zh-tw/manual/connection.md @@ -0,0 +1,241 @@ +--- +order: 3 +icon: mdi:plug +--- + +# 連接設置 + +:::note +實體機相關問題請同時參閱 [Android 實體設備](./device/android.md)。 +::: + +## ADB 路徑 + +:::info 技術細節 +自動偵測使用的是模擬器的 ADB,但有時自動偵測可能會出現問題,此時需要手動設置。 +`強制替換 ADB` 是下載 Google 提供的 ADB 後進行替換,即可一勞永逸地設置 Google 的 ADB。 +::: + +### 使用模擬器提供的 ADB + +前往模擬器安裝路徑,Windows 可在模擬器運行時在任務管理器中右鍵進程點擊 `打開文件所在的位置`。 + +顶層或下層目錄中應該會有一個名字中帶有 `adb` 的 exe 文件,可以使用搜索功能,然後選擇。 + +:::details 一些例子 +`adb.exe` `HD-adb.exe` `adb_server.exe` `nox_adb.exe` +::: + +### 使用谷歌提供的 ADB + +[點擊下載](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)後解壓,然後選擇其中的 `adb.exe`。 + +推薦直接解壓到 MAA 文件夾下,這樣可以直接在 ADB 路徑中填寫 `.\platform-tools\adb.exe`,也可以隨著 MAA 文件夾一起移動。 + +## 連接地址 + +::: tip +運行在本機的模擬器連接地址應該是 `127.0.0.1:<端口號>` 或 `emulator-<四位數字>`。 +::: + +### 獲取端口號 + +#### 模擬器相關文檔及參考端口 + +- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` +- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` +- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` +- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` +- [逍遙](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 12 多開器右上角可查看正在運行的多開端口。 +- Bluestacks 5 模擬器設置內可查看當前的多開端口。 +- *待補充* + +#### 備選方案 + +- 方案 1:使用 ADB 命令查看模擬器端口 + + 1. 啟動**一個**模擬器,並確保沒有其他安卓設備連接在此電腦上。 + 2. 在存放有 ADB 可執行文件的文件夾中啟動終端。 + 3. 執行以下命令。 + + ```sh + # Windows 命令提示符 + adb devices + # Windows PowerShell + .\adb devices + ``` + + 以下是輸出內容的例子: + + ```text + List of devices attached + 127.0.0.1:<端口號> device + emulator-<四位數字> device + ``` + + 使用 `127.0.0.1:<端口>` 或 `emulator-<四位數字>` 作為連接地址。 + +- 方案 2 : 查找已建立的 adb 連接 + + 1. 執行方案 1。 + 2. 按 `徽標鍵+S` 打開搜索欄,輸入 `資源監視器` 並打開。 + 3. 切換到 `網路` 選項卡,在 `監聽端口` 的名稱列中查找模擬器進程名,如 `HD-Player.exe`。 + 4. 記錄模擬器進程的所有監聽端口。 + 5. 在 `TCP 連接` 的名稱列中查找 `adb.exe`,在遠程端口列中與模擬器監聽端口一致的端口即為模擬器調試端口。 + +### 自動啟動多開模擬器 + +若需要多開模擬器同時操作,可將 MAA 文件夾複製多份,使用 **不同的 MAA**、**同一個 adb.exe**、**不同的連接地址** 來進行連接。 +**以[藍叠國際版](./device/windows.md)為例**,介紹兩種啟動多開模擬器的方式。 + +#### 通過為模擬器 exe 附加命令來進行多開操作 + +1. 啟動**單一**模擬器多開。 +2. 打開任務管理器,找到對應模擬器進程,轉到詳細信息選項卡,右鍵列首,點擊 `選擇列`,勾選 `命令行`。 +3. 在多出來的 `命令行` 列中找到 `...\\Bluestacks_nxt\\HD-Player.exe"` 後的內容。 +4. 將找到的類似於 `--instance Nougat32` 的內容填寫到 `啟動設置` - `附加命令` 中。 + +::: tip +操作結束後建議重新隱藏 `步驟 2` 中打開的 `命令行` 列以防止卡頓 +::: + +::: details 示例 + +```text +多開1: +模擬器路徑: C:\Program Files\BlueStacks_nxt\HD-Player.exe +附加命令: --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" +``` + +其中 `--cmd launchApp --package` 部分為啟動後自動運行指定包名應用,可自行更改。 +::: + +#### 通過使用模擬器或應用的快捷方式來進行多開操作 + +1. 打開多開管理器,新增對應模擬器的快捷方式。 +2. 將模擬器快捷方式的路徑填入 `啟動設置` - `模擬器路徑` 中 + +::: tip +部分模擬器支持創建應用快捷方式,可直接使用應用的快捷方式直接啟動模擬器並打開明日方舟 +::: + +::: details 示例 + +```text +多開1: +模擬器路徑: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開1.lnk +多開2: +模擬器路徑: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多開2-明日方舟.lnk +``` + +::: + +若使用 `模擬器路徑` 進行多開操作,建議將 `啟動設置` - `附加命令` 置空。 + +### 藍叠模擬器 Hyper-V 每次啟動端口號都不一樣 + +在 `連接設置` 中設置 `連接配置` 為 `藍叠模擬器` ,隨後勾選 `自動檢測連接` 和 `每次重新檢測`。 + +通常情況下這樣就可以連接。如果無法連接,可能是存在多個模擬器核心或出現了問題,請閱讀下文進行額外設置。 + +#### 指定 `Bluestacks.Config.Keyword` + +::: info 注意 +如果啟用了多開功能或安裝了多個模擬器核心,則需要進行額外設置來指定使用的模擬器編號 +::: + +在 `.\config\gui.json` 中搜索 `Bluestacks.Config.Keyword` 字段,内容為 `"bst.instance.<模擬器編號>.status.adb_port"`,模擬器編號可在模擬器路徑的 `BlueStacks_nxt\Engine` 中看到 + +::: details 示例 +Nougat64 核心: + +```json +"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", +``` + +Pie64_2 核心:(核心名稱後的數字代表這是一個多開核心) + +```json +"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", +``` + +::: + +#### 指定 `Bluestacks.Config.Path` + +::: info 注意 +MAA 現在會嘗試從註冊表中讀取 `bluestacks.conf` 的存儲位置,當該功能無法工作時,則需要手動指定配置文件路徑 +::: + +1. 在藍叠模擬器的數據目錄下找到 `bluestacks.conf` 這個文件 + + - 國際版默認路徑為 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` + - 中國內地版默認路徑為 `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf` + +2. 如果是第一次使用,請運行一次 MAA,使 MAA 自動生成配置文件。 + +3. **先關閉** MAA,**然後**打開 `gui.json`,找到 `Configurations` 下的當前配置名字段(可在 設置-切換配置 中查看,默認為 `Default`),在其中搜索字段 `Bluestacks.Config.Path`,填入 `bluestacks.conf` 的完整路徑。(注意斜槓要用轉義 `\\`) + +::: details 示例 +以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 為例 + +```json +{ + "Configurations": { + "Default": { + "Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf" + // 其餘配置字段,不要手動輸入修改 + } + } +} +``` + +::: + +## 連接配置 + +需選擇對應模擬器的配置,若列表中沒有則選擇通用配置。若通用配置不可用請嘗試並選擇其他任一可用的配置。 + +具體區別可以閱讀[源碼](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/dev/resource/config.json#L68)。 + +### MuMu 截圖增強模式 + +需使用官版 MuMu 12 V3.8.13 及更新版本,並關閉後台保活。方舟專版、國際版等暫不支持。 + +1. `設置` - `連接設置`,勾選 `啟用 MuMu 截圖增強模式`。 + +2. `MuMu 模擬器路徑` 填寫 `MuMuPlayer-12.0` 文件夾的路徑,如 `C:\Program Files\Netease\MuMuPlayer-12.0`。 + +3. `實例編號` 填寫 MuMu 多開器內對應模擬器的序號,如主多開為 `0`。 + +4. `實例屏幕` 填 `0`。 + +#### 關於後台保活 + +推薦關閉,此時實例屏幕始終為 `0`。 + +開啟時,MuMu 模擬器標籤頁的順序應為實例屏幕的序號,如 `0` 為模擬器桌面,`1` 為明日方舟客戶端。 + +針對後台保活的適配非常不完善,總會出現各種各樣莫名其妙的問題,非常不建議使用。 + +## 觸控模式 + +1. [Minitouch](https://github.com/DeviceFarmer/minitouch):使用 C 編寫的 Android 觸控事件器,操作 `evdev` 設備,提供 Socket 接口供外部程序觸發觸控事件和手勢。從 Android 10 開始,Minitouch 在 SELinux 為 `Enforcing` 模式時不再可用。[來源](https://github.com/DeviceFarmer/minitouch?tab=readme-ov-file#for-android-10-and-up) +2. [MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch):由 MAA 基於 Java 對 Minitouch 的重新實現,使用安卓的 `InputDevice`,並添加了額外特性。高版本 Android 可用性尚待測試。~~幫我們做做測試~~ +3. Adb Input:直接調用 ADB 使用安卓的 `input` 命令進行觸控操作,兼容性最強,速度最慢。 + +## ADB Lite + +由 MAA 獨立實現的 ADB Client,相較原版 ADB 可以避免不停開啟多個 ADB 進程,減少性能損耗,但部分截圖方式不可用。 + +推薦啟用,但具體優缺點尚待反饋。~~幫我們做做測試 x2~~ diff --git a/docs/zh-tw/manual/device/README.md b/docs/zh-tw/manual/device/README.md new file mode 100644 index 0000000000..01a7f3c4a1 --- /dev/null +++ b/docs/zh-tw/manual/device/README.md @@ -0,0 +1,9 @@ +--- +title: 模擬器和設備支持 +icon: mingcute:laptop-fill +index: false +dir: + order: 5 +--- + + diff --git a/docs/zh-tw/manual/device/android.md b/docs/zh-tw/manual/device/android.md new file mode 100644 index 0000000000..228a9a7f81 --- /dev/null +++ b/docs/zh-tw/manual/device/android.md @@ -0,0 +1,178 @@ +--- +order: 4 +icon: mingcute:android-fill +--- + +# Android 實體設備 + +::: info 注意 + +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 以避免任務出錯。 +::: + +::: tip +典型的 `16:9` 比例的解析度有 `3840*2160` (4K)、`2560*1440` (2K)、`1920*1080` (1080P)、`1280*720` (720P)。 +::: + +## 下載、運行 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. 將手機通過數據線連接至電腦,在剛剛的命令提示符視窗中輸入以下命令。 + + ```bash + adb devices + ``` + +- 成功執行後會顯示已連接 `USB 調試` 設備的信息。 + + - 連接成功的例子: + + ```bash + List of devices attached + VFNDU1682100xxxx device + ``` + + - **`device` 前的英文數字組合為設備序列號,同時也作為 MAA 的 `連接地址`。** + +- 現代安卓設備進行 `USB 調試` 需在被調試設備上點擊彈窗授權,若未授權則例子如下: + + ```bash + List of devices attached + VFNDU1682100xxxx unauthorized + ``` + +- 若無論如何都提示未授權或設備序列號後顯示 `offline`,則需重啟設備及電腦後重試。如仍未解決問題,可刪除當前用戶個人資料夾下的 `.android` 資料夾並再次重啟後重試,具體位置請自行搜尋。 + +## 更改解析度 + +::: tip +手機螢幕解析度為 `短邊*長邊`,而非電腦顯示器的 `長邊*短邊`。具體數值請根據目標設備自行確定。 +::: + +- 如果上文設備列表內僅有一台設備,則可直接運行以下命令更改/還原解析度。 + + ```bash + # 查看當前解析度 + adb shell wm size + # 還原預設解析度 + adb shell wm size reset + + # 更改解析度為 720p + adb shell wm size 720x1280 + # 更改解析度為 1080p + adb shell wm size 1080x1920 + ``` + +- 若存在多台設備,則需在 `adb` 和 `shell` 中間添加參數 `-s <目標設備序列號>`,例子如下。 + + ```bash + # 查看當前解析度 + adb -s VFNDU1682100xxxx shell wm size + # 還原預設解析度 + adb -s VFNDU1682100xxxx shell wm size reset + + # 更改解析度為 720p + adb -s VFNDU1682100xxxx shell wm size 720x1280 + # 更改解析度為 1080p + adb -s VFNDU1682100xxxx shell wm size 1080x1920 + ``` + +- 部分設計不規範的應用可能在還原解析度後內容佈局仍然錯亂,一般重啟對應應用或設備即可解決。 + +::: danger 注意 +強烈建議在**下次重啟設備前**還原解析度,否則因設備而定可能會導致不可預料的後果,~~包括但不限於佈局混亂,觸控錯位,應用閃退,無法解鎖等~~。 +::: + +## 自動化更改解析度 + +1. 在 MAA 目錄下新建兩個文本檔案,分別在其中填入以下內容。 + + ```bash + # 調整解析度為 1080p + 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 + ``` + +2. 將第一個檔案重命名為 `startup.bat`,第二個檔案重命名為 `finish.bat`。 + + - 如果重命名後沒有彈出修改擴展名的二次確認對話框,且檔案圖示沒有變化,請自行搜尋“Windows 如何顯示檔案擴展名”。 + +3. 在 MAA 的 `設定` - `連接設定` - `開始前腳本` 和 `結束後腳本` 中分別填入 `startup.bat` 和 `finish.bat`。 + +## 連接 MAA + +### 有線連接 + +::: tip +使用有線連接不需要任何 IP 地址或埠,只需要 `adb devices` 給出的設備序列號。 +::: + +1. 將上文獲取到的目標設備序列號填入 MAA `設定` - `連接設定` - `連接地址` 中。 +2. Link Start! + +### 無線連接 + +- 請確保設備與電腦處在同一區域網環境下且能互相通信。諸如 `AP 隔離`、`訪客網路` 等設定會阻止設備間通信,具體請查閱對應路由器文檔。 +- 無線調試在設備重啟後失效,需要重新設定。 + +#### 使用 `adb tcpip` 開啟無線埠 + +1. 在剛剛的命令提示符視窗中輸入以下命令以開啟無線調試。 + + ```bash + adb tcpip 5555 + # 存在多台設備則添加參數 -s 以指定序列號 + ``` + +2. 查看設備 IP 地址。 + + - 進入手機 `設定` - `WLAN`,點擊當前已連接的無線網路查看 IP 地址。 + - 各類品牌設備設定位置不同,請自行查找。 + +3. 將 `:5555` 填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:5555`。 +4. Link Start! + +#### 使用 `adb pair` 開啟無線埠 + +::: tip +`adb pair` 無線配對,即使用安卓 11 及更新版本中開發者選項內的 `無線調試` 進行配對後連接,與 `adb tcpip` 相比可以避免有線連接。 +::: + +1. 進入手機開發者選項,點擊 `無線調試` 並開啟,點擊確定,點擊 `使用配對碼配對設備`,在配對完成前不要關閉出現的彈窗。 + +2. 進行配對。 + + 1. 在命令提示符中輸入 `adb pair <設備彈窗給出的 IP 地址和埠>`,按回車。 + 2. 輸入 `<設備彈窗給出的六位配對碼>`,按回車。 + 3. 視窗出現 `Successfully paired to ` 等內容,同時設備上的彈窗自動消失,底部已配對的設備中出現計算機名稱。 + +3. 將當前設備螢幕上給出的 `` 填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:11451`,**一定和剛剛填寫的不一樣**。 +4. Link Start! + +#### 使用 root 權限開啟無線埠 + +~~都接觸到 root 了還用得著看這段文檔嗎~~ + +1. 下載、安裝 [WADB](https://github.com/RikkaApps/WADB/releases) 並授予其 root 權限。 +2. 打開 WADB,啟動無線 adb。 +3. 將 WADB 提供的 IP 地址及埠填入 MAA `設定` - `連接設定` - `連接地址` 中,如 `192.168.1.2:5555`。 +4. Link Start! diff --git a/docs/zh-tw/1.5-Linux模擬器支援.md b/docs/zh-tw/manual/device/linux.md similarity index 99% rename from docs/zh-tw/1.5-Linux模擬器支援.md rename to docs/zh-tw/manual/device/linux.md index 341b8cf5b0..a485d94b4e 100644 --- a/docs/zh-tw/1.5-Linux模擬器支援.md +++ b/docs/zh-tw/manual/device/linux.md @@ -1,7 +1,8 @@ --- +order: 3 icon: teenyicons:linux-alt-solid --- -# Linux 模擬器支援 +# Linux 模擬器與容器 ## 準備工作 diff --git a/docs/zh-tw/1.4-Mac模擬器支援.md b/docs/zh-tw/manual/device/macos.md similarity index 99% rename from docs/zh-tw/1.4-Mac模擬器支援.md rename to docs/zh-tw/manual/device/macos.md index 832c0065c1..f501175d91 100644 --- a/docs/zh-tw/1.4-Mac模擬器支援.md +++ b/docs/zh-tw/manual/device/macos.md @@ -1,11 +1,13 @@ --- +order: 2 icon: basil:apple-solid --- -# Mac模擬器支援 +# Mac 模擬器 ::: tip 遇到問題請先參考 [1.2-常見問題](1.2-常見問題.md) ::: + ## Apple Silicon 晶片 ### ✅ [PlayCover](https://playcover.io)(原生執行最流暢🚀) diff --git a/docs/zh-tw/manual/device/windows.md b/docs/zh-tw/manual/device/windows.md new file mode 100644 index 0000000000..297518cf39 --- /dev/null +++ b/docs/zh-tw/manual/device/windows.md @@ -0,0 +1,125 @@ +--- +order: 1 +icon: ri:windows-fill +--- + +# Windows 模擬器 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +以下模擬器排序為隨機產生,排名不分先後。 + + + +## ✅ 完美支持 + +
+ +## ⚠️ 部分支持 + +
+ +## 🚫 不支持 + +
diff --git a/docs/zh-tw/1.2-常見問題.md b/docs/zh-tw/manual/faq.md similarity index 97% rename from docs/zh-tw/1.2-常見問題.md rename to docs/zh-tw/manual/faq.md index daceb9223c..ae788cf606 100644 --- a/docs/zh-tw/1.2-常見問題.md +++ b/docs/zh-tw/manual/faq.md @@ -1,4 +1,5 @@ --- +order: 4 icon: ph:question-fill --- # 常見問題 @@ -18,7 +19,7 @@ icon: ph:question-fill > 此處僅列出官方安裝方法,我們無法保證第三方整合檔案的可靠性。 -- 請安裝 [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe)、[.NET8](https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-8.0.1-windows-x64-installer) 並重新啟動電腦後,再次嘗試執行本軟體。 +- 請安裝 [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe)、[.NET 8.0.6](https://dotnet.microsoft.com/en-us/download/dotnet/8.0#:~:text=x86-,.NET%20Desktop%20Runtime,-8.0.6) 並重新啟動電腦後,再次嘗試執行本軟體。 #### Windows N/KN 相關 @@ -153,6 +154,7 @@ MAA 現在會嘗試從註冊表中讀取 `bluestacks.conf` 的儲存位置,當 ::: details 範例 以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 為例 + ```json { "Configurations": { @@ -163,6 +165,7 @@ MAA 現在會嘗試從註冊表中讀取 `bluestacks.conf` 的儲存位置,當 } } ``` + ::: ## 連接正常,但是操作卡頓、異常或頻繁出錯 diff --git a/docs/zh-tw/manual/introduction/README.md b/docs/zh-tw/manual/introduction/README.md new file mode 100644 index 0000000000..81464cb32d --- /dev/null +++ b/docs/zh-tw/manual/introduction/README.md @@ -0,0 +1,9 @@ +--- +title: 功能介绍 +icon: mdi:information-outline +index: false +dir: + order: 2 +--- + + diff --git a/docs/zh-tw/manual/introduction/combat.md b/docs/zh-tw/manual/introduction/combat.md new file mode 100644 index 0000000000..c7f8be29ee --- /dev/null +++ b/docs/zh-tw/manual/introduction/combat.md @@ -0,0 +1,102 @@ +--- +order: 3 +--- + +# 刷理智 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 常规设置 + +- `吃理智药` + `吃源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智。 + + - `吃理智药` 指定补充几次理智(可能一次吃多瓶药)。 + - `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。 + - `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。 + - `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。 + +- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。`指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。 +- `吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后,MAA 会将 `吃理智药` 的次数锁定为 999,确保将理智药吃光,以避免跳过 `吃源石` 判断。 + +::: 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 行为_ | + +::: + +### 关卡选择 + +- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡 + 确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。 +- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。 +- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有: + - 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。 + - 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。 + - 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。 + - 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。 + - 剿灭作战。必须输入 `Annihilation`。 + - 别传中的 `OF-1` / `OF-F3` / `GT-5`。 + - 当期 SS 活动 后三关。在自动访问 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。 + - 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1 ~ XX-9 关,如 `SSReopen-IC`。 + +::: details 示例画面 +![示例画面](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/2d466efd-142a-4c28-9b2f-06caa08ef9f4) +::: + +### 剿灭模式 + +- MAA 只会通过终端首页右上角的剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。 +- 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。 +- 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。 + +## 高级设置 + +### 备选关卡 + +备选关卡根据当天关卡开放情况决定战斗关卡,即选择第一个开放关卡进行战斗。 + +1. 例子:关卡选择 `龙门币-6/5`,备选选择 `1-7` 和 `经验-6/5`: + - 如果当天开放 `龙门币-6/5`,就会前往 `龙门币-6/5`,不会前往 `1-7` 和 `经验-6/5`。如果玩家此时未解锁 `龙门币-6/5` 代理,则刷理智任务出错。 + - 如果当天未开放 `龙门币-6/5`,则会前往 `1-7`,不会前往 `龙门币-6/5`。如果玩家此时未解锁 1-7 代理,则刷理智任务出错。 + - 由于 `经验-6/5` 前存在常驻关卡 `1-7`,在这种情况下,MAA 永远也不会前往 `经验-6/5` 战斗。 +2. 如关卡选择为 `剿灭模式`,则不会因为剿灭的结果影响其余备选关卡的选择逻辑。即使剿灭出错,刷理智任务也不会出错。 + +### 剩余理智 + +在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。 + +- 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。 +- 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。 +- 若剩余理智仍然不足则会结束任务(如少于 6 理智)。 +- 如果剩余理智选择关卡为未开放关卡,则刷理智任务出错。 + +### 连战次数 + +- MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。 +- 若设置的次数过多但理智不足,MAA 会直接进行 `吃理智药` 或 `吃源石` 操作,并继续尝试连战。 +- 若未设置 `吃理智药` 或 `吃源石`,MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` ,MAA 会直接开始刷 `剩余理智` 关卡。 + +### 掉落识别 + +- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 +- 支持自定义企鹅物流用户 ID。 + +## 异常检测 + +- 支持自动勾选 `代理指挥`。 +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 支持等级提升后继续任务。 +- 代理失败时会放弃本次行动并重新战斗。 diff --git a/docs/zh-tw/manual/introduction/copilot.md b/docs/zh-tw/manual/introduction/copilot.md new file mode 100644 index 0000000000..60011833c0 --- /dev/null +++ b/docs/zh-tw/manual/introduction/copilot.md @@ -0,0 +1,43 @@ +--- +order: 9 +--- + +# 自动战斗 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +欢迎使用作业分享站 [prts.plus](https://prts.plus),[抄作业.com](https://抄作业.com) 使用及分享作业文件。 + +## 抄作业 + +支持任意 `可编队关卡` 和 `保全派驻` 模式的自动战斗。 + +- 本功能需要在有 `开始行动` 按钮的编队选择界面开始运行。 + 之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件` 或 `填写作业站神秘代码` 即可导入作业。 +- `自动编队` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。 + - 可根据个人需要(例如需要使用 `好友助战` 时)取消 `自动编队`,手动编队后开始。 + - 可根据任务需要为自动编队 `追加自定干员` 和 `补充低信赖干员`。 + - 对于「悖论模拟」关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。 + - 对于「保全派驻」关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。 +- 可设置 `循环次数`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。 +- 可使用 `战斗列表` 功能进行同一区域关卡的自动连续战斗。 + - 战斗列表下方三个按钮从左到右依次为 `批量导入`、`添加关卡`、`清空关卡`。 + `添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡, + - 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。 + - 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。 + - 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。 +- **请务必为优质作业点赞,以提高作业评分并激励作业制作者。** + ![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) + +## 写作业 + +- 请使用 [作业编辑器](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) 共同讨论作业制作等问题。 diff --git a/docs/zh-tw/manual/introduction/credit.md b/docs/zh-tw/manual/introduction/credit.md new file mode 100644 index 0000000000..3b85a8e50a --- /dev/null +++ b/docs/zh-tw/manual/introduction/credit.md @@ -0,0 +1,20 @@ +--- +order: 5 +--- + +# 获取信用及购物 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +- 会自动访问好友获取信用点,并前往信用交易所购物。 +- 借助战赚信用: + - MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。 + - 关卡选择为 `当前/上次` 时不会执行借助战任务。 + +## 高级设置 + +- 优先购买和黑名单都是关键字匹配,例如填 `碳` 会匹配 `碳` 和 `碳素`。 +- 分隔符的分号既可以使用英文半角 `;` 也可以使用中文全角 `;`。 +- `信用点低于300时停止购买商品` 即使在低于 300 时也会购买优先购买商品。 diff --git a/docs/zh-tw/manual/introduction/infrastructure.md b/docs/zh-tw/manual/introduction/infrastructure.md new file mode 100644 index 0000000000..7017c7e970 --- /dev/null +++ b/docs/zh-tw/manual/introduction/infrastructure.md @@ -0,0 +1,33 @@ +--- +order: 4 +--- + +# 基建换班 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 换班策略 + +- 自动计算并选择**单设施内的最优解**,支持所有通用类技能和特殊技能组合。 +- 自动识别经验书、赤金、源石碎片、芯片,分别使用相应的干员组合。 +- 自动按照 `无人机用途` 选择的方式使用无人机。 +- 自动识别心情进度条,将剩余心情百分比小于 `基建工作心情阈值` 的干员进驻宿舍。 + +## 额外说明 + +- 基建换班目前均为单设施最优解,而非跨设施的全局最优解。 + - 可识别并使用的例子:`巫恋+龙舌兰`、`红云+稀音`。 + - 不可识别并使用的例子:`迷迭香体系`、`红松骑士团`。 +- 若 `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。 +- 会客室仅缺一个线索时,会选择对应线索倾向的干员,其余情况选择通用干员。 +- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks.json` 中的 `SelectClue` - `maxTimes` 字段。 +- 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮`、`逻各斯` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。 +- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 +- 可自行选择需要 MAA 处理的设施类别,默认全选。 + +## 自定义基建换班 (Beta) + +- 一图流的大佬们帮忙写了一个 [排班生成器](https://ark.yituliu.cn/tools/schedule),可参考 [基建协议文档](../../protocol/base-scheduling-schema.md) 使用。 +- MAA 文件夹下 `/resource/custom_infrast/` 中内置了几套理论极限效率的作业,可用作参考。由于其对干员及练度的需求极高,不推荐直接使用。 diff --git a/docs/zh-tw/manual/introduction/integrated-strategy.md b/docs/zh-tw/manual/introduction/integrated-strategy.md new file mode 100644 index 0000000000..0872a28cc3 --- /dev/null +++ b/docs/zh-tw/manual/introduction/integrated-strategy.md @@ -0,0 +1,33 @@ +--- +order: 7 +--- + +# 自动肉鸽 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +MAA 默认选择最新一期主题,可在 `自动肉鸽` - `肉鸽主题` 中更改目标主题。 + +- 请在游戏内将对应肉鸽主题置顶在终端处,虽然目前也可以自动导航,但不保证长期可用性。 +- 请提前手动结束**非目标主题**的探索。 +- MAA 不会自动选择难度,在未选择难度的情况下会在难度选择界面卡住/反复进出。 +- 设置中可选择分队、开局干员(仅单个干员名)等。 + +## 战斗策略 + +MAA 没有 AI 功能,自动肉鸽中的一切操作都是预设的策略,所有关卡战斗都是调用内置的作业文件。 + +详情请查阅 [肉鸽协议](../../protocol/integrated-strategy-schema.md)。 + +- 支持自动识别干员及练度,并自动选择较优干员及技能。 +- 支持识别商店物品,优先购买更强力的收藏品。 + +## 异常检测 + +- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 +- 战斗时长超过 5 分钟会自动撤退所有地面单位,超过 6 分钟会自动放弃当局战斗,避免互相刮痧耗时。 +- 如果任务出现问题,会自动放弃当次探索并重试。 + +但如果多次在同一个位置卡住,请提交 Issue 反馈,并附带日志和截图。 diff --git a/docs/zh-tw/1.1-詳細介紹.md b/docs/zh-tw/manual/introduction/introduction_old.md similarity index 99% rename from docs/zh-tw/1.1-詳細介紹.md rename to docs/zh-tw/manual/introduction/introduction_old.md index 9d30641519..89955817fc 100644 --- a/docs/zh-tw/1.1-詳細介紹.md +++ b/docs/zh-tw/manual/introduction/introduction_old.md @@ -1,7 +1,9 @@ --- +order: 0 icon: ic:baseline-article --- -# MAA 使用說明 + +# 功能介紹(舊) ## 功能介紹 @@ -17,7 +19,7 @@ icon: ic:baseline-article - 剿滅作戰,必須輸入 `Annihilation`。 - 部分別傳,只支援 `OF-1` / `OF-F3` / `GT-5`。 - 當期 SideStory 後三關,在自動訪問 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下載更新後,會在主介面下方顯示相應提示。 - +
範例畫面 diff --git a/docs/zh-tw/manual/introduction/others.md b/docs/zh-tw/manual/introduction/others.md new file mode 100644 index 0000000000..b8827f391e --- /dev/null +++ b/docs/zh-tw/manual/introduction/others.md @@ -0,0 +1,29 @@ +--- +order: 11 +--- + +# 其他 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 启动时自动切换配置 + +MAA 支持通过启动参数自动切换配置,在 MAA 进程名后附加 `--config <配置名>` 即可。例子:`./MAA/MAA.exe --config 官服`。 + +部分符号需要转义,参考 Json。例子:在配置名为 `"官服"` 时,参数应为 `--config \"官服\"`。 + +## 开始前/结束后脚本 + +v4.13.0 后支持设置开始前/结束后脚本,可在任务前后自动执行批处理文件。输入框内需填写批处理文件即 `*.bat` 的绝对或相对路径。 + +## 其他说明 + +- 首页左侧任务可以拖动改变顺序,基建换班设置中设施顺序同理。 +- 主界面和设置中的配置更改通常会自动保存,标有 `*` 号或 `(仅一次)` 的选项,以及通过右键单击复选框得到的半选开关都会在 MAA 重启后重置。 +- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮中心的点击概率最高,距离中心越远,点击概率越低)。 +- 底层算法纯 C++ 开发,并设计了多重缓存技术,最大限度降低 CPU 和内存占用。 +- 软件支持自动更新 ✿✿ ヽ(°▽°)ノ ✿ ,推荐非杠精的同学使用公测版,一般来说更新快且 bug 少。(什么 MIUI (╯‵□′)╯︵┻━┻ +- 如果新版本自动下载失败,可手动下载 OTA 压缩包后直接放到 MAA 目录下,会自动更新的。 +- 在 Windows 版本中,MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。 diff --git a/docs/zh-tw/manual/introduction/reclamation-algorithm.md b/docs/zh-tw/manual/introduction/reclamation-algorithm.md new file mode 100644 index 0000000000..072dab0c51 --- /dev/null +++ b/docs/zh-tw/manual/introduction/reclamation-algorithm.md @@ -0,0 +1,24 @@ +--- +order: 8 +--- + +# 生息演算 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +目前生息演算的支持仍处于早期阶段,暂不推荐无人值守,现阶段无法保证稳定性。 + +## 默认模式 + +1. 需要在生息演算主界面开始任务(导航还没写) +2. 不能在已经有存档的情况下使用(删除现有存档即可) +3. 不能在生息演算的编队中有干员的情况下使用(把生息演算中的当前编队清空即可,特别是打完浪潮之后) + +## 制造刷点数 + +1. 需要在进入生息演算中能看到驻扎地的页面开始 +2. 若未填写道具名称,则默认制造荧光棒 +3. 前提条件:当前为结算后的第一天,且后续三天没有敌袭进入驻扎地 +4. 如果能制造的数量刚好是 99 的倍数会卡住,在存档前可以先用掉一点,这个之后再修 diff --git a/docs/zh-tw/manual/introduction/recruit.md b/docs/zh-tw/manual/introduction/recruit.md new file mode 100644 index 0000000000..e3c19c8322 --- /dev/null +++ b/docs/zh-tw/manual/introduction/recruit.md @@ -0,0 +1,23 @@ +--- +order: 2 +--- + +# 公开招募 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动公招 和 [公招识别](./tools.md#公招识别) 是两个不同的功能! + +## 自动公招 + +支持自动使用 `加急许可`,支持设置单次任务最大招募次数,可配合 `自动使用加急许可` 一次性刷光招募券。 + +当识别到出现 1、5、6 星标签都会弹出通知提示。 + +公招刷新时会自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 + +## 高级设置 + +`自动确认` 即 MAA 自动选择标签并进行招募,`手动确认` 即不进行自动选择与招募。 diff --git a/docs/zh-tw/manual/introduction/rewards.md b/docs/zh-tw/manual/introduction/rewards.md new file mode 100644 index 0000000000..47bc207a52 --- /dev/null +++ b/docs/zh-tw/manual/introduction/rewards.md @@ -0,0 +1,13 @@ +--- +order: 6 +--- + +# 领取奖励 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动领取每日奖励和每周奖励。 + +同时支持其他奖励类型,具体请查看设置。 diff --git a/docs/zh-tw/manual/introduction/startup.md b/docs/zh-tw/manual/introduction/startup.md new file mode 100644 index 0000000000..23911c7b24 --- /dev/null +++ b/docs/zh-tw/manual/introduction/startup.md @@ -0,0 +1,25 @@ +--- +order: 1 +--- + +# 开始唤醒 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +自动启动模拟器,自动启动客户端,自动进入游戏。 + +自动启动模拟器需额外设置,详见启动设置,且需勾选连接设置内的 `ADB 连接失败时尝试启动模拟器`。 + +## 账号切换 + +仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。 + +- 例子: + - 官服:`123****8901`,可输入 `123****8901`、`123`、`8901`、`3****8` + - B 服:`张三`,可输入 `张三`、`张`、`三` + +## 连接设置 + +[点我](../connection.md) diff --git a/docs/zh-tw/manual/introduction/tools.md b/docs/zh-tw/manual/introduction/tools.md new file mode 100644 index 0000000000..84e0663dfe --- /dev/null +++ b/docs/zh-tw/manual/introduction/tools.md @@ -0,0 +1,43 @@ +--- +order: 10 +--- + +# 小工具 + +::: important Translation Required +This page is outdated and maybe still in Simplified Chinese. Translation is needed. +::: + +## 公招识别 + +打开公招标签界面,点击开始识别即可启动。 + +如果之前运行过干员识别,在识别结束的干员名后还会显示潜能数据。 + +## 干员识别 (Beta) + +可识别持有与未持有的干员名单,并识别并保存潜能数据供公招识别显示。 + +## 仓库识别 (Beta) + +支持从首页自动进入仓库。若自动跳转失败,请手动切换到仓库 `养成材料` 界面并**滑动到最左侧**后开始功能。 + +目前支持导出到[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 干员培养表](https://ark-nights.com/settings)。 + +如您是某个数据站的站长,也欢迎联系我们适配贵站的材料 JSON 协议~ + +也许后面可能会用来做一些更实用的功能。(画饼 + +## 视频识别 (Alpha) + +可识别攻略视频,并自动生成作业文件,在自动战斗页面拖入视频文件即可启动。 + +要求 16:9 画幅 720p 及以上画质,无黑边、模拟器边框、异形屏适配等干扰因素。 + +## 牛牛抽卡 + +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** +**真的是用你的号抽你的卡 真的是用你的号抽你的卡 真的是用你的号抽你的卡** + +[牛牛航空](https://www.bilibili.com/opus/926129394412421126)没报上名?没关系!现在每个人都有自己的牛牛航空!并且在抽卡的过程中还会截图并显示在界面中央! diff --git a/docs/zh-tw/manual/newbie.md b/docs/zh-tw/manual/newbie.md new file mode 100644 index 0000000000..6e17b9f913 --- /dev/null +++ b/docs/zh-tw/manual/newbie.md @@ -0,0 +1,68 @@ +--- +order: 1 +icon: ri:guide-fill +--- + +# 新手上路 + +一句話教學! + +## 前置準備 + +1. 確認系統版本 + + MAA 僅支援 Windows 10 / 11,舊版 Windows 請參考[常見問題](./faq.md)置頂。 + +2. 安裝運行庫 + + MAA 需要 VCRedist x64 和 .NET 8,請右鍵開始按鈕打開終端,在終端內粘貼以下命令回車以進行安裝。 + + ```sh + winget install Microsoft.VCRedist.2015+.x64 Microsoft.DotNet.DesktopRuntime.8 + ``` + + 更多信息參考[常見問題](faq.md#可能性-2--執行庫問題)。 + +3. 下載正確的版本 + + [MAA 官網](https://maa.plus/)一般會自動選擇正確的版本架構,對於大多數閱讀本文的用戶來說,應為 Windows x64。 + +4. 正確解壓 + + 確認解壓完整,並確保將 MAA 解壓到一個獨立的文件夾中。請勿將 MAA 解壓到如 `C:\`、`C:\Program Files\` 等需要 UAC 權限的路徑。 + +5. 確認模擬器支援 + + 查閱[模擬器和設備支援](./device/),確認正在使用的模擬器支援情況。 + +6. 正確設置模擬器解析度 + + 模擬器解析度應為 `16:9` 比例,最低為 `1280x720`;對於國際服(美服)玩家,最低為 `1920x1080`。 + +## 初始配置 + +1. 跟隨設置指引進行配置,若沒有多開等特殊需求,則無需更改連接設置。 + +2. 第一次運行 MAA 時會進行熱更新,請在右側日誌處提示重啟後關閉 MAA 並重新啟動。 + +3. 拖拽左側任務列表對任務進行排序,勾選或取消勾選複選框選擇要運行的任務。 + +4. Link Start! + +## 進階配置 + +看文檔去! + +## 其他廢話 + +- **遇到問題多看文檔多看文檔多看文檔** + +1. 運行日誌位於 MAA 文件夾下的 `debug` 文件夾內。日誌很重要,非常重要。向他人尋求幫助時,請務必帶著 `asst.log` 和 `gui.log` 一同前去。 + +2. MAA 為了盡可能滿足所有用戶的各種需求,提供了大量的自定義選項。在認為 MAA 缺少了某項功能時,有可能只是沒找到而不是 MAA 沒有,如 `手動輸入關卡名` 和 `不將已進駐的幹員放入宿舍`。 + +3. 將鼠標指針放在某些選項上會給出詳細說明,如 `不將已進駐的幹員放入宿舍`。 + +4. 對於部分複選框來說,在其上右鍵單擊可以將其變為半選狀態,這種狀態下的複選框會在 MAA 下一次啟動時自動清除,可以理解為 `僅一次`。 + +5. 如果不知道自己需要什麼,不方便解決有可能會出現的問題,請勿使用內測版。 diff --git a/docs/zh-tw/3.6-基建排班協議.md b/docs/zh-tw/protocol/base-scheduling-schema.md similarity index 99% rename from docs/zh-tw/3.6-基建排班協議.md rename to docs/zh-tw/protocol/base-scheduling-schema.md index e725fdd6d5..eaf6dbe177 100644 --- a/docs/zh-tw/3.6-基建排班協議.md +++ b/docs/zh-tw/protocol/base-scheduling-schema.md @@ -1,6 +1,8 @@ --- +order: 6 icon: material-symbols:view-quilt-rounded --- + # 基建排班協議 `resource/custom_infrast/*.json` 的使用方法及各欄位說明 diff --git a/docs/zh-tw/3.2-回呼訊息協議.md b/docs/zh-tw/protocol/callback-schema.md similarity index 99% rename from docs/zh-tw/3.2-回呼訊息協議.md rename to docs/zh-tw/protocol/callback-schema.md index b8d79df5f0..0a3cc8098c 100644 --- a/docs/zh-tw/3.2-回呼訊息協議.md +++ b/docs/zh-tw/protocol/callback-schema.md @@ -1,4 +1,5 @@ --- +order: 2 icon: material-symbols:u-turn-left --- # 回呼訊息協議 @@ -450,7 +451,6 @@ Todo } ``` - - `RecruitTagsSelected` 公招選擇了 Tags @@ -564,7 +564,7 @@ Todo }, "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}" } - // 目前只支援 ArkPlanner 和 Lolicon 的格式,以後可能會兼容更多網站 + // 目前只支援 ArkPlanner 和 Lolicon (Arkntools) 的格式,以後可能會兼容更多網站 ``` - `OperBox` diff --git a/docs/zh-tw/3.3-戰鬥流程協議.md b/docs/zh-tw/protocol/copilot-schema.md similarity index 99% rename from docs/zh-tw/3.3-戰鬥流程協議.md rename to docs/zh-tw/protocol/copilot-schema.md index 893ee1c026..759d167284 100644 --- a/docs/zh-tw/3.3-戰鬥流程協議.md +++ b/docs/zh-tw/protocol/copilot-schema.md @@ -1,4 +1,5 @@ --- +order: 3 icon: ph:sword-bold --- # 戰鬥流程協議 diff --git a/docs/zh-tw/3.5-肉鴿輔助協議.md b/docs/zh-tw/protocol/integrated-strategy-schema.md similarity index 96% rename from docs/zh-tw/3.5-肉鴿輔助協議.md rename to docs/zh-tw/protocol/integrated-strategy-schema.md index 8d92f019b4..18c896aa94 100644 --- a/docs/zh-tw/3.5-肉鴿輔助協議.md +++ b/docs/zh-tw/protocol/integrated-strategy-schema.md @@ -1,7 +1,8 @@ --- +order: 5 icon: ri:game-fill --- -# 將你的肉鴿理解灌注給牛牛--集成戰略協議 +# 集成戰略協議 ::: tip 請注意 JSON 檔是不支援註解的,下方的註解僅用於說明,請勿直接複製使用 @@ -9,22 +10,19 @@ icon: ri:game-fill ## 肉鴿資源儲存位置 - - `resource/roguelike/` 下按照主題儲存各個肉鴿的作業資源 - - 主題資料夾:`Phantom/` 為傀影肉鴿資源,`Mizuki/` 為水月肉鴿資源,`Sami/` 為薩米肉鴿資源 - - `autopilot/` 內是各個關卡的作戰 json - - `關卡名.json` 關卡的作戰邏輯 - - `encounter.json` 不期而遇事件邏輯(刷等級模式) - - `encounter_for_deposit.json` 不期而遇事件邏輯(刷源石錠模式) - - `recruitment.json` 幹員招募邏輯 - - `shopping.json` 商店購買藏品邏輯 - - +- `resource/roguelike/` 下按照主題儲存各個肉鴿的作業資源 + - 主題資料夾:`Phantom/` 為傀影肉鴿資源,`Mizuki/` 為水月肉鴿資源,`Sami/` 為薩米肉鴿資源 + - `autopilot/` 內是各個關卡的作戰 json + - `關卡名.json` 關卡的作戰邏輯 + - `encounter.json` 不期而遇事件邏輯(刷等級模式) + - `encounter_for_deposit.json` 不期而遇事件邏輯(刷源石錠模式) + - `recruitment.json` 幹員招募邏輯 + - `shopping.json` 商店購買藏品邏輯 ## 肉鴿第一步--幹員招募 `resource/roguelike/主題名/recruitment.json` 描述了幹員招募的邏輯 - ```json { "theme": "Phantom", //肉鴿主題(這裡是傀影) @@ -37,7 +35,6 @@ icon: ri:game-fill } ``` - ### 幹員分類 按照你的遊戲理解將幹員分成不同的 ***groups*** (群組,相關概念參考 [戰鬥流程協議](3.3-戰鬥流程協議.md)) @@ -53,7 +50,7 @@ icon: ri:game-fill 4. 請盡量不要新增 group,盡量將新增進作業的單位按照用法納入已經存在的 group ::: - + ```json { "theme": "Phantom", @@ -81,7 +78,7 @@ icon: ri:game-fill 1. 已有群組介紹 - 以傀影肉鴿的作業為例:主要將幹員分為了 + 以傀影肉鴿的作業為例:主要將幹員分為了 | 分組 | 主要考量 | 主要包括職業 | 舉例幹員 | | :--- | :--- | :--- | :--- | | ***地面阻擋*** | 站場和清雜 | 重裝、近衛 | 奶盾、基石、羽毛筆、山、M3、令和稀音的召喚物、斑點、重裝預備幹員 | @@ -93,7 +90,7 @@ icon: ri:game-fill | ***炮灰*** | 吸收炮彈、再部署 | 特種、召喚物 | M3、紅、桃金娘、預備幹員 | | ***高台預備*** | 有一定輸出能力 | | 梓蘭、預備幹員 | -3. 需要特殊操作的群組 +2. 需要特殊操作的群組 除了上面那些比較籠統的分組,我們有時候需要對一些幹員或者幹員種類進行一些定制的精細化操作,比如 | 分組 | 包括幹員 | 主要特點 | @@ -146,11 +143,13 @@ icon: ri:game-fill ] } ``` + ### 調整幹員招募參數 1. 群組內的順序代表部署檢測的優先度 2. 群組內幹員各個欄位的意思和腳本相關的邏輯 + ```json { "theme": "Phantom", @@ -193,12 +192,11 @@ icon: ri:game-fill ] } ``` + 3. 按照你的理解新增群組和幹員 新增群組後,你可以從已有的群組中複製幹員過來,參考大佬們已有的評分,在此基礎上修改 - - ## 肉鴿第二步--戰鬥邏輯 `resource/roguelike/主題名/autopilot/關卡名.json` 描述了每個關卡的作戰策略 @@ -210,7 +208,7 @@ icon: ri:game-fill - MAA 會根據地圖上的格子是藍門還是紅門,是高台還是地面,能不能被部署來進行基本的戰鬥操作 - MAA 僅根據地圖名稱或者編號決定使用哪份作業,不會判斷地圖的 **普通**、**緊急**、**路網**、**密文板使用** 等情況 - + - MAA 不會判斷 **作戰中地圖上無法確定的格子的情況**,比如 `馴獸小屋` 的祭壇位置,`從眾效應` 是從左邊還是從右邊出怪 所以在後面,你需要盡量設計一套能夠應付一個地圖名 **所有不同情況**(上面提到的幾種情況)的戰鬥邏輯,小心被大家掛到 issue 上說這張圖操作高血壓哦(笑) @@ -237,7 +235,6 @@ icon: ri:game-fill 然後根據你的經驗尋找需要優先防守的點的坐標和朝向,寫入到 json 的 `"replacement_home"` 裡面 - ```json { "stage_name": "蓄水池", // 關卡名 @@ -279,6 +276,7 @@ icon: ri:game-fill ] ], ``` + 3. 其他地圖策略 比如水月肉鴿中如果藍門進怪了是不是要用骰子,緩解堆怪壓力 @@ -287,7 +285,7 @@ icon: ri:game-fill "not_use_dice_Doc": "藍門幹員撤退時是否需要用骰子,不寫預設 false", "not_use_dice": false, ``` - + ### 還是高血壓?是時候展現你真正的而技術了--定制作戰策略! 使用 `"deploy_plan"` 和 `"retreat_plan"` 實現定制化操作 @@ -297,7 +295,8 @@ icon: ri:game-fill 有時候不需要設定太多的定制策略,完成關鍵步驟後再交給 MAA,兩者結合可能效果更好 1. 使用各個群組部署幹員 - ```json + + ```json "deploy_plan": [ // 部署邏輯,按從上到下、從左到右的順序進行檢索,並嘗試部署找到的第一個幹員,如果沒有就跳過 { "groups": [ "百嘉", "基石", "地面C", "號角", "擋人先鋒" ], //這一步從這些群組中尋找幹員 @@ -317,10 +316,12 @@ icon: ri:game-fill ] ``` + 2. 在某個時間點部署幹員 ::: tip 適用於某些單切幹員或者需要炮灰的使用場景 ::: + ```json "deploy_plan": [ { @@ -338,10 +339,12 @@ icon: ri:game-fill ... ] ``` + 3. 在某個時間點撤退幹員 ::: tip 有時候炮灰過強站住場或者需要部署位騰挪陣容怎麽辦,撤退! ::: + ```json "retreat_plan": [ // 在特定時間點撤退目標 { @@ -350,12 +353,12 @@ icon: ri:game-fill } ] ``` -4. 在某個時間點釋放技能(to do) - -7. 一些其他的欄位(不推薦使用) +4. 在某個時間點釋放技能(to do) - ```json +5. 一些其他的欄位(不推薦使用) + + ```json "role_order_Doc": "幹員類型部署順序,未寫出部分以近衛,先鋒,醫療,重裝,狙擊,術士,輔助,特種,召喚物的順序補全,輸入英文", "role_order": [ // 不推薦使用,請配置 deploy_plan 欄位 "warrior", @@ -400,6 +403,7 @@ icon: ri:game-fill } ], ``` + ### 對某個幹員打法有特殊理解?--精細化操作特定幹員 請將這位幹員單獨分組 @@ -432,7 +436,7 @@ OCR 辨識不期而遇事件,但是選項是操作固定的位置 可以自己修改不期而遇事件選項以指引 MAA 走向某些圖的特殊結局 -```json +```json { "theme": "Sami", //肉鴿主題 "stage": [ //不期而遇類事件 @@ -460,13 +464,10 @@ OCR 辨識不期而遇事件,但是選項是操作固定的位置 ### 根據隊伍情況動態調整某些選項的優先度(TODO) - - ## 肉鴿第四步--商店藏品的優先度 `resource/roguelike/主題名/shopping.json` 描述了商店購買藏品(和戰鬥後選擇藏品?)的策略 - ```json { "theme": "Phantom", //肉鴿主題名(這裡是傀影) @@ -508,8 +509,6 @@ OCR 辨識不期而遇事件,但是選項是操作固定的位置 }, ``` - - ## 希望實現的邏輯(todo) ### 自動編隊邏輯 @@ -528,4 +527,6 @@ OCR 辨識不期而遇事件,但是選項是操作固定的位置 ### 技能關閉 -對彈藥類幹員有用 \ No newline at end of file +對彈藥類幹員有用 + + diff --git a/docs/zh-tw/3.1-集成文件.md b/docs/zh-tw/protocol/integration.md similarity index 97% rename from docs/zh-tw/3.1-集成文件.md rename to docs/zh-tw/protocol/integration.md index 1e6a7e0409..b0959930d5 100644 --- a/docs/zh-tw/3.1-集成文件.md +++ b/docs/zh-tw/protocol/integration.md @@ -1,4 +1,5 @@ --- +order: 1 icon: bxs:book --- # 集成文件 @@ -77,6 +78,7 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha "expiring_medicine": int, // 最大使用 48 小時內過期理智藥數量,可選,預設 0 "stone": int, // 最大吃石頭數量,可選,預設 0 "times": int, // 指定次數,可選,預設無窮大 + "series": int, // 連戰次數,可選,1~6 "drops": { // 指定掉落數量,可選,預設不指定 "30011": int, // key - item_id, value 數量. key 可參考 resource/item_index.json 檔案 "30062": int // 是或的關系 @@ -287,9 +289,12 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha "theme": int, // 主題,可選項。預設 1 // 0 - *沙中之火* // 1 - *沙洲遺聞* - "mode": int // 模式,可選項。預設 0 (僅主題 *沙中之火* 支持) + "mode": int, // 模式,可選項。默認為 0 // 0 - 刷分與建造點,進入戰鬥直接退出 - // 1 - 刷赤金,聯絡員買水後基地鍛造 + // 1 - 沙中之火:刷赤金,聯絡員買水後基地鍛造; + // 沙洲遺聞:自動製造物品並讀檔刷貨幣 + "product": string // 自動製造的物品,可選項,默認為荧光棒 + // 建議填寫子串 } ``` diff --git a/docs/zh-tw/protocol/remote-control-schema.md b/docs/zh-tw/protocol/remote-control-schema.md new file mode 100644 index 0000000000..7ee71e0a1a --- /dev/null +++ b/docs/zh-tw/protocol/remote-control-schema.md @@ -0,0 +1,160 @@ +--- +order: 8 +icon: mdi:remote-desktop +--- + +# 遠程控制協議 + +要實現對 MAA 的遠程控制,你需要提供一個服務,該服務必須是 http(s) 服務,並且提供下面兩個可匿名訪問的端點(Endpoint)。這兩個端點必須是 http(s) 協議的 web 端點。 + +::: warning +如果該端點為 http 協議,MAA 會在每次連接時發出不安全警告。**在公網部署明文傳輸服務是一種非常不推薦且危險的行為,僅供測試使用。** +::: + +::: tip +請注意 JSON 文件是不支持註釋的,文本中的註釋僅用於演示,請勿直接複製使用 +::: + +## 獲取任務端點 + +MAA 會以 1 秒的間隔持續輪詢這個端點,嘗試獲取它要執行的任務,並按照獲取到的列表按順序執行。 + +端點路徑隨意,但是必須是 http(s) 端點。比如:`https://your-control-host.net/maa/getTask` + +被控 MAA 需要將該端點填寫到 MAA 配置的`獲取任務端點`文本框中。 + +該端點必需能夠接受一個 `Content-Type=application/json` 的 POST 請求,並該請求必須可以接受下面這個 Json 作為請求的 content: + +```json +{ + "user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // 用戶在MAA設置中填寫的用戶標識符。 + "device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec" // MAA自動生成的設備標識符。 + ... // 如果你的這個端點還有其他用途,你可以自行添加可選的參數,但是MAA只會傳遞user和device +} +``` + +該端點必須返回一個 Json 格式的 Response,並且至少要滿足下列格式: + +```json +{ + "tasks": // 需要讓MAA執行的Task的列表,目前可以支持的類型如示例中所示,如果不存在tasks則視為連接無效。 + [ + // 順序執行的任務:下面這些任務會按照下發的順序排隊執行 + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "CaptureImage", //截圖任務,會截取一張當前模擬器的截圖,並以Base64字符串的形式放在匯報任務的payload裡。如果你需要下發這種類型的任務,請務必注意你的端點可接受的最大請求大小,因為截圖會有數十MB,會超過一般網關的默認大小限制。 + }, + { + "id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "LinkStart", //啟動一鍵長草 + }, + { + "id": "15be4725-5bd3-443d-8ae3-0a5ae789254c", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "LinkStart-Recruiting", //立即根據當前配置,單獨執行一鍵長草中的對應子功能,無視主界面上該功能的勾選框。這一類Type的可選值詳見下述 + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "Toolbox-GachaOnce", //工具箱中的牛牛抽卡任務,該類Type的可選取值為:Toolbox-GachaOnce, Toolbox-GachaTenTimes + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "Settings-ConnectionAddress", //修改配置項的任務,等同於執行ConfigurationHelper.SetValue("ConnectionAddress", params); 為了安全起見,不是每個配置都可以修改,能修改的配置詳見下述。 + "params": "value" //要修改的值 + }, + // 立即執行任務:下面這些任務可以在順序執行任務運行中執行,並且MAA保證下面的任何一個任務都會盡快返回結果,通常用於對遠程控制功能本身的控制。 + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "CaptureImageNow", //立刻截圖任務,和上面的截圖任務是基本一樣的,唯一的區別是這個任務會立刻被運行,而不會等待其他任務。 + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "StopTask", //"結束當前任務"任務,將會嘗試結束當前運行的任務。如果任務列表還有其他任務會繼續開始執行下一個。該任務不會等待並確認當前任務已停止才會返回,因此請使用心跳任務來確認停止命令是否已生效。 + }, + { + "id": "b353c469-b902-4357-bd8f-d133199eea31", //任務的唯一id,字符串類型,在匯報任務時會使用 + "type": "HeartBeat", //心跳任務,該任務會立即返回,並且將當前“順序執行的任務”隊列中正在執行的任務的Id作為Payload返回,如果當前沒有任務執行,返回空字符串。 + }, + ], + ... // 如果你的這個端點還有其他用途,你可以自行添加可選的返回值,但是MAA只會讀取tasks +} +``` + +這些任務會被按順序執行,也就是說如果你先發下一個公招任務,再發下一個截圖任務,則截圖會在公招任務結束後執行。 +該端點應當可以重入並且重複返回需要執行的任務,MAA 會自動記錄任務 id,對於相同的 id,不會重複執行。 + +::: note + +- LinkStart-[TaskName] 型的任務 type 的可選值為 LinkStart-Base,LinkStart-WakeUp,LinkStart-Combat,LinkStart-Recruiting,LinkStart-Mall,LinkStart-Mission,LinkStart-AutoRoguelike,LinkStart-ReclamationAlgorithm +- Settings-[SettingsName] 型的任務的 type 的可選值為 Settings-ConnectionAddress, Settings-Stage1 +- Settings 系列任務仍然是要按順序執行的,並不會在收到任務的時候立刻執行,而是排在上一個任務的後面 +- 多個立即執行的任務也會按下發順序執行,只不過這些任務的執行速度都很快,通常來說,並不需要關注他們的順序。 +::: + +## 匯報任務端點 + +每當 MAA 執行完一個任務,它就會通過該端點將任務的執行結果匯報給遠端。 + +端點路徑隨意,但是必須是 http(s) 端點。比如:`https://your-control-host.net/maa/reportStatus` + +被控 MAA 需要將該端點填寫到 MAA 配置的 `匯報任務端點` 文本框中。 + +該端點必需能夠接受一個 `Content-Type=application/json` 的 POST 請求,並該請求必須可以接受下面這個 Json 作為請求的 content: + +```json +{ + "user":"ea6c39eb-a45f-4d82-9ecc-33a7bf2ae4dc", // 用戶在MAA設置中填寫的用戶標識符。 + "device":"f7cd9682-3de9-4eef-9137-ec124ea9e9ec", // MAA自動生成的設備標識符。 + "task":"15be4725-5bd3-443d-8ae3-0a5ae789254c", // 要匯報的任務的Id,和獲取任務時的Id對應。 + "status":"SUCCESS", // 任務執行結果,SUCCESS或者FAILED。一般不論任務執行成功與否只會返回SUCCESS,只有特殊情況才會返回FAILED,會返回FAILED的情況,會在上面的任務介紹時明確說明。 + "payload":"", //匯報時攜帶的數據,字符串類型。具體取決於任務類型,比如截圖任務匯報時,這裡就會攜帶截圖的Base64字符串。 + ... // 如果你的這個端點還有其他用途,你可以自行添加可選的參數,但是MAA只會傳遞user和device +} +``` + +該端點的返回內容任意,但是如果你不返回 200OK,會在 MAA 端彈出一個 Notification,顯示 `上傳失敗` + +## 範例工作流-用 QQBot 控制 MAA + +A 開發者想要用自己的 QQBot 控制 MAA,於是他開發了一個後端,暴露在公網上,提供兩個端點: + +```text +https://myqqbot.com/maa/getTask +https://myqqbot.com/maa/reportStatus +``` + +為了讓用戶用的更方便,他的 getTask 接口不管接收什麼參數都默認返回 200OK 和一個空的 tasks 列表。 +每次他接收到一個請求,他就去數據庫裡看一下有沒有重複的 device,如果沒有,他就將該 device 和 user 記錄在數據庫。 +也就是說,在這個工作流下,這個接口同時還承擔了用戶註冊的功能。 + +他在 QQBot 上提供了一條指令,供用戶提交自己的 deviceId。 + +在它的 QQBot 的使用說明上,他告訴用戶,在 MAA 的用戶標識符中填寫自己的 QQ 號,然後將設備標識符通過 QQ 聊天發送給 Bot。 + +QQBot 在收到標識符後,再根據消息中的用戶 QQ 號,尋找數據庫中是否有對應的數據,如果沒有,則叫用戶先去配置 MAA。 + +因為 MAA 在配置好後就會持續的發送請求,因此如果用戶配置好了 MAA,在他通過 QQ 提交時,數據庫內應該有匹配的記錄。 + +這時 Bot 將數據庫內的該記錄設置一個已驗證標記,未來 getTask 再使用這套 device 和 user 請求時,就會返回真正的任務列表。 + +當用戶通過 QQBot 提交指令後,Bot 將一條任務寫入數據庫,這樣稍後,getTask 就會返回這條任務。並且,該 QQbot 還很貼心的,在每次用戶提交指令後,都默認再附加一個截圖任務。 + +MAA 在任務執行完後,會調用 reportStatus 匯報結果,Bot 在收到結果後,在 QQ 端發送消息通知用戶以及展示截圖。 + +## 範例工作流-用網站控制 MAA + +B 開發者寫了一個網站,設想通過網站批量管理 MAA,因此,他擁有一套自己的用戶管理系統。但是它的後端在公網上,提供兩個可匿名訪問的端點: + +```text +https://mywebsite.com/maa/getTask +https://mywebsite.com/maa/reportStatus +``` + +在網站上,有個連接 MAA 實例的界面,會展示一個 B 開發者稱之為 用戶密鑰 的隨機字符串,並有一個填入設備 id 的文本框。 + +網站要求用戶在 MAA 的 用戶標識符 中填寫自己的用戶密鑰,然後將 設備標識符 填入網站。 + +只有在網站上成功創建了 MAA 連接,getTask 才會返回 200OK,其他時候都返回 401Unauthorized。 + +因此如果用戶在 MAA 上填錯了,按下測試連接按鈕,會得到測試失敗的提示。 + +用戶可以在網站上下發任務,為任務排隊,查看截圖等等,這些功能的實現和上面 QQBot 例子類似,都是通過 getTask 和 reportStatus 組合完成。 diff --git a/docs/zh-tw/3.7-保全派駐協議.md b/docs/zh-tw/protocol/sss-schema.md similarity index 99% rename from docs/zh-tw/3.7-保全派駐協議.md rename to docs/zh-tw/protocol/sss-schema.md index 58a7fa6962..2b62990154 100644 --- a/docs/zh-tw/3.7-保全派駐協議.md +++ b/docs/zh-tw/protocol/sss-schema.md @@ -1,4 +1,5 @@ --- +order: 7 icon: game-icons:prisoner --- # 保全派駐協議 diff --git a/docs/zh-tw/3.4-任務流程協議.md b/docs/zh-tw/protocol/task-schema.md similarity index 99% rename from docs/zh-tw/3.4-任務流程協議.md rename to docs/zh-tw/protocol/task-schema.md index b64d28dc82..b72b01decc 100644 --- a/docs/zh-tw/3.4-任務流程協議.md +++ b/docs/zh-tw/protocol/task-schema.md @@ -1,4 +1,5 @@ --- +order: 4 icon: material-symbols:task --- # 任務流程協議 @@ -171,6 +172,7 @@ Base task 的邏輯優先於 template task。這代表 `"B@A": { "baseTask": "C" #### 多檔任務 如果後載入的任務檔案(例如外服 `tasks.json`,下稱文件二)中定義的任務在先載入的任務檔案(例如國服 `tasks.json`,下稱文件一)中也定義了同名任務,那麼: + - 如果文件二中任務沒有 `baseTask` 欄位,則直接繼承文件一中同名任務的欄位。 - 如果文件二中任務有 `baseTask` 欄位,則不繼承文件一中同名任務的欄位,而是直接取代。 diff --git a/docs/zh-tw/readme.md b/docs/zh-tw/readme.md index 244c53b563..8377b74b06 100644 --- a/docs/zh-tw/readme.md +++ b/docs/zh-tw/readme.md @@ -1,27 +1,22 @@ -
+--- +icon: ic:round-home +index: true +dir: + order: 0 +--- -LOGO +::: center + +![MAA Logo](https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png =256x256) # MaaAssistantArknights -
-
- C++ -
-
- platform -
-
- license - commit -
-
- stars - GitHub all releases -
-
+![C++](https://img.shields.io/badge/C++-20-%2300599C?logo=cplusplus) +![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blueviolet) +![license](https://img.shields.io/github/license/MaaAssistantArknights/MaaAssistantArknights) ![commit](https://img.shields.io/github/commit-activity/m/MaaAssistantArknights/MaaAssistantArknights?color=%23ff69b4) +![stars](https://img.shields.io/github/stars/MaaAssistantArknights/MaaAssistantArknights?style=social) ![GitHub all releases](https://img.shields.io/github/downloads/MaaAssistantArknights/MaaAssistantArknights/total?style=social) -[简体中文](../readme.md) | [繁體中文](../zh-tw/readme.md) | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) +[简体中文](../zh-cn/readme.md) | 繁體中文 | [English](../en-us/readme.md) | [日本語](../ja-jp/readme.md) | [한국어](../ko-kr/readme.md) MAA 的意思是 MAA Assistant Arknights @@ -29,9 +24,9 @@ MAA 的意思是 MAA Assistant Arknights 基於圖像辨識技術,一鍵完成全部日常任務! -絕讚更新中 ✿✿ヽ(°▽°)ノ✿
+絕讚更新中 ✿✿ヽ(°▽°)ノ✿ -
+::: ## 亮點功能 @@ -49,10 +44,28 @@ MAA 的意思是 MAA Assistant Arknights 話不多說,看圖! -![zh1](https://user-images.githubusercontent.com/9762652/259595058-1529207a-ef3d-4eca-a016-4759eb534c6e.png) -![zh2](https://user-images.githubusercontent.com/9762652/259594965-882b61e6-bf31-40c1-8c03-3f51f82a0d42.png) -![zh3](https://user-images.githubusercontent.com/9762652/259594874-07abdd9f-33f0-4446-8da3-799849bf7328.png) -![zh4](https://user-images.githubusercontent.com/9762652/259594649-c08b6558-7d17-45a8-9ba0-3ebc9a6f5589.png) +```component ImageGrid +{ + "imageList": [ + { + "light": "image/zh-cn/readme/1-light.png", + "dark": "image/zh-cn/readme/1-dark.png" + }, + { + "light": "image/zh-cn/readme/2-light.png", + "dark": "image/zh-cn/readme/2-dark.png" + }, + { + "light": "image/zh-cn/readme/3-light.png", + "dark": "image/zh-cn/readme/3-dark.png" + }, + { + "light": "image/zh-cn/readme/4-light.png", + "dark": "image/zh-cn/readme/4-dark.png" + } + ] +} +``` ## 下載地址 @@ -114,7 +127,7 @@ MAA 的意思是 MAA Assistant Arknights - ~~C++ base64 編解碼:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64)~~ - C++ 解壓壓縮庫:[zlib](https://github.com/madler/zlib) - C++ Gzip 封裝:[gzip-hpp](https://github.com/mapbox/gzip-hpp) -- 安卓觸控事件器:[minitouch](https://github.com/openstf/minitouch) +- 安卓觸控事件器:[Minitouch](https://github.com/DeviceFarmer/minitouch) - 安卓觸控事件器:[MaaTouch](https://github.com/MaaAssistantArknights/MaaTouch) - WPF MVVM 框架:[Stylet](https://github.com/canton7/Stylet) - WPF 控件庫:[HandyControl](https://github.com/HandyOrg/HandyControl) @@ -197,3 +210,5 @@ Bilibili 直播間:[直播間](https://live.bilibili.com/2808861) 每晚直播 開發者群:[QQ 群](https://jq.qq.com/?_wv=1027&k=JM9oCk3C) 如果覺得軟體對你有幫助,幫忙點個 Star 吧!~(網頁最上方右上角的小星星),這就是對我們最大的支持了! + + diff --git a/docs/协议文档/保全派驻协议.md b/docs/协议文档/保全派驻协议.md deleted file mode 100644 index 8037dfab76..0000000000 --- a/docs/协议文档/保全派驻协议.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -order: 7 -icon: game-icons:prisoner ---- - -# 保全派驻协议 - -::: tip -请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 -::: - -```json -{ - "type": "SSS", // 协议类型,SSS 表示保全派驻,必选,不可修改 - "stage_name": "多索雷斯在建地块", // 保全派驻地图名,必选 - "minimum_required": "v4.9.0", // 最低要求 maa 版本号,必选 - "doc": { - // 描述,可选 - "title": "低练度高成功率作业", - "title_color": "dark", - "details": "对练度要求很低balabala……", // 建议在这里写上你的名字!(作者名)、参考的视频攻略链接等 - "details_color": "dark" - }, - "buff": "自适应补给元件", // 开局导能元件选择,可选 - "equipment": [ - // 开局装备选择,横着数,可选 - // 当前版本暂未实现,只会在界面上显示一下 - "A", - "A", - "A", - "A", - "B", - "B", - "B", - "B" - ], - "strategy": "优选策略", // 或者 自由策略,可选 - // 当前版本暂未实现,只会在界面上显示一下 - "opers": [ - // 指定干员,可选 - { - "name": "棘刺", - "skill": 3, - "skill_usage": 1 - } - ], - "tool_men": { - // 剩余所需各职业人数,按费用排序随便拿,可选 - // 当前版本暂未实现,只会在界面上显示一下 - "Pioneer": 13, - "近卫": 2, // 中英文均可 - "Medic": 2 - }, - "drops": [ - // 战斗开始时和战斗中途,招募干员、获取装备优先级 - "空弦", - "能天使", // 支持干员名、职业名 - "先锋", // 职业名中英文均可 - "Support", - "无需增调干员", // 不招人 - "重整导能组件", // 支持装备名,全写一起.jpg - "反制导能组件", - "战备激活阀", // 关卡中途的可选装备,也也放这里 - "改派发讯器" - ], - "blacklist": [ - // 黑名单,可选。在 drops 里不会选这些人。 - // 后续版本支持编队后,编队工具人也不会选这些人 - "夜半", - "梅尔" - ], - "stages": [ - { - "stage_name": "蜂拥而上", // 单层关卡名,必选 - // 支持 name, stageId, levelId,推荐 stageId 或 levelId - // 请勿使用 code(例如 LT-1),因为会和其他保全关卡冲突 - - "strategies": [ - // 必选 - // 会按部署各 object 里的 tool_men,如果当前手牌都没有,才会部署下一个 object 里的 - { - "core": "棘刺", - "tool_men": { - "Pioneer": 1, // 中英文均可 - "Warrior": 1, - "Medic": 1 - }, - "location": [10, 1], - "direction": "Left" - }, - { - "core": "泥岩", - "tool_men": { - "Pioneer": 1, - "Warrior": 1, - "Medic": 1 - }, - "location": [2, 8], - "direction": "Left" - }, - { - // 不填写 core,可以用于部署辅助过牌的之类的 - "tool_men": { - "Support": 100 - }, - "location": [2, 8], - "direction": "Left" - } - ], - "draw_as_possible": true, // “调配干员”按钮,是否好了就用,可选,默认 true - "actions": [ - // 可选 - // 基本复用抄作业的逻辑,可参考 协议文档/战斗流程协议.md - // 符合 action 的条件就执行 action,否则执行上面的 strategies 的逻辑 - { - "type": "调配干员" // 新 type,“调配干员” 按钮,点一下,在 "draw_as_possible" 为 true 时无效 - }, - { - "type": "CheckIfStartOver", // 新 type,检查干员在不在,不在就退出重开 - "name": "棘刺" - }, - { - "name": "桃金娘", - "location": [4, 5], - "direction": "左" - }, - { - "kills": 10, - "type": "撤退", - "name": "桃金娘" - } - ], - "retry_times": 3 // 战斗失败重试次数,超过了直接放弃整局 - }, - { - "stage_name": "见者有份" - // ... - } - // 写几关打几关,比如只写到了 4,则打完 4 自动重开 - ] -} -``` - -## 示例文件 - -[SSS\_阿卡胡拉丛林.json](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/SSS_阿卡胡拉丛林.json) - -[SSS\_多索雷斯在建地块.json](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/SSS_多索雷斯在建地块.json) diff --git a/docs/协议文档/基建排班协议.md b/docs/协议文档/基建排班协议.md deleted file mode 100644 index d6da56d115..0000000000 --- a/docs/协议文档/基建排班协议.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -order: 6 -icon: material-symbols:view-quilt-rounded ---- - -# 基建排班协议 - -`resource/custom_infrast/*.json` 的使用方法及各字段说明 - -::: tip -请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 -::: - -[可视化排班生成工具](https://ark.yituliu.cn/tools/schedule) - -## 完整字段一览 - -```json -{ - "title": "小号的换班方案", // 作业名,可选 - "description": "哈哈哈哈", // 作业描述,可选 - "plans": [ - { - "name": "早班", // 计划名,可选 - "description": "lol", // 计划描述,可选 - "description_post": "", // 计划执行完时显示的描述,可选 - "period": [ - // 换班时间段,可选 - // 若当前时间在该区间内,则自动选择该计划(整个 json 文件中可能包含多个计划) - // 如果该字段不存在,则每次换班结束后,自动切换为下一个计划 - // core 不处理该字段,若您使用接口集成 maa,请自行实现该逻辑 - [ - "22:00", // 要求格式 hh:mm,目前只是简单的比较数字大小,如果要跨天请仿照该示例中写法 - "23:59" - ], - ["00:00", "06:00"] - ], - "duration": 360, // 工作持续时长(分钟),保留字段,目前无作用。以后可能到时间了弹窗提醒该换班了,或者直接自动换了 - "Fiammetta": { - // “菲亚梅塔” 为哪位干员使用,可选,不填写则不使用 - "enable": true, // 是否使用“菲亚梅塔”,可选,默认 true - "target": "巫恋", // 目标干员,使用 OCR 进行,需要传入对应客户端语言的干员名 - "order": "pre" // 在整个换班前使用,还是换完班才用,可选,取值范围 "pre" / "post",默认 "pre" - }, - "drones": { - // 无人机使用,可选,不填写则不使用无人机 - "enable": true, // 是否使用无人机,可选,默认 true - "room": "trading", // 为哪个类型房间使用,取值范围 "trading" / "manufacture" - "index": 1, // 为第几个该类型房间使用,对应左边 tab 栏序号,取值范围 [1, 5] - "rule": "all", // 使用规则,保留字段,目前无作用。以后可能拿来支持插拔等操作 - "order": "pre" // 在换干员前使用还是在换完才用,可选,取值范围 "pre" / "post",默认 "pre" - }, - "groups": [ - // 对于 "control" / "manufacture" / "trading",可以设置干员编组 - { - "name": "古+银", - "operators": ["古米", "银灰", "梅"] - }, - { - "name": "清流", - "operators": ["清流", "森蚺", "温蒂"] - } - ], - "rooms": { - // 房间信息,必选 - // 取值范围 "control" / "manufacture" / "trading" / "power" / "meeting" / "hire" / "dormitory" / "processing" - // 缺少某个则该设施使用默认算法进行换班。 - // 若想不对某个房间换班请使用 skip 字段,或直接在软件 任务设置 - 基建换班 - 常规设置 中取消改设施的勾选 - "control": [ - { - "operators": [ - "夕", // 使用 OCR 进行,需要传入对应客户端语言的干员名 - "令", - "凯尔希", - "阿米娅", - "玛恩纳" - ] - } - ], - "manufacture": [ - { - "operators": ["芬", "稀音", "克洛丝"], - "sort": false // 是否排序(按照上面 operators 的顺序),可选,默认 false - // 例子:当使用稀音、帕拉斯、巫恋、等干员且 "sort": false,干员顺序可能会被打乱,导致暖机效果丢失。 - // 使用 "sort": true,可以避免这个问题 - }, - { - "skip": true // 是否跳过当前房间(数组序号对应),可选,默认 false - // 若为 true,其他字段均可为空。仅跳过换干员操作,其他如使用无人机、线索交流等仍会正常进行 - }, - { - "operators": ["Castle-3"], - "autofill": true, // 使用原先的算法,自动填充剩下的位置,可选,默认 false - // 若 operators 为空,则该房间完整的使用原先算法进行排班 - // 若 operators 不为空,将仅考虑单干员效率,而不考虑整个组合效率 - // 注意可能和后面自定义的干员产生冲突,比如把后面需要的干员拿到这里用了,请谨慎使用,或将 autofill 的房间顺序放到最后 - "product": "Battle Record" // 当前制造产物,可选。 - // 若识别到当前设施与作业中设置的产物不符合,界面会弹个红色字样提示,以后可能有更多作用 - // 取值范围: "Battle Record" | "Pure Gold" | "Dualchip" | "Originium Shard" | "LMD" | "Orundum" - }, - { - "operators": ["多萝西"], - "candidates": [ - // 备选干员,可选。这里面的有谁用谁,选满为止 - // 与 autofill=true 不兼容,即该数组不为空时,autofill 需要为 false - "星源", - "白面鸮", - "赫默" - ] - }, - { - "use_operator_groups": true, // 设置为 true 以使用 groups 中的干员编组,默认为 false - "operators": [ - // 启用后, operators 中的名字将被解释为编组名 - "古+银", // 将按照心情阈值以及设置顺序选择编组 - "清流" // 如 古+银 组中有干员心情低于阈值,将使用 清流 组 - ] - } - ], - "meeting": [ - { - "autofill": true // 这个房间内整个 autofill - } - ] - } - }, - { - "name": "晚班" - // ... - } - ] -} -``` - -## 举例 - -[243 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/243_layout_3_times_a_day.json) - -[153 极限效率,一天三换](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/custom_infrast/153_layout_3_times_a_day.json) diff --git a/docs/协议文档/战斗流程协议.md b/docs/协议文档/战斗流程协议.md deleted file mode 100644 index 4683c1258b..0000000000 --- a/docs/协议文档/战斗流程协议.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -order: 3 -icon: ph:sword-bold ---- - -# 战斗流程协议 - -`resource/copilot/*.json` 的使用方法及各字段说明 - -::: tip -请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用 -::: - -## 完整字段一览 - -```json -{ - "stage_name": "暴君", // 关卡名,必选。关卡中文名、code、stageId、levelId等,只要能保证唯一均可。 - "opers": [ - // 指定干员 - { - "name": "重岳", // 干员名 - - "skill": 3, // 技能序号。可选,默认为 1,取值范围 [1, 3] - - "skill_usage": 2, // 技能用法。可选,默认为 0 - // 0 - 不自动使用(依赖 "actions" 字段) - // 1 - 好了就用,有多少次用多少次(例如干员 棘刺 3 技能、桃金娘 1 技能等) - // 2 - 使用 X 次(例如干员 山 2 技能用 1 次、重岳 3 技能用 5 次,通过 "skill_times" 字段设置) - // 3 - 自动判断使用时机(画饼.jpg) - // 如果是全自动的技能,填 0 - - "skill_times": 5, // 技能使用次数。可选,默认为 1 - - "requirements": { - // 练度要求。保留接口,暂未实现。可选,默认为空 - "elite": 2, // 精英化等级。可选,默认为 0, 不要求精英化等级 - "level": 90, // 干员等级。可选,默认为 0 - "skill_level": 10, // 技能等级。可选,默认为 0 - "module": 1, // 模组编号。可选,默认为 0 - "potentiality": 1 // 潜能要求。可选,默认为 0 - } - } - ], - "groups": [ - { - "name": "任意正常群奶", // 群组名,必选 - // 自己随便取名字,与下面 deploy 中的 name 对应起来就行 - - "opers": [ - // 干员任选其一,无序,会优先选练度高的,用法同上述 opers 字段 - { - "name": "夜莺", - "skill": 3, - "skill_usage": 2 // 若是指定时刻,不同的干员技能 cd 可能不同,请留意 - }, - { - "name": "白面鸮", - "skill": 2, - "skill_usage": 2 - } - ] - } - ], - "actions": [ - // 战斗中的操作。有序,执行完前一个才会去执行下一个。必选 - { - "type": "部署", // 操作类型,可选,默认为 "Deploy" - // "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera" - // "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" - // 中英文皆可,效果相同 - // 若为 "部署", 当费用不够时,会一直等待到费用够(除非 timeout) - // 若为 "技能", 当技能 cd 没转好时,一直等待到技能 cd 好(除非 timeout) - // "二倍速" 是可切换的,即使用一次变成二倍速,再次使用又变回一倍速 - // "子弹时间" 即点击任意干员后的 1/5 速度,再进行任意 action 会恢复正常速度 - // "name" 或 "location" 必填一项,即点哪个干员进入子弹时间,战场上的干员或待部署区的干员均可(会自动判断) - // 若下一个动作是 "技能" / "撤退",需要填与下一个动作相同的 "name" 或 "location" - // 若下一个动作是 "部署",随便填谁(但最好不要填待部署的那个人,头像被点了会影响识别) - // "打印" 界面不显示这条步骤,仅用于输出 doc 里的内容(用来做字幕之类的) - // "摆完挂机" 仅使用 "好了就用" 的技能,其他什么都不做,直到战斗结束 - // "移动镜头" 用于 “引航者试炼” 模式,还需要填写 distance 字段 - - // 目前下面四个条件是且的关系,即 && - "kills": 0, // 击杀数条件,如果没达到就一直等待。可选,默认为 0,直接执行 - - "costs": 50, // 费用条件,如果没达到就一直等待。可选,默认为 0,直接执行 - // 费用受潜能等影响,可能并不完全正确,仅适合对时间轴要求不严格的战斗。 - // 否则请使用下面的 cost_changes - // 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用 - - "cost_changes": 5, // 费用变化量条件,如果没达到就一直等待。可选,默认为 0,直接执行 - // 注意是从开始执行本 actions 开始计算的(即前一个 action 结束时的费用作为基准) - // 支持负数,即费用变少了(例如“孑”等吸费干员使得费用变少了) - // 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用 - - "cooling": 2, // CD 中干员数量条件,如果没达到就一直等待。可选,默认为 -1,不识别 - - // TODO: 其他条件 - // TODO: "condition_type": 0, // 执行条件间的关系,可选,默认为 0 - // // 0 - 且; 1 - 或 - - "name": "棘刺", // 干员名 或 群组名, type 为 "部署" 时必选,为 "技能" | "撤退" 时可选 - - "location": [5, 5], // 部署干员的位置。 - // type 为 "部署" 时必选。 - // type 为 "技能" | "撤退" 时可选, - // "技能":仅推荐场地上自动的装置等,不填写 name,并使用 location 开启技能。正常部署的干员推荐使用 name 开启技能 - // 撤退":仅推荐有多个同名召唤物时,不填写 name, 并使用 location 进行撤退。正常部署的干员推荐 name 进行撤退 - - "direction": "左", // 部署干员的干员朝向。 type 为 "部署" 时必选 - // "Left" | "Right" | "Up" | "Down" | "None" - // "左" | "右" | "上" | "下" | "无" - // 中英文皆可,效果相同 - - "skill_usage": 1, // 修改技能用法。当 type 为 "技能用法" 时必选 - // 举例:刚下淘金娘需要她帮忙打几个怪,不能自动开技能,中后期平稳了需要她自动开技能 - // 则可以在对应时刻设置为 1 - - "skill_times": 5, // 技能使用次数。可选,默认为 1 - - "pre_delay": 0, // 前置延时。可选,默认为 0, 单位毫秒 - "post_delay": 0, // 后置延时。可选,默认为 0, 单位毫秒 - - // "timeout": 999999999, // 保留字段,暂未实现。 - // 超时时间。当 type 为 "部署" | "技能" 时可选。默认 INT_MAX, 单位毫秒 - // 等待超时则放弃当前动作, 转而执行下一个动作 - "distance": [4.5, 0], // type 为 "移动镜头" 时必选 - // [ x 移动格子数,y 移动格子数 ],可为小数 - // 注意 "移动镜头" 时是识别不到正在站场中的,需要用 sleep 完整覆盖整个移动动画 - - "doc": "下棘刺了!", // 描述,可选。会显示在界面上,没有实际作用 - "doc_color": "orange" // 描述文字的颜色,可选,默认灰色。会显示在界面上,没有实际作用。 - }, - // 举例 1 - { - "name": "任意正常群奶", - "location": [5, 6], - "direction": "右" - }, - // 举例 2 - { - "name": "史尔特尔", - "location": [4, 5], - "direction": "左", - "doc": "你史尔特尔奶奶来啦!", - "doc_color": "red" - }, - // 举例 3 - { - "type": "二倍速" - } - ], - "minimum_required": "v4.0", // 最低要求 maa 版本号,必选。保留字段,暂未实现 - "doc": { - // 描述,可选。 - "title": "低练度高成功率作业", - "title_color": "dark", - "details": "对练度要求很低balabala……", // 建议在这里写上你的名字!(作者名)、参考的视频攻略链接等 - "details_color": "dark" - } -} -``` - -## 举例 - -[OF-1](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/resource/copilot/OF-1_credit_fight.json) diff --git a/docs/用户手册/常见问题.md b/docs/用户手册/常见问题.md deleted file mode 100644 index 007f05d0a2..0000000000 --- a/docs/用户手册/常见问题.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -icon: ph:question-fill ---- - -# 常见问题 - -::: warning -MAA 在 5.0 版本更新到了 .NET 8,对于最终用户来说,影响如下: - -1. MAA 现在需要 .NET 8 运行库,在启动时会自动提示用户安装。若安装失败,请阅读下文,下载安装包手动安装。 -2. MAA 不会再被 Windows Defender 误报了。~~为了这碟醋包的饺子~~ -3. [.NET 8 不支持 Windows 7/8/8.1 系统](https://github.com/dotnet/core/issues/7556),所以 MAA 也同样不再支持,即使它现在依旧能正常运行。 -4. 在 Windows 7 上运行 MAA 时,会出现内存占用异常的问题,请参阅下文 Windows 7 部分实施缓解措施。Windows 8/8.1 未经测试,若存在相同问题,请顺手发个 Issue 提醒我们补充文档。 -::: - -## 软件无法运行/闪退/报错 - -### 可能性 0 : 下载的压缩包不完整 - -完整 MAA 软件压缩包命名格式为 "MAA-`版本`-`平台`-`架构`.zip",其余均为无法单独使用的“零部件”,请仔细阅读。 -若在某次自动更新后无法使用或缺失功能,可能是自动更新出现了问题, 请尝试重新下载并解压完整包后手动迁移 `config` 文件夹。 - -### 可能性 1 : 架构错误 - -在大部分情况下,您需要使用 x64 架构的 MAA,即您需要下载 `MAA-*-win-x64.zip`,而非 `MAA-*-win-arm64.zip`。MAA 不会支持 32 位操作系统。 - -### 可能性 2 : 运行库问题 - -::: info 注意 -此处仅列出官方安装方法,我们无法保证第三方整合包的可靠性。 -::: - -- 请安装 [VCRedist x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) 和 [.NET 8](https://download.visualstudio.microsoft.com/download/pr/84ba33d4-4407-4572-9bfa-414d26e7c67c/bb81f8c9e6c9ee1ca547396f6e71b65f/windowsdesktop-runtime-8.0.2-win-x64.exe) 并重新启动计算机后再次运行 MAA。 - 使用 Windows 10 或 11 的用户也可以使用 winget 工具进行安装,只需在终端中运行以下命令。 - - ```bash - winget install Microsoft.VCRedist.2015+.x64 - winget install Microsoft.DotNet.DesktopRuntime.8 - ``` - -#### Windows N/KN 相关 - -对于 Windows 8/8.1/10/11 N/KN(欧洲/韩国)版本,您还需要安装[媒体功能包](https://support.microsoft.com/zh-cn/topic/c1c6fffa-d052-8338-7a79-a4bb980a700a)。 - -#### Windows 7 相关 - -对于 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) - - 1. 打开 `计算机`,右键空白处,点击属性,点击左侧 `高级系统设置`,点击 `环境变量`。 - 2. 新建一个系统变量,变量名 `DOTNET_EnableWriteXorExecute`,变量值 `0`。 - 3. 重启电脑。 - -我们无法保证将来的版本对 Windows 7 的兼容性,~~都是微软的错~~。 - -#### 官方整合包(确信) - -::: info 注意 -此项操作将会耗费 10GB 左右的磁盘空间,请务必在排查完其他可能性后使用 -::: - -安装 [Microsoft C++ 生成工具](https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/) 进行完整的开发环境配置(仅需要安装 .NET 及 C++ 开发环境)。 - -### 可能性 3 : 系统组件问题 - -以上运行库安装均需要依赖组件存储服务(CBS、TrustedInstaller/TiWorker、WinSxS)。如果组件存储服务被破坏,将不能正常安装 - -我们无法提供除重装系统以外的修复建议,请避免使用未标明精简项及精简风险的“精简版”系统。 - -## 连接错误 - -::: tip -请参阅 [模拟器支持](./模拟器和设备支持) 确定正在使用的模拟器通过了支持性测试 -::: - -### 确认 adb 及连接地址正确 - -- 确认 MAA `设置` - `连接设置` - `adb 路径` 是否已自动填写,若已填写请忽略这步 - -::: details 若未填写 -- 找到模拟器安装路径,Windows 可在运行模拟器时在任务管理器中右键进程点击 `打开文件所在的位置`。 -- 顶层或下层目录中大概率会有一个 `adb.exe`(不一定就叫这个名字,可能叫 `nox_adb.exe`;`HD-adb.exe`;`adb_server.exe` 等等,总之是名字带`adb` 的 exe),搜索它,选择它! -::: - -- 确认连接地址填写正确。可在网上搜索正在使用的模拟器 adb 调试地址是什么,一般是类似 `127.0.0.1:5555` 这样的格式(雷电模拟器除外)。 - -#### 模拟器调试端口 - -相关文档及参考端口: - -- [Bluestacks 5](https://support.bluestacks.com/hc/zh-tw/articles/360061342631-%E5%A6%82%E4%BD%95%E5%B0%87%E6%82%A8%E7%9A%84%E6%87%89%E7%94%A8%E5%BE%9EBlueStacks-4%E8%BD%89%E7%A7%BB%E5%88%B0BlueStacks-5#%E2%80%9C2%E2%80%9D) `5555` -- [MuMu Pro](https://mumu.163.com/mac/function/20240126/40028_1134600.html) `16384` -- [MuMu 12](https://mumu.163.com/help/20230214/35047_1073151.html) `16384` -- [MuMu 6](https://mumu.163.com/help/20210531/35047_951108.html) `7555` -- [逍遥](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)。 - -### 关闭现有 adb 进程 - -关闭 MAA 后查找 `任务管理器` - `详细信息` 中有无名称包含 `adb` 的进程(通常和上文中填写的 `adb` 文件同名),如有,结束它后重试连接。 - -### 正确使用多个 adb - -当 adb 版本不同时,新启动的进程会关闭旧的进程。因此在同时运行多个 adb,如 Android Studio、Alas、手机助手时,请确认它们的版本相同。 - -### 避免游戏加速器 - -部分加速器在启动加速和停止加速之后,都需要重启 MAA、ADB 和模拟器再连接。 - -同时使用 UU 加速器 和 MuMu 12 可以参考[官方文档](https://mumu.163.com/help/20240321/35047_1144608.html)。 - -### 重启电脑 - -重启能解决 97% 的问题。(确信 - -### 换模拟器 - -请参阅 [模拟器支持](./模拟器和设备支持)。 - -## 连接正常,但是无操作 - -小部分模拟器自带的 `adb` 版本过于老旧,不支持 `Minitouch` 相关操作。 - -请使用管理员权限打开 MAA,点击 `MAA 设置` - `连接设置` - `强制替换 ADB`。(建议关闭模拟器并重启 MAA 后再操作,否则可能替换失败) - -模拟器更新后可能会重新覆盖 adb 文件。若更新后问题复现,请再次尝试替换。 - -如果即使这样也无法正常使用,可将 `连接设置` - `触控模式` 从 `Minitouch` 切换到 `MaaTouch` 再次尝试。由于 `Adb Input` 操作过于缓慢,请仅将其作为万不得已的模式。 - -## 蓝叠模拟器每次启动端口号都不一样(Hyper-V) - -打开 MAA,在 `设置` - `连接设置` 中设置 `连接配置` 为 `蓝叠模拟器` ,随后勾选 `自动检测连接` 和 `每次重新检测`(或是在主界面 `开始唤醒` 旁的设置中勾选这两项)。 - -通常情况下这样就可以连接。如果无法连接,可能是存在多个模拟器核心或出现了问题,请阅读下文进行额外设置。 - -### 指定 `Bluestacks.Config.Keyword` - -::: info 注意 -如果启用了多开功能或安装了多个模拟器核心,则需要进行额外设置来指定使用的模拟器编号 -::: - -在 `.\config\gui.json` 中搜索 `Bluestacks.Config.Keyword` 字段,内容为 `"bst.instance.<模拟器编号>.status.adb_port"`,模拟器编号可在模拟器路径的 `BlueStacks_nxt\Engine` 中看到 - -::: details 示例 -Nougat64 核心: - -```json -"Bluestacks.Config.Keyword":"bst.instance.Nougat64.status.adb_port", -``` - -Pie64_2 核心:(核心名称后的数字代表这是一个多开核心) - -```json -"Bluestacks.Config.Keyword": "bst.instance.Pie64_2.status.adb_port", -``` -::: - -### 指定 `Bluestacks.Config.Path` - -::: info 注意 -MAA 现在会尝试从注册表中读取 `bluestacks.conf` 的存储位置,当该功能无法工作时,则需要手动指定配置文件路径 -::: - -1. 在蓝叠模拟器的数据目录下找到 `bluestacks.conf` 这个文件 - - - 国际版默认路径为 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` - - 中国内地版默认路径为 `C:\ProgramData\BlueStacks_nxt_cn\bluestacks.conf` - -2. 如果是第一次使用,请运行一次 MAA,使 MAA 自动生成配置文件。 - -3. **先关闭** MAA,**然后**打开 `gui.json`,找到 `Configurations` 下的当前配置名字段(可在 设置-切换配置 中查看,默认为 `Default`),在其中搜索字段 `Bluestacks.Config.Path`,填入 `bluestacks.conf` 的完整路径。(注意斜杠要用转义 `\\`) - -::: details 示例 -以 `C:\ProgramData\BlueStacks_nxt\bluestacks.conf` 为例 - -```json -{ - "Configurations": { - "Default": { - "Bluestacks.Config.Path": "C:\\ProgramData\\BlueStacks_nxt\\bluestacks.conf" - // 其余配置字段,不要手动输入修改 - } - } -} -``` - -::: - -## 连接正常,但是操作卡顿、异常或频繁出错 - -- 若使用了 `异形屏UI适配`,请将其调整为 0。 -- 若正在游玩非国服客户端,请先在 `设置` - `游戏设置` - `客户端类型` 中选择客户端版本。非国服部分功能可能并非完全适配,请参阅对应的外服使用文档。 -- 若正在进行自动肉鸽,请参阅[详细介绍](./详细介绍.md#一键长草-自动肉鸽),并在 `自动肉鸽` - `肉鸽主题` 中正确选择主题。 -- `Adb Input` 触控模式操作缓慢为正常情况,如需自动战斗等请尝试切换其他模式。 - -### 提示截图用时较长 / 过长 - -- MAA 目前支持 `RawByNc` 、 `RawWithGzip` 、 `Encode` 三种截图方式,当执行任务平均截图耗时 >400 / >800 时会输出一次提示信息(单次任务只会输出一次) -- `设置 - 连接设置` 中会显示近30次截图耗时的 最小/平均/最大值,每10次截图刷新 -- 自动战斗类功能(如自动肉鸽)受截图耗时影响较大 -- 此项耗时与MAA无关,与电脑性能、当前占用或模拟器相关,可尝试清理后台/更换模拟器/升级电脑配置 - -## 文件下载速度慢 - -请尝试使用 [MAA 下载站](https://ota.maa.plus/MaaAssistantArknights/MaaRelease/releases/download/) 下载。 - -我们的小水管带宽较低,且流量有限。虽然搭出来就是给大家用的,但也希望不要滥用,若 Github 或其他镜像站可正常下载,建议优先选择。 - -## 下载到一半提示“登陆”/“鉴权” - -请使用 浏览器 / IDM / FDM 等下载器下载文件,**不要用↑↓迅雷!** diff --git a/docs/用户手册/模拟器和设备支持/Windows模拟器.md b/docs/用户手册/模拟器和设备支持/Windows模拟器.md deleted file mode 100644 index 8f5b208095..0000000000 --- a/docs/用户手册/模拟器和设备支持/Windows模拟器.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -order: 1 -icon: ri:windows-fill ---- - -# Windows 模拟器支持 - -::: tip -遇到问题请先参阅 [常见问题](../常见问题.md) -::: - -以下模拟器排序为随机生成,排名不分先后 - - - -## ✅ 完美支持 - -
- -## ⚠️ 部分支持 - -
- -## 🚫 不支持 - -
diff --git a/docs/用户手册/详细介绍.md b/docs/用户手册/详细介绍.md deleted file mode 100644 index ddd762f170..0000000000 --- a/docs/用户手册/详细介绍.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -icon: ic:baseline-article ---- - -# MAA 使用说明 - -## 功能介绍 - -### 一键长草:刷理智 - -- 若关卡选择中没有你需要的关卡,请在 MAA 中选择 `当前/上次`,然后在游戏中手动定位关卡。 - 确保画面停留在 右上角有关卡名和剩余理智,右下角有代理指挥和开始行动 的关卡详情界面。 -- 若当前不处于此界面,则 `当前/上次` 会自动进入终端首页右下角“上次作战”的关卡。 -- 也可以在 `任务设置` - `刷理智` - `高级设置` 中启用 `手动输入关卡名` 手动输入关卡编号。目前支持导航的关卡有: - - 全部主线关卡。可在关卡末尾添加 `-NORMAL` 或 `-HARD` 来切换标准或磨难关卡。 - - 龙门币、作战记录的 5 / 6 关,但必须输入 `CE-6` / `LS-6`。MAA 会在第六关无法代理的情况下自动切换至第五关。 - - 技能书、采购凭证、碳本第 5 关,必须输入 `CA-5` / `AP-5` / `SK-5`。 - - 所有芯片本。必须输入完整关卡编号,如 `PR-A-1`。 - - 剿灭作战。必须输入 `Annihilation`。 - - 别传中的 `OF-1` / `OF-F3` / `GT-5`。 - - 当期 SS 活动 后三关。在自动访问 [API](https://ota.maa.plus/MaaAssistantArknights/api/gui/StageActivity.json) 下载更新后会在界面下方显示。 - - 复刻的 SS 活动。输入 `SSReopen-<关卡前缀>` ,可一次性刷完 XX-1~XX-9 关,如 `SSReopen-IC`。 - -::: details 示例画面 -![示例画面](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/2d466efd-142a-4c28-9b2f-06caa08ef9f4) -::: - -- `刷理智` 的 `常规设置` 中的 `吃理智药` + `吃源石` 和 `指定次数`、`指定材料` 三个选项为短路开关(或门),即达成三个选项中的任一条件,均会视为任务完成,停止刷理智。 - - - `吃理智药` 指定补充几次理智(可能一次吃多瓶药)。 - - `吃源石` 指定碎几颗石头(一次一颗),当仓库中有理智药时不会碎石。 - - `指定次数` 指定刷多少次指定关卡(例如“刷 15 次后停止”)。 - - `指定材料` 指定刷多少个指定材料(例如“获取 5 个固源岩后停止”)。 - -需要注意,`吃源石` 只会在 `吃理智药` 之后判断,因为 MAA 只有在没有理智药时才会使用源石补充理智。所以在勾选 `吃源石` 之后,需要将 `吃理智药` 的次数设置为大于等于仓库中现有的理智药的值,如 999,以避免跳过 `吃源石` 判断。 - -::: 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` 次石,刷完理智后结束。 | -| 2 | 4 | | | 先刷完现有理智,如果吃完 `2` 次理智药后还有理智药,则结束;如果吃完 ≤`2` 次理智药后没有理智药了,则继续碎 `4` 次石头,刷完理智后结束。 | -::: - - -- `指定材料` 与 `关卡选择` 是两个互相独立的逻辑。 - - `指定材料` 只是以材料个数作为任务完成依据,并不会自动导航到相应关卡。 -- 支持自动勾选 `代理指挥`。 -- 支持自动识别并统计材料掉落,同时上传 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。支持自定义企鹅物流用户 ID。 -- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 -- 支持等级提升后继续任务。 -- 代理失败时会放弃本次行动并重新战斗。 -- 剿灭相关: - - MAA 只会通过终端首页右上角剿灭按钮进行跳转,请确保当期剿灭已解锁 `全权委托` 并持有足够数量的 “PRTS 剿灭代理卡”。 - - 在当期剿灭刷新或重新安装明日方舟后,从剿灭 `开始战斗` 页面返回会自动展开 `情报汇总`,请提前关闭此页面以防止任务卡住。 - - 仅建议当期剿灭已“400 杀”的玩家使用 MAA 自动剿灭。 -- 连战相关: - - MAA 目前仅会按照用户设定的次数进行连战,尚未支持自动识别最大连战次数。 - - 若设置的次数过多但理智不足,MAA 会直接进行 `吃理智药` 或 `吃源石` 操作,并继续尝试连战。 - - 若未设置 `吃理智药` 或 `吃源石`,MAA 会直接认为理智不足,终止刷理智任务。若设置了 `剩余理智` ,MAA 会直接开始刷 `剩余理智` 关卡。 -- 备选关卡: - - 备选关卡根据当天是否开放决定是否打该关,即 选择第一个开放关卡进行战斗 - 1. 如依次选择 钱本、1-7、经验本: - - 如果当天开放 钱本、1-7、经验本,则打钱本,不会打1-7 / 经验本。如果玩家此时未解锁钱本代理,则本任务失败 - - 如果当天开放 1-7、经验本,则打1-7,不会打经验本。如果玩家此时未解锁1-7代理,则本任务失败 - 2. 如依次选择 剿灭、钱本、1-7,则先尝试剿灭,后续执行逻辑同上;剿灭战斗结果不影响对其余备选关卡的筛选逻辑 -- 剩余理智: - - 在 `刷理智` 任务结束后启动,不受吃理智药、吃源石、指定次数、指定材料、连战次数等的控制,刷完理智即结束。 - - 适用于在 `关卡选择` 关卡理智不足后,继续前往 `剩余理智` 关卡清理剩余的“边角”理智(如前往 1-7)。 - - 亦适用于在连战次数设置过高而理智不足时自动以单次连战刷光理智收尾(设置 1-7 连战 6 次,但只有 30 理智,于是自动转为刷 5 次不连战的 1-7)。 - - 若剩余理智仍然不足则会结束任务(如少于 6 理智)。 - -### 一键长草:自动公招 - -- **自动公招 和 公招识别 是两个不同的功能!** -- 自动公招支持使用 `加急许可`,全自动连续公招。请进入 `自动公招` - `任务设置` 中选择 `自动使用加急许可` ,并修改 `每次执行时最大招募次数` 。 -- 出 1、5、6 星都会弹出通知提示。 -- 公招刷新时自动将公招标签数据上传到 [企鹅物流数据统计](https://penguin-stats.cn/) 和 [一图流](https://ark.yituliu.cn/)。 - -### 一键长草:基建换班 - -#### 换班策略 - -- 自动计算并选择**单设施内的最优解**,支持所有通用类技能和特殊技能组合。 -- 支持识别经验书、赤金、源石碎片、芯片,分别使用相应的干员组合。 - -#### 基建工作心情阈值 - -- 自动识别心情进度条,将剩余心情百分比小于该阈值的干员进驻宿舍。 - -#### 特殊说明 - -- 基建换班目前均为单设施最优解,而非跨设施的全局最优解。 - - 可识别并使用的例子:`巫恋+龙舌兰`、`红云+稀音`。 - - 不可识别并使用的例子:`迷迭香体系`、`红松骑士团`。 -- 若 `无人机用途` 选择 `贸易站-龙门币` ,则会额外识别 `巫恋组` 并优先为其使用。 -- 会客室仅缺一个线索时,会选择对应线索倾向的干员;其余情况选择通用干员。 -- 会客室仅当自有线索满时才会送出线索,并且只送三个。如需自定义单次送线索个数可修改 MAA 文件夹下 `resource/tasks.json` 中的 `SelectClue` - `maxTimes` 字段。 -- 开启 `不将已进驻的干员放入宿舍` 设置项可避免 `艾丽妮` 等干员在训练室未训练时被进驻到宿舍,但同时也不会将加工站中心情不满的干员进驻宿舍。 -- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 - -#### 自定义基建换班(测试) - -- 一图流的大佬们帮忙写了一个 [排班生成器](https://ark.yituliu.cn/tools/schedule),可参考 [文档](../协议文档/基建排班协议.md) 使用。 -- MAA 文件夹下 `/resource/custom_infrast/` 中内置了几套理论极限效率的作业,可用作参考。由于其对干员及练度的需求极高,不推荐直接使用。 - -### 一键长草:获取信用及购物 - -- 会自动访问好友获取信用点。 -- 借助战赚信用: - - MAA 会使用助战干员通关一次火蓝之心 `OF-1` 关卡,请确认该关卡已解锁。 - - 关卡选择为 `当前/上次` 时不会执行借助战任务。 - -### 一键长草:自动肉鸽 - -- MAA 默认选择最新一期主题,可在 `自动肉鸽` - `肉鸽主题` 中更改目标主题。 - - 请在游戏内将对应肉鸽主题置顶在终端处。 - - 请提前手动结束**非目标主题**的探索。 - - 若 MAA 在难度选择界面卡住/反复进出,请手动选择难度再开始任务。 -- 设置中可选择分队、开局干员(仅单个干员名)等。 -- 支持自动识别干员及练度,并自动选择较优干员及技能。 -- 支持识别商店物品,优先购买更强力的收藏品。 -- 支持掉线后或凌晨 4 点闪断后自动重连并继续任务。 -- 战斗时长超过 5 分钟会自动撤退所有地面单位,超过 6 分钟会自动放弃当局战斗,避免互相刮痧耗时。 -- 如果任务出现问题,会自动放弃当次探索并重试。 -- 如果多次在同一个位置卡住,请提交 Issue 反馈,并附带日志和截图。 - -### 切换账号 - -- 仅支持切换至已登录的账号,使用登录名进行查找,请保证输入内容在所有已登录账号唯一。 - - 官服:`123****8901`,可输入 `123****8901`、`123`、`8901`、`3****8` - - B 服:`张三`,可输入 `张三`、`张`、`三` - -### 自动战斗 - -- 欢迎使用作业分享站 [prts.plus](https://prts.plus),[抄作业.com](https://抄作业.com) 使用及分享作业文件。 - -#### 抄作业 - -支持任意 `可编队关卡` 和 `保全派驻` 模式的自动战斗。 - -- 本功能需要在有 `开始行动` 按钮的编队选择界面开始运行。 - 之后在 MAA 左侧上部的框中 `导入本地 JSON 作业文件` 或 `填写作业站神秘代码` 即可导入作业。 - - 另外支持视频识别(α),拖入视频文件即可激活。 - 要求 16:9 画幅 720p 以上画质,无黑边、模拟器边框、异形屏适配等干扰因素。 -- `自动编队` 功能会**清空当前编队**并根据作业需要的干员自动完成编队。 - - 可根据个人需要(例如需要使用 `好友助战` 时)取消 `自动编队`,手动编队后开始。 - - 可根据任务需要为自动编队 `追加自定干员` 和 `补充低信赖干员`。 - - 对于【悖论模拟】关卡,必须关闭 `自动编队`,手动选择技能后,在有**开始模拟**按钮的界面开始自动战斗。 - - 对于【保全派驻】关卡,`自动编队` 无效,必须手动完成**初始**任务准备,直到在关卡详情有**开始部署**按钮的界面才能开始自动战斗。 -- 可设置 `循环次数`,例如保全。但 MAA 不会借干员,如需借干员请勿使用。 -- 可使用 `战斗列表` 功能进行同一区域关卡的自动连续战斗。 - - 战斗列表下方三个按钮从左到右依次为 `批量导入`、`添加关卡`、`清空关卡`。 - `添加关卡` 右键为添加突袭关卡,`清空关卡` 右键为清空未勾选关卡, - - 导入作业后,战斗列表下方会出现关卡名,确认正确后再添加该关卡。列表中的关卡可以拖拽调整顺序,勾选是否执行。 - - 开启本功能后改为在**关卡所在的地图界面**开始自动战斗。在理智不足/战斗失败/非三星结算时将停止自动战斗队列。 - - 请确保列表中的关卡在同一区域(只通过左右滑动地图界面就可以导航到)。 -- **请务必为优质作业点赞,以提高作业评分并激励作业制作者。** -![image](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/99072975/39e6dd67-2ff1-4023-a2b8-0018673c08aa) - -#### 写作业 - -- 请使用 [作业编辑器](https://prts.plus/create) 制作,可参考 [战斗流程协议](../协议文档/战斗流程协议.md)。 -- 地图坐标获取: - - 在作业编辑器中填写关卡后,左下角会自动加载可拖动缩放的坐标地图,可点选设置当前干员位置。 - - 填写关卡并导出 JSON 后直接开始行动,会在 MAA 目录下 `debug\map` 中生成覆盖有坐标信息的地图截图。 - - [PRTS.Map](https://map.ark-nights.com/areas),在设置中将 `坐标展示` 修改为 `MAA` 后使用。 -- 支持演习模式。 -- 建议在作业描述里填上你的署名(作者名)、参考的攻略视频链接、其他想说的等等。 -- 欢迎加入企鹅群 [1169188429](https://jq.qq.com/?_wv=1027&k=QZcGcJ9G) 共同讨论作业制作等问题。 - -### 仓库识别(测试) - -- 若自动跳转失败,请手动切换到仓库 `养成材料` 界面并**滑动到最左侧**后开始功能。 -- 目前仅支持导出到[企鹅物流刷图规划器](https://penguin-stats.cn/planner)、[明日方舟工具箱](https://arkntools.app/#/material)、[明日方舟 - 干员培养表](https://ark-nights.com/settings)。 -- 也许后面可能会用来做一些更实用的功能。(画饼 -- 如您是某个数据站的站长,也欢迎联系我们适配贵站的材料 JSON 协议~ - -## 设置介绍 - -除了 `设置` 选项卡 ,Windows 版本的 MAA 里还有 `任务设置` ,点击 `一键长草` 任务列表右侧的 `齿轮` ,就可以在一键长草界面里切换不同的任务设置啦~ - -### 自定义连接 - -- 使用 [模拟器内置 adb](./常见问题.md#确认-adb-及连接地址正确) 或自行下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) 并解压。 -- 进入软件 `设置` - `连接设置`,选择 `adb` 的文件路径,填写 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555`),并选择模拟器类型。 - -#### 获取端口号 - -- 方案 1 : 使用 adb 命令查看模拟器端口 - - 1. 启动**一个**模拟器,并确认没有其他安卓设备连接在此计算机上。 - 2. 在存放有 adb 可执行文件的文件夹中启动命令窗口。 - 3. 执行以下命令。 - - ```sh - # Windows 命令提示符 - adb devices - # Windows PowerShell - .\adb devices - ``` - - 以下为输出内容的例子: - - ```sh - List of devices attached - 127.0.0.1:<端口> device - ``` - - 使用 `127.0.0.1:<端口>` 作为连接地址。若输出 `emulator-****` 请参阅方案 2。 - -- 方案 2 : 查找已建立的 adb 连接 - - 1. 执行方案 1。 - 2. 按 `徽标键+S` 打开搜索栏,输入 `资源监视器` 并打开。 - 3. 切换到 `网络` 选项卡,在 `侦听端口` 的名称列中查找模拟器进程名,如 `HD-Player.exe`。 - 4. 记录模拟器进程的所有侦听端口。 - 5. 在 `TCP 连接` 的名称列中查找 `adb.exe`,在远程端口列中与模拟器侦听端口一致的端口即为模拟器调试端口。 - -### 自动启动多开模拟器 - -若需要多开模拟器同时操作,可将 MAA 文件夹复制多份,使用 **不同的 MAA**、**同一个 adb.exe**、**不同的连接地址** 来进行连接。 -**以[蓝叠国际版](./模拟器和设备支持/Windows模拟器.md#✅-蓝叠模拟器-5-国际版(最稳定👍))为例**,介绍两种启动多开模拟器的方式。 - -#### 通过为模拟器 exe 附加命令来进行多开操作 - -1. 启动**单一**模拟器多开。 -2. 打开任务管理器,找到对应模拟器进程,转到详细信息选项卡,右键列首,点击 `选择列`,勾选 `命令行`。 -3. 在多出来的 `命令行` 列中找到 `...\Bluestacks_nxt\HD-Player.exe"` 后的内容。 -4. 将找到的类似于 `--instance Nougat32` 的内容填写到 `启动设置` - `附加命令` 中。 - -::: tip -操作结束后建议重新隐藏 `步骤 2` 中打开的 `命令行` 列以防止卡顿 -::: - -::: details 示例 - -```text -多开1: -模拟器路径: C:\Program Files\BlueStacks_nxt\HD-Player.exe -附加命令: --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" -``` - -其中 `--cmd launchApp --package` 部分为启动后自动运行指定包名应用,可自行更改。 -::: - -#### 通过使用模拟器或应用的快捷方式来进行多开操作 - -1. 打开多开管理器,新增对应模拟器的快捷方式。 -2. 将模拟器快捷方式的路径填入 `启动设置` - `模拟器路径` 中 - -::: tip -部分模拟器支持创建应用快捷方式,可直接使用应用的快捷方式直接启动模拟器并打开明日方舟 -::: - -::: details 示例 - -```text -多开1: -模拟器路径: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多开1.lnk -多开2: -模拟器路径: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\BlueStacks\多开2-明日方舟.lnk -``` - -::: - -若使用 `模拟器路径` 进行多开操作,建议将 `启动设置` - `附加命令` 置空。 - -### 开始前/结束后脚本 - -- v4.13.0 后支持设置开始前/结束后脚本,可在任务前后自动执行批处理文件。 -- 需填写批处理文件即 `*.bat` 的路径。 - -## 其他说明 - -- 首页左侧任务可以拖动改变顺序,基建换班设置中设施顺序同理。 -- 主界面和设置中的配置更改通常会自动保存,标有 `*` 号或 `(仅一次)` 的选项,以及通过右键单击复选框得到的半选开关都会在 MAA 重启后重置。 -- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮中心的点击概率最高,距离中心越远,点击概率越低)。 -- 底层算法纯 C++ 开发,并设计了多重缓存技术,最大限度降低 CPU 和内存占用。 -- 软件支持自动更新 ✿✿ ヽ(°▽°)ノ ✿ ,推荐非杠精的同学使用公测版,一般来说更新快且 bug 少。(什么 MIUI (╯‵□′)╯︵┻━┻ -- 如果新版本自动下载失败,可手动下载 OTA 压缩包后直接放到 MAA 目录下,会自动更新的。 -- 在 Windows 版本中,MAA 目录下 `config` 文件夹中的 `gui.json` 记录了所有设置,如果下载了新的完整包可以将此文件夹复制到新的 MAA 目录下。 diff --git a/src/MaaCore/README.md b/src/MaaCore/README.md index 5b350355a3..821abad005 100644 --- a/src/MaaCore/README.md +++ b/src/MaaCore/README.md @@ -4,18 +4,4 @@ MAA 底层 C++ 模块 ## 开发相关 -### Windows - -1. 下载预构建的第三方库 - - ```cmd - python maadeps-download.py - ``` - -2. 使用 Visual Studio 2022 打开 `MAA.sln`,右键 `MaaWpfGui`,设为启动项目 -3. 右键 `MaaWpfGui` - 属性 - 调试 - 启用本地调试(这样就能把断点挂到 C++ Core 那边了) -4. (可选)若准备提交 PR,建议启用 [clang-format 支持](https://maa.plus/docs/开发文档/开始开发.html#在-visual-studio-中启用-clang-format) - -### Linux | macOS - -请参考 [Linux 编译教程](https://maa.plus/docs/开发文档/Linux编译教程.html) +[参与开发](../../README.md#参与开发) \ No newline at end of file diff --git a/src/MaaWpfGui/Constants/MaaUrls.cs b/src/MaaWpfGui/Constants/MaaUrls.cs index 0cf7b3c18e..6ce3afb792 100644 --- a/src/MaaWpfGui/Constants/MaaUrls.cs +++ b/src/MaaWpfGui/Constants/MaaUrls.cs @@ -57,51 +57,25 @@ namespace MaaWpfGui.Constants private static string Language => ConfigurationHelper.GetValue(ConfigurationKeys.Localization, LocalizationHelper.DefaultLanguage); - public static string HelpUri => $"{MaaDocs}/{_helpUrl[Language]}"; + private const string MaaDocs = "https://maa.plus/docs"; - public static string OverseasAdaptation => $"{MaaDocs}/{_overseasAdaptation[Language]}"; + // 常见问题 + public static string HelpUri => $"{MaaDocs}/{Language}/manual/faq.html"; - public static string CustomInfrastGenerator => $"{MaaDocs}/{_customInfrastGenerator[Language]}"; + // 外服适配教程 + public static string OverseasAdaptation => $"{MaaDocs}/{Language}/develop/overseas-client-adaptation.html"; - // TODO: Add more languages - public static readonly string RemoteControlDocument = $"{MaaDocs}/协议文档/远程控制协议.html"; + // 基建排班协议文档 + public static string CustomInfrastGenerator => $"{MaaDocs}/{Language}/protocol/base-scheduling-schema.html"; + + // 远程控制协议文档 + public static readonly string RemoteControlDocument = $"{MaaDocs}/{Language}/protocol/remote-control-schema.html"; public static string NewIssueUri => Language switch { - "zh-cn" => "https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/new?assignees=&labels=bug&template=cn-bug-report.yaml", - _ => "https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/new?assignees=&labels=bug&template=en-bug-report.yaml", - }; - - private const string MaaDocs = "https://maa.plus/docs"; - - private static readonly Dictionary _overseasAdaptation = new Dictionary - { - { "zh-cn", "开发文档/外服适配教程.html" }, - { "en-us", "en-us/2.5-OVERSEAS_CLIENTS_ADAPTATION.html" }, - { "ja-jp", "ja-jp/2.5-OVERSEAS_CLIENTS_ADAPTATION.html" }, - { "ko-kr", "ko-kr/2.5-OVERSEAS_CLIENTS_ADAPTATION.html" }, - { "zh-tw", "zh-tw/2.5-外服適配教程.html" }, - { "pallas", "KeepDrinking.html" }, - }; - - private static readonly Dictionary _helpUrl = new Dictionary - { - { "zh-cn", "用户手册/常见问题.html" }, - { "en-us", "en-us/1.2-FAQ.html" }, - { "ja-jp", "ja-jp/1.2-よくある質問.html" }, - { "ko-kr", "ko-kr/1.2-FAQ.html" }, - { "zh-tw", "zh-tw/1.2-常見問題.html" }, - { "pallas", "KeepDrinking.html" }, - }; - - private static readonly Dictionary _customInfrastGenerator = new Dictionary - { - { "zh-cn", "协议文档/基建排班协议.html" }, - { "en-us", "en-us/3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA.html" }, - { "ja-jp", "ja-jp/3.6-インフラスケジュール設定.html" }, - { "ko-kr", "ko-kr/3.6-기반시설_예약_스키마.html" }, - { "zh-tw", "zh-tw/3.6-基建排班協議.html" }, - { "pallas", "KeepDrinking.html" }, + "zh-cn" => $"{GitHubIssues}/new?assignees=&labels=bug&template=cn-bug-report.yaml", + "zh-tw" => $"{GitHubIssues}/new?assignees=&labels=bug&template=cn-bug-report.yaml", + _ => $"{GitHubIssues}/new?assignees=&labels=bug&template=en-bug-report.yaml", }; } } diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index b8b7e3759d..b196665009 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -476,41 +476,41 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요. 툴박스 - + 공개모집 태그 인식 팁: 메인 화면의 자동 모집과는 별도로 독립된 기능입니다\n게임 내 공개모집 태그 화면에 진입한 뒤 인식 시작 버튼을 누르세요~ 자동 시간 설정 잠재능력 확인(★4 이상) - 오퍼레이터 정보를 불러오려면 “오퍼레이터 식별” 기능을 사용하세요. + 오퍼레이터 정보를 불러오려면 “오퍼레이터 인식” 기능을 사용하세요. ★3 태그를 자동 선택 ★4 태그를 자동 선택 ★5 태그를 자동 선택 ★6 태그를 자동 선택 인식 시작 - - - 창고 정리 + + + 창고 인식 이 기능은 현재 테스트 중입니다. 내보내기 전 인식 결과가 맞는지 확인 후 사용하세요\n만약 오류가 있다면 MAA 경로 내 debug 폴더 안의 depot 폴더 전체를 압축해서 Github의 issue로 올려주세요 - 식별 시작 + 인식 시작 Arkplanner로 내보내기 Arkntools으로 내보내기 클립보드에 복사됨 - - - 오퍼레이터 식별 + + + 오퍼레이터 인식 시작하기 전 등록된「선호」오퍼레이터들을 등록 해제하세요.\n이 기능은 현재 테스트 중입니다. 만약 오류가 있다면 MAA 경로 내 debug 폴더 안의 oper 폴더 전체를 압축해서 Github의 issue로 올려주세요~ 미소유: {0}\n목록:\n\n{1}\n소유: {2}\n목록:\n\n{3} - 식별 시작 + 인식 시작 클립보드에 복사 - + 영상 인식 - 식별 시작 + 인식 시작 폴더 열기 「자동 지휘」페이지에서 영상 파일을 드래그하여 시작하세요. 동영상의 해상도 비율은 16:9에 게임화면만 나와야 하며, 화면 보정 등의 방해 요소가 없어야 합니다. - + 헤드헌팅 1회 진행 10회 진행 @@ -536,10 +536,10 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요. 실제 뽑기입니다 확인 다시 보지 않기 - + - 식별 중…… - 식별 완료 + 인식 중…… + 인식 완료 자동 지휘 @@ -692,7 +692,7 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요. 오퍼레이터 그룹, 그룹 목록을 일치시키지 못했습니다: 선호하는 오퍼레이터: 생산품이 구성과 맞지 않습니다. - 식별할 수 없는 생산품 + 인식할 수 없는 생산품 생산품이 변경됨 공개모집 인식 결과: 공개모집 팁 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 64f8a9cc47..48dd6e54cd 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -132,7 +132,7 @@ 「开局干员」使用助战 可以使用非好友助战 在战斗结束前延迟「停止」动作 - 暂停下干员(同时影响肉鸽、自动战斗、保全)(不稳定,暂不推荐开启) + 划火柴模式(自动战斗) 使用 ADB Lite(实验性功能) 退出时释放 ADB 默认分队 diff --git a/website/apps/web/src/assets/screenshots/center.webp b/website/apps/web/src/assets/screenshots/center.webp index fb86c8dd2a..6a6a2b56fb 100644 Binary files a/website/apps/web/src/assets/screenshots/center.webp and b/website/apps/web/src/assets/screenshots/center.webp differ diff --git a/website/bundler.mjs b/website/bundler.mjs index 13062c8a42..d6d0d6f494 100644 --- a/website/bundler.mjs +++ b/website/bundler.mjs @@ -11,6 +11,10 @@ const maaProjectLocationMapping = [ from: '../docs/.vuepress/dist', to: `${bundleBasePath}/docs`, }, + { + from: '../docs/staticwebapp.config.json', + to: `${bundleBasePath}/docs/staticwebapp.config.json`, + }, ]; console.log(`remove ${bundleBasePath}`); diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index d1f403c601..56a8eeb649 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -18,32 +18,35 @@ importers: ../docs: devDependencies: '@vuepress/bundler-vite': - specifier: 2.0.0-rc.2 - version: 2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5) + specifier: 2.0.0-rc.13 + version: 2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5) '@vuepress/plugin-docsearch': - specifier: 2.0.0-rc.3 - version: 2.0.0-rc.3(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + specifier: 2.0.0-rc.36 + version: 2.0.0-rc.36(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) '@vuepress/plugin-google-analytics': - specifier: 2.0.0-rc.21 - version: 2.0.0-rc.21(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + specifier: 2.0.0-rc.34 + version: 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-shiki': + specifier: ^2.0.0-rc.34 + version: 2.0.0-rc.34(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) markdown-it: - specifier: ^14.0.0 + specifier: ^14.1.0 version: 14.1.0 markdown-it-anchor: - specifier: ^8.6.7 - version: 8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.1.0) + specifier: ^9.0.1 + version: 9.0.1(@types/markdown-it@14.1.1)(markdown-it@14.1.0) markdownlint-cli: specifier: ^0.39.0 version: 0.39.0 vue: - specifier: ^3.4.15 - version: 3.4.24(typescript@4.9.5) + specifier: ^3.4.27 + version: 3.4.27(typescript@4.9.5) vuepress: - specifier: 2.0.0-rc.2 - version: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + specifier: 2.0.0-rc.13 + version: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) vuepress-theme-hope: - specifier: 2.0.0-rc.18 - version: 2.0.0-rc.18(@vuepress/plugin-docsearch@2.0.0-rc.3(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))))(hls.js@1.3.5)(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + specifier: 2.0.0-rc.49 + version: 2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))))(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) apps/web: dependencies: @@ -103,7 +106,7 @@ importers: version: 4.2.0 vite: specifier: ^4.0.0 - version: 4.5.3(@types/node@20.12.7)(sass@1.75.0) + version: 4.5.3(@types/node@20.12.7)(sass@1.77.6) devDependencies: '@trivago/prettier-plugin-sort-imports': specifier: ^3.2.0 @@ -122,7 +125,7 @@ importers: version: 0.163.0 '@vitejs/plugin-react': specifier: ^3.0.0 - version: 3.1.0(vite@4.5.3(@types/node@20.12.7)(sass@1.75.0)) + version: 3.1.0(vite@4.5.3(@types/node@20.12.7)(sass@1.77.6)) autoprefixer: specifier: ^10.4.7 version: 10.4.19(postcss@8.4.38) @@ -322,6 +325,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-transform-react-jsx-self@7.24.1': resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} engines: {node: '>=6.9.0'} @@ -381,8 +389,8 @@ packages: search-insights: optional: true - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -393,8 +401,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -405,8 +413,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -417,8 +425,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -429,8 +437,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -441,8 +449,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -453,8 +461,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -465,8 +473,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -477,8 +485,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -489,8 +497,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -501,8 +509,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -513,8 +521,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -525,8 +533,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -537,8 +545,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -549,8 +557,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -561,8 +569,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -573,8 +581,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -585,8 +593,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -597,8 +605,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -609,8 +617,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -621,8 +629,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -633,8 +641,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -645,8 +653,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -719,149 +727,149 @@ packages: '@lit/reactive-element@2.0.4': resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - '@mdit-vue/plugin-component@2.1.2': - resolution: {integrity: sha512-n1HcAC82l912HhtiMSxl5pQLKBYbPok/IcdGRD49rTt53NXBqct68qo58+7jvsj+f8Lmo7kjD+em3tP4BSgl0A==} + '@mdit-vue/plugin-component@2.1.3': + resolution: {integrity: sha512-9AG17beCgpEw/4ldo/M6Y/1Rh4E1bqMmr/rCkWKmCAxy9tJz3lzY7HQJanyHMJufwsb3WL5Lp7Om/aPcQTZ9SA==} - '@mdit-vue/plugin-frontmatter@2.1.2': - resolution: {integrity: sha512-2YOVOsMRtf11bZ6mEB4xoWD6RG5X0Ex+g/1c1iXoYUMUahlZnz9flXUM6WAE++HsLR3Wkvd5FNhGUArrcxn0dA==} + '@mdit-vue/plugin-frontmatter@2.1.3': + resolution: {integrity: sha512-KxsSCUVBEmn6sJcchSTiI5v9bWaoRxe68RBYRDGcSEY1GTnfQ5gQPMIsM48P4q1luLEIWurVGGrRu7u93//LDQ==} - '@mdit-vue/plugin-headers@2.1.2': - resolution: {integrity: sha512-YkBTlHeG4seTcXqrVPvPY6utvkHd2qs7QGU5aM3S5CxUH5l0/SzIRv+irhFMfIRsXQ7zwx2vJVSwJz+n2TFhSA==} + '@mdit-vue/plugin-headers@2.1.3': + resolution: {integrity: sha512-AcL7a7LHQR3ISINhfjGJNE/bHyM0dcl6MYm1Sr//zF7ZgokPGwD/HhD7TzwmrKA9YNYCcO9P3QmF/RN9XyA6CA==} - '@mdit-vue/plugin-sfc@2.1.2': - resolution: {integrity: sha512-wjbFvkUcCcfxc1x33SwqbWSM3WYPJOdlmX9IJQd9y6C7ALujy6Orx1gWn5j0hfke1kIuohvjeJ/K0LqF4oYO4g==} + '@mdit-vue/plugin-sfc@2.1.3': + resolution: {integrity: sha512-Ezl0dNvQNS639Yl4siXm+cnWtQvlqHrg+u+lnau/OHpj9Xh3LVap/BSQVugKIV37eR13jXXYf3VaAOP1fXPN+w==} - '@mdit-vue/plugin-title@2.1.2': - resolution: {integrity: sha512-BXgrpuRp6aI/CV/V3jH3zailG9rZH8f094RSky7PE2wTx3c2hnavz3SB3y3TVDv5UC7BGk/uPfBjdYh8/ejsSg==} + '@mdit-vue/plugin-title@2.1.3': + resolution: {integrity: sha512-XWVOQoZqczoN97xCDrnQicmXKoqwOjIymIm9HQnRXhHnYKOgJPW1CxSGhkcOGzvDU1v0mD/adojVyyj/s6ggWw==} - '@mdit-vue/plugin-toc@2.1.2': - resolution: {integrity: sha512-G3t9NjhTvl5cYZ9VSsMzVkYjdUrC9nOZE+oxIzpUTtHRH8NtRvoynUDzEDzRnoRDe29cdWDKTAYaeiHUF+TAvQ==} + '@mdit-vue/plugin-toc@2.1.3': + resolution: {integrity: sha512-41Q+iXpLHZt0zJdApVwoVt7WF6za/xUjtjEPf90Z3KLzQO01TXsv48Xp9BsrFHPcPcm8tiZ0+O1/ICJO80V/MQ==} - '@mdit-vue/shared@2.1.2': - resolution: {integrity: sha512-5+YHKRyULDqMZsYq+8Ttev0P/osgAoNm2OPYrJtvxLfc1jyrZNiDUCjO2jec7Nk3qyGVZe6FKtXTNLVE+ZRhZw==} + '@mdit-vue/shared@2.1.3': + resolution: {integrity: sha512-27YI8b0VVZsAlNwaWoaOCWbr4eL8B04HxiYk/y2ktblO/nMcOEOLt4p0RjuobvdyUyjHvGOS09RKhq7qHm1CHQ==} '@mdit-vue/types@2.1.0': resolution: {integrity: sha512-TMBB/BQWVvwtpBdWD75rkZx4ZphQ6MN0O4QB2Bc0oI5PC2uE57QerhNxdRZ7cvBHE2iY2C+BUNUziCfJbjIRRA==} - '@mdit/plugin-alert@0.8.0': - resolution: {integrity: sha512-mxA/lhOyDDR6/qSAegGG/XZRjUbr1wjwdULudbpkA/CCQi6piW9D0Z8crDQGYz4KPQM9Bgx4Ac81QFSzHOV66Q==} + '@mdit/plugin-alert@0.12.0': + resolution: {integrity: sha512-4OyGK1PZrJbmEF/kS6GKmmG1nlN5h/CyIPZV8lRgnlWLFB37JiEz3EHusPAXAoMtw7VGNFaIcl7OT/I5yyz1JQ==} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-align@0.8.0': - resolution: {integrity: sha512-OJPYzSdmT0UZj/QTvnKYE4GelAL0OD8bNIPxpidXbFd3IqYv/8+xMjT6XeR+R3oZEvtbYSc2e1MmO5fo3DopJA==} + '@mdit/plugin-align@0.12.0': + resolution: {integrity: sha512-rvA+xzaVrlsr44s7XD/xadO3lF0QYWCbeSrOS2dhOroNCIOy4RotVP/1tQPr84eqm4oXcxXF0cbjFuwUgE1jYw==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-attrs@0.8.0': - resolution: {integrity: sha512-ewmx5i+b3M4CRJNDpDNBA0YTHa1snn+adDsDDpDtPPSzCH1NhtWXdzwI0TrcCQUnueeSEEWX/wY4ESo+NRkBNQ==} + '@mdit/plugin-attrs@0.12.0': + resolution: {integrity: sha512-J0MBwBq958lBtdIcEo02mUIO4ubl2YK+bY799T2SusrLTf3FZsq8+d/OiLTUtovfxaphD7F6yqo8M61AiOpq+w==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-container@0.8.0': - resolution: {integrity: sha512-uWK3t0CWssintcmT5PTJVhAwbstcD+SrtijQKs6BhLRtGGgHJ9mOf0ybGjlJhn4077yFFTHmaCIT3K+n5ZVjPg==} + '@mdit/plugin-container@0.12.0': + resolution: {integrity: sha512-61bWK1ek6Rn4o12/BIKTWgGU0miB9ENcXE19H5D4DRhwG5+4+0zp2U6hRLf/mE73+mRYin7iKVzcwwEsqs+u8w==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-demo@0.8.0': - resolution: {integrity: sha512-yFRXnp3Lj0g4H9ImzHKQwwgtSykrL/BDNEQzql9fdA9FbSygfu0CIxfm+A8lsVos8cAvdsgxy3gILySxpfR89g==} + '@mdit/plugin-demo@0.12.0': + resolution: {integrity: sha512-+KDUOgcvnMtBN/uYWlhIFuWkTJexuxstq8ERy9q7vOiu8Go85qCb27h0RSToKBTmmGy+XqfU2EdJclYPWBupJQ==} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-figure@0.8.0': - resolution: {integrity: sha512-/o4RoKjnkdWc+K7m6mR7BAu2J79yYE38s8HUc8iKk9v+e9j1E+6LeXcpx1LoPnHzUhT4EO2QmUsv+kAaPFfZYw==} + '@mdit/plugin-figure@0.12.0': + resolution: {integrity: sha512-3nfcGI+uM0f6AqHZrEr8kSMBI6T2+fKKQXtCbvWQqQ+P3iGgf34Ay2eAtuMDcDGqyfNuR6e8aLoOeY2QWuEynA==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-footnote@0.8.0': - resolution: {integrity: sha512-AaX1rfkJwq9vLX+H/a+XQ3ZxahOXrnMLr5dVZfNdazjqdDEJ7Cc/A7UFtLfOM19F2w3EgvcHR1gbINxIVDn/eg==} + '@mdit/plugin-footnote@0.12.0': + resolution: {integrity: sha512-9B+bJdMndCPoA9De9bxRm4/fyz02PHRcttOyuyPJ3G+wCAgIN1c/7CB8ViT1YJuECUjLogJQ/rrgqh7f0LTqLQ==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 - '@mdit/plugin-img-lazyload@0.8.0': - resolution: {integrity: sha512-Rrlf2FzOxxyszbv3DpkIwEgmYKmtwHdxIO+Whkn0a9QckxnEKkaGl5KARCnM7LqX2fhEyFLgnfkr3onVOJG54g==} + '@mdit/plugin-img-lazyload@0.12.0': + resolution: {integrity: sha512-6R42ieXzwkB5BKKZi+ZefqeP/fBG5qo7Sqtl72ewSVqEQ30bgxpk6nkrPI2orRob4tb6z0F/c+R8h6PW5MkTOw==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-img-mark@0.8.0': - resolution: {integrity: sha512-4P6z2QOfLHLMSXUP4mB/2Rnd6KeHmJBkUXJWJhybcXoIG5S5FDTFHJxOycSP4eGzfdOYAWSlkx6XwXEUGGZz5w==} + '@mdit/plugin-img-mark@0.12.0': + resolution: {integrity: sha512-HkIUwlTg/xPsBi4PG+5dsMnsb7wdiJzELSCEUfdAJTg55nksonHfyV2pFpr87MML4nuZlZK9JHt+Bm2BBDSVSw==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-img-size@0.8.0': - resolution: {integrity: sha512-r+LbAizP/hw5SisY44VbHEnR7XUKpcHM2k2fwu5wb1+V1crxeigG4sa8rzrJEddU+k6uCl27yL5FTGbHjAl82Q==} + '@mdit/plugin-img-size@0.12.0': + resolution: {integrity: sha512-fCcF5gc+ba6gQ5ebrKuI8bK/gFbj8mbeN45FHmBsFDFsfTHa0Xij2v8iok0nP8YEIVj71y8XYojsqCWs6avong==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-include@0.8.0': - resolution: {integrity: sha512-e8Z8q5VkJ6UX04tTgELraupB/MdHio7hkdYT71wBJ6UQuhSmFv/xMOxFfTcGKH5yzsbEM45BtAFHzSXIi3dMCw==} + '@mdit/plugin-include@0.12.0': + resolution: {integrity: sha512-8pnmp7s1TjbtoBIa/YhYpEivOpeVSyhkQoQrGq1UoaEcTbXqmFwShGkAW3zUYZVFYTl74PgL/UqJnrUojegJQg==} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-katex@0.8.0': - resolution: {integrity: sha512-u7CX3Xv5nuc2bu2sHrk1nil83/9ETKTBMmy0icbW8zlqBC0ykLo1xTCEBXmdhXtnJtPi9f/wUZVs6iMZrJzbNg==} + '@mdit/plugin-katex-slim@0.12.0': + resolution: {integrity: sha512-s2MJGXFZT7u8IUTmy6K1rxxAdYRmGggu0m860siyUrThL112xLN9r3jmXZ83epgi4UA/gLkRDAU5vF6R2JtyjQ==} engines: {node: '>= 18'} peerDependencies: katex: ^0.16.9 - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: katex: optional: true markdown-it: optional: true - '@mdit/plugin-mark@0.8.0': - resolution: {integrity: sha512-1hImu8FskIZ9dumWD2VIyB5USyVGwGY2IuaPxYO25tFvMZkhu4rYBjkSK8x+vXExwp94OLzFUlGgVl94S+nw9w==} + '@mdit/plugin-mark@0.12.0': + resolution: {integrity: sha512-BDFwbV/tbgUGL8KF2ymYNLEXT2KNBLe8D0rshDrbB4Iko1U2DywACQkmaUbYBJ1VCn7/dff35at9fWrm3QjrwQ==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-mathjax@0.8.0': - resolution: {integrity: sha512-y016KQHa3PoXDUIcQseISMAz5q2mZJ/qocEs2EABT4PjquXPEh/4rw7Ql7KX9gf/SQIUyzj8hYs4bHyRZc6x4w==} + '@mdit/plugin-mathjax-slim@0.12.0': + resolution: {integrity: sha512-bLM+JnCTN/3XiyKb64Yhpx014VYLfHBexua4n92cUyoKR9g3waB0loF1WMlg6GdyCTc7OvrUSceNjwWj3YRogg==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 mathjax-full: ^3.2.2 peerDependenciesMeta: markdown-it: @@ -869,64 +877,81 @@ packages: mathjax-full: optional: true - '@mdit/plugin-stylize@0.8.0': - resolution: {integrity: sha512-oNFI3Z7UTxP8CKxS3CIuawLmsyrc0n9jIw9mPzUcPNp+LtYmLktfZc3FIRlqpUUq34YwHTH3yihayBRdSkVV6A==} - engines: {node: '>= 18'} + '@mdit/plugin-plantuml@0.12.0': + resolution: {integrity: sha512-m1pk6PA9+kWUs8kylLqjnQ7Lex68x3c4Ato8zAh+omkhugfWzuQXfFiXRiJ9C7wkdqHoJx/E5XobP3HJnhCpoA==} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-sub@0.8.0': - resolution: {integrity: sha512-oqCcmJVJykESgNJ4fFmDKKxRRQddwkXWIT4PjF83XSeXHxTOz8gMfke/V1mE7BAfKKCLP4io8HbrYfvIiOTZ4A==} + '@mdit/plugin-spoiler@0.12.0': + resolution: {integrity: sha512-7yu+Gz000O0OxGnGYOoj77Am3WgH4GwzOvwCp7tPLexkJwTve8MyT9In/NEPFaRw8fmgXwthC0gKq4Ubh1+8DA==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-sup@0.8.0': - resolution: {integrity: sha512-5/uE2lONNjCgGDXC8jZ265tzefjUNQNakmK4PSCI4D5jD80xFrxc6MKh70VLCOL8Xk6COK/K9f0SAU2lwa97Tg==} + '@mdit/plugin-stylize@0.12.0': + resolution: {integrity: sha512-5bzZvmjEpGTdwBax9jaDbCBhD1snEx6uTHVUG9HD/L5koKrL86+ox9E5FGeiMiD1dtxeMgL+WqBzV44nRE9ZPg==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tab@0.8.0': - resolution: {integrity: sha512-SNa1S14Buuy564egiUTkU9HTTNFrEURJZLqA1+jr/2xYCdICPym0FWcB0cLtBl3lrQZkFtbxhzC6ws5JBt/ERQ==} + '@mdit/plugin-sub@0.12.0': + resolution: {integrity: sha512-27kKkSVkymc+2RNc5XOYkeXip5PgHZPUnHpxUvkpnairLwyHsXb8/gzr9zd5arVkip86rcdy9LIvnF7zO0dNVQ==} + engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tasklist@0.8.0': - resolution: {integrity: sha512-vfOTZdXIL/jk/ConUqCODI5WuqgB9qiBGc+wIa7UMhe73KcpwFeGFJVQZm9AvjhXDDYqznJxSMVRP/TN7TxVVw==} + '@mdit/plugin-sup@0.12.0': + resolution: {integrity: sha512-3bEDW5/y1UDVU8LVbFsqUvNcMW6orp16uCdRGYCNZ3/IeK7Qj1/9a3wfhScIoI8xRUE6M3JLv41sGBFXLHwi1w==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-tex@0.8.0': - resolution: {integrity: sha512-uh4kOhwBVEESz6dMmHk4Hn/AVfVtUhMA1UKpwMc1EL9qelodJ0YzSYfNXp6d/PS+E1l53yp8nMZK90DUO+3vpA==} - engines: {node: '>= 18'} + '@mdit/plugin-tab@0.12.0': + resolution: {integrity: sha512-ZDTEDxHoekcFA5Al+NLizn8Nf0kj6ABkNBAc/VxbQoVQdjZNQtGY2dOPeWW0I96Rao+Aw+IpYRCLFIfb/KtExw==} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true - '@mdit/plugin-uml@0.8.0': - resolution: {integrity: sha512-6TOVxLhmdzV7bzjlJCRP5uCFq62Xwk2ZAeYUK3RLx9lgM3s2Mww5ENhdysnQMd7VQlUHsPmp4XIMBZZjPddg3g==} + '@mdit/plugin-tasklist@0.12.0': + resolution: {integrity: sha512-MPmuLJrqHYR2xI7ST9Xtw/xj+6Xoq7kUvcGuXWdMMNT11DcU1KppkR8QBHov437NFYh6aGyjrHUVeM4T5Ls8yg==} engines: {node: '>= 18'} peerDependencies: - markdown-it: ^14.0.0 + markdown-it: ^14.1.0 + peerDependenciesMeta: + markdown-it: + optional: true + + '@mdit/plugin-tex@0.12.0': + resolution: {integrity: sha512-ejeSgSeZvcI5P4hFFQ4q5pHrZBGO2fQWVGm6dZ3BhX4ldoV8LjCIzkcMMXhrhSOVjwHnqmF6xOh9EvI0jzak1w==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^14.1.0 + peerDependenciesMeta: + markdown-it: + optional: true + + '@mdit/plugin-uml@0.12.0': + resolution: {integrity: sha512-EfVMmq0CwLJcssxhkvGS2ESenNNEMeK04j702Z9v3am1M9DdEj6zHTrHQd9tA0jNVuFY8ZlmMgDfkkG5k6Rm3Q==} + engines: {node: '>= 18'} + peerDependencies: + markdown-it: ^14.1.0 peerDependenciesMeta: markdown-it: optional: true @@ -1032,86 +1057,98 @@ packages: react: '>=18.0' three: '>= 0.138.0' - '@rollup/rollup-android-arm-eabi@4.16.2': - resolution: {integrity: sha512-VGodkwtEuZ+ENPz/CpDSl091koMv8ao5jHVMbG1vNK+sbx/48/wVzP84M5xSfDAC69mAKKoEkSo+ym9bXYRK9w==} + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.16.2': - resolution: {integrity: sha512-5/W1xyIdc7jw6c/f1KEtg1vYDBWnWCsLiipK41NiaWGLG93eH2edgE6EgQJ3AGiPERhiOLUqlDSfjRK08C9xFg==} + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.16.2': - resolution: {integrity: sha512-vOAKMqZSTbPfyPVu1jBiy+YniIQd3MG7LUnqV0dA6Q5tyhdqYtxacTHP1+S/ksKl6qCtMG1qQ0grcIgk/19JEA==} + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.16.2': - resolution: {integrity: sha512-aIJVRUS3Dnj6MqocBMrcXlatKm64O3ITeQAdAxVSE9swyhNyV1dwnRgw7IGKIkDQofatd8UqMSyUxuFEa42EcA==} + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.16.2': - resolution: {integrity: sha512-/bjfUiXwy3P5vYr6/ezv//Yle2Y0ak3a+Av/BKoi76nFryjWCkki8AuVoPR7ZU/ckcvAWFo77OnFK14B9B5JsA==} + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.16.2': - resolution: {integrity: sha512-S24b+tJHwpq2TNRz9T+r71FjMvyBBApY8EkYxz8Cwi/rhH6h+lu/iDUxyc9PuHf9UvyeBFYkWWcrDahai/NCGw==} + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.16.2': - resolution: {integrity: sha512-UN7VAXLyeyGbCQWiOtQN7BqmjTDw1ON2Oos4lfk0YR7yNhFEJWZiwGtvj9Ay4lsT/ueT04sh80Sg2MlWVVZ+Ug==} + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.16.2': - resolution: {integrity: sha512-ZBKvz3+rIhQjusKMccuJiPsStCrPOtejCHxTe+yWp3tNnuPWtyCh9QLGPKz6bFNFbwbw28E2T6zDgzJZ05F1JQ==} + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-powerpc64le-gnu@4.16.2': - resolution: {integrity: sha512-LjMMFiVBRL3wOe095vHAekL4b7nQqf4KZEpdMWd3/W+nIy5o9q/8tlVKiqMbfieDypNXLsxM9fexOxd9Qcklyg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.16.2': - resolution: {integrity: sha512-ohkPt0lKoCU0s4B6twro2aft+QROPdUiWwOjPNTzwTsBK5w+2+iT9kySdtOdq0gzWJAdiqsV4NFtXOwGZmIsHA==} + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.16.2': - resolution: {integrity: sha512-jm2lvLc+/gqXfndlpDw05jKvsl/HKYxUEAt1h5UXcMFVpO4vGpoWmJVUfKDtTqSaHcCNw1his1XjkgR9aort3w==} + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.16.2': - resolution: {integrity: sha512-oc5/SlITI/Vj/qL4UM+lXN7MERpiy1HEOnrE+SegXwzf7WP9bzmZd6+MDljCEZTdSY84CpvUv9Rq7bCaftn1+g==} + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.16.2': - resolution: {integrity: sha512-/2VWEBG6mKbS2itm7hzPwhIPaxfZh/KLWrYg20pCRLHhNFtF+epLgcBtwy3m07bl/k86Q3PFRAf2cX+VbZbwzQ==} + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.16.2': - resolution: {integrity: sha512-Wg7ANh7+hSilF0lG3e/0Oy8GtfTIfEk1327Bw8juZOMOoKmJLs3R+a4JDa/4cHJp2Gs7QfCDTepXXcyFD0ubBg==} + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.16.2': - resolution: {integrity: sha512-J/jCDKVMWp0Y2ELnTjpQFYUCUWv1Jr+LdFrJVZtdqGyjDo0PHPa7pCamjHvJel6zBFM3doFFqAr7cmXYWBAbfw==} + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.16.2': - resolution: {integrity: sha512-3nIf+SJMs2ZzrCh+SKNqgLVV9hS/UY0UjT1YU8XQYFGLiUfmHYJ/5trOU1XSvmHjV5gTF/K3DjrWxtyzKKcAHA==} + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sentry-internal/feedback@7.111.0': resolution: {integrity: sha512-xaKgPPDEirOan7c9HwzYA1KK87kRp/qfIx9ZKLOEtxwy6nqoMuSByGqSwm1Oqfcjpbd7y6/y+7Bw+69ZKNVLDQ==} engines: {node: '>=12'} @@ -1154,12 +1191,28 @@ packages: resolution: {integrity: sha512-CB5rz1EgCSwj3xoXogsCZ5pQtfERrURc/ItcCuoaijUhkD0iMq5MCNWMHW3mBsBrqx/Oba+XGvDu0t/5+SWwBg==} engines: {node: '>=8'} + '@shikijs/core@1.6.2': + resolution: {integrity: sha512-guW5JeDzZ7uwOjTfCOFZ2VtVXk5tmkMzBYbKGfXsmAH1qYOej49L5jQDcGmwd6/OgvpmWhzO2GNJkQIFnbwLPQ==} + + '@shikijs/core@1.9.1': + resolution: {integrity: sha512-EmUful2MQtY8KgCF1OkBtOuMcvaZEvmdubhW0UHCGXi21O9dRLeADVCj+k6ZS+de7Mz9d2qixOXJ+GLhcK3pXg==} + + '@shikijs/transformers@1.6.2': + resolution: {integrity: sha512-ndqTWyHnxmsLkowhKWTam26opw8hg5a34y6FAUG/Xf6E49n3MM//nenKxXiWpPYkNPl1KZnYXB1k+Ia46wjOZg==} + + '@shikijs/transformers@1.9.1': + resolution: {integrity: sha512-wPrGTpBURQ95IKPIhPQE3bGsANpPPtea1+aVHZp0aYtgxfL5UM3QbJ5rNdCuhcyjz/JNp5ZvSItOr+ayJxebJQ==} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@stackblitz/sdk@1.9.0': - resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@stackblitz/sdk@1.10.0': + resolution: {integrity: sha512-IcvE9Xifo2c4/f+yNqjFM/OW5VTBPLed3TxsQ+n8n81Py358IqD5w0IYfFgV5gbDjp2g5H5YK2/Shls/kQNTWQ==} '@trivago/prettier-plugin-sort-imports@3.4.0': resolution: {integrity: sha512-485Iailw8X5f7KetzRka20RF1kPBEINR5LJMNwlBZWY1gRAlVnv5dZzyNPnLxSP0Qcia8HETa9Cdd8LlX9o+pg==} @@ -1193,20 +1246,17 @@ packages: '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} - '@types/linkify-it@3.0.5': - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/markdown-it-emoji@2.0.5': - resolution: {integrity: sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==} + '@types/markdown-it-emoji@3.0.1': + resolution: {integrity: sha512-cz1j8R35XivBqq9mwnsrP2fsz2yicLhB8+PDtuVkKOExwEdsVBNI+ROL3sbhtR5occRZ66vT0QnwFZCqdjf3pA==} - '@types/markdown-it@13.0.7': - resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + '@types/markdown-it@14.1.1': + resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} - '@types/markdown-it@14.0.1': - resolution: {integrity: sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==} - - '@types/mdurl@1.0.5': - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -1270,8 +1320,8 @@ packages: peerDependencies: vite: ^4.1.0-beta.0 - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 @@ -1280,126 +1330,261 @@ packages: '@vue/compiler-core@3.4.24': resolution: {integrity: sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==} + '@vue/compiler-core@3.4.27': + resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} + + '@vue/compiler-core@3.4.30': + resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} + '@vue/compiler-dom@3.4.24': resolution: {integrity: sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==} + '@vue/compiler-dom@3.4.27': + resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + + '@vue/compiler-dom@3.4.30': + resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} + '@vue/compiler-sfc@3.4.24': resolution: {integrity: sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==} + '@vue/compiler-sfc@3.4.27': + resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} + + '@vue/compiler-sfc@3.4.30': + resolution: {integrity: sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==} + '@vue/compiler-ssr@3.4.24': resolution: {integrity: sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==} + '@vue/compiler-ssr@3.4.27': + resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} + + '@vue/compiler-ssr@3.4.30': + resolution: {integrity: sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==} + '@vue/devtools-api@6.6.1': resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} - '@vue/reactivity@3.4.24': - resolution: {integrity: sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==} + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - '@vue/runtime-core@3.4.24': - resolution: {integrity: sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==} + '@vue/reactivity@3.4.27': + resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} - '@vue/runtime-dom@3.4.24': - resolution: {integrity: sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==} + '@vue/reactivity@3.4.30': + resolution: {integrity: sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==} - '@vue/server-renderer@3.4.24': - resolution: {integrity: sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==} + '@vue/runtime-core@3.4.27': + resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} + + '@vue/runtime-core@3.4.30': + resolution: {integrity: sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==} + + '@vue/runtime-dom@3.4.27': + resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} + + '@vue/runtime-dom@3.4.30': + resolution: {integrity: sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==} + + '@vue/server-renderer@3.4.27': + resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} peerDependencies: - vue: 3.4.24 + vue: 3.4.27 + + '@vue/server-renderer@3.4.30': + resolution: {integrity: sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==} + peerDependencies: + vue: 3.4.30 '@vue/shared@3.4.24': resolution: {integrity: sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==} - '@vuepress/bundler-vite@2.0.0-rc.2': - resolution: {integrity: sha512-bjkn0krtucciUkGGdckCkGGg+wlv3Pj7s1lO/ChACLQncDwc3GgMTuMm0JyaCDKzTXE8sufjHHGWMftRL8qFOg==} + '@vue/shared@3.4.27': + resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} - '@vuepress/cli@2.0.0-rc.2': - resolution: {integrity: sha512-a5qAtd6gNndNcqENBNkMn9xRDbb1B2kJ62dWUaE5KjhkM/Fed4CTvBTDd0qfYmwiwsSFPL08VWavo1FcdMNXsA==} + '@vue/shared@3.4.30': + resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} + + '@vuepress/bundler-vite@2.0.0-rc.13': + resolution: {integrity: sha512-dzBM0eH0VvdsMB0+Y1sMpEfTz/elWytTNdjon7LUbda3oHMQOO+IwP0PcA7VNAqqnvMplMhawocaMC+STupymA==} + + '@vuepress/cli@2.0.0-rc.13': + resolution: {integrity: sha512-En7iQnwgnmkPAgoT+YqzwgMRTO3uLwIk+ar3E7HnQA//ovZNmoaChkc/C3jjklP5OF3g9CtGT8VjZ9njDjLe/Q==} hasBin: true - '@vuepress/client@2.0.0-rc.2': - resolution: {integrity: sha512-gQ4CfBhzWYOCW4OcAUd6S8Jr9m/8UkZZuN/70t12GltbX/cdm6zrGnf89GiVjgvoK8+OYoc7luoBuWbyc/X5sg==} + '@vuepress/client@2.0.0-rc.13': + resolution: {integrity: sha512-kFHVyroAFZ+/ZVaItjIXOZA6r+ympWN+C+0yZYVkMpzyDVFdZrl9WazqhwHBIUj0/sA+NLq2o2EvoqvAPa1lFg==} - '@vuepress/core@2.0.0-rc.2': - resolution: {integrity: sha512-C/bHG0y+v5oeCrfaesy2yFa0dyCah05g1w7vArZk8ABsVECjZKAC5/ev39UFQm2dCdNzsj2E3KgLIxYWqpcKeg==} + '@vuepress/core@2.0.0-rc.13': + resolution: {integrity: sha512-IK+5h2QAtl52g/3M0nGV2r0L+2cy0yhQ1Ez65ij4xs1FoiCEStJIVJSYGl1VMQDkB+MUGJAXZw86lNA2PIjgsg==} - '@vuepress/helper@2.0.0-rc.6': - resolution: {integrity: sha512-Q4NzyrlZ0ZgEboo7HtrQiXBBLf3EEsqqQLeMFzTcTlDujxkh0Erxp+o1LCWr4wFno3sO6W7OCjM2HeUTiZ5NGQ==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + '@vuepress/helper@2.0.0-rc.34': + resolution: {integrity: sha512-xgsDya8wzzMJU12MTx7Osf38OcV91cgcS5E9wm2PFVsjC2Jlo/vkPAa2GQZEnK/CQpUpgrsBSf9tbj4aqxF18g==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/markdown@2.0.0-rc.2': - resolution: {integrity: sha512-5/RmJnap+MGKxDhSO+Mv6zB8PoPHhhBujnNKKO3PnyfPrj0LyL0AuTm8m3Ea271wMp9956WINjw8jlpn+Z1sBg==} - - '@vuepress/plugin-active-header-links@2.0.0-rc.3': - resolution: {integrity: sha512-ddr8VIrYA/kpWGWx80GeWclSvQoYR9QjXvkx//AMbl5mQqX70GTZrgv5Rbnp6MC8mBxVg6Izy/9eqaJELE+A3g==} + '@vuepress/helper@2.0.0-rc.36': + resolution: {integrity: sha512-J9R9mCh8KXAIE28wvks3TkY7lFKG/zvboz4THs969PtsxbKa08OaEPQ904Pr6Y8y/9VS5Kp9WQDjPcUnlalx6A==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-copy-code@2.0.0-rc.6': - resolution: {integrity: sha512-9/yjNNpD2D+bUTQvhUATK2ngugLgQuUtEXdAFUZtw1HWxozJwxUbMlB8FuLTaJPyln6/tpJmwdpOBsHhkKGz5g==} + '@vuepress/highlighter-helper@2.0.0-rc.34': + resolution: {integrity: sha512-E9SHLHUmPx8vdHE/F+jcR9S0WHHCTFujIW5KNH7yFGd5YYZc0cOsWKQvmBX1BArbTlbzeHwvjvGqcMTS4FdQyg==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-docsearch@2.0.0-rc.3': - resolution: {integrity: sha512-3kf05fviNAahFXNLCOcQEgn/cjJLshCEf6oiezA8Jr6ABj6Q38Ky+nFjX/AjCaoWsyiG4BfbRRxuqxYvsDEimQ==} + '@vuepress/highlighter-helper@2.0.0-rc.36': + resolution: {integrity: sha512-tf4gRyLSKJww3DySnYt/yc9b3vUelqJ78y1BBTOqVmLPrfn3Ig7/1fOv0FxbNg1k+HoxHskN3NS9tQDG+pMp8w==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-external-link-icon@2.0.0-rc.3': - resolution: {integrity: sha512-DX4Dn2uj2rAEausB2tz5fe/Ra3oR/B9uR67+yG2lQzZqcZZDW5txsXpZaM0FkXHijzNoS4NKP7k/7qNVe5WvcQ==} + '@vuepress/markdown@2.0.0-rc.13': + resolution: {integrity: sha512-p26OjCj0nMXFBRMPkMgt8VRfFLNF7V6YRqWdDtxipHl6S1y5s965uYgYfxTyr9TLGwnXRsZvE60wItKHftFe5w==} + + '@vuepress/plugin-active-header-links@2.0.0-rc.36': + resolution: {integrity: sha512-qZg51BuyL6bT2zAmUyV+oQvpk2PvoG34TXfb/0p0tKyM8QtqxnUW1Av3+poXrZaKINwLHVMqJPRy8JsB7o3lXQ==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-git@2.0.0-rc.3': - resolution: {integrity: sha512-BQoDWmksC+aSc5V933OuNeU7mfrP4hryhckIFadAhKLVRl6CSXDb96SGVTBxcO1gIgKzItdE67UzMw4T9JJN6A==} + '@vuepress/plugin-back-to-top@2.0.0-rc.36': + resolution: {integrity: sha512-RVwXyPaP9En8elNBURPRZZU6D6Meuak34lKxuQYezzOy9Fafgz2JO3LwWYeMbS/8H4trSPnl1JEl3oKjapOwSA==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-google-analytics@2.0.0-rc.21': - resolution: {integrity: sha512-ZqDw3MrxA3tY5WXD/LIaZoCSgnynO9aQboOUgm1SF8GoR/7ULqiCWmxbLD3L8kkWS3TWKnH+JwK0VG0J6FNyFA==} + '@vuepress/plugin-blog@2.0.0-rc.36': + resolution: {integrity: sha512-nC0T9UQoYtW+xH/vtsZsNX+vtIN7EItdpzgmnyt+92mK4cT1+T6LRN3UCR+OwYpocYjGnPCa9PixdLFFmNUKnw==} peerDependencies: - vuepress: 2.0.0-rc.9 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-nprogress@2.0.0-rc.3': - resolution: {integrity: sha512-UkbMLvkRps56KF2fsIXtJ0ylRacuPRW9qA1PYwq7XkDqNr4FE5aZsnRHuYIMPUxuhU5t3hRx/zeKOwbctzd2Yw==} + '@vuepress/plugin-catalog@2.0.0-rc.36': + resolution: {integrity: sha512-NB2vQSNId78gzGuAo/kbBWF8Zhg/Exw+1DgDo2rq0guBDIBWvt9ddZRpyYqFlayDknDXfS5rdPO5Q1A4Fw4gCw==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-prismjs@2.0.0-rc.3': - resolution: {integrity: sha512-tbyGKXDR/AbhwiUQIU49Le2VaUYGBnjFqdhGlrC47kRl4Iy+XtxyKgRJcFGcWU0AHRdTtC9MAmPIfz2nJkNhSQ==} + '@vuepress/plugin-comment@2.0.0-rc.36': + resolution: {integrity: sha512-E4Nxc0uBDNUC2WDkYGj5PmTg+ryKYDSU1aHzXZOK2GpTB/1DlcHAKkyEqjooQXAM5x2SVDgOe8J9iEqctyKK7w==} peerDependencies: - vuepress: 2.0.0-rc.2 + '@waline/client': ^3.1.0 + artalk: ^2.8.7 + twikoo: ^1.5.0 + vuepress: 2.0.0-rc.13 + peerDependenciesMeta: + '@waline/client': + optional: true + artalk: + optional: true + twikoo: + optional: true - '@vuepress/plugin-seo@2.0.0-rc.6': - resolution: {integrity: sha512-MIzt1V4wnp5EYBvRt6W54+poguKf2w2YRpyDNa3DkjM/rhrjfSsD7EYP7syp4gzwnIDoxUP3pnENh1mYY9g9bQ==} + '@vuepress/plugin-copy-code@2.0.0-rc.36': + resolution: {integrity: sha512-tmSQYFkMVhtYo0uBUdUcX0dYmzaEigk3jqtF3vFOYZ8BmBjjW8BQoDDeJqdrgSV2Q2sdb6tWGdFx7iomyvYq0w==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-sitemap@2.0.0-rc.6': - resolution: {integrity: sha512-yvRSTADF9RHa6JzFeIAxY0BP7wKy+F+naig9BgE0ushC4IQkpjh3VrBtdXhlRKzSMGlLfgmc2kezsObvjvz31w==} + '@vuepress/plugin-copyright@2.0.0-rc.36': + resolution: {integrity: sha512-D1pV6N07L0L7p242gpzsPZZaNF6dpLR0tLRgb3Mc4XNoJ9zBj5hMMVraiJgOR5IMNgUc+Wtr7aJmIGCY4NvPXQ==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-theme-data@2.0.0-rc.3': - resolution: {integrity: sha512-Uiso+0b2sIaHtPVftjpCEIT+/T4/E9ZpTCL0fnUEa8APnrP7SiIBqph7+KZENvXGg+0B5+MtZROOfFksFfMyFw==} + '@vuepress/plugin-docsearch@2.0.0-rc.36': + resolution: {integrity: sha512-TmzkArujL3pfgWU0QoFjKieC1fUx9JyD1exKqfjgpV8wIQEAPha63byRzOJfcPF0TR0onXWLSZ9eT9efIPCnag==} peerDependencies: - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 - '@vuepress/shared@2.0.0-rc.2': - resolution: {integrity: sha512-2kmm0rw+WalRWrSC5pW0TXRz8Wyuh57XmOZEUOhPOflw4o8Dno+PcaWbdOZ/TLkTgTt3X1n7r1/c1ALtaLta8g==} + '@vuepress/plugin-git@2.0.0-rc.36': + resolution: {integrity: sha512-5m0LsUyH+SjBsKMggAoLjFf4EkrcOICrixEilyna+sTatsmyYrWNy7bT9SKxMeYJeFQ8rJVE1ch9O7cC2X6ejg==} + peerDependencies: + vuepress: 2.0.0-rc.13 - '@vuepress/utils@2.0.0-rc.2': - resolution: {integrity: sha512-g93yFJKtztpdXm4XyOIQ9QcUrKuvuWizvH3qWDQ5/WKlxa6VqE7nVNPlkudgGUIc7Bl4AGrlHcmgvkwaNoMcfA==} + '@vuepress/plugin-google-analytics@2.0.0-rc.34': + resolution: {integrity: sha512-NlkS9N6DjQR+ka0XggMl/KyIyAkFRJu8VzpjS8W7ZzO5cwVi/yDpIQ4kme7GwWdnOFd0L9xa3rTZfIyVYSho1w==} + peerDependencies: + vuepress: 2.0.0-rc.13 - '@vueuse/core@10.9.0': - resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + '@vuepress/plugin-links-check@2.0.0-rc.36': + resolution: {integrity: sha512-2ZHlgR0U6vxZhRKBvy4UIEmhDC/gO9w/SJ2FITwyIH/LnRyXz3p159/adbzpWTI3XF7PoyruqIWt+dzSmgcAng==} + peerDependencies: + vuepress: 2.0.0-rc.13 - '@vueuse/metadata@10.9.0': - resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + '@vuepress/plugin-notice@2.0.0-rc.36': + resolution: {integrity: sha512-hgwHdgAbc29ARr/ldkRv5EHuRQh/GBal+m8NZWJ/GMHA10Ehnk/QhCIH7ycuFnZgG58OTNcEfIAYAXsuQnD3Bw==} + peerDependencies: + vuepress: 2.0.0-rc.13 - '@vueuse/shared@10.9.0': - resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + '@vuepress/plugin-nprogress@2.0.0-rc.36': + resolution: {integrity: sha512-3NK0Thxd80cKgTTbk8CpGlqrqqoH0GCFd+bl2qj1PS3DvhPG7tbzZNdKNGi4PN1FMrwi2ymsDFocyQPcAqXrrg==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-photo-swipe@2.0.0-rc.36': + resolution: {integrity: sha512-DRUruI5oLolUI4VL6iRoQYLStMPt4/jJ50z4i5FxocFrmT7MOBczFJ1VYdGLXjP4Yq5Ua7mLi+9P2rG4x8jD0g==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-reading-time@2.0.0-rc.36': + resolution: {integrity: sha512-H6WqPIqrQGXcrghPbwC5nuP3gx90iFFUHncQLoKIlKHfnBZ200GxIcMAUK+Zm0DGbpeGk66guo/ZxdKpUoRKdw==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-rtl@2.0.0-rc.36': + resolution: {integrity: sha512-3ucP1Jv7xzBVluCXNW+v1vEawz1/S8zakwVqjwScPZX0DD7VB/kZZ3YDM8/3dd22sarVcfSQdZArhfuDSW4UAA==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-sass-palette@2.0.0-rc.36': + resolution: {integrity: sha512-RNGSVcW2Pmir60VL1Rc1UZxytu6x2KTKHST6CjtxC2pyczoCNiAWmfzVqiTTMkRDoRKM7DJKEj0Q0Zc49KfA3A==} + peerDependencies: + sass-loader: ^14.0.0 + vuepress: 2.0.0-rc.13 + peerDependenciesMeta: + sass-loader: + optional: true + + '@vuepress/plugin-seo@2.0.0-rc.36': + resolution: {integrity: sha512-MuBToaW/TGgM1bm8yjq/V8/0PUb5QjMGBh+6enl29t/Pc8CYVGPi2bM2OPHoyyBsYqN6fC83klCVhsSOunlJ2w==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-shiki@2.0.0-rc.34': + resolution: {integrity: sha512-Tcpq+/PWSk5O+T1iVTyeoAzsO8iXzq8ieMqbboEBtLADV5X52e0xqIhmmsp5xE+mqk0WzZ0E4dO8aaF5gecphQ==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-shiki@2.0.0-rc.36': + resolution: {integrity: sha512-ba/vXqnzNcY6LURl7VNKsXlT21DjBd/AEaifXPCmBwpzADmYueSwt9PxnUJMocyLFRpT/OSg5kZkFO1mYdVzGA==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-sitemap@2.0.0-rc.36': + resolution: {integrity: sha512-vbEpAsueTsonlDhkI5ejh/7qILZRIHjTnvG8F400PETPXlsNGobrDCoLoMkJAYH2aH3zRr7SomH3OqNeWCaARQ==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-theme-data@2.0.0-rc.36': + resolution: {integrity: sha512-j60AR1/dUFjrbf2ve9dmEfEOgPgH79bnh7TelQeP5IgymDnCUwd+nMu4iFoDTKELfCQptiPB9p3pQ2IbbQMTnA==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/plugin-watermark@2.0.0-rc.36': + resolution: {integrity: sha512-qKkUn74ldTqOC7ZB82evZsykfqkkdCPUdqVy1a8XIwvDZOy7BdAXE7YRBWeqGdDc1EIMam9u6kEzwvYUpQvETQ==} + peerDependencies: + vuepress: 2.0.0-rc.13 + + '@vuepress/shared@2.0.0-rc.13': + resolution: {integrity: sha512-xtruKVH9QqTLIQxbPbU3iZWthLC8uR5yYUzVA6eL+knjHkpCXOlzqMYnlp4xT0tzQNw+gBHWLKo8zVEccSkqug==} + + '@vuepress/utils@2.0.0-rc.13': + resolution: {integrity: sha512-MbTnyCodo9K6WK7xFwOVEHnhatlq8BsoVmrtM16Swk2igjtexXAJ6OCCXGON1l32fwGGVKFom3bH9seBvqSK7g==} + + '@vueuse/core@10.11.0': + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} + + '@vueuse/metadata@10.11.0': + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} + + '@vueuse/shared@10.11.0': + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} '@xobotyi/scrollbar-width@1.9.5': resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} @@ -1641,8 +1826,9 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - create-codepen@1.0.1: - resolution: {integrity: sha512-XzSWwGCFNeOnNGp3KdCDGaKq4Cp1SvjzpPGQqO0tj1HT3BhksLdl/xQ2ZEY4+0MQ3m1I/K1Fvpm4GGMthtamyA==} + create-codepen@2.0.0: + resolution: {integrity: sha512-ehJ0Zw5RSV2G4+/azUb7vEZWRSA/K9cW7HDock1Y9ViDexkgSJUZJRcObdw/YAWeXKjreEQV9l/igNSsJ1yw5A==} + engines: {node: '>=18'} cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -1687,8 +1873,8 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} - dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -1779,8 +1965,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - envinfo@7.12.0: - resolution: {integrity: sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true @@ -1823,8 +2009,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true @@ -1893,9 +2079,9 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@9.3.0: + resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==} + engines: {node: ^18.19.0 || >=20.5.0} extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -1932,6 +2118,10 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2021,9 +2211,9 @@ packages: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} @@ -2122,9 +2312,9 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} + human-signals@7.0.0: + resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} + engines: {node: '>=18.18.0'} hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} @@ -2248,6 +2438,10 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} @@ -2263,9 +2457,9 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -2432,10 +2626,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - maath@0.10.7: resolution: {integrity: sha512-zQ2xd7dNOIVTjAS+hj22fyj1EFYmOJX6tzKjZ92r6WDoq8hyFxjuGA2q950tmR4iC/EKXoMQdSipkaJVuUHDTg==} peerDependencies: @@ -2455,8 +2645,8 @@ packages: magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - markdown-it-anchor@8.6.7: - resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} + markdown-it-anchor@9.0.1: + resolution: {integrity: sha512-cBt7aAzmkfX8X7FqAe8EBryiKmToXgMQEEMqkXzWCm0toDtfDYIGboKeTKd8cpNJArJtutrf+977wFJTsvNGmQ==} peerDependencies: '@types/markdown-it': '*' markdown-it: '*' @@ -2491,9 +2681,6 @@ packages: mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2514,10 +2701,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2558,6 +2741,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2621,10 +2809,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -2657,6 +2841,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} @@ -2690,13 +2878,16 @@ packages: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} - photoswipe@5.4.3: - resolution: {integrity: sha512-9UC6oJBK4oXFZ5HcdlcvGkfEHsVrmE4csUdCQhEjHYb3PvPLO3PG7UhnPuOgjxwmhq5s17Un5NUdum01LgBDng==} + photoswipe@5.4.4: + resolution: {integrity: sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==} engines: {node: '>= 0.12.0'} picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -2741,17 +2932,20 @@ packages: ts-node: optional: true - postcss-load-config@5.0.3: - resolution: {integrity: sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ==} + postcss-load-config@5.1.0: + resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} engines: {node: '>= 18'} peerDependencies: jiti: '>=1.21.0' postcss: '>=8.0.9' + tsx: ^4.8.1 peerDependenciesMeta: jiti: optional: true postcss: optional: true + tsx: + optional: true postcss-nested@6.0.1: resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} @@ -2791,9 +2985,9 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} + pretty-ms@9.0.0: + resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} + engines: {node: '>=18'} promise-worker-transferable@1.0.4: resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} @@ -2930,8 +3124,8 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.16.2: - resolution: {integrity: sha512-sxDP0+pya/Yi5ZtptF4p3avI+uWCIf/OdrfdH2Gbv1kWddLKk0U7WE3PmQokhi5JrektxsK3sK8s4hzAmjqahw==} + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2953,8 +3147,8 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - sass@1.75.0: - resolution: {integrity: sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==} + sass@1.77.6: + resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==} engines: {node: '>=14.0.0'} hasBin: true @@ -2982,8 +3176,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -3010,6 +3204,12 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shiki@1.6.2: + resolution: {integrity: sha512-X3hSm5GzzBd/BmPmGfkueOUADLyBoZo1ojYQXhd+NU2VJn458yt4duaS0rVzC+WtqftSV7mTVvDw+OB9AHi3Eg==} + + shiki@1.9.1: + resolution: {integrity: sha512-8PDkgb5ja3nfujTjvC4VytL6wGOGCtFAClUb2r3QROevYXxcq+/shVJK5s6gy0HZnjaJgFxd6BpPqpRfqne5rA==} + side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -3021,9 +3221,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sitemap@7.1.1: - resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} - engines: {node: '>=12.0.0', npm: '>=5.6.0'} + sitemap@8.0.0: + resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==} + engines: {node: '>=14.0.0', npm: '>=6.0.0'} hasBin: true slash@5.1.0: @@ -3110,9 +3310,9 @@ packages: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -3359,8 +3559,8 @@ packages: terser: optional: true - vite@5.0.13: - resolution: {integrity: sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==} + vite@5.2.13: + resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3387,8 +3587,8 @@ packages: terser: optional: true - vue-demi@0.14.7: - resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + vue-demi@0.14.8: + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} engines: {node: '>=12'} hasBin: true peerDependencies: @@ -3403,107 +3603,67 @@ packages: peerDependencies: vue: ^3.2.0 - vue@3.4.24: - resolution: {integrity: sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==} + vue@3.4.27: + resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - vuepress-plugin-auto-catalog@2.0.0-rc.18: - resolution: {integrity: sha512-N26qkzVRAatD+HW5kf8zuAH1qJ6Es0qoNYU2jOLElge6gjsFhqNuDXrN+PPpGrwhP3AbU4ZmQ1qbTQI5Yqubug==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Please use @vuepress/plugin-catalog@next intead + vue@3.4.30: + resolution: {integrity: sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==} peerDependencies: - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.2 + typescript: '*' peerDependenciesMeta: - sass-loader: + typescript: optional: true - vuepress-plugin-blog2@2.0.0-rc.18: - resolution: {integrity: sha512-R44mLichywQ3BzKdizdq0Btw3LDkhppMWwGIhpivhrfkYOcZ1OjW1RTpsUveqSLhoWghzGSj1HI4+pRylOY90g==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Use @vuepress/plugin-blog@next instead - peerDependencies: - vuepress: 2.0.0-rc.2 - - vuepress-plugin-comment2@2.0.0-rc.18: - resolution: {integrity: sha512-iSCX6aYsf2e6YwzMdygekixARdRPixkgDlFDzDpQTuyr5wdsdp+nMSAS6F4uYtKXFzZgASagbfBMjzN9JLT+Zg==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Use @vuepress/plugin-comment@next instead - peerDependencies: - '@waline/client': ^2.15.8 || ^3.0.0-alpha.11 - artalk: ^2.7.3 - sass-loader: ^14.0.0 - twikoo: ^1.5.0 - vuepress: 2.0.0-rc.2 - peerDependenciesMeta: - '@waline/client': - optional: true - artalk: - optional: true - sass-loader: - optional: true - twikoo: - optional: true - - vuepress-plugin-components@2.0.0-rc.18: - resolution: {integrity: sha512-eMLF4o3v8S/npkYKVbQqgk7Bx+PbfwUsulH2uOnNeJZ+f0d5+4etJku3bxoGWB2HTwXCbCooAl84UaHbvMHIRQ==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} + vuepress-plugin-components@2.0.0-rc.49: + resolution: {integrity: sha512-R6vJJ/ySRS53tmzYCpPF8Cco/ZWIdDTXsGcr1rCuQ00XdSccDGzl/WIkCHWTvuevQvaRlCzxbR1g9RR/BoiRNQ==} + engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: artplayer: ^5.0.0 - dashjs-pure: ^1.0.0 + dashjs: 4.7.4 hls.js: ^1.4.12 mpegts.js: ^1.7.3 - plyr: ^3.7.8 sass-loader: ^14.0.0 - vidstack: ^1.9.0 - vuepress: 2.0.0-rc.2 + vidstack: ^1.11.21 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: artplayer: optional: true - dashjs-pure: + dashjs: optional: true hls.js: optional: true mpegts.js: optional: true - plyr: - optional: true sass-loader: optional: true vidstack: optional: true - vuepress-plugin-copyright2@2.0.0-rc.18: - resolution: {integrity: sha512-QGm8e37WkmkK63P5Zo8iPYUS8EkHBtYOd5V5NOR5nokfwoIMh7vnIci/Tw6YmnWJlRIqWYsis7ZVk8Rk0Zkuqg==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Please use @vuepress/plugin-copyright@v2 instead + vuepress-plugin-md-enhance@2.0.0-rc.49: + resolution: {integrity: sha512-KpTwYsq91T3sywFYKTYbGKFBshnMSg/HZtrMImvoQzqoFuRIuWR6xPZszG1mJJ+ahajFB5Vzkrhec/u6TVs9JA==} + engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - vuepress: 2.0.0-rc.2 - - vuepress-plugin-md-enhance@2.0.0-rc.18: - resolution: {integrity: sha512-smn8Uagbhyeim+JtOeOdSMio+YXHhHk3RXRjj1z7PLFkY7zcY44v/BvChUDeWV/I4/aaOGWashmSud0Hi1Cs0g==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - '@types/reveal.js': ^4.4.5 - '@vue/repl': ^3.0.0 + '@types/reveal.js': ^5.0.0 + '@vue/repl': ^4.1.1 chart.js: ^4.0.0 echarts: ^5.0.0 flowchart.ts: ^2.0.0 || ^3.0.0 katex: ^0.16.0 kotlin-playground: ^1.23.0 - markmap-lib: ^0.15.5 - markmap-toolbar: ^0.15.5 - markmap-view: ^0.15.5 + markmap-lib: ^0.17.0 + markmap-toolbar: ^0.17.0 + markmap-view: ^0.17.0 mathjax-full: ^3.2.2 - mermaid: ^10.6.0 + mermaid: ^10.8.0 reveal.js: ^5.0.0 sandpack-vue3: ^3.0.0 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.2 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: '@types/reveal.js': optional: true @@ -3536,85 +3696,53 @@ packages: sass-loader: optional: true - vuepress-plugin-photo-swipe@2.0.0-rc.18: - resolution: {integrity: sha512-a/djvwWaTLsnUWHRJnrAaCIRV6Qdd8I2GJXQ/7gPn9zP5W9/sJSggVxl6ZTgRgRCVMoe8DG8TrysYMi/lCMgBw==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Use @vuepress/plugin-photo-swipe instead + vuepress-shared@2.0.0-rc.49: + resolution: {integrity: sha512-bHXbKoiza2ihvBLYdObW2NgDeRnxtoeScaOa2z/Pg9g3COLp+2HYZvNS/Y2izQstJ2VWvjxukoVJzTvpTw9AEQ==} + engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.2 - peerDependenciesMeta: - sass-loader: - optional: true + vuepress: 2.0.0-rc.13 - vuepress-plugin-reading-time2@2.0.0-rc.18: - resolution: {integrity: sha512-Sj245CYGo0F5Axz6JN6nslcvyZ+1HtfraIPC7MNfPzJgOR/Tc6JKtQcNZhgyCL3aKx1wevs8T7X/nCeTToArsQ==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Please use @vuepress/plugin-reading-time@v2 instead + vuepress-theme-hope@2.0.0-rc.49: + resolution: {integrity: sha512-OiWqxBWRpd2g8BV8ODe9Xqxxcvv0l38eyzjtnOXGnL8WAJ0RmHKFpSHHXtTKN5coaEyJb3wK7k4CCBO5RTYCiw==} + engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - vuepress: 2.0.0-rc.2 - - vuepress-plugin-rtl@2.0.0-rc.18: - resolution: {integrity: sha512-VRBHBrixLGK/KkFLVyCDmQbSekJYLF/k5yDNyMPnN3f9AIG8+g28ko8iBde1n7udhBx2K6bOTfHHyrdThmp+SQ==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - deprecated: Use @vuepress/plugin-rtl@next instead - peerDependencies: - vuepress: 2.0.0-rc.2 - - vuepress-plugin-sass-palette@2.0.0-rc.18: - resolution: {integrity: sha512-DYmHANdKkz+jwAU7dpP72NYjPGOpWrY/2eTs4NPDDBNKELcav5W6oDM4T9gPGpk9kncEW8LC4NTS6z2Jkep2Ig==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.2 - peerDependenciesMeta: - sass-loader: - optional: true - - vuepress-shared@2.0.0-rc.18: - resolution: {integrity: sha512-oFY8hWYrMQHQMe+YKZvjfzdHK/wvghyhWa4IJuLBwRm6j9AhXOJEAvSzQQKpERkpGS4vZ+pY5tWAodfv2Fhztw==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - vuepress: 2.0.0-rc.2 - - vuepress-theme-hope@2.0.0-rc.18: - resolution: {integrity: sha512-9ezkJB3oajnCi6ynQPNNoo/0NLhYFPzVfVpOiv2f9JgmeRIIEXJVL6ymzIOedsTtG2xMwBO0vhmrNFuFVsbaWA==} - engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} - peerDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.3 - '@vuepress/plugin-feed': 2.0.0-rc.6 - '@vuepress/plugin-search': 2.0.0-rc.3 + '@vuepress/plugin-docsearch': 2.0.0-rc.36 + '@vuepress/plugin-feed': 2.0.0-rc.36 + '@vuepress/plugin-prismjs': 2.0.0-rc.36 + '@vuepress/plugin-pwa': 2.0.0-rc.36 + '@vuepress/plugin-redirect': 2.0.0-rc.36 + '@vuepress/plugin-search': 2.0.0-rc.36 nodejs-jieba: ^0.1.2 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.2 - vuepress-plugin-pwa2: 2.0.0-rc.18 - vuepress-plugin-redirect: 2.0.0-rc.18 - vuepress-plugin-search-pro: 2.0.0-rc.18 + vuepress: 2.0.0-rc.13 + vuepress-plugin-search-pro: 2.0.0-rc.49 peerDependenciesMeta: '@vuepress/plugin-docsearch': optional: true '@vuepress/plugin-feed': optional: true + '@vuepress/plugin-prismjs': + optional: true + '@vuepress/plugin-pwa': + optional: true + '@vuepress/plugin-redirect': + optional: true '@vuepress/plugin-search': optional: true nodejs-jieba: optional: true sass-loader: optional: true - vuepress-plugin-pwa2: - optional: true - vuepress-plugin-redirect: - optional: true vuepress-plugin-search-pro: optional: true - vuepress@2.0.0-rc.2: - resolution: {integrity: sha512-OEHfXx4Q3IzkXqcY9bKZqHXYAnSR82AGrmWYX5R1I3+ntzjaAbUhUKbG/jjMzLg40XqAHS++pM/zzMBNrcY3rg==} + vuepress@2.0.0-rc.13: + resolution: {integrity: sha512-lhz9EnISXY/s3yDFYe2RLVJcBXN/Ehe+NAFWdadhyX0P9S5AMimvJhsqWoVInnL+HBREsshLibyc8pXGbQrhfw==} engines: {node: '>=18.16.0'} hasBin: true peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.2 - '@vuepress/bundler-webpack': 2.0.0-rc.2 + '@vuepress/bundler-vite': 2.0.0-rc.13 + '@vuepress/bundler-webpack': 2.0.0-rc.13 vue: ^3.4.0 peerDependenciesMeta: '@vuepress/bundler-vite': @@ -3622,6 +3750,10 @@ packages: '@vuepress/bundler-webpack': optional: true + watermark-js-plus@1.5.1: + resolution: {integrity: sha512-fj82XgrJkqP0a7kcG6U591YT6E0GFq9zdUrqbijbkE9l8aHhOpOogQwk5jaoTaWVqQsBSNFRIc6QWRkHBfHNsA==} + engines: {node: '>=16.0.0'} + webgl-constants@1.1.1: resolution: {integrity: sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==} @@ -3672,14 +3804,16 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.4.1: resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} engines: {node: '>= 14'} hasBin: true + yaml@2.4.3: + resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -3692,6 +3826,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.0.2: + resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} + engines: {node: '>=18'} + zustand@3.7.2: resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} @@ -3846,7 +3984,7 @@ snapshots: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.17.8) '@babel/helpers': 7.24.4 - '@babel/parser': 7.18.9 + '@babel/parser': 7.24.4 '@babel/template': 7.24.0 '@babel/traverse': 7.17.3 '@babel/types': 7.17.0 @@ -3971,6 +4109,10 @@ snapshots: dependencies: '@babel/types': 7.24.0 + '@babel/parser@7.24.7': + dependencies: + '@babel/types': 7.24.0 + '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4)': dependencies: '@babel/core': 7.24.4 @@ -3999,7 +4141,7 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.18.9 + '@babel/parser': 7.24.4 '@babel/types': 7.17.0 debug: 4.3.4 globals: 11.12.0 @@ -4059,139 +4201,139 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@esbuild/aix-ppc64@0.19.12': + '@esbuild/aix-ppc64@0.20.2': optional: true '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.19.12': + '@esbuild/android-arm64@0.20.2': optional: true '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.19.12': + '@esbuild/android-arm@0.20.2': optional: true '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.19.12': + '@esbuild/android-x64@0.20.2': optional: true '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.19.12': + '@esbuild/darwin-arm64@0.20.2': optional: true '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.19.12': + '@esbuild/darwin-x64@0.20.2': optional: true '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.19.12': + '@esbuild/freebsd-arm64@0.20.2': optional: true '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.19.12': + '@esbuild/freebsd-x64@0.20.2': optional: true '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.19.12': + '@esbuild/linux-arm64@0.20.2': optional: true '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.19.12': + '@esbuild/linux-arm@0.20.2': optional: true '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.19.12': + '@esbuild/linux-ia32@0.20.2': optional: true '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.19.12': + '@esbuild/linux-loong64@0.20.2': optional: true '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.19.12': + '@esbuild/linux-mips64el@0.20.2': optional: true '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.19.12': + '@esbuild/linux-ppc64@0.20.2': optional: true '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.19.12': + '@esbuild/linux-riscv64@0.20.2': optional: true '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.19.12': + '@esbuild/linux-s390x@0.20.2': optional: true '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.19.12': + '@esbuild/linux-x64@0.20.2': optional: true '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.19.12': + '@esbuild/netbsd-x64@0.20.2': optional: true '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.19.12': + '@esbuild/openbsd-x64@0.20.2': optional: true '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.19.12': + '@esbuild/sunos-x64@0.20.2': optional: true '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.19.12': + '@esbuild/win32-arm64@0.20.2': optional: true '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.19.12': + '@esbuild/win32-ia32@0.20.2': optional: true '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.19.12': + '@esbuild/win32-x64@0.20.2': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -4271,181 +4413,194 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@mdit-vue/plugin-component@2.1.2': + '@mdit-vue/plugin-component@2.1.3': dependencies: - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit-vue/plugin-frontmatter@2.1.2': + '@mdit-vue/plugin-frontmatter@2.1.3': dependencies: '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 gray-matter: 4.0.3 markdown-it: 14.1.0 - '@mdit-vue/plugin-headers@2.1.2': + '@mdit-vue/plugin-headers@2.1.3': dependencies: - '@mdit-vue/shared': 2.1.2 + '@mdit-vue/shared': 2.1.3 '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit-vue/plugin-sfc@2.1.2': + '@mdit-vue/plugin-sfc@2.1.3': dependencies: '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit-vue/plugin-title@2.1.2': + '@mdit-vue/plugin-title@2.1.3': dependencies: - '@mdit-vue/shared': 2.1.2 + '@mdit-vue/shared': 2.1.3 '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit-vue/plugin-toc@2.1.2': + '@mdit-vue/plugin-toc@2.1.3': dependencies: - '@mdit-vue/shared': 2.1.2 + '@mdit-vue/shared': 2.1.3 '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit-vue/shared@2.1.2': + '@mdit-vue/shared@2.1.3': dependencies: '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 '@mdit-vue/types@2.1.0': {} - '@mdit/plugin-alert@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-alert@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-align@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-align@0.12.0(markdown-it@14.1.0)': dependencies: - '@mdit/plugin-container': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.7 + '@mdit/plugin-container': 0.12.0(markdown-it@14.1.0) + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-attrs@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-attrs@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-container@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-container@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-demo@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-demo@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-figure@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-figure@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-footnote@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-footnote@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 - '@mdit/plugin-img-lazyload@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-img-lazyload@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-img-mark@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-img-mark@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-img-size@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-img-size@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-include@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-include@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 upath: 2.0.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-katex@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-katex-slim@0.12.0(markdown-it@14.1.0)': dependencies: - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) + '@mdit/plugin-tex': 0.12.0(markdown-it@14.1.0) '@types/katex': 0.16.7 - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-mark@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-mark@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-mathjax@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-mathjax-slim@0.12.0(markdown-it@14.1.0)': dependencies: - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.7 + '@mdit/plugin-tex': 0.12.0(markdown-it@14.1.0) + '@types/markdown-it': 14.1.1 upath: 2.0.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-stylize@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-plantuml@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@mdit/plugin-uml': 0.12.0(markdown-it@14.1.0) + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-sub@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-spoiler@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-sup@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-stylize@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-tab@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-sub@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-tasklist@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-sup@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-tex@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-tab@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 - '@mdit/plugin-uml@0.8.0(markdown-it@14.1.0)': + '@mdit/plugin-tasklist@0.12.0(markdown-it@14.1.0)': dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 + optionalDependencies: + markdown-it: 14.1.0 + + '@mdit/plugin-tex@0.12.0(markdown-it@14.1.0)': + dependencies: + '@types/markdown-it': 14.1.1 + optionalDependencies: + markdown-it: 14.1.0 + + '@mdit/plugin-uml@0.12.0(markdown-it@14.1.0)': + dependencies: + '@types/markdown-it': 14.1.1 optionalDependencies: markdown-it: 14.1.0 @@ -4577,54 +4732,56 @@ snapshots: transitivePeerDependencies: - '@types/three' - '@rollup/rollup-android-arm-eabi@4.16.2': + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - '@rollup/rollup-android-arm64@4.16.2': + '@rollup/rollup-android-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-arm64@4.16.2': + '@rollup/rollup-darwin-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-x64@4.16.2': + '@rollup/rollup-darwin-x64@4.18.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.16.2': + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.16.2': + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.16.2': + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.16.2': + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.16.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.16.2': + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.16.2': + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.16.2': + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-musl@4.16.2': + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.16.2': + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.16.2': + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.16.2': + '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true + '@sec-ant/readable-stream@0.4.1': {} + '@sentry-internal/feedback@7.111.0': dependencies: '@sentry/core': 7.111.0 @@ -4685,9 +4842,23 @@ snapshots: dependencies: '@sentry/types': 7.111.0 + '@shikijs/core@1.6.2': {} + + '@shikijs/core@1.9.1': {} + + '@shikijs/transformers@1.6.2': + dependencies: + shiki: 1.6.2 + + '@shikijs/transformers@1.9.1': + dependencies: + shiki: 1.9.1 + '@sindresorhus/merge-streams@2.3.0': {} - '@stackblitz/sdk@1.9.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + + '@stackblitz/sdk@1.10.0': {} '@trivago/prettier-plugin-sort-imports@3.4.0(prettier@2.8.8)': dependencies: @@ -4728,23 +4899,18 @@ snapshots: '@types/katex@0.16.7': {} - '@types/linkify-it@3.0.5': {} + '@types/linkify-it@5.0.0': {} - '@types/markdown-it-emoji@2.0.5': + '@types/markdown-it-emoji@3.0.1': dependencies: - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 - '@types/markdown-it@13.0.7': + '@types/markdown-it@14.1.1': dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 - '@types/markdown-it@14.0.1': - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - - '@types/mdurl@1.0.5': {} + '@types/mdurl@2.0.0': {} '@types/ms@0.7.34': {} @@ -4804,21 +4970,21 @@ snapshots: '@use-gesture/core': 10.3.1 react: 18.2.0 - '@vitejs/plugin-react@3.1.0(vite@4.5.3(@types/node@20.12.7)(sass@1.75.0))': + '@vitejs/plugin-react@3.1.0(vite@4.5.3(@types/node@20.12.7)(sass@1.77.6))': dependencies: '@babel/core': 7.24.4 '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.5.3(@types/node@20.12.7)(sass@1.75.0) + vite: 4.5.3(@types/node@20.12.7)(sass@1.77.6) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.0.13(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.24(typescript@4.9.5))': + '@vitejs/plugin-vue@5.0.5(vite@5.2.13(@types/node@20.12.7)(sass@1.77.6))(vue@3.4.27(typescript@4.9.5))': dependencies: - vite: 5.0.13(@types/node@20.12.7)(sass@1.75.0) - vue: 3.4.24(typescript@4.9.5) + vite: 5.2.13(@types/node@20.12.7)(sass@1.77.6) + vue: 3.4.27(typescript@4.9.5) '@vue/compiler-core@3.4.24': dependencies: @@ -4828,11 +4994,37 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-core@3.4.27': + dependencies: + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.27 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-core@3.4.30': + dependencies: + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.30 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + '@vue/compiler-dom@3.4.24': dependencies: '@vue/compiler-core': 3.4.24 '@vue/shared': 3.4.24 + '@vue/compiler-dom@3.4.27': + dependencies: + '@vue/compiler-core': 3.4.27 + '@vue/shared': 3.4.27 + + '@vue/compiler-dom@3.4.30': + dependencies: + '@vue/compiler-core': 3.4.30 + '@vue/shared': 3.4.30 + '@vue/compiler-sfc@3.4.24': dependencies: '@babel/parser': 7.24.4 @@ -4845,54 +5037,115 @@ snapshots: postcss: 8.4.38 source-map-js: 1.2.0 + '@vue/compiler-sfc@3.4.27': + dependencies: + '@babel/parser': 7.24.4 + '@vue/compiler-core': 3.4.27 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + + '@vue/compiler-sfc@3.4.30': + dependencies: + '@babel/parser': 7.24.7 + '@vue/compiler-core': 3.4.30 + '@vue/compiler-dom': 3.4.30 + '@vue/compiler-ssr': 3.4.30 + '@vue/shared': 3.4.30 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + '@vue/compiler-ssr@3.4.24': dependencies: '@vue/compiler-dom': 3.4.24 '@vue/shared': 3.4.24 + '@vue/compiler-ssr@3.4.27': + dependencies: + '@vue/compiler-dom': 3.4.27 + '@vue/shared': 3.4.27 + + '@vue/compiler-ssr@3.4.30': + dependencies: + '@vue/compiler-dom': 3.4.30 + '@vue/shared': 3.4.30 + '@vue/devtools-api@6.6.1': {} - '@vue/reactivity@3.4.24': - dependencies: - '@vue/shared': 3.4.24 + '@vue/devtools-api@6.6.3': {} - '@vue/runtime-core@3.4.24': + '@vue/reactivity@3.4.27': dependencies: - '@vue/reactivity': 3.4.24 - '@vue/shared': 3.4.24 + '@vue/shared': 3.4.27 - '@vue/runtime-dom@3.4.24': + '@vue/reactivity@3.4.30': dependencies: - '@vue/runtime-core': 3.4.24 - '@vue/shared': 3.4.24 + '@vue/shared': 3.4.30 + + '@vue/runtime-core@3.4.27': + dependencies: + '@vue/reactivity': 3.4.27 + '@vue/shared': 3.4.27 + + '@vue/runtime-core@3.4.30': + dependencies: + '@vue/reactivity': 3.4.30 + '@vue/shared': 3.4.30 + + '@vue/runtime-dom@3.4.27': + dependencies: + '@vue/runtime-core': 3.4.27 + '@vue/shared': 3.4.27 csstype: 3.1.3 - '@vue/server-renderer@3.4.24(vue@3.4.24(typescript@4.9.5))': + '@vue/runtime-dom@3.4.30': dependencies: - '@vue/compiler-ssr': 3.4.24 - '@vue/shared': 3.4.24 - vue: 3.4.24(typescript@4.9.5) + '@vue/reactivity': 3.4.30 + '@vue/runtime-core': 3.4.30 + '@vue/shared': 3.4.30 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.4.27 + '@vue/shared': 3.4.27 + vue: 3.4.27(typescript@4.9.5) + + '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.4.30 + '@vue/shared': 3.4.30 + vue: 3.4.30(typescript@4.9.5) '@vue/shared@3.4.24': {} - '@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5)': + '@vue/shared@3.4.27': {} + + '@vue/shared@3.4.30': {} + + '@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5)': dependencies: - '@vitejs/plugin-vue': 5.0.4(vite@5.0.13(@types/node@20.12.7)(sass@1.75.0))(vue@3.4.24(typescript@4.9.5)) - '@vuepress/client': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/core': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/shared': 2.0.0-rc.2 - '@vuepress/utils': 2.0.0-rc.2 + '@vitejs/plugin-vue': 5.0.5(vite@5.2.13(@types/node@20.12.7)(sass@1.77.6))(vue@3.4.27(typescript@4.9.5)) + '@vuepress/client': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/core': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 autoprefixer: 10.4.19(postcss@8.4.38) connect-history-api-fallback: 2.0.0 postcss: 8.4.38 - postcss-load-config: 5.0.3(jiti@1.21.0)(postcss@8.4.38) - rollup: 4.16.2 - vite: 5.0.13(@types/node@20.12.7)(sass@1.75.0) - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) + postcss-load-config: 5.1.0(jiti@1.21.0)(postcss@8.4.38) + rollup: 4.18.0 + vite: 5.2.13(@types/node@20.12.7)(sass@1.77.6) + vue: 3.4.27(typescript@4.9.5) + vue-router: 4.3.2(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - '@types/node' - - '@vue/composition-api' - jiti - less - lightningcss @@ -4901,106 +5154,168 @@ snapshots: - sugarss - supports-color - terser + - tsx - typescript - '@vuepress/cli@2.0.0-rc.2(typescript@4.9.5)': + '@vuepress/cli@2.0.0-rc.13(typescript@4.9.5)': dependencies: - '@vuepress/core': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/shared': 2.0.0-rc.2 - '@vuepress/utils': 2.0.0-rc.2 + '@vuepress/core': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 cac: 6.7.14 chokidar: 3.6.0 - envinfo: 7.12.0 - esbuild: 0.19.12 + envinfo: 7.13.0 + esbuild: 0.20.2 transitivePeerDependencies: - - '@vue/composition-api' - supports-color - typescript - '@vuepress/client@2.0.0-rc.2(typescript@4.9.5)': + '@vuepress/client@2.0.0-rc.13(typescript@4.9.5)': dependencies: '@vue/devtools-api': 6.6.1 - '@vuepress/shared': 2.0.0-rc.2 - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) + '@vuepress/shared': 2.0.0-rc.13 + vue: 3.4.27(typescript@4.9.5) + vue-router: 4.3.2(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - - '@vue/composition-api' - typescript - '@vuepress/core@2.0.0-rc.2(typescript@4.9.5)': + '@vuepress/core@2.0.0-rc.13(typescript@4.9.5)': dependencies: - '@vuepress/client': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/markdown': 2.0.0-rc.2 - '@vuepress/shared': 2.0.0-rc.2 - '@vuepress/utils': 2.0.0-rc.2 - vue: 3.4.24(typescript@4.9.5) + '@vuepress/client': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/markdown': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 + vue: 3.4.27(typescript@4.9.5) transitivePeerDependencies: - - '@vue/composition-api' - supports-color - typescript - '@vuepress/helper@2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/helper@2.0.0-rc.34(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - '@vue/shared': 3.4.24 + '@vue/shared': 3.4.27 cheerio: 1.0.0-rc.12 fflate: 0.8.2 gray-matter: 4.0.3 - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + vue: 3.4.27(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/markdown@2.0.0-rc.2': + '@vuepress/helper@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - '@mdit-vue/plugin-component': 2.1.2 - '@mdit-vue/plugin-frontmatter': 2.1.2 - '@mdit-vue/plugin-headers': 2.1.2 - '@mdit-vue/plugin-sfc': 2.1.2 - '@mdit-vue/plugin-title': 2.1.2 - '@mdit-vue/plugin-toc': 2.1.2 - '@mdit-vue/shared': 2.1.2 + '@vue/shared': 3.4.30 + cheerio: 1.0.0-rc.12 + fflate: 0.8.2 + gray-matter: 4.0.3 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/highlighter-helper@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + + '@vuepress/highlighter-helper@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + + '@vuepress/markdown@2.0.0-rc.13': + dependencies: + '@mdit-vue/plugin-component': 2.1.3 + '@mdit-vue/plugin-frontmatter': 2.1.3 + '@mdit-vue/plugin-headers': 2.1.3 + '@mdit-vue/plugin-sfc': 2.1.3 + '@mdit-vue/plugin-title': 2.1.3 + '@mdit-vue/plugin-toc': 2.1.3 + '@mdit-vue/shared': 2.1.3 '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 13.0.7 - '@types/markdown-it-emoji': 2.0.5 - '@vuepress/shared': 2.0.0-rc.2 - '@vuepress/utils': 2.0.0-rc.2 + '@types/markdown-it': 14.1.1 + '@types/markdown-it-emoji': 3.0.1 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 markdown-it: 14.1.0 - markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.1.0) + markdown-it-anchor: 9.0.1(@types/markdown-it@14.1.1)(markdown-it@14.1.0) markdown-it-emoji: 3.0.0 mdurl: 2.0.0 transitivePeerDependencies: - supports-color - '@vuepress/plugin-active-header-links@2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-active-header-links@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - ts-debounce: 4.0.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-copy-code@2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-docsearch@2.0.0-rc.3(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-back-to-top@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript + + '@vuepress/plugin-blog@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + chokidar: 3.6.0 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-catalog@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-comment@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + giscus: 1.5.0 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-copy-code@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript + + '@vuepress/plugin-copyright@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript + + '@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0) '@docsearch/react': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) ts-debounce: 4.0.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -5010,93 +5325,163 @@ snapshots: - search-insights - typescript - '@vuepress/plugin-external-link-icon@2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-git@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + execa: 9.3.0 + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + + '@vuepress/plugin-google-analytics@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + + '@vuepress/plugin-links-check@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/plugin-git@2.0.0-rc.3(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-notice@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - execa: 8.0.1 - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript - '@vuepress/plugin-google-analytics@2.0.0-rc.21(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-nprogress@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - - '@vuepress/plugin-nprogress@2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': - dependencies: - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/plugin-prismjs@2.0.0-rc.3(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-photo-swipe@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - prismjs: 1.29.0 - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + photoswipe: 5.4.4 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - typescript - '@vuepress/plugin-seo@2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-reading-time@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/plugin-sitemap@2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-rtl@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - sitemap: 7.1.1 - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/plugin-theme-data@2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)))': + '@vuepress/plugin-sass-palette@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': dependencies: - '@vue/devtools-api': 6.6.1 - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + chokidar: 3.6.0 + sass: 1.77.6 + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - typescript - '@vuepress/shared@2.0.0-rc.2': + '@vuepress/plugin-seo@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-shiki@2.0.0-rc.34(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@shikijs/transformers': 1.6.2 + '@vuepress/helper': 2.0.0-rc.34(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/highlighter-helper': 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + nanoid: 5.0.7 + shiki: 1.6.2 + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-shiki@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@shikijs/transformers': 1.9.1 + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/highlighter-helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + nanoid: 5.0.7 + shiki: 1.9.1 + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-sitemap@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + sitemap: 8.0.0 + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-theme-data@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-watermark@2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)))': + dependencies: + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + watermark-js-plus: 1.5.1 + transitivePeerDependencies: + - typescript + + '@vuepress/shared@2.0.0-rc.13': dependencies: '@mdit-vue/types': 2.1.0 - '@vuepress/utils@2.0.0-rc.2': + '@vuepress/utils@2.0.0-rc.13': dependencies: '@types/debug': 4.1.12 '@types/fs-extra': 11.0.4 '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.2 + '@vuepress/shared': 2.0.0-rc.13 debug: 4.3.4 fs-extra: 11.2.0 globby: 14.0.1 hash-sum: 2.0.0 ora: 8.0.1 - picocolors: 1.0.0 + picocolors: 1.0.1 upath: 2.0.1 transitivePeerDependencies: - supports-color - '@vueuse/core@10.9.0(vue@3.4.24(typescript@4.9.5))': + '@vueuse/core@10.11.0(vue@3.4.30(typescript@4.9.5))': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.9.0 - '@vueuse/shared': 10.9.0(vue@3.4.24(typescript@4.9.5)) - vue-demi: 0.14.7(vue@3.4.24(typescript@4.9.5)) + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@4.9.5)) + vue-demi: 0.14.8(vue@3.4.30(typescript@4.9.5)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/metadata@10.9.0': {} + '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.9.0(vue@3.4.24(typescript@4.9.5))': + '@vueuse/shared@10.11.0(vue@3.4.30(typescript@4.9.5))': dependencies: - vue-demi: 0.14.7(vue@3.4.24(typescript@4.9.5)) + vue-demi: 0.14.8(vue@3.4.30(typescript@4.9.5)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -5389,7 +5774,7 @@ snapshots: dependencies: toggle-selection: 1.0.6 - create-codepen@1.0.1: {} + create-codepen@2.0.0: {} cross-env@7.0.3: dependencies: @@ -5442,7 +5827,7 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 - dayjs@1.11.10: {} + dayjs@1.11.11: {} debounce@1.2.1: {} @@ -5520,7 +5905,7 @@ snapshots: entities@4.5.0: {} - envinfo@7.12.0: {} + envinfo@7.13.0: {} error-stack-parser@2.1.4: dependencies: @@ -5643,31 +6028,31 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.19.12: + esbuild@0.20.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 escalade@3.1.2: {} @@ -5773,17 +6158,20 @@ snapshots: esutils@2.0.3: {} - execa@8.0.1: + execa@9.3.0: dependencies: + '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 7.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 npm-run-path: 5.3.0 - onetime: 6.0.0 + pretty-ms: 9.0.0 signal-exit: 4.1.0 - strip-final-newline: 3.0.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.0.2 extend-shallow@2.0.1: dependencies: @@ -5817,6 +6205,10 @@ snapshots: fflate@0.8.2: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.0.0 + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -5899,7 +6291,10 @@ snapshots: get-stdin@9.0.0: {} - get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 get-symbol-description@1.0.2: dependencies: @@ -6009,7 +6404,7 @@ snapshots: domutils: 3.1.0 entities: 4.5.0 - human-signals@5.0.0: {} + human-signals@7.0.0: {} hyphenate-style-name@1.0.4: {} @@ -6116,6 +6511,8 @@ snapshots: is-path-inside@3.0.3: {} + is-plain-obj@4.1.0: {} + is-promise@2.2.2: {} is-regex@1.1.4: @@ -6129,7 +6526,7 @@ snapshots: dependencies: call-bind: 1.0.7 - is-stream@3.0.0: {} + is-stream@4.0.1: {} is-string@1.0.7: dependencies: @@ -6291,10 +6688,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - maath@0.10.7(@types/three@0.163.0)(three@0.163.0): dependencies: '@types/three': 0.163.0 @@ -6313,9 +6706,9 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - markdown-it-anchor@8.6.7(@types/markdown-it@13.0.7)(markdown-it@14.1.0): + markdown-it-anchor@9.0.1(@types/markdown-it@14.1.1)(markdown-it@14.1.0): dependencies: - '@types/markdown-it': 13.0.7 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 markdown-it-emoji@3.0.0: {} @@ -6361,8 +6754,6 @@ snapshots: mdurl@2.0.0: {} - merge-stream@2.0.0: {} - merge2@1.4.1: {} meshline@3.3.0(three@0.163.0): @@ -6378,8 +6769,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6422,6 +6811,8 @@ snapshots: nanoid@3.3.7: {} + nanoid@5.0.7: {} + natural-compare@1.4.0: {} node-releases@2.0.14: {} @@ -6486,10 +6877,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -6533,6 +6920,8 @@ snapshots: dependencies: callsites: 3.1.0 + parse-ms@4.0.0: {} + parse5-htmlparser2-tree-adapter@7.0.0: dependencies: domhandler: 5.0.3 @@ -6559,10 +6948,12 @@ snapshots: path-type@5.0.0: {} - photoswipe@5.4.3: {} + photoswipe@5.4.4: {} picocolors@1.0.0: {} + picocolors@1.0.1: {} + picomatch@2.3.1: {} pify@2.3.0: {} @@ -6592,10 +6983,10 @@ snapshots: optionalDependencies: postcss: 8.4.38 - postcss-load-config@5.0.3(jiti@1.21.0)(postcss@8.4.38): + postcss-load-config@5.1.0(jiti@1.21.0)(postcss@8.4.38): dependencies: lilconfig: 3.1.1 - yaml: 2.4.1 + yaml: 2.4.3 optionalDependencies: jiti: 1.21.0 postcss: 8.4.38 @@ -6630,7 +7021,9 @@ snapshots: prettier@2.8.8: {} - prismjs@1.29.0: {} + pretty-ms@9.0.0: + dependencies: + parse-ms: 4.0.0 promise-worker-transferable@1.0.4: dependencies: @@ -6779,26 +7172,26 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.16.2: + rollup@4.18.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.16.2 - '@rollup/rollup-android-arm64': 4.16.2 - '@rollup/rollup-darwin-arm64': 4.16.2 - '@rollup/rollup-darwin-x64': 4.16.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.16.2 - '@rollup/rollup-linux-arm-musleabihf': 4.16.2 - '@rollup/rollup-linux-arm64-gnu': 4.16.2 - '@rollup/rollup-linux-arm64-musl': 4.16.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.16.2 - '@rollup/rollup-linux-riscv64-gnu': 4.16.2 - '@rollup/rollup-linux-s390x-gnu': 4.16.2 - '@rollup/rollup-linux-x64-gnu': 4.16.2 - '@rollup/rollup-linux-x64-musl': 4.16.2 - '@rollup/rollup-win32-arm64-msvc': 4.16.2 - '@rollup/rollup-win32-ia32-msvc': 4.16.2 - '@rollup/rollup-win32-x64-msvc': 4.16.2 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 rtl-css-js@1.16.1: @@ -6829,7 +7222,7 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - sass@1.75.0: + sass@1.77.6: dependencies: chokidar: 3.6.0 immutable: 4.3.5 @@ -6856,9 +7249,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.2: {} set-blocking@2.0.0: {} @@ -6886,6 +7277,14 @@ snapshots: shebang-regex@3.0.0: {} + shiki@1.6.2: + dependencies: + '@shikijs/core': 1.6.2 + + shiki@1.9.1: + dependencies: + '@shikijs/core': 1.9.1 + side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -6897,7 +7296,7 @@ snapshots: signal-exit@4.1.0: {} - sitemap@7.1.1: + sitemap@8.0.0: dependencies: '@types/node': 17.0.45 '@types/sax': 1.2.7 @@ -7003,7 +7402,7 @@ snapshots: strip-bom-string@1.0.0: {} - strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} strip-json-comments@3.1.1: {} @@ -7236,7 +7635,7 @@ snapshots: uuid@9.0.1: {} - vite@4.5.3(@types/node@20.12.7)(sass@1.75.0): + vite@4.5.3(@types/node@20.12.7)(sass@1.77.6): dependencies: esbuild: 0.18.20 postcss: 8.4.38 @@ -7244,247 +7643,154 @@ snapshots: optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 - sass: 1.75.0 + sass: 1.77.6 - vite@5.0.13(@types/node@20.12.7)(sass@1.75.0): + vite@5.2.13(@types/node@20.12.7)(sass@1.77.6): dependencies: - esbuild: 0.19.12 + esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.16.2 + rollup: 4.18.0 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 - sass: 1.75.0 + sass: 1.77.6 - vue-demi@0.14.7(vue@3.4.24(typescript@4.9.5)): + vue-demi@0.14.8(vue@3.4.30(typescript@4.9.5)): dependencies: - vue: 3.4.24(typescript@4.9.5) + vue: 3.4.30(typescript@4.9.5) - vue-router@4.3.2(vue@3.4.24(typescript@4.9.5)): + vue-router@4.3.2(vue@3.4.27(typescript@4.9.5)): dependencies: '@vue/devtools-api': 6.6.1 - vue: 3.4.24(typescript@4.9.5) + vue: 3.4.27(typescript@4.9.5) - vue@3.4.24(typescript@4.9.5): + vue@3.4.27(typescript@4.9.5): dependencies: - '@vue/compiler-dom': 3.4.24 - '@vue/compiler-sfc': 3.4.24 - '@vue/runtime-dom': 3.4.24 - '@vue/server-renderer': 3.4.24(vue@3.4.24(typescript@4.9.5)) - '@vue/shared': 3.4.24 + '@vue/compiler-dom': 3.4.27 + '@vue/compiler-sfc': 3.4.27 + '@vue/runtime-dom': 3.4.27 + '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@4.9.5)) + '@vue/shared': 3.4.27 optionalDependencies: typescript: 4.9.5 - vuepress-plugin-auto-catalog@2.0.0-rc.18(hls.js@1.3.5)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): + vue@3.4.30(typescript@4.9.5): dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-components: 2.0.0-rc.18(hls.js@1.3.5)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - artplayer - - dashjs-pure - - hls.js - - mpegts.js - - plyr - - typescript - - vidstack - - vuepress-plugin-blog2@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - chokidar: 3.6.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-comment2@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - giscus: 1.5.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-components@2.0.0-rc.18(hls.js@1.3.5)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@stackblitz/sdk': 1.9.0 - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) - balloon-css: 1.2.0 - create-codepen: 1.0.1 - qrcode: 1.5.3 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-reading-time2: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + '@vue/compiler-dom': 3.4.30 + '@vue/compiler-sfc': 3.4.30 + '@vue/runtime-dom': 3.4.30 + '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@4.9.5)) + '@vue/shared': 3.4.30 optionalDependencies: - hls.js: 1.3.5 + typescript: 4.9.5 + + vuepress-plugin-components@2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))): + dependencies: + '@stackblitz/sdk': 1.10.0 + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) + balloon-css: 1.2.0 + create-codepen: 2.0.0 + qrcode: 1.5.3 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + vuepress-shared: 2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-plugin-copyright2@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): + vuepress-plugin-md-enhance@2.0.0-rc.49(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))): dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-md-enhance@2.0.0-rc.18(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@mdit/plugin-alert': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-align': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-attrs': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-container': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-demo': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-figure': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-footnote': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-lazyload': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-mark': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-img-size': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-include': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-katex': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-mark': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-mathjax': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-stylize': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-sub': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-sup': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tab': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tasklist': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-tex': 0.8.0(markdown-it@14.1.0) - '@mdit/plugin-uml': 0.8.0(markdown-it@14.1.0) - '@types/markdown-it': 13.0.7 - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) + '@mdit/plugin-alert': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-align': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-attrs': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-container': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-demo': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-figure': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-footnote': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-img-lazyload': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-img-mark': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-img-size': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-include': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-katex-slim': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-mark': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-mathjax-slim': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-plantuml': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-spoiler': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-stylize': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-sub': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-sup': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-tab': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-tasklist': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-tex': 0.12.0(markdown-it@14.1.0) + '@mdit/plugin-uml': 0.12.0(markdown-it@14.1.0) + '@types/markdown-it': 14.1.1 + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) balloon-css: 1.2.0 js-yaml: 4.1.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + vuepress-shared: 2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) transitivePeerDependencies: - '@vue/composition-api' - markdown-it - typescript - vuepress-plugin-photo-swipe@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): + vuepress-shared@2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))): dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) - photoswipe: 5.4.3 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-reading-time2@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-rtl@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vue: 3.4.24(typescript@4.9.5) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-plugin-sass-palette@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - chokidar: 3.6.0 - sass: 1.75.0 - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - vuepress-shared@2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): - dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) cheerio: 1.0.0-rc.12 - dayjs: 1.11.10 - execa: 8.0.1 + dayjs: 1.11.11 + execa: 9.3.0 fflate: 0.8.2 gray-matter: 4.0.3 - semver: 7.6.0 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) + semver: 7.6.2 + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-theme-hope@2.0.0-rc.18(@vuepress/plugin-docsearch@2.0.0-rc.3(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))))(hls.js@1.3.5)(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))): + vuepress-theme-hope@2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))))(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))): dependencies: - '@vuepress/helper': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-active-header-links': 2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-copy-code': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-external-link-icon': 2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-git': 2.0.0-rc.3(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-nprogress': 2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-prismjs': 2.0.0-rc.3(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-seo': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-sitemap': 2.0.0-rc.6(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vuepress/plugin-theme-data': 2.0.0-rc.3(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - '@vueuse/core': 10.9.0(vue@3.4.24(typescript@4.9.5)) + '@vuepress/helper': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-active-header-links': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-back-to-top': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-blog': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-catalog': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-comment': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-copy-code': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-copyright': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-git': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-links-check': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-notice': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-nprogress': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-photo-swipe': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-reading-time': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-rtl': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-seo': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-shiki': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-sitemap': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-theme-data': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vuepress/plugin-watermark': 2.0.0-rc.36(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@4.9.5)) balloon-css: 1.2.0 bcrypt-ts: 5.0.2 cheerio: 1.0.0-rc.12 chokidar: 3.6.0 gray-matter: 4.0.3 - vue: 3.4.24(typescript@4.9.5) - vue-router: 4.3.2(vue@3.4.24(typescript@4.9.5)) - vuepress: 2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)) - vuepress-plugin-auto-catalog: 2.0.0-rc.18(hls.js@1.3.5)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-blog2: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-comment2: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-components: 2.0.0-rc.18(hls.js@1.3.5)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-copyright2: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-md-enhance: 2.0.0-rc.18(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-photo-swipe: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-reading-time2: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-rtl: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-plugin-sass-palette: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) - vuepress-shared: 2.0.0-rc.18(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + vue: 3.4.30(typescript@4.9.5) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)) + vuepress-plugin-components: 2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vuepress-plugin-md-enhance: 2.0.0-rc.49(markdown-it@14.1.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) + vuepress-shared: 2.0.0-rc.49(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) optionalDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.3(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5))) + '@vuepress/plugin-docsearch': 2.0.0-rc.36(@algolia/client-search@4.23.3)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5))) transitivePeerDependencies: - '@types/reveal.js' - '@vue/composition-api' @@ -7493,7 +7799,7 @@ snapshots: - artalk - artplayer - chart.js - - dashjs-pure + - dashjs - echarts - flowchart.ts - hls.js @@ -7506,29 +7812,29 @@ snapshots: - mathjax-full - mermaid - mpegts.js - - plyr - reveal.js - sandpack-vue3 - twikoo - typescript - vidstack - vuepress@2.0.0-rc.2(@vuepress/bundler-vite@2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.24(typescript@4.9.5)): + vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5))(typescript@4.9.5)(vue@3.4.27(typescript@4.9.5)): dependencies: - '@vuepress/cli': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/client': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/core': 2.0.0-rc.2(typescript@4.9.5) - '@vuepress/markdown': 2.0.0-rc.2 - '@vuepress/shared': 2.0.0-rc.2 - '@vuepress/utils': 2.0.0-rc.2 - vue: 3.4.24(typescript@4.9.5) + '@vuepress/cli': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/client': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/core': 2.0.0-rc.13(typescript@4.9.5) + '@vuepress/markdown': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 + vue: 3.4.27(typescript@4.9.5) optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.2(@types/node@20.12.7)(jiti@1.21.0)(sass@1.75.0)(typescript@4.9.5) + '@vuepress/bundler-vite': 2.0.0-rc.13(@types/node@20.12.7)(jiti@1.21.0)(sass@1.77.6)(typescript@4.9.5) transitivePeerDependencies: - - '@vue/composition-api' - supports-color - typescript + watermark-js-plus@1.5.1: {} + webgl-constants@1.1.1: {} webgl-sdf-generator@1.1.1: {} @@ -7601,10 +7907,10 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yaml@2.4.1: {} + yaml@2.4.3: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -7626,6 +7932,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors@2.0.2: {} + zustand@3.7.2(react@18.2.0): optionalDependencies: react: 18.2.0