因此,当我尝试在商店购买商品时,只会让我看到此错误。如何解决此问题?代码:
RegisterServerEvent('esx_shops:buyItem')
AddEventHandler('esx_shops:buyItem', function(itemName, amount, zone)
local _source = source
local xPlayer = ESX.GetPlayerFromId(_source)
local sourceItem = xPlayer.getInventoryItem(itemName)
amount = ESX.Round(amount)
-- is the player trying to exploit?
if amount < 0 then
print('esx_shops: ' .. xPlayer.identifier .. ' attempted to exploit the shop!')
return
end
错误:
SCRIPT ERROR: @esx_supermarket/server/main.lua:68: attempt to index a nil value (local 'xPlayer')
xPlayer
是nil
值。 nil
值可能无法索引。这样做会导致错误。
所以xPlayer[something]
,xPlayer.something
或xPlayer:something()
之类的内容不允许。
在您的第一个示例中
local xPlayer = ESX.GetPlayerFromId(_source)
local sourceItem = xPlayer.getInventoryItem(itemName)
[xPlayer
是nil
,因为ESX.GetPlayerFromId(_source)
没有返回播放器。最可能是因为_source
为nil
。至少您的代码中没有任何内容表明source
不是nil
。
在尝试索引可能的nil
值之前,请检查它们是否为nil
。
请阅读Lua手册并进行初学者教程。