未找到

创作者: Mushroom_Vikings
已更新:2026-09-15 16:41:23
95KB

关于此 MOD

从维格维斯石碑中拾取一个有限次数的指南针,它会指引你前往首领所在地,而不是在地图上标记出来。专为无地图服务器制作。

维京指南针

一个用于的BepInEx模组 英灵神殿,专为 无地图多人通关.

与维京符文罗盘互动不再在地图上显示首领位置。改为拾取一个 维京指南针 ——一种使用次数有限的物品,能让你的视角转向那块石头所指向的Boss,用完后便会碎裂。

它的作用

  • 与路标符互动可获得 维京罗盘 而是揭示一个地图位置。
  • 每个指南针都 以其目标命名 — 维京罗盘 - 摩德 —这样你一眼就能看出它指向哪个Boss了。
  • 石头可以选择放置在 共享冷却 之后,对服务器上的所有玩家生效。默认关闭。
  • 一名玩家可以携带 每个目标仅一个指南针 为长老持有一个并不会阻止你为女王拾取一个,但第二个长老罗盘会被拒绝。目标按位置匹配,而非显示名称,因此共享同一标签的石头(例如灰烬之地的迪恩温链)永远不会互相阻塞。该规则适用于 从地上捡起一个 以及搜刮,所以指南针不能通过先丢下再拾取来复制。指南针不会被自动拾取,按使用键来拿取。
  • 使用指南针将镜头对准首领。它已经 单次使用 默认情况下,使用后即被销毁。
  • 指南针只在 在其来源迷津标350米范围内,在X/Z平面上测量,因此高度被忽略。超出范围不消耗任何东西:不会消耗使用次数,镜头也不会移动。
  • 瞄准会使你面向首领,并将视角调平至地平线,而不是向上仰视山峦或向下俯视山谷。
  • A 1秒防御 阻止双击同时消耗两次使用次数。
  • 一块石头上刻着几个地名,授予 每个配一个指南针 希尔迪的地图表是一块路标石,上面载有她全部三个任务地下城。已携带的目标会被跳过,而不会导致整块石头无法使用。
  • 商人传承石:距离世界中心足够远的生物群系符文石也会提供一个指南针——黑森林→哈尔多,草甸和平原→希尔迪尔,沼泽→沼泽女巫,山地→潜能之炉。符文石仍然显示其传说文本。
  • 希尔德的地图桌 为她的三个任务副本提供指南针,分别名为黄铜、白银和青铜。
  • 商人 决定与他们在哪里进行交易,而不是任何人经过的第一个营地。潜能熔炉 打开后即会安定下来,以同样的方式。仅限新世界(或模组从一开始就管理的世界)。
  • 图标为 被所指之物染上色彩,因此完整图标包一眼即可辨认:金色代表首领,灰色代表商人,红色代表灰烬之地的神秘地点,紫色代表希尔德的任务地牢,冰蓝色代表潜能熔炉。

地图从未被触碰。看 真的没有地图 因为那需要关心。

需求

英灵神殿 Unity 6000.0.61f1,建造 21981559
BepInEx 5.4.2333 (BepInExPack_Valheim)
.NET 软件开发工具包 9.0 — 仅供构建使用;玩家只需安装 BepInEx 即可

没有Jotunn,没有ServerSync,没有其他插件依赖。

每个人都需要它。 指南针是真实的物品预制件,因此必须在专用服务器上安装此模组 和 每个连接的客户端上。

安装中

每个蘑菇模组随版本一同发布。下载 蘑菇模组插件.zip 从 最新版本,拿着 VegvisirCompass.dll 脱离其 插件/ 文件夹,并将其拖入 BepInEx/plugins/:

Valheim/ └── BepInEx/ └── plugins/ └── VegvisirCompass.dll

在此执行 每个客户端和专用服务器上对于自身即为Valheim目录的服务器——即包含以下内容的文件夹 瓦尔海姆服务器.exe 及其 BepInEx/.

