戰鬥流程協定
約 3171 字大約 11 分鐘
resource/copilot/*.json 的使用方法及各欄位說明
提示
請注意,json 檔案不支援註解。文件中的註解僅供說明參考,請勿直接複製使用。
完整欄位一覽
{
"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](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": "v4.0", // 最低要求 MAA 版本號,必填。
"doc": {
// 描述,選填。
"title": "低練度高成功率作業",
"title_color": "dark",
"details": "對練度要求很低balabala……", // 建議在這裡寫上你的名字!(作者名稱)、參考的影片攻略連結等
"details_color": "dark"
},
"difficulty": 0 // 作業對應難度,選填,預設值為 0。
// 0: 預設,未設定
// 1: 支援普通難度
// 2: 支援突襲難度
// 3: 支援普通、突襲難度
}