瓦尔海姆状态发射器

创作者: Proudlock_Technology
已更新:2026-06-09 19:55:40
22KB

关于此 MOD

gs仪表盘的服务端伴侣:世界里程碑、每位玩家的首领伤害、实时在线玩家加游戏内天数,以及服务端主导的战斗。与gs客户端伴侣配对使用。

瓦爾海姆統計發送器(伺服器端)

A 专用服务器 仅发布统计数据的模组 服务器 可以看到一个HTTP端点——默认情况下,自托管的 GS 仪表盘,但它会向任何 URL 发送 POST 请求。

与以下内容配对 瓦 伙伴程序(每位玩家安装用于个人数据统计)。两者都POST到同一端点;接收方按以下方式合并它们: 世界 + 玩家名称。

完整负载模式、键命名约定与合并规则 记录在 数据格式与自托管 维基。

到底为什么要服务器模组? Valheim将生物模拟交给任一 客户端 是最接近的,因此大部分战斗在客户端捕获。服务器仍然拥有 闲置 / 远处 生物(例如你潜行攻击的沉睡怪物),因此这个模组捕捉了这些——尤其是真正的背刺后 受创最深 - 以及服务器权威的世界进度里程碑。


这是什么

一个用于《英灵神殿》的BepInEx插件 专用服务器。它会修补 角色.远程伤害 和 角色.死亡时,轮询世界全局键,并定时向gs仪表盘POST累积的JSON快照。Boss通过以下方式识别 是首领单位 而不是硬编码列表,这样新Boss无需修改代码就能生效。累积计数器会持久化到 BepInEx/config/net.cproudlock.gsvalheimstats.state.tsv 并在重启后存活。

追踪内容

  • 世界里程碑(“任务”) - 击败首领、希尔德尔的请求赏金任务、首次击杀巨魔/焰灵等(来自世界全局密钥)
  • 每位玩家的首领伤害 为服务器拥有的首领
  • 武器伤害+最高单次打击 对于服务器拥有的生物(睡眠背刺的情况)
  • 在线状态 - 已连接玩家 + 游戏内天数 (在线玩家 / 世界日),在加入/离开时强制触发,以实现近乎即时的“现在在线”状态
  • 当前启用的模组列表 +世界标识(名称、主机、运行时间)

设置

  1. 安装到你的 专用服务器 (取决于 denikson-BepInExPack_Valheim). 把DLL拖进去 BepInEx/plugins/.

  2. 启动一次即可生成 BepInEx/config/net.cproudlock.gsvalheimstats.cfg,然后设置:

    [通用] World = vhserver3 # 你的服务器 -world 名称 EmitIntervalSeconds = 120 [数据采集] Url = http://localhost:3001/api/valheim/ingest # 可从服务器访问的仪表盘 Token = <持有者令牌>
    
  3. 重启服务器。累计计数器将持续保留到 BepInEx/config/<guid>.state.tsv.


运行它

dotnet build -c Release

没有本地开发循环。构建需要 Valheim 专用服务器程序集和 BepInEx 核心,因此它只能在游戏服务器虚拟机上编译,在那里 GsValheimStatsEmitter.csproj 点数 $(托管) 和 $(BepInEx核心)此仓库中没有任何内容可在工作站上构建。

成功的样子 构建成功。0 个错误,而 部署到服务器 正在将 DLL 复制到目标位置 BepInEx/插件.

部署

构筑 自行部署: 部署到服务器 每次成功后目标运行 释放 构建并将DLL复制到 $(DeployDir)所以整个流程就是把源代码复制过去,在那构建,然后重启。

scp src/Plugin.cs *.csproj manifest.json CHANGELOG.md \ cproudlock@10.9.50.213:/home/cproudlock/mod-valheim/ ssh cproudlock@10.9.50.213 'cd ~/mod-valheim && dotnet build -c Release'

然后重启服务器。使用安全重启脚本,千万不要 服务器重启,这永远不会通过 qemu 客户机代理返回,并留下一个陈旧的 lgsm/lock/vhserver-stopping.lock 它却会无声地阻止后续每一次启动:

setsid /home/cproudlock/vhserver3/vh-safe-restart.sh >/dev/null 2>&1 & # 然后轮询 /tmp/vh-safe-restart.log 以查找 RESULT: 行

之后确认 加载中 [GsValheimStatsEmitter <version>] 和 [gs] 数据接入状态:200 在 BepInEx/LogOutput.log.

注意版本位于 三 必须同意的地点: <版本> 在csproj中, 版本号 在 manifest.json,以及 版本 恒常于 src/Plugin.cs仪表盘记录了最后一次,因此模组列表中会出现不匹配。

自己导入数据

与客户端模组相同的合约——一个经过认证的 帖子 一个JSON快照(关于最小接收器 + curl 测试,请参阅该模组的README)。

载荷 (服务器):

{ "schemaVersion": 1, "game": "valheim", "source": "server", "world": "vhserver3", "hostName": "Proudlock VH Server 3", "serverStartedAtUtc": "2026-06-09T11:32:00Z", "onlinePlayers": ["Erebus", "Pridetoes"], "worldDay": 12, "emittedAtUtc": "2026-06-09T18:00:00Z", "snapshotIdLocal": "9a6b...", "players": [{ "name": "Erebus", "boss": [{ "boss": "Eikthyr", "kills": 1, "damageDealt": 1450, "fightSec": 95 }], "weapons": [{ "weapon": "Knives", "damageDealt": 80, "kills": 2, "hardestHit": 79 }] }], "bossKillEvents": [{ "boss": "Eikthyr", "fightSec": 95, "firstBlood": "Erebus", "topDamagePlayer": "Erebus", "topDamage": 1450, "participants": 2, "tsUtc": "..." }], "milestones": [{ "key": "defeated_eikthyr", "label": "赤血灵鹿已击败", "kind": "boss", "tsUtc": "..." }], "mods": [{ "guid": "Azumatt.AzuCraftyBoxes", "name": "AzuCraftyBoxes", "version": "1.8.14", "author": "Azumatt", "folder": "Azumatt-AzuCraftyBoxes-1.8.14" }] }

正在合并客户端与服务器数据流

每次喂食都会报告生物信息 它 模拟,所以它们是不相交的。接收者应该:

  • 总和 造成伤害 / 击杀 每 (玩家, 武器) 在这两者之间 来源秒(精确总数,不重复计算,因为单次命中只会由一方处理),并且
  • 拿走 最大 的 最重打击.

游戏仪表盘通过按来源分行以及 总和 / 最大值(...) 在读取时。

Valheim: 英灵神殿 的热门 MOD

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

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