FelipeMallmann Posted June 12, 2015 Share Posted June 12, 2015 Galera, estou tendo esses erros, de alguma forma ta vindo valor nulo e dai o dinheiro do player fica negativo e com umas 13 casas decimais erros: ERROR: banco1\server\bank.script.server.lua:339: attempt to index field '?' (a nil value) ERROR: banco1\server\bank.script.server.lua:325: attempt to index field '?' (a nil value) ERROR: banco1\server\bank.script.server.lua:245: attempt to index field '?' (a nil value) function withdrawMoney( player, money ) local playerBankID = getBankID( getPlayerBank( player ) ) if type( money ) == 'number' and playersAccount[ player ].balance < money then triggerClientEvent( player, "bank_showWarningMessage", player, "Insufficient founds!" ) elseif type( money ) == 'string' and money == 'all' then money = playersAccount[ player ].balance if money > 0 then local atm = ( banksInfo[ playerBankID ].ATM and true or false ) local triggered = triggerEvent( "onPlayerWithdrawMoney", player, getPlayerBank( player ), money, atm ) if triggered then playersAccount[ player ]:withdraw( money, player ) bank_savePlayerMoney( player, getPlayerAccount( player ) ) triggerClientEvent( player, "bank_updateMyBalance", player, playersAccount[ player ].balance ) end else triggerClientEvent( player, "bank_showWarningMessage", player, "You have no money in your\naccount!" ) end else if money > 0 then local atm = ( banksInfo[ playerBankID ].ATM and true or false ) local triggered = triggerEvent( "onPlayerWithdrawMoney", player, getPlayerBank( player ), money, atm ) if triggered then --outputChatBox( "You've withdrawn $"..tostring( money )..".", player, 255, 255, 0 ) playersAccount[ player ]:withdraw( money, player ) bank_savePlayerMoney( player, getPlayerAccount( player ) ) triggerClientEvent( player, "bank_updateMyBalance", player, playersAccount[ player ].balance ) end end end end addEvent( "bank_withdrawMoney", true ) addEventHandler( "bank_withdrawMoney", root, withdrawMoney ) Linha 245 local atm = ( banksInfo[ playerBankID ].ATM and true or false ) ------------------------------------------------- function transferMoney( player, receiver, money ) local playerBankID = getBankID( getPlayerBank( player ) ) if type( money ) == 'number' and playersAccount[ player ].balance >= money then local atm = ( banksInfo[ playerBankID ].ATM and true or false ) local triggered = triggerEvent( "onPlayerTransferMoney", player, getPlayerBank( player ), money, receiver, atm ) if triggered then playersAccount[ player ]:withdraw( money, player, true ) playersAccount[ receiver ]:deposit( money ) triggerClientEvent( player, "bank_updateMyBalance", player, playersAccount[ player ].balance ) bank_savePlayerMoney( player, getPlayerAccount( player ) ) bank_savePlayerMoney( receiver, getPlayerAccount( receiver ) ) if isPlayerInBank( receiver ) then triggerClientEvent( receiver, "bank_updateMyBalance", receiver, playersAccount[ receiver ].balance ) end end elseif type( money ) == 'string' and money == 'all' then money = playersAccount[ player ].balance local atm = ( banksInfo[ playerBankID ].ATM and true or false ) local triggered = triggerEvent( "onPlayerTransferMoney", player, getPlayerBank( player ), money, receiver, atm ) if triggered then playersAccount[ player ]:withdraw( money, player, true ) playersAccount[ receiver ]:deposit( money ) bank_savePlayerMoney( player, getPlayerAccount( player ) ) bank_savePlayerMoney( receiver, getPlayerAccount( receiver ) ) triggerClientEvent( player, "bank_updateMyBalance", player, playersAccount[ player ].balance ) if isPlayerInBank( receiver ) then triggerClientEvent( receiver, "bank_updateMyBalance", receiver, playersAccount[ receiver ].balance ) end end else triggerClientEvent( player, "bank_showWarningMessage", player, "Insufficient founds!" ) end end addEvent( "bank_transferMoney", true ) addEventHandler( "bank_transferMoney", root, transferMoney ) Linha 325 e 339 playersAccount[ receiver ]:deposit( money ) Há alguma forma de resolver isso, ou ao menos evitar esse erro? Obrigado! Link to comment
n3wage Posted June 14, 2015 Share Posted June 14, 2015 Complicado resolver sem saber o código inteiro.. local atm = ( banksInfo[ playerBankID ].ATM and true or false ) -- playerBankID esta retornando um valor que nao existe na tabela banksInfo, o problema provavelmente esta aqui: getBankID( getPlayerBank( player ) ) -- numa dessas funções.. -- deve resolver usando: atm = false if playerBankID and banksInfo[ playerBankID ] and banksInfo[ playerBankID ].ATM then atm = true end playersAccount[ receiver ]:deposit( money ) --Parecido com o erro anterior, receiver não esta definido na tabela playersAccount O Erro provavelmente vem de outras funções, você vai ter que checar o código inteiro, uma dica: sempre vá fazendo debug das variaveis, por exemplo, colocando outputChatBox ( tostring(receiver) ) pra saber oque receiver é. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now