From 831e35eaefcee3c67d18bfc90734310269e49cd3 Mon Sep 17 00:00:00 2001 From: Lunovox Date: Sat, 14 May 2022 21:41:54 -0300 Subject: [PATCH] =?UTF-8?q?Melhorando=20a=20est=C3=A9tica=20do=20Saldo=20e?= =?UTF-8?q?=20do=20Extrato?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- item_atm.lua | 65 +++++++++++++++++++++++++++++++++++++--------- item_minercash.lua | 18 ++++++++++--- settingtypes.txt | 10 +++++-- 3 files changed, 76 insertions(+), 17 deletions(-) diff --git a/item_atm.lua b/item_atm.lua index ab562c2..d2544e9 100644 --- a/item_atm.lua +++ b/item_atm.lua @@ -61,6 +61,7 @@ modMinerTrade.createAcount = function(playername) modMinerTrade.bank.player[playername] = { account_created = os.date("%Y-%B-%d %Hh:%Mm:%Ss"), balance = 0, + total_transactions = 0, statement = { } } --modMinerTrade.bank.player[playername].account_created @@ -89,17 +90,53 @@ modMinerTrade.addBalance = function(playername, value) return false end +modMinerTrade.getMaxStatements = function() --MÁXIMO DE EXTRATOS ARMAZENADOS. + local maxStatements = minetest.settings:get("minertrade.bank.max_statements") + if maxStatements == nil + or type(tonumber(maxStatements)) ~= "number" + or tonumber(maxStatements) < 1 + or tonumber(maxStatements) > 300 + then + maxStatements = 30 + minetest.settings:set("minertrade.bank.max_statements", tostring(maxStatements)) + end + return tonumber(maxStatements) +end + +modMinerTrade.getTotalTransactions = function(playername) --TOTAL DE MOVIMENTAÇOES FINANCEIRAS DESDE ACRIACAO DA CONTA. + if modMinerTrade.isExistAcount(playername) then + return modMinerTrade.bank.player[playername].total_transactions or 0 + end + return 0 +end + modMinerTrade.addStatement = function(playername, value, description) if value ~= nil and type(value) == "number" and value ~= 0 then if modMinerTrade.isExistAcount(playername) then + local myStatement = modMinerTrade.getStatement(playername) + local totalTransactions = modMinerTrade.getTotalTransactions(playername) + if myStatement ~= nil + and type(myStatement) + and #myStatement >= 1 + then + local maxStatements = modMinerTrade.getMaxStatements() + if #myStatement >= maxStatements then + local toDelete = (#myStatement - maxStatements) + 1 + for i = toDelete, 1, -1 do + table.remove (myStatement, i) + end + end + end table.insert( - modMinerTrade.bank.player[playername].statement, + myStatement, { when = os.date("%Y-%B-%d %Hh:%Mm:%Ss"), value = value, description = description, } ) + modMinerTrade.bank.player[playername].total_transactions = totalTransactions + 1 + modMinerTrade.bank.player[playername].statement = myStatement return true end end @@ -149,8 +186,9 @@ modMinerTrade.showAtm = { msgBalance = modMinerTrade.translate("Player '%s' is not an account holder of this bank."):format(playername) end - local tblStatements = modMinerTrade.getStatement(playername) - + --local tblStatements = modMinerTrade.getStatement(playername) + local totalTransactions = modMinerTrade.getTotalTransactions(playername) + local formspec = "size[16,10]" .."bgcolor[#636D7688;false]" --.."bgcolor[#636D76FF;false]" @@ -165,11 +203,13 @@ modMinerTrade.showAtm = { .. "box[6.0,0.25;9.5,9.5;#00000088]" .."background[6.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)).."]" + .. "textarea[6.75,1.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("NAME OF BANKING ACCOUNT HOLDER")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", playername:upper())).."]" - .. "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,2.50;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)).."]" - .. "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)).."]" + .. "textarea[6.75,4.00;9.0,9.0;;"..minetest.formspec_escape(core.colorize("#00FFFF", modMinerTrade.translate("FINANCIAL TRANSACTIONS")..":"))..";"..minetest.formspec_escape(core.colorize("#00FFFF", ("%02d"):format(totalTransactions).." transactions.")).."]" + + .. "textarea[6.75,5.50;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( @@ -207,7 +247,7 @@ modMinerTrade.showAtm = { --"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 = "#888,"..modMinerTrade.translate("WHEN")..","..modMinerTrade.translate("VALUE") + local plusStatement = "#888,"..modMinerTrade.translate("N°")..","..modMinerTrade.translate("WHEN")..","..modMinerTrade.translate("VALUE") for i, oneStatement in ipairs(listStatement) do local sign = "" @@ -216,9 +256,10 @@ modMinerTrade.showAtm = { end --local line = oneStatement.when.." | "..sign..oneStatement.value.." minercash." local line = "#FFF," + ..(("%03d"):format(i)).."," ..minetest.formspec_escape(oneStatement.when) .."," - ..minetest.formspec_escape(sign..("%02d"):format(oneStatement.value).." minercash.") + ..minetest.formspec_escape(sign..("%02d"):format(oneStatement.value).." MT$.") if plusStatement == "" then plusStatement = line else @@ -232,11 +273,11 @@ modMinerTrade.showAtm = { if value >= 1 then sign = "+" end - plusStatement = plusStatement..",#FFFF00," + plusStatement = plusStatement..",#FFFF00,," --..minetest.formspec_escape(os.date("%Y-%B-%d %Hh:%Mm:%Ss")) - ..minetest.formspec_escape(modMinerTrade.translate("TOTAL")..":") - .."," + ..minetest.formspec_escape(modMinerTrade.translate("TOTAL")..": ") ..minetest.formspec_escape(sign..("%02d"):format(value).." minercash.") + .."," end --]] @@ -247,7 +288,7 @@ modMinerTrade.showAtm = { end formspec = formspec .." style[fldStatement;bgcolor=red;textcolor=yellow;border=true]" - .." tablecolumns[color;text;text]" + .." tablecolumns[color;text;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]" diff --git a/item_minercash.lua b/item_minercash.lua index 02f1f5c..8487afc 100644 --- a/item_minercash.lua +++ b/item_minercash.lua @@ -202,7 +202,7 @@ minetest.register_craftitem("minertrade:minermoney_black", { description = core.colorize("#00FF00", modMinerTrade.translate("BLACK MINERMONEY") ).."\n* "..modMinerTrade.translate("Equals %02d minercash."):format(9^6), - inventory_image = "obj_minermoney_satured.png^[multiply:#444444", + inventory_image = "obj_minermoney_satured.png^[multiply:#666666", stack_max=9, --Acumula 9 por slot groups = {cash=531441, trade=1, money=1}, }) @@ -276,8 +276,20 @@ minetest.register_craftitem("minertrade:creditcard", { inventory_image = "obj_credit_card.png", --stack_max=9, --Acumula 9 por slot groups = {cash=0, trade=1}, - --[[ on_use = function(itemstack, player) + --[[ + modMinerTrade.showInventory( + clicker, + clickername, + modMinerTrade.translate("PUBLIC ATM - Account of '%s':"):format(clickername) + ) + --]] + local playername = player:get_player_name() + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + modMinerTrade.showAtm.frmMain(playername) + + + --[[ local playername = player:get_player_name() local meta = itemstack:get_meta() local old_data = minetest.deserialize(itemstack:get_metadata()) @@ -313,8 +325,8 @@ minetest.register_craftitem("minertrade:creditcard", { modMinerTrade.translate("ACCOUNT BANK of '%s':"):format(tmpDatabase.ownername) ) return itemstack - end, --]] + end, }) minetest.register_craft({ diff --git a/settingtypes.txt b/settingtypes.txt index bff0e06..a2d9fe0 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -15,13 +15,19 @@ minertrade.salary.enabled (Daily Salary Enabled) bool true # Value of the prize minercash that each player will receive at the end of the virtual day. # Default: 1 | Min: 1 minertrade.salary.value (Daily Salary Value) int 1 1 - # MINERTRADE: + # Time interval in seconds to check for rewardable players. # WARNING: Decreasing this value too much can cause server lag. -# Deafault: 60 | Min: 1 +# Default: 60 | Min: 1 minertrade.salay.intervalcheck (Interval Check Salary) int 60 1 +# MINERTRADE: + +# Maximum record number of bank statements. +# Default: 30 | Min: 1 | Max: 300 +minertrade.bank.max_statements (Maximum Record Statements) int 30 1 300 + # MINERTRADE: # Allows you to print the debug information of this mod on the screen. # Default: false