更好的地图修复

创作者: s6652289
已更新:2026-09-19 09:21:16
48KB

前置 MOD

使用 更好的地图修复 时将自动安装

关于此 MOD

[AI生成] BetterMap 补丁:标记 BetterMap 仍然遗漏的迷雾之地 vegvisir 石,添加三个 Hildir 地牢入口,并将地图标记标签重命名为中文。仅客户端。请先阅读注意事项。

更好的地图修复

⚠️ 适用性提示 — 安装前请先阅读。

本补丁适用于 我自己大幅修改过的配置 (在r2modman配置文件中启用了30多个模组——BepInEx 5.4.2350 / Valheim 1.0.15)。它添加了什么 可能不是你想要的.

这不是一个漏洞。 xtavim-更好的地图 是 无缺陷 ——它的行为完全符合设计初衷。这个补丁添加的是原模组 刻意省略 (见下表),并重命名原版没有设置项的引脚标签。 原模组作者不应受到指责 ——这个补丁有 与他们没有关系 而写于 未经其同意或审核.

  • 如果你是 不 正是看到这个症状, 请不要安装这个 ——它对你可能毫无作用。
  • 这个补丁可能根本不适用于你的配置 — 使用不同的模组列表,该问题可能永远不会出现。
  • 即使症状相同, 根本原因可能不同 ——这只是根据我在自己机器上发现的情况得出的一个临时解决办法。
  • 如果你不 想要 这些额外的引脚,不装就行了——这是一个 偏好,这不是对错的问题。
  • 如果你觉得原模组行为异常, 请先向作者报告。

⚠️ 适用性声明 —— 请先读这一段,再决定装不装。

本补丁是在我自己那套环境里做出来的:r2modman 的配置里同时装着 30+ 个模组 (BepInEx 5.4.2350 / 游戏 1.0.15)。

这不是 bug。 更好的地图 本身没有问题,它完全按自身设计正常工作 —— 本补丁补的是它有意不做的那些情况(见下面的对照表),以及一个它本来就没有开关可调的「图钉名中文化」。原模组作者不应被追责:本补丁与他没有任何关系, 未经其同意、也未经其审查。

  • 如果你没有遇到完全相同的症状,请不要安装本补丁 —— 它可能什么都不做;
  • 本补丁可能不适用于你的环境:换一套模组组合,症状也许根本不会出现;
  • 就算症状一样,成因也可能不同 ——本补丁只是我根据本机情况找到的临时绕行方案;
  • 如果你不需要这些额外的图钉,那不用装 —— 这是一个取舍,不是「谁对谁错」;
  • 如果你觉得原模组有问题,请先向原模组作者反馈。这只是我个人“能跑就行”的绕行方案, 不保证适用于任何人。

给 更好的地图 打的客户端补丁 —— 做三件事:

  1. 迷雾之地的女王指引石(Vegvisir)不会被标记 —— 上游 1.1.0 的 引导石 规则仍然只有 7 个群系,没有迷雾之地。
  2. 希尔迪三个任务地牢没有条目 —— 上游有意不做(它认为原版游戏自己会在这些位置放图标),本补丁补上,三条默认全关,想用的人自己开。
  3. 图钉名中文化(洞穴、要塞、祭坛那类地点图钉)—— 上游没有任何本地化开关。

⚠️ 本模组由 AI 生成。

依赖:denikson-BepInExPack_Valheim-5.4.2350 + xtavim-更好的地图-1.1.0。


🔻 1.1.13 剔除了三条冗余注入(上游自己已经做了)

上游 BetterMap 连续几个版本把自己缺的东西补上了,本补丁同步收缩。被判为冗余而删除的三条,理由都经过逐条核对(源码 + 真机日志):

被删除的注入 为什么删 依据
霜寒洞穴(山 / 山间洞窟02) 上游 1.0.4 自己站起来同名同群系的规则,注入必然被判重跳过 —— 纯死代码 真机日志一直打「规则 [Mountain] Frost Caves 已存在(原模组自己提供…),跳过。」
软组织雾隐之地 / 巨脑) 上游 1.0.6 新增 巨型头骨(盯 雾隐之地巨人1,同为矿石分类、默认开),描述写明就是「黑大理石 + 里面的软组织」⇒ 功能完全重叠 上游 PINS.md:「迷雾之地_巨人1 是巨型骷髅,头骨 并且包含大脑……它被标记为一个地点,因为那些棋子从未被正式命名。
半埋地穴(黑森林 / 半埋森林墓穴) 上游没有这条规则,但游戏地点表里它的 m_enable = False ⇒ 原版永远不会放置它,默认关 + 永不落钉 = 死配置 2026-09-18 用本补丁的 转储位置名称 实测

