lunotrades.rentdoorformspec = { renter = function(pos) local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z local formspec = "size[8,10]".. "label[2.5,0;PORTAL DE ALUGUEL]".. --"label[0,0.5;O Locatador Oferece:]".. --"list[current_player;customer_gives;0,1;3,2;]".. --"label[0,3;O Cliente Recebe:]".. --"list[current_player;customer_gets;0,3.5;3,2;]".. "button[3,1.5;2,1;exchange;ACEITAR]".. "label[5,0.5;O Locatario Precisa:]".. "list["..list_name..";owner_wants;5,1;3,2;]".. --"label[5,3;A Maquina Oferece:]".. --"list["..list_name..";owner_gives;5,3.5;3,2;]".. "label[0,5.5;Inventario atual do cliente:]".. "list[current_player;main;0,6.0;8,4;]" return formspec end, owner = function(pos) local list_name = "nodemeta:"..pos.x..','..pos.y..','..pos.z local formspec = "size[8,10]".. "label[0,0;Voce Recebe (Seu Lucro):]".. "list["..list_name..";customers_gave;0,0.5;3,2;]".. --"label[0,2.5;Estoque a Oferetar:]".. --"list["..list_name..";stock;0,3;3,2;]".. "label[5,0;Voce aluga por:]".. "list["..list_name..";owner_wants;5,0.5;3,2;]".. --"label[5,2.5;Voce Oferece:]".. --"list["..list_name..";owner_gives;5,3;3,2;]".. --"label[2,5;(CTRL + Mouse = Interface do Cliente)]".. "label[0,5.5;Inventario atual do locatario:]".. "list[current_player;main;0,6;8,4;]" return formspec end, } function lunotrades.doCTRLRightClick(pos, node, clicker) if ( minetest.get_modpath("landrush") and type(landrush.get_owner)=="function" and landrush.get_owner(pos)~=nil and landrush.get_owner(pos)~="" ) then clicker:get_inventory():set_size("customer_gives", 3*2) clicker:get_inventory():set_size("customer_gets", 3*2) lunotrades.balcaodeloja.loja_atual[clicker:get_player_name()] = pos local meta = minetest.get_meta(pos) local inv = meta:get_inventory() if inv:is_empty("customers_gave") then inv:set_size("customers_gave", 3*2) end --inv:set_size("stock", 3*2) if inv:is_empty("owner_wants") then inv:set_size("owner_wants", 3*2) end --inv:set_size("owner_gives", 3*2) if landrush.get_owner(pos)~=clicker:get_player_name() then --minetest.chat_send_player(clicker:get_player_name(), "aaaaa Vc nao ser o proprietario!") minetest.show_formspec(clicker:get_player_name(),"lunotrades.rentdoor_formspec",lunotrades.rentdoorformspec.renter(pos)) else --minetest.chat_send_player(clicker:get_player_name(), "bbbbb Vc SER o proprietario!") minetest.show_formspec(clicker:get_player_name(),"lunotrades.rentdoor_formspec",lunotrades.rentdoorformspec.owner(pos)) end end end function lunotrades.ifOpenDoor(pos, clicker) if ( not minetest.get_modpath("landrush") or type(landrush.get_owner)~="function" or landrush.get_owner(pos)==nil or landrush.get_owner(pos)=="" or landrush.get_owner(pos)==clicker:get_player_name() ) then return true else local playername = clicker:get_player_name() local meta = minetest.get_meta(pos) local renter = meta:get_string("renter") --Jogador locatario local expiration = meta:get_string("expiration") --Jogador locatario local now = os.time() --minetest.chat_send_player(clicker:get_player_name(), "Proprietario '"..dump(landrush.get_owner(pos)).."'!") if expiration==nil or expiration=="" or now <= expiration then if renter == playername then return true else minetest.chat_send_player(clicker:get_player_name(), "Voce nao pode abrir esta porta alugada por '"..renter.."'!") minetest.sound_play("sfx_falha", {object = clicker, gain = 2.0, max_hear_distance = 10}) end else minetest.chat_send_player( clicker:get_player_name(), "Seu tempo de aluguel desta porta acabou. Favor segure CTRL e clique sobre a porta para pagar nova temporada de aluguel para '"..dump(landrush.get_owner(pos)).."'!" ) minetest.sound_play("sfx_falha", {object = clicker, gain = 2.0, max_hear_distance = 10}) end return false --[[ meta:set_string("infotext", "Owned by "..playername) meta = minetest.get_meta(pt2) meta:set_string("doors_owner", playername) meta:set_string("infotext", "Owned by "..playername) minetest.chat_send_player(clicker:get_player_name(), "Essa comeia nao pertece a voce!") minetest.sound_play("sfx_falha", {object = clicker, gain = 2.0, max_hear_distance = 10}) ]]-- end end function lunotrades.doOpenDoor(pos, dir, replace, replace_dir, params) local p2 = minetest.get_node(pos).param2 p2 = params[p2+1] local meta = minetest.get_meta(pos):to_table() minetest.set_node(pos, {name=replace_dir, param2=p2}) minetest.get_meta(pos):from_table(meta) pos.y = pos.y-dir meta = minetest.get_meta(pos):to_table() minetest.set_node(pos, {name=replace, param2=p2}) minetest.get_meta(pos):from_table(meta) end function lunotrades.on_rightclick(pos, dir, check_name, replace, replace_dir, params) pos.y = pos.y+dir if not minetest.get_node(pos).name == check_name then return end lunotrades.doOpenDoor(pos, dir, replace, replace_dir, params) end doors.register_door("lunotrades:rent_door", { description = "Porta de Aluguel (Aux+RightClick para Alugar)", inventory_image = "rent_door_inv.png", --groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2,door=1}, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,door=1}, tiles_bottom = {"rent_door_b.png", "rent_door_side.png"}, tiles_top = {"rent_door_a.png", "rent_door_side.png"}, sounds = default.node_sound_wood_defaults(), sound_open_door = "sfx_door_open", sound_close_door = "sfx_door_close", sunlight = false, }) local instancias = {"lunotrades:rent_door_b_1", "lunotrades:rent_door_t_1", "lunotrades:rent_door_b_2", "lunotrades:rent_door_t_2"} for _,ItemID in ipairs(instancias) do print("rent_door.ItemID="..ItemID) if minetest.registered_items[ItemID] ~= nil then local props = minetest.registered_items[ItemID] --[[ props.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local playername = player:get_player_name() local meta = minetest.get_meta(pos) if player:get_player_name() ~= meta:get_string("owner") then return 0 end return count end, props.allow_metadata_inventory_put = function(pos, listname, index, stack, player) local playername = player:get_player_name() local meta = minetest.get_meta(pos) if player:get_player_name() ~= meta:get_string("owner") then return 0 end return stack:get_count() end, props.allow_metadata_inventory_take = function(pos, listname, index, stack, player) local playername = player:get_player_name() local meta = minetest.get_meta(pos) if player:get_player_name() ~= meta:get_string("owner") then return 0 end return stack:get_count() end, ]]-- minetest.register_node(":"..ItemID, props) end end minetest.register_craft({ output = 'lunotrades:rent_door', recipe = { {'default:steel_ingot','default:steel_ingot',''}, {'default:steel_ingot','lunotrades:moneybag"',''}, {'default:steel_ingot','default:steel_ingot',''} } }) minetest.registered_nodes['lunotrades:rent_door_b_1'].on_rightclick = function(pos, node, clicker) if not clicker:get_player_control().aux1 then if lunotrades.ifOpenDoor(pos, clicker) then lunotrades.on_rightclick(pos, 1, "lunotrades:rent_door_t_1", "lunotrades:rent_door_b_2", "lunotrades:rent_door_t_2", {1,2,3,0}) end else lunotrades.doCTRLRightClick(pos, node, clicker) end end minetest.registered_nodes['lunotrades:rent_door_t_1'].on_rightclick = function(pos, node, clicker) if not clicker:get_player_control().aux1 then if lunotrades.ifOpenDoor(pos, clicker) then lunotrades.on_rightclick(pos, -1, "lunotrades:rent_door_b_1", "lunotrades:rent_door_t_2", "lunotrades:rent_door_b_2", {1,2,3,0}) end else lunotrades.doCTRLRightClick(pos, node, clicker) end end -- Fix for duplicating Bug! -- Bug was caused, because the reverse order of the on_rightclick was not taken into account minetest.registered_nodes['lunotrades:rent_door_b_2'].on_rightclick = function(pos, node, clicker) if not minetest.get_modpath("landrush") or landrush.can_interact(pos,clicker:get_player_name()) then lunotrades.on_rightclick(pos, 1, "lunotrades:rent_door_t_2", "lunotrades:rent_door_b_1", "lunotrades:rent_door_t_1", {3,0,1,2}) end end minetest.registered_nodes['lunotrades:rent_door_t_2'].on_rightclick = function(pos, node, clicker) if not minetest.get_modpath("landrush") or landrush.can_interact(pos,clicker:get_player_name()) then lunotrades.on_rightclick(pos, -1, "lunotrades:rent_door_b_2", "lunotrades:rent_door_t_1", "lunotrades:rent_door_b_1", {3,0,1,2}) end end