[feat] add The Governmemt Menu

This commit is contained in:
Lunovox 2024-03-01 11:45:35 -03:00
parent 791b6ec14d
commit 8d35a41e9c
2 changed files with 88 additions and 39 deletions

View file

@ -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

View file

@ -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