lua:尝试对字段'?'(空值)进行索引
2020-11-20 19:46:50
收藏:0
阅读:138
评论:1
现在我在下面的代码中一直遇到这个错误:
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("[注意]正确")
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("[注意] 错误"..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("[注意]回答我的问题:"..quiz["box"][flag[Guid]][1].."");
end
end
RegisterPlayerEvent(32, Start)
RegisterPlayerEvent(18, ChatSystem);
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

在数组嵌套数组的错误很难追踪,如果可能的话,尽量避免这样做,或者添加一些断言,如
assert(quiz["box"][flag[Guid]])来检查是否有这样的数组值。在 Lua 中,你可以使用
flag[Guid] = nil来删除值,而不是flag[Guid] = 0。我没有使用数组和动态问题生成的版本:
local quiz = { chance = 2, -- 频率 frequency = 3 -- 错误次数 } local quiz_flags = {} -- 存储玩家的状态 function ChatSystem(event, player, msg, Type, lang) local quiz_info = quiz_flags[player:GetGUIDLow()] if quiz_info then if tonumber(msg) == quiz_info.answer then player:SendBroadcastMessage('[Notice] 正确!') quiz_flags[player:GetGUIDLow()] = nil -- 删除状态信息 elseif quiz_info.count >= quiz.frequency then quiz_flags[player:GetGUIDLow()] = nil -- 删除状态信息 Kick(player) -- 踢出玩家 else player:SendBroadcastMessage('[Notice] 错误!第 '..quiz_info.count..' 次尝试, '..quiz_info.question..'=?') quiz_info.count = quiz_info.count + 1 end end end function Start(event, player, item, count) if math.random(1, 100) <= quiz.chance then -- 生成数学表达式 local q = math.random(1,3)..(math.random(1,2) == 1 and '+' or '*')..math.random(1,3) quiz_flags[player:GetGUIDLow()] = { count = 1, question = q, answer = load('return '..q)() -- 计算答案 } player:SendBroadcastMessage('[Notice] 回答我的问题: '..q) end end RegisterPlayerEvent(32, Start) RegisterPlayerEvent(18, ChatSystem)