script_global
访问 GTA V 脚本全局变量。全局变量表由所有脚本共享。使用约定与注意事项见 脚本内存 API 总览。
读写脚本全局变量会触及游戏脚本状态,须在脚本线程中执行。从 gui_tick、on_present 触发请用 fiber.run(function() ... end),或写在 on_tick、script.create 回调里。
script_global.new(index)script_global
创建指向全局变量基址 index 的访问器。
| 参数 | 类型 | 说明 |
|---|---|---|
| index | int / uint | 全局变量索引(与 native 文档中的 global 编号一致) |
:at(offset, size?)script_global
链式偏移。无 size 时: base + offset。有 size 时: base + 1 + offset * size (用于数组索引)。
| 参数 | 类型 | 说明 |
|---|---|---|
| offset | int | 偏移或数组下标 |
| size | int? | 可选;提供时按 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。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | int | 新值 |
:set_uint(value)void
写入无符号 32 位整数。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | uint | 新值 |
:set_float(value)void
写入 float。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | float | 新值 |
:set_bool(value)void
写入 bool。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | bool | 新值 |
:set_string(value)void
将字符串写入当前全局槽所指向的内存,最多写入 #value + 1 字节(含结尾 \0)。不会扩大缓冲区;偏移或长度不当可能破坏相邻数据,见 总览 · 字符串写入。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | string | 要写入的文本 |
位操作
:set_bit(bit)void
置位第 bit 位(对底层 int 做 OR 1 << bit)。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 0~31 |
:clear_bit(bit)void
清除第 bit 位。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 |
:is_bit_set(bit)bool
检查第 bit 位是否被设置。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 |
:set_bits(mask)void
对当前 int 做按位 OR mask。
| 参数 | 类型 | 说明 |
|---|---|---|
| mask | int | 位掩码 |
:clear_bits(mask)void
对当前 int 清除 mask 中为 1 的位(AND ~mask)。
| 参数 | 类型 | 说明 |
|---|---|---|
| mask | int | 要清除的位为 1 |
:get_address()uint64
返回全局变量在内存中的绝对地址。