地图标记双击传送

地图标记双击传送

在世界地图上放置一个玩家标记,然后双击它即可传送到那里。单击一次为准备状态;在2秒内再次单击即可传送。传送被拒绝后,再单击一次即可重试。Beta版:可能存在未知错误,请谨慎使用并备份存档。已在5.00c / DX12上测试。

功能说明

在世界地图上放置一个普通玩家标记,然后双击该标记即可传送至该位置。

  • 单击仅会使标记进入待命状态,绝不会触发传送。
  • 在 2 秒内再次点击即可传送。
  • 若传送被拒绝,待命状态会保留:无论等待多久,再点击一次标记即可重试。无需重新打开地图,也无需再次双击。

0.3.0 版本变更

  • 双击时间窗口由 400 毫秒放宽至 2 秒。
  • 传送被拒绝后不再清除待命状态。
  • 移除了严格的导航网格预检查。此前只要无法预先解析标记处的地面就会拒绝传送,这导致了大多数“操作不允许”提示。
  • 同区域传送现在使用游戏自带的 DebugTeleportToPin 例程。
  • 移除了战斗内、航行中、模态弹窗以及快速旅行操作的限制条件。

BETA 警告

本模组处于 beta 阶段,可能存在许多未知缺陷。请谨慎使用,并先备份存档。建议先在临时存档上测试,而非主流程存档。

详细信息

  • 同区域传送使用游戏自带的 DebugTeleportToPin 例程,该例程会在抵达约一秒后修正落点。
  • 跨区域传送使用原版的世界切换调用。
  • 仅在以下情况拒绝传送:游戏或玩家未就绪、对话或过场动画期间、黑屏或淡入淡出期间、未设置标记,或跨区域目标没有世界路径。
  • 标记会从游戏自带的已保存玩家图钉列表重新推导,因此可在存档与读档后保留。
  • 无设置文件、无存档修改、无控制台命令、无自动存档、无时间跳过。

安装

  1. 完全退出《巫师3》。
  2. 解压此压缩包。请勿将整个压缩包直接覆盖到游戏文件夹。
  3. 在解压后的文件夹中打开 PowerShell 并运行以下命令,将路径替换为你自己的游戏文件夹:
& '.\mods\modRKMapMarkerTeleport\Install.ps1' -GameRoot 'D:\Games\The Witcher 3'

安装程序只会将本模组自身的六个文件写入 mods\modRKMapMarkerTeleport\。它绝不会修改 bin\config、filelists、mods_menu.xml、input.settings 或你的存档。 请勿为本游戏安装《赛博朋克 2077》的 redscript 编译器。

卸载

完全退出游戏后,使用相同的游戏文件夹运行:

& '.\mods\modRKMapMarkerTeleport\Uninstall.ps1' -GameRoot 'D:\Games\The Witcher 3'

它只会移除自身的六个文件,并保留未知文件和其他模组。

已知限制

  • 脚本层无法读取是哪个鼠标按键放置了图钉,因此本模组将正常的放置标记操作视为传送标记。无法做到仅限右键。
  • 点击标记不再移除该标记。这是双击行为的代价。
  • 标记图钉会被改写为原版路标样式的图钉,因此使用路标图标,并归入路标筛选分类。
  • 目前仅在游戏中验证了同区域传送。跨区域传送尚未验证。
  • 传送可能跳过任务触发器。本模组不检查任务状态。
  • 仅在《巫师3》重制版 5.00c / EXE 5.0.0.1044392 / DX12 上测试。不保证其他版本和语言可用。

兼容性

  • 自包含:不依赖 sharedutils。
  • 仅使用追加式脚本注解,绝不替换其他模组的文件。

故障排除

打开 %USERPROFILE%\Documents\The Witcher 3\scriptslog.txt 并筛选 [RK_MMT]。

  • init clickWindowMs=2000 minClickMs=50 markerAsStaticPin=on pinSnapSq=400 navGate=off retry=keep-armed —— 模组已加载。
  • marker set area=... x=... y=... —— 你的标记已注册。
  • armed channel=... windowMs=2000 retry=keep-armed —— 一次点击使标记进入待命状态。
  • local teleport issued count=1,或 global teleport issued to ... —— 已发起一次传送。
  • refused code=... reason=... refusals=N armedKept=1 retryHot=1 —— 传送被阻止且待命状态已保留;再点击一次即可重试。

若完全看不到 [RK_MMT] 行,说明模组未加载。

问题反馈

请附上:游戏版本、DX11 或 DX12、具体操作步骤、是同区域还是跨区域传送,以及 scriptslog.txt 中对应的 [RK_MMT] 行。