战斗流程协议
约 3208 字大约 11 分钟
resource/copilot/*.json 的使用方法及各字段说明
提示
请注意 JSON 文件是不支持注释的,文本中的注释仅用于演示,请勿直接复制使用。注释中的 作业站 均指 PRTS plus 。
完整字段一览
{
"stage_name": "暴君", // 关卡名,必选。关卡中文名、code、stageId、levelId等,只要能保证唯一均可。
"opers": [
// 指定干员
{
"name": "重岳", // 干员名
"role": "guard", // 干员职业。可选,用于区分同名干员,填英文职业名,大小写不限
"skill": 3, // 技能序号。可选,默认为 0,取值范围 [0, 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, // 精英化等级。可选,默认为 -1,即不作要求
"level": 90, // 干员等级。可选,默认为 -1,即不作要求
"skill_level": 10, // 技能等级。可选,默认为 -1,即不作要求
"module": 1, // 模组编号。可选,默认为 -1,即不作要求;0 表示不使用模组,1-5 依次对应 χ、γ、α、Δ、β 模组
"module_level": 3, // 模组等级。暂不支持
"potential": 1 // 潜能要求。暂不支持
}
}
],
"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" | "ResetStopwatch" | "Click" | "Swipe" | "SetUnitLocation"
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" | "重置全局计时器" | "点击" | "滑动" | "设置单位坐标"
// 中英文皆可,效果相同,但目前作业站发布只支持英文
// 若为 "部署",当费用不够时,会一直等待到费用够(除非 timeout)
// 若为 "技能",当技能 cd 没转好时,一直等待到技能 cd 好(除非 timeout)
// "二倍速" 是可切换的,即使用一次变成二倍速,再次使用又变回一倍速
// "子弹时间" 即点击任意干员后的 1/5 速度,再进行任意 action 会恢复正常速度
// "name" 或 "location" 必填一项,即点哪个干员进入子弹时间,战场上的干员或待部署区的干员均可(会自动判断)
// 若下一个动作是 "技能" / "撤退",需要填与下一个动作相同的 "name" 或 "location"
// 若下一个动作是 "部署",随便填谁(但最好不要填待部署的那个人,头像被点了会影响识别)
// "打印" 界面不显示这条步骤,仅用于输出 doc 里的内容(用来做字幕之类的)
// "摆完挂机" 仅使用 "好了就用" 的技能,其他什么都不做,直到战斗结束
// "移动镜头" 用于 “引航者试炼” 模式,还需要填写 distance 字段
// "重置全局计时器" 重置全局计时器,请参考 “elapsed_time” 条件
// "点击" 直接点击 "rect" 指定的像素区域或 "location" 指定的战场格子,不做任何识别,空格子也可点击
// "rect" 与 "location" 必须至少填写一个,都不填写会导致作业加载失败(解析期报错);同时填写时优先使用 "rect"(日志输出警告)
// "滑动" 从 "begin" 矩形滑动到 "end" 矩形,直接下发底层滑动指令;两者缺一时作业加载失败
// "设置单位坐标" 设置某战场单位的格子坐标:"name" 与 "location" 均必填,任一缺失或值畸形("name" 需为非空字符串,"location" 需为 [x, y] 两元素数字数组)会导致作业加载失败
// 仅更新 MAA 内部的单位位置记录,不对游戏进行任何操作
// 用于干员位移后修正位置,使后续按 "name" 的 "技能" / "撤退" / "技能用法" 动作落到新格子;
// 也可用于登记场上装置、设施等非干员单位,配合 "技能用法" 与 "摆完挂机" 实现装置技能自动开启;
// 该 "name" 已在场上时更新其位置,不在场上时登记为新单位("role" 可选,缺省不区分职业)
// 目前下面五个条件是且的关系,即 &&
"kills": 0, // 击杀数条件,如果没达到就一直等待。可选,默认为 0,直接执行
"costs": 50, // 费用条件,如果没达到就一直等待。可选,默认为 0,直接执行
// 费用受潜能等影响,可能并不完全正确,仅适合对时间轴要求不严格的战斗。
// 否则请使用下面的 cost_changes
// 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用
"cost_changes": 5, // 费用变化量条件,如果没达到就一直等待。可选,默认为 0,直接执行
// 注意是从开始执行本 action 开始计算的(即前一个 action 结束时的费用作为基准)
// 支持负数,即费用变少了(例如“孑”等吸费干员使得费用变少了)
// 另外仅在费用是两位数的时候识别的比较准,三位数的费用可能会识别错,不推荐使用
"cooling": 2, // CD 中干员数量条件,如果没达到就一直等待。可选,默认为 -1,不识别
"elapsed_time": 1000, // 以毫秒为单位全局计时条件,如果没达到就一直等待。可选,默认为 0,直接执行
// 注意是从上一次执行 type:ResetStopwatch 的 action 开始计算的
// 使用前必须执行过 type:ResetStopwatch 的 action 重置计时器,不然会卡住
// TODO: 其他条件
// TODO: "condition_type": 0, // 执行条件间的关系,可选,默认为 0
// // 0 - 且; 1 - 或
"name": "棘刺", // 干员名 或 群组名, type 为 "部署" 时必选,为 "技能" | "撤退" 时可选,为 "设置单位坐标" 时必选
"role": "guard", // 干员职业。可选,用于区分同名干员,填英文职业名,大小写不限
"location": [
5,
5
], // 部署干员的位置。
// type 为 "部署" 时必选。
// type 为 "技能" | "撤退" 时可选,
// "技能":仅推荐场地上自动的装置等,不填写 name,并使用 location 开启技能。正常部署的干员推荐使用 name 开启技能
// "撤退":仅推荐有多个同名召唤物时,不填写 name,并使用 location 进行撤退。正常部署的干员推荐 name 进行撤退
// type 为 "技能" | "撤退" | "技能用法" 时若同时填写 name 与 location,优先使用 location
// type 为 "设置单位坐标" 时必填,将该 "name" 单位的位置设置为此格子,坐标为任意合法格子,包括 [0, 0]
// type 为 "点击" 时与 "rect" 至少填一个,直接点击该格子;坐标为任意合法格子,包括 [0, 0]
// 坐标信息可在 https://map.ark-nights.com/areas 中查看,在设置中将“坐标展示”选为“MAA”即为 MAA 使用的坐标
"rect": [
100,
100,
50,
50
], // type 为 "点击" 时与 "location" 至少填一个,同时填写时优先使用 rect,720p 基准像素矩形 [x, y, w, h]
// 点击时在区域内随机取点,并自动缩放适配当前分辨率
"direction": "左", // 部署干员的干员朝向。 type 为 "部署" 时必选
// "Left" | "Right" | "Up" | "Down" | "None"
// "左" | "右" | "上" | "下" | "无"
// 中英文皆可,效果相同,但目前作业站发布只支持英文
// "skip_if_not_ready": false,已废弃,使用 timeout: 0 代替
"skill_usage": 1, // 修改技能用法。当 type 为 "技能用法" 时必选
// 举例:刚下桃金娘需要她帮忙打几个怪,不能自动开技能,中后期平稳了需要她自动开技能
// 则可以在对应时刻设置为 1
"skill_times": 5, // 技能使用次数。可选,默认为 1
"pre_delay": 0, // 前置延时。可选,默认为 0,单位毫秒
// 当前 action 的所有条件参数全部满足后开始计时,计时结束后执行 type 对应动作
"post_delay": 0, // 后置延时。可选,默认为 0,单位毫秒
// 当前 action 的 type 对应动作执行完成后开始计时,计时结束后开始下一个 action
"timeout": 999999999, // 超时时间。当 type 为 "技能" 时可选。默认 -1,即不限制,单位毫秒
// 当完成条件和 pre_delay 后开始计时,等待超时则放弃当前动作,转而执行下一个动作;值为 0 时只检查一次
"distance": [
4.5,
0
], // type 为 "移动镜头" 时必选
// [ x 移动格子数,y 移动格子数 ],可为小数,可为负
// x 值为正时代表镜头右移,y 值为正时代表镜头上移
// 例:"distance": [-1, 1],"location": [5, 6],实际会部署在 [6, 7]
"keep_kills": false, // 移动镜头时不归零击杀数。可选,默认为 false;为 true 时不等待当前波次结束、击杀数不清零,适用于同一波次内移动镜头的场景
"begin": [
100,
100,
50,
50
], // type 为 "滑动" 时必选,滑动起点矩形,720p 基准像素矩形 [x, y, w, h],起点在区域内随机取点并自动缩放适配当前分辨率
"end": [
400,
400,
50,
50
], // type 为 "滑动" 时必选,滑动终点矩形,720p 基准像素矩形 [x, y, w, h],终点在区域内随机取点并自动缩放适配当前分辨率
"duration": 200, // 滑动持续时间。可选,默认为 0,单位毫秒
"extra_swipe": 1, // 滑动结束后追加的补偿滑动方向。可选,默认为 0,不启用
// 0 不启用,1/2/3/4 分别为上/下/左/右
// 主滑动结束后会追加一小段指定方向的补偿滑动,用于消除松手后主滑动方向的惯性
// 例如左右滑动列表后追加一段垂直方向的小滑动,可避免列表松手后继续滑过头
"slope_in": 10, // 滑动起始斜率。可选,默认为 10;以 ×10 的整数存储,10 即 1.0
"slope_out": 10, // 滑动结束斜率。可选,默认为 10;以 ×10 的整数存储,10 即 1.0
"with_pause": false, // 滑动时是否附带暂停操作(用于需要在暂停状态下滑动的场景)。可选,默认为 false;仅部分触控模式支持
"high_resolution_swipe_fix": false, // 是否启用高分辨率滑动修正。可选,默认为 false。绝大多数情况下无需开启:该修正仅针对未使用 Unity 滑动方式的界面(现阶段仅主线关卡导航的章节滑动需要),自动战斗中的滑动不涉及
// duration、extra_swipe、slope_in、slope_out 与 tasks.json 中 Swipe 任务 special_params 的前四个元素取值语义一致,可对照;
// high_resolution_swipe_fix 对应 tasks.json 中的独立任务字段 highResolutionSwipeFix;
// with_pause 为本协议独有参数,tasks.json 中无对应字段(滑动是否附带暂停由全局设置决定,无法按任务指定)
"doc": "下棘刺了!", // 描述,可选。会显示在界面上,没有实际作用
"doc_color": "orange" // 描述文字的颜色,可选,默认灰色。会显示在界面上,没有实际作用。
},
// 举例 1
{
"name": "任意正常群奶",
"location": [
5,
6
],
"direction": "右"
},
// 举例 2
{
"name": "史尔特尔",
"location": [
4,
5
],
"direction": "左",
"doc": "你史尔特尔奶奶来啦!",
"doc_color": "red"
},
// 举例 3
{
"type": "二倍速"
}
],
"minimum_required": "v6.7.0", // 最低要求 maa 版本号,必选;例如 v6.7.0, v6.8.0-beta.1
"doc": {
// 描述,可选。
"title": "低练度高成功率作业",
"title_color": "dark",
"details": "对练度要求很低balabala……", // 建议在这里写上你的名字!(作者名)、参考的视频攻略链接等
"details_color": "dark"
},
"difficulty": 0 // 作业对应难度,可选,默认值为0。
// 0: 缺省,未设置
// 1: 支持普通难度
// 2: 支持突袭难度
// 3: 支持普通、突袭难度
}