modMinerTrade.doBankSave = function() local file = io.open(modMinerTrade.urlTabela, "w") if file then file:write(minetest.serialize(modMinerTrade.bank)) file:close() --minetest.log('action',"[MINERTRADE] Banco de dados salvo !") else minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela)) end end modMinerTrade.doBankLoad = function() local file = io.open(modMinerTrade.urlTabela, "r") if file then modMinerTrade.bank = minetest.deserialize(file:read("*all")) file:close() if not modMinerTrade.bank or type(modMinerTrade.bank) ~= "table" then minetest.log('error',"[MINERTRADE:ERRO] "..modMinerTrade.translate("The file '%s' is not in table format!"):format(modMinerTrade.urlTabela)) return { } else minetest.log('action',"[MINERTRADE] "..modMinerTrade.translate("Opening '%s'!"):format(modMinerTrade.urlTabela)) end end end modMinerTrade.isExistAcount = function(playername) if modMinerTrade.bank.player[playername] ~= nil then return true else return false end end modMinerTrade.createAcount = function(playername) if modMinerTrade.bank.player[playername] == nil then modMinerTrade.bank.player[playername] = { acount_created = os.date("%Y/%b/%d %Hh:%Mm:%Ss"), balance = 0, } return true else return false end return modMinerTrade.bank.player[playername].balance end modMinerTrade.getBalance = function(playername) if modMinerTrade.isExistAcount(playername) then return modMinerTrade.bank.player[playername].balance end end modMinerTrade.showAtm = { frmMain = function(playername) --FORMULÁRIO: PRINCIPAL / RAIZ local formspec = "size[9.5,10.5]" --.."bgcolor[#636D76FF;false]" --..default.gui_bg --..default.gui_bg_img --..default.gui_slots --.."bgcolor[#636D76FF;false]" .."background[-0.25,-0.25;10,11;safe_inside.png]" .."button[0,0.0;4,0.5;btnBalance;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BALANCE"))).."]" --.."button[0,0.5;4,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("STATEMENT"))).."]" --.."button[0,1.0;4,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("DEPOSITS"))).."]" .."button[0,1.5;4,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS [DINHEIRO E CHECK]"))).."]" --.."button[0,2.0;4,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("TRANSFERS"))).."]" --.."button[0,2.0;4,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOANS"))).."]" --Emprestimos --.."button[0,2.5;4,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("CARTÃO DE CRÉDITO [EXPEDIR E MUDAR SENHA]"))).."]" --.."button[0,3.0;4,0.5;btnSetings;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("SETTINGS"))).."]" --Se quer ou não uma senha, se quer receber uma carta quando houver uma nova movimentacao. .."button_exit[0,3.5;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) minetest.show_formspec(playername, "frmAtmMain", formspec) end, frmBalance = function(playername) --FORMULÁRIO: SALDO local msgBalance = "" if modMinerTrade.isExistAcount(playername) then msgBalance = modMinerTrade.translate("You own %03d minercash"):format(modMinerTrade.getBalance(playername)) else msgBalance = modMinerTrade.translate("Player '%s' is not an account holder of this bank."):format(playername) end local formspec = "size[9.5,10.5]" --.."bgcolor[#636D76FF;false]" --..default.gui_bg --..default.gui_bg_img --..default.gui_slots --.."bgcolor[#636D76FF;false]" .."background[-0.25,-0.25;10,11;safe_inside.png]" .."button[0,0.0;4,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" .."button_exit[0,3.0;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" .."label[5.0,0.0;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":")).."]" .."label[5.0,2.0;"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) minetest.show_formspec(playername, "frmAtmBalance", formspec) end, frmWithdrawals = function(playername) --FORMULÁRIO: EXTRATO local formspec = "size[9.5,10.5]" --.."bgcolor[#636D76FF;false]" --..default.gui_bg --..default.gui_bg_img --..default.gui_slots --.."bgcolor[#636D76FF;false]" .."background[-0.25,-0.25;10,11;safe_inside.png]" .."button[0,0.0;4,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" .."button_exit[0,3.0;4,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) minetest.show_formspec(playername, "frmAtmWithdrawals", formspec) end, } modMinerTrade.onReceiveFields = function(sender, formname, fields) local sendername = sender:get_player_name() if fields.btnAtmMain ~= nil then modMinerTrade.showAtm.frmMain(playername) else if formname == "frmAtmMain" then if fields.btnSaldo ~= nil then modMinerTrade.showAtm.frmBalance(playername) elseif fields.btnWithdrawals ~= nil then modMinerTrade.showAtm.frmWithdrawals(playername) end end end end --############################################################################################################### minetest.register_on_player_receive_fields(function(sender, formname, fields) return modMinerTrade.onReceiveFields(sender, formname, fields) end) minetest.register_on_leaveplayer(function(player) modMinerTrade.doBankSave() end) minetest.register_on_shutdown(function() modMinerTrade.doBankSave() minetest.log('action',"[STRONGBOX] "..modMinerTrade.translate("Saving bank from all players in the file '%s'!"):format(modMinerTrade.urlTabela)) end)