diff --git a/src/MeoAssistant/AbstractTask.cpp b/src/MeoAssistant/AbstractTask.cpp
index 75dc30919d..fefe5270f7 100644
--- a/src/MeoAssistant/AbstractTask.cpp
+++ b/src/MeoAssistant/AbstractTask.cpp
@@ -191,10 +191,15 @@ void asst::AbstractTask::click_return_button()
ProcessTask(*this, { "Return" }).run();
}
-void asst::AbstractTask::save_image()
+bool asst::AbstractTask::save_img(const std::string& dirname)
{
+ auto image = m_ctrler->get_image();
+ if (image.empty()) {
+ return false;
+ }
+
std::string stem = utils::get_format_time();
stem = utils::string_replace_all(stem, { { ":", "-" }, { " ", "_" } });
- std::filesystem::create_directory("debug");
- asst::imwrite("debug/" + stem + "_raw.png", m_ctrler->get_image());
+ std::filesystem::create_directories(dirname);
+ return asst::imwrite(dirname + stem + "_raw.png", image);
}
diff --git a/src/MeoAssistant/AbstractTask.h b/src/MeoAssistant/AbstractTask.h
index 0eaaf4c9ff..2d4bd9a983 100644
--- a/src/MeoAssistant/AbstractTask.h
+++ b/src/MeoAssistant/AbstractTask.h
@@ -62,7 +62,7 @@ namespace asst
virtual bool on_run_fails() { return true; }
virtual void callback(AsstMsg msg, const json::value& detail);
virtual void click_return_button();
- void save_image();
+ bool save_img(const std::string& dirname = "debug/");
json::value basic_info_with_what(std::string what) const;
bool sleep(unsigned millisecond);
diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj
index e3e53cc799..45beda22e6 100644
--- a/src/MeoAssistant/MeoAssistant.vcxproj
+++ b/src/MeoAssistant/MeoAssistant.vcxproj
@@ -49,6 +49,7 @@
+
@@ -144,6 +145,7 @@
+
diff --git a/src/MeoAssistant/MeoAssistant.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters
index 569c033b2e..573c7ea269 100644
--- a/src/MeoAssistant/MeoAssistant.vcxproj.filters
+++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters
@@ -411,6 +411,9 @@
头文件\Utils
+
+ 头文件\Task\Plugin\Roguelike
+
@@ -689,6 +692,9 @@
源文件
+
+ 源文件\Task\Plugin\Roguelike
+
diff --git a/src/MeoAssistant/RoguelikeDebugTaskPlugin.cpp b/src/MeoAssistant/RoguelikeDebugTaskPlugin.cpp
new file mode 100644
index 0000000000..608b85d1c7
--- /dev/null
+++ b/src/MeoAssistant/RoguelikeDebugTaskPlugin.cpp
@@ -0,0 +1,27 @@
+#include "RoguelikeDebugTaskPlugin.h"
+
+#include "Controller.h"
+
+bool asst::RoguelikeDebugTaskPlugin::verify(AsstMsg msg, const json::value& details) const
+{
+ if (details.get("subtask", std::string()) != "ProcessTask") {
+ return false;
+ }
+
+ if (msg == AsstMsg::SubTaskError) {
+ return true;
+ }
+
+ std::string task = details.get("details", "task", std::string());
+ if (msg == AsstMsg::SubTaskStart && details.get("subtask", std::string()) == "ProcessTask" &&
+ task == "Roguelike1ExitThenAbandon") {
+ return true;
+ }
+
+ return false;
+}
+
+bool asst::RoguelikeDebugTaskPlugin::_run()
+{
+ return save_img("debug/roguelike/");
+}
diff --git a/src/MeoAssistant/RoguelikeDebugTaskPlugin.h b/src/MeoAssistant/RoguelikeDebugTaskPlugin.h
new file mode 100644
index 0000000000..a19b9fcef6
--- /dev/null
+++ b/src/MeoAssistant/RoguelikeDebugTaskPlugin.h
@@ -0,0 +1,18 @@
+#pragma once
+#include "AbstractTaskPlugin.h"
+
+namespace asst
+{
+ class RoguelikeDebugTaskPlugin : public AbstractTaskPlugin
+ {
+ public:
+ using AbstractTaskPlugin::AbstractTaskPlugin;
+ virtual ~RoguelikeDebugTaskPlugin() override = default;
+
+ public:
+ virtual bool verify(AsstMsg msg, const json::value& details) const override;
+
+ protected:
+ virtual bool _run() override;
+ };
+}
diff --git a/src/MeoAssistant/RoguelikeTask.cpp b/src/MeoAssistant/RoguelikeTask.cpp
index c8f434b330..913689a3a5 100644
--- a/src/MeoAssistant/RoguelikeTask.cpp
+++ b/src/MeoAssistant/RoguelikeTask.cpp
@@ -4,6 +4,7 @@
#include "RoguelikeBattleTaskPlugin.h"
#include "RoguelikeControlTaskPlugin.h"
#include "RoguelikeCustomStartTaskPlugin.h"
+#include "RoguelikeDebugTaskPlugin.h"
#include "RoguelikeFormationTaskPlugin.h"
#include "RoguelikeRecruitTaskPlugin.h"
#include "RoguelikeResetTaskPlugin.h"
@@ -16,21 +17,20 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, void* callback_
: PackageTask(callback, callback_arg, TaskType),
m_roguelike_task_ptr(std::make_shared(callback, callback_arg, TaskType))
{
- m_roguelike_task_ptr->set_tasks({ "Roguelike1Begin" }).set_retry_times(50);
+ m_roguelike_task_ptr->set_tasks({ "Roguelike1Begin" });
m_roguelike_task_ptr->register_plugin();
m_roguelike_task_ptr->register_plugin();
m_roguelike_task_ptr->register_plugin();
+ m_roguelike_task_ptr->register_plugin()->set_retry_times(0);
m_roguelike_task_ptr->register_plugin()->set_retry_times(0);
+
m_custom_start_task_ptr = m_roguelike_task_ptr->register_plugin();
-
m_battle_task_ptr = m_roguelike_task_ptr->register_plugin();
-
m_recruit_task_ptr = m_roguelike_task_ptr->register_plugin();
m_recruit_task_ptr->set_retry_times(2);
-
m_skill_task_ptr = m_roguelike_task_ptr->register_plugin();
- m_skill_task_ptr->set_retry_times(3);
+ m_skill_task_ptr->set_retry_times(2);
// 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用
for (int i = 0; i != 100; ++i) {