MOD 兼容性是七日杀 MOD 玩家最头疼的问题之一。版本不匹配、数值冲突、UI 显示异常都很常见。这篇文章总结常见兼容性问题和修复方法。
版本兼容性
版本区间说明
七日杀的 MOD 兼容性通常按版本区间划分:
| 版本区间 | 兼容性说明 |
|---|---|
| A16 及之前 | 基本不兼容新版本 |
| A17-A21 | 同区间内大部分兼容 |
| V1.0-V1.1 | 同区间内兼容 |
| V2.x-V3.x | 向后兼容但可能有变化 |
版本适配方法
方法一:修改版本检测
如果 MOD 内有版本检测逻辑:
<!-- 修改 MOD 的版本检测 -->
<property name="MinVersion" value="V1.0"/>
<property name="MaxVersion" value="V3.1"/>
方法二:重新编译 DLL
如果 MOD 使用了已弃用的 API:
- 获取新版本的
Assembly-CSharp.dll - 更新引用
- 修复编译错误
- 重新发布
XML 冲突修复
问题:两个 MOD 修改同一物品
场景:MOD A 增加了手枪伤害,MOD B 修改了手枪弹匣大小,两者都修改了 items.xml 中的 gunPistol。
解决方案:创建合并 MOD
<!-- 合并 MOD:同时包含 A 和 B 的修改 -->
<item name="gunPistol">
<effect_group>
<!-- 来自 MOD A -->
<passive_effect name="EntityDamage" operation="base_add" value="10"/>
<!-- 来自 MOD B -->
<property name="MagazineSize" value="20"/>
</effect_group>
</item>问题:XML 标签覆盖
场景:后加载的 MOD 完全覆盖了先加载 MOD 的修改。
解决方案:调整文件夹名排序,让重要的 MOD 后加载。
01-base-mod/ ← 先加载(被覆盖)
02-override-mod/ ← 后加载(覆盖前者)
问题:XPath 冲突
V2.0+ 支持 XPath MOD,可以精确定位修改目标:
<!-- 使用 XPath 精确修改,避免覆盖 -->
<append xpath="/items/item[@name='gunPistol']/effect_group">
<passive_effect name="EntityDamage" operation="base_add" value="5"/>
</append>
DLL 冲突修复
问题:Harmony 补丁冲突
症状:多个 MOD 的 Harmony 补丁修改同一方法,导致功能异常。
解决方案:使用 Priority 属性控制执行顺序
[HarmonyPatch(typeof(ClassName))]
[HarmonyPatch("MethodName")]
[HarmonyPriority(Priority.High)] // 高优先级先执行
static void Postfix() { }
[HarmonyPatch(typeof(ClassName))]
[HarmonyPatch("MethodName")]
[HarmonyPriority(Priority.Low)] // 低优先级后执行
static void Postfix() { }问题:DLL 版本不匹配
症状:MOD 编译时使用的 API 版本与游戏不一致。
解决方案:
- 下载对应游戏版本的
Assembly-CSharp.dll - 更新项目引用
- 修复编译错误
- 重新编译
UI 显示问题
问题:文本偏移
症状:MOD 添加的 UI 元素位置不对。
修复方法:调整 XML 中的 UI 坐标参数
<rect pos="0,0,100,30" anchor="0,0,0,0"/>
<!-- 调整位置 -->
<rect pos="10,5,100,30" anchor="0,0,0,0"/>
问题:图标重叠
症状:多个 MOD 的图标重叠显示。
修复方法:为每个 MOD 使用唯一的图标资源
<property name="CustomIcon" value="myUniqueIcon"/>
数值冲突修复
问题:属性叠加异常
场景:多个 MOD 修改同一属性,数值叠加不符合预期。
修复方法:检查 operation 类型
| operation | 效果 | 注意事项 |
|---|---|---|
| base_add | 基础值叠加 | 多个 MOD 会累加 |
| perc_add | 百分比叠加 | 可能导致数值爆炸 |
| base_set | 直接设置 | 后加载的会覆盖 |
建议:使用 perc_add 时注意上限控制
<!-- 限制最大伤害加成 -->
<passive_effect name="EntityDamage" operation="perc_add" value="0.5"
tags="max0.5"/>
排查流程
- 定位问题:确定是哪个 MOD 导致的问题
- 查看日志:检查
output_log.txt中的错误信息 - 对比配置:检查冲突 MOD 的 Config 文件
- 测试修复:逐个测试修复方案
- 验证效果:确认修复后功能正常
参考来源
- 七日杀中文MOD网 兼容性修复:https://www.7risha.com/81907.html
- UI冲突修复案例:https://www.7risha.com/47033.html
- 模型高度异常排查:https://www.7risha.com/76743.html