ScriptHookVDotNet:用 C# 写 GTA V 脚本的原生函数调用插件
【免费下载链接】scripthookvdotnetAn ASI plugin for Grand Theft Auto V, which allows running scripts written in any .NET language on the .NET Framework runtime in-game.项目地址: https://gitcode.com/gh_mirrors/sc/scripthookvdotnet
ScriptHookVDotNet 是一款 GTA V 脚本插件(ASI 插件)。它把 .NET 脚本运行时装进游戏进程,让你用 C#、VB 等任何 .NET 语言写的脚本直接跑在 GTA V 里:原生函数调用、按键输入、每帧逻辑都有现成封装,不用自己碰 C++ 和内存。
为什么需要 GTA V .NET 脚本插件
不用脚本框架时,调用一个原生函数意味着:确认函数哈希、按游戏要求的顺序把参数压进无托管栈、处理字符串编码。更隐蔽的是线程问题——RAGE 引擎依赖线程本地存储(TLS),调用发生在错误的线程上下文里往往直接崩溃,排查起来很费时间。
还有生命周期:脚本跑在独立线程里,游戏每帧来 tick 你的逻辑,等待、暂停、终止时的资源清理,都得自己搭信号量和线程。
安装 ScriptHookV .NET 脚本插件:从 clone 到 scripts 文件夹
📦 前置条件:C++ Script Hook V、.NET Framework 4.8 以上、Visual C++ Redistributable。然后三步:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/sc/scripthookvdotnet - 把
ScriptHookVDotNet.asi和ScriptHookVDotNet2.dll、ScriptHookVDotNet3.dll一起放进GTA5.exe所在目录,升级时三者必须同版本一起换 - 脚本(编译好的 DLL,或 .cs/.vb 源码)放进游戏目录的
scripts文件夹
注意:游戏 v1.0.3258.0 及以上需要用 nightly 版 v3.6.0-nightly.89 或更新,否则得把游戏降到 3179.0 或以下。
.NET 脚本运行时替你收走的三件脏活
生命周期。继承Script基类后,Start()(默认开独立线程)、Pause()、Resume()、Abort()、Wait(ms)都是现成的。典型场景:做一个按 F8 开关的功能模块,切换时调Pause(),退出前把清理逻辑写进Aborted事件——线程和信号量都不用你管。
原生函数桥接。NativeFunc把 ScriptHookV.dll 里的栈操作(初始化、压参、调用、取返回值)包成了托管调用,字符串自动编码并固定内存,执行被调度回游戏线程的正确 TLS 上下文。你在Tick事件里写每帧逻辑,一句Wait(50)就能让脚本线程睡 50 毫秒,把时间还给游戏主循环。
事件分发。按键走KeyDown/KeyUp事件,不用自己轮询键盘。仓库 examples 里的 EuphoriaDemo 就是按键触发角色"风车臂"物理动作,逻辑集中在一个事件处理器里:
public class EuphoriaDemo : Script { public EuphoriaDemo() { KeyDown += (s, e) => { /* 按键触发 Euphoria 物理消息 */ }; } }ScriptHookVDotNet v2 与 v3 两套 API 怎么选
- 新脚本直接上 v3:nightly 版起 v3 是默认 API,实体类型更全,相机、武器、UI、游戏时钟都拆成了独立命名空间
- 存量脚本继续对 v2 构建也能跑,但 v2 不再加新特性,新版本里还会打印迁移警告
- 构建目标认准稳定版 API,别拿 nightly 的新接口发正式版——那些接口随时可能改
下一步去哪儿
- 入门读 examples/:EuphoriaDemo、ExitVehicle 都是完整脚本
- 想看底层:生命周期在 source/core/Script.cs,原生函数桥接在 source/core/NativeFunc.cs
- v3 全量 API 类型在 source/scripting_v3/
【免费下载链接】scripthookvdotnetAn ASI plugin for Grand Theft Auto V, which allows running scripts written in any .NET language on the .NET Framework runtime in-game.项目地址: https://gitcode.com/gh_mirrors/sc/scripthookvdotnet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考