From 5e5580db1e018c05becb95591e8db704e6d9ac22 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 4 Jul 2014 05:28:19 -0400 Subject: initial commit --- Money_Info.txt | 33 ++++++++ README.md | 4 + barter.lua | 165 ++++++++++++++++++++++++++++++++++++ crafting.lua | 71 ++++++++++++++++ craftitems.lua | 26 ++++++ depends.txt | 1 + income.lua | 40 +++++++++ init.lua | 13 +++ safe.lua | 103 +++++++++++++++++++++++ shop.lua | 196 +++++++++++++++++++++++++++++++++++++++++++ textures/barter_base.png | Bin 0 -> 734 bytes textures/barter_side.png | Bin 0 -> 1400 bytes textures/barter_top.png | Bin 0 -> 896 bytes textures/minegeld.png | Bin 0 -> 3563 bytes textures/minegeld_10.png | Bin 0 -> 3509 bytes textures/minegeld_5.png | Bin 0 -> 3365 bytes textures/minegeld_bundle.png | Bin 0 -> 5092 bytes textures/safe_front.png | Bin 0 -> 309 bytes textures/safe_side.png | Bin 0 -> 150 bytes textures/shop_front.png | Bin 0 -> 822 bytes textures/shop_side.png | Bin 0 -> 755 bytes textures/shop_top.png | Bin 0 -> 734 bytes 22 files changed, 652 insertions(+) create mode 100644 Money_Info.txt create mode 100644 README.md create mode 100644 barter.lua create mode 100644 crafting.lua create mode 100644 craftitems.lua create mode 100644 depends.txt create mode 100644 income.lua create mode 100644 init.lua create mode 100644 safe.lua create mode 100644 shop.lua create mode 100644 textures/barter_base.png create mode 100644 textures/barter_side.png create mode 100644 textures/barter_top.png create mode 100644 textures/minegeld.png create mode 100644 textures/minegeld_10.png create mode 100644 textures/minegeld_5.png create mode 100644 textures/minegeld_bundle.png create mode 100644 textures/safe_front.png create mode 100644 textures/safe_side.png create mode 100644 textures/shop_front.png create mode 100644 textures/shop_side.png create mode 100644 textures/shop_top.png diff --git a/Money_Info.txt b/Money_Info.txt new file mode 100644 index 0000000..722d2b9 --- /dev/null +++ b/Money_Info.txt @@ -0,0 +1,33 @@ +Mine-Geld +--------- + +They have no recipe. +A good starting amount is about 250Mg on a server + +You currently get a basic income of 1 Minegeld per day, +so long as you dig at least one node in that day +and have an empty inventory slot for the money to go in. + +Lump Conversion + +Coal Lump ~1Mg +Iron Lump ~4Mg +Copper Lump ~4Mg +Gold Lump ~5Mg +Mese Crystal ~40Mg +Diamond ~50Mg + +Ingot Conversion + +Steel Ingot ~5Mg +Copper Ingot ~5Mg +Gold Ingot ~6Mg + +Block Conversion + +Coal Block ~9Mg +Steel Block ~45Mg +Copper Block ~45Mg +Gold Block ~54Mg +Mese Block ~360Mg +Diamond Block ~450Mg diff --git a/README.md b/README.md new file mode 100644 index 0000000..f4471a7 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +currency +======== + +Repo for Currency Mod diff --git a/barter.lua b/barter.lua new file mode 100644 index 0000000..81b571e --- /dev/null +++ b/barter.lua @@ -0,0 +1,165 @@ +barter = {} + +barter.chest = {} +barter.chest.formspec = { + main = "size[8,9]".. + "list[current_name;pl1;0,0;3,4;]".. + "list[current_name;pl2;5,0;3,4;]".. + "list[current_player;main;0,5;8,4;]", + pl1 = { + start = "button[3,1;1,1;pl1_start;Start]", + player = function(name) return "label[3,0;"..name.."]" end, + accept1 = "button[3,1;1,1;pl1_accept1;Confirm]".. + "button[3,2;1,1;pl1_cancel;Cancel]", + accept2 = "button[3,1;1,1;pl1_accept2;Exchange]".. + "button[3,2;1,1;pl1_cancel;Cancel]", + }, + pl2 = { + start = "button[4,1;1,1;pl2_start;Start]", + player = function(name) return "label[4,0;"..name.."]" end, + accept1 = "button[4,1;1,1;pl2_accept1;Confirm]".. + "button[4,2;1,1;pl2_cancel;Cancel]", + accept2 = "button[4,1;1,1;pl2_accept2;Exchange]".. + "button[4,2;1,1;pl2_cancel;Cancel]", + }, +} + +barter.chest.check_privilege = function(listname,playername,meta) + if listname == "pl1" then + if playername ~= meta:get_string("pl1") then + return false + elseif meta:get_int("pl1step") ~= 1 then + return false + end + end + if listname == "pl2" then + if playername ~= meta:get_string("pl2") then + return false + elseif meta:get_int("pl2step") ~= 1 then + return false + end + end + return true +end + +barter.chest.update_formspec = function(meta) + formspec = barter.chest.formspec.main + pl_formspec = function (n) + if meta:get_int(n.."step")==0 then + formspec = formspec .. barter.chest.formspec[n].start + else + formspec = formspec .. barter.chest.formspec[n].player(meta:get_string(n)) + if meta:get_int(n.."step") == 1 then + formspec = formspec .. barter.chest.formspec[n].accept1 + elseif meta:get_int(n.."step") == 2 then + formspec = formspec .. barter.chest.formspec[n].accept2 + end + end + end + pl_formspec("pl1") pl_formspec("pl2") + meta:set_string("formspec",formspec) +end + +barter.chest.give_inventory = function(inv,list,playername) + player = minetest.env:get_player_by_name(playername) + if player then + for k,v in ipairs(inv:get_list(list)) do + player:get_inventory():add_item("main",v) + inv:remove_item(list,v) + end + end +end + +barter.chest.cancel = function(meta) + barter.chest.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl1")) + barter.chest.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl2")) + meta:set_string("pl1","") + meta:set_string("pl2","") + meta:set_int("pl1step",0) + meta:set_int("pl2step",0) +end + +barter.chest.exchange = function(meta) + barter.chest.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl2")) + barter.chest.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl1")) + meta:set_string("pl1","") + meta:set_string("pl2","") + meta:set_int("pl1step",0) + meta:set_int("pl2step",0) +end + +minetest.register_node("currency:barter", { + drawtype = "nodebox", + description = "Barter Table", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"barter_top.png", + "barter_base.png", + "barter_side.png"}, + inventory_image = "barter_top.png", + node_box = { + type = "fixed", + fixed = { + {-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000}, + {-0.437500,-0.500000,-0.437500,-0.250000,0.500000,-0.250000}, + {-0.437500,-0.500000,0.250000,-0.250000,0.500000,0.437500}, + {0.250000,-0.500000,-0.437500,0.437500,0.500000,-0.250000}, + {0.250000,-0.500000,0.250000,0.437500,0.500000,0.447500}, + }, + }, + groups = {choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "Barter Table") + meta:set_string("pl1","") + meta:set_string("pl2","") + barter.chest.update_formspec(meta) + local inv = meta:get_inventory() + inv:set_size("pl1", 3*4) + inv:set_size("pl2", 3*4) + end, + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.env:get_meta(pos) + pl_receive_fields = function(n) + if fields[n.."_start"] and meta:get_string(n) == "" then + meta:set_string(n,sender:get_player_name()) + end + if meta:get_string(n) == "" then + meta:set_int(n.."step",0) + elseif meta:get_int(n.."step")==0 then + meta:set_int(n.."step",1) + end + if sender:get_player_name() == meta:get_string(n) then + if meta:get_int(n.."step")==1 and fields[n.."_accept1"] then + meta:set_int(n.."step",2) + end + if meta:get_int(n.."step")==2 and fields[n.."_accept2"] then + meta:set_int(n.."step",3) + if n == "pl1" and meta:get_int("pl2step") == 3 then barter.chest.exchange(meta) end + if n == "pl2" and meta:get_int("pl1step") == 3 then barter.chest.exchange(meta) end + end + if fields[n.."_cancel"] then barter.chest.cancel(meta) end + end + end + pl_receive_fields("pl1") pl_receive_fields("pl2") + -- End + barter.chest.update_formspec(meta) + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.env:get_meta(pos) + if not barter.chest.check_privilege(from_list,player:get_player_name(),meta) then return 0 end + if not barter.chest.check_privilege(to_list,player:get_player_name(),meta) then return 0 end + return count + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if not barter.chest.check_privilege(listname,player:get_player_name(),meta) then return 0 end + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if not barter.chest.check_privilege(listname,player:get_player_name(),meta) then return 0 end + return stack:get_count() + end, +}) diff --git a/crafting.lua b/crafting.lua new file mode 100644 index 0000000..33a9553 --- /dev/null +++ b/crafting.lua @@ -0,0 +1,71 @@ +minetest.register_craft({ + output = 'currency:safe', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'currency:shop', + recipe = { + {'default:sign_wall'}, + {'default:chest_locked'}, + } +}) + +minetest.register_craft({ + output = 'currency:barter', + recipe = { + {'default:sign_wall'}, + {'default:chest'}, + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "currency:minegeld_5", + recipe = {"currency:minegeld", "currency:minegeld", "currency:minegeld", "currency:minegeld", "currency:minegeld"}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "currency:minegeld_10", + recipe = {"currency:minegeld_5", "currency:minegeld_5"}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "currency:minegeld_5 2", + recipe = {"currency:minegeld_10"}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "currency:minegeld 5", + recipe = {"currency:minegeld_5"}, +}) + +minetest.register_craft({ + type = "shapeless", + output = "currency:minegeld_bundle", + recipe = { + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld", + "group:minegeld" + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "currency:minegeld_bundle", + burntime = 1, +}) + diff --git a/craftitems.lua b/craftitems.lua new file mode 100644 index 0000000..47ad953 --- /dev/null +++ b/craftitems.lua @@ -0,0 +1,26 @@ +minetest.register_craftitem("currency:minegeld", { + description = "1 MineGeld Note", + inventory_image = "minegeld.png", + stack_max = 30000, + groups = {minegeld = 1} +}) + +minetest.register_craftitem("currency:minegeld_5", { + description = "5 MineGeld Note", + inventory_image = "minegeld_5.png", + stack_max = 30000, + groups = {minegeld = 1} +}) + +minetest.register_craftitem("currency:minegeld_10", { + description = "10 MineGeld Note", + inventory_image = "minegeld_10.png", + stack_max = 30000, + groups = {minegeld = 1} +}) + +minetest.register_craftitem("currency:minegeld_bundle", { + description = "Bundle of random Minegeld notes", + inventory_image = "minegeld_bundle.png", + stack_max = 30000, +}) diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..331d858 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/income.lua b/income.lua new file mode 100644 index 0000000..5aa6fbc --- /dev/null +++ b/income.lua @@ -0,0 +1,40 @@ +players_income = {} + +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 name = player:get_player_name() + if players_income[name] == nil then + players_income[name] = 0 + end + players_income[name] = 1 + print("[Currency] basic income for "..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_5", count=count}) + players_income[name] = 0 + print("[Currency] added basic income for "..name.." to inventory") + 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/init.lua b/init.lua new file mode 100644 index 0000000..c7caffe --- /dev/null +++ b/init.lua @@ -0,0 +1,13 @@ +print(" Currency mod loading... ") +dofile(minetest.get_modpath("currency").."/craftitems.lua") +print("[Currency] Craft_items Loaded!") +dofile(minetest.get_modpath("currency").."/shop.lua") +print("[Currency] Shop Loaded!") +dofile(minetest.get_modpath("currency").."/barter.lua") +print("[Currency] Barter Loaded!") +dofile(minetest.get_modpath("currency").."/safe.lua") +print("[Currency] Safe Loaded!") +dofile(minetest.get_modpath("currency").."/crafting.lua") +print("[Currency] Crafting Loaded!") +dofile(minetest.get_modpath("currency").."/income.lua") +print("[Currency] Income Loaded!") diff --git a/safe.lua b/safe.lua new file mode 100644 index 0000000..197bd5e --- /dev/null +++ b/safe.lua @@ -0,0 +1,103 @@ +function default.get_safe_formspec(pos) + local spos = pos.x .. "," .. pos.y .. "," ..pos.z + local formspec = + "size[8,9]".. + "list[nodemeta:".. spos .. ";main;1,1;6,2;]".. + "list[current_player;main;0,5;8,4;]" + return formspec +end + +local function has_safe_privilege(meta, player) + if player:get_player_name() ~= meta:get_string("owner") then + return false + end + return true +end + +minetest.register_node("currency:safe", { + description = "Safe", + inventory_image = "safe_front.png", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"safe_side.png", + "safe_side.png", + "safe_side.png", + "safe_side.png", + "safe_side.png", + "safe_front.png",}, + is_ground_content = false, + groups = {cracky=1}, + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", "Safe (owned by ".. + meta:get_string("owner")..")") + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", "Safe") + meta:set_string("owner", "") + local inv = meta:get_inventory() + inv:set_size("main", 6*2) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") and has_safe_privilege(meta, player) + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + if not has_safe_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a safe belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return count + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if not has_safe_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a safe belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if not has_safe_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a safe belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return stack:get_count() + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in safe at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to safe at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from safe at "..minetest.pos_to_string(pos)) + end, + on_rightclick = function(pos, node, clicker) + local meta = minetest.get_meta(pos) + if has_safe_privilege(meta, clicker) then + minetest.show_formspec( + clicker:get_player_name(), + "currency:safe", + default.get_safe_formspec(pos) + ) + end + end, +}) diff --git a/shop.lua b/shop.lua new file mode 100644 index 0000000..da5ee5e --- /dev/null +++ b/shop.lua @@ -0,0 +1,196 @@ +default.shop = {} +default.shop.current_shop = {} +default.shop.formspec = { + customer = function(pos) + local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z + local formspec = "size[8,9.5]".. + "label[0,0;Customer gives (pay here !)]".. + "list[current_player;customer_gives;0,0.5;3,2;]".. + "label[0,2.5;Customer gets]".. + "list[current_player;customer_gets;0,3;3,2;]".. + "label[5,0;Owner wants]".. + "list["..list_name..";owner_wants;5,0.5;3,2;]".. + "label[5,2.5;Owner gives]".. + "list["..list_name..";owner_gives;5,3;3,2;]".. + "list[current_player;main;0,5.5;8,4;]".. + "button[3,2;2,1;exchange;Exchange]" + return formspec + end, + owner = function(pos) + local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z + local formspec = "size[8,9.5]".. + "label[0,0;Customers gave:]".. + "list["..list_name..";customers_gave;0,0.5;3,2;]".. + "label[0,2.5;Your stock:]".. + "list["..list_name..";stock;0,3;3,2;]".. + "label[5,0;You want:]".. + "list["..list_name..";owner_wants;5,0.5;3,2;]".. + "label[5,2.5;In exchange, you give:]".. + "list["..list_name..";owner_gives;5,3;3,2;]".. + "label[0,5;Owner, Use(E)+Place(RMB) for customer interface]".. + "list[current_player;main;0,5.5;8,4;]" + return formspec + end, +} + +default.shop.check_privilege = function(listname,playername,meta) + --[[if listname == "pl1" then + if playername ~= meta:get_string("pl1") then + return false + elseif meta:get_int("pl1step") ~= 1 then + return false + end + end + if listname == "pl2" then + if playername ~= meta:get_string("pl2") then + return false + elseif meta:get_int("pl2step") ~= 1 then + return false + end + end]] + return true +end + + +default.shop.give_inventory = function(inv,list,playername) + player = minetest.env:get_player_by_name(playername) + if player then + for k,v in ipairs(inv:get_list(list)) do + player:get_inventory():add_item("main",v) + inv:remove_item(list,v) + end + end +end + +default.shop.cancel = function(meta) + --[[default.shop.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl1")) + default.shop.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl2")) + meta:set_string("pl1","") + meta:set_string("pl2","") + meta:set_int("pl1step",0) + meta:set_int("pl2step",0)]] +end + +default.shop.exchange = function(meta) + --[[default.shop.give_inventory(meta:get_inventory(),"pl1",meta:get_string("pl2")) + default.shop.give_inventory(meta:get_inventory(),"pl2",meta:get_string("pl1")) + meta:set_string("pl1","") + meta:set_string("pl2","") + meta:set_int("pl1step",0) + meta:set_int("pl2step",0)]] +end + +minetest.register_node("currency:shop", { + description = "Shop", + paramtype2 = "facedir", + tiles = {"shop_top.png", + "shop_top.png", + "shop_side.png", + "shop_side.png", + "shop_side.png", + "shop_front.png"}, + inventory_image = "shop_front.png", + groups = {choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + after_place_node = function(pos, placer, itemstack) + local owner = placer:get_player_name() + local meta = minetest.env:get_meta(pos) + meta:set_string("infotext", "Exchange shop (owned by "..owner..")") + meta:set_string("owner",owner) + --[[meta:set_string("pl1","") + meta:set_string("pl2","")]] + local inv = meta:get_inventory() + inv:set_size("customers_gave", 3*2) + inv:set_size("stock", 3*2) + inv:set_size("owner_wants", 3*2) + inv:set_size("owner_gives", 3*2) + end, + on_rightclick = function(pos, node, clicker, itemstack) + clicker:get_inventory():set_size("customer_gives", 3*2) + clicker:get_inventory():set_size("customer_gets", 3*2) + default.shop.current_shop[clicker:get_player_name()] = pos + local meta = minetest.env:get_meta(pos) + if clicker:get_player_name() == meta:get_string("owner") and not clicker:get_player_control().aux1 then + minetest.show_formspec(clicker:get_player_name(),"currency:shop_formspec",default.shop.formspec.owner(pos)) + else + minetest.show_formspec(clicker:get_player_name(),"currency:shop_formspec",default.shop.formspec.customer(pos)) + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.env:get_meta(pos) + if player:get_player_name() ~= meta:get_string("owner") then return 0 end + return count + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if player:get_player_name() ~= meta:get_string("owner") then return 0 end + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if player:get_player_name() ~= meta:get_string("owner") then return 0 end + return stack:get_count() + end, + can_dig = function(pos, player) + local meta = minetest.env:get_meta(pos) + local inv = meta:get_inventory() + return inv:is_empty("stock") and inv:is_empty("customers_gave") and inv:is_empty("owner_wants") and inv:is_empty("owner_gives") + end +}) + +minetest.register_on_player_receive_fields(function(sender, formname, fields) + print(dump(fields)) + if formname == "currency:shop_formspec" and fields.exchange ~= nil and fields.exchange ~= "" then + local name = sender:get_player_name() + local pos = default.shop.current_shop[name] + local meta = minetest.env:get_meta(pos) + if meta:get_string("owner") == name then + minetest.chat_send_player(name,"This is your own shop, you can't exchange to yourself !") + else + local minv = meta:get_inventory() + local pinv = sender:get_inventory() + local invlist_tostring = function(invlist) + local out = {} + for i, item in pairs(invlist) do + out[i] = item:to_string() + end + return out + end + local wants = minv:get_list("owner_wants") + local gives = minv:get_list("owner_gives") + if wants == nil or gives == nil then return end -- do not crash the server + -- Check if we can exchange + local can_exchange = true + local owners_fault = false + for i, item in pairs(wants) do + if not pinv:contains_item("customer_gives",item) then + can_exchange = false + end + end + for i, item in pairs(gives) do + if not minv:contains_item("stock",item) then + can_exchange = false + owners_fault = true + end + end + if can_exchange then + for i, item in pairs(wants) do + pinv:remove_item("customer_gives",item) + minv:add_item("customers_gave",item) + end + for i, item in pairs(gives) do + minv:remove_item("stock",item) + pinv:add_item("customer_gets",item) + end + minetest.chat_send_player(name,"Exchanged!") + else + if owners_fault then + minetest.chat_send_player(name,"Exchange can not be done, contact the shop owner.") + else + minetest.chat_send_player(name,"Exchange can not be done, check if you put all items !") + end + end + end + end +end) + diff --git a/textures/barter_base.png b/textures/barter_base.png new file mode 100644 index 0000000..b4e2599 Binary files /dev/null and b/textures/barter_base.png differ diff --git a/textures/barter_side.png b/textures/barter_side.png new file mode 100644 index 0000000..57c1d7c Binary files /dev/null and b/textures/barter_side.png differ diff --git a/textures/barter_top.png b/textures/barter_top.png new file mode 100644 index 0000000..8ce9256 Binary files /dev/null and b/textures/barter_top.png differ diff --git a/textures/minegeld.png b/textures/minegeld.png new file mode 100644 index 0000000..79e36ff Binary files /dev/null and b/textures/minegeld.png differ diff --git a/textures/minegeld_10.png b/textures/minegeld_10.png new file mode 100644 index 0000000..acdb05e Binary files /dev/null and b/textures/minegeld_10.png differ diff --git a/textures/minegeld_5.png b/textures/minegeld_5.png new file mode 100644 index 0000000..5c66ac6 Binary files /dev/null and b/textures/minegeld_5.png differ diff --git a/textures/minegeld_bundle.png b/textures/minegeld_bundle.png new file mode 100644 index 0000000..c6b339d Binary files /dev/null and b/textures/minegeld_bundle.png differ diff --git a/textures/safe_front.png b/textures/safe_front.png new file mode 100644 index 0000000..0d4c007 Binary files /dev/null and b/textures/safe_front.png differ diff --git a/textures/safe_side.png b/textures/safe_side.png new file mode 100644 index 0000000..1ec4c1f Binary files /dev/null and b/textures/safe_side.png differ diff --git a/textures/shop_front.png b/textures/shop_front.png new file mode 100644 index 0000000..29d0065 Binary files /dev/null and b/textures/shop_front.png differ diff --git a/textures/shop_side.png b/textures/shop_side.png new file mode 100644 index 0000000..712364c Binary files /dev/null and b/textures/shop_side.png differ diff --git a/textures/shop_top.png b/textures/shop_top.png new file mode 100644 index 0000000..b4e2599 Binary files /dev/null and b/textures/shop_top.png differ -- cgit v1.2.3