{"record":{"id":"95981aa9733627c7","repo":"babalae/better-genshin-impact","slug":"error-95981a","errorCode":null,"errorMessage":"地图图标绝对坐标匹配失败","messagePattern":"地图图标绝对坐标匹配失败","errorType":"exception","errorClass":"TpPointNotActivate","httpStatus":null,"severity":"warning","filePath":"BetterGenshinImpact/GameTask/AutoTrackPath/TpTask.cs","lineNumber":881,"sourceCode":"            if (attempt + 1 >= AbsoluteMapClickRetryCount)\n            {\n                break;\n            }\n\n            await MoveTeleportTargetTowardZoomCenter(currentClickView);\n            var currentZoomLevel = GetCurrentBigMapZoomLevel();\n            var recoveryZoomLevel = Math.Max(MinTeleportZoomLevel, currentZoomLevel - AbsoluteMapClickZoomRecoveryStep);\n            if (_tpConfig.MapZoomEnabled && !IsZoomCloseEnough(currentZoomLevel, recoveryZoomLevel))\n            {\n                await AdjustMapZoomLevel(currentZoomLevel, recoveryZoomLevel);\n            }\n\n            await Delay(TeleportClickableAreaRetryDelayMs, ct);\n            currentClickView = await PrepareTeleportClickView(target);\n        }\n\n        Logger.LogWarning(\"目标传送点绝对坐标定位失败：{Reason}\", failureReason);\n        throw new TpPointNotActivate(failureReason);\n    }\n\n    private double GetTeleportFinalClickZoomLevel(double nearestTpDistance, string mapName)\n    {\n        var targetZoomLevel = Math.Max(nearestTpDistance / TeleportFinalZoomDistanceFactor, MinTeleportZoomLevel);\n        return ClampTeleportFinalZoomLevel(targetZoomLevel, mapName);\n    }\n\n    private double GetTeleportTravelZoomLevel()\n    {\n        return GetTeleportMaxZoomLevel();\n    }\n\n    private static double GetTeleportMaxZoomLevel()\n    {\n        return TeleportMaxZoomLevel;\n    }\n","sourceCodeStart":863,"sourceCodeEnd":899,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/GameTask/AutoTrackPath/TpTask.cs#L863-L899","documentation":"TpPointNotActivate thrown from the absolute-coordinate click path after AbsoluteMapClickRetryCount attempts. The message is the runtime failureReason string (the prompt labels it '地图图标绝对坐标匹配失败'). Each attempt tries ConvertGenshinMapCoordinatesToImageCoordinates + click; if the click never lands on the TP icon within the budget, the last failureReason is surfaced.","triggerScenarios":"Big-map coordinate transform producing click positions that miss the TP icon (zoom/pan mismatch between detected and actual map rect); the TP icon template not matching after the click; map panning drift between attempts; recovery zoom step not applied because MapZoomEnabled is off.","commonSituations":"Map zoom config disabled (_tpConfig.MapZoomEnabled=false) so AbsoluteMapClickZoomRecoveryStep never runs; coordinate transform off due to wrong bigMapInAllMapRect; new game patch shifted map coordinates; template for the TP icon changed.","solutions":["Enable _tpConfig.MapZoomEnabled so the recovery zoom stabilizes clicks between attempts.","Run at 1920x1080 so the big-map coordinate transform is calibrated correctly.","Retry (TpWithRetries catches TpPointNotActivate and retries up to 3 times).","If a specific TP always fails, verify its coordinates in tp.json still match the live map (post-patch drift).","Increase AbsoluteMapClickRetryCount for slow map loads."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { await TpOnce(...); }\ncatch (TpPointNotActivate e) { /* TpWithRetries handles; verify tp.json coords post-patch */ }","preventionTips":["Enable _tpConfig.MapZoomEnabled so the recovery zoom stabilizes clicks.","Run at 1920x1080 for accurate big-map coordinate transform.","After Genshin patches, verify tp.json coordinates still match the live map."],"tags":["teleport","absolute-coords","big-map","coordinate-transform","tp-not-activate"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}