mirror of
https://gitlab.com/lunovox/minertrade.git
synced 2025-03-14 21:21:22 +00:00
234 lines
8.4 KiB
Lua
234 lines
8.4 KiB
Lua
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
|