diff --git a/docs/en-us/protocol/integration.md b/docs/en-us/protocol/integration.md index 03a5eb6bb6..0cb4f43d29 100644 --- a/docs/en-us/protocol/integration.md +++ b/docs/en-us/protocol/integration.md @@ -1160,4 +1160,7 @@ Whether to enable AdbLite or not. Options: "0" | "1". Enum value: 4. ::: field name="KillAdbOnExit" type="boolean" optional Release Adb on exit. Options: "0" | "1". Enum value: 5. ::: +::: field name="ClientType" type="string" optional +Client channel. Most connection configs do not need this option. Set it before `AsstConnect` / `AsstAsyncConnect` only when the selected `config` uses `[PackageName]` in commands executed during connect. In the built-in configs, only `Androws` and `WSA` currently require it for `displayId` lookup. This does not replace the `client_type` task parameter used by StartUp / CloseDown tasks. Enum value: 6. +::: :::: diff --git a/docs/ja-jp/protocol/integration.md b/docs/ja-jp/protocol/integration.md index 28821127f0..4ed6f3fd67 100644 --- a/docs/ja-jp/protocol/integration.md +++ b/docs/ja-jp/protocol/integration.md @@ -1159,4 +1159,7 @@ AdbLite を使用するかどうか。可能な値:"0" または "1"。列挙 ::: field name="KillAdbOnExit" type="boolean" optional 終了時に Adb プロセスをキルするかどうか。可能な値:"0" または "1"。列挙値:5。 ::: +::: field name="ClientType" type="string" optional +クライアント種別(ゲームチャネル)。ほとんどの接続設定では不要です。`AsstConnect` / `AsstAsyncConnect` に渡す `config` が、接続時に実行するコマンド内で `[PackageName]` を使用する場合にのみ、接続前に `AsstSetInstanceOption(..., ClientType, ...)` を設定してください。現在の組み込み設定では、`Androws` と `WSA` の `displayId` 取得のみがこの値に依存します。このオプションは StartUp / CloseDown などのタスクパラメータ `client_type` を置き換えるものではありません。列挙値:6。 +::: :::: diff --git a/docs/ko-kr/protocol/integration.md b/docs/ko-kr/protocol/integration.md index 89bee9bae7..f0830f17f7 100644 --- a/docs/ko-kr/protocol/integration.md +++ b/docs/ko-kr/protocol/integration.md @@ -1148,4 +1148,7 @@ AdbLite 사용 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 4 ::: field name="KillAdbOnExit" type="boolean" optional 종료 시 ADB 프로세스 종료 여부. 옵션: "0" 끄기, "1" 켜기. 열거값: 5 ::: +::: field name="ClientType" type="string" optional +클라이언트 종류(게임 채널). 대부분의 연결 설정에서는 필요하지 않습니다. `AsstConnect` / `AsstAsyncConnect` 에 전달하는 `config` 가 연결 단계에서 실행되는 명령에 `[PackageName]` 을 사용할 때만, 연결 전에 `AsstSetInstanceOption(..., ClientType, ...)` 를 호출해 설정해야 합니다. 현재 내장 설정 중에서는 `Androws` 와 `WSA` 의 `displayId` 조회만 이 값에 의존합니다. 이 옵션은 StartUp / CloseDown 등의 작업 파라미터 `client_type` 를 대체하지 않습니다. 열거값: 6 +::: :::: diff --git a/docs/zh-cn/protocol/integration.md b/docs/zh-cn/protocol/integration.md index 46cc04f8da..ade7f3ecd3 100644 --- a/docs/zh-cn/protocol/integration.md +++ b/docs/zh-cn/protocol/integration.md @@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, ::: field name="KillAdbOnExit" type="boolean" optional 退出时是否杀掉 Adb 进程。可用值:"0" 或 "1"。枚举值:5。 ::: +::: field name="ClientType" type="string" optional +客户端类型(游戏渠道)。大多数连接配置不需要设置。仅当传给 `AsstConnect` / `AsstAsyncConnect` 的 `config` 在连接阶段命令里使用 `[PackageName]` 时,才需要在连接前调用 `AsstSetInstanceOption(..., ClientType, ...)`。当前内置配置仅 `Androws` 和 `WSA` 的 `displayId` 查询依赖该值。该选项不替代 StartUp / CloseDown 等任务参数里的 `client_type`。枚举值:6。 +::: :::: diff --git a/docs/zh-tw/protocol/integration.md b/docs/zh-tw/protocol/integration.md index c95ce09163..8914f85c11 100644 --- a/docs/zh-tw/protocol/integration.md +++ b/docs/zh-tw/protocol/integration.md @@ -1159,4 +1159,7 @@ bool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, ::: field name="KillAdbOnExit" type="boolean" optional 退出時是否結束 ADB。可用值:"0" 或 "1"。列舉值:5。 ::: +::: field name="ClientType" type="string" optional +客戶端類型(遊戲渠道)。大多數連線設定不需要設定。僅當傳給 `AsstConnect` / `AsstAsyncConnect` 的 `config` 在連線階段命令中使用 `[PackageName]` 時,才需要在連線前呼叫 `AsstSetInstanceOption(..., ClientType, ...)`。目前內建設定中僅 `Androws` 與 `WSA` 的 `displayId` 查詢依賴該值。此選項不取代 StartUp / CloseDown 等任務參數中的 `client_type`。列舉值:6。 +::: :::: diff --git a/include/AsstCaller.h b/include/AsstCaller.h index 76bd48528a..8abee2ac92 100644 --- a/include/AsstCaller.h +++ b/include/AsstCaller.h @@ -61,6 +61,9 @@ extern "C" AsstHandle ASSTAPI AsstCreateEx(AsstApiCallback callback, void* custom_arg); void ASSTAPI AsstDestroy(AsstHandle handle); + // 设置实例级参数。 + // InstanceOptionKey::ClientType 仅在所选连接配置的 connect 阶段命令依赖 [PackageName] 时需要预先设置; + // 当前内置配置中仅 Androws / WSA 的 displayId 查询依赖该值。 AsstBool ASSTAPI AsstSetInstanceOption(AsstHandle handle, AsstInstanceOptionKey key, const char* value); diff --git a/src/MaaCore/Common/AsstTypes.h b/src/MaaCore/Common/AsstTypes.h index 538c20d72b..e205b80359 100644 --- a/src/MaaCore/Common/AsstTypes.h +++ b/src/MaaCore/Common/AsstTypes.h @@ -46,7 +46,8 @@ enum class InstanceOptionKey DeploymentWithPause = 3, // 自动战斗、肉鸽、保全 是否使用 暂停下干员, "0" | "1" AdbLiteEnabled = 4, // 是否使用 AdbLite, "0" | "1" KillAdbOnExit = 5, // 退出时是否杀掉 Adb 进程, "0" | "1" - ClientType = 6, // 客户端类型(游戏渠道),用于连接时解析 PackageName + ClientType = 6, // 客户端类型(游戏渠道)。仅当连接配置在 connect 阶段需要 [PackageName] 时使用, + // 当前内置配置为 Androws / WSA;不替代 StartUpTask 的 client_type 参数。 }; enum class TouchMode diff --git a/src/MaaCore/Controller/AdbController.cpp b/src/MaaCore/Controller/AdbController.cpp index 7fd0096118..db432bfe8b 100644 --- a/src/MaaCore/Controller/AdbController.cpp +++ b/src/MaaCore/Controller/AdbController.cpp @@ -1026,8 +1026,10 @@ bool asst::AdbController::connect(const std::string& adb_path, const std::string // 按需获取display ID 信息 if (!adb_cfg.display_id.empty()) { - // [PackageName] 不参与 replace_cmd 的统一替换(保留为运行时参数), - // 此处 displayId 查询是 connect 阶段唯一需要它的场景,就地显式替换。 + // [PackageName] 不参与 replace_cmd 的统一替换(保留为运行时参数)。 + // 只有 connect 阶段命令确实依赖包名的配置,才需要在连接前调用 + // AsstSetInstanceOption(ClientType, ...)。当前内置配置仅 Androws / WSA 的 + // displayId 查询走这里,因此其他连接配置不应被迫传入 client type。 auto display_id_cmd = utils::string_replace_all( m_conn_ctx.replace_cmd(adb_cfg.display_id), "[PackageName]",