diff options
Diffstat (limited to 'economy.lua')
-rw-r--r-- | economy.lua | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/economy.lua b/economy.lua new file mode 100644 index 0000000..28c9171 --- /dev/null +++ b/economy.lua @@ -0,0 +1,62 @@ +local http, env, storage +local C = minetest.get_color_escape_sequence + +function furrybot.get_money(name) + local key = name .. ".money" + if storage:contains(key) then + return storage:get_int(key) + else + return 100 + end +end + +function furrybot.set_money(name, money) + storage:set_int(name .. ".money", money) +end + +function furrybot.add_money(name, add) + local money = furrybot.get_money(name) + furrybot.set_money(name, money + add) +end + +function furrybot.take_money(name, remove) + local money = furrybot.get_money(name) + local new = money - remove + if new < 0 then + return false + else + furrybot.set_money(name, new) + return true + end +end + +function furrybot.money(money, color) + return furrybot.colors.money .. "$" .. money .. color +end + +function furrybot.commands.money(name, target) + target = target or name + furrybot.ping_message(name, (target == name and "You have " or target .. " has ") .. furrybot.money(furrybot.get_money(target), furrybot.colors.system) .. ".", furrybot.colors.system) +end +furrybot.commands.balance = furrybot.commands.money + +function furrybot.commands.pay(name, target, number) + if furrybot.online_or_error(name, target) then + local money = tonumber(number or "") + if not money or money <= 0 or math.floor(money) ~= money then + furrybot.error_message(name, "Invalid amount of money") + else + if furrybot.take_money(name, money) then + furrybot.add_money(target, money) + furrybot.ping_message(target, name .. " has payed you " .. furrybot.money(money, furrybot.colors.system) .. ".", furrybot.colors.system) + else + furrybot.error_message(name, "You don't have enough money") + end + end + end +end +furrybot.unsafe_commands.pay = true + +return function(_http, _env, _storage) + http, env, storage = _http, _env, _storage +end |