尝试对一个 nil 值进行索引 items(求助!)

所以我在得到这个错误,我知道有些东西我可能需要修复,但我不知道如何修复。谢谢

SCRIPT ERROR: @gcphone/server/server.lua:205: 尝试对一个 nil 值进行索引 (本地 'items')

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', function(source, cb, data)
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then return; end
    local items = xPlayer.getInventoryItem(data)
    cb(items.count)
end)
点赞
用户2858170
用户2858170

这个错误告诉你 items 是一个未定义的值,并且当你试图按照 items.count 的方式获取它的索引时,Lua 对此进行了投诉。如果 itemsnil,那是没有意义的,就像引用一本不存在的书的页面一样。

local itemsnil,因为 xPlayer.getInventoryItem(data) 返回了 nil

检查一下当触发服务器事件时本地的脚本是否为 data 提供了一个字符串,以及 xPlayer 是否真的有这样的一个项目。

还要检查一下你的 RegisterServerCallback。你在那里定义的函数就是回调函数。为什么在那个函数参数里还有另一个回调函数呢?我认为你在混淆事情,可能应该再次参考一下手册。

https://esx-framework.github.io/es_extended/server/functions/registerservercallback/

2021-02-16 06:07:18