重要:霜寒洞穴 的映射(冰霜洞穴)仍然保留 —— 上游那条规则叫同一个名字,图钉名仍会落到它上面。 「删注入」≠「删映射」:映射是按图钉名称生效的,与规则是谁注入的无关。

另外:想要「巨骨架/软组织」的图钉,保持上游 [自动标记 - 迷雾之地] 巨型头骨 = true(默认开启)即可。

上游已有的开关 —— 本补丁配套建议关掉一个

下面这条属于上游自己的行为,本补丁不去改它、也不去删图钉, 而是在上游自己的配置(BepInEx/config/xtav1m.BetterMap.cfg)里关掉:

配置键 建议 原因
[自动标记 - 迷雾之地] 巨人遗骸 假 它盯着的是骨制与盔甲武器(巨型肋排 / 巨人头盔1-2 / 巨剑1-2),会把上古之剑、上古护甲、肋骨全钉出来。不要这些就关掉它
[自动标记 - 雾之地] 女王入口 上游 1.0.6 起默认就是 假,无需手动改 女王洞穴入口 —— 按游戏流程它该由女王指引石标记,不该再额外出一枚入口图钉

关掉之后:上游不再为它们落新图钉;地图上已存在的那几枚要你自己右键删(本补丁不代为删除)。

装不装本补丁都能这么关 —— 这跟补丁无关,是上游自己的配置。

与上游的边界(2026-09-24 对 BetterMap 1.1.0 重新核对)

上游在这些版本里陆续把自己缺的补齐了,本补丁随之收缩:

