diff --git a/api_payday.lua b/api_payday.lua index 25da856..b5eb758 100644 --- a/api_payday.lua +++ b/api_payday.lua @@ -40,6 +40,53 @@ modMinerTrade.salary = { end return tonumber(modMinerTrade.salary.intervalcheck) end, + doPay = function() + local players = minetest.get_connected_players() + if #players >= 1 then + if modMinerTrade.bank.last_pay ~= minetest.get_day_count() then + modMinerTrade.bank.last_pay = minetest.get_day_count() + local valueSalary = modMinerTrade.salary.getValue() + local description = modMinerTrade.translate("The Government deposited the %2d° salary in your bank account!"):format(minetest.get_day_count()) + local payedPeoples = 0 + for _, player in ipairs(players) do + local playername = player:get_player_name() + if minetest.get_player_privs(playername).salary then + if modMinerTrade.isExistAcount(playername) then + local publicBalance = modMinerTrade.getBalance("THE GOVERNMENT") + local colorTitle = "" + if publicBalance >= valueSalary then + payedPeoples = payedPeoples + 1 + modMinerTrade.addBalance("THE GOVERNMENT", 0 - valueSalary) + modMinerTrade.addBalance(playername, valueSalary) + modMinerTrade.addStatement(playername, valueSalary, description) + colorTitle = "#00FF00" + modMinerTrade.doSoundPlayer(playername, "sfx_cash_register", 5) + else + colorTitle = "#FF0000" + modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) + description = modMinerTrade.translate("The Government did not have enough balance to deposit the %2dth salary in its bank account!"):format(minetest.get_day_count()) + end + minetest.chat_send_player( + playername, + core.colorize(colorTitle, + "["..modMinerTrade.translate("THE GOVERNMENT").."]: " + )..description + ) + --else + --modMinerTrade.debug("api_payday.lua >>> "..playername.." sem conta!") + end + end + end -- Final off for _, player in ipairs(players) do + if payedPeoples >= 1 then + modMinerTrade.addStatement("THE GOVERNMENT", 0 - (payedPeoples * valueSalary), + modMinerTrade.translate("Daily Bonus Payment for %02d players online!"):format(payedPeoples) + ) + end + minetest.log('action',"[MINERTRADE] "..description) + modMinerTrade.doBankSave() + end + end + end, } minetest.after(3.5, function() @@ -49,34 +96,10 @@ minetest.after(3.5, function() modMinerTrade.salary.timer = modMinerTrade.salary.timer + dtime if modMinerTrade.salary.timer >= modMinerTrade.salary.getIntervalCheck() then modMinerTrade.salary.timer = 0 - local players = minetest.get_connected_players() - if #players >= 1 then - if modMinerTrade.bank.last_pay ~= minetest.get_day_count() then - modMinerTrade.bank.last_pay = minetest.get_day_count() - local description = modMinerTrade.translate("The city hall deposited the %2d° salary in your bank account!"):format(minetest.get_day_count()) - for _, player in ipairs(players) do - local playername = player:get_player_name() - if minetest.get_player_privs(playername).salary then - if modMinerTrade.isExistAcount(playername) then - local value = modMinerTrade.salary.getValue() - modMinerTrade.addBalance(playername, value) - modMinerTrade.addStatement(playername, value, description) - minetest.chat_send_player( - playername, - core.colorize("#00FF00", - "["..modMinerTrade.translate("CITY HALL").."]: " - )..description - ) - modMinerTrade.doSoundPlayer(playername, "sfx_cash_register", 5) - else - modMinerTrade.debug("api_payday.lua >>> "..playername.." sem conta!") - end - end - end -- Final off for _, player in ipairs(players) do - minetest.log('action',"[MINERTRADE] "..description) - modMinerTrade.doBankSave() - end - end + modMinerTrade.salary.doPay() + + + end end) end diff --git a/item_atm.lua b/item_atm.lua index 7cea0e0..0dd188d 100644 --- a/item_atm.lua +++ b/item_atm.lua @@ -92,6 +92,7 @@ modMinerTrade.createAcount = function(playername) } --modMinerTrade.bank.player[playername].account_created modMinerTrade.bank.accounts = modMinerTrade.bank.accounts + 1 + modMinerTrade.doBankSave() return true else return false @@ -344,6 +345,18 @@ modMinerTrade.showAccountBank = { modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) modMinerTrade.showAccountBank.frmMain(playername) end, + --[[ ]] + inPublicAccess = function(playername) -- + local accountname = "THE GOVERNMENT" + if not modMinerTrade.isExistAcount(accountname) then + modMinerTrade.createAcount(accountname) + end + modMinerTrade.bank.player[playername].focused_accountname = accountname + modMinerTrade.bank.player[playername].focused_accountmode = "public_access" + modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) + modMinerTrade.showAccountBank.frmMain(playername) + end, + --]] frmMain = function(playername) --FORMULÁRIO: PRINCIPAL / RAIZ local accountname = modMinerTrade.bank.player[playername].focused_accountname local accountmode = modMinerTrade.bank.player[playername].focused_accountmode @@ -358,14 +371,20 @@ modMinerTrade.showAccountBank = { .. "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,3.50;5.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("TRANSFERS"))).."]" - if - accountmode~=nil - and type(accountmode) == "string" - and accountmode == "atm" + if type(accountmode) == "string" and ( --Aacesso público à contas públicas não tem transferência. + accountmode == "atm" + or accountmode == "online" + ) then + formspec = formspec + .. "button[0.25,3.50;5.00,0.5;btnTransfers;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("TRANSFERS"))).."]" + end + if type(accountmode) == "string" and (accountmode == "atm" or accountmode == "public_access") then formspec = formspec .. "button[0.25,2.00;5.00,0.5;btnDeposits;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("DEPOSITS"))).."]" + end + if type(accountmode) == "string" and accountmode == "atm" then + formspec = formspec .. "button[0.25,2.75;5.00,0.5;btnWithdrawals;"..minetest.formspec_escape(core.colorize("#FFFFF", modMinerTrade.translate("WITHDRAWALS"))).."]" -- [DINHEIRO E CHECK] end if minetest.get_player_privs(playername).developer then @@ -375,6 +394,10 @@ modMinerTrade.showAccountBank = { .. "button[0.25,5.75;5.00,0.5;btnLottery;"..minetest.formspec_escape(core.colorize("#888888", modMinerTrade.translate("LOTTERY"))).."]" --Lotérica .. "button[0.25,6.50;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. end + if type(accountmode) == "string" and accountmode ~= "public_access" then + formspec = formspec + .."button[0.25,6.50;5.00,0.5;btnPublicAccess;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("THE GOVERNMENT"))).."]" + end formspec = formspec .."button_exit[0.25,7.25;5.00,0.5;;"..minetest.formspec_escape(core.colorize("#FFFFFF", modMinerTrade.translate("EXIT"))).."]" @@ -550,7 +573,7 @@ modMinerTrade.showAccountBank = { end, frmGiveCash = function(playername, txtValue, msgDetails) --FORMULÁRIO: SAQUE EM DINHEIRO local accountname = modMinerTrade.bank.player[playername].focused_accountname - --modMinerTrade.debug("modMinerTrade.showAccountBank.frmGiveCash() >>> playername = "..playername.." | txtValue = "..dump(txtValue).." | msgDetails = "..dump(msgDetails)) + modMinerTrade.debug("modMinerTrade.showAccountBank.frmGiveCash() >>> playername = "..playername.." | txtValue = "..dump(txtValue).." | msgDetails = "..dump(msgDetails)) local msgBalance = "" if modMinerTrade.isExistAcount(accountname) then @@ -603,7 +626,7 @@ modMinerTrade.showAccountBank = { frmDeposits = function(playername) --FORMULÁRIO: DEPÓSITOS local accountname = modMinerTrade.bank.player[playername].focused_accountname -- playername = player:get_player_name() - local newInv = minetest.create_detached_inventory("deposits_"..accountname, { + local newInv = minetest.create_detached_inventory("deposits_"..playername, { -- 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) @@ -704,7 +727,7 @@ modMinerTrade.showAccountBank = { .."label[7.00,3.00;"..minetest.formspec_escape(modMinerTrade.translate("ATM entrance"))..":]" .."image[9.00,3.35;2,2;obj_minercoin.png]" .."image[10.50,3.75;1,1;gui_arrow.png^[transformR270]" - .."list[detached:"..minetest.formspec_escape("deposits_"..accountname)..";deposit;11.50,3.75;1,1;]" + .."list[detached:"..minetest.formspec_escape("deposits_"..playername)..";deposit;11.50,3.75;1,1;]" --.."button[3,2.0;2,1;exchange;"..minetest.formspec_escape(modMinerTrade.translate("DEPOSIT")).."]" @@ -900,6 +923,8 @@ modMinerTrade.onReceiveFields = function(player, formname, fields) elseif fields.btnLoans ~= nil then modMinerTrade.doSoundPlayer(playername, "sfx_atm", 5) modMinerTrade.showAccountBank.frmLoanFunctions(playername) + elseif fields.btnPublicAccess ~= nil then + modMinerTrade.showAccountBank.inPublicAccess(playername) end elseif formname == "frmAtmStatement" then --modMinerTrade.debug("modMinerTrade.onReceiveFields() >>> player = "..playername.." | formname = "..formname.." | fields = "..dump(fields)) @@ -930,8 +955,9 @@ modMinerTrade.onReceiveFields = function(player, formname, fields) and tonumber(fields.txtValue) >= 1 then local myValue = fields.txtValue - if modMinerTrade.isExistAcount(playername) then - local myBalance = modMinerTrade.getBalance(playername) + local accountname = modMinerTrade.bank.player[playername].focused_accountname + if modMinerTrade.isExistAcount(accountname) then + local myBalance = modMinerTrade.getBalance(accountname) if tonumber(myValue) <= myBalance then local player = minetest.get_player_by_name(playername) if player ~= nil and player:is_player() then @@ -983,7 +1009,7 @@ modMinerTrade.onReceiveFields = function(player, formname, fields) ):format(myBalance) ) end - else + else --if modMinerTrade.isExistAcount(playername) then modMinerTrade.doSoundPlayer(playername, "sfx_failure", 5) end end