Проблема со сценарием в lua, значение ошибки nil (локальный xPlayer) - PullRequest
0 голосов
/ 19 января 2020

так что, когда я пытаюсь купить что-то в магазине, это просто выдает мне эту ошибку. Как это исправить? Код:

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')

1 Ответ

1 голос
/ 20 января 2020

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 и сделайте учебник для начинающих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...