将 Valheim 中每个硬编码的玩家技能数值放入配置文件中。基于 Valheim 构建 1.0.x 和 BepInEx 5.4.23.
促使制作此模组的例子:一把弓需要 2.50秒 在弓0和 0.50 秒 弓术达到100,游戏里没有任何办法改变这一点。有了这个模组:
[弓] 技能0时拉弓时间倍率 = 1.2 ## 2.5 * 1.2 = 技能0时3.00秒 技能100时拉弓时间倍率 = 0.4 ## 2.5 * 0.4 = 技能100时1.00秒
配置文件: BepInEx/config/neocor.SetUpSkills.cfg编辑会在下次重新加载时生效——该文件受到监视,因此在服务器上无需重启即可重新调整。
📖 WIKI.md 是完整配置指南每个设置都用通俗易懂的语言解释,表格中列出原始数值,提供现成的预设方案,还有故障排除指南。每个设置还会在生成的文件内以注释形式附带自己的说明。 .cfg.
所有客户端都必须安装此模组。 瓦尔海姆在拥有玩家的机器上计算所有技能效果: 角色.获取技能系数() 返回 0 对于任何不是本地的东西
玩家,以及使用它的方法(玩家.更新攻击弓拉弓, 玩家.检查奔跑,
物品掉落.物品数据.获取消耗耐力值, 攻击.连发投射物, ...) 永远只在那里运行。伤害在攻击者客户端上随机生成,只有结果通过网络发送。仅服务器安装不会有任何改变。
| 哪里 | 什么 |
|---|---|
| 客户端 | 掉落 设置技能.dll 进入 瓦尔海姆/BepInEx/插件/. |
| 专用服务器 | 为Valheim安装BepInEx整合包,将同一个DLL放入其 BepInEx/plugins/,并使用以下命令启动服务器: 启动服务器BepInEx.bat — 存货 启动无头服务器.bat 不加载Doorstop。 |
在服务器上也安装它是可选的,但推荐这么做:服务器随后会将它的配置分发给每个安装了该模组的客户端,这样所有人都在相同的平衡设置下游戏。参见 服务器同步玩家 无 模组仍可加入;它们只是保留原版数值。
其中每一项都会替换一个原版常量。默认值即原版数值,因此未修改的配置文件与原版逐位相同。
| 章节 | 设置 | 香草 | 它控制什么 |
|---|---|---|---|
弓 |
技能0抽取时间倍率 / 技能100时 |
1.0 / 0.2 | 将时间绘制为武器时间的倍数。 绘制持续时间最小值 (每把弓2.5秒)。 |
弓 |
技能0时的绘制时间秒数 / 技能达到100 |
0 / 0 | 绝对蓄力时间(秒),忽略武器基础值。两者必须均大于0才能覆盖乘数设置。 |
弩 |
技能0时换弹时间倍率 / 技能100级 |
1.0 / 0.5 | 装填时间倍率为 装填时间. |
战斗 |
技能100时耐力消耗减少 |
0.33 | 技能达到100时,拔刀不再消耗耐力。 |
战斗 |
技能满级时绘制灵力消耗降低 |
0.33 | 埃特尔也一样。 |
战斗 |
技能100时攻击耐力消耗降低 |
0.33 | 技能达到100时,攻击不再消耗耐力。 |
战斗 |
技能100时攻击削减乙太 |
0.33 | 攻击的埃特消耗。 |
战斗 |
技能100时攻击降低生命值 |
0.33 | 攻击的生命值消耗(血魔法)。 |
伤害 |
技能零时最小系数 / 技能100时最大系数 |
0.4 / 1.0 | 随机散布前的伤害倍率。 |
伤害 |
随机范围 |
0.15 | 伤害掷骰的半宽。 0 造成固定伤害。 |
格挡 |
技能100格挡加成 |
0.5 | 额外格挡能力,以基础值的分数表示。 |
跑 |
技能0时耐力倍率 / 技能100级时 |
1.0 / 0.5 | 奔跑耐力消耗。 |
奔跑 |
技能100时速度加成 |
0.25 | 额外奔跑速度(+25%)。 |
潜行 |
技能0时耐力倍率 / 技能100时 |
1.0 / 0.25 | 潜行耐力消耗。 |
潜行 |
耐力指数 |
0.5 | 潜行耐力曲线的形状。原版是平方根; 1.0 使其线性化。 |
潜行 |
潜行基地技能100 / 轻量化潜行技能100级 |
0.2 / 0.4 | 在黑暗中的可见度与环境光的权重,技能100时。越低越隐蔽。 |
闪避 |
体力倍率技能0 / 技能达到100时 |
1.0 / 0.5 | 闪避耐力消耗。 |
跳跃 |
技能100级时的强制奖励 |
0.4 | 额外跳跃力(+40%),向上并向前。 |
建筑 |
技能100时耐力消耗 |
0.5 | 技能达到100时,移除建造耐力消耗。 |
建筑 |
耐久度损耗倍率 |
1.0 | 缩放工具自身的 最大放置耐久度. |
[曲线])每个技能三个数值,共24个技能:
[Curve] Bows.Level0Factor = 0 ## 技能在0级时的数值 Bows.Level100Factor = 1 ## ……以及100级时的数值 Bows.Exponent = 1 ## 1 = 线性,>1 = 后期收益高,<1 = 前期收益高
这会重新映射技能因子本身,使其达到 一切 该技能涉及的内容——包括由预制件中存储的数值驱动的效果,这些是B层无法触及的:游泳耐力、钓鱼耐力、农耕收获范围、制作速度和额外产出几率、放置耐久度以及骑乘。
A层与B层共同作用。A层决定收益随等级提升的速度;B层决定最终收益落点。设置 弓箭.100级系数 = 0.75 使用默认图层B时,绘制时间为 Lerp(2.5, 0.5, 0.75) = 1.0 秒 技能达到100时——结果与顶部示例相同,但也会随弓术提升而增强 伤害 同理,当你只想要一个效果时使用图层B,当你想要整个技能时使用图层A。
[经验])| 设置 | 香草 | 效果 |
|---|---|---|
<技能>.获得倍率 |
1.0 | 每项技能获得的经验值。可与世界修正叠加。 |
曲线指数 / 曲线缩放 |
1.5 / 0.5 | 经验墙: 向下取整(等级加一)的1.5次方乘以0.5加0.5。指数越低,升级越快。 |
死亡损失系数 |
-1 | 死亡时每个技能损失的比例。 -1 保留游戏自身的价值(0.05); 0 毫无损失。 |
等级上限保持100级。提高上限就意味着要重写 技能.技能.提升 和
等级 / 100 除数,这涉及存档数据,因此故意不在范围内。
与 [ServerSync] 服务器是否具有权威 = 真 (默认设置,仅在服务器上读取)服务器在客户端连接时,通过名为以下名称的路由RPC将其完整配置发送给每个客户端
技能配置。客户端会应用它 仅内存中 — 它自己的 .cfg 磁盘上的内容永远不会被写入,本地值会在断开连接的瞬间恢复。在运行中的服务器上编辑配置文件会重新加载它,并重新推送给所有已连接的玩家。
客户端绝不向任何地方发送配置,服务器也绝不接受来自客户端的配置。
| 目标 | 种类 | 为什么 |
|---|---|---|
技能.获取技能系数 |
后缀 | A层曲线。 |
类人型.获取攻击抽取百分比 |
前缀 | 需要一个不同的基础,而不仅仅是一个不同的终点。 |
武器装载时间 |
前缀 | 一样。 |
物品掉落.物品数据.获取消耗体力值 / 获取绘制法力消耗 |
前缀 | 双线法。 |
攻击.获取攻击以太(角色, 物品数据) |
前缀 | 两行法。 |
获取随机技能系数 / 获取随机技能范围 |
前缀 | 掷骰及其提示框,保持同步。 |
物品掉落.物品数据.获取格挡值(整数, 浮点数) |
前缀 | 双线法。 |
玩家.获取位置耐久度 |
前缀 | 缩放预制体字段,而非常量。 |
提升技能, 技能.技能.获取下一级需求, 死亡时技能 |
前缀 | 经验。 |
攻击.获取攻击耐力, 攻击.获取攻击生命值, 角色.跳跃, 玩家.检查奔跑, 玩家.获取奔跑速度系数, 玩家.潜行中, 玩家.更新潜行, 玩家.获取闪避体力消耗, 玩家.获取耐力等级 |
转译器 | 技能常量在方法内是唯一的,所以只替换那个字面量就能让其他所有原版逻辑继续运行。比起重写,这在游戏更新中要稳健得多。 |
每个补丁独立安装。如果游戏更新重命名了某个方法或移动了某个常量,那一个效果会回退到原版,日志中会出现警告——其余部分继续正常工作。设置 [常规] IsDebug = true 查看计算后的数值以及哪些转译器命中。
[通用] 已启用 = 否 把每个开关恢复为原版默认值而不卸载任何内容,转译后的代码也是如此(它无法在运行时撤销补丁,因此会改为查找原版常量)。
使用.NET SDK:
dotnet build SetUpSkills\SetUpSkills.csproj -c Release
用以下内容覆盖游戏路径 -p:ValheimPath="C:\Path\To\Valheim" 如果它没有开启 G:.
没有SDK, 构建脚本.ps1 自己找到了一个C#编译器,并且 package.ps1 生成 Thunderstore 压缩包:
powershell -ExecutionPolicy Bypass -File SetUpSkills\build.ps1 powershell -ExecutionPolicy Bypass -File SetUpSkills\package.ps1
备用路径可能会落在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe,它只懂 C# 5。源内容目前仍在该子集内——没有字符串插值,没有 名称,否 ?。,没有表达式主体成员——所以两种构建路径都能工作。只有当你也不再使用 build.ps1.

