自動戦闘プロトコル
1740字程度約6分
resource/copilot/*.json の使用方法とフィールドの説明。
ヒント
JSONファイルはコメントをサポートしておらず、テキスト内のコメントはデモンストレーションのみを目的としており、直接コピーしないでください
Overview
{
"stage_name": "暴君", // ステージ名、必須。CN版のステージ名、コード、ステージID、レベルID、他。これらは全てサポート範囲です、一意であることが保証されている限り。
"opers": [ // オペーレーターリスト
{
"name": "ソーンズ", // オペーレーター名
"role": "guard", // オペーレーターの職業。オプション、同名オペーレーターの区別に使用。英語の職業名を記入、大文字小文字は不問
"skill": 3, // スキルID と範囲 [0, 3], オプション, 0 がデフォルト
"skill_usage": 0, // スキルの使用, オプション, デフォルトは 0
// 0 - `パッシブ`
// 1 - 準備次第使用 (例 ソーンズ: デストレッツァ, テンニンカ: 支援指令β)
// 2 - X回使用(例えば、マウンテン スキル2は1回、チョンユエ スキル3は5回、"skill_times" フィールドで設定)
// 3 - 自動判定 (未実装)
// 自動発動のスキルであれば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": "一般群体ヒーラー", // グループ名、必須
// `name` フィールドと `deploy` が一致していればどのような名前でも構いません
"opers": [ // ランダムに選ばれるオペレーター、 `opers` フィールドと同様。レベルの高いオペレータほど優先されます。
{
"name": "ナイチンゲール",
"skill": 3,
"skill_usage": 2 // スキルのCDは異なる場合があり、注意してください
},
{
"name": "フィリオプシス",
"skill": 2,
"skill_usage": 2
}
]
}
],
"actions": [ // 順番に行動、必須. 順次実行されます
{
"type": "Deploy", // 行動タイプ、オプション、デフォルトは "Deploy"
// "Deploy" | "Skill" | "Retreat" | "SpeedUp" | "BulletTime" | "SkillUsage" | "Output" | "SkillDaemon" | "MoveCamera" | "ResetStopwatch" | "Click" | "Swipe" | "SetUnitLocation"
// "部署" | "技能" | "撤退" | "二倍速" | "子弹时间" | "技能用法" | "打印" | "摆完挂机" | "移动镜头" | "重置全局计时器" | "点击" | "滑动" | "设置单位坐标"
// 英語と中国語のみサポート
// "Deploy" はコストが補充されるまで待つ(タイムアウトしない限り)
// "Skill" はスキルの準備ができるまで待つ(タイムアウトしない限り)
// "SpeedUp" は切替式、例 使用後は2倍速になり、再度使用すると通常速度に戻ります
// "BulletTime" 予約フィールド、未実装、任意のオペレータをクリックした後の1/5の速度です。他の操作を進めると通常の速度に戻ります
// "Output" は、ドキュメントの内容をプリントアウト(字幕などのため)
// "SkillDaemon" は、スキルの準備ができるとスキルを使用し、終了まで何もしない
// "MoveCamera" は 「導灯の試練」 モードで使用され、distanceフィールドにも入力する必要があります
// "ResetStopwatch" — グローバルタイマーをリセットします。 「elapsed_time」 条件を参照してください。
// "Click" は "rect" で指定したピクセル領域、または "location" で指定した戦場マスを認識なしで直接クリックします。空きマスもクリック可能です
// "rect" と "location" はどちらか一方を必ず指定してください。両方未指定の場合は解析エラーとなり、ジョブの読み込みに失敗します。両方指定した場合は "rect" が優先されます(ログに警告が出力されます)
// "Swipe" は "begin" 矩形から "end" 矩形へスワイプします。下位レベルのスワイプ命令を直接送信します。どちらかが欠けている場合はジョブの読み込みに失敗します
// "SetUnitLocation" は戦場ユニットのマス座標を設定します:"name" と "location" は両方必須で、どちらかが欠けている場合や値が不正な場合("name" は空でない文字列、"location" は [x, y] の 2 要素数値配列である必要あり)はジョブの読み込みに失敗します
// ゲームには一切操作を行わず、MAA 内部のユニット位置の記録のみを更新します
// オペレーターの移動後に位置を修正し、以降 "name" 指定の "Skill" / "Retreat" / "SkillUsage" アクションを新しいマスに反映させるために使用します
// フィールド上の装置・設備などのユニットを登録するためにも使用でき、"SkillUsage" や "SkillDaemon" と組み合わせて装置スキルの自動使用が可能です
// その "name" が既にフィールド上にいる場合は位置を更新し、いない場合は新しいユニットとして登録します("role" はオプション、デフォルトでは職業を区別しません)
// 以下の5つのフィールドの関係は AND, 例 &&
"kills": 0, // 必要なキル数に達するまで待機、オプション、デフォルトは 0
"costs": 50, // コスト条件を満たすまで待ちます。 省略可能で、デフォルトは 0 で、実行は直接です
// コストは、潜在やその他の要因により完全に正しいとは限らない場合があり、厳密なタイムライン要件がない戦闘にのみ適しています。
// それ以外の場合は、以下の cost_changes を使用します
// また、コストが2桁の数字の場合のみ識別する方が正確であり、3桁のコストは誤認識される可能性があるため、お勧めできません
"cost_changes": 5, // 指定された量のコストが変更されるまで待機, オプション, デフォルトは 0
// アクションが始まってから計算することに注意(直前のアクションのコストに基づく)
// 負の数のサポート、つまりコストが削減されます(例: “ジェイ”やその他のコスト吸収オペレーターはコストを低くします)
// コストが2桁の場合、正確に認識されます。3桁のコストでは推奨しません。
"cooling": 2, // オペレーターの CD が指定数になるまで待つ, オプション, "ignore" の場合デフォルトは -1.
"elapsed_time": 1000, // ミリ秒単位のグローバルタイマー条件。指定時間に達していない場合は待機し続けます。省略可能で、デフォルトは 0(すぐに実行)。
// 注意:この時間は直前の type:ResetStopwatch アクションの実行時点から計測されます。
// 使用する前に必ず type:ResetStopwatch アクションでタイマーをリセットしておく必要があります。そうしないと動作が停止します。
// TODO: Other conditions
// TODO: "condition_type": 0, // 条件集約型, オプション, デフォルトは 0
// // 0 - AND; 1 - OR
"name": "ソーンズ", // オペレーター/グループ名, `type` が "Deploy" の場合必須, "Skill" か "Retreat" の場合はオプション, "SetUnitLocation" の場合必須
"role": "guard", // オペレーターの職業。オプション、同名オペレーターの区別に使用。英語の職業名を記入、大文字小文字は不問
"location": [ 5, 5 ], // 配置位置
// `type` が "Deploy" の場合必須.
// type が "Click" の場合は "rect" とどちらか一方を必ず指定。このマスを直接クリックします。座標は [0, 0] を含む任意の有効なマスを指定できます
// `type` が "Skill" か "Retreat" の場合はオプション,
// "Skill": マップ内設備(灯台など)の使用での推奨, name ではなく location を指定してスキルを使用することを推奨します, 通常のオペレーターがスキルを使用する場合は name を使用するだけにしてください
// "Retreat": 複数の召喚ユニットがいる場合のみ推奨, name ではなく location で退却, 通常のオペレーターは単純に name で退却してください
// type が "Skill" / "Retreat" / "SkillUsage" の際, name と location を両方指定した場合は location が優先されます
// type が "SetUnitLocation" の場合は必須. その "name" ユニットの位置をこのマスに設定します. 座標は [0, 0] を含む任意の有効なマスを指定できます
"rect": [ 100, 100, 50, 50 ],
// type が "Click" の場合は "location" とどちらか一方を必ず指定。両方指定した場合は "rect" が優先されます。720p 基準のピクセル矩形 [x, y, w, h] です
// クリック位置は矩形内でランダムに選ばれ、現在の解像度に合わせて自動的にスケーリングされます
"direction": "Left", // 配置方向, `type` が "Deploy" の場合必須
// "Left" | "Right" | "Up" | "Down" | "None"
// "左" | "右" | "上" | "下" | "无"
// 英語と中国語のみサポート
// "skip_if_not_ready": false, 非推奨です。代わりに 「timeout」 : 0 を使用してください。
"skill_usage": 1, // スキルの使用方法を上書き, `type` が "SkillUsage" の場合必須
// 例: テンニンカは設置時にスキルを使わず攻撃し、後で自動的にスキルを使う必要があります.
// 上記例の場合 1 に設定してください
"skill_times": 5, // スキル使用回数。オプション、デフォルトは1
"pre_delay": 0, // 事前遅延 ms(ミリ秒), オプション, デフォルトは 0
"post_delay": 0, // 事後遅延 ms(ミリ秒), オプション, デフォルトは 0
"timeout": 999999999, // タイムアウト時間 ms(ミリ秒), `type` が "Skill" の場合オプション, デフォルトは -1, 制限なし
// 条件と pre_delay の完了後にタイマー開始, タイムアウト時に次のアクションを実行する; 0 の場合は 1 回のみ確認
"distance": [4.5, 0], // type が "move camera" の場合が必要です
// [ x 移動ブロック数, y 移動ブロック数 ]、小数点数にすることができます
// 注意 "move camera" では、フィールドに立っていることは認識されず、移動アニメーション全体をsleepで完全にカバーする必要があります
"keep_kills": false, // カメラ移動時にキル数をリセットしないか。オプション、デフォルトは false。true の場合、現在の波の終了を待たずキル数もリセットされず、同じ波の中でカメラを移動する場合に使用します
"begin": [ 100, 100, 50, 50 ],
// type が "Swipe" の場合必須。スワイプの始点矩形。720p 基準のピクセル矩形 [x, y, w, h] で、始点は矩形内でランダムに選ばれ、現在の解像度に合わせて自動的にスケーリングされます
"end": [ 400, 400, 50, 50 ],
// type が "Swipe" の場合必須。スワイプの終点矩形。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 の先頭 4 要素と
// 同じ値の意味を持ち、対照できます。high_resolution_swipe_fix は tasks.json の独立タスクフィールド
// highResolutionSwipeFix に対応します。with_pause は本スキーマ独自のパラメータで、tasks.json には対応
// フィールドがありません(スワイプ時に一時停止を伴うかはグローバル設定で決まり、タスク単位では指定できません)
"doc": "ソーンズ使え!", // 説明文、オプション、UIの表示のみで効果はありません
"doc_color": "orange" // 説明文の色、オプション、UIの表示のみで効果はありません
},
// 例 1
{
"name": "一般群体ヒーラー",
"location": [ 5, 6 ],
"direction": "Right"
},
// 例 2
{
"name": "スルト",
"location": [ 4, 5 ],
"direction": "Left",
"doc": "スルト来た!",
"doc_color": "red"
},
// 例 3
{
"type": "SpeedUp"
}
],
"minimum_required": "v4.0", // 最低要求の MAA バージョン、必須、予約フィールド、未実装
"doc": { // 説明文、オプション
"title": "低レベル高成功率タスク",
"title_color": "dark",
"details": "レベル要求低い〇〇〇…", // 個々に名前や、動画へのリンク、攻略へのリンクなどお書きください。
"details_color": "dark"
},
"difficulty": 0 // タスクの難易度。オプション。デフォルト値は 0。
// 0: デフォルト、未設定
// 1: 通常の難易度をサポート
// 2: レイド難易度をサポート
// 3: 通常の難易度とレイド難易度をサポート
}