diff --git a/resources/[tools]/okokBanking/server.lua b/resources/[tools]/okokBanking/server.lua index 34e5c2525..d8da2f7f5 100644 --- a/resources/[tools]/okokBanking/server.lua +++ b/resources/[tools]/okokBanking/server.lua @@ -1523,53 +1523,92 @@ end) RegisterServerEvent("okokBanking:UpdateIbanDB") AddEventHandler("okokBanking:UpdateIbanDB", function(iban, amount) - local _source = source - local xPlayer = QBCore.Functions.GetPlayer(_source) + local _source = source + local xPlayer = QBCore.Functions.GetPlayer(_source) - if amount <= xPlayer.PlayerData.money.bank then - MySQL.query('SELECT charinfo FROM players WHERE citizenid = ?', { - xPlayer.PlayerData.citizenid - }, function(result) - local charinfo = json.decode(result[1].charinfo) - if not Config.CharInfoUpdate then charinfo = json.decode(result) end - charinfo.account = iban - local updated = json.encode(charinfo) - MySQL.query('UPDATE players SET charinfo = ? WHERE citizenid = ?', {updated, xPlayer.PlayerData.citizenid}) - end) + -- Debug-Ausgaben + print("[DEBUG] Versuch, IBAN zu aktualisieren auf: " .. iban) + print("[DEBUG] Spieler-Geld: " .. xPlayer.PlayerData.money.bank .. ", Kosten: " .. amount) + print("[DEBUG] Player charinfo vor Update: " .. json.encode(xPlayer.PlayerData.charinfo)) - local charinfo = xPlayer.PlayerData.charinfo - charinfo.iban = iban - xPlayer.Functions.SetPlayerData('charinfo', charinfo) - - xPlayer.Functions.RemoveMoney('bank', amount) - xPlayer = QBCore.Functions.GetPlayer(_source) - local itemCash = xPlayer.Functions.GetItemByName("cash") - local playerCashMoney = 0 - if itemCash ~= nil then - playerCashMoney = itemCash.amount - end - if Config.UseCashAsItem then - TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, playerCashMoney) - else - TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash) - end - TriggerEvent('okokBanking:AddTransferTransactionToSociety', amount, _source, "bank", "Bank (IBAN)") - TriggerClientEvent('okokBanking:updateIban', _source, iban) - TriggerClientEvent('okokBanking:updateIbanPinChange', _source) - if Config.okokNotify then - TriggerClientEvent('okokNotify:Alert', _source, _L('iban_changed').title, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').time, _L('iban_changed').type) - else - TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').type) - end - else - if Config.okokNotify then - TriggerClientEvent('okokNotify:Alert', _source, _L('iban_no_money').title, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').time, _L('iban_no_money').type) - else - TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').type) - end - end + if amount <= xPlayer.PlayerData.money.bank then + -- Direkte Aktualisierung der charinfo mit der neuen IBAN + MySQL.query('SELECT charinfo FROM players WHERE citizenid = ?', { + xPlayer.PlayerData.citizenid + }, function(result) + local charinfo = json.decode(result[1].charinfo) + if not Config.CharInfoUpdate then charinfo = json.decode(result) end + + print("[DEBUG] Charinfo aus Datenbank: " .. json.encode(charinfo)) + + charinfo.account = iban + local updated = json.encode(charinfo) + + print("[DEBUG] Aktualisierte charinfo: " .. updated) + + MySQL.query('UPDATE players SET charinfo = ? WHERE citizenid = ?', { + updated, + xPlayer.PlayerData.citizenid + }, function(rowsChanged) + print("[DEBUG] Datenbankaktualisierung: " .. tostring(rowsChanged) .. " Zeilen geändert") + + -- Entferne den problematischen Code + -- if xPlayer.Functions.ChangeIban then + -- xPlayer.Functions.ChangeIban(iban) + -- else + -- TriggerClientEvent('okokNotify:Alert', _source, 'OKOKBANKING', 'Unable to locate or identify the function ChangeIban. Please refer to the documentation for correct usage and placement!', 5000, 'warning') + -- return + -- end + + -- Aktualisiere die Spielerdaten im Speicher + local updatedPlayer = QBCore.Functions.GetPlayer(_source) + if updatedPlayer then + updatedPlayer.PlayerData.charinfo.account = iban + updatedPlayer.Functions.SetPlayerData('charinfo', updatedPlayer.PlayerData.charinfo) + print("[DEBUG] Spielerdaten im Speicher aktualisiert: " .. json.encode(updatedPlayer.PlayerData.charinfo)) + end + + -- Ziehe das Geld ab + xPlayer.Functions.RemoveMoney('bank', amount) + + -- Aktualisiere den Client + local itemCash = xPlayer.Functions.GetItemByName("cash") + local playerCashMoney = 0 + if itemCash ~= nil then + playerCashMoney = itemCash.amount + end + + if Config.UseCashAsItem then + TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, playerCashMoney) + else + TriggerClientEvent('okokBanking:updateMoney', _source, xPlayer.PlayerData.money.bank, xPlayer.PlayerData.money.cash) + end + + TriggerEvent('okokBanking:AddTransferTransactionToSociety', amount, _source, "bank", "Bank (IBAN)") + TriggerClientEvent('okokBanking:updateIban', _source, iban) + TriggerClientEvent('okokBanking:updateIbanPinChange', _source) + + print("[DEBUG] Client-Events ausgelöst") + + -- Benachrichtige den Spieler + if Config.okokNotify then + TriggerClientEvent('okokNotify:Alert', _source, _L('iban_changed').title, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').time, _L('iban_changed').type) + else + TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_changed').text, {s1 = iban}), _L('iban_changed').type) + end + end) + end) + else + print("[DEBUG] Nicht genug Geld für IBAN-Änderung") + if Config.okokNotify then + TriggerClientEvent('okokNotify:Alert', _source, _L('iban_no_money').title, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').time, _L('iban_no_money').type) + else + TriggerClientEvent('QBCore:Notify', _source, interp(_L('iban_no_money').text, {s1 = amount}), _L('iban_no_money').type) + end + end end) + RegisterServerEvent("okokBanking:UpdatePINDB") AddEventHandler("okokBanking:UpdatePINDB", function(pin, amount) local _source = source