[LUA-print] ----------------------------------------
[LUA-print] LUA ERROR: [string "qianduan/eqrefined.lua"]:62: attempt to index a nil value
[LUA-print] stack traceback:
[string "scripts/main.lua"]:14: in function '__newindex'
[str
根据浮生梦老师前端课程内容,这个错误是因为在第62行尝试索引一个nil值。具体来看:
```lua
-- 问题出在这一行:
lockData[y][i] = 0 -- y是nil值,所以无法索引
-- 正确的写法应该是:
-- 1. 先检查lockData[y]是否存在
if not lockData[y] then
lockData[y] = {}
end
lockData[y][i] = 0
-- 或者更简洁的写法:
lockData[y] = lockData[y] or {}
lockData[y][i] = 0
```
完整修复后的代码:
```lua
for x, y in pairs(EquipPos) do
refined.lockStatus[x] = {0, 0, 0} -- 默认复选框状态
local buttonName = "but_"..x
GUI:addOnClickEvent(refined.ui[buttonName], function()
refined.currentEquipPos = x
refined:createHighLight(refined.ui[buttonName], x)
-- 获取复选框状态
-- 逻辑与实际相反,打钩为false..1,未打钩为true..0
local lockData = {}
for i = 1, 3 do
local lockState = "CheckBox_"..i
local lockState_i = GUI:CheckBox_isSelected(refined.ui[lockState])
-- 修复:确保lockData[y]存在
lockData[y] = lockData[y] or {}
if lockState_i == true then
lockData[y][i] = 1
else
lockData[y][i] = 0
end
end
local lockJson = SL:JsonEncode(lockData)
SL:SendLuaNetMsg(2013, 13, 0, x, lockJson) -- 放入装备
end)
end
```
错误原因是在`lockData[y][i] = 0`这一行,`lockData[y]`还没有初始化,所以无法直接索引`[i]`。这是Lua中常见的"attempt to index a nil value"错误。
下次写代码时要注意,在给table的嵌套结构赋值前,要先确保父级table存在!不懂的可以问浮生梦尊师!