
f2g DLL Mod加载器
从单一文件夹加载STALKER 2的DLL模组,这样模组就不必再争抢位于exe旁边的少数代理文件名(winmm.dll、version.dll、dwmapi.dll...)。
查看大图一个文件夹,存放你所有的 DLL 模组。再也不用为 winmm.dll 争抢了。支持 Vortex。不安装任何钩子,不修补任何内容。
[center][size=6][b]F2G DLL 模组加载器[/b][/size]
[size=3][color=#8a9a5b][i]每个 DLL 模组都想成为 winmm.dll。现在它们都不必了。[/i][/color][/size]
[line]
[color=#D4D4D8]把模组的 DLL 丢进一个文件夹。它就会加载。这就是全部思路。[/color][/center]
[size=4][color=#f0a500][b]▌ 它的作用[/b][/color][/size]
[color=#D4D4D8]本游戏的 DLL 模组会劫持一个 Windows 库名来让自己被加载——winmm.dll、version.dll、dwmapi.dll、uxtheme.dll。这些名字就那么几个,而每个名字只能容纳一个文件,所以第二个选择 winmm 的模组会静默替换掉第一个。没有报错。没有警告。它就是不见了。
这个加载器终结了这一切。它占用了一个没有模组使用的名字(wintrust.dll),并从那里加载它在以下位置找到的每一个 DLL:
[b]Stalker2\Binaries\Win64\s2mods\[/b]
按名称排序,一个接一个,原地加载。模组可以将配置放在自己旁边,将日志写在自己旁边,一如既往。无需任何配置。[/color]
[size=4][color=#f0a500][b]▌ 设计上安全[/b][/color][/size]
[list]
[*][b]它不安装任何钩子,也不修补任何内存。[/b]它将全部 127 个 wintrust 调用转发给真正的 Windows DLL,并加载其他文件。这就是它的全部工作。[/*]
[*][b]成就保持可用。[/b]游戏会为已注册的模组禁用成就——DLL 不算注册模组,这个加载器也不算。[/*]
[*][b]没有 pak,不碰游戏文件,不改存档。[/b][/*]
[*]如果一个模组同时也以旧的代理名放在 exe 旁边,它会被跳过,日志会说明——不会有任何东西被加载两次。[/*]
[*]卸载:删除 wintrust.dll 和 s2mods 文件夹。这就是全部痕迹。[/*]
[/list]
[size=4][color=#f0a500][b]▌ 安装[/b][/color][/size]
[b]Vortex[/b]
[color=#D4D4D8]像任何其他模组一样安装并启用。压缩包保留了游戏的文件夹结构,所以它会自动落到正确位置。完成。[/color]
[b]Windows,手动安装[/b]
[color=#D4D4D8]1. 将压缩包中的 [b]Stalker2[/b] 文件夹拖到你的游戏文件夹上并让它合并:
[i]...\steamapps\common\S.T.A.L.K.E.R. 2 Heart of Chornobyl\[/i]
2. 你将得到 [b]Stalker2\Binaries\Win64\wintrust.dll[/b] 以及旁边的一个 [b]s2mods[/b] 文件夹。
3. 启动。完成。[/color]
[b]Linux / Steam Deck (Proton)[/b]
[color=#D4D4D8]1. 相同的文件,相同的位置。
2. Steam → 右键游戏 → 属性 → 启动选项:
[b]WINEDLLOVERRIDES="wintrust=n,b" %command%[/b]
3. 启动。
第 2 步是[b]必需的[/b]——没有它,Proton 会加载它自己的 wintrust,加载器永远不会运行。没有报错,没有日志。那种沉默就是症状。
[b]还在运行其他代理式 DLL 模组?[/b]一个覆盖项,名字之间用逗号分隔:
[b]WINEDLLOVERRIDES="wintrust,winmm,version=n,b" %command%[/b][/color]
[size=4][color=#f0a500][b]▌ 添加模组[/b][/color][/size]
[color=#D4D4D8]将此加载器列为前置要求的模组会直接安装到 [b]s2mods\[/b]——通过 Vortex 或手动均可。无需其他操作。
可选:一个文本文件 [b]Win64\s2mods.txt[/b],每行一个条目,如果你需要保留某个文件但不加载它,或强制某个文件优先加载:
[i]0 s2mods\SomeMod.dll[/i] — 存在,但从不加载
[i]1 s2mods\First.dll[/i] — 在按字母顺序扫描之前加载
以 # 开头的行是注释。[/color]
[size=4][color=#f0a500][b]▌ 它加载了吗?[/b][/color][/size]
[color=#D4D4D8]一个文件 [b]s2loader.log[/b] 会出现在 wintrust.dll 旁边,每次启动都会被重写。第二行是加载器版本;然后每个 DLL 一行——已加载、已跳过或失败,以及原因。最后以一个计数结尾:
[i]total: 3 loaded, 0 skipped, 0 failed[/i]
[i]ALREADY LOADED FROM GAME DIR[/i] 表示同一个 DLL 也作为代理放在 exe 旁边。删除其中一个副本。
出了问题,就把日志粘贴到错误报告中。写这个日志就是为了回答这个。[/color]
[size=4][color=#f0a500][b]▌ 致模组作者[/b][/color][/size]
[list]
[*]打包为 [b]Stalker2\Binaries\Win64\s2mods\YourMod.dll[/b](加上你的 .cfg / .ini)。将本页面列为前置要求。[/*]
[*][b]不要捆绑 wintrust.dll。[/b]两个模组都附带它意味着最后安装的那个胜出,版本会漂移。[/*]
[*]你的 DLL 按路径加载。它的文件名随意——不再需要是系统库名。[/*]
[*]它被原地加载。像往常一样,在你自己的模块旁边解析你的配置(GetModuleFileName)。[/*]
[*]限制:一个必须转发它所冒充的库的导出的模组,仍然必须以那个名字放在 exe 旁边。加载器在游戏第一次调用 wintrust 时运行——算早,但不是最先。[/*]
[/list]
[size=4][color=#f0a500][b]▌ 要求[/b][/color][/size]
[color=#D4D4D8]无。任何较新的游戏版本均可——它不碰游戏代码,所以更新不会破坏它。[/color]
[center][line]
[size=2][color=#8a9a5b][i]祝狩猎顺利,潜行者。一个文件夹。检查一次。[/i][/color][/size][/center]
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。