模组简介

这个模组是面向《侠盗猎车手4》脚本开发爱好者的核心运行库扩展分支,由Priler基于HazardX原版ScriptHookDotNet二次开发而来,专门针对完整版本(CE)做适配优化,解决了原版在部分游戏版本下运行雨效相关自定义脚本时出现的逻辑异常问题,同时修复了长期存在的内存泄漏bug与多个零散小故障。它主要给所有使用.NET框架开发《侠盗猎车手4》自定义脚本的创作者,以及大量依赖该运行库才能正常启动的自定义脚本模组的普通玩家使用,填补了原版ScriptHookDotNet对后续新发布的游戏版本兼容性不足的缺口,很多此前无法在完整版游戏里正常运行的.NET脚本类模组,都可以依托这个修复后的分支版本正常加载生效。

功能要点

  • 重写了原版存在缺陷的雨效相关逻辑代码,解决了不少依赖雨效触发判定的自定义脚本运行时出现的逻辑报错、脚本意外终止问题,让和天气系统联动的.NET自定义脚本可以稳定运行。
  • 修复了原版长期存在的内存泄漏问题,玩家长时间启动游戏挂载多个.NET自定义脚本游玩后,不会出现游戏占用内存持续异常攀升、后期卡顿甚至直接闪退的情况,大幅提升长时段游玩的稳定性。
  • 新增了对《侠盗猎车手4》完整版本的原生适配支持,配套加入的aCompleteEditionHook.asi文件可以补全完整版游戏缺失的钩子偏移,不需要玩家手动查找对应版本的偏移文件就能完成运行库的适配加载。
  • 保留了原版ScriptHookDotNet的全部底层API接口,绝大多数基于原版开发的.NET自定义脚本不需要修改任何代码就能直接在这个分支版本下运行,保证了向下兼容性,避免玩家此前收集的大量老脚本模组全部失效。

前置依赖

运行这个修复版本的ScriptHookDotNet之前,你需要先确认游戏根目录下已经部署好《侠盗猎车手4》对应的原版C++基础脚本钩子,该基础钩子是所有asi格式脚本、基于.NET框架开发的自定义脚本能够正常加载的核心前提。如果缺少该前置,本模组包含的所有asi和dll文件都无法被游戏正常识别加载,相关的.NET脚本模组也会完全失效。原文未给出的其它未提及的前置项以压缩包内说明为准。

安装方法

所有文件的部署逻辑和原版ScriptHookDotNet保持一致,你可以按照对应的步骤完成部署:首先找到《侠盗猎车手4》游戏的根目录文件夹,将模组包内的ScriptHookDotNet.asi文件放到该目录下;如果你使用的是《侠盗猎车手4》完整版本,还需要将同包内的aCompleteEditionHook.asi文件放到和ScriptHookDotNet.asi相同的根目录位置,和游戏主程序放在同一文件夹内。其余配套的dll类支持文件的放置要求以压缩包内说明为准,不要随意将脚本运行库的核心文件放到游戏的子文件夹内,否则游戏启动时将无法自动扫描识别到钩子文件,导致整个运行库加载失败。

兼容性与注意事项

这个分支版本支持的游戏版本范围覆盖了《侠盗猎车手4》1.0.1.0到1.0.7.0的所有普通版本,同时支持自由城之章EFLC 1.1.1.0到1.1.2.0的版本,也专门适配了《侠盗猎车手4》完整版1.2.0.59版本。需要注意的是,完整版游戏必须额外放置aCompleteEditionHook.asi文件才能正常使用,缺少这个文件会导致运行库完全无法启动。

该模组目前仍处于持续测试优化的阶段,开发作者还在和各类不同的自定义脚本做适配测试,进一步打磨向下兼容能力,如果你在使用过程中发现部分老脚本出现运行异常,可以等待后续更新版本发布来修复相关问题。另外不要同时在游戏根目录下放置多个不同版本的ScriptHookDotNet分支文件,多个同类钩子文件同时存在会产生加载冲突,导致游戏启动直接崩溃。如果你此前安装过其他版本的ScriptHookDotNet,建议先将旧版本的相关核心文件从游戏目录内移除,再部署当前这个修复分支的文件,避免文件互相覆盖产生不可预期的运行错误。

常见问题

  • 安装完这个版本之后,之前用旧版ScriptHookDotNet的脚本还能正常用吗?只要是基于原版ScriptHookDotNet公开API开发的合法脚本都可以直接运行,不需要做任何修改,只有极少数调用了原版底层私有未公开接口的特殊脚本可能需要做少量适配,这类情况非常少见。
  • 我用的是普通版《侠盗猎车手4》,需要额外放aCompleteEditionHook.asi文件吗?不需要,这个文件仅为完整版本的游戏提供适配支持,普通旧版本游戏放置这个文件反而可能出现加载冲突,只需要部署核心的ScriptHookDotNet.asi文件即可。
  • 启动游戏之后提示找不到ScriptHookDotNet相关组件是什么原因?首先检查你有没有正确把核心文件放到游戏根目录,其次确认你当前使用的游戏版本在支持的版本列表范围内,如果你的游戏版本高于官方列出的最高支持版本,运行库会因为找不到对应的内存偏移无法完成加载。