minertrade/api_payday.lua
Lunovox Heavenfinder 325c1ac117 Enxugando código!
2023-04-18 14:11:04 +00:00

83 lines
3.7 KiB
Lua

minetest.register_privilege("salary", {
description=modMinerTrade.translate("Only players with this privilege will receive a daily payment."),
--give_to_singleplayer=false,
})
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")
if modMinerTrade.salary.value == nil
or type(tonumber(modMinerTrade.salary.value)) ~= "number"
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,
}
minetest.after(3.5, function()
if modMinerTrade.salary.isEnabled() then
modMinerTrade.salary.timer = 0
minetest.register_globalstep(function(dtime)
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
end
end)
end
end)