183 lines
5.1 KiB
Lua
183 lines
5.1 KiB
Lua
--[[
|
|
Mod Telepro para Minetest
|
|
Copyright (C) 2017 BrunoMine (https://github.com/BrunoMine)
|
|
|
|
Recebeste uma cópia da GNU Lesser General
|
|
Public License junto com esse software,
|
|
se não, veja em <http://www.gnu.org/licenses/>.
|
|
|
|
Interface do Bau do balao
|
|
]]
|
|
|
|
local S = telepro.S
|
|
|
|
-- Acessar um Bau de Balao
|
|
telepro.acessar_bau = function(player)
|
|
if not player then
|
|
minetest.log("error", "[Telepro] player == nil (em telepro.acessar)")
|
|
return false
|
|
end
|
|
|
|
-- Verificar se tem um Bau de Balao perto do jogador que pertenca a ele
|
|
if telepro.verif_prox_bau(player) == false then
|
|
minetest.chat_send_player(player:get_player_name(), S("Muito distante do seu Bau de Balao"))
|
|
return false
|
|
end
|
|
|
|
-- Exibir formulario de opcoes ao jogador
|
|
|
|
-- Cria formspec
|
|
local formspec = "size[6,5.8]"
|
|
..default.gui_bg
|
|
..default.gui_bg_img
|
|
.."image[1.7,-0.25;3,3;telepro_ir_centro.png]"
|
|
.."button_exit[0,2.4;6,1;ir_centro;"..S("Ir para Centro").."]"
|
|
|
|
.."image[0.1,3.7;1,1;screwdriver.png]"
|
|
.."button_exit[1,3.7;5,1;reparar;"..S("Reparar Balao").."]"
|
|
|
|
.."image[0.1,5;1,1;telepro_aceitar_visita.png]"
|
|
.."button[1,5;5,1;visitas;"..S("Receber seguidor").."]"
|
|
|
|
-- Exibir formspec
|
|
minetest.show_formspec(player:get_player_name(), "telepro:bau", formspec)
|
|
|
|
end
|
|
|
|
-- Acessar um Bau de Centro de Balao
|
|
telepro.acessar_bau_spawn = function(player)
|
|
if not player then
|
|
minetest.log("error", "[Telepro] player == nil (em telepro.acessar)")
|
|
return false
|
|
end
|
|
|
|
-- Exibir formulario de opcoes ao jogador
|
|
|
|
-- Cria formspec
|
|
local formspec = "size[6,3]"
|
|
..default.gui_bg
|
|
..default.gui_bg_img
|
|
.."image[0.1,-0.2;3,3;telepro_ir_casa.png]"
|
|
.."button_exit[0,2;3,1;ir_balao;"..S("Ir para seu Balao").."]"
|
|
.."image[3.1,-0.2;3,3;telepro_visitar.png]"
|
|
.."button[3,2;3,1;visitas;"..S("Seguir jogador").."]"
|
|
|
|
|
|
-- Exibir formspec
|
|
minetest.show_formspec(player:get_player_name(), "telepro:bau_spawn", formspec)
|
|
|
|
end
|
|
|
|
-- Receber botoes
|
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
|
|
-- Bau do jogador
|
|
if formname == "telepro:bau" then
|
|
|
|
-- Gerenciar visitas
|
|
if fields.visitas then
|
|
telepro.acessar_visitas(player, "proprio")
|
|
|
|
-- Botao de ir para o centro
|
|
elseif fields.ir_centro then
|
|
|
|
-- Pegar nome do jogador
|
|
local name = player:get_player_name()
|
|
|
|
-- Pegar coordenada do jogador
|
|
local pos = player:getpos()
|
|
|
|
-- Verificar se o jogador tem um balao
|
|
if telepro.bd.verif("jogador_"..name, "pos") ~= true then
|
|
minetest.chat_send_player(name, S("Precisas ter um balao ativo"))
|
|
return
|
|
end
|
|
|
|
-- Verificar se tem um Bau de Balao perto do jogador que pertenca a ele
|
|
if telepro.verif_prox_bau(player) == false then
|
|
minetest.chat_send_player(name, S(telepro.msg.longe_do_balao_proprio))
|
|
return
|
|
end
|
|
|
|
-- Verifica status do bau do balao
|
|
do
|
|
-- Pega os metadados do bau
|
|
local meta = minetest.get_meta(telepro.bd.pegar("jogador_"..name, "pos"))
|
|
|
|
if meta:get_string("status") ~= "ativo" then
|
|
minetest.chat_send_player(name, S(telepro.msg.balao_inativo))
|
|
minetest.chat_send_player(name, S(telepro.msg.recomendacoes_limpezas_balao))
|
|
return
|
|
end
|
|
end
|
|
|
|
-- Teleportar jogador
|
|
player:setpos(telepro.spawn)
|
|
minetest.chat_send_player(name, S("Viagem ao Centro realizada"))
|
|
|
|
elseif fields.reparar then
|
|
|
|
-- Pegar nome do jogador
|
|
local name = player:get_player_name()
|
|
|
|
-- Verificar se tem um Bau de Balao perto do jogador que pertenca a ele
|
|
if telepro.verif_prox_bau(player) == false then
|
|
minetest.chat_send_player(name, S(telepro.msg.ao_ir_centro))
|
|
return
|
|
end
|
|
|
|
-- Pegar coordenada do bau
|
|
local pos = telepro.bd.pegar("jogador_"..name, "pos")
|
|
|
|
-- Verificar se o balao ja esta ativo
|
|
local meta = minetest.get_meta(pos)
|
|
if meta:get_string("status") == "ativo" then
|
|
minetest.chat_send_player(name, S("Balao ativo"))
|
|
return
|
|
end
|
|
|
|
-- Reparar o balao
|
|
telepro.reparar_balao(name, pos)
|
|
|
|
end
|
|
|
|
-- Bau do Spawn
|
|
elseif formname == "telepro:bau_spawn" then
|
|
|
|
-- Gerenciar visitas
|
|
if fields.visitas then
|
|
telepro.acessar_visitas(player, "centro")
|
|
|
|
-- Teleportar para o posto do balao do jogador
|
|
elseif fields.ir_balao then
|
|
|
|
-- Pegar nome do jogador
|
|
local name = player:get_player_name()
|
|
|
|
-- Pegar coordenada do jogador
|
|
local pos = player:getpos()
|
|
|
|
-- Verificar se tem um Bau de Centro de Balao por perto
|
|
if not minetest.find_node_near({x=pos.x, y=pos.y-2, z=pos.z}, 8, {"telepro:bau_spawn"}) then
|
|
minetest.chat_send_player(name, S(telepro.msg.longe_do_balao_centro))
|
|
return
|
|
end
|
|
|
|
-- Verificar se o jogador tem um balao
|
|
if telepro.bd.verif("jogador_"..name, "pos") ~= true then
|
|
return telepro.acessar(minetest.get_player_by_name(name))
|
|
end
|
|
|
|
-- Verificar se o balao esta ativo
|
|
-- CANCELADO: não deve ser necessario, isso pode atrapalhar muito o retorno do jogador, ao retornar ele resolvera isso
|
|
--if minetest.get_meta(telepro.bd.pegar("jogador_"..name, "pos")):get_string("status") ~= "ativo" then
|
|
-- minetest.chat_send_player(name, S(telepro.msg.balao_inativo))
|
|
--end
|
|
|
|
-- Tenta teleportar o jogador
|
|
telepro.ir_balao(player)
|
|
return
|
|
end
|
|
end
|
|
end)
|