From f1cf3d07103952ddaa835e3c79ca76351ac8d0bb Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Sat, 20 Jul 2024 20:29:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20HSVCount=20=E7=9A=84=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 24 ++++++++++++- src/MaaCore/Task/Interface/DebugTask.cpp | 46 ++++++++++++++++++------ 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 809febefc5..98ef2065cf 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -9957,6 +9957,13 @@ }, "Sarkaz@Roguelike@StageBoskyPassageEnter": { "baseTask": "Sarkaz@Roguelike@StageEnter", + "method": "HSVCount", + "maskRange": [ + [ + [137, 150, 40], + [138, 180, 180] + ] + ], "next": [ "Sarkaz@Roguelike@StageBoskyPassageEnter", "Sarkaz@Roguelike@StageEncounterJudgeClick" @@ -10007,7 +10014,15 @@ "Sarkaz@Roguelike@Stages#next" ] }, - "Sarkaz@Roguelike@StageCombatDpsEnter": {}, + "Sarkaz@Roguelike@StageCombatDpsEnter": { + "method": "HSVCount", + "maskRange": [ + [ + [130, 130, 40], + [131, 180, 180] + ] + ] + }, "Sarkaz@Roguelike@StageConfrontation": { "Doc": "狭路相逢", "baseTask": "Sarkaz@Roguelike@Stage", @@ -10255,6 +10270,13 @@ ] }, "Sarkaz@Roguelike@StageSafeHouseEnter": { + "method": "HSVCount", + "maskRange": [ + [ + [106, 100, 50], + [107, 160, 180] + ] + ], "next": [ "Sarkaz@Roguelike@StageSafeHouseEnter", "Sarkaz@Roguelike@StageEncounterJudgeClick" diff --git a/src/MaaCore/Task/Interface/DebugTask.cpp b/src/MaaCore/Task/Interface/DebugTask.cpp index 29247ff956..6fa34b523f 100644 --- a/src/MaaCore/Task/Interface/DebugTask.cpp +++ b/src/MaaCore/Task/Interface/DebugTask.cpp @@ -17,7 +17,7 @@ asst::DebugTask::DebugTask(const AsstCallback& callback, Assistant* inst) : Inte bool asst::DebugTask::run() { - test_drops(); + test_match_template(); return true; } @@ -79,14 +79,40 @@ void asst::DebugTask::test_match_template() cv::Mat image = asst::imread(utils::path("../../test/match_template/1.png")); cv::Mat resized; cv::resize(image, resized, cv::Size(1280, 720), 0, 0, cv::INTER_AREA); - Matcher match_analyzer(resized, Rect(0, 0, 1280, 720)); - const auto& task_ptr = Task.get("Sami@Roguelike@StageEncounterOptionLeave"); - const auto match_task_ptr = std::dynamic_pointer_cast(task_ptr); - match_analyzer.set_task_info(match_task_ptr); - match_analyzer.analyze(); - const auto& result_opt = match_analyzer.analyze(); - if (result_opt) { - const auto& result = result_opt.value().to_string(); - Log.info(__FUNCTION__, result); + + { + Matcher match_analyzer(resized, Rect(0, 0, 1280, 720)); + const auto& task_ptr = Task.get("Sarkaz@Roguelike@StageSafeHouseEnter"); + const auto match_task_ptr = std::dynamic_pointer_cast(task_ptr); + match_analyzer.set_task_info(match_task_ptr); + const auto& result_opt = match_analyzer.analyze(); + if (result_opt) { + const auto& result = result_opt.value().to_string(); + Log.info(__FUNCTION__, result); + } + } + + { + Matcher match_analyzer(resized, Rect(0, 0, 1280, 720)); + const auto& task_ptr = Task.get("Sarkaz@Roguelike@StageBoskyPassageEnter"); + const auto match_task_ptr = std::dynamic_pointer_cast(task_ptr); + match_analyzer.set_task_info(match_task_ptr); + const auto& result_opt = match_analyzer.analyze(); + if (result_opt) { + const auto& result = result_opt.value().to_string(); + Log.info(__FUNCTION__, result); + } + } + + { + Matcher match_analyzer(resized, Rect(0, 0, 1280, 720)); + const auto& task_ptr = Task.get("Sarkaz@Roguelike@StageCombatDpsEnter"); + const auto match_task_ptr = std::dynamic_pointer_cast(task_ptr); + match_analyzer.set_task_info(match_task_ptr); + const auto& result_opt = match_analyzer.analyze(); + if (result_opt) { + const auto& result = result_opt.value().to_string(); + Log.info(__FUNCTION__, result); + } } }