GameGuardian Lua脚本报错:尝试索引nil值的'start'字段求协助
GameGuardian Lua脚本报错:attempt to index ? (a nil value) with key 'start' (field '2')
报错信息
Tester=gg.getRangesList('libil2cpp.so')[2].start attempt to index ? (a nil value) with key 'start' (field '2') level = 1, const = 30, proto = 0, upval = 1, vars = 4, code = 79 GETTABLE v0 v0 "start" ; PC 36 CODE 00434007 OP 7 A 0 B 0 C 269 Bx 269 sBx -130802
脚本代码
function money1() gg.setVisible(false) gg.alert ("CLICK LEVEL 3 THEN CLICK ON THE GG LOGO TO START") gg.clearResults() gg.clearList() while true do if gg.isVisible() then break else gg.sleep(50) end end gg.setVisible(false) gg.clearResults() Tester=gg.getRangesList('libil2cpp.so')[2].start Lua=0x5D28E08 setvalue(Tester+Lua,16,1917191729192019001910) gg.setRanges(32) gg.searchNumber("40", 16) gg.getResults(9999) gg.editAll("50000000", 16) gg.alert ("CLICK LEVEL 1") gg.toast("ON") gg.clearResults() gg.clearList() end
解决方案
- 核心问题:
gg.getRangesList('libil2cpp.so')返回的列表长度不足2,直接访问索引[2]对应的元素为nil,进而访问其start字段触发报错。 - 修复步骤:
- 先验证
libil2cpp.so的实际加载范围,添加调试代码确认返回列表的内容:
根据弹出的提示信息,选择正确的索引(比如如果仅返回1个范围,就用local ranges = gg.getRangesList('libil2cpp.so') gg.toast("libil2cpp.so范围数量: " .. #ranges) for i, r in ipairs(ranges) do gg.toast(i .. ": start=0x" .. string.format("%X", r.start)) endranges[1].start)。 - 修正API调用错误:脚本中的
setvalue应为GameGuardian标准APIgg.setValue,否则会触发未定义函数错误。 - 检查数值合法性:
1917191729192019001910作为16进制数值长度超出常规64位整数范围,需确认目标地址对应的数值类型和合法范围,避免写入无效值。
- 先验证
内容的提问来源于stack exchange,提问作者DiazArmn




