From d7e0a5810817763a3b27e0baf6dc9bbaaf85d4be Mon Sep 17 00:00:00 2001 From: cale Date: Wed, 24 Aug 2016 12:15:02 +0200 Subject: [PATCH] added shop (WIP) --- mods/furnace/init.lua | 3 + mods/money/depends.txt | 1 + mods/money/init.lua | 78 +++++++++++++++++++++++++ mods/money/textures/money_shop.png | Bin 0 -> 254 bytes mods/money/textures/money_shop_top.png | Bin 0 -> 211 bytes mods/potions/init.lua | 2 +- 6 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 mods/money/depends.txt create mode 100644 mods/money/textures/money_shop.png create mode 100644 mods/money/textures/money_shop_top.png diff --git a/mods/furnace/init.lua b/mods/furnace/init.lua index dac97fd..a149b0e 100644 --- a/mods/furnace/init.lua +++ b/mods/furnace/init.lua @@ -70,6 +70,9 @@ minetest.register_abm({ elseif myinv:contains_item("main", {name = "default:stone_with_copper"}) then minetest.get_meta(patternpos):get_inventory():add_item("main", {name = "furnace:copper_plate"}) myinv:remove_item("main", {name = "default:stone_with_copper"}) + elseif myinv:contains_item("main", {name = "default:sand"}) then + minetest.get_meta(patternpos):get_inventory():add_item("main", {name = "default:glass"}) + myinv:remove_item("main", {name = "default:sand"}) end end end diff --git a/mods/money/depends.txt b/mods/money/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/money/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/money/init.lua b/mods/money/init.lua index 27518ee..2547d36 100644 --- a/mods/money/init.lua +++ b/mods/money/init.lua @@ -8,3 +8,81 @@ minetest.register_craftitem("money:silver_coin", { inventory_image = "money_silver_coin.png", }) +money = {} +money.shop = {} +money.shop.form = "size[8,8;]"..default.gui_colors..default.gui_bg.."list[current_player;main;0,4;8,4;]button[0,3;1,1;btn_back;<]button[7,3;1,1;btn_next;>]button[3,1;2,1;btn_trade;Trade]item_image_button[2,1;1,1;input_item;input_item;]item_image_button[5,1;1,1;output_item;output_item;]" +money.shop.page = {} +money.shop.offers = { + {input="money:silver_coin", output="default:coal_lump"}, + {input="money:silver_coin 2", output="default:box"}, + {input="money:coin 1", output="default:pick"} +} + +function money.shop.get_formspec(page) + if not(money.shop.offers[page]) then + return money.shop.form + end + + local s = string.gsub(money.shop.form, "input_item", money.shop.offers[page].input) + s = string.gsub(s, "output_item", money.shop.offers[page].output) + + return s +end + +function money.shop.trade(player) + if not(money.shop.page[player:get_player_name()]) then + return + end + + local offer = money.shop.offers[money.shop.page[player:get_player_name()]] + + if not(offer) then + return + end + + if player:get_inventory():contains_item("main", offer.input) then + player:get_inventory():remove_item("main", offer.input) + player:get_inventory():add_item("main", offer.output) + end +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname == "money:shop" then + if fields.btn_next then + money.shop.page[player:get_player_name()] = money.shop.page[player:get_player_name()] + 1 + minetest.show_formspec(player:get_player_name(), "money:shop", money.shop.get_formspec(money.shop.page[player:get_player_name()])) + end + if fields.btn_back then + money.shop.page[player:get_player_name()] = money.shop.page[player:get_player_name()] - 1 + minetest.show_formspec(player:get_player_name(), "money:shop", money.shop.get_formspec(money.shop.page[player:get_player_name()])) + end + if fields.btn_trade then + money.shop.trade(player) + end + if fields.quit then + money.shop.page[player:get_player_name()] = nil + end + end +end) + +minetest.register_node("money:shop", { + description = "Shop", + tiles = {"money_shop_top.png","money_shop.png","money_shop.png"}, + groups = {choppy = 3}, + + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-6/16, -0.5, -6/16, 6/16,4/16, 6/16}, + }, + }, + + on_rightclick = function(pos, node, player, pointed_thing) + money.shop.page[player:get_player_name()] = 1 + minetest.show_formspec(player:get_player_name(), "money:shop", money.shop.get_formspec(1)) + end +}) + diff --git a/mods/money/textures/money_shop.png b/mods/money/textures/money_shop.png new file mode 100644 index 0000000000000000000000000000000000000000..c09b01bf60a3805207842829d69d87bebb918525 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pIsLxPJ#VEL9=nm{4R64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3!PZ!6Kh{JEM?dD`q;9OnEjw*?q6AAH0iUsAa#GcWA3!{I>=@ pB}Ntjhlb}2+kUcceKY6t66Q4my1!eR96&y0@O1TaS?83{1OS*mP<8+S literal 0 HcmV?d00001 diff --git a/mods/money/textures/money_shop_top.png b/mods/money/textures/money_shop_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffa3ec3ee2b812e4e5f42aff1dae9068c895722 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&pIsLxPKgEjU5H0w^R|;u=xnoS&PUnpeW$T$GwvlA5AW zo>`Ki;O^-g5Z=fq4pe0A>Eaj?aro_pje