]> git.lizzy.rs Git - furrybot.git/blobdiff - economy.lua
Split code into multiple files
[furrybot.git] / economy.lua
diff --git a/economy.lua b/economy.lua
new file mode 100644 (file)
index 0000000..28c9171
--- /dev/null
@@ -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