【发布时间】:2020-11-21 03:46:49
【问题描述】:
现在我在以下代码中遇到了不断出现此错误的障碍
box.lua:31: 尝试索引字段 '?' (零值)
我试图纠正这个错误,但失败了。
下面是完整的代码
function ChatSystem(event, player, msg, Type, lang)
local Guid = player:GetGUIDLow()
if flag[Guid] ~= 0 then
local daan = quiz["box"][flag[Guid]][2];
local t = msg;
if (t+1 == daan+1) then
player:SendBroadcastMessage("[Notice]correct")
SetPlayerFlag(player, 0)
SetPlayererror(player, 0)
else
cuowu[Guid] = error[Guid] + 1;
if cuowu[Guid] >= quiz["frequency"] then
SetPlayererror(player, 0)
Kick( player )
else
player:SendBroadcastMessage("[Notice] error"..cuowu[Guid].." "..quiz["box"][flag[Guid]][1].."");
end
end
end
end
function Start (event, player, item, count)
local datigailv = math.random(1, 100)
if (datigailv <= quiz["Chance"])then
local select = math.random(1, 5)
local Guid = player:GetGUIDLow()
SetPlayerFlag(player, select)
SetPlayererror(player, 0)
player:SendBroadcastMessage("[Notice]answer my question:"..quiz["box"][flag[Guid]][1].."");
end
end
RegisterPlayerEvent(32, Start)
RegisterPlayerEvent(18, ChatSystem);
【问题讨论】:
-
这个错误之后你有什么事情吗?
-
quiz["box"]或quiz["box"][flag[Guid]]均为零 -
顺便说一下,GUID 的低部分不是 GUID。您甚至可能有两个具有相同低位的球员。
-
逻辑错误:
if flag[Guid] ~= 0 then。如果flag[Guid]是nil,那么它总是正确的,将其更改为:if (flag[Guid] or 0) ~= 0 -
另一个逻辑错误:
if (t+1 == daan+1) then。如果t值是非数字字符串或空字符串,则会抛出错误。改为:if tonumber(t) == daan then。
标签: lua