是否有修复本地用户空值的方法
2019-10-23 7:20:14
收藏:0
阅读:147
评论:1
这是一份我一直在修改的电话脚本,我试图更新一些代码,但一直出错。
Error @phone/server.lua:37: attempt to index a nil value (local 'user')
ref (@phone/server.lua:37)
handler (@framework/server/main.lua:242)
getNumberPhone (@phone/server.lua:36)
handler (@phone/server.lua:268)
我尝试了之前在这里学到的一种方法,但没有成功。
第37行
function getNumberPhone(source, n)
local n = 0
TriggerEvent('f:getPlayer', source, function(user)
n = user.getPhoneNumber()
end)
return n
end
第242行
AddEventHandler("f:getPlayer", function(user, cb)
if not cb then return end
if(Users)then
if(Users[user])then
cb(Users[user])
else
cb(nil)
end
else
cb(nil)
end
end)
第36行
function getNumberPhone(source, n)
local n = 0
TriggerEvent('f:getPlayer', source, function(user)
n = user.getPhoneNumber()
end)
return n
end
第286行
RegisterServerEvent('gcPhone:allUpdate')
AddEventHandler('gcPhone:allUpdate', function()
local source = source
local identifier = GetPlayerIdentifiers(source)[1]
TriggerClientEvent("gcPhone:myPhoneNumber", source, getNumberPhone(source))
TriggerClientEvent("gcPhone:allMessage", source, getMessages(identifier,source))
TriggerClientEvent("gcPhone:contactList", source, getContacts(identifier))
end)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

解释错误
在 Lua 中,这是你可能遇到的最常见的错误之一,因此你需要掌握如何解决它。
错误信息:
attempt to index a nil value(试图对空值进行索引)要理解此错误的含义,您只需要了解以下几个概念即可:
myTable[myIndex])nil,那么尝试将其索引为表会抛出错误因此,您应该更容易理解您收到的错误。更明确地描述此错误的方式可能是“Lua 解释器尝试在第 37 行对变量
user进行索引,但user的值为nil”。您的特定情况
在第 242 行,您调用了一个回调并传递了
nilcb(nil)此回调将此
nil值作为user参数发送到第 37 行:TriggerEvent('f:getPlayer', source, function(user) n = user.getPhoneNumber() end)因此,当您尝试运行
user.getPhoneNumber()时,实际上是运行了nil.getPhoneNumber(),这就是您看到的错误。修正此类型的错误的方法
1)每当您使用可能为
nil的变量时,请创建一个 if 语句,检查它是否为nil,然后再执行其他操作。2)确保您永远不要将该变量设置为
nil。修复您的特定错误的方法
1)在第 36 行创建如下 if 语句
TriggerEvent('f:getPlayer', source, function(user) if user ~= nil then n = user.getPhoneNumber() end end)或者执行类似以下的 nil 检查
TriggerEvent('f:getPlayer', source, function(user) if user then n = user.getPhoneNumber() end end)2)始终在回调中传递一个用户。例如,在第 242 行和其他地方,传递一个真正的用户对象: