From 73924b68bced15e930cb002c58cfb656aea15be8 Mon Sep 17 00:00:00 2001 From: Lunovox Date: Sun, 15 May 2022 01:27:41 -0300 Subject: [PATCH] =?UTF-8?q?Formul=C3=A1rio=20de=20Dep=C3=B3sitos.=20+/-=20?= =?UTF-8?q?ok!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- item_atm.lua | 175 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 162 insertions(+), 13 deletions(-) diff --git a/item_atm.lua b/item_atm.lua index d2544e9..59c9c7b 100644 --- a/item_atm.lua +++ b/item_atm.lua @@ -151,6 +151,28 @@ modMinerTrade.getStatement = function(playername) end end +modMinerTrade.checkValidStack = function(stack) + local cashtypes= modMinerTrade.getCashTypes() + for i, item in pairs(cashtypes) do + if item == stack:get_name() then + return stack:get_count() + end + end + return 0 +end + +modMinerTrade.getValueStack = function(stack) + local cashtypes= modMinerTrade.getCashTypes() + for i, item in pairs(cashtypes) do + if item == stack:get_name() then + local amount = stack:get_count() + return (9 ^ (i - 1)) * amount + end + end + return 0 +end + + modMinerTrade.showAtm = { frmMain = function(playername) --FORMULÁRIO: PRINCIPAL / RAIZ local formspec = "size[16,10]" @@ -164,7 +186,7 @@ modMinerTrade.showAtm = { .. "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.00;5.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#FFFFF", 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 @@ -325,16 +347,16 @@ modMinerTrade.showAtm = { .."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:")).."]" + .. "label[6.75,0.75;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("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")).."]" + .. "label[9.25,3.25;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("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")).."]" + .. "label[9.25,5.75;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("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;]" @@ -409,22 +431,146 @@ modMinerTrade.showAtm = { minetest.show_formspec(playername, "frmAtmGiveCash", formspec) end, + frmDeposits = function(playername) --FORMULÁRIO: SAQUE + -- playername = player:get_player_name() + local newInv = minetest.create_detached_inventory("deposits", { + + -- Called when a player wants to move items inside the inventory + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + --return count + return 0 + end, + + -- Called when a player wants to put items into the inventory + allow_put = function(inv, listname, index, stack, player) + if modMinerTrade.checkValidStack(stack) >= 1 then + return stack:get_count() + else + return 0 + end + end, + + -- Called when a player wants to take items out of the inventory + allow_take = function(inv, listname, index, stack, player) + if modMinerTrade.checkValidStack(stack) >= 1 then + return 0 + else + return stack:get_count() + end + end, + + -- on_* - no return value + -- Called after the actual action has happened, according to what was allowed. + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + --modMinerTrade.setSafeInventory(playername, inv:get_list("safe")) + --minetest.log('action',playername.." colocou "..stack:get_count().." '"..stack:get_name().."' em seu cofre!") + end, + on_put = function(inv, listname, index, stack, player) + --modMinerTrade.setSafeInventory(playername, inv:get_list("safe")) + --minetest.log('action',modMinerTrade.translate("Player '%s' has placed %02d '%s' in his safe!"):format(playername, stack:get_count(), stack:get_name())) + local playername = player:get_player_name() + if modMinerTrade.checkValidStack(stack) >= 1 then + local stackValue = modMinerTrade.getValueStack(stack) + --modMinerTrade.debug("modMinerTrade.convValueToItemList() >>> items = "..dump(items).." | newItem = "..dump(newItem)) + if stackValue >= 1 then + modMinerTrade.addBalance(playername, stackValue) + modMinerTrade.addStatement( + playername, stackValue, + ("You deposited %02d x '%s'!"):format(stack:get_count(), stack:get_name()) + ) + --stack:take_item(stack:get_count()) + stack:take_item() + modMinerTrade.doSoundPlayer(playername, "sfx_cash_register", 5) + modMinerTrade.showAtm.frmDeposits(playername) + end + else + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + end + --return stack + end, + on_take = function(inv, listname, index, stack, player) + --modMinerTrade.setSafeInventory(playername, inv:get_list("safe")) + --minetest.log('action',modMinerTrade.translate("Player '%s' has removed %02d '%s' in his safe!"):format(playername, stack:get_count(), stack:get_name())) + end, + + }) + newInv:set_size("deposit", 1) + newInv:set_stack("deposit", 1, nil) + --return newInv:get_list("deposit") + + --[[ + local invList = modMinerTrade.getSafeInventory(playername) + if invList~=nil and #invList>=1 then + newInv:set_list("safe", invList) + else + newInv:set_size("safe", modMinerTrade.size.width*modMinerTrade.size.height) + 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;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", modMinerTrade.translate("BANK DEPOSIT")..":")).."]" + --.. "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;]" + --]] + + --listcolors[slot_bg_normal;slot_bg_hover;slot_border;tooltip_bgcolor;tooltip_fontcolor] + .."listcolors[#88888866;#666666;#CCCCCC;#444444;#FFFFFF]" + + .."label[7.00,3.00;"..minetest.formspec_escape(modMinerTrade.translate("ATM entrance"))..":]" + .."list[detached:deposits;deposit;11.50,3.50;1,1;]" + + --.."button[3,2.0;2,1;exchange;"..minetest.formspec_escape(modMinerTrade.translate("DEPOSIT")).."]" + + .."label[7.00,5.00;"..minetest.formspec_escape(modMinerTrade.translate("Your Inventory"))..":]" + .."list[current_player;main;7.00,5.50;8,4;]" + + minetest.show_formspec(playername, "frmAtmDeposits", formspec) + end, } +modMinerTrade.getCashTypes = function() + return { + [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", + } +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 moneytypes= modMinerTrade.getCashTypes() local items = { } for i = #moneytypes, 1, -1 do local valMoney = 9 ^ (i - 1) @@ -461,6 +607,9 @@ modMinerTrade.onReceiveFields = function(player, formname, fields) modMinerTrade.showAtm.frmStatement(playername) elseif fields.btnWithdrawals ~= nil then modMinerTrade.showAtm.frmWithdrawals(playername) + elseif fields.btnDeposits ~= nil then + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + modMinerTrade.showAtm.frmDeposits(playername) end elseif formname == "frmAtmStatement" then --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> player = "..playername.." | formname = "..formname.." | fields = "..dump(fields))