script_global

访问 GTA V 脚本全局变量。全局变量表由所有脚本共享。使用约定与注意事项见 脚本内存 API 总览

读写脚本全局变量会触及游戏脚本状态,须在脚本线程中执行。从 gui_tickon_present 触发请用 fiber.run(function() ... end),或写在 on_tickscript.create 回调里。

script_global.new(index)script_global

创建指向全局变量基址 index 的访问器。

参数类型说明
indexint / uint全局变量索引(与 native 文档中的 global 编号一致)
:at(offset, size?)script_global

链式偏移。无 size 时: base + offset。有 size 时: base + 1 + offset * size (用于数组索引)。

参数类型说明
offsetint偏移或数组下标
sizeint?可选;提供时按 stride 计算数组元素地址
-- 简单偏移
local g = script_global.new(262145):at(10)
-- 数组索引: base + 1 + index * stride
local g = script_global.new(1000):at(5, 3) -- = 1000 + 1 + 5*3 = 1016

读取方法

:get_int()int

以 int 读取当前指针位置。

:get_uint()uint

以无符号 32 位整数读取。

:get_float()float

读取 float。

:get_bool()bool

读取 bool。

:get_string()string

按 C 字符串读取(指针处为 char*)。

写入方法

:set_int(value)void

写入 int。

参数类型说明
valueint新值
:set_uint(value)void

写入无符号 32 位整数。

参数类型说明
valueuint新值
:set_float(value)void

写入 float。

参数类型说明
valuefloat新值
:set_bool(value)void

写入 bool。

参数类型说明
valuebool新值
:set_string(value)void

将字符串写入当前全局槽所指向的内存,最多写入 #value + 1 字节(含结尾 \0)。不会扩大缓冲区;偏移或长度不当可能破坏相邻数据,见 总览 · 字符串写入

参数类型说明
valuestring要写入的文本

位操作

:set_bit(bit)void

置位第 bit 位(对底层 int 做 OR 1 << bit)。

参数类型说明
bitint位序号 0~31
:clear_bit(bit)void

清除第 bit 位。

参数类型说明
bitint位序号
:is_bit_set(bit)bool

检查第 bit 位是否被设置。

参数类型说明
bitint位序号
:set_bits(mask)void

对当前 int 做按位 OR mask

参数类型说明
maskint位掩码
:clear_bits(mask)void

对当前 int 清除 mask 中为 1 的位(AND ~mask)。

参数类型说明
maskint要清除的位为 1
:get_address()uint64

返回全局变量在内存中的绝对地址。