babalae/better-genshin-impact · error · Exception

未进入和合成台交互对话界面

Error message

未进入和合成台交互对话界面

What it means

Thrown by GoToCraftingBenchTask.GoToCraftingBenchOnce after a three-stage attempt to enter the crafting-bench dialogue all fail Bv.IsInCraftingTalkUi: a direct retry (TryPressCrafting), then a step-backward + retry, then a final check. None put the UI into the talk state.

Source

Thrown at BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.cs:270

        // 多种尝试 责任链
        if (!IsInCraftingTalkUi())
        {
            // 直接重试
            await TryPressCrafting(ct);
            
            if (!IsInCraftingTalkUi())
            {
                // 往回走一步重试
                Simulation.SendInput.SimulateAction(GIActions.MoveBackward, KeyType.KeyDown);
                await Delay(200, ct);
                Simulation.SendInput.SimulateAction(GIActions.MoveBackward, KeyType.KeyUp);
                
                await TryPressCrafting(ct);
            
                // 最后 check
                if (!IsInCraftingTalkUi())
                {
                    throw new Exception("未进入和合成台交互对话界面");
                }
            
            }
        }

        // 等待进入合成界面
        await _chooseTalkOptionTask.SelectLastOptionUntilEnd(ct,
            region => region.Find(ElementRecognition.Get("BtnWhiteConfirm", region)).IsExist()
        );
        await Delay(800, ct);
    }


    private bool IsInCraftingTalkUi()
    {
        using var ra = CaptureToRectArea();
        return Bv.IsInTalkUi(ra);
    }

View on GitHub (pinned to a7cb36712d)

Solutions

  1. Confirm craftLocalizedString matches the in-game bench prompt for the configured culture.
  2. Re-approach: rerun the pathing EndAction or walk forward before retrying FindFAndPress.
  3. Increase retries and vary approach direction rather than only stepping backward.
  4. Verify the character landed close enough to the bench by checking a known landmark via OCR/template.

Example fix

null
Defensive patterns

Strategy: retry

Validate before calling

null

Type guard

null

Try / catch

try { await GoToCraftingBenchOnce(country, ct); }
catch (Exception e) when (e.Message == "未进入和合成台交互对话界面")
{ /* re-path to the bench and vary approach direction, then retry */ }

Prevention

When it happens

Trigger: IsInCraftingTalkUi() (which captures and calls Bv.IsInTalkUi) returns false through: initial check, after TryPressCrafting (FindFAndPress on '合成'), and after MoveBackward + TryPressCrafting. The bench's F-prompt was never engaged.

Common situations: Character is not actually at the bench (pathing undershot); camera/wall occludes the bench F-prompt; localized '合成' string does not match the prompt text; the bench requires a different approach vector (the 枫丹 auto-run exception left the character past the bench).

Related errors


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/a898a55fd5fb572b. Report an issue: GitHub.