Back to Maaassistantarknights

Base Scheduling Protocol

docs/en-us/protocol/base-scheduling-schema.md

6.9.27.7 KB
Original Source

Base Scheduling Protocol

Usage and field descriptions for resource/custom_infrast/*.json

::: tip Please note that JSON files do not support comments. The comments in this document are for demonstration purposes only. Do not copy them directly into your JSON files. :::

Visual Schedule Generator Tool

Complete Field Reference

json
{
    "title": "小号的换班方案", // Task name, optional ("小号的换班方案" = "Alt Account Shift Plan")
    "description": "哈哈哈哈", // Task description, optional ("哈哈哈哈" = "Hahaha")
    "plans": [
        {
            "name": "早班", // Plan name, optional ("早班" = "Morning Shift")
            "description": "lol", // Plan description, optional
            "description_post": "", // Description displayed after plan execution, optional
            "period": [
                // Shift time period, optional
                // If current time is within this range, this plan will be automatically selected (JSON file may contain multiple plans)
                // If this field doesn't exist, automatically switches to the next plan after each shift ends
                // Core doesn't process this field; if you're using MAA through integration, implement this logic yourself
                [
                    "22:00", // Format required: hh:mm, currently just compares number sizes, for cross-day periods follow this example
                    "23:59"
                ],
                [
                    "00:00",
                    "06:00"
                ]
            ],
            "duration": 360, // Work duration (minutes), reserved field, currently not used. May be used for shift change reminders in the future
            "Fiammetta": {
                // Which operator to use "Fiammetta" on, optional, omit if not using
                "enable": true, // Whether to use "Fiammetta", optional, default true
                "target": "巫恋", // Target operator, uses OCR, requires operator name in client language ("巫恋" = "Shamare")
                "order": "pre" // Use before entire shift change or after, optional, values "pre"/"post", default "pre"
            },
            "drones": {
                // Drone usage, optional, omit if not using drones
                "enable": true, // Whether to use drones, optional, default true
                "room": "trading", // Which room type to use drones on, values "trading"/"manufacture"
                "index": 1, // Which instance of that room type to use drones on, corresponds to left tab number, range [1, 5]
                "rule": "all", // Usage rule, reserved field, currently not used. May support plug/unplug operations in future
                "order": "pre" // Use before operator changes or after, optional, values "pre"/"post", default "pre"
            },
            "groups": [
                // For "control"/"manufacture"/"trading", you can set operator groups
                {
                    "name": "古+银", // ("古+银" = "Gummy+Silver")
                    "operators": ["古米", "银灰", "梅"] // ("古米" = "Gummy", "银灰" = "SilverAsh", "梅" = "Plum")
                },
                {
                    "name": "清流", // ("清流" = "Purestream")
                    "operators": ["清流", "森蚺", "温蒂"] // ("清流" = "Purestream", "森蚺" = "Eunectes", "温蒂" = "Weedy")
                }
            ],
            "rooms": {
                // Room information, required
                // Values: "control"/"manufacture"/"trading"/"power"/"meeting"/"hire"/"dormitory"/"processing"
                // Missing rooms use default algorithm for shift change.
                // To skip a room, use skip field or uncheck the facility in software Task Settings - Base Management - General Settings
                "control": [
                {
                    "operators": [
                        "夕", // Uses OCR, requires operator name in client language ("夕" = "Dusk")
                        "令", // ("令" = "Ling")
                        "凯尔希", // ("凯尔希" = "Kal'tsit")
                        "阿米娅", // ("阿米娅" = "Amiya")
                        "玛恩纳" // ("玛恩纳" = "Closure")
                    ]
                }
                ],
                "manufacture": [
                {
                    "operators": ["芬", "稀音", "克洛丝"], // ("芬" = "Fang", "稀音" = "Scene", "克洛丝" = "Kroos")
                    "sort": false // Whether to sort (by operators order above), optional, default false
                    // Example: When using Scene, Pallas, Shamare, etc. with "sort": false, operator order may be scrambled, losing warm-up effect.
                    // Using "sort": true can avoid this issue
                },
                {
                    "skip": true // Whether to skip current room (by array index), optional, default false
                    // If true, other fields can be empty. Only skips operator change operation, other actions like drone usage, clue exchange still occur
                },
                {
                    "operators": ["Castle-3"],
                    "autofill": true, // Use original algorithm to auto-fill remaining positions, optional, default false
                    // If operators is empty, room uses original algorithm completely
                    // If operators not empty, considers only single operator efficiency, not combination efficiency
                    // May conflict with custom operators defined later, e.g., using operators needed later, use cautiously or place autofill rooms last
                    "product": "Battle Record" // Current manufacturing product, optional.
                    // If detected facility product doesn't match task setting, UI will show red warning; may have more uses in future
                    // Values: "Battle Record"|"Pure Gold"|"Dualchip"|"Originium Shard"|"LMD"|"Orundum"
                },
                {
                    "operators": ["多萝西"], // ("多萝西" = "Dorothy")
                    "candidates": [
                        // Backup operators, optional. Uses whoever's available until positions filled
                        // Incompatible with autofill=true, i.e., autofill must be false when this array not empty
                        "星源", // ("星源" = "Astgenne")
                        "白面鸮", // ("白面鸮" = "Ptilopsis")
                        "赫默" // ("赫默" = "Silence")
                    ]
                },
                {
                    "use_operator_groups": true, // Set true to use operator groups from groups field, default false
                    "operators": [
                        // When enabled, names in operators are interpreted as group names
                        "古+银", // Will select groups by mood threshold and setting order ("古+银" = "Gummy+Silver")
                        "清流" // If Gummy+Silver group has operators below threshold, will use Purestream group ("清流" = "Purestream")
                    ]
                }
                ],
                "meeting": [
                    {
                        "autofill": true // Completely autofill this room
                    }
                ]
            }
        },
        {
        "name": "晚班" // ("晚班" = "Night Shift")
        // ...
        }
    ]
}

Example

243_layout_3_times_a_day

153_layout_3_times_a_day