Skip to main content

Callback Schema

About 5 min

Callback Schema

Callback messages are being iterated rapidly with version updates, and this document may be outdated. For the latest content, please refer to C# Integration Source Codeopen in new window

Prototype

typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom_arg);

Overview

  • int msg
    The message type

    enum class AsstMsg
    {
        /* Global Info */
        InternalError = 0,          // Internal error
        InitFailed,                 // Initialization failure
        ConnectionInfo,             // Connection info
        AllTasksCompleted,          // Whether all tasks have been completed
        AsyncCallInfo,              // Async Call Info
        /* TaskChain Info */
        TaskChainError = 10000,     // Errors in task chain execution/recognition
        TaskChainStart,             // Task chain starts
        TaskChainCompleted,         // Task chain completes
        TaskChainExtraInfo,         // Extra information about task chain
        TaskChainStopped,           // Task chain stopped
        /* SubTask Info */
        SubTaskError = 20000,       // Errors in subtask execution/recognition
        SubTaskStart,               // Subtask starts
        SubTaskCompleted,           // Subtask completes
        SubTaskExtraInfo,           // Extra information about subtask
        SubTaskStopped,             // Subtask stopped
    };
    
  • const char* details
    Message details, JSON. See also: Field Description

  • void* custom_arg
    Custom arguments of the caller, will pass the custom_arg argument of AsstCreateEx interface. C-like languages can pass the this pointer with it.

Field Description

InternalError

Todo

InitFailed

{
    "what": string,     // Error type
    "why": string,      // Error reason
    "details": object   // Error details
}

ConnectionInfo

{
    "what": string,     // Info type
    "why": string,      // Info reason
    "uuid": string,     // UUID (empty when connection fails)
    "details": {
        "adb": string,     // adb_path argument of AsstConnect interface
        "address": string, // address argument of AsstConnect interface
        "config": string   // config argument of AsstConnect interface
    }
}

Commonly-used What Field Values

  • ConnectFailed
    Connection failed.
  • Connected
    Connected. Note that the uuid field is empty now (and will be retrieved in the next step)
  • UuidGot
    UUID has been retrieved.
  • UnsupportedResolution
    The resolution is not supported.
  • ResolutionError
    Cannot get the resolution.
  • Reconnecting
    Disconnected (adb/emulator crashed), and reconnecting
  • Reconnected
    Disconnected (adb/emulator crashed), and reconnected successfully
  • Disconnect
    Disconnected (adb/emulator crashed), and failed to reconnect
  • ScreencapFailed
    Screencap Failed (adb/emulator crashed), and failed to reconnect
  • TouchModeNotAvailable
    Touch Mode is not available

AsyncCallInfo

{
    "uuid": string,             // UUID
    "what": string,             // Call type, "Connect" | "Click" | "Screencap" | ...
    "async_call_id": int,       // Async call id, is the return value when the AsstAsyncXXX API is called
    "details": {
        "ret": bool,            // Result
        "cost": int64,          // Time spent in ms
    }
}

AllTasksCompleted

{
    "taskchain": string,            // Last task chain
    "uuid": string,                 // UUID
    "finished_tasks": [             // ID of the last task run
        int,
        ...
    ]
}

Commonly-used taskchain Field Values

  • StartUp
    Start-up.
  • CloseDown
    Close Game Client
  • Fight
    Fighting.
  • Mall
    Mall.
  • Recruit
    Auto-recruitment.
  • Infrast
    Infrastructure.
  • Award
    Get Daily Rewards
  • Roguelike
    Roguelike.
  • Copilot
    Auto-Combat by json file
  • SSSCopilot
    Auto-Combat by json file for STATIONARY SECURITY SERVICE
  • Depot
    Depot Recognition
  • OperBox
    Operator Box Recognition
  • ReclamationAlgorithm
    Reclamation Algorithm ( A new mode in CN client)
  • Custom
    Custom Task
  • SingleStep
    Single Step Task
  • VideoRecognition
    Video Recognition for Copilot
  • Debug
    Debug.
{
    "taskchain": string,            // Current task chain
    "taskid": int,                  // Current task ID
    "uuid": string                  // UUID
}

TaskChainExtraInfo

Todo

{
    "subtask": string,             // Subtask name
    "class": string,               // Subtask class
    "taskchain": string,           // Current task chain
    "taskid": int,                 // Current task ID
    "details": object,             // Details
    "uuid": string                 // UUID
}

Commonly-used subtask Field Values

  • ProcessTask

    // Example of corresponding details field
    {
        "task": "StartButton2",     // Task name
        "action": 512,
        "exec_times": 1,            // Execution times
        "max_times": 999,           // Maximum execution times
        "algorithm": 0
    }
    
  • Todo Other