像r2modman和Vortex这样的模组管理器也会通过它们的方式直接加载一个裸DLL文件 导入本地模组 / 手动安装流程。

之后

配置文件会在首次启动时出现在 BepInEx/config/vegvisircompass.cfg.

来自1.4.1或更早版本? 该文件过去以插件GUID命名, com.dhobbs.vegvisircompass.cfg首次启动时会自动重命名,你的设置也会一并保留——无需任何操作。客户端和专用服务器各有自己的副本,因此两者都会自动重命名。

升级? BepInEx 不会覆盖你配置文件中已存在的设置,因此新的默认值不会应用到已有安装。如果某个版本更改了你需要的默认值,请自行编辑该行,或删除文件让其重新生成。

记住模组必须开启 服务器和每个客户端 —指南针是一个真实的物品预制件,因此没有它的客户端将不会拥有该物品。

配置

五种设置,刻意为之。任何始终只有一个合理取值的,在代码中都是常量,而任何其 关 设置只是禁用,模组就没了——参见 为什么配置这么小.

设置 默认 由…决定 笔记
战维吉尔.战利品冷却秒数 0 服务器 共享重新拾取冷却时间,单位为秒。 0 禁用它,随后服务器将完全不进行任何追踪
指南针.每个指南针使用次数 1 服务器 指南针在碎裂前能使用多少次
米 350 服务器 指南针离其磁石多远仍能工作,仅X/Z轴。 0 移除限制
指南针视角平滑 3.5 客户端 摄像机平移所需的秒数,与原生 Vegvísir 保持一致。平移期间会暂时屏蔽鼠标视角——原生实现会将缓动转向与鼠标输入作用于同一字段,若不屏蔽,鼠标一移动平移就会被取消。屏蔽时间上限为 6 秒,并会在截止时间自动解除,因此即使平移被打断,也不会导致你失去摄像机控制。 0 立即转身,无锁定
调试.详细日志 假 任一个 记录其所设置阵营的搜刮、RPC、放置、瞄准和使用行为

已读取三项服务器设置 仅 里面 服务器请求,在一个 是否服务器() 守卫,它们的值在每次授予罗盘时就被固化进去。客户端编辑自己的副本没有任何作用——不存在配置同步,因为这些值在客户端上从来不会被读取。

另外两个不能滥用。 外观平滑 个人品味,而且 详细日志记录 写入日志。

建筑

dotnet build -c Release

游戏程序集直接从本地Steam安装目录引用,而非以供应商形式打包,因此不会提交受版权保护的二进制文件。该路径来源于 瓦爾海姆路徑 默认设置为 C:\Program Files (x86)\Steam\steamapps\common\Valheim;可通过创建以下内容来按机器覆盖它 Directory.Build.user.props (已忽略git):

<Project> <PropertyGroup> <ValheimPath>D:\Games\Valheim</ValheimPath> </PropertyGroup> </Project>

每次构建都会将输出部署到 BepInEx/plugins 所以它可以立即测试。Valheim在运行时会保持DLL打开,因此会话中途重新构建只会发出警告而不会失败——关闭游戏后重新构建即可部署。

未提交任何构建的 DLL。发布 GitHub 版本会运行 .github/workflows/release.yml,它会用自己获取的引用程序集来构建仓库中的每个模组,并将这些 DLL 附加到该发布版本上——因此下载的插件始终对应一个已打标签的提交。

工作原理

为什么配置这么小

该模组本质上是服务器权威的:服务器决定位置、判定用途和范围,将其烘焙到物品中,并掌控商人放置。客户端只负责请求和渲染。在此基础上暴露的每一项设置都是一个需要别人去堵的漏洞——因此配置从十四项削减到了五项。

