回呼訊息協定
約 2961 字大約 10 分鐘
注意
回呼訊息 (Callback) 隨版本更新快速迭代中,本文件可能過時。如需獲取最新內容可參考 C# 整合原始碼
回呼函式原型
typedef void(ASST_CALL* AsstApiCallback)(AsstMsgId msg, const char* details_json, void* custom_arg);其中 AsstMsgId 為 int32_t 的別名。
參數總覽
AsstMsgId msg
消息類型enum class AsstMsg { /* Global Info */ InternalError = 0, // 內部錯誤 InitFailed = 1, // 初始化失敗 ConnectionInfo = 2, // 連線相關資訊 AllTasksCompleted = 3, // 全部任務完成 AsyncCallInfo = 4, // 外部非同步呼叫資訊 Destroyed = 5, // 執行個體已銷毀 /* TaskChain Info */ TaskChainError = 10000, // 任務鏈執行 / 辨識錯誤 TaskChainStart = 10001, // 任務鏈開始 TaskChainCompleted = 10002, // 任務鏈完成 TaskChainExtraInfo = 10003, // 任務鏈額外資訊 TaskChainStopped = 10004, // 任務鏈手動停止 /* SubTask Info */ SubTaskError = 20000, // 原子任務執行 / 辨識錯誤 SubTaskStart = 20001, // 原子任務開始 SubTaskCompleted = 20002, // 原子任務完成 SubTaskExtraInfo = 20003, // 原子任務額外資訊 SubTaskStopped = 20004, // 原子任務手動停止 /* Web Request */ ReportRequest = 30000, // 彙報請求 };const char* details
消息詳情,json 字串,詳見 欄位解釋void* custom_arg
呼叫端自訂參數。會原樣傳出AsstCreateEx介面中的custom_arg參數,C 系語言可利用此參數傳出this指標。
欄位解釋
InternalError
details 欄位為空。
InitFailed
whatRequiredstring
錯誤類型。
whyRequiredstring
錯誤原因。
detailsRequiredobject
錯誤詳情。
ConnectionInfo
whatRequiredstring
資訊類型。
whyRequiredstring
資訊原因。
uuidstring
設備唯一碼(連線失敗時為空)。
detailsRequiredobject
連線詳情。其結構如下:
adb(string, required):AsstConnect介面adb_path參數。address(string, required):AsstConnect介面address參數。config(string, required):AsstConnect介面config參數。
常見 What 欄位
ConnectFailed
連線失敗Connected
已連接,注意此時的uuid欄位值為空(下一步才是獲取)UuidGot
已獲取到設備唯一碼UnsupportedResolution
解析度不被支援ResolutionError
解析度獲取錯誤Reconnecting
連線中斷(adb / 模擬器 炸了),正在重連Reconnected
連線中斷(adb / 模擬器 炸了),重連成功Disconnect
連線中斷(adb / 模擬器 炸了),並重試失敗ScreencapFailed
截圖失敗(adb / 模擬器 炸了),並重試失敗TouchModeNotAvailable
不支援的觸控模式MuMuExtrasInputStatus
MuMu 觸控增強的實際生效狀態,details結構如下:available(boolean, required): 是否已生效。deferred(boolean, required): 是否尚未判定(連線時遊戲尚未開始渲染,會在開始渲染後自動重試)。
ResolutionGot
已獲取到解析度ResolutionChanged
執行中解析度被修改,連線已斷開並中斷目前任務,details結構如下:width(number, required): 目前寬度。height(number, required): 目前高度。
FastestWayToScreencap
已找到最快的截圖方式,details結構如下:method(string, required): 最快的截圖方式。cost(number, required): 耗時,單位毫秒。alternatives(array<object>, required): 各候選方式及其耗時。
ScreencapCost
截圖耗時統計(每 10 次截圖回傳一次),details結構如下:min(number, required): 最小耗時,單位毫秒。max(number, required): 最大耗時,單位毫秒。avg(number, required): 平均耗時,單位毫秒。fault_times(number): 失敗次數(僅有失敗時存在)。
EmulatorFPS
模擬器更新率(每 1 分鐘檢測一次),details結構如下:fps(number, required): 模擬器/系統更新率(FPS)。refresh_period_ns(number, required): 每幀更新週期,單位奈秒。
AsyncCallInfo
uuidRequiredstring
設備唯一碼。
whatRequiredstring
回呼類型,例如 Connect | AttachWindow | Click | Screencap 等。
async_call_idRequirednumber
非同步請求 ID,即呼叫 AsstAsyncXXX 時的回傳值。
detailsRequiredobject
非同步呼叫詳情。其結構如下:
ret(boolean, required): 實際呼叫的回傳值。cost(number, required): 耗時,單位毫秒。error(string): 未處理例外的類型(僅呼叫因未處理例外失敗時存在)。
AllTasksCompleted
taskchainRequiredstring
最後的任務鏈。
taskidRequirednumber
最後一條任務鏈對應的任務 TaskId。
uuidRequiredstring
設備唯一碼。
finished_tasksRequiredarray<number>
已經執行過的任務 ID 列表。
常見 taskchain 欄位
StartUp
開始喚醒CloseDown
關閉遊戲Fight
刷理智Mall
信用點及購物Recruit
自動公招Infrast
基建換班Award
領取日常獎勵Roguelike
無限刷肉鴿Copilot
自動抄作業SSSCopilot
自動抄保全作業ParadoxCopilot
自動抄悖論模擬作業Depot
倉庫辨識OperBox
幹員 Box 辨識Reclamation
生息演算Custom
自訂任務SingleStep
單步任務VideoRecognition
影片辨識任務Debug
偵錯
TaskChain 相關消息
TaskChainError / TaskChainStart / TaskChainCompleted / TaskChainExtraInfo / TaskChainStopped 共用以下欄位:
taskchainRequiredstring
目前的任務鏈。
taskidRequirednumber
目前任務 TaskId。
uuidRequiredstring
設備唯一碼。
其中 TaskChainError 在任務鏈因未處理異常中斷時會額外攜帶 details 欄位:
error(string, required): 異常類型,取值為OpenCVException|OutOfMemory|UnhandledException|UnknownException。
TaskChainExtraInfo
預設僅攜帶上述公共欄位。肉鴿(界園主題)路徑規劃判定無法避開過多戰鬥而主動重開時,訊息會額外攜帶:
what(string, required): 固定為RoutingRestart。why(string, required): 固定為TooManyBattlesAhead。node_cost(number, required): 規劃得到的下一節點代價。
SubTask 相關消息
subtaskRequiredstring
子任務名稱。
classRequiredstring
子任務符號名稱。
taskchainRequiredstring
目前任務鏈。
taskidRequirednumber
目前任務 TaskId。
detailsRequiredobject
詳情。
uuidRequiredstring
設備唯一碼。
常見 subtask 欄位
ProcessTaskdetails欄位內容如下:taskRequired
string任務名稱。
actionRequired
string動作名稱,例如
ClickSelf|DoNothing|Swipe。exec_timesRequired
number已執行次數。
max_timesRequired
number最大執行次數。
algorithmRequired
string辨識演算法名稱,例如
MatchTemplate|OcrDetect|FeatureMatch|JustReturn。resultRequired
object本次辨識結果,各演算法結構不同;無辨識結果時為空物件。
此外,當任務執行次數達到上限時,會先回傳一條
SubTaskExtraInfo訊息,what為ExceededLimit,details包含task(任務名稱)、exec_times(已執行次數)、max_times(最大執行次數)。ReportToPenguinStats/ReportToYituliu
彙報戰鬥掉落到企鵝數據統計 / 一圖流大數據(上報失敗時以SubTaskError回傳)。StartGameTask
打開用戶端失敗(設定檔與傳入client_type不匹配)。Todo 其他
常見 task 欄位
StartButton2
開始戰鬥MedicineConfirm
使用理智藥StoneConfirm
碎石RecruitRefreshConfirm
公招刷新標籤RecruitConfirm
公招確認招募RecruitNowConfirm
公招使用加急許可InfrastDormDoubleConfirmButton
基建的二次確認按鈕。僅當待進駐幹員已進駐其他設施時才會出現(MAA 將自動點擊確認),請提示使用者。StartExplore
肉鴿開始探索StageTraderInvestConfirm
肉鴿投資源石錠StageTraderInvestSystemFull
肉鴿投資達到遊戲上限ExitThenAbandon
肉鴿放棄本次探索MissionCompletedFlag
肉鴿戰鬥完成MissionFailedFlag
肉鴿戰鬥失敗StageTraderEnter
肉鴿關卡:詭異行商StageSafeHouseEnter
肉鴿關卡:安全的角落StageEncounterEnter
肉鴿關卡:不期而遇 / 古堡饋贈StageCombatOpsEnter
肉鴿關卡:普通作戰StageEmergencyOps
肉鴿關卡:緊急作戰StageDreadfulFoe
肉鴿關卡:險路惡敵- Todo 其他
SubTaskExtraInfo
taskchainRequiredstring
目前任務鏈。
classRequiredstring
子任務類型。
whatRequiredstring
資訊類型。
detailsRequiredobject
資訊詳情。
uuidRequiredstring
設備唯一碼。
常見 what 及 details 欄位
StageDrops
關卡材料掉落資訊。details欄位結構如下:drops(array, required):本次辨識到的掉落材料,陣列每一項包含:itemId(string, required):材料 ID。quantity(number, required):掉落數量。itemName(string, required):材料名稱。
stage(object, required):關卡資訊,包含:stageCode(string, required):關卡編號。stageId(string, required):關卡 ID。
stars(number, required):行動結束星級。stats(array, required):本次執行期間總計材料掉落,陣列每一項包含:itemId(string, required):材料 ID。itemName(string, required):材料名稱。quantity(number, required):總計數量。addQuantity(number, required):本次新增的掉落數量。
cur_times(number, optional):結算畫面辨識到的連戰次數(辨識到時存在)。annihilation_weekly_process(array, optional):剿滅模式的本週獲取進度,格式為[已完成數, 上限](僅剿滅關卡存在)。
RecruitTagsDetected
公招辨識到了 Tags。details欄位內容如下:tagsRequired
array<string>辨識到的 Tag 列表。
RecruitSpecialTag
公招辨識到了特殊 Tag。details欄位內容如下:tagRequired
string特殊 Tag 名稱,例如 高級資深幹員。
RecruitPreservedTag
公招辨識到了已設定為保留的 Tag。details欄位內容如下:tagRequired
string觸發保留的 Tag 名稱,例如
支援機械。RecruitResult
公招辨識結果。details欄位結構如下:tags(array, required):所有辨識到的 tags,目前固定為 5 個。level(number, required):組合的最高星級。result(array, required):具體的組合結果,陣列每一項包含:tags(array, required):參與組合的 tags。level(number, required):這組 tags 的星級。opers(array, required):可能招募到的幹員,陣列每一項包含:id(string, required):幹員 ID。name(string, required):幹員名稱。level(number, required):幹員星級。
RecruitTagsRefreshed
公招刷新了 Tags。details欄位內容如下:countRequired
number目前槽位已刷新次數。
refresh_limitRequired
number目前槽位刷新次數上限。
RecruitNoPermit
公招無招聘許可。details欄位內容如下:continueRequired
boolean是否繼續刷新。
RecruitTagsSelected
公招選擇了 Tags。details欄位內容如下:tagsRequired
array<string>選擇的 Tag 列表。
RecruitError
公招辨識錯誤。details欄位為空;若因目前槽位刷新次數達到上限觸發,則包含refresh_limit(槽位刷新次數上限)。EnterFacility
基建進入了設施。details欄位內容如下:facilityRequired
string設施名稱。
indexRequired
number設施序號。
NotEnoughStaff
基建可用幹員不足。details欄位內容如下:facilityRequired
string設施名稱。
indexRequired
number設施序號。
ProductOfFacility
基建產物。details欄位內容如下:productRequired
string產物名稱。
facilityRequired
string設施名稱。
indexRequired
number設施序號。
StageInfo
自動作戰關卡資訊。details欄位內容如下:nameRequired
string關卡名稱。
sizeRequired
number地圖格點數量。
StageInfoError
自動作戰關卡辨識錯誤。details欄位為空。DepotInfo
倉庫辨識結果。details欄位結構如下:done(boolean, required):是否已經辨識完了,為 false 表示仍在辨識中(過程中的數據)。data(string, required):JSON 字串,格式為{"物品ID": 數量, ...},例如{"2001":18000,"31043":317}。
OperBoxInfo
幹員辨識結果。details欄位結構如下:done(boolean, required):是否已經辨識完了,為 false 表示仍在辨識中(過程中的數據)。all_opers(array, required):全幹員列表,陣列每一項包含:id(string, required):幹員 ID。name(string, required):幹員名稱。name_en(string, required):幹員英文名稱。name_jp(string, required):幹員日文名稱。name_kr(string, required):幹員韓文名稱。name_tw(string, required):幹員繁中名稱。own(boolean, required):是否擁有。rarity(number, required):幹員稀有度 [1, 6]。
own_opers(array, required):已擁有幹員的詳細資訊列表,陣列每一項包含:id(string, required):幹員 ID。name(string, required):幹員名稱。own(boolean, required):是否擁有。elite(number, required):精英等級 [0, 2]。level(number, required):幹員等級。potential(number, required):幹員潛能 [1, 6]。rarity(number, required):幹員稀有度 [1, 6]。
UnsupportedLevel
自動抄作業,不支援的關卡名稱。details欄位內容如下:levelRequired
string不支援的關卡名稱。
ReportRequest
該欄位主要用於核心模組向 UI 層傳遞網路請求資訊,UI 負責執行具體的 HTTP 彙報操作。
urlRequiredstring
請求的完整 URL,例如 https://penguin-stats.io/PenguinStats/api/v2/report。
headersRequiredobject
請求 Headers 的 Key-Value 設定(不包含 Content-Type,由 UI 層自行加入)。
bodyRequiredstring
請求 Body 內容(通常為 json 格式的字串)。
subtaskRequiredstring
子任務名稱,辨識具體彙報任務,如 ReportToPenguinStats、ReportToYituliu。
