Back to Maaassistantarknights

SideStory 活动导航 Skill

.agents/skills/side-story-navigation/SKILL.md

6.16.211.0 KB
Original Source

SideStory 活动导航 Skill

新增或更新一个 SideStory 活动的关卡导航,涉及多个文件的联动修改。

必需信息清单

开始前必须向用户收集以下信息;用户提供了部分后,列出仍缺少的项目。

#信息项说明示例
1活动前缀代号 XX两字母关卡前缀TO
2活动全名填入 StageActivityV2 的 Tip/StageName直到大地变成一颗酸橙
3OpenOcr 识别文字活动入口横幅文字,会随活动进度变化:第一期是活动名,后续 EX/新章节开放后变为对应章节内容,需要提前写好所有阶段直到大地变成一颗酸橙, 踏上归家长途, 眺望待行之路
4关卡编号列表通常后三关 + 可选搓玉关7, 8, 94, 7, 8, 9
5各关卡掉落物名称(非搓玉关)用于查 item_index.json 取 ID糖组、凝胶、晶体元件
6搓玉关掉落描述(如有搓玉关)直接填入 Drop 字段,不查表搓玉效率0.98
7关卡开放时间起止时间8.1 12:00 — 8.22 03:59
8选章方式OCR 文字 / 模板图OCR「驶向大地尽头」或模板图
9选章识别内容OCR 文字或模板图文件名驶向大地尽头
10选章 roi 坐标截图中的位置,用户可能用 [x, y, w, h]x+w y+h 两种格式之一[1040, 420, 150, 50]x1040+150 y420+50
11进活动后等待时间postDelay 毫秒数5000(等 5 秒)

若选章方式为模板图,还需额外提醒用户提供模板图片,并准备修改 MinimumRequired 版本号。

0. 术语

简称含义
XX活动前缀代号,如 TDTOAT,取自关卡名 XX-7 的前半
tasks 导航文件resource/tasks/Stages/XX.json
StageActivityV2build/bin/Debug/cache/gui/StageActivityV2.json(主仓库的缓存副本)
MaaRelease上级目录 ../MaaRelease/MaaAssistantArknights/api/ 下的镜像文件

1. 涉及的文件

#文件路径必需性作用
1resource/tasks/Stages/XX.json✅ 必须关卡导航任务定义(OCR 识别活动入口、选章、找关)
2build/bin/Debug/cache/gui/StageActivityV2.json✅ 本地测试本地构建缓存,客户端运行时从远程 API(gui/StageActivityV2.json)拉取,改此文件用于本地测试
3../MaaRelease/MaaAssistantArknights/api/gui/StageActivityV2.json✅ 必须MaaRelease 远程源文件,StageActivityV2 的真正来源
4../MaaRelease/MaaAssistantArknights/api/resource/tasks.json🔶 可选MaaRelease 精简 tasks 覆盖层(只放活动导航,依赖项由客户端本地资源提供)

