From a84e87f5e76ce7befac1bca81d1f6f306d2e1b59 Mon Sep 17 00:00:00 2001 From: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com> Date: Fri, 14 Nov 2025 12:16:41 +1100 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=99=20open=5Fseries=5Flist=20?= =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=A4=B1=E8=B4=A5=E6=88=AA=E5=9B=BE=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=20(#14693)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks/tasks.json | 1 + .../Task/Fight/FightTimesTaskPlugin.cpp | 27 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/resource/tasks/tasks.json b/resource/tasks/tasks.json index 46a5526748..08b49204e6 100644 --- a/resource/tasks/tasks.json +++ b/resource/tasks/tasks.json @@ -1383,6 +1383,7 @@ "baseTask": "FightSeries-Icon", "template": "FightSeries-Icon.png", "action": "ClickSelf", + "rectMove": [0, 0, 0, 0], "sub": ["FightSeries-Opened"], "next": ["Stop"] }, diff --git a/src/MaaCore/Task/Fight/FightTimesTaskPlugin.cpp b/src/MaaCore/Task/Fight/FightTimesTaskPlugin.cpp index be66faadf3..8bfff2ad93 100644 --- a/src/MaaCore/Task/Fight/FightTimesTaskPlugin.cpp +++ b/src/MaaCore/Task/Fight/FightTimesTaskPlugin.cpp @@ -3,6 +3,7 @@ #include "Config/GeneralConfig.h" #include "Config/TaskData.h" #include "Controller/Controller.h" +#include "MaaUtils/ImageIo.h" #include "MaaUtils/NoWarningCV.hpp" #include "Task/ProcessTask.h" #include "Vision/Matcher.h" @@ -119,7 +120,29 @@ bool asst::FightTimesTaskPlugin::_run() bool asst::FightTimesTaskPlugin::open_series_list(const cv::Mat& image) { - return ProcessTask(*this, { "FightSeries-Opened", "FightSeries-Open" }).set_reusable_image(image).run(); + if (!ProcessTask(*this, { "FightSeries-Opened", "FightSeries-Open" }) + .set_reusable_image(image) + .set_retry_times(10) + .run()) { + Log.error(__FUNCTION__, "unable to open series list"); + const auto relative_dir = utils::path("debug") / utils::path("fightSeries"); + + std::filesystem::path relative_path; + + if (!image.empty()) { + relative_path = relative_dir / (std::format("{}_raw.png", MAA_NS::format_now_for_filename())); + Log.info(std::format("Save reusable image to {}", relative_path.string())); + MAA_NS::imwrite(relative_path, image); + } + + relative_path = relative_dir / (std::format("{}_raw.png", MAA_NS::format_now_for_filename())); + Log.info(std::format("Save current screenshot to {}", relative_path.string())); + MAA_NS::imwrite(relative_path, ctrler()->get_image()); + + return false; + } + + return true; } void asst::FightTimesTaskPlugin::close_series_list(const cv::Mat& image) @@ -157,7 +180,6 @@ std::optional asst::FightTimesTaskPlugin::change_series(int sanity_current, std::optional asst::FightTimesTaskPlugin::select_series(bool available_only) { if (!open_series_list()) { - Log.error(__FUNCTION__, "unable to open series list"); return std::nullopt; } int fight_times_remain = std::min(m_fight_times_max - m_fight_times, 6); @@ -187,7 +209,6 @@ std::optional asst::FightTimesTaskPlugin::select_series(bool available_only bool asst::FightTimesTaskPlugin::select_series(int times) { if (!open_series_list()) { - Log.error(__FUNCTION__, "unable to open series list"); return false; }