Jump to content

[Ajuda] Banco


Recommended Posts

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...