From c9160218ac8d4fe35c99f98d0bfa9f964015717b Mon Sep 17 00:00:00 2001 From: wangli <342970955@qq.com> Date: Fri, 3 Feb 2023 09:22:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20=E7=94=9F?= =?UTF-8?q?=E6=81=AF=E6=BC=94=E7=AE=97=20=E5=88=9D=E5=A7=8B=E6=97=A0?= =?UTF-8?q?=E5=B9=B2=E5=91=98=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=9B=86=E6=88=90=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3.1-集成文档.md | 10 ++++ docs/en-us/3.1-INTEGRATION.md | 10 ++++ docs/ja-jp/3.1-統合ドキュメント.md | 8 +++ docs/zh-tw/3.1-集成文件.md | 9 ++++ resource/tasks.json | 51 ++++++++++++++++++ .../template/Reclamation@FormationConfirm.png | Bin 0 -> 6442 bytes .../template/Reclamation@QuickFormation.png | Bin 0 -> 1791 bytes 7 files changed, 88 insertions(+) create mode 100644 resource/template/Reclamation@FormationConfirm.png create mode 100644 resource/template/Reclamation@QuickFormation.png diff --git a/docs/3.1-集成文档.md b/docs/3.1-集成文档.md index 6dd914397b..ed963a8f70 100644 --- a/docs/3.1-集成文档.md +++ b/docs/3.1-集成文档.md @@ -229,6 +229,16 @@ AsstTaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const cha } ``` +- `ReclamationAlgorithm` + + 生息演算 + +```jsonc +{ + "enable": bool +} +``` + ### `AsstSetTaskParams` #### 接口原型 diff --git a/docs/en-us/3.1-INTEGRATION.md b/docs/en-us/3.1-INTEGRATION.md index 0340e875d7..bb855219a9 100644 --- a/docs/en-us/3.1-INTEGRATION.md +++ b/docs/en-us/3.1-INTEGRATION.md @@ -217,6 +217,16 @@ For more details about auto-copilot JSON, please refer to [Copilot Schema](3.3-C } ``` +- `ReclamationAlgorithm` + + ReclamationAlgorithm + +```jsonc +{ + "enable": bool +} +``` + ### `AsstSetTaskParams` #### Prototype diff --git a/docs/ja-jp/3.1-統合ドキュメント.md b/docs/ja-jp/3.1-統合ドキュメント.md index b898f9ae33..423d7f4e66 100644 --- a/docs/ja-jp/3.1-統合ドキュメント.md +++ b/docs/ja-jp/3.1-統合ドキュメント.md @@ -216,6 +216,14 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p } ``` +- `ReclamationAlgorithm` + +```jsonc +{ + "enable": bool +} +``` + ### `AsstSetTaskParams` #### Prototype diff --git a/docs/zh-tw/3.1-集成文件.md b/docs/zh-tw/3.1-集成文件.md index 945e3775ae..b55827a57f 100644 --- a/docs/zh-tw/3.1-集成文件.md +++ b/docs/zh-tw/3.1-集成文件.md @@ -216,6 +216,15 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p } ``` +- `ReclamationAlgorithm` + 生息演算 + +```jsonc +{ + "enable": bool +} +``` + ### `AsstSetTaskParams` #### 介面原型 diff --git a/resource/tasks.json b/resource/tasks.json index 02c07fa549..8f286f94e6 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -9895,11 +9895,62 @@ "action": "ClickSelf", "postDelay": 500, "next": [ + "Reclamation@EmptyInitUnits", "Reclamation@InitSupplyAll", "Reclamation@ClickChooseInitUnits", "Reclamation@ReturnTo" ] }, + "Reclamation@EmptyInitUnits":{ + "algorithm": "OcrDetect", + "roi": [ + 592, 595, 336, 125 + ], + "text": [ + "请选择", "参加", "演算" + ], + "next": [ + "Reclamation@QuickFormation", + "Reclamation@QuickFormationSelectOneUnit" + ] + }, + "Reclamation@QuickFormation":{ + "roi": [ + 958, 0, 175, 144 + ], + "action": "ClickSelf", + "next": [ + "Reclamation@QuickFormationSelectOneUnit", + "Reclamation@QuickFormation" + ] + }, + "Reclamation@FormationConfirmBase":{ + "template": "Reclamation@FormationConfirm.png", + "roi": [ + 862, 604, 358, 116 + ] + }, + "Reclamation@QuickFormationSelectOneUnit":{ + "baseTask": "Reclamation@FormationConfirmBase", + "template": "Reclamation@FormationConfirm.png", + "action": "ClickRect", + "specificRect": [ + 506, 116, 186, 57 + ], + "next": [ + "Reclamation@QuickFormationConfirm" + ] + }, + "Reclamation@QuickFormationConfirm":{ + "baseTask": "Reclamation@FormationConfirmBase", + "template": "Reclamation@FormationConfirm.png", + "action": "ClickSelf", + "next": [ + "Reclamation@EmptyInitUnits", + "Reclamation@InitSupplyAll", + "Reclamation@ConfirmStart" + ] + }, "Reclamation@InitSupplyAll": { "roi": [ 862, diff --git a/resource/template/Reclamation@FormationConfirm.png b/resource/template/Reclamation@FormationConfirm.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a5eecec5c48b97cb90a652d98e52cb3b94f457 GIT binary patch literal 6442 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 Date: Fri, 3 Feb 2023 15:55:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E7=94=9F=E6=81=AF=E6=BC=94=E7=AE=97?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C=E4=B8=8D=E4=BD=B3?= =?UTF-8?q?=E6=97=B6=E9=80=80=E5=87=BA=E8=A1=8C=E5=8A=A8=E6=85=A2=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reclamation/ReclamationBattlePlugin.cpp | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/MaaCore/Task/Reclamation/ReclamationBattlePlugin.cpp b/src/MaaCore/Task/Reclamation/ReclamationBattlePlugin.cpp index 0b1714674a..0114458002 100644 --- a/src/MaaCore/Task/Reclamation/ReclamationBattlePlugin.cpp +++ b/src/MaaCore/Task/Reclamation/ReclamationBattlePlugin.cpp @@ -38,23 +38,37 @@ bool asst::ReclamationBattlePlugin::_run() wait_until_start(false); while (!need_exit()) { + int retry = 0; while (!need_exit()) { - bool stage1 = ProcessTask(*this, { "Reclamation@ClickExitLevel" }).run(); - bool stage2 = ProcessTask(*this, { "Reclamation@ExitLevelConfirm" }).run(); + bool stage1 = ProcessTask(*this, { "Reclamation@ClickExitLevel" }).set_retry_times(0).run(); + bool stage2 = ProcessTask(*this, { "Reclamation@ExitLevelConfirm" }).set_retry_times(3).run(); + Log.info(__FUNCTION__, "| click exit level perform ", stage1, stage2); if (stage2) break; - if (!stage1 && !stage2) { - Log.info(__FUNCTION__, "| fail to operate"); + retry++; // stage1==true&&stage2==false,应该是手动按了确定或是没按到退出 + if ((!stage1 && !stage2) || retry > 5) { + // 已经到了结算界面,或是用户手动操作了 + Log.error(__FUNCTION__, "| fail to operate"); return ProcessTask(*this, { "Reclamation@Begin" }).run(); } } sleep(Task.get("Reclamation@BattleStart")->special_params.front()); + const auto img = ctrler()->get_image(); - bool check1 = check_in_battle(img, false); + bool check1 = check_in_battle(img, false); + OcrImageAnalyzer confirmAnalyzer(img); confirmAnalyzer.set_task_info("Reclamation@ExitLevelConfirm"); bool check2 = confirmAnalyzer.analyze(); - if (!check1 && !check2) break; + + // 出现Loading转一会儿就结算了,没结算还有error_next + OcrImageAnalyzer loadingAnalyzer(img); + loadingAnalyzer.set_task_info("Loading"); + bool check3 = loadingAnalyzer.analyze(); + + Log.info(__FUNCTION__, "| click exit level check ", check1, check2, check3); + + if ((!check1 && !check2) || check3) break; } sleep(Task.get("Reclamation@BattleStart")->special_params.at(1));