script_local
访问指定脚本线程的局部变量栈。脚本内存 API 总览 说明了 script_id、如何匹配线程与槽位规则。:get_string / :set_string 与 script_global 相同语义(按当前槽位指针作 C 字符串读写);脚本字符串常跨多个槽位,请自行用 :at 对准缓冲区首地址。
读写脚本局部变量会触及游戏脚本状态,须在脚本线程中执行。从 gui_tick、on_present 触发请用 fiber.run(function() ... end),或写在 on_tick、script.create 回调里。
槽位:index 为脚本局部变量编号(与常用工具中的 local 索引一致)。目标线程不存在或局部栈不可用时,script_local.new 返回 nil。
查找脚本线程并返回从该 index 槽开始的访问器。
| 参数 | 类型 | 说明 |
|---|---|---|
| script_id | string | int | 脚本名(joaat)或已算好的脚本哈希 |
| index | int | 起始局部槽索引 |
是否存在满足条件的运行中脚本线程(与 new 使用的查找逻辑相同)。
| 参数 | 类型 | 说明 |
|---|---|---|
| script_id | string | int | 脚本名或 joaat 哈希 |
链式偏移。无 size:base_index + offset。有 size:base_index + 1 + offset * size(与 script_global:at 一致)。
| 参数 | 类型 | 说明 |
|---|---|---|
| offset | int | 偏移或数组下标 |
| size | int? | 可选 stride |
local l = script_local.new("freemode", 19633)
local val = l:at(1):get_int() -- 等价于槽 19634内部栈指针是否非空;对 new 返回的对象一般为 true,链式 :at 后仍指向同一线程栈。
读取方法
以 int 读取当前槽位指向的内存。
以无符号 32 位整数读取。
读取 float。
读取 bool(底层按 bool 解释)。
按 C 字符串读取(指针处为 char*)。与 script_global:get_string 一致。
写入方法
写入 int。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | int | 新值 |
写入无符号 32 位整数。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | uint | 新值 |
写入 float。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | float | 新值 |
写入 bool。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | bool | 新值 |
将字符串写入当前局部槽所指向的内存,最多写入 #value + 1 字节(含结尾 \0)。语义与 script_global:set_string 相同;不会扩大缓冲区,见 总览 · 字符串写入。
| 参数 | 类型 | 说明 |
|---|---|---|
| value | string | 要写入的文本 |
位操作
对当前槽位按 int 解释做位运算(与 script_global 位 API 语义相同)。
置位第 bit 位(|= 1 << bit)。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 0~31 |
清除第 bit 位。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 |
判断第 bit 位是否为 1。
| 参数 | 类型 | 说明 |
|---|---|---|
| bit | int | 位序号 |
按位 OR mask。
| 参数 | 类型 | 说明 |
|---|---|---|
| mask | int | 位掩码 |
清除 mask 中为 1 的位(&= ~mask)。
| 参数 | 类型 | 说明 |
|---|---|---|
| mask | int | 要清除的位为 1 |
地址
返回当前槽位在进程内的绝对地址(用于调试或与 memory.* 配合时务必确认线程仍存活)。
-- 示例: 读取 freemode 局部变量
local l = script_local.new("freemode", 19633)
if l then
local val = l:at(1):get_int()
notify.info("Local[19634] = " .. val)
end