From d208628a2d26fd9906f1c9af6e0966487469c98b Mon Sep 17 00:00:00 2001 From: y Date: Mon, 1 Jul 2019 03:17:17 +0100 Subject: [PATCH] Allow configuration of income --- income.lua | 64 +++++++++++++++++++++++------------------------- mod.conf | 2 ++ settingtypes.txt | 11 +++++++++ 3 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 settingtypes.txt diff --git a/income.lua b/income.lua index 2c9fb47..a1052e2 100644 --- a/income.lua +++ b/income.lua @@ -1,44 +1,42 @@ -players_income = {} +local players_income = {} -- internationalization boilerplate local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local timer = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime; - if timer >= 720 then --720 for one day - timer = 0 - for _,player in ipairs(minetest.get_connected_players()) do +local income_enabled = minetest.settings:get_bool("currency.income_enabled", true) +local income_item = minetest.settings:get("currency.income_item") or "currency:minegeld_10" +local income_count = tonumber(minetest.settings:get("currency.income_count")) or 1 +local income_period = tonumber(minetest.settings:get("currency.income_period")) or 720 + +if income_enabled then + local timer = 0 + minetest.register_globalstep(function(dtime) + timer = timer + dtime; + if timer >= income_period then + timer = 0 + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() - if players_income[name] == nil then - players_income[name] = 0 - end - players_income[name] = 1 + players_income[name] = income_count minetest.log("info", "[Currency] "..S("basic income for @1", name)) + end + end + end) + + local function earn_income(player) + if not player or player.is_fake_player then return end + local name = player:get_player_name() + + local income_count = players_income[name] + if income_count and income_count > 0 then + local inv = player:get_inventory() + inv:add_item("main", {name=income_item, count=income_count}) + players_income[name] = nil + minetest.log("info", "[Currency] "..S("added basic income for @1 to inventory", name)) end end -end) -earn_income = function(player) - if not player or player.is_fake_player then return end - local name = player:get_player_name() - if players_income[name] == nil then - players_income[name] = 0 - end - if players_income[name] > 0 then - count = players_income[name] - local inv = player:get_inventory() - inv:add_item("main", {name="currency:minegeld_10", count=count}) - players_income[name] = 0 - minetest.log("info", "[Currency] "..S("added basic income for @1 to inventory", name)) - end + minetest.register_on_dignode(function(pos, oldnode, digger) earn_income(digger) end) + minetest.register_on_placenode(function(pos, node, placer) earn_income(placer) end) + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) earn_income(player) end) end - -minetest.register_on_dignode(function(pos, oldnode, digger) - earn_income(digger) -end) - -minetest.register_on_placenode(function(pos, node, placer) - earn_income(placer) -end) diff --git a/mod.conf b/mod.conf index 6679a26..d2ba601 100644 --- a/mod.conf +++ b/mod.conf @@ -1 +1,3 @@ name = currency +depends = default +optional_depends = intllib,loot,pipeworks diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..12e89aa --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,11 @@ +# Is income enabled? +currency.income_enabled (Is currency income enabled?) bool true + +# Item that is given as income by the currency mod +currency.income_item (Currency income item) string currency:minegeld_10 + +# Number of items given as income +currency.income_count (Currency income item) int 1 1 65535 + +# Length of time (in seconds) between checking if a user should get income +currency.income_period (Currency income period) int 720