-1

所以我遇到了这个错误,所以我知道我可能要在这里修复一些东西,但我不知道怎么做。谢谢

脚本错误:@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', function(source, cb, data)
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then return; end
    local items = xPlayer.getInventoryItem(data)
    cb(items.count)
end)
4

1 回答 1

0

这个错误告诉你 items 是一个 nil 值,Lua 抱怨它,因为你试图将它索引为 in items.countitems如果是,那是没有意义nil 的,就像引用不存在的书的书页一样。

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

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

还要检查你的RegisterServerCallback. 您在那里定义的函数是回调。为什么该函数参数中有另一个回调?我认为您使事情感到困惑,可能应该再次参考手册。

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

于 2021-02-16T06:07:18.727 回答