修改前置工具
2026-09-12 14:33:53
修改前置工具

史诗战利品
randyknapp2026-09-09 21:20:10
为英灵神殿添加战利品掉落、魔法物品和附魔。

制作 建造 熔炼 烹饪 燃料 从容器中取出
aedenthorn2025-06-30 08:34:14
让你在制作、建造、使用熔炉和窑炉、添加燃料、烹饪食物等时,可以使用附近容器中的资源。

种植一切
Advize2025-09-09 11:15:37
重写了bkeyes93的种植增强模组。允许你的种植者种植浆果丛、蓟、蒲公英、蘑菇、此前无法获取的树种以及其他装饰性植物。还包括许多其他杂项功能(详见

无限制传送门
frostedplaything4102023-09-02 17:39:40
无限制传送门是一个客户端模组,允许玩家通过传送门传送任何物品。该模组提供广泛的自定义选项,让玩家能够控制物品限制、移除限制,

农场格子
Sarcenzzz2023-06-14 11:38:34
允许所有通过种植器种下的植物自动对齐并放置在网格中,确保它们有足够的生长空间。

更好的UI
MKMasa2021-04-15 09:19:42
这个模组对游戏界面做了一些细微的调整。你可以编辑并选择想要启用的更新内容。

更好的射箭
Ishid42026-09-10 16:16:51
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。