From ef0e4958bf0cce5da69b5a7e311d5ea8bd4c480a Mon Sep 17 00:00:00 2001 From: fireflysentinel Date: Mon, 27 Apr 2026 01:00:41 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20RoguelikeFoldartalGainTaskPlugin::gain?= =?UTF-8?q?=5Fstage=5Faward=20`||`=20=E9=93=BE=E6=81=92=E4=B8=BA=20true=20?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=A3=85=E5=A4=87=E8=AF=AF=E5=85=A5=E5=AF=86?= =?UTF-8?q?=E6=96=87=E6=9D=BF=E5=88=97=E8=A1=A8;=20correct=5Frect=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ```cpp if (foldartal != "雷达" || "留声机" || "景观" || "LUD" || "踢脚" || "自走车") ``` C++ 把这串解析成 `(foldartal != "雷达") || ("留声机") || ("景观") || ...`, 后面 5 个字符串字面量是 `const char*`,非空指针视为 `true`,整个表达式恒真。 注释 `// 深入调查调查装备也使用同一个入口,先分类` 已经说明意图是排除这 6 个装备名,不让它们被 `gain_foldartal` 当密文板存入 `foldartal_list`。 不是游戏机制:这 6 个名字是萨米肉鸽"深入调查"事件的装备奖励(不是密文板), 跟密文板使用流程不应该混在一起;注释自陈"先分类"明确意图是过滤, 不是有意把所有 OCR 文字都收进来。 改成 `&&` 链做逐项排除。 Co-Authored-By: Claude Opus 4.7 (1M context) Co-Authored-By: fireflysentinel --- .../Task/Roguelike/Sami/RoguelikeFoldartalGainTaskPlugin.cpp | 3 ++- src/MaaCore/Vision/VisionHelper.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeFoldartalGainTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/Sami/RoguelikeFoldartalGainTaskPlugin.cpp index 57daba2fe9..dceedf24d4 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeFoldartalGainTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeFoldartalGainTaskPlugin.cpp @@ -122,7 +122,8 @@ bool asst::RoguelikeFoldartalGainTaskPlugin::gain_stage_award() auto foldartal = analyzer.get_result().front().text; // 深入调查调查装备也使用同一个入口,先分类 - if (foldartal != "雷达" || "留声机" || "景观" || "LUD" || "踢脚" || "自走车") { + if (foldartal != "雷达" && foldartal != "留声机" && foldartal != "景观" && foldartal != "LUD" + && foldartal != "踢脚" && foldartal != "自走车") { gain_foldartal(std::move(foldartal)); } if (m_ocr_after_combat) { diff --git a/src/MaaCore/Vision/VisionHelper.cpp b/src/MaaCore/Vision/VisionHelper.cpp index ac4de8b8d9..5eef2cf337 100644 --- a/src/MaaCore/Vision/VisionHelper.cpp +++ b/src/MaaCore/Vision/VisionHelper.cpp @@ -64,12 +64,12 @@ Rect asst::VisionHelper::correct_rect(const Rect& rect, const Rect& main_roi) res.height = rect.height + rect.y; } if (res.x < main_roi.x) { - res.x = main_roi.x; res.width = res.width - (main_roi.x - res.x); + res.x = main_roi.x; } if (res.y < main_roi.y) { - res.y = main_roi.y; res.height = res.height - (main_roi.y - res.y); + res.y = main_roi.y; } if (res.x + res.width > main_roi.x + main_roi.width) { res.width = main_roi.x + main_roi.width - res.x;