mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-16 17:57:01 +08:00
Co-authored-by: wlwxj <d1ve_wh4le@outlook.com> Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com> Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com> Co-authored-by: HX3N <scarlet7518@gmail.com> Co-authored-by: Wallsman <63186641+wallsman@users.noreply.github.com> Co-authored-by: Loong <wangl.cc@outlook.com> Co-authored-by: 神代綺凛 <i@loli.best> Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
434 lines
16 KiB
Markdown
434 lines
16 KiB
Markdown
---
|
||
order: 1
|
||
icon: bxs:book
|
||
---
|
||
|
||
# Integration
|
||
|
||
## API
|
||
|
||
### `AsstAppendTask`
|
||
|
||
#### Prototype
|
||
|
||
```cpp
|
||
TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* params);
|
||
```
|
||
|
||
#### Description
|
||
|
||
Appends a task.
|
||
|
||
#### Return Value
|
||
|
||
- `TaskId`
|
||
The task ID if the task is successfully appended, for the following configuration;
|
||
0 if the task is not successfully appended.
|
||
|
||
#### Parameter Description
|
||
|
||
- `AsstHandle handle`
|
||
Instance handle
|
||
- `const char* type`
|
||
Task type
|
||
- `const char* params`
|
||
Task parameters in JSON
|
||
|
||
##### List of Task Types
|
||
|
||
- `StartUp`
|
||
Start-up
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, true by default
|
||
"client_type": string, // Client version, optional, empty by default
|
||
// Options: "Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
|
||
"start_game_enabled": bool // Whether to launch client automatically, optional, false by default
|
||
}
|
||
```
|
||
|
||
- `CloseDown`
|
||
Close Game Client
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, true by default
|
||
}
|
||
```
|
||
|
||
- `Fight`
|
||
Operation
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, true by default
|
||
"stage": string, // Stage name, optional, by default crrent / last stage. Editing in run-time is not supported.
|
||
// Supports all mainline stages, such as "1-7", "S3-2", etc.
|
||
// At the end of the level, enter Normal/Hard to switch between Normal and Tough difficulty
|
||
// Annihilation. The input should be `Annihilation`.
|
||
// Certain side story stages. The input should be complete with stage number.
|
||
"medicine": int, // Maximum number Sanity Potion used, optional, by default 0
|
||
"expiring_medicine": int, // Maximum number of expired Sanity Potion within 48 hours, optional, by default 0
|
||
"stone": int, // Maximum number of Originite Prime used, optional, by default 0
|
||
"times": int, // Maximum times, optional, by default infinite
|
||
"series": int, // Number of series, optional, 1~6
|
||
"drops": { // Specifying the number of drops, optional, no specification by default
|
||
"30011": int, // Key: item ID; value: number of items. Key refers to resource/item_index.json
|
||
"30062": int // OR combination
|
||
},
|
||
/* Items are combined with OR operators, i.e. the task stops when any condition meets. */
|
||
|
||
"report_to_penguin": bool, // Whether to upload data to Pengiun Stats, optional, by default false
|
||
"penguin_id": string, // Penguin Stats ID, optional, by default empty. Available only when `report_to_penguin` is `true`.
|
||
"server": string, // Server, optional, by default "CN", will affect the drop recognition and upload
|
||
// Options:"CN" | "US" | "JP" | "KR"
|
||
"client_type": string, // Client versino, optional, empty by default. Used to reconnect after the game crashed. Empty means to disable this feature
|
||
// Options: "Official" | "Bilibili" | "txwy" | "YoStarEN" | "YoStarJP" | "YoStarKR"
|
||
"DrGrandet": bool, // Save sanity by using Originites, Optional, false by default. effective only when Originites may be used
|
||
// Wait in the using Originites confirmation screen until the 1 point of sanity has been restored and then immediately use the Originite.
|
||
}
|
||
```
|
||
|
||
Supports some of the special stages,Please refer to [autoLocalization example](..\..\..\tools\AutoLocalization\example\en-us.xaml#L260).
|
||
|
||
- `Recruit`
|
||
Recruitment
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"refresh": bool, // Whether to refresh 3★ tags, optional, by default false
|
||
"select": [ // Tag level to click, required
|
||
int,
|
||
...
|
||
],
|
||
"confirm": [ // Tag level for confirmation, required. Can be set to empty array for calculation only.
|
||
int,
|
||
...
|
||
],
|
||
"first_tags": [ // Preferred Tags, valid only if 3★ tags. Optional, by default empty
|
||
string, // When Tag is level-3, as many Tags here as possible (if any) will be selected.
|
||
... // It's a forced selection, i.e. it ignores all "unselect 3★ Tags" settings.
|
||
],
|
||
"extra_tags_mode": int, // Select more tags, optional
|
||
// 0 - default
|
||
// 1 - click 3 tags anyway, even if they are in conflict
|
||
// 2 - select more combinations if possible, even if their tags are in conflict
|
||
"times": int, // The times of recruitment, optional, by default 0. Can be set to 0 for calculation only.
|
||
"set_time": bool, // Whether to set time to 9 hours, available only when `times` is 0, optional, by default true
|
||
"expedite": bool, // Whether to use expedited plans, optional, by default false
|
||
"expedite_times": int, // The times of using expedited plans, available only when `expedite` is `true`
|
||
// Optional, by default infinity until `times` reaches its limitation.
|
||
"skip_robot": bool, // Whether to skip when robot tag is recognized, optional, skip by default.
|
||
"recruitment_time": { // Tags level and set duration in minutes, optional, by default 540 (i.e. 9 hours)
|
||
"3": int,
|
||
"4": int,
|
||
...
|
||
},
|
||
"report_to_penguin": bool, // Whether to report to Penguin Stats, optional, by default false.
|
||
"penguin_id": string, // Penguin Stats user id, optional, by default empty. Valid only if report_to_penguin is true.
|
||
"report_to_yituliu": bool, // Whether to report to YITULIU, optional, by default false.
|
||
"yituliu_id": string, // YITULIU user id, optional, by default empty. Valid only if report_to_yituliu is true.
|
||
"server": string, // Server, optional, by default "CN", will affect upload
|
||
}
|
||
```
|
||
|
||
- `Infrast`
|
||
Infrastructure shifting
|
||
|
||
```json
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"mode": int, // Shift mode, optional. Editing in run-time is not supported.
|
||
// 0 - By Default, auto shift
|
||
// 10000 - Custom Mode, please refer 3.6-INFRASTRUCTURE_SCHEDULING_SCHEMA
|
||
"facility": [ // Facilities for shifting, required. Editing in run-time is not supported.
|
||
string, // Facility name: "Mfg" | "Trade" | "Power" | "Control" | "Reception" | "Office" | "Dorm"
|
||
...
|
||
],
|
||
"drones": string, // Usage of drones, optional, by default "_NotUse"
|
||
// "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
|
||
"threshold": float, // Morale threshold with range [0, 1.0], optional, by default 0.3
|
||
"replenish": bool, // Whether to replenish Originium Shard, optional, by default false
|
||
"dorm_notstationed_enabled": bool, // Whether to enbale Not Stationed in Dorm, by default false
|
||
"dorm_trust_enabled": bool, // Whether to fill operators in dorm by trust, by default false
|
||
|
||
/* The following is only valid when mode == 10000 */
|
||
"filename": string, // Custom config json file path
|
||
"plan_index": int, // custom config plan index
|
||
}
|
||
```
|
||
|
||
- `Mall`
|
||
Collecting Credits and auto-purchasing
|
||
Will buy items in order following `buy_first` list, buy other items from left to right ignoring items in `blacklist`, and buy other items from left to right ignoring the `blacklist` while credit overflows.
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"shopping": bool, // Whether to buy items from the store, optional, by default false. Editing in run-time is not supported.
|
||
"buy_first": [ // Items to be purchased with priority, optional. Editing in run-time is not supported.
|
||
string, // Item name, e.g. "招聘许可" (Recruitment Permit), "龙门币" (LMD), etc.
|
||
...
|
||
],
|
||
"blacklist": [ // Blacklist, optional. Editing in run-time is not supported.
|
||
string, // Item name, e.g. "加急许可" (Expedited Plan), "家具零件" (Furniture Part), etc.
|
||
...
|
||
],
|
||
"force_shopping_if_credit_full": bool // Whether to ignore the Blacklist if credit overflows, by default true
|
||
"only_buy_discount": bool // Whether to purchase only discounted items, applicable only on the second round of purchases, by default false.
|
||
"reserve_max_credit": boll // Whether to stop purchasing when credit points fall below 300, applicable only on the second round of purchases, by default false.
|
||
}
|
||
```
|
||
|
||
- `Award`
|
||
Collecting daily awards.
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool // Whether to enable this task, optional, by default true
|
||
}
|
||
```
|
||
|
||
- `Roguelike`
|
||
Integrated Strategies
|
||
|
||
```json
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"theme": string, // Name of the theme, optional, by default "Phantom"
|
||
// Phantom - 傀影与猩红血钻
|
||
// Mizuki - 水月与深蓝之树
|
||
"mode": int, // Mode, optional, by default 0
|
||
// 0 - For candle, plays as much as you can with stable strategy
|
||
// 1 - For Originium Ingots, exits after first level
|
||
// 2 - For both, Plays until invests
|
||
// 3 - For pass, plays as much as you can with aggressive strategy
|
||
"starts_count": int, // Number of starts, optional, by default INT_MAX
|
||
"investment_enabled": bool, // by default true
|
||
|
||
"investments_count": int,
|
||
// Number of investments, optional, by default INT_MAX
|
||
"stop_when_investment_full": bool,
|
||
// Stop the task when investment is full, optional, by default false
|
||
"squad": string, // Squad name like "assault squad", optional, by default "Default Squad"
|
||
"roles": string, // Roles, optional
|
||
"core_char": string, // Operator name, optional. Will recognize auto-selection of levels.
|
||
"use_support": bool, // Whether "core_char" is a support unit, optional, by default false
|
||
"use_nonfriend_support": bool, // Whether support unit can be non-friend support unit, optional, by default false, valid when use_support=true
|
||
"refresh_trader_with_dice": bool // Whether refresh trader with dice to buy special item, optional, by default false
|
||
}
|
||
```
|
||
|
||
- `Copilot`
|
||
Copilot auto-combat feature
|
||
|
||
```json
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"filename": string, // Filename and path of the task JSON, supporting absolute/relative paths. Editing in run-time is not supported.
|
||
"formation": bool // Whether to "quick build", optional, by default false. Editing in run-time is not supported.
|
||
}
|
||
```
|
||
|
||
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
|
||
|
||
- `SSSCopilot`
|
||
Copilot auto-combat feature for STATIONARY SECURITY SERVICE
|
||
|
||
```json
|
||
{
|
||
"enable": bool, // Whether to enable this task, optional, by default true
|
||
"filename": string, // Filename and path of the task JSON, supporting absolute/relative paths. Editing in run-time is not supported.
|
||
"loop_times": int
|
||
}
|
||
```
|
||
|
||
For more details about auto-copilot JSON, please refer to [Copilot Schema](./copilot-schema.md)
|
||
|
||
- `Depot`
|
||
Depot recognition
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool // Whether to enable this task, optional, by default true
|
||
}
|
||
```
|
||
|
||
- `OperBox`
|
||
Operator box recognition
|
||
|
||
```json
|
||
// Corresponding task parameters
|
||
{
|
||
"enable": bool // Whether to enable this task, optional, by default true
|
||
}
|
||
```
|
||
|
||
- `ReclamationAlgorithm`
|
||
ReclamationAlgorithm ( A new mode in CN client)
|
||
|
||
```json
|
||
{
|
||
"enable": bool,
|
||
"theme": int, // Theme, optional, 1 by default
|
||
// 0 - *Fire Within the Sand*
|
||
// 1 - *Tales Within the Sand*
|
||
"mode": int, // Mode, optional, 0 by default
|
||
// 0 - Farm badges & construction pts (exiting the stage immediately)
|
||
// 1 - Fire Within the Sand: Farm Crude Gold (forging Gold at headquarter after purchasing water)
|
||
// Tales Within the Sand: Automatically craft items and load to earn currency
|
||
"product": string // Automatically crafted items, optional, glow stick by default
|
||
// Suggested fill in the substring
|
||
}
|
||
```
|
||
|
||
- `Custom`
|
||
Custom Task
|
||
|
||
```json
|
||
{
|
||
"enable": bool,
|
||
"task_names": [ // Execute the task on the first match in the array (and subsequent next, etc.)
|
||
// If you want to perform multiple tasks, you can append Custom task multiple times
|
||
string,
|
||
...
|
||
]
|
||
}
|
||
```
|
||
|
||
- `SingleStep`
|
||
Single-step task (currently only supports copilot)
|
||
|
||
```json
|
||
{
|
||
"enable": bool,
|
||
"type": string, // currently only supports "copilot"
|
||
"subtask": string, // "stage" | "start" | "action"
|
||
// "stage" to set stage name, eg: "details": { "stage": "xxxx" }
|
||
// "start" to start mission, without details
|
||
// "action": single battle action, details is single action in Copilot,
|
||
// eg: "details": { "name": "史尔特尔", "location": [ 4, 5 ], "direction": "左" },详情参考 3.3-战斗流程协议.md
|
||
"details": {
|
||
...
|
||
}
|
||
}
|
||
```
|
||
|
||
- `VideoRecognition`
|
||
Video recognition, currently only supports operation (combat) video
|
||
|
||
```json
|
||
{
|
||
"enable": bool,
|
||
"filename": string,
|
||
}
|
||
```
|
||
|
||
### `AsstSetTaskParams`
|
||
|
||
#### Prototype
|
||
|
||
```cpp
|
||
bool ASSTAPI AsstSetTaskParams(AsstHandle handle, TaskId id, const char* params);
|
||
```
|
||
|
||
#### Description
|
||
|
||
Set task parameters
|
||
|
||
#### Return Value
|
||
|
||
- `bool`
|
||
Whether the parameters are successfully set.
|
||
|
||
#### Parameter Description
|
||
|
||
- `AsstHandle handle`
|
||
Instance handle
|
||
- `TaskId task`
|
||
Task ID, the return value of `AsstAppendTask`
|
||
- `const char* params`
|
||
Task parameter in JSON, same as `AsstAppendTask`
|
||
For those fields that do not mention "Editing in run-time is not supported" can be changed during run-time. Otherwise these changes will be ignored when the task is running.
|
||
|
||
### `AsstSetStaticOption`
|
||
|
||
#### Prototype
|
||
|
||
```cpp
|
||
bool ASSTAPI AsstSetStaticOption(AsstStaticOptionKey key, const char* value);
|
||
```
|
||
|
||
#### Description
|
||
|
||
Set process-level parameters
|
||
|
||
#### Return Value
|
||
|
||
- `bool`
|
||
Is the setup successful
|
||
|
||
#### Parameter Description
|
||
|
||
- `AsstStaticOptionKey key`
|
||
key
|
||
- `const char* value`
|
||
value
|
||
|
||
##### List of Key and value
|
||
|
||
None
|
||
|
||
### `AsstSetInstanceOption`
|
||
|
||
#### Prototype
|
||
|
||
```cpp
|
||
bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, const char* value);
|
||
```
|
||
|
||
#### Description
|
||
|
||
Set instance-level parameters
|
||
|
||
#### Return Value
|
||
|
||
- `bool`
|
||
Is the setup successful
|
||
|
||
#### Parameter Description
|
||
|
||
- `AsstHandle handle`
|
||
handle
|
||
- `AsstInstanceOptionKey key`
|
||
key
|
||
- `const char* value`
|
||
value
|
||
|
||
##### List of Key and value
|
||
|
||
```cpp
|
||
enum InstanceOptionKey
|
||
{
|
||
Invalid = 0,
|
||
// Deprecated // MinitouchEnabled = 1, // Is minitouch enabled
|
||
// If you can't use minitouch, it's useless to turn it on.
|
||
// "1" - on, "0" - off
|
||
TouchMode = 2, // Touch mode, minitouch by default
|
||
// minitouch | maatouch | adb
|
||
DeploymentWithPause = 3, // Deployment with Pause (Works for IS, Copilot and 保全派驻)
|
||
// "1" | "0"
|
||
AdbLiteEnabled = 4, // Enable AdbLite or not, "0" | "1"
|
||
KillAdbOnExit = 5, // Release Adb on exit, "0" | "1"
|
||
};
|
||
```
|