问题描述
所以我开始出现这个错误,所以我知道我可能需要在这里解决一些问题,但我不知道如何。谢谢
脚本错误:@gcphone/server/server.lua:205:尝试索引一个 nil 值(本地“项目”)
来自第 205 行的代码
ESX.RegisterServerCallback('crew-phone:phone-check',function(source,cb)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return; end
for k,v in pairs(Config.Phones) do
local items = xPlayer.getInventoryItem(v)
if items.count > 0 then
cb(v)
return
end
end
cb(nil)
end)
ESX.RegisterServerCallback('crew-phone:item-check',cb,data)
local xPlayer = ESX.GetPlayerFromId(source)
if not xPlayer then return; end
local items = xPlayer.getInventoryItem(data)
cb(items.count)
end)
解决方法
这个错误告诉你 items 是一个 nil 值,Lua 抱怨它,因为你试图像 items.count
那样索引它。如果 items
是 nil
,那没有意义
这就像引用一本不存在的书的书页。
local items
是 nil
因为 xPlayer.getInventoryItem(data)
返回 nil
检查本地脚本是否在触发服务器事件时为 data
提供了字符串,以及 xPlayer 是否确实有这样的项目。
还要检查您的 RegisterServerCallback
。您在那里定义的函数是回调。为什么在该函数参数中有另一个回调?我认为你在混淆一些东西,可能应该再次参考手册。
https://esx-framework.github.io/es_extended/server/functions/registerservercallback/