功能 上游现状(1.1.0) 本补丁
Boss 指引石落钉机制 ✅ 1.0.4 已修(规则.组件 = typeof(Vegvisir) + 挂 Location 生成事件扫描内部组件) 迷雾之地那一段交给上游;自己的扫描器留作兜底
迷雾之地的女王指引石 ❌ 仍然没有 —— 维格维斯 规则只有 Meadows / BlackForest / Swamp / Mountain / Plains / AshLands / DeepNorth ✅ 补上 [迷雾之地] 维京符文石
女王洞穴入口(女王入口) ✅ 有,而且 1.0.6 起默认关闭(它的描述写着「使用一个寻路符文,游戏会为你标记位置」) 无需处理(上游已按同样思路关掉)
冰霜洞穴 霜寒洞穴 ✅ 1.0.4 已有 ❌ 1.1.13 起不再注入(纯死代码)
腐疫矿区 / 腐朽之穴 ✅ 1.0.5 已有(虫灾矿坑 / 腐臭洞窟) ❌ 更早(1.1.3)已不再注入;映射保留(感染矿洞 没有 NameToken,图钉名是英文)
软组织 / 巨骨架 ✅ 1.0.6 新增 巨型骷髅(迷雾之地巨人1,矿石,默认开启,描述包含“脑内的软组织”) ❌ 1.1.13 起不再注入(同分类同位置,功能重叠)
半埋墓穴 半掩地穴 ❌ 没有(且原版 m_enable=False,永不放置) ❌ 1.1.13 起不再注入
希尔迪三个地牢 ❌ 有意不做 —— PINS.md:香草版已经钉住的内容不在讨论范围内……商人们, 希尔德营地,沼泽女巫……」 ✅ 补上(默认全关)
图钉名中文化 ❌ 没有(固定名称.用于 (三分支里没有任何本地化调用) ✅ 本补丁的核心价值

所以:只装 BetterMap 1.1.0 而不装本补丁,迷雾之地女王指引石依旧不会出现在地图上,希尔迪地牢与图钉中文名也仍然缺。

⚠️ 顺带一提:1.0.6 的更新日志写着 女王入口默认关闭。 一个指路牌已经标出了它的位置。" —— 那里的“路标”指的是原版游戏的指引石机制(使用指引石后,地图上出现首领位置图标), 不是 更好的地图 指引石 规则。别把这两件事混起来。

⚠️ 一个容易看错的陷阱:矮人小镇 不是腐疫矿区

上游规则表里有一条叫 矮人城镇、描述写着 灰烬海上的矮人聚落。 的规则,光看名字很像“矮人要塞/矿区”。它实际是:

预制体 = ['CharredTowerRuins1_dvergr'] ← 灰烬之海的矮人据点 生物群系 = AshLands ← 灰烬之地,不是迷雾之地 默认开启 = false ← 默认还是关的

BetterMap 落钉要过群系过滤(地形图.查找生物群系(位置) == 规则.生物群系),所以它永远命中不了迷雾之地的 雾隐之地_矮人城镇入口1/2。这就是「规则名看着像、群系一票否决」的静默失效形态 —— 核对覆盖率时必须逐条比 预制体名 + 群系, 不能看规则名。


为什么指引石标记不了(根因)

BetterMap 的自动标记(自动标记.清扫)只遍历 ZNetScene.instance.m_instances —— 那是一张 字典<ZDO, ZNetView>,只包含有网络对象的东西。而指引石是烘焙进 Location 预制体里的子物体,没有自己的 ZDO;它们也不在 ZNetScene 的名字表里(获取预制体 实测返回 空),于是 ZNetScene.IsPrefabZDO有效 永远过不了、ZDO 永远不存在。BetterMap 自己在日志里就把结论写出来了:

[警告:BetterMap] 自动标记:“Vegvisirs”监视一个名为 Vegvisir_DragonQueen 的预制体,但本游戏中没有该预制体。它永远不会被标记任何内容。

上游 1.0.4 的修法(与本补丁当初的诊断完全一致):规则改填新字段 组件 = typeof(Vegvisir), 新增 已生成自动标记(位置代理) / 内部(...),挂在 Location 生成事件上扫内部组件 ——比本补丁“按自动钉半径扫描玩家附近”更彻底(Location 一生成就能标记,不受半径限制)。 但上游只给7个群系加了 指引石 规则,没有迷雾之地,所以女王指引石仍然要靠本补丁。

这个补丁怎么做(尽量走 BetterMap 自己的路)

功能 做法
希尔迪地牢补全 在 绑定引脚规则 跑之前,往 全部规则 里补三条规则。剩下的BetterMap自己全包 —— 在其自身的 cfg 中生成开关(分区 自动标记 - <群系>、注释)、并进 按位置 地点表、进图例、按合并距离去重、“删掉的标记不会再出现”。名字与群系跟上游已有的重复了会自动跳过,不会出双份;添加规则 还会再比一次 预制体集合,上游改名也认得出。
指引石 把迷雾之地那条规则填成 组件=typeof(Vegvisir),交给上游自己的机制;本补丁的扫描器保留作保底(上游落过钉的位置会被去重记录挡住,不会双钉)。上游若没有该字段(1.0.2/1.0.3),退回本补丁自己扫。

补的规则(开关出现在 BetterMap 自己的配置 里,三条都是默认关闭):

规则名 分区 位置名(区域位置.预制体名称) 默认 中文图钉名
希尔德洞穴 自动标记 - 山地 希尔德洞窟 关 希尔迪洞穴
希尔德墓穴 自动标记 - 黑森林 希尔德墓穴 关 希尔迪墓穴
希尔德堡垒 自动标记 - 平原 希尔德平原要塞 关 希尔迪平原要塞
路标石 自动标记 - 迷雾之地 组件通道 守护符文(1.0.4+)/ 维格维西尔·探寻女王(旧版) 开 沿用游戏本地化

⚠️ 规则名里不能有撇号 —— 上游直接把它当 cfg 键用,而 BepInEx 禁止 = \ " ' [ ] ⇒ 是 希尔德洞穴 而不是 希尔德尔洞穴输入错误会让上游 绑定 抛出异常、整个配置崩溃)。

位置名不是猜的:游戏资产表 软引用/清单 里 资产/世界/地点/.../希尔德洞穴.prefab 等。 名字如果写错,BetterMap 自己的自检会打 "watches a place named X, which this game has none of" —— 日志里没有这条就说明名字对。

本补丁自身的配置(BepInEx/config/bettermapfix.client.only.cfg)

键 默认 说明
1 - 常规 / 已启用 开 总开关
2 - 维京罗盘 / 扫描维京罗盘 开 指引石补标记(1.0.4+ 上相当于兜底)
3 - 洞穴 / 注入洞穴规则 开 注入上面那三条希尔迪规则(它们本身默认关)
4 - 标签 / 记录未知引脚名称 开 诊断:把映射表没命中、且像英文的图钉名打进日志(去重,最多 60 个)。看到不认识的英文名就加进 名称地图
4 - 标签 / 中文标签 开 图钉名中文化
4 - 标签 / 名称映射 内置表 内置表已覆盖 BetterMap 全部规则名 + 裸英文名称标记变体,正常不用动。写 你的译名 可覆盖;写 英文名=(值留空)= 删掉这一条
4 - 标签 / 合并默认地图 开 把内置默认译名表合并进上面那张表(你的条目优先)。见下节
4 - 标签 / 重命名现有标记 开 连已放在地图上的旧图钉一起改名
9 - 调试 / 导出位置名称 关 世界加载后把游戏的地点表整表打进日志,用来核对位置名
9 - 调试 / 导出ZNet名称 巨人 诊断把 网络场景 把名字含该关键词的预制体 / 世界里活着的实例打进日志。用来确认“规则里写的预制体名到底注册没有”
9 - 调试 / 详细PIN码日志 开 每落一个指引石图钉打一行日志

为什么需要 合并默认地图

BepInEx 的配置有个特性:cfg 文件里已经存在某个键时,它不会用新的默认值覆盖文件里的旧值。

于是本补丁每次升级新增的内置译名,对“cfg 里早就写过旧表”的老用户永远不会生效 ——症状是「新补的图钉标出来了,但名字还是英文」。补丁 1.1.0 实际踩到了这个坑: 新增 腐疫矿区 之后,腐疫矿区虽然能在地图上标记出来,名字却仍是 被感染的矿洞。

所以现在会把内置表与你的表做并集(内置先铺、你的覆盖):

你想做的事 怎么做
什么都不管,希望自动获得新译名 保持 合并默认地图 = 开(默认)
改某条的译名 在 名称映射 里面写 你的译名(您的优先)
删掉某条内置译名 在 名称地图 里写 英文名=(值留空)
完全自己掌控,不要任何内置译名 关闭 合并默认地图

图钉中文化怎么实现的(只动标签这一层)

原模组落钉时用 规则和游戏对象的引脚名称。 计算图钉名,三分支:

① rule.NameToken 非空 → 返回 NameToken(若以 `$` 开头,游戏自行翻译为中文) ② 否则 PinNames.For(prefab) → Piece.m_name / Pickable 掉落物名 / MineRock 掉落物名 …(多为 `$` 键) ③ 都拿不到 → 兜底返回 rule.Name(**英文规则名**)

而 自动标记.放置 里没有任何本地化调用 ⇒ 落到 ③ 的图钉就是英文。会落到 ③ 的两类:全部地点类规则(落钉时 走吧 传 null)、以及没有 Piece / Pickable / MineRock 组件的预制体(实测 利维坦 就是这种)。

本补丁只给这个函数的返回值做精确整串替换:

  • 不改 名称 ——那是原模组 cfg 的键名,改了会把你的配置项也改名;
  • 不动规则表、图标、图例、去重记录;
  • 表里没有的名字原样放行,所以只影响你想翻的那几个。

译名优先取游戏自己的本地化表,与你在游戏里看到的名词一致;游戏里没有的才自拟( 硫磺拱门 / 冰霜巨魔 / 灰烬罐 / 不稳定的熔岩石) 利维坦 现在叫“甲壳素”(根据需求定的译名)。

⚠️ 有一类图钉的名字不是规则名,而是规则的 名称令牌(For 的图钉名称 的第一分支): 若 名称令牌 是 $ 开头的本地化键(如 $piece_vegvisir),游戏自己会翻,不用管; 但若它是裸英文,就原样显示。上游有三条这样的规则 —— 灰烬罐 → 灰烬罐、灰矮人巢穴 → 灰矮人巢穴、利维坦 → 利维坦 (规则名复数、钉名单数)⇒ 只写规则名(复数)永远命不中,单数写法也必须收进表里。

Similarly, the newly added in upstream 1.0.6 巨型骷髅 没有 名称令牌 且属于地点类 ⇒ 图钉名必然是英文,所以内置表里有 巨人头骨(1.1.13 补)。

⚠️ 替换挂在三个地方:PinNames.For(规则路径)+ 小地图。添加标记(兜底)+ 小地图.更新(旧钉改名)。 全量反汇编 BetterMap 1.0.4 发现 小地图.添加标记 有 6个调用方 (自动标记.放置 / 生物追踪器.添加 / 重命名标记 / 死亡标记.重建 / 载具追踪.重新同步 / 自动标记.传送门), 而只有 自动标记放置 走 PinNames.用于 —— 生物、传送门、死亡标记这些路径各自算名字, 只补前者会漏(1.1.1 就漏了 利维坦)。在 添加图钉 上兜一层后与走哪条路无关。

名称映射 内部键名写错只会静默失效,所以交付前有一道机器校验(拿 BetterMap.dll 的字符串堆逐个核对)。

旧图钉名字是在落钉那一刻写进地图数据的,光改上面那个函数对它们无效,因此另有一趟2秒一次的低频重命名,只动名字精确命中映射表的图钉,直接改显示文本(不重建UI)。

指引石仍然听 BetterMap 各群系里的 路标石 开关 ——本补丁不修改它。

怎么确认它在干活

日志里出现这些就说明工作正常:

[信息:BetterMapFix] BetterMapFix 1.1.13 已加载:洞穴规则注入=True,指引石扫描=True,中文图钉名=True(接口自检通过)。 [信息:BetterMapFix] 检测到 BetterMap 支持 Rule.Component(1.0.4+):是 —— 迷雾之地 Vegvisirs 交给它自己的「Location 内部组件」通道,本补丁扫描仅兜底。 [信息:BetterMapFix] 中文名映射 = 内置 N 条 ∪ 用户表(覆盖 33 / 用户新增 0 / 显式删除 0)→ 生效 N 条 [信息:BetterMapFix] +规则 [Mountain] Hildir Cave → Hildir_cave(默认 关,地点类) [信息:BetterMapFix] +规则 [BlackForest] Hildir Crypt → Hildir_crypt(默认 关,地点类) [信息:BetterMapFix] +规则 [Plains] Hildir Fortress → Hildir_plainsfortress(默认 关,地点类) [信息:BetterMapFix] +规则 [Mistlands] Vegvisirs → 组件 Vegvisir(默认 开,组件类) [信息:BetterMapFix] 规则注入完成(洞穴 已开,含迷雾之地 Vegvisirs(走上游 Component 通道)),共 4 条。 [信息:BetterMapFix] 已有图钉改中文名 1 个(累计 1 个)。 [信息:BetterMapFix] 指引石已标记 [Mountain] 位置 1234.5,-678.9(距玩家 42.3 m) [信息:BetterMapFix] 本轮扫到附近指引石 2 块 → 新落钉 1,跳过 1(已记过账 / 该段开关关着)。

要盯的三点:

  1. 规则注入完成 …共 4 条 ——从 1.1.13 起就该是 4(3 条 Hildir + 1 条迷雾之地 Vegvisirs)。 出现「冰霜洞穴 已存在,跳过」说明补丁版本旧了(那是 1.1.12 及更早会打的)。
  2. “中文名映射”那一行的生效条数应当大于等于内置条数;明显少于则说明有问题。 合并默认地图 被关了。
  3. 「本轮扫到附近指引石」这行只在真的落了钉时才打(1.1.13 起)。以前它每轮扫描都打一次,会把日志刷爆;现在“扫到但没落钉”只写 Debug 级(默认不落盘)。

兼容性

  • 面向 BetterMap 1.0.2 及之后的所有版本(更好的地图)编写,按版本自动选择通道: 有 规则.组件(1.0.4+)就走上游的组件机制,没有就退回本补丁自己扫描。 已在 1.1.0 上逐项核对接口自检(6 个类型 + 12 个成员 + 3 个字段)全部通过。
  • 所有内部调用都走反射并做存在性自检;规则.组件 与 插件.自动引脚半径 都是可选字段,缺了不会让自检失败(否则旧版上会把整个补丁停用)。BetterMap 换版本时本补丁只会打印一条"接口自检不通过"并停用,不会拖垮游戏加载。
  • 纯客户端、不声明 NetworkCompatibility(非强制)⇒ 主机不装也能用、不挡联机。
  • 只读场景对象与本地地图数据,不改任何网络权威数据。

卸载

删掉 BepInEx/plugins/<这个包>/BetterMapFix.dll 即可。 留在 BetterMap 配置里的那三个键(希尔德洞穴 / 希尔德墓穴 / 希尔德堡垒删不删都行,删掉下次启动会按默认值重建。

本补丁自己的 cfg 里,旧版遗留的 从仓库修复制作 之类不存在;但1.1.12及更早版本写过的 名称映射 可能还留着 软组织 / 半埋墓穴 从 1.1.13 起它们不会再命中任何图钉(无害),想清理手动删掉即可。

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!