diff --git a/src/MeoAssistant/Assistant.cpp b/src/MeoAssistant/Assistant.cpp index 5c6dc5a8bc..944a2861c3 100644 --- a/src/MeoAssistant/Assistant.cpp +++ b/src/MeoAssistant/Assistant.cpp @@ -213,7 +213,8 @@ bool asst::Assistant::append_fight(const std::string& stage, int mecidine, int s .set_times_limit("StoneConfirm", stone) .set_times_limit("StartButton1", times) .set_times_limit("StartButton2", times); - fight_task_ptr->regiseter_plugin(); + fight_task_ptr->regiseter_plugin() + ->set_retry_times(0); std::unique_lock lock(m_mutex); diff --git a/src/MeoAssistant/DronesForShamareTaskPlugin.cpp b/src/MeoAssistant/DronesForShamareTaskPlugin.cpp index 019b572054..3cb0998f3e 100644 --- a/src/MeoAssistant/DronesForShamareTaskPlugin.cpp +++ b/src/MeoAssistant/DronesForShamareTaskPlugin.cpp @@ -29,7 +29,7 @@ void asst::DronesForShamareTaskPlugin::set_task_ptr(AbstractTask* ptr) bool asst::DronesForShamareTaskPlugin::_run() { ProcessTask shamare_task(*this, { "ShamareThumbnail" }); - shamare_task.set_retry_times(1); + shamare_task.set_retry_times(0); bool has_shamare = shamare_task.run(); if (!has_shamare) { return true; diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index c21f0fad75..926c8abcd1 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -37,7 +37,9 @@ bool asst::StageDropsTaskPlugin::_run() { set_startbutton_delay(); - recognize_drops(); + if (!recognize_drops()) { + return false; + } if (need_exit()) { return false; } @@ -51,14 +53,22 @@ bool asst::StageDropsTaskPlugin::_run() return true; } -void asst::StageDropsTaskPlugin::recognize_drops() +bool asst::StageDropsTaskPlugin::recognize_drops() { sleep(Task.get("PRTS")->rear_delay); if (need_exit()) { - return; + return false; } cv::Mat image = Ctrler.get_image(true); m_cur_drops = json::parse(Resrc.penguin().recognize(image)).value(); + for (auto&& ex : m_cur_drops.at("exceptions").as_array()) { + if (ex.at("type").as_string() == "ERROR" + || ex.at("where").as_string() == "stage" + || ex.at("what").as_string() == "NotFound") { + return false; + } + } + return true; } void asst::StageDropsTaskPlugin::drop_info_callback() diff --git a/src/MeoAssistant/StageDropsTaskPlugin.h b/src/MeoAssistant/StageDropsTaskPlugin.h index dd7d2be3b2..7b55508c2b 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.h +++ b/src/MeoAssistant/StageDropsTaskPlugin.h @@ -22,7 +22,7 @@ namespace asst private: virtual bool _run() override; - void recognize_drops(); + bool recognize_drops(); void drop_info_callback(); void set_startbutton_delay(); void upload_to_penguin(); diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index cd286435f9..35985c8734 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -216,13 +216,19 @@ namespace MeoAsstGui private void procSubTaskError(JObject details) { - string classType = details["class"].ToString(); + string subTask = details["subtask"].ToString(); var mainModel = _container.Get(); - if (classType == "class asst::AutoRecruitTask") + switch (subTask) { - mainModel.AddLog("公招识别错误,已返回", "darkred"); + case "AutoRecruitTask": + mainModel.AddLog("公招识别错误,已返回", "darkred"); + break; + + case "StageDropsTask": + mainModel.AddLog("关卡识别错误", "darkred"); + break; } }