From e3b5637e8ee2eb00ab42fd36f1b01e37ff3dbcd4 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 22 Jun 2013 22:58:52 -0500 Subject: added land sale --- landsale.lua | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 landsale.lua (limited to 'landsale.lua') diff --git a/landsale.lua b/landsale.lua new file mode 100644 index 0000000..540453b --- /dev/null +++ b/landsale.lua @@ -0,0 +1,103 @@ + +minetest.register_node("landrush:sale_block",{ + description="Landrush Sale Block", + tiles={"landrush_sale_block.png"}, + groups = {crumbly=2,snappy=2,oddly_breakable_by_hand=2}, + drop = "landrush:sale_block", + + after_place_node = function (pos, placer) + local name = placer:get_player_name() + local owner = landrush.get_owner(pos) + local meta = minetest.get_meta(pos) + if ( name == owner ) then + meta:set_int("price",0) + meta:set_string("infotext", "For sale by "..owner) + meta:set_string("note","") + meta:set_string("formspec", landrush.sell_formspec(pos, placer)) + else + meta:set_string("infotext","Not for sale") + minetest.chat_send_player(name,"You can't sell a claim you don't own") + end + end, + + on_punch = function (pos, node, puncher) + -- do the sale -- maybe a are you sure formspec? + local name = puncher:get_player_name() + local owner = landrush.get_owner(pos) + if ( name ~= owner ) then + local meta = minetest.get_meta(pos) + local price = meta:get_int("price") + if ( money.get(name) >= price ) then + local transfer = money.transfer(name,owner,price) + if ( transfer == nil ) then + chunk = landrush.get_chunk(pos) + claims[chunk] = {owner=name,shared={},claimtype='landclaim'} + landrush.save_claims() + minetest.chat_send_player(claims[chunk].owner, "You now own this claim.") + minetest.remove_node(pos) + else + minetest.chat_send_player(name,"Money transfer failed: "..transfer) + end + else + minetest.chat_send_player(name,"You do not have enough to purchase this claim") + end + end + end, +--[[ + on_rightclick = function (pos, node, player, itemstack) + name = player:get_player_name() + owner = landrush.get_owner(pos) + if ( name == owner ) then + minetest.show_formspec(name,"landrush_sell",landrush.sell_formspec(pos,player)) + end + end, +]] + on_receive_fields = function ( pos, formname, fields, sender ) + --process formspec + local name = sender:get_player_name() + local owner = landrush.get_owner(pos) + if ( name == owner ) then + local meta = minetest.get_meta(pos) + meta:set_int("price",fields.price) + meta:set_string("note",fields.note) + meta:set_string("infotext","For sale by "..owner.." for " .. tostring(fields.price) .." "..fields.note) + meta:set_string("formspec",landrush.sell_formspec(pos,sender)) + else + minetest.chat_send_player(name,"You can't configure this sale!") + end + end, + +}) + +minetest.register_craft({ + output = "landrush:sale_block", + recipe = { + {"default:wood","default:wood","default:wood"}, + {"default:wood","default:wood","default:wood"}, + {"","default:wood",""} + } +}) + +function landrush.sell_formspec(pos,player) + local meta = minetest.env:get_meta(pos) + local price = meta:get_int("price") + local note = meta:get_string("note") + + local formspec = "size[4,6;]" + .."label[0,0;Setup Sale]" + .."field[.25,2;2,1;price;Sale Price;"..price.."]" + .."field[.25,4;4,1;note;Notes;"..note.."]" + .."button_exit[.75,5;2,1;save;Save]" + + return formspec +end + +function landrush.process_formspec(player, formname, fields) + if ( formname == "landrush_buy" ) then + + end +end + + + +minetest.register_on_player_receive_fields( landrush.process_formspec ) \ No newline at end of file -- cgit v1.2.3