diff --git a/item_atm.lua b/item_atm.lua index 7c50eff..ab562c2 100644 --- a/item_atm.lua +++ b/item_atm.lua @@ -29,7 +29,7 @@ modMinerTrade.doBankSave = function() end modMinerTrade.doBankLoad = function() - modMinerTrade.debug("modMinerTrade.doBankSave() >>> "..modMinerTrade.getUrlDatabase()) + --modMinerTrade.debug("modMinerTrade.doBankSave() >>> "..modMinerTrade.getUrlDatabase()) local file = io.open(modMinerTrade.getUrlDatabase(), "r") if file then if modMinerTrade.save_compressed then @@ -37,7 +37,7 @@ modMinerTrade.doBankLoad = function() else modMinerTrade.bank = minetest.deserialize(file:read("*all")) end - modMinerTrade.debug("modMinerTrade.doBankLoad() >>> modMinerTrade.bank = "..dump(modMinerTrade.bank)) + --modMinerTrade.debug("modMinerTrade.doBankLoad() >>> modMinerTrade.bank = "..dump(modMinerTrade.bank)) 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.getUrlDatabase())) @@ -59,10 +59,11 @@ end modMinerTrade.createAcount = function(playername) if modMinerTrade.bank.player[playername] == nil then modMinerTrade.bank.player[playername] = { - account_created = os.date("%Y/%b/%d %Hh:%Mm:%Ss"), + account_created = os.date("%Y-%B-%d %Hh:%Mm:%Ss"), balance = 0, statement = { } } + --modMinerTrade.bank.player[playername].account_created modMinerTrade.bank.accounts = modMinerTrade.bank.accounts + 1 return true else @@ -115,7 +116,7 @@ end modMinerTrade.showAtm = { frmMain = function(playername) --FORMULÁRIO: PRINCIPAL / RAIZ - local formspec = "size[15,10]" + local formspec = "size[16,10]" .."bgcolor[#636D7688;false]" --.."bgcolor[#636D76FF;false]" --..default.gui_bg @@ -123,21 +124,21 @@ modMinerTrade.showAtm = { --..default.gui_slots --.."background[5.0,-0.25;10,10;default_steel_block.png^text_atm_front.png]" - .. "box[0.00,0.10;4.50,9.5;#000000]" - .. "button[0.25,0.50;4.00,0.5;btnBalance;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BALANCE"))).."]" - .. "button[0.25,1.25;4.00,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("STATEMENT"))).."]" - .. "button[0.25,2.00;4.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#444444", modMinerTrade.translate("DEPOSITS"))).."]" - .. "button[0.25,2.75;4.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS"))).."]" -- [DINHEIRO E CHECK] - .. "button[0.25,3.50;4.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#444444", modMinerTrade.translate("TRANSFERS"))).."]" - .. "button[0.25,4.25;4.00,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#444444", modMinerTrade.translate("LOANS"))).."]" --Emprestimos - .. "button[0.25,5.00;4.00,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#444444", modMinerTrade.translate("CREDIT CARD"))).."]" -- [EXPEDIR E MUDAR SENHA] - .. "button[0.25,5.75;4.00,0.5;btnSetings;"..minetest.formspec_escape(core.colorize("#444444", modMinerTrade.translate("SETTINGS"))).."]" --Se quer ou não uma senha, se quer receber uma carta quando houver uma nova movimentacao. - .."button_exit[0.25,6.50;4.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" + .. "box[0.00,0.10;5.50,9.5;#000000]" + .. "button[0.25,0.50;5.00,0.5;btnBalance;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BALANCE"))).."]" + .. "button[0.25,1.25;5.00,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("STATEMENT"))).."]" + .. "button[0.25,2.00;5.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("DEPOSITS"))).."]" + .. "button[0.25,2.75;5.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS"))).."]" -- [DINHEIRO E CHECK] + .. "button[0.25,3.50;5.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("TRANSFERS"))).."]" + .. "button[0.25,4.25;5.00,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOANS"))).."]" --Emprestimos + .. "button[0.25,5.00;5.00,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("CREDIT CARD"))).."]" -- [EXPEDIR E MUDAR SENHA] + .. "button[0.25,5.75;5.00,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.25,6.50;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" - --.."box" .."[5.0,0.25;9.5,9.5;#000000]" - .."background[5.0,0.25;9.5,9.5;text_atm_front.png]" + --.. "box[6.0,0.25;9.5,9.5;#000000]" + .."background[6.0,0.25;9.5,9.5;text_atm_front.png]" - modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + minetest.show_formspec(playername, "frmAtmMain", formspec) end, frmBalance = function(playername) --FORMULÁRIO: SALDO @@ -147,37 +148,28 @@ modMinerTrade.showAtm = { else msgBalance = modMinerTrade.translate("Player '%s' is not an account holder of this bank."):format(playername) end + + local tblStatements = modMinerTrade.getStatement(playername) - local formspec = "size[15,10]" + local formspec = "size[16,10]" .."bgcolor[#636D7688;false]" --.."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"))).."]" + .. "box[0.00,0.10;5.50,9.5;#000000]" + .. "button[0.25,0.50;5.00,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + .."button_exit[0.25,6.50;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" - .. "box[0.00,0.10;4.50,9.5;#000000]" - .. "button[0.25,0.50;4.00,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" - --.. "button[0.25,1.25;4.00,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("STATEMENT"))).."]" - --.. "button[0.25,2.00;4.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("DEPOSITS"))).."]" - --.. "button[0.25,2.75;4.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS"))).."]" -- [DINHEIRO E CHECK] - --.. "button[0.25,3.50;4.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("TRANSFERS"))).."]" - --.. "button[0.25,4.25;4.00,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOANS"))).."]" --Emprestimos - --.. "button[0.25,5.00;4.00,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("CREDIT CARD"))).."]" -- [EXPEDIR E MUDAR SENHA] - --.. "button[0.25,5.75;4.00,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.25,6.50;4.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" + .. "box[6.0,0.25;9.5,9.5;#00000088]" + .."background[6.0,0.25;9.5,9.5;text_atm_front.png]" - .. "box[5.0,0.25;9.5,9.5;#00000088]" - .."background[5.0,0.25;9.5,9.5;text_atm_front.png]" + .. "textarea[6.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("ACCOUNT CREATED")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.bank.player[playername].account_created)).."]" - --.. "label[5.25,0.50;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":")).."]" - --.. "label[5.25,2.50;"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" - .. "textarea[5.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" + .. "textarea[6.75,3.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("FINANCIAL TRANSACTIONS")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", ("%02d"):format(#tblStatements).." transactions.")).."]" + .. "textarea[6.75,5.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) minetest.show_formspec( @@ -187,7 +179,7 @@ modMinerTrade.showAtm = { ) end, frmStatement = function(playername, selStatement) --FORMULÁRIO: SALDO - local formspec = "size[15,10]" + local formspec = "size[16,10]" .."bgcolor[#636D7644;false]" --.."bgcolor[#636D76FF;false]" --..default.gui_bg @@ -199,31 +191,23 @@ modMinerTrade.showAtm = { --.."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"))).."]" - .. "box[0.00,0.10;4.50,9.5;#000000]" - .. "button[0.25,0.50;4.00,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" - --.. "button[0.25,1.25;4.00,0.5;btnStatement;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("STATEMENT"))).."]" - --.. "button[0.25,2.00;4.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("DEPOSITS"))).."]" - --.. "button[0.25,2.75;4.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS"))).."]" -- [DINHEIRO E CHECK] - --.. "button[0.25,3.50;4.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("TRANSFERS"))).."]" - --.. "button[0.25,4.25;4.00,0.5;btnLoans;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOANS"))).."]" --Emprestimos - --.. "button[0.25,5.00;4.00,0.5;btnCreditCard;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("CREDIT CARD"))).."]" -- [EXPEDIR E MUDAR SENHA] - --.. "button[0.25,5.75;4.00,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.25,6.50;4.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" + .. "box[0.00,0.10;5.50,9.5;#000000]" + .. "button[0.25,0.50;5.00,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + .."button_exit[0.25,6.50;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" - .. "box[5.0,0.25;9.5,9.5;#00000088]" + .. "box[6.0,0.25;9.5,9.5;#00000088]" --.."background[5.0,0.25;9.5,9.5;text_atm_front.png]" - local msgStatement = "Select a bank statement to view transaction details!" + local msgStatement = modMinerTrade.translate("Select a bank statement to view transaction details!") local isAccount = modMinerTrade.isExistAcount(playername) if isAccount then formspec = formspec - .. "label[5.25,0.50;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("STATEMENT")..":")).."]" + .. "label[6.25,0.50;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("STATEMENT")..":")).."]" --.. "label[5.25,2.50;"..minetest.formspec_escape(core.colorize("#00FFFF", msgStatement)).."]" --"textarea[5.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("STATEMENT")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgStatement)).."]" local listStatement = modMinerTrade.getStatement(playername) - local plusStatement = "" - --..minetest.formspec_escape("QUANDO | VALOR") + local plusStatement = "#888,"..modMinerTrade.translate("WHEN")..","..modMinerTrade.translate("VALUE") for i, oneStatement in ipairs(listStatement) do local sign = "" @@ -231,36 +215,40 @@ modMinerTrade.showAtm = { sign = "+" end --local line = oneStatement.when.." | "..sign..oneStatement.value.." minercash." - local line = sign..oneStatement.value.." minercash. ["..oneStatement.when.."]" + local line = "#FFF," + ..minetest.formspec_escape(oneStatement.when) + .."," + ..minetest.formspec_escape(sign..("%02d"):format(oneStatement.value).." minercash.") if plusStatement == "" then - plusStatement = minetest.formspec_escape(line) + plusStatement = line else - plusStatement = plusStatement..","..minetest.formspec_escape(line) + plusStatement = plusStatement..","..line end end + --[[ ]] local value = modMinerTrade.getBalance(playername) if value ~= nil then local sign = "" if value >= 1 then sign = "+" end - modMinerTrade.getBalance(playername) - - plusStatement = plusStatement..","..minetest.formspec_escape( - --os.date("%Y-%b-%d %Hh:%Mm:%Ss").." <<< "..sign..value.." minercash ("..modMinerTrade.translate("TOTAL")..")." - modMinerTrade.translate("TOTAL")..": "..sign..value.." minercash." - --.." ["..os.date("%Y-%b-%d %Hh:%Mm:%Ss").."]" - ) + plusStatement = plusStatement..",#FFFF00," + --..minetest.formspec_escape(os.date("%Y-%B-%d %Hh:%Mm:%Ss")) + ..minetest.formspec_escape(modMinerTrade.translate("TOTAL")..":") + .."," + ..minetest.formspec_escape(sign..("%02d"):format(value).." minercash.") end + --]] local mySel = "" - if selStatement ~= nil and type(selStatement)=="number" and selStatement >= 1 and selStatement <= #listStatement then + if selStatement ~= nil and type(selStatement)=="number" and selStatement >= 2 and selStatement <= #listStatement+1 then mySel = selStatement - msgStatement = dump(listStatement[selStatement].description) + msgStatement = dump(listStatement[selStatement-1].description) end formspec = formspec .." style[fldStatement;bgcolor=red;textcolor=yellow;border=true]" - .. "table[5.25,1.00;9.0,7.5;fldStatement;"..plusStatement..";"..mySel.."]" + .." tablecolumns[color;text;text]" + .. "table[6.25,1.00;9.0,6.75;fldStatement;"..plusStatement..";"..mySel.."]" --.. "textlist[5.25,1.00;9.0,6.0;fldStatement;"..plusStatement..";"..mySel.."]" --.."tablecolumns[cell1,opt1_a,opt2_a;cell2,opt1_b,opt2_b;type_c,opt1_c,opt2_c]" --.."tableoptions[opt1;opt2;opt3]" @@ -269,7 +257,7 @@ modMinerTrade.showAtm = { end formspec = formspec - .."textarea[5.75,9.00;9.0,1.5;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("TRANSACTION DETAILS")..":"))..";" + .."textarea[6.75,8.50;9.0,1.5;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("TRANSACTION DETAILS")..":"))..";" ..minetest.formspec_escape(core.colorize("#00FFFF", msgStatement)) .."]" @@ -281,28 +269,147 @@ modMinerTrade.showAtm = { 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"))).."]" + frmWithdrawals = function(playername) --FORMULÁRIO: SAQUE + local formspec = "size[16,10]" + .."bgcolor[#636D7688;false]" + --.."bgcolor[#636D76FF;false]" + --..default.gui_bg + --..default.gui_bg_img + --..default.gui_slots + + .. "box[0.00,0.10;5.50,9.5;#000000]" + .. "button[0.25,0.50;5.00,0.5;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + .."button_exit[0.25,6.50;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" + + .."background[6.0,0.25;9.5,9.5;text_atm_front.png]" + .. "box[6.0,0.25;9.5,9.5;#000000CC]" + + .. "label[6.75,0.75;"..minetest.formspec_escape(core.colorize("#00FFFF", "SELECT BANK WITHDRAWAL METHOD:")).."]" + --.. "textarea[5.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" + --.. "button[6.25,1.50;1.00,1.00;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + --.."style_type[image_button;bgcolor=#00000000;border=false]" + --.."style[btnMinercoin;bgimg=sbl_save.png;bgimg_hovered=sbl_save_pressed.png;bgimg_pressed=sbl_save_pressed.png;border=false]" + .. "label[9.25,3.25;"..minetest.formspec_escape(core.colorize("#FFFFFF", "MINERCASH")).."]" + .."tooltip[btnMinercoin;"..minetest.formspec_escape(modMinerTrade.translate("Withdrawals in minercash."))..";#CCCC0088;#000000]" + .."image_button[7.25,2.50;2.00,2.00;obj_minercoin.png;btnGiveCash;]" + + .. "label[9.25,5.75;"..minetest.formspec_escape(core.colorize("#FFFFFF", "BANK CHECK")).."]" + .."tooltip[btnMinercoin;"..minetest.formspec_escape(modMinerTrade.translate("Withdrawals in bank check."))..";#CCCC0088;#000000]" + .."image_button[7.25,5.00;2.00,2.00;obj_bank_check.png;btnGiveCheck;]" modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) minetest.show_formspec(playername, "frmAtmWithdrawals", formspec) end, + frmGiveCash = function(playername, txtValue, msgDetails) --FORMULÁRIO: SAQUE + modMinerTrade.debug("modMinerTrade.showAtm.frmGiveCash() >>> playername = "..playername.." | txtValue = "..dump(txtValue).." | msgDetails = "..dump(msgDetails)) + + local msgBalance = "" + if modMinerTrade.isExistAcount(playername) then + msgBalance = modMinerTrade.translate("You have %02d 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[16,10]" + .."bgcolor[#636D7688;false]" + --.."bgcolor[#636D76FF;false]" + --..default.gui_bg + --..default.gui_bg_img + --..default.gui_slots + + .. "box[0.00,0.10;5.50,9.5;#000000]" + .. "button[0.25,0.50;5.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + .."button_exit[0.25,6.50;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" + + .."background[6.0,0.25;9.5,9.5;text_atm_front.png]" + .. "box[6.0,0.25;9.5,9.5;#000000CC]" + + .. "textarea[6.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" + + if modMinerTrade.isExistAcount(playername) then + if txtValue == nil or txtValue == "" then + txtValue = "1" + end + if msgDetails == nil or msgDetails == "" then + msgDetails = modMinerTrade.translate("Write the value that want to withdrawal!") + end + formspec = formspec + --.. "label[5.25,0.50;"..minetest.formspec_escape(core.colorize("#00FFFF", "WITHDRAWAL IN MINERCASH:")).."]" + .."field[7.00,3.50;3.00,0.50;txtValue;" + ..minetest.formspec_escape( + core.colorize( + "#00FFFF", + modMinerTrade.translate("VALUE")..":" + ) + )..";" + ..minetest.formspec_escape(txtValue) + .."]" + .. "button[9.85,3.00;4.00,1.00;btnAtmGive;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("WITHDRAWAL"))).."]" + .."textarea[6.75,8.50;9.0,1.5;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("DETAILS")..":"))..";" + ..minetest.formspec_escape(core.colorize("#00FFFF", msgDetails)) + .."]" + end + + --.. "textarea[5.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("BALANCES")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", msgBalance)).."]" + --.. "button[6.25,1.50;1.00,1.00;btnAtmMain;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("BACK"))).."]" + --.."style_type[image_button;bgcolor=#00000000;border=false]" + --.."style[btnMinercoin;bgimg=sbl_save.png;bgimg_hovered=sbl_save_pressed.png;bgimg_pressed=sbl_save_pressed.png;border=false]" + + --[[ + .. "label[7.25,2.75;"..minetest.formspec_escape(core.colorize("#FFFFFF", "MINERCASH")).."]" + .."tooltip[btnMinercoin;"..minetest.formspec_escape(modMinerTrade.translate("Withdrawals in minercash."))..";#CCCC0088;#000000]" + .."image_button[5.25,2.00;2.00,2.00;obj_minercoin.png;btnGiveCash;]" + + .. "label[7.25,5.25;"..minetest.formspec_escape(core.colorize("#FFFFFF", "BANK CHECK")).."]" + .."tooltip[btnMinercoin;"..minetest.formspec_escape(modMinerTrade.translate("Withdrawals in bank check."))..";#CCCC0088;#000000]" + .."image_button[5.25,4.50;2.00,2.00;obj_bank_check.png;btnGiveCheck;]" + --]] + + minetest.show_formspec(playername, "frmAtmGiveCash", formspec) + end, } +modMinerTrade.convValueToItemList = function(value) + if value ~= nil + and type(value) == "number" + and value >= 1 + then + local moneytypes= { + [1]="minertrade:minercoin", + [2]="minertrade:minermoney_blue", + [3]="minertrade:minermoney_green", + [4]="minertrade:minermoney_yellow", + [5]="minertrade:minermoney_orange", + [6]="minertrade:minermoney_red", + [7]="minertrade:minermoney_black", + } + local items = { } + for i = #moneytypes, 1, -1 do + local valMoney = 9 ^ (i - 1) + local money = math.floor(value / valMoney) + local decrease = money * valMoney + value = value - decrease + if money >= 1 then + local newItem = { + name = moneytypes[i], + amount = money, + price = decrease + } + --modMinerTrade.debug("modMinerTrade.convValueToItemList() >>> items = "..dump(items).." | newItem = "..dump(newItem)) + table.insert(items, newItem) + end + if value == 0 then break end + end + return items + end +end + modMinerTrade.onReceiveFields = function(player, formname, fields) local playername = player:get_player_name() --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> player = "..playername.." | formname = "..formname.." | fields = "..dump(fields)) if fields.btnAtmMain ~= nil then + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) modMinerTrade.showAtm.frmMain(playername) else if formname == "frmAtmMain" then @@ -319,14 +426,91 @@ modMinerTrade.onReceiveFields = function(player, formname, fields) if fields.fldStatement ~= nil then local tblStatement = modMinerTrade.getStatement(playername) local fldStatement = minetest.explode_table_event(fields.fldStatement) - if fldStatement.row ~= nil and type(fldStatement.row) == "number" and fldStatement.row >= 1 and fldStatement.row <= #tblStatement then - modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> fldStatement = "..dump(fldStatement)) + if fldStatement.row ~= nil and type(fldStatement.row) == "number" and fldStatement.row >= 2 and fldStatement.row <= #tblStatement+1 then + --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> fldStatement = "..dump(fldStatement)) modMinerTrade.showAtm.frmStatement(playername, fldStatement.row) end end + elseif formname == "frmAtmWithdrawals" then + if fields.btnGiveCash ~= nil then + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + modMinerTrade.showAtm.frmGiveCash(playername) + elseif fields.btnGiveCheck ~= nil then + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + end + elseif formname == "frmAtmGiveCash" then + --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> player = "..playername.." | formname = "..formname.." | fields = "..dump(fields)) + if fields.btnWithdrawals ~= nil then + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + modMinerTrade.showAtm.frmWithdrawals(playername) + elseif fields.btnAtmGive ~= nil + and fields.txtValue ~= nil + and tonumber(fields.txtValue) ~= nil + and type(tonumber(fields.txtValue))=="number" + and tonumber(fields.txtValue) >= 1 + then + local myValue = fields.txtValue + if modMinerTrade.isExistAcount(playername) then + local myBalance = modMinerTrade.getBalance(playername) + if tonumber(myValue) <= myBalance then + local player = minetest.get_player_by_name(playername) + if player ~= nil and player:is_player() then + local delivered = 0 + local items = modMinerTrade.convValueToItemList(tonumber(myValue)) + --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> formname = "..formname.." | items = "..dump(items)) + if items ~= nil + and type(items) == "table" + and #items >= 1 + then + local minv = player:get_inventory() + for _, item in ipairs(items) do + --if not pinv:contains_item("customer_gives",item) then + local itemdesc = item.name.." "..item.amount + if minv:room_for_item("main",itemdesc) then -- verifica se compartimento de Recebimento de pagamento do vendedor tem espaço + minv:add_item("main",itemdesc) + delivered = delivered + item.price + else + break + end + end + end + if delivered >= 1 then + modMinerTrade.addBalance(playername, 0 - delivered) + modMinerTrade.addStatement( + playername, 0 - delivered, + ("You have withdrawn %02d minercash from your bank account."):format(delivered) + ) + end + if delivered == tonumber(myValue) then + modMinerTrade.doSoundPlayer(playername, "sfx_cash_register", 5) + modMinerTrade.showAtm.frmMain(playername) + else + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + modMinerTrade.showAtm.frmGiveCash(playername, + tonumber(myValue) - delivered, + modMinerTrade.translate( + "you don't have space in your inventory to withdraw so much minercash." + ) + ) + end + end + else + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + modMinerTrade.showAtm.frmGiveCash(playername, + myValue, + modMinerTrade.translate( + "The maximum amount you can withdraw is: %02d minercash." + ):format(myBalance) + ) + end + else + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + end + end end end end + --############################################################################################################### @@ -435,6 +619,7 @@ minetest.register_node("minertrade:atm", { modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(clickername) ) --]] + modMinerTrade.doSoundPlayer(clickername, "sfx_atm", 5) modMinerTrade.showAtm.frmMain(clickername) else --minetest.sound_play("sfx_failure", {object=clicker, max_hear_distance=5.0,})