babalae/better-genshin-impact · error · TimeoutException
关闭补充原粹树脂提示超时
Error message
关闭补充原粹树脂提示超时
What it means
CloseResinSupplementPrompt 在 supplementRect 区域循环最多 50 次,每次检测到含 '补充'/'原粹'/'树脂' 文本就按 ESC 并等待 300ms,若 50 次(约 15s+)后仍检测到提示则抛 TimeoutException,表示补充树脂弹窗无法被 ESC 关闭。
Source
Thrown at BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs:1499
var supplementRect = ScaleRect(850, 730, 250, 60);
for (var i = 0; i < 50; i++)
{
_ct.ThrowIfCancellationRequested();
var promptExists = page.Ocr(supplementRect).Any(region =>
region.Text.Contains("补充", StringComparison.Ordinal)
|| region.Text.Contains("原粹", StringComparison.Ordinal)
|| region.Text.Contains("树脂", StringComparison.Ordinal));
if (!promptExists)
{
return;
}
page.Keyboard.KeyPress(User32.VK.VK_ESCAPE);
await page.Wait(300);
}
throw new TimeoutException("关闭补充原粹树脂提示超时");
}
/// <summary>
/// 关闭领奖结果页面,等待回到主界面。
/// </summary>
/// <exception cref="Exception">多次尝试后仍未回到主界面时抛出。</exception>
private async Task CloseRewardResult()
{
var page = new BvPage(_ct);
var closeRect = ScaleRect(850, 960, 220, 35);
for (var i = 0; i < 20; i++)
{
using var capture = CaptureToRectArea();
if (Bv.IsInMainUi(capture))
{
return;
}View on GitHub (pinned to a7cb36712d)
Solutions
- 收窄 supplementRect 区域并强化文本匹配(要求连续含 '补充'+'原粹树脂' 而非单字命中)。
- 改用点击关闭按钮/空白区域而非仅 ESC。
- 确认游戏窗口处于焦点,输入模拟有效(检查 Simulation.SendInput)。
- 增加重试次数或等待间隔,并对每次 OCR 做日志便于定位误命中。
Example fix
// before
var promptExists = page.Ocr(supplementRect).Any(region =>
region.Text.Contains("补充", StringComparison.Ordinal)
|| region.Text.Contains("原粹", StringComparison.Ordinal)
|| region.Text.Contains("树脂", StringComparison.Ordinal));
// after
var promptExists = page.Ocr(supplementRect).Any(region =>
region.Text.Contains("补充原粹树脂", StringComparison.Ordinal)
|| region.Text.Contains("使用脆弱树脂", StringComparison.Ordinal)
|| region.Text.Contains("使用须臾树脂", StringComparison.Ordinal)); Defensive patterns
Strategy: retry
Try / catch
try { await CloseResinSupplementPrompt(page); }
catch (TimeoutException ex) { _logger.LogWarning("{Name}:{Msg}", Name, ex.Message); /* 可尝试点击关闭或继续后续流程 */ } Prevention
- 收窄 OCR 区域并要求多关键词组合命中,避免单字误判。
- 确认游戏窗口焦点与输入模拟有效。
- 区分'提示仍在'与'背景文字误命中',必要时改用点击关闭。
When it happens
Trigger: ESC 未生效(输入焦点不在游戏/被其他弹窗拦截);OCR 持续误判背景文本含 '补充/原粹/树脂'(误命中导致以为未关闭);弹窗需要点击而非 ESC 关闭;游戏卡顿使按键丢失。
Common situations: 领奖后残留界面文字被 OCR 误识别为提示仍在;游戏窗口失焦;ESC 与其他模态叠加;supplementRect 区域覆盖了常驻含树脂字样的 UI。
Related errors
- 超时未找到征讨之花领奖界面
- 计算缺失树脂 {missingResin} 超过树脂上限 {resinLimit}
- 原粹树脂上限 OCR 失败:{countText}
- 原粹树脂上限解析失败:{countText}
- 未识别到全部恢复时间:{text}
AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13).
Data as JSON: /api/errors/8c72129990f5b14b.
Report an issue: GitHub.