LUA|MTASA попытка индексировать поле '?' (нулевое значение)
У меня проблема с моим скриптом lua для сервера MTA. Когда я запускаю код, я получаю следующую ошибку:
attempt to index field '?' (a nil value)
Вот код:
addEvent("bank:transfer", true)
addEventHandler("bank:transfer", root, function(id, amount, to, reason)
if(transferBank(id, amount, to, reason)) then
triggerClientEvent(client, "bank:transferRecieve", client, true)
else
triggerClientEvent(client, "bank:transferRecieve", client, false)
end
end)
function transferBank(id, amount, to, reason)
if(id and amount and to and reason) then
if(BANK_ACCOUNTS[to]) then
if(BANK_ACCOUNTS[id].balance >= amount) then
dbExec(connection, "INSERT INTO bank_records (bank_id, record_type, record_from, reason, amount, date) VALUES(?, ?, ?, ?, ?, NOW())", to, 3, id, reason, amount)
dbExec(connection, "UPDATE bank_accounts SET balance = balance - ? WHERE id=?", amount, id)
dbExec(connection, "UPDATE bank_accounts SET balance = balance + ? WHERE id=?", amount, to)
BANK_ACCOUNTS[to].balance = BANK_ACCOUNTS[to].balance + amount
BANK_ACCOUNTS[id].balance = BANK_ACCOUNTS[id].balance - amount
return true
else
return false, "Le Compte Bancaire spécifié ne contient pas assez d'argent."
end
else
return false, "Le Compte Bancaire spécifié n'existe pas."
end
else
return false, "Argument Invalide."
end
end
Я искал несколько часов, но не могу найти, откуда возникла ошибка.
1 ответ
Минимальный пример, который вызывает это сообщение об ошибке:
local BANK_ACCOUNTS = {}
BANK_ACCOUNTS[to].balance = 1
В этом случае BANK_ACCOUNTS[to] равен нулю, следовательно, вы не можете изменить его. Что касается nil, то Lua не имеет имени поля / ключа, которые можно вставить в сообщение об ошибке.
BANK_ACCOUNTS["test"].balance = 1
даст вам следующее сообщение об ошибке:
attempt to index field 'test' (a nil value)
Так что в какой-то момент либо to, либо id равны нулю.
Потому что ты не войдешь if BANK_ACCOUNTS[to] then
если to
мы nil
Это должно быть id