2017-03-13 18:26:38 -03:00
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
2022-05-15 14:28:26 -03:00
local meta = minetest.get_meta ( pos )
2017-03-13 18:26:38 -03:00
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 ( )
2022-05-15 14:28:26 -03:00
local meta = minetest.get_meta ( pos )
2017-03-13 18:26:38 -03:00
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 ( )
2022-05-15 14:28:26 -03:00
local meta = minetest.get_meta ( pos )
2017-03-13 18:26:38 -03:00
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 ( )
2022-05-15 14:28:26 -03:00
local meta = minetest.get_meta ( pos )
2017-03-13 18:26:38 -03:00
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