#bindings #scripthookv #gta #natives

scripthookv-rs

ScripthookV的Rust绑定

9个版本

0.3.0 2022年3月26日
0.2.1 2021年12月31日
0.1.6 2021年12月24日

960游戏开发

每月下载 30

MIT 许可证

56KB
1.5K SLoC

scripthookv-rs

scripthookv-rs为ScriptHookV和GTA 5原生提供了Rust绑定。

免责声明:此crate仍在早期开发阶段,API可能会更改。

Crate

libscripthookv-sys

此crate包含无任何包装的ScriptHookV原始绑定。

安装

将以下内容添加到您的cargo.toml依赖项中

libscripthookv-sys = "0.1.0"

scripthookv-rs

此crate包含ScriptHookV的包装API

安装

将以下内容添加到您的cargo.toml依赖项中

scripthookv-rs = "0.3.0"
once_cell = "1.9.0"
winapi = { version = "0.3.9", features = [ "consoleapi", "winuser", "wincon" ] }
async-trait = "0.1.52"

scripthookv-rs-gta

此crate包含GTA 5原生的包装API。应与scripthookv-rs crate一起安装。

安装

此crate尚未发布。

用法

入口点

对于您的入口点,您可以使用shv_entrypoint宏。此宏为您生成一个DllMain。

extern "C" fn script_main() {
  loop {
    // On tick logic

    script_yield();
  }
}

#[shv_entrypoint]
fn entrypoint(module: ModuleHandle) -> ScriptHookV {
  ScriptHookVBuilder::new(module)
    .script(script_main)
    .build()
}

原生

原生可以直接使用native_call宏调用,如下所示

call_native!(Vehicle, 0xAF35D0D2583051B0, adder_hash, coords, heading, false, false, false);
//           ^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//       Return type         Native hash                                        Parameters

或者,您可以使用我的nativedb生成类似于natives.h文件的包装。

路线图

  • 包装所有ScriptHookV函数*。
  • 所有crate的专用readme。
  • 为ScriptHookV提供更优雅的包装。
  • 为大多数原生提供优雅的API。
  • 提供一个类似于LemonUI的UI crate。
  • 自动测试。

* 排除已弃用的函数。

贡献

欢迎提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。

鸣谢

许可证

MIT

依赖

~5–17MB
~190K SLoC