mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-17 10:00:44 +08:00
feat: 肉鸽卡住时自动保存截图
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
<ClInclude Include="ReportDataTask.h" />
|
||||
<ClInclude Include="RoguelikeControlTaskPlugin.h" />
|
||||
<ClInclude Include="RoguelikeCustomStartTaskPlugin.h" />
|
||||
<ClInclude Include="RoguelikeDebugTaskPlugin.h" />
|
||||
<ClInclude Include="RoguelikeRecruitConfiger.h" />
|
||||
<ClInclude Include="CopilotTask.h" />
|
||||
<ClInclude Include="DebugTask.h" />
|
||||
@@ -144,6 +145,7 @@
|
||||
<ClCompile Include="ReportDataTask.cpp" />
|
||||
<ClCompile Include="RoguelikeControlTaskPlugin.cpp" />
|
||||
<ClCompile Include="RoguelikeCustomStartTaskPlugin.cpp" />
|
||||
<ClCompile Include="RoguelikeDebugTaskPlugin.cpp" />
|
||||
<ClCompile Include="RoguelikeRecruitConfiger.cpp" />
|
||||
<ClCompile Include="CopilotTask.cpp" />
|
||||
<ClCompile Include="DebugTask.cpp" />
|
||||
|
||||
@@ -411,6 +411,9 @@
|
||||
<ClInclude Include="AsstPlatform.h">
|
||||
<Filter>头文件\Utils</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="RoguelikeDebugTaskPlugin.h">
|
||||
<Filter>头文件\Task\Plugin\Roguelike</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Controller.cpp">
|
||||
@@ -689,6 +692,9 @@
|
||||
<ClCompile Include="AsstPlatformWin32.cpp">
|
||||
<Filter>源文件</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RoguelikeDebugTaskPlugin.cpp">
|
||||
<Filter>源文件\Task\Plugin\Roguelike</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\resource\config.json">
|
||||
|
||||
27
src/MeoAssistant/RoguelikeDebugTaskPlugin.cpp
Normal file
27
src/MeoAssistant/RoguelikeDebugTaskPlugin.cpp
Normal file
@@ -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/");
|
||||
}
|
||||
18
src/MeoAssistant/RoguelikeDebugTaskPlugin.h
Normal file
18
src/MeoAssistant/RoguelikeDebugTaskPlugin.h
Normal file
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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<ProcessTask>(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<RoguelikeFormationTaskPlugin>();
|
||||
m_roguelike_task_ptr->register_plugin<RoguelikeControlTaskPlugin>();
|
||||
m_roguelike_task_ptr->register_plugin<RoguelikeResetTaskPlugin>();
|
||||
m_roguelike_task_ptr->register_plugin<RoguelikeDebugTaskPlugin>()->set_retry_times(0);
|
||||
m_roguelike_task_ptr->register_plugin<RoguelikeShoppingTaskPlugin>()->set_retry_times(0);
|
||||
|
||||
m_custom_start_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeCustomStartTaskPlugin>();
|
||||
|
||||
m_battle_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeBattleTaskPlugin>();
|
||||
|
||||
m_recruit_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeRecruitTaskPlugin>();
|
||||
m_recruit_task_ptr->set_retry_times(2);
|
||||
|
||||
m_skill_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeSkillSelectionTaskPlugin>();
|
||||
m_skill_task_ptr->set_retry_times(3);
|
||||
m_skill_task_ptr->set_retry_times(2);
|
||||
|
||||
// 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用
|
||||
for (int i = 0; i != 100; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user