为什么它有用
当你有多个修改同一游戏文件的模组时,TW3 只会加载该文件的一个修改版本,并覆盖所有版本。这种冲突很常见,并且可能会导致模组崩溃。脚本合并功能旨在减轻这个问题的困扰。
它的作用
尽管名称如此,Script Merger 可以检测 .bundle 包以及 .ws 脚本中的 mod 冲突。然后,它会通过创建冲突文本文件的合并版本来帮助您解决冲突。它不会修改原始文件,但会覆盖它们。
它无法合并非文本冲突 ,但对于这些,它可以帮助您管理自定义加载顺序(mods.settings 文件)以使某些模块覆盖其他模块。
使用这些第三方外部工具:
-
KDiff3 由 Joachim Eibl 编写,用于合并文本文件。
-
QuickBMS 由 Luigi Auriemma 编写,用于扫描和解压 .bundle 文件。
-
wcc_lite 由 CD Projekt RED 开发,用于将合并的文本文件打包成 .bundle 文件。
还包含来自
xxHash.NET 由 Wilhelm Liao 编写,用于检测 mod 更新何时更改了您合并的文件。
笔记
合并时,KDiff3 只需执行
文本合并 很多情况下,这种方法没问题。但由于该工具实际上并不理解代码,有时可能会以错误的顺序合并。自动解决的冲突并不能保证正确。在这种情况下,它需要人工帮助。
此外,脚本模组还可以
逻辑冲突 工具无法检测到。在这种情况下,即使文本可以合并而不会发生直接冲突,生成的脚本也无法正常工作。例如,如果模组 A 尝试
隐藏 HUD,然后是 Mod B
显示器 HUD 中,Mod A 不起作用。解决这个问题也需要人工帮助。
NMM 用户:目前,Script Merger 不支持
NMM的多高清模式 (或一般的符号链接)。
指示
1)下载、提取并启动 Script Merger。
2)在顶部的文本框中输入游戏的安装路径。
3)点击“冲突”列表上方的“刷新”按钮。
4)如果检测到可合并冲突,则重复以下步骤,直到冲突得到解决:
> 选择任意文件的两个或更多个版本进行合并。
> 点击“创建选定合并”按钮。
> 如果模块之间存在不重叠的差异,KDiff3 可以自动合并它们。
> 如果模组之间存在重叠的差异,KDiff3 将会显示,以便您手动合并。请参阅下方的教程视频。
> 如果脚本合并器无法找到修改文件的原始版本,则必须在出现 KDiff3 时手动合并所有差异。
5) 如果检测到非文本冲突,脚本合并器会显示这些冲突,但无法合并它们。因此,每个冲突中的一个模块将“获胜”并覆盖其他模块。获胜者的判定方式如下:
> 默认情况下,游戏按照文件夹名称的顺序加载模块 - 先是数字,然后是下划线,然后是字母(不区分大小写)。
> 或者,你可以右键点击其中一个模组来设置其优先级(1 到 9999,优先级较低的优先加载)。这里有一个很棒的
详细解释 作者:Kad_Venku。
6)玩!
7) 当您卸载或更新合并中包含的某个模块时,Script Merger 会检测到更改并提示您删除受影响的合并。如果您更新某个模块时,Script Merger 没有提示您删除该模块的任何合并,则表示这些合并未受到更新的影响。
教程视频 一般用法 (由于地鼠 & wghost81 )注意:Gopher 的教程虽然总体来说很有帮助,但建议手动编辑脚本合并配置文件。通常情况下,这没有必要,而且会增加配置错误的可能性。
使用 KDiff3这个视频 展示了几个 KDiff3 基础知识。这个视频 更深入一点。示例场景
修改 1 - modFOVTweak8070 (关联 )Mod 2 - modManualCam (关联 )内容\脚本\游戏\相机\战斗\customCamera.ws 内容\脚本\游戏\玩家\playerInput.ws 内容\脚本\游戏\玩家\r4player.ws Mod 3——modNoWitcherSense (关联 )如果我们成功合并所有 3 个版本
r4Player.ws ,则 Script Merger 会默认将合并后的脚本放在这里:
新模组 - mod0000_MergedFiles新的模组文件夹以“0000_”开头,以确保它在任何其他模组文件夹之前加载。(TW3 按 ASCII 顺序加载。)由于合并后的 r4Player.ws 版本会优先加载,因此非合并版本将被游戏忽略。
卸载
要撤消所有合并并将您的模组恢复到原始状态,请删除合并的模组文件夹(v0.5 中的 mod0000_MergedFiles,v0.4.3 中的 mod__MergedScripts)。 要从您的计算机中完全删除 Script Merger,请删除您下载的 .zip 文件中的文件以及生成的 MergeInventory.xml 文件(如果有)。