#lua #lua-jit #glua #gmod #api-bindings #gluac

bin+lib gluac-rs

Rust 包,用于将 Garry's Mod Lua 编译成字节码

2 个版本

0.1.3 2021 年 6 月 23 日
0.1.1 2021 年 6 月 5 日
0.1.0 2021 年 6 月 5 日

编程语言 分类中排名第 698

MIT 许可协议

27KB
604

👨‍💻 gluac-rs

使用 Rust 编译 Garry's Mod Lua 成字节码!

特性

  • 兼容 Windows 和 Linux
  • 支持游戏的 32 位和 64 位版本(但您必须为正确的目标编译)
  • 线程安全

使用方法

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
gluac-rs = "*"

parking_lot 支持

此包支持 parking_lot Mutex,只需添加 parking_lot 功能标志,如下所示

[dependencies]
gluac-rs = { version = "*", features = ["parking_lot"] }

示例

// A utility macro for user-friendly generation of Lua-compatible CStrings.
use gluac::lua_string;

// The instance of our bytecode compiler. This internally creates and prepares a Lua state and closes it when dropped.
let compiler: BytecodeCompiler = gluac::compiler();

// Compiling a Lua source code string
let result: Result<Vec<u8>, BytecodeError> = compiler.compile_string(lua_string!(r#"print("Hello, world!")"#));
...

// Compiling a file
let result: Result<Vec<u8>, BytecodeError> = compiler.compile_file(lua_string!(r#"path/to/file.lua"#));
...

依赖项

此包需要在可执行文件同一目录中存在一些依赖项。

查找位置

您可以在 Garry's Mod 安装目录中找到这些库,它们似乎在不同的平台和分支上有多个路径,所以以下是所有我知道的路径

  • bin/
  • bin/win64
  • bin/linux32
  • bin/linux64
  • garrysmod/bin

请确保使用与您的游戏分支(32 位/64 位)对应的正确依赖项

Windows

  • lua_shared.dll
  • tier0.dll
  • vstdlib.dll

Linux

您可能还需要将目录添加到 LD_LIBRARY_PATH 环境变量中。

  • lua_shared.so
  • libtier0.so
  • libvstdlib.so
  • libsteam_api.so(仅限 32 位)

我认为旧版本的 Garry's Mod 在这些库的文件名中使用了 _srv 后缀。这些也是受支持的。

致谢

Willox - Lua 绑定和 lua_shared 加载的基础代码

Mats - 帮助 :D

依赖项

~0.7–1.1MB
~10K SLoC