其中两个是正在被利用的漏洞,而非可选方案:

  • 替换航海符文行为 关闭了模组。一个客户端设置它 假 掉到原版去了 维格威西尔。交互,而这会写入一个永久性的首领标记——而该服务器的核心原则就是永不写入任何标记。
  • 商人知识石 仅在客户端进行了检查。服务器设置的 假 被任何设定它的客户否决了 真,因为 服务器请求 从没看过它。

两者都不需要强制执行或配置同步。删除它们便消除了漏洞利用,而第二个的唯一正当用途——让商人保持探索挑战性——已经由距离门控更好地实现了。

其余都是无关紧要的:三个没人会重新调整的图标色调(而且只有在所有人都达成共识的情况下才有效)、一个调了也没好处的防刷屏间隔,以及一个 物品.* 三人组,原本充满敌意—— 显示名称 是什么 指南针 匹配生效后,更改它会使玩家持有的每个罗盘都变成孤立状态。 物品描述 过去用于标明以米为单位的范围,且必须手动编辑才能保持准确;现在不再标注具体数字,因此不会过时。

真的没有地图

显而易见的实现方式是重新触发原版Vegvísir触发器,它已经能对准镜头了。这是个陷阱。那条路最终会走向 小地图.发现地点,其调用 添加标记(保存: true) 无条件地 — 即使当 显示地图 是假的。Boss标记会被永久写入每个玩家的存档中,因此一个未启用地图的角色会悄悄积累一整套Boss标记,一旦地图被启用就会立刻显示出来。

所以该模组使用自己的RPC对,从不调用 小地图 完全。

为什么拾取需要服务器

ZoneSystem.m_locationInstances 仅在服务器端填充,因此客户端无法解析Boss的实际位置。原版往返也是出于同样的原因。

拾取时,客户端向服务器发起请求,服务器强制执行冷却时间,解析石头列出的每个位置,并为每个位置返回一次授予。该位置是 已融入物品的自定义数据中,所以 使用 指南针之后完全是本地运行——不再有服务器联系。

找到一个搬来的商人

原版将商人营地(以及潜能熔炉)视为 独特:一旦放置了一个,就会删除所有其他候选位置。由于只需走到范围内就能放置营地,所以你的商人或锻造坊最终落在哪里,取决于任何人碰巧经过的第一个地点——通常远在它对任何人变得重要之前就已决定。

推迟这件事的明显方法就是先不要放置营地。这是个陷阱,值得记下来。 区域系统.生成区域 呼叫 地点位置 仅当某个区域从未生成过时,才会调用 设置区域已生成 无论内部发生了什么——因此,一个放置被跳过的区域会被标记为已生成且为空, 永久地,而那个候选人再也无法主持这个站点。也不是 已放置实例位置 生成时记录的出生点开关:清除它不会移除任何东西,因为营地的对象早已作为ZDO存在,其生命周期比区域卸载更长。

