aboutsummaryrefslogtreecommitdiff
path: root/welfare.lua
diff options
context:
space:
mode:
Diffstat (limited to 'welfare.lua')
-rw-r--r--welfare.lua63
1 files changed, 63 insertions, 0 deletions
diff --git a/welfare.lua b/welfare.lua
new file mode 100644
index 0000000..964c2f6
--- /dev/null
+++ b/welfare.lua
@@ -0,0 +1,63 @@
+-- adapted from the income.lua file from the currency mod.
+local timer = 0
+
+function atm.welfare_payout()
+ payout = false
+ for _,player in ipairs(minetest.get_connected_players()) do
+ local name = player:get_player_name()
+ local limit = atm.welfare[name] or atm.welfare_cap
+ atm.ensure_init(name)
+ if limit > atm.welfare_amount then
+ atm.balance[name] = math.floor(atm.balance[name] + atm.welfare_amount)
+ atm.welfare[name] = limit - atm.welfare_amount
+ payout = true
+ end
+ end
+ if payout then
+ atm.saveaccounts()
+ end
+end
+
+minetest.register_globalstep(function(dtime)
+ timer = timer + dtime;
+ if timer >= 1000 then
+ timer = 0
+ atm.welfare_payout()
+ end
+end)
+
+
+minetest.register_chatcommand("give_welfare", {
+ description = "Put a player on welfare payments",
+ params = "<player> <amount>",
+ privs = { kick = true },
+ func = function (name, params)
+ local plname, amount = params:match("(%S+)%s+(%d+)")
+ if not plname then
+ return false, "Invalid parameters: "..params
+ end
+ if not atm.balance[plname] then
+ return false, plname.." does not have a bank account!"
+ end
+ atm.welfare[plname] = tonumber(amount) or atm.welfare_cap
+ minetest.log("action", "[ATM] Player "..plname.." put on welfare by "..name)
+ minetest.chat_send_player(name, "Player "..plname.." put on welfare successfully.")
+ return true
+ end,
+})
+
+minetest.register_chatcommand("view_finances", {
+ description = "view a player's finances",
+ params = "<player>",
+ privs = { kick = true },
+ func = function (name, plname)
+ if not atm.balance[plname] then
+ return false, plname.." does not have a bank account!"
+ end
+ minetest.chat_send_player(name, "Account balance: "..atm.balance[plname])
+ if atm.welfare[plname] then
+ minetest.chat_send_player(name, "Remaining welfare: "..atm.welfare[plname])
+ end
+ return true
+ end
+})