Files
MaaAssistantArknights/docs/zh-cn/protocol/integration.md
uye f4cb72aef9 feat: 支持肉鸽选难度 (#10918)
* feat: 支持肉鸽选难度

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

* refactor: 补充相关机制

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

* feat: 瞎写一个wpf,切系统测试去

* feat: select roguelike difficulty using wpf gui

* fix: 简单修补凹开局密文板功能,等待未来重构

* chore: global adaptation

* refactor: 舍弃 next_difficulty 参数

* refactor: 增加对 RoguelikeMode::Collectible 模式下衍生参数有效性的判定

* rft: 移除run_for_collectible

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

* style: format

* chore: 调整肉鸽等级列表初始化

* perf: 减少不必要判断

* fix: 傀影肉鸽修复潜在的干员招募逻辑错误,并添加难度参数校验

* Revert "fix: 傀影肉鸽修复潜在的干员招募逻辑错误,并添加难度参数校验"

This reverts commit 08b715a8eb.

* perf: 难度参数校验

* Revert "rft: 移除run_for_collectible"

This reverts commit cf170750c5.

# Conflicts:
#	src/MaaCore/Task/Interface/RoguelikeTask.cpp
#	src/MaaCore/Task/Roguelike/RoguelikeConfig.cpp
#	src/MaaCore/Task/Roguelike/Sami/RoguelikeFoldartalStartTaskPlugin.cpp

* fix: 水烧开是 !get_run_for_collectible(),之前我写错了

* doc: 补充 zh-cn 文档

* doc: 补充其他语言的文档(机翻)

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com>
Co-authored-by: Weiyou Wang <Weiyou.Wang@anu.edu.au>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2024-10-29 09:08:22 +08:00

480 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
order: 1
icon: bxs:book
---
# 集成文档
## 接口介绍
### `AsstAppendTask`
#### 接口原型
```cpp
AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* params);
```
#### 接口说明
添加任务
#### 返回值
- `AsstTaskId`
若添加成功,返回该任务 ID, 可用于后续设置任务参数;
若添加失败,返回 0
#### 参数说明
- `AsstHandle handle`
实例句柄
- `const char* type`
任务类型
- `const char* params`
任务参数json string
##### 任务类型一览
- `StartUp`
开始唤醒
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"client_type": string, // 客户端版本,可选,默认为空
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"start_game_enabled": bool, // 是否自动启动客户端,可选,默认不启动
"account_name": string // 切换账号,可选,默认不切换
// 仅支持切换至已登录的账号,使用登录名进行查找,保证输入内容在所有已登录账号唯一即可
// 官服123****4567可输入 123****4567、4567、123、3****4567
// B服张三可输入 张三、张、三
}
```
- `CloseDown`
关闭游戏
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,预设为 true
"client_type": string, // 客户端版本,必选,填空则不执行
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
}
```
- `Fight`
刷理智
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"stage": string, // 关卡名,可选,默认为空,识别当前/上次的关卡。不支持运行中设置
// 支持全部主线关卡,如 "1-7"、"S3-2"等
// 可在关卡结尾输入Normal/Hard表示需要切换标准与磨难难度
// 剿灭作战,必须输入 "Annihilation"
// 当期 SS 活动 后三关,必须输入完整关卡编号
"medicine": int, // 最大使用理智药数量,可选,默认 0
"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 // 是或的关系
},
/* 以上全部是或的关系,即任一达到即停止任务 */
"report_to_penguin": bool, // 是否汇报企鹅数据,可选,默认 false
"penguin_id": string, // 企鹅数据汇报 id, 可选,默认为空。仅在 report_to_penguin 为 true 时有效
"server": string, // 服务器,可选,默认 "CN", 会影响掉落识别及上传
// 选项:"CN" | "US" | "JP" | "KR"
"client_type": string, // 客户端版本,可选,默认为空。用于游戏崩溃时重启并连回去继续刷,若为空则不启用该功能
// 选项:"Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
"DrGrandet": bool, // 节省理智碎石模式,可选,默认 false仅在可能产生碎石效果时生效。
// 在碎石确认界面等待,直到当前的 1 点理智恢复完成后再立刻碎石
}
```
另支持少部分资源关卡名请参考[集成示例](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/tools/AutoLocalization/example/zh-cn.xaml#L260)
- `Recruit`
公开招募
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"refresh": bool, // 是否刷新三星 Tags, 可选,默认 false
"select": [ // 会去点击标签的 Tag 等级,必选
int,
...
],
"confirm": [ // 会去点击确认的 Tag 等级,必选。若仅公招计算,可设置为空数组
int,
...
],
"first_tags": [ // 首选 Tags仅在 Tag 等级为 3 时有效。可选,默认为空
string, // 当 Tag 等级为 3 时,会尽可能多地选择这里的 Tags如果有
... // 而且是强制选择,也就是会忽略所有“让 3 星 Tag 不被选择”的设置
],
"extra_tags_mode": int, // 选择更多的 Tags, 可选, 默认为 0
// 0 - 默认行为
// 1 - 选 3 个 Tags, 即使可能冲突
// 2 - 如果可能, 同时选择更多的高星 Tag 组合, 即使可能冲突
"times": int, // 招募多少次,可选,默认 0。若仅公招计算可设置为 0
"set_time": bool, // 是否设置招募时限。仅在 times 为 0 时生效,可选,默认 true
"expedite": bool, // 是否使用加急许可,可选,默认 false
"expedite_times": int, // 加急次数,仅在 expedite 为 true 时有效。
// 可选,默认无限使用(直到 times 达到上限)
"skip_robot": bool, // 是否在识别到小车词条时跳过,可选,默认跳过
"recruitment_time": { // Tag 等级(大于等于 3和对应的希望招募时限单位为分钟默认值都为 540即 09:00:00
"3": int,
"4": int,
...
},
"report_to_penguin": bool, // 是否汇报企鹅数据,可选,默认 false
"penguin_id": string, // 企鹅数据汇报 id, 可选,默认为空。仅在 report_to_penguin 为 true 时有效
"report_to_yituliu": bool, // 是否汇报一图流数据,可选,默认 false
"yituliu_id": string, // 一图流汇报 id, 可选,默认为空。仅在 report_to_yituliu 为 true 时有效
"server": string, // 服务器,可选,默认 "CN", 会影响上传
// 选项:"CN" | "US" | "JP" | "KR"
}
```
- `Infrast`
基建换班
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"mode": int, // 换班工作模式,可选,默认 0
// 0 - 默认换班模式,单设施最优解
// 10000 - 自定义换班模式,读取用户配置,可参考 protocol/base-scheduling-schema.md
"facility": [ // 要换班的设施(有序),必选。不支持运行中设置
string, // 设施名,"Mfg" | "Trade" | "Power" | "Control" | "Reception" | "Office" | "Dorm"
...
],
"drones": string, // 无人机用途,可选项,默认 _NotUse
// mode==10000 时该字段无效(会被忽略)
// "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
"threshold": float, // 工作心情阈值,可选,取值范围 [0, 1.0],默认 0.3
// mode==10000 时该字段仅针对 "autofill" 有效
"replenish": bool, // 贸易站“源石碎片”是否自动补货,可选,默认 false
"dorm_notstationed_enabled": bool, // 是否启用宿舍“未进驻”选项,可选,默认 false
"dorm_trust_enabled": bool, // 是否将宿舍剩余位置填入信赖未满干员,可选,默认 false
/* 以下参数仅在 mode=10000 时生效,否则会被忽略 */
"filename": string, // 自定义配置路径,必选。不支持运行中设置
"plan_index": int, // 使用配置中的方案序号,必选。不支持运行中设置
}
```
- `Mall`
领取信用及商店购物。
会先有序的按 `buy_first` 购买一遍,再从左到右并避开 `blacklist` 购买第二遍,在信用溢出时则会无视黑名单从左到右购买第三遍直到不再溢出
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"shopping": bool, // 是否购物,可选,默认 false。不支持运行中设置
"buy_first": [ // 优先购买列表,可选。不支持运行中设置
string, // 商品名,如 "招聘许可"、"龙门币" 等
...
],
"blacklist": [ // 黑名单列表,可选。不支持运行中设置
string, // 商品名,如 "加急许可"、"家具零件" 等
...
],
"force_shopping_if_credit_full": bool // 是否在信用溢出时无视黑名单,默认为 true
"only_buy_discount": bool // 是否只购买折扣物品,只作用于第二轮购买,默认为 false
"reserve_max_credit": bool // 是否在信用点低于300时停止购买只作用于第二轮购买默认为 false
}
```
- `Award`
领取各种奖励
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"award": bool, // 领取每日/每周任务奖励,默认为 true
"mail": bool, // 领取所有邮件奖励,默认为 false
"recruit": bool, // 领取限定池子赠送的每日免费单抽,默认为 false
"orundum": bool, // 领取幸运墙的合成玉奖励,默认为 false
"mining": bool, // 领取限时开采许可的合成玉奖励,默认为 false
"specialaccess": bool // 领取五周年赠送的月卡奖励,默认为 false
}
```
- `Roguelike`
无限刷肉鸽
```json5
// 对应的任务参数
{
"enable": bool, // 是否启用本任务,可选,默认值 true
"theme": string, // 主题,可选,默认值 "Phantom"
// Phantom - 傀影与猩红血钻
// Mizuki - 水月与深蓝之树
// Sami - 探索者的银凇止境
// Sarkaz - 萨卡兹的无终奇语
"mode": int, // 模式,可选,默认值 0
// 0 - 刷分/奖励点数,尽可能稳定地打更多层数
// 1 - 刷源石锭,第一层投资完就退出
// 2 - 【已弃用】兼顾模式 0 与 1投资过后再退出没有投资就继续往后打
// 3 - 开发中...
// 4 - 凹开局,先在 0 难度下到达第三层后重开,再到指定难度下凹开局奖励,若不为热水壶或希望则回到 0 难度下重新来过;
// 若在 Phantom 主题下则不切换难度,仅在当前难度下尝试到达第三层、重开、凹开局
// 5 - 刷坍缩范式;仅适用于 Sami 主题;通过战斗漏怪等方式加快坍缩值积累,
// 若遇到的第一个的坍缩范式在 expected_collapsal_paradigms 列表中则停止任务,否则重开
"squad": string, // 开局分队名,可选,默认值 "指挥分队"
"roles": string, // 开局职业组,可选,默认值 "取长补短"
"core_char": string, // 开局干员名,可选;仅支持单个干员**中文名**,无论区服;若留空或设置为空字符串 "" 则根据练度自动选择
"use_support": bool, // 开局干员是否为助战干员,可选,默认值 false
"use_nonfriend_support": bool, // 是否可以是非好友助战干员,可选,默认值 false仅在 use_support 为 true 时有效
"starts_count": int, // 开始探索的次数,可选,默认值 INT_MAX达到后自动停止任务
"difficulty": int, // 指定难度等级,可选,默认值 0仅适用于**除 Phantom 以外**的主题;
// 若未解锁难度,则会选择当前已解锁的最高难度
"stop_at_final_boss": bool, // 是否在第 5 层险路恶敌节点前停止任务,可选,默认值 false仅适用于**除 Phantom 以外**的主题
"investment_enabled": bool, // 是否投资源石锭,可选,默认值 true
"investments_count": int, // 投资源石锭的次数,可选,默认值 INT_MAX达到后自动停止任务
"stop_when_investment_full": bool, // 是否在投资到达上限后自动停止任务,可选,默认值 false
"start_with_elite_two": bool, // 是否在凹开局的同时凹干员精二直升,可选,默认值 false仅适用于模式 4
"only_start_with_elite_two": bool, // 是否只凹开局干员精二直升而忽视其他开局条件,可选,默认值 false
// 仅在模式为 4 且 start_with_elite_two 为 true 时有效
"refresh_trader_with_dice": bool, // 是否用骰子刷新商店购买特殊商品,可选,默认值 false仅适用于 Mizuki 主题,用于刷指路鳞
"first_floor_foldartal": string, // 希望在第一层远见阶段得到的密文版,可选;仅适用于 Sami 主题,不限模式;若成功凹到则停止任务
"start_foldartal_list": [ // 凹开局时希望在开局奖励阶段得到的密文板,可选,默认值 [];仅主题为 Sami 且模式为 4 时有效;
string, // 仅当开局拥有列表中所有的密文板时才算凹开局成功;
... // 注意,此参数须与 “生活至上分队” 同时使用,其他分队在开局奖励阶段不会获得密文板;
],
"use_foldartal": bool, // 是否使用密文板,模式 5 下默认值 false其他模式下默认值 true仅适用于 Sami 主题,
"check_collapsal_paradigms": bool, // 是否检测获取的坍缩范式,模式 5 下默认值 true其他模式下默认值 false
"double_check_collapsal_paradigms": bool, // 是否执行坍缩范式检测防漏措施,模式 5 下默认值 true其他模式下默认值 false
// 仅在主题为 Sami 且 check_collapsal_paradigms 为 true 时有效
"expected_collapsal_paradigms": [ // 希望触发的坍缩范式,默认值 ["目空一些, "睁眼瞎", "图像损坏", "一抹黑"]
string, // 仅在主题为 Sami 且模式为 5 时有效
...
]
}
```
刷坍缩范式功能具体请参考 [肉鸽辅助协议](./integrated-strategy-schema.md#萨米肉鸽——坍缩范式)
- `Copilot`
自动抄作业
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"filename": string, // 作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置
"formation": bool // 是否进行 “快捷编队”,可选,默认否。不支持运行期设置
}
```
作业 JSON 请参考 [战斗流程协议](./copilot-schema.md)
- `SSSCopilot`
自动抄保全作业
```json5
{
"enable": bool, // 是否启用本任务,可选,默认为 true
"filename": string, // 作业 JSON 的文件路径,绝对、相对路径均可。不支持运行期设置
"loop_times": int // 循环执行次数
}
```
保全作业 JSON 请参考 [保全派驻协议](./sss-schema.md)
- `Depot`
仓库识别
```json5
// 对应的任务参数
{
"enable": bool // 是否启用本任务,可选,默认为 true
}
```
- `OperBox`
干员 box 识别
```json5
// 对应的任务参数
{
"enable": bool // 是否启用本任务,可选,默认为 true
}
```
- `Reclamation`
生息演算
```json5
{
"enable": bool,
"theme": string, // 主题,可选项。默认为 1
// Fire - *沙中之火*
// Tales - *沙洲遗闻*
"mode": int, // 模式,可选项。默认为 0
// 0 - 刷分与建造点,进入战斗直接退出
// 1 - 沙中之火:刷赤金,联络员买水后基地锻造;
// 沙洲遗闻:自动制造物品并读档刷货币
"tool_to_craft": string, // 自动制造的物品,可选项,默认为荧光棒
// 建议填写子串
"increment_mode": int, // 点击类型可选项。默认为0
// 0 - 连点
// 1 - 长按
"num_craft_batches": int // 单次最大制造轮数,可选。默认为 16
}
```
- `Custom`
自定义任务
```json5
{
"enable": bool,
"task_names": [ // 执行数组中第一个匹配上的任务(及后续 next 等)
// 若想执行多个任务,可多次 append Custom task
string,
...
]
}
```
- `SingleStep`
单步任务(目前仅支持战斗)
```json5
{
"enable": bool,
"type": string, // 目前仅支持 "copilot"
"subtask": string, // "stage" | "start" | "action"
// "stage" 设置关卡名,需要 "details": { "stage": "xxxx" }
// "start" 开始作战,无 details
// "action": 单步作战操作details 需为作战协议中的单个 action
// 例如:"details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 protocol/copilot-schema.md
"details": {
...
}
}
```
- `VideoRecognition`
视频识别,目前仅支持作业(作战)视频
```json5
{
"enable": bool,
"filename": string, // 视频的文件路径,绝对、相对路径均可。不支持运行期设置
}
```
### `AsstSetTaskParams`
#### 接口原型
```cpp
bool ASSTAPI AsstSetTaskParams(AsstHandle handle, AsstTaskId id, const char* params);
```
#### 接口说明
设置任务参数
#### 返回值
- `bool`
返回是否设置成功
#### 参数说明
- `AsstHandle handle`
实例句柄
- `AsstTaskId task`
任务 ID, `AsstAppendTask` 接口的返回值
- `const char* params`
任务参数json string`AsstAppendTask` 接口相同。
未标注“不支持运行中设置”的字段都支持实时修改;否则若当前任务正在运行,会忽略对应的字段
### `AsstSetStaticOption`
#### 接口原型
```cpp
bool ASSTAPI AsstSetStaticOption(AsstStaticOptionKey key, const char* value);
```
#### 接口说明
设置进程级参数
#### 返回值
- `bool`
返回是否设置成功
#### 参数说明
- `AsstStaticOptionKey key`
- `const char* value`
##### 键值一览
暂无
### `AsstSetInstanceOption`
#### 接口原型
```cpp
bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, const char* value);
```
#### 接口说明
设置实例级参数
#### 返回值
- `bool`
返回是否设置成功
#### 参数说明
- `AsstHandle handle`
实例句柄
- `AsstInstanceOptionKey key`
- `const char* value`
##### 键值一览
```cpp
enum InstanceOptionKey
{
Invalid = 0,
// 已弃用 // MinitouchEnabled = 1, // 是否启用 minitouch
// 开了也不代表就一定能用,有可能设备不支持等
// "1" 开,"0" 关
TouchMode = 2, // 触控模式设置,默认 minitouch
// minitouch | maatouch | adb
DeploymentWithPause = 3, // 是否暂停下干员,同时影响抄作业、肉鸽、保全
// "1" | "0"
AdbLiteEnabled = 4, // 是否使用 AdbLite "0" | "1"
KillAdbOnExit = 5, // 退出时是否杀掉 Adb 进程, "0" | "1"
};
```