Если я правильно понимаю ваш пост, "строка 138" указывает на третью строку в вашем фрагменте кода, который будет:
if targetItem.limit == -1 or ((targetItem.count + count) <= targetItem.limit) then
Ошибка означает, что одно из значений, с которыми вы работаете равен nil
и поэтому не может сравниваться с числом. В вашем случае это может быть только targetItem.limit
.
Если у каждого targetItem
должно быть значение limit
и count
, проблема в другом месте вашего кода.
Вместо этого Для выдачи ошибки вы можете просто проверить наличие значения, добавив дополнительные проверки:
if type == "item_standard" then
local targetItem = xPlayer.getInventoryItem(item)
-- Make sure that targetItem and targetItem.limit aren't nil.
if targetItem and targetItem.limit then
if targetItem.limit == -1 or ((targetItem.count + count) <= targetItem.limit) then
Краткое объяснение: В Lua оба nil
и логическое значение false
представляют false
значение внутри логического выражения. Любое другое значение будет рассматриваться как true
. В этом случае вы пропустите вложенный оператор if, если targetItem
или targetItem.limit
nil
.