Skip to content

fix(base_task): 支持mumu模拟器安卓15:解决安卓15进入登陆界面偶现截图是竖屏的问题;解决大富翁不购买荣誉蓝票问题;解决部分皮肤无法完成御魂整理问题 - #1761

Merged
runhey merged 7 commits into
runhey:devfrom
lhye:dev
Aug 31, 2026

Conversation

@lhye

@lhye lhye commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

支持mumu模拟器安卓15: APP启动登录阶段游戏尚未横屏, 截图为竖屏(宽<高),
_burst检测I_G_ACCEPT时roiBack裁剪出空图导致matchTemplate断言失败进程崩溃。 判断宽<高时跳过检测, 横屏后自动恢复。

Sourcery 总结

错误修复:

  • 在游戏切换到横屏之前,跳过对不可用或纵向截图的突发检测,以防止 Android 15 MuMu 模拟器启动期间发生崩溃。
Original summary in English

Sourcery 总结

防止 Android 15 MuMu 模拟器的启动截图方向问题导致连拍检测崩溃。

Bug 修复:

  • 当 Android 15 MuMu 模拟器的启动截图不可用或仍处于纵向方向时,防止连拍检测崩溃。
  • 当源图像小于模板时,安全地跳过模板匹配,使游戏切换到横向方向后能够恢复检测。
Original summary in English

Sourcery 总结

错误修复:

  • 修复 Android 15 MuMu 模拟器登录过程中,当启动截图为纵向或尺寸小于模板时,模板匹配崩溃的问题。
Original summary in English

Sourcery 总结

增强对 Android 15 MuMu 竖屏启动截图的图像检测能力,并在商城数量中缺少 OCR 分隔符时保持兼容。

Bug 修复:

  • 防止在启动截图为竖屏方向或尺寸小于模板时发生模板匹配崩溃,使游戏切换到横屏后能够恢复检测。
  • 改进 OCR 忽略冒号分隔符时的剩余购买数量解析。
Original summary in English

Sourcery 总结

防止 Android 15 MuMu 上的启动图像检测崩溃,并改进商店购买处理。

错误修复:

  • 在 Android 15 MuMu 模拟器登录期间,当启动截图为纵向或尺寸小于模板时,防止模板匹配崩溃。
  • 当 OCR 省略冒号分隔符时,改进剩余购买次数的解析。

增强功能:

  • 更新荣誉神秘护符的购买流程,使其使用标准的批量购买交互。
Original summary in English

Sourcery 总结

增强 Android 15 MuMu 的启动图像检测,并改进相关的商城购买处理。

Bug 修复:

  • 在 Android 15 MuMu 登录期间,当启动截图为纵向或尺寸小于模板时,防止模板匹配崩溃。
  • 当 OCR 未识别出冒号分隔符时,改进剩余购买次数的解析。

改进:

  • 使换装图片区域与其完整交互区域对齐。
  • 对荣誉神秘护符使用标准批量购买流程。
Original summary in English

Summary by Sourcery

Harden startup image detection for Android 15 MuMu and improve related mall purchase handling.

Bug Fixes:

  • Prevent template matching from crashing when startup screenshots are portrait-oriented or smaller than the template during Android 15 MuMu login.
  • Improve remaining-purchase parsing when OCR omits the colon separator.

Enhancements:

  • Align costume replacement image regions with their full interaction areas.
  • Use the standard bulk-purchase flow for honor mystery amulets.

支持mumu模拟器安卓15: APP启动登录阶段游戏尚未横屏, 截图为竖屏(宽<高),
_burst检测I_G_ACCEPT时roiBack裁剪出空图导致matchTemplate断言失败进程崩溃。
判断宽<高时跳过检测, 横屏后自动恢复。
sourcery-ai[bot]
sourcery-ai Bot previously approved these changes Aug 28, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

嘿——我已经审阅了你的更改,看起来很棒!

Sourcery 评估

已批准。


Sourcery 对开源项目免费——如果你喜欢我们的审查结果,请考虑分享它们 ✨
请帮我变得更有用!请点击每条评论上的 👍 或 👎,我会利用这些反馈来改进你的审查结果。
Original comment in English

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@github-actions

Copy link
Copy Markdown

Findings

  • C2 [风险]
    位置:tasks/base_task.py:BaseTask._burst 中处理邀请的 while 1 循环(约第 91 行)
    原因:循环只依赖按钮消失退出,没有超时或异常失败返回;点击失效或页面状态异常时可能永久卡住。
    修改:增加 Timer 超时,超时记录告警并返回显式失败结果。

Generated by PR Review Checklist for #1761 · gpt56 · 1.63 AIC · ⌖ 0.298 AIC · ⊞ 11.9K ·

@github-actions

Copy link
Copy Markdown

Change Summary

  • BaseTask._burst() 中读取当前截图后,若图像为空或高度大于宽度,直接返回 False
  • 竖屏阶段不再执行 I_G_ACCEPT 的好友邀请模板匹配;恢复横屏后继续原有检测。
  • 变更仅涉及 tasks/base_task.py,未改变其他页面导航或资源文件。