因此,放置位置完全不受影响,而 演员 而是由商人NPC管理(或 升级站 (用于锻造)。每个候选营地都正常放置。站在其中的角色会在玩家进入原版自身范围时生成,并在玩家离开时再次移除,因此可以同时存在多个临时地点,且它们都不是最终确定。 打开商人商店 (或 打开潜能熔炉)确定了位置:所有其他临时角色都被永久销毁,原版的清理机制终于得以清除多余的候选者。

在已管理的星球上预先存在的熔炉会被自动锁定,而不是允许它为所有人禁用商人延迟——"已放置任何营地"的检查有意忽略了升级器站点。

游戏被要求拉近距离—— ZNetScene.InActiveArea(campPosition, refPos),一次用于主机的参考位置,一次用于每个对等端——而不是以米为单位测量,因此“原版范围”始终保持原版所定义的值。它有意不使用 区域已加载 或 获取所有玩家:专用服务器只加载自身参考位置周围的区域,并且从不为远程客户端实例化玩家,因此两者都无法得知任何人的实际位置。

手工重建那种触及范围才是陷阱,而《英灵神殿》1.0把它变成了一个漏洞。这原本是区域运算——营地区域对玩家区域,在 区域系统.当前活动区域 + 活动远距区域那两个字段不见了。当前活动区域现在是一个 服务器同步,玩家可配置 模拟距离 (获取同步模拟距离()),所以没有常数可供复制,其形状甚至不是区域的方形:在近距离2处,非经典, 在激活区域内进行网络场景点检测 与1.5区切比雪夫框相交,半径为1.75区,会裁剪掉角落。任何我们自己的运算都会成为玩家可以在其下更改的规则的第二份副本,而临时角色会在一个不再匹配服务器实际模拟距离的位置生成或消失。 ZNetScene.InActiveArea 是静态且公开的——使用它。

定居在服务器上通过远程过程调用运行,因为 显示商店界面 / 制作台.交互 是客户端侧的,且客户端不拥有任何敌对行为体的ZDO。settled标记依附于全局键,因此它会持久保存在世界存档中,并在无需模组自身任何同步的情况下到达客户端。指引优先选择已定居的行为体,其次是当前站立者中最近的一个,最后是最近的候选地点。

仅限新世界。 在一个原版已放置了商人营地的世界中,其他候选地点都已消失,再无任何可推迟的事项。系统会自行禁用,并在日志中说明一次;指南针照常工作。而在一个已受管理的世界中,已放置的锻造炉则会被锁定在原地。

冷却时间

默认禁用(冷却秒数 = 0,在这种情况下服务器完全不跟踪任何内容——不记录时间戳,查询直接短路。

启用后依然没有计时器。每次拾取石头时只在内存中保存一个时间戳,并在有人交互时惰性比较,因此开销仅为每次交互一次字典查找,每帧没有任何开销。映射是惰性的——只有石头实际被拾取时才会出现条目——并会在超过阈值后清除过期条目,将活跃集合限制在冷却窗口内被拾取的石头。

该状态刻意保存在内存中,因此 服务器重启时冷却时间会重置。

剩余次数

使用骑乘物品耐久度,提供原生提示计数,并通过物品的ZDO持久保存。 可修复 被禁用——没有它,工作台将重新填充使用次数。

状态

1.7.1 — 修复山岳知识石匹配(山峦符文石)。潜力熔炉罗盘+延迟定居点已在1.7.0版本中上线。

已针对真实的专用服务器完成端到端验证:插件在两侧均能注册,战利品交换能经受真实网络跳转,搜刮、命名、距离检测、相机瞄准、使用计数器、防刷机制以及最后一次使用后的销毁均表现正常。战利品冷却已在单人模式下单独验证,随后默认关闭。携带规则已确认在拾取和搜刮时均生效,因此指南针无法通过先丢弃再拾取的方式复制。

尚未演练:

  • 商人的位置重写。 它需要一个已安装该模组后生成的世界,且尚未在实时世界中观察过商人的生成、消失和定居过程。
  • 不可中断的镜头旋转。 原因已明确,修复也很小,但此后就再没玩过了。
  • 两名玩家同时连接,因此从未观察到共享冷却时间因另一名玩家的战利品而拒绝某名玩家的情况。该路径是服务器端的,两种情况下完全相同,但尚未被实际观察到发生。

制作人员

商人的传说石和希尔德任务指南针的行为改编自 找到哈尔多 经由 奇犽,经许可使用——商户目录、距离关卡和锁定模型均为其所有。

物品栏图标来自 指南针 PBR(Unity)CC0 由 卢西恩·帕维尔,发布于 CC0 并可在以下位置获取 opengameart.org/content/compass-pbrunity-cc0CC0 免除署名要求——此处署名是因为创作者值得这份认可,而非出于义务。

图标已嵌入插件程序集中,因此安装时仍只需一个DLL文件。仅使用图标;该物品在世界中的模型仍借用自原版预制体(克隆源物品)。

许可证

依据以下许可发布 MIT 许可证.

Valheim: 英灵神殿 的热门 MOD

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

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