From f07d3eb845ee54d7c027a804db8a3dc24a579d5f Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Tue, 29 Jul 2025 01:33:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A0=E6=B3=95=E9=80=89=E4=B8=AD=20`?= =?UTF-8?q?=E5=9D=9A=E4=B8=8D=E5=8F=AF=E6=91=A7`=20=E4=B8=8E=20`=E9=9A=8F?= =?UTF-8?q?=E5=BF=83=E6=89=80=E6=AC=B2`=20=E5=88=86=E9=98=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks/Roguelike/base.json | 5 +-- .../RoguelikeCustomStartTaskPlugin.cpp | 35 +++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/resource/tasks/Roguelike/base.json b/resource/tasks/Roguelike/base.json index fbf3cea6c6..5837841ebc 100644 --- a/resource/tasks/Roguelike/base.json +++ b/resource/tasks/Roguelike/base.json @@ -60,13 +60,14 @@ "RoguelikeCustom-HijackRoles": { "algorithm": "OcrDetect", "text": [], - "roi": [54, 356, 1172, 183] + "roi": [54, 356, 1172, 183], + "postDelay": 1000 }, "RoguelikeCustom-HijackSquad": { "algorithm": "OcrDetect", "text": [], "roi": [0, 383, 1280, 142], - "postDelay": 800, + "postDelay": 1000, "ocrReplace": [["蓝图测绘分.*", "蓝图测绘分队"]] }, "RoguelikeFoldartalSlowlySwipeToTheUp": { diff --git a/src/MaaCore/Task/Roguelike/RoguelikeCustomStartTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeCustomStartTaskPlugin.cpp index 4458faf4cf..684e328bc6 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeCustomStartTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeCustomStartTaskPlugin.cpp @@ -134,7 +134,7 @@ bool asst::RoguelikeCustomStartTaskPlugin::hijack_squad() .run(); } - constexpr size_t SwipeTimes = 7; + constexpr size_t SwipeTimes = 2; for (size_t i = 0; i != SwipeTimes; ++i) { if (need_exit()) { return false; @@ -190,19 +190,34 @@ bool asst::RoguelikeCustomStartTaskPlugin::hijack_reward() bool asst::RoguelikeCustomStartTaskPlugin::hijack_roles() { - auto image = ctrler()->get_image(); - OCRer analyzer(image); - analyzer.set_task_info("RoguelikeCustom-HijackRoles"); - analyzer.set_required({ m_customs[RoguelikeCustomType::Roles] }); + constexpr size_t SwipeTimes = 2; + const std::string& required_role = m_customs[RoguelikeCustomType::Roles]; - if (!analyzer.analyze()) { - return false; + for (size_t i = 0; i != SwipeTimes; ++i) { + if (need_exit()) { + return false; + } + + auto image = ctrler()->get_image(); + OCRer analyzer(image); + analyzer.set_task_info("RoguelikeCustom-HijackRoles"); + analyzer.set_required({ required_role }); + + if (analyzer.analyze()) { + const auto& rect = analyzer.get_result().front().rect; + ctrler()->click(rect); + return true; + } + + ProcessTask(*this, { "Roguelike@SquadSlowlySwipeToTheRight" }).run(); + sleep(Task.get("RoguelikeCustom-HijackRoles")->post_delay); } - const auto& rect = analyzer.get_result().front().rect; - ctrler()->click(rect); - return true; + + ProcessTask(*this, { "SwipeToTheLeft" }).run(); + return false; } + bool asst::RoguelikeCustomStartTaskPlugin::hijack_core_char() { static const std::unordered_map RoleOcrNameMap = {