2022-05-12 23:32:22 -03:00
minetest.register_privilege ( " salary " , {
description = modMinerTrade.translate ( " Only players with this privilege will receive a daily payment. " ) ,
--give_to_singleplayer=false,
} )
2022-06-08 02:48:08 -03:00
modMinerTrade.salary = {
isEnabled = function ( )
if modMinerTrade.salary . enabled == nil then
modMinerTrade.salary . enabled = ( minetest.settings : get_bool ( " minertrade.salary.enabled " ) ~= false )
minetest.settings : set_bool ( " minertrade.salary.enabled " , modMinerTrade.salary . enabled )
end
return modMinerTrade.salary . enabled
end ,
--value = tonumber(minetest.settings:get("minertrade.salary.value") or 1),
getValue = function ( )
if modMinerTrade.salary . value == nil then
modMinerTrade.salary . value = minetest.settings : get ( " minertrade.salary.value " )
2024-03-19 13:57:03 -03:00
if type ( modMinerTrade.salary . value ) ~= " number "
2022-06-08 02:48:08 -03:00
or tonumber ( modMinerTrade.salary . value ) < 1
then
modMinerTrade.salary . value = 1
minetest.settings : set ( " minertrade.salary.value " , modMinerTrade.salary . value )
end
end
return tonumber ( modMinerTrade.salary . value )
end ,
--intervalcheck = tonumber(minetest.settings:get("minertrade.salary.intervalcheck") or 60),
getIntervalCheck = function ( )
if modMinerTrade.salary . intervalcheck == nil then
modMinerTrade.salary . intervalcheck = minetest.settings : get ( " minertrade.salary.intervalcheck " )
if modMinerTrade.salary . intervalcheck == nil
or type ( tonumber ( modMinerTrade.salary . intervalcheck ) ) ~= " number "
or tonumber ( modMinerTrade.salary . intervalcheck ) < 1
or tonumber ( modMinerTrade.salary . intervalcheck ) > ( 60 * 60 * 24 )
then
modMinerTrade.salary . intervalcheck = 60
minetest.settings : set ( " minertrade.salary.intervalcheck " , modMinerTrade.salary . intervalcheck )
end
end
return tonumber ( modMinerTrade.salary . intervalcheck )
end ,
2024-03-01 11:45:35 -03:00
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 ,
2022-06-08 02:48:08 -03:00
}
2022-05-12 23:32:22 -03:00
minetest.after ( 3.5 , function ( )
2022-06-01 12:55:32 -03:00
if modMinerTrade.salary . isEnabled ( ) then
2022-05-12 23:32:22 -03:00
modMinerTrade.salary . timer = 0
minetest.register_globalstep ( function ( dtime )
modMinerTrade.salary . timer = modMinerTrade.salary . timer + dtime
2022-06-01 12:55:32 -03:00
if modMinerTrade.salary . timer >= modMinerTrade.salary . getIntervalCheck ( ) then
2022-05-12 23:32:22 -03:00
modMinerTrade.salary . timer = 0
2024-03-01 11:45:35 -03:00
modMinerTrade.salary . doPay ( )
2022-05-12 23:32:22 -03:00
end
end )
end
end )