2. tasks 导航文件结构(resource/tasks/Stages/XX.json

参考往期活动(如 AT.jsonME.jsonAveMujica.json)。

2.1 关卡范围

  • 通常是活动的后三关(如 7/8/9、6/7/8、8/9/10),但具体关卡编号由用户提供。
  • 可能有额外的低关卡用于搓玉(如第 4 关、第 5 关),搓玉关与后三关一并加入导航。

2.2 任务定义模板

jsonc
{
    // —— 关卡入口(按编号从小到大)——
    "XX-4": {
        "algorithm": "JustReturn",
        "sub": ["XX-4@XX-OpenOpt"],
        "next": ["XX-4@SideStoryStage", "XX-4@SwipeToStage"]
    },
    "XX-7": { ... },
    "XX-8": { ... },
    "XX-9": { ... },

    // —— 关卡识别(按编号从小到大)——
    "XX-4@SideStoryStage": { "text": ["XX-4"] },
    "XX-7@SideStoryStage": { "text": ["XX-7"] },
    "XX-8@SideStoryStage": { "text": ["XX-8"] },
    "XX-9@SideStoryStage": { "text": ["XX-9"] },

    // —— 活动入口 ——
    "XX-OpenOpt": {
        "algorithm": "JustReturn",
        "next": ["XX-OpenOcr", "XX-Open"]
    },
    "XX-Open": {
        "baseTask": "SS-Open",
        "postDelay": 5000,              // 进活动后等待时间,按需调整
        "template": ["StageSideStory.png", "StageActivity.png"],
        "next": ["XXChapterToXX"]
    },
    "XX-OpenOcr": {
        "baseTask": "SS-OpenOcr",
        "text": [...],                   // 见下方 OCR 文本规则
        "postDelay": 5000,
        "next": ["XXChapterToXX"]
    },

    // —— 选章(进入活动后选择关卡列表)——
    "XXChapterToXX": {
        // 方式 A:OCR 识别(章节名可被 OCR 时优先使用)
        "algorithm": "OcrDetect",
        "action": "ClickSelf",
        "text": ["章节名"],
        "roi": [x, y, w, h],
        "postDelay": 2000,
        "next": ["#self", "SideStoryStage", "ChapterSwipeToTheRight"]
    }
}

2.3 XXChapterToXX 选章任务的两种方式

方式适用场景algorithm
A. OCR章节名是可识别的文字OcrDetect
B. 模板图章节名不可 OCR(特殊字体/图标)MatchTemplate

方式 B 示例:

jsonc
"XXChapterToXX": {
    "action": "ClickSelf",
    "template": "XXChapterToXX.png",
    "roi": [x, y, w, h],
    "postDelay": 2000,
    "next": ["#self", "SideStoryStage", "ChapterSwipeToTheRight"]
}

⚠️ 使用模板图时的联动操作:需要新增 XXChapterToXX.png 模板图片到 resource/template/StageNavigation/SideStory/XX/ 目录,并且 必须修改 StageActivityV2.json 中的 MinimumRequired(详见 §3.3)。

2.4 OCR 文本规则

  • 长活动名切成多段 4 字短词,同时保留原文,混排在 text 数组中。
    • 原文放前面,短词兜底放后面。
    • 示例:"text": ["直到大地变成一颗酸橙", "踏上归家长途", "眺望待行之路", "直到大地", "一颗酸橙", "踏上归家", "归家长途", "眺望待行", "待行之路"]
    • 原因:全字匹配任一错字就失败;短词提高容错,但不可太短(≥4 字)避免误匹配。

2.5 排列顺序规则

tasks 导航文件中关卡按编号从小到大排列;搓玉关放最后。

先放所有入口任务,再放所有 @SideStoryStage,最后放 Open/Chapter 相关。排列时:常规关卡按编号从小到大,搓玉关(低编号如 XX-4/XX-5,Drop 为搓玉描述)放在常规关之后。

2.6 roi 坐标

由用户提供截图坐标。格式为 [x, y, width, height]

  • XXChapterToXX 的 roi 通常由用户指定形如 "x1040+150 y420+50",即 [1040, 420, 150, 50]

3. StageActivityV2.json

3.1 位置

  • 本地测试缓存:build/bin/Debug/cache/gui/StageActivityV2.json(客户端运行时从远程 API 拉取到本地缓存,修改此文件用于本地测试)
  • 远程源文件:../MaaRelease/MaaAssistantArknights/api/gui/StageActivityV2.json(StageActivityV2 的真正来源,需 commit 推送)
  • 两者内容必须一致。

3.2 替换规则

将旧活动条目整体替换为新活动。键名为活动前缀(如 "TO"),结构如下:

jsonc
"TO": {
    "MinimumRequired": "v6.11.0",       // 见 §3.3 版本号规则
    "Activity": {
        "Tip": "SideStory「活动全名」",
        "StageName": "活动全名",
        "UtcStartTime": "2026/08/01 12:00:00",
        "UtcExpireTime": "2026/08/22 03:59:59",
        "TimeZone": 8
    },
    "Stages": [
        { "Display": "TO-9", "Value": "TO-9", "Drop": "31033" },
        { "Display": "TO-8", "Value": "TO-8", "Drop": "31013" },
        { "Display": "TO-7", "Value": "TO-7", "Drop": "30023" },
        { "Display": "TO-4", "Value": "TO-4", "Drop": "搓玉用" }
    ]
}

3.3 MinimumRequired 版本号规则

XXChapterToXX 方式版本号处理
A. OCR(已有任务可复用)沿用旧活动的值,通常无需改动
B. 模板图(需新增模板)必须改为当前最新 tag 的下一个版本

模板图方式的具体操作:

  1. 查看当前最新版本号(如 git describe --tags 得到 v6.15.1)。
  2. MinimumRequired 改为下一个 patch 版本(如 v6.15.2)。
  3. 通知用户复查该版本号是否正确,因为新模板图片需要随新版本客户端分发。

3.4 排列顺序规则

StageActivityV2 的 Stages 数组按编号从大到小排列。

高难关卡(高掉落价值)排在前面,搓玉等低关卡排在后面。

3.5 Drop 字段

关卡类型Drop 取值获取方式
后三关(常规掉落)item_index ID(如 "31033"resource/item_index.json 中按材料名查表取 key
搓玉关等特殊关用户提供的文字描述(如 "搓玉效率0.98"直接使用用户提供的描述,不查表

💡 知识:个别关卡可能有独立的 MinimumRequired(如某关卡需要更新版本才能解锁),可单独加到该关卡的条目中:{ "Display": "XX-4", "Value": "XX-4", "Drop": "搓玉用", "MinimumRequired": "v6.16.0" }。但用户通常不会指定,不需要主动询问。

4. MaaRelease 仓库同步(可选)

MaaRelease 仓库的同步是可选操作。用户本地可能没有拉取该仓库,或者仓库不在上级目录。操作前先检查 ../MaaRelease/ 是否存在,不存在则跳过此步骤。

4.1 前置检查

powershell
# 检查上级目录是否有 MaaRelease
Test-Path ..\MaaRelease

若存在则 git pull 更新到最新。

4.2 需要同步的文件

文件操作
api/gui/StageActivityV2.json与主仓库缓存保持一致
api/resource/tasks.json将新活动导航任务追加到文件开头BlackFlowTemporary 之前)

4.3 tasks.json 追加规则

  • MaaRelease 的 tasks.json 是精简覆盖层,只放活动导航任务本身,不放依赖项(SS-OpenSideStoryStageSwipeToStageChapterSwipeToTheRight 等基础任务由客户端本地资源提供)。
  • 新内容放文件开头{ 之后、第一个已有 key 之前),不是末尾。
  • 内容与主仓库 resource/tasks/Stages/XX.json 完全一致。

5. 排列顺序速查

文件顺序
resource/tasks/Stages/XX.json常规关卡编号从小到大搓玉关放最后
MaaRelease api/resource/tasks.json同上
StageActivityV2.jsonStages 数组关卡编号从大到小(搓玉关天然在末尾)

6. 完整操作清单

  1. ✅ 创建/修改 resource/tasks/Stages/XX.json(导航任务,常规关卡从小到大,搓玉关放最后)
  2. ✅ 修改 build/bin/Debug/cache/gui/StageActivityV2.json(本地测试缓存,替换活动,关卡从大到小,Drop 查表或用用户描述)
    • XXChapterToXX 用模板图:修改 MinimumRequired 为下一个版本,通知用户复查
  3. 🔶 检查 ../MaaRelease/ 是否存在;存在则:
    • cd ../MaaRelease; git pull
    • 修改 api/gui/StageActivityV2.json(远程源文件,同步骤 2)
    • 修改 api/resource/tasks.json(导航任务追加到开头,关卡从小到大)