Commonly-used task Field Values
  • StartButton2
    Starting.
  • MedicineConfirm
    Confirmation of using Sanity Potion.
  • ExpiringMedicineConfirm
    Confirmation of using Expiring Sanity Potion.
  • StoneConfirm
    Confirmation of using Originite Prime.
  • RecruitRefreshConfirm
    Confirmation of refreshing recruitment list.
  • RecruitConfirm
    Confirmation of recruitment.
  • RecruitNowConfirm
    Confirmation of expedited recruitment.
  • ReportToPenguinStats
    Reporting to Penguin Stats.
  • ReportToYituliu
    Reporting to Yituliu Big Data.
  • InfrastDormDoubleConfirmButton
    Double confirmation at infrastructure, only happens when there is a conflict with other operators.
  • StartExplore
    Integrated Strategy: starting.
  • StageTraderInvestConfirm
    Integrated Strategy: trading items with Originium Ingot.
  • StageTraderInvestSystemFull
    Integrated Strategy: trading system full.
  • ExitThenAbandon
    Integrated Strategy: exit confirmation.
  • MissionCompletedFlag
    Integrated Strategy: mission completed.
  • MissionFailedFlag
    Integrated Strategy: mission failed.
  • StageTraderEnter
    Integrated Strategy: Cunning Merchant
  • StageSafeHouseEnter
    Integrated Strategy: Safehouse
  • StageEncounterEnter
    Integrated Strategy: Chance Meeting
  • StageCombatDpsEnter
    Integrated Strategy: Operation
  • StageEmergencyDps
    Integrated Strategy: Emergency Operation
  • StageDreadfulFoe
    Integrated Strategy: Dreadful Foe
  • StartGameTask
    Failed to launch client (incompatible config file with client_type)
  • Todo Other

SubTaskExtraInfo

{
    "taskchain": string,           // Current task chain
    "class": string,               // Subtask class
    "what": string,                // Information type
    "details": object,             // Information details
    "uuid": string,                // UUID
}

