Files
MaaAssistantArknights/docs/zh-tw/protocol/copilot-schema.md
Lucien Shaw 14194d1118 chore: 完善容器配置及依赖安装 (#14208)
格式化工具部分:
1. pre-commit 引入 python 的格式化工具,包括 black(代码格式化)和 isort(对“包导入顺序”的规范)
2. 允许 prettier 对文档站的 markdown 文件格式化
3. 不允许 prettier 对 markdown 文件中的代码块的代码本身进行格式化
4. 升级了 pre-commit 的各个 hook 的版本
5. 优化了 pre-commit 的日志文本显示

容器总览部分:
1. 由原来的单一轻量环境转为区分空环境、轻量环境和全量环境
2. 空环境是裸 Linux 镜像(Ubuntu),为默认环境
3. 轻量环境适合开发文档站前端
4. 全量环境适合开发 MaaCore
5. 目前,全量环境完整包含了轻量环境,轻量环境完整包含了空环境
6. 在仓库 README.md 中更新了三个环境的描述,并将链接分别设置为对应环境的创建链接
   **注意:没有修改文档站中的对应文件**
7. 在各个语言的开发指南的最后,移除了 Codespace 部分的“安装额外依赖”相关描述,且将链接设置为全量环境的创建链接
   **注意:没有添加“开发文档站”的指南和对应 codespace 的使用方式**

容器的轻量环境和全量环境共有部分:
1. 安装 black 和 isort 包
2. 调整 VS Code 设置,取消先前(对 markdown 文件单独指定 markdownlint 扩展作为格式化工具)的错误设置,现在 markdown 文件仍然使用默认的 prettier 扩展作为格式化工具
3. 引入 markdown-all-in-one 扩展作为语法提示工具
4. 将 node_modules 和 3rdparty 排除在 VS Code 的文本的搜索路径之外

容器的全量环境部分:
1. 为 tools 下的所有 python 脚本安装依赖
2. 使用 tools/maadeps-download.py 下载 maadeps,且将必要二进制文件软链接到 /usr/local/bin/
3. 使用 apt 安装 cmake 和 clangd-20,将后者通过 update-alternatives 设置为系统 clangd 的默认版本
4. 使用 cmake tools 扩展,并按照 Linux 编译方法进行配置
5. 使用 clang-format 作为 c/cpp 的格式化工具,clang-format 程序主体来自 maadeps(已经软链接到 /usr/local/bin/)
6. 使用 clangd 作为 c/cpp 的语法提示工具
7. 将 MaaDeps、install 和 build 排除在 VS Code 的文本搜索路径之外

其它手动调整:
1. 更新文档站的 package.json,指定 pnpm 包管理器的版本
2. 手动保证 markdown 文件中的列表前后有空行(注意到 MarkdownLint 官方规则不一定能精准定位所有“列表前后空行”的问题,详见:https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md032---lists-should-be-surrounded-by-blank-lines )
3. 修改了部分 markdown 文件中的 json 代码块的语法问题
   **注意:相同的问题并未全部发现,仅修改了两处**
4. 在 tools 目录中,一处 python 脚本的包名误用(本地包名和某个 pip 包重名),这里修改了相应代码
5. 在 tools 目录中,一处 python 脚本使用了弃用的包 cchardet 的问题,这里更换了推荐使用的功能相近的包并修改了相应代码

自动化脚本提交的修改:
1. 自动格式化了大量 tools 中的 python 脚本
2. 自动格式化了大量 docs 中的 markdown 文件

Commits:

* chore: pre-commit引入black和isort规范py文件

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

* chore: devcontainer添加isort扩展,排序python导入

* chore: pre-commit任务命名及更名

* style: isort fix

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

* chore: 更新pre-commit的hook版本

* fix: 模块名与第三方库重名,大忌

* chore: 容器构建时额外安装isort

* docs: md -> markdown

* chore: 容器安装python包和maadeps

* fix: 修复过时python包

* chore: 指定pnpm版本

* chore: container支持选择轻量环境

* chore: 去掉rust

* chore: add plain env

* chore: 使用clangd语言服务器

* chore: 无需单独设置markdown的格式化工具

* chore: 更新安装的clangd版本

* docs: 简易文档适配

* docs: 在仓库README中重新编排codespaces相关指引

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

* style: 调整缩进

* chore: 格式化工具不用特意排除被gitignore忽略的文件

* chore: sh文件在gitattributes中单列一类

* chore: 格式化docs下的markdown文件

* chore: 暂时不修改md文件中的代码块

* style: 人为明确markdown中的部分列表相关格式

* docs: 补上部分markdown的json代码块中缺失的逗号

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

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

* fix: 补上tools的服务器排序相关代码中缺失的逗号

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

* chore: 使用maadeps的clangd

* build: 更新maadeps工具链版本

* style: prettier fix

* revert: 还原maadeps版本

* revert: 取消使用maadeps的clangd依赖,改用系统apt安装

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 19:39:48 +08:00

9.7 KiB
Raw Blame History

order, icon
order icon
3 ph:sword-bold

戰鬥流程協議

resource/copilot/*.json 的使用方法及各欄位說明

::: tip 請注意 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

            "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"
    },
    "difficulty": 0 // 作業對應難度可選預設值為0。
    // 0: 缺省,未設定
    // 1: 支援普通難度
    // 2: 支持突襲難度
    // 3: 支持普通、突襲難度
}

舉例

OF-1