Reconstructed Intent

点击此处展开 - 这次改动最可能是为了兼容 MuMu Android 15 启动/登录阶段的竖屏截图,避免横屏坐标对应的 `roiBack` 裁剪为空并触发 OpenCV 的 `matchTemplate` 断言崩溃。 - 预期行为是暂时跳过突发检测,待截图恢复横屏后自动恢复好友邀请检测。

Observed Constraints

点击此处展开 - `BaseTask.screenshot()` 每次设备截图后都会调用 `_burst()`,因此该判断位于所有继承任务共享的截图路径上。 - `I_G_ACCEPT` 使用固定横屏坐标(`roi_back` 约为 `(798, 369, 117, 110)`),竖屏时该区域可能越界/为空。 - 当前实现对所有竖屏截图统一跳过好友邀请检测,并依赖 `device.image` 是非空且至少二维、可通过 `shape[0:2]` 表示高宽的图像对象。

Intent Alignment

  • 实现与推断 intent 基本一致:它直接阻断了已知的竖屏空 ROI 检测路径,并且横屏后无需额外状态即可恢复。
  • 但保护范围比 MuMu Android 15 更宽:任何设备或异常状态下的竖屏截图都会暂停 _burst(),这属于可接受但需要明确验证的额外行为变化。

Release Risk

  • 风险等级:中
  • 共享截图入口上的早期返回会暂时禁用好友邀请处理;如果设备长期保持竖屏或发生旋转失败,邀请可能在窗口期未被处理。
  • image is None 分支虽然避免了本次崩溃,但也会静默跳过突发检测;需确认上层截图/登录流程仍能继续并最终恢复横屏。

Validation Gaps

点击此处展开 - 未看到自动化测试覆盖 `image is None`、竖屏、横屏恢复以及竖屏到横屏过渡。 - 应在 MuMu Android 15 上验证启动登录阶段不崩溃、旋转后好友邀请仍能及时处理;同时回归至少一种正常横屏设备。 - 建议确认 `Device.screenshot()` 的图像契约始终提供可安全访问 `shape[0]`/`shape[1]` 的 ndarray,避免防护条件本身引入异常。

Generated by PR Review Intent for #1761 · gpt56 · 2.19 AIC · ⌖ 0.302 AIC · ⊞ 11.9K ·

lhye added 3 commits August 29, 2026 13:17
竖屏截图防护已在根处module/atom/image.py的_safe_match_template统一处理,
所有matchTemplate调用均走该入口, _burst处的判断冗余, 撤销c9c13ee3的改动。
@sourcery-ai
sourcery-ai Bot dismissed their stale review August 30, 2026 02:07

Sourcery withdrew this approval because the latest commits introduced blocking findings.

st_replace资源roiBack(78x63)小于模板图(100x100), 模板匹配数学上无法完成,
appear永远False导致goto_souls循环空转。roiBack改为与roiFront一致(100x100)。
@lhye lhye changed the title fix(base_task): 支持mumu模拟器安卓15:解决安卓15进入登陆界面偶现截图是竖屏的问题 fix(base_task): 支持mumu模拟器安卓15:解决安卓15进入登陆界面偶现截图是竖屏的问题;解决大富翁不购买荣誉蓝票问题;解决部分皮肤无法完成御魂整理问题 Aug 30, 2026
lhye added 2 commits August 31, 2026 13:39
永生之海房间左下角是式神录+发言按钮, 没有普通房间的表情按钮,
is_in_room识别不到导致exit_room直接跳过, 之后ui_get_current_page
在房间界面无法识别页面报GamePageUnknownError。新增发言按钮识别图
I_GI_SPEAK并加入is_in_room判断。
最后一局领取奖励后金币动画遮挡左下角导致is_in_room识别失败,
exit_room被跳过后ui_get_current_page在房间/选层界面无法识别页面。
新增_wait_room_stable点掉残留奖励弹窗并等界面稳定;
新增_back_to_soul_zones点返回箭头回到御魂副本选择界面再回主界面。
@runhey

runhey commented Aug 31, 2026

Copy link
Copy Markdown
Owner
        # 截图竖屏(宽<高, 登录阶段游戏尚未横屏)或roiBack越界时, 裁剪图可能小于模板,
        # 直接返回False防止matchTemplate断言崩溃, 横屏后自动恢复
        if source.shape[0] < mat.shape[0] or source.shape[1] < mat.shape[1]:
            return False

这里修的太下游了,而且假设以后同样出现了 “截图竖屏 宽<高” 他就不会raise出来,甚至定位问题到哪儿都没懂

@runhey

runhey commented Aug 31, 2026

Copy link
Copy Markdown
Owner
image

tasks/Component/GeneralInvite/gi/gi_gi_speak.png 这个图,我记得好像有的呀,是有什么顾虑吗。我教你一个小技巧,截图的时候不要带背景

image

@runhey
runhey merged commit 7469f5c into runhey:dev Aug 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants