尝试索引一个零值项目帮助!

问题描述

所以我开始出现这个错误,所以我知道我可能需要在这里解决一些问题,但我不知道如何。谢谢

脚本错误:@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 那样索引它。如果 itemsnil,那没有意义 这就像引用一本不存在的书的书页。

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

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

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

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