Commonly-used what And details Field Values

  • StageDrops
    Stage drop information

    // Example of corresponding details field
    {
        "drops": [              // dropped items
            {
                "itemId": "3301",
                "quantity": 2,
                "itemName": "技巧概要·卷1" // Skill Summary - 1
            },
            {
                "itemId": "3302",
                "quantity": 1,
                "itemName": "技巧概要·卷2" // Skill Summary - 2
            },
            {
                "itemId": "3303",
                "quantity": 2,
                "itemName": "技巧概要·卷3" // Skill Summary - 3
            }
        ],
        "stage": {              // 关卡信息
            "stageCode": "CA-5",
            "stageId": "wk_fly_5"
        },
        "stars": 3,             // Stage clear ★
        "stats": [              // Statistics of drops
            {
                "itemId": "3301",
                "itemName": "技巧概要·卷1", // Skill Summary - 1
                "quantity": 4
            },
            {
                "itemId": "3302",
                "itemName": "技巧概要·卷2", // Skill Summary - 2
                "quantity": 3
            },
            {
                "itemId": "3303",
                "itemName": "技巧概要·卷3", // Skill Summary - 3
                "quantity": 4
            }
        ]
    }
    
  • RecruitTagsDetected
    Recruitment tags detected

    // Example of corresponding details field
    {
        "tags": [
            "费用回复", // DP-Recovery
            "防护", // Defense
            "先锋干员", // Vanguard
            "辅助干员", // Support
            "近战位" // Melee
        ]
    }
    
  • RecruitSpecialTag
    Special recruitment tags detected

    // Example of corresponding details field
    {
        "tag": "高级资深干员" // Senior operator
    }
    
  • RecruitResult
    Recruitment result

    // Example of corresponding details field
    {
        "tags": [                   // All tags, Must be 5
            "削弱",
            "减速",
            "术师干员",
            "辅助干员",
            "近战位"
        ],
        "level": 4,                 // ★ in total
        "result": [
            {
                "tags": [
                    "削弱" // Debuff
                ],
                "level": 4,         // Rarity of these tags
                "opers": [
                    {
                        "name": "初雪", // Pramanix
                        "level": 5  // ★ of the operator
                    },
                    {
                        "name": "陨星", // Meteorite
                        "level": 5
                    },
                    {
                        "name": "槐琥", // Waai Fu
                        "level": 5
                    },
                    {
                        "name": "夜烟", // Haze
                        "level": 4
                    },
                    {
                        "name": "流星", // Meteor
                        "level": 4
                    }
                ]
            },
            {
                "tags": [
                    "减速", // Slow
                    "术师干员" // Caster
                ],
                "level": 4,
                "opers": [
                    {
                        "name": "夜魔", // Nightmare
                        "level": 5
                    },
                    {
                        "name": "格雷伊", // Greyy
                        "level": 4
                    }
                ]
            },
            {
                "tags": [
                    "削弱", // Debuff
                    "术师干员" // Caster
                ],
                "level": 4,
                "opers": [
                    {
                        "name": "夜烟", // Haze
                        "level": 4
                    }
                ]
            }
        ]
    }
    
  • RecruitTagsRefreshed
    Recruitment tags refreshed

    // Example of corresponding details field
    {
        "count": 1,               // Number of times that the slot has been refreshed
        "refresh_limit": 3        // Limits of the number of times of refreshing
    }
    
  • RecruitNoPermit
    Ran out of recruit permit

    // Example of corresponding details field
    {
        "continue": true,   // Whether continue to refresh or not
    }
    
  • RecruitTagsSelected
    Recruitment tags selected

    // Example of corresponding details field
    {
        "tags": [
            "减速", // Slow
            "术师干员" // Caster
        ]
    }
    
  • RecruitSlotCompleted
    Recruitment slot completed

  • RecruitError
    Error when recognizing recruitment

  • EnterFacility
    Entering the facility

    // Example of corresponding details field
    {
        "facility": "Mfg",  // Facility name
        "index": 0          // Facility ID
    }
    
  • NotEnoughStaff
    Available operators not enough

    // Example of corresponding details field
    {
        "facility": "Mfg",  // Facility name
        "index": 0          // Facility ID
    }
    
  • ProductOfFacility
    Production of the facility

    // Example of corresponding details field
    {
        "product": "Money", // Product
        "facility": "Mfg",  // Facility name
        "index": 0          // Facility ID
    }
    
  • StageInfo
    Auto-battle stage info

    // Example of corresponding details field
    {
        "name": string  // Stage name
    }
    
  • StageInfoError
    Auto-battle stage info error

  • PenguinId
    Penguin ID

    // Example of corresponding details field
    {
        "id": string
    }
    
  • DepotInfo
    Recognition result of depot

    // Example of corresponding details field
    // Supports ArkPlanner format only. More formats may be supported in future.
    "arkplanner": {
        "object": {
            "items": [
                {
                    "id": "2004",
                    "have": 4,
                    "name": "高级作战记录" // Strategic Battle Record
                },
                {
                    "id": "mod_unlock_token",
                    "have": 25,
                    "name": "模组数据块" // Module Data Block
                },
                {
                    "id": "2003",
                    "have": 20,
                    "name": "中级作战记录" // Tactical Battle Record
                }
            ],
            "@type": "@penguin-statistics/depot"
        },
        "data": "{\"@type\":\"@penguin-statistics/depot\",\"items\":[{\"id\":\"2004\",\"have\":4,\"name\":\"高级作战记录\"},{\"id\":\"mod_unlock_token\",\"have\":25,\"name\":\"模组数据块\"},{\"id\":\"2003\",\"have\":20,\"name\":\"中级作战记录\"}]}"
    },
    "lolicon": {     // https://arkntools.app/#/material
        "object": {
            "2004" : 4,
            "mod_unlock_token": 25,
            "2003": 20
        },
        "data": "{\"2003\":20,\"2004\": 4,\"mod_unlock_token\": 25}"
    }
    // Only ArkPlanner and Lolicon formats are supported. More websites will be supported in future.
    
  • OperBoxInfo
    Recognition result of operator box

    // Example of corresponding details field
    "done": bool,       // Whether the recognition has been completed, false means it is still in progress (data during the process)
    "all_oper": [
        {
            "id": "char_002_amiya",
            "name": "阿米娅",
            "own": true
        },
        {
            "id": "char_003_kalts",
            "name": "凯尔希",
            "own": true
        },
        {
            "id": "char_1020_reed2",
            "name": "焰影苇草",
            "own": false
        },
    ]
    "own_opers": [
        {
            "id": "char_002_amiya", // Operator ID
            "name": "阿米娅", // Operator name
            "own": true, // Whether owned
            "elite": 2, // Elite level 0, 1, 2
            "level": 50, // Operator level
            "potential": 6, // Operator potential [1, 6]
            "rarity": 5     // [1, 6]
        },
        {
            "id": "char_003_kalts",
            "name": "凯尔希",
            "own": true,
            "elite": 2,
            "level": 50,
            "potential": 1,
            "rarity": 6
        }
    ]
    
  • UnsupportedLevel
    Unsupported level name