脚本字符串清理

脚本字符串清理

ScriptHookDotNet 1.7.1.9 的内存泄漏修复,适用于 GTA IV、The Lost and Damned 和 The Ballad of Gay Tony。

SCRIPTSTRINGCLEANUP
针对 ScriptHookDotNet 1.7.1.9 的内存泄漏修复,适用于 GTA IV、The Lost and Damned 和 The Ballad of Gay Tony。


问题
每当脚本按名称调用游戏函数时,ScriptHookDotNet 会将该名称以及随其传递的任何文本复制到内存中。它有一个函数用于释放这些副本,但脚本永远不会执行到它,因此它们在整场游戏会话中不断堆积。运行几个脚本模组时,每分钟就会产生数十万份副本。

最终游戏会耗尽内存。在发现此问题的配置上,这大约需要一个小时。表现为来自下一个恰好发起请求的脚本的 OutOfMemoryException 错误、屏幕上每隔几秒重复出现的脚本错误,以及脚本中止。没有任何脚本模组对此负责,移除一个只会减慢其发生速度。


修复
这会每秒调用几次 ScriptHookDotNet 自带的清理功能。仅此而已。


安装
解压到游戏文件夹(包含 GTAIV.exe 的那个文件夹),使文件位于 scripts\ScriptStringCleanup.cs。
除 ScriptHookDotNet 外不需要其他模组,且无需按特定顺序加载。


检查是否生效
scripts\ScriptStringCleanup.log 会显示 "ready",并每分钟添加一行,记录它释放了多少字符串。
如果显示 "doing nothing",说明你使用的 ScriptHookDotNet 版本不包含它所使用的部分,它会保持不介入状态。


卸载
删除 scripts\ScriptStringCleanup.cs 和 scripts\ScriptStringCleanup.log。