From 755a3b97ee6bf5a2b99cc0f157f6d93dd349b75d Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:33:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=82=89=E9=B8=BD=E6=8A=95=E8=B5=84?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E7=94=B1=E4=BA=8E=E5=AD=98=E6=AC=BE=E8=A2=AB?= =?UTF-8?q?=E9=95=BF=E6=9C=9F=E9=81=AE=E6=8C=A1=E5=AF=BC=E8=87=B4=E6=8F=90?= =?UTF-8?q?=E5=89=8D=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Roguelike/RoguelikeInvestTaskPlugin.cpp | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/MaaCore/Task/Roguelike/RoguelikeInvestTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeInvestTaskPlugin.cpp index 9af0d91c18..3846100d11 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeInvestTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeInvestTaskPlugin.cpp @@ -46,7 +46,7 @@ bool asst::RoguelikeInvestTaskPlugin::_run() // 投资确认按钮 const auto& click_rect = Task.get("Roguelike@StageTraderInvest-Confirm")->specific_rect; LogInfo << __FUNCTION__ << "开始投资, 存款" << deposit.value_or(-1) << ", 可投资次数" << count_limit; - while (!need_exit() && deposit && *deposit < 999 && count_limit - count > 0 && retry < 3) { + while (!need_exit() && deposit && *deposit < 999 && count_limit - count > 0) { int times = std::min(15, count_limit - count); while (!need_exit() && times > 0) { ctrler()->click(click_rect); @@ -57,25 +57,21 @@ bool asst::RoguelikeInvestTaskPlugin::_run() sleep(500); } image = ctrler()->get_image(); - if (is_investment_available(image)) { // 检查是否处于可投资状态 - if (auto ocr = get_deposit(image); ocr) { - if (*ocr >= 0 && *ocr <= 999 && *ocr != *deposit) { - count += *ocr - *deposit; - deposit = *ocr; - retry = 0; + if (is_investment_available(image)) { // 检查是否处于可投资状态 + if (auto wallet = get_wallet(image); *wallet && *wallet == 0) { // 手头没钱了 + Log.info(__FUNCTION__, "手头没钱了, 退出投资"); + retry = 0; + while (!need_exit() && retry++ < 20) { + if (auto ocr = get_deposit(image); ocr) { + if (*ocr >= 0 && *ocr <= 999 && *ocr >= *deposit) { + count += *ocr - *deposit; + deposit = *ocr; + break; + } + } + sleep(500); + image = ctrler()->get_image(); } - else if (auto wallet = get_wallet(image); *wallet && *wallet == 0) { - Log.info(__FUNCTION__, "钱包为0, 退出投资"); - break; - } - else { - retry++; // 可能是出错了,重试三次放弃 - } - } - else { - Log.error(__FUNCTION__, "无法获取可投资状态下的存款"); - save_img(utils::path("debug") / utils::path("roguelike") / utils::path("invest_system")); - retry++; } } else if (is_investment_error(image)) {