Adicionada opção para seguir outro jogador
parent
8177a5ef30
commit
a121b4127c
|
@ -0,0 +1,41 @@
|
|||
--[[
|
||||
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/>.
|
||||
|
||||
Verificar balao
|
||||
]]
|
||||
|
||||
--[[ Retorna os seguintes argumentos
|
||||
1) numero do erro encontrado
|
||||
0 significa que nenhum dos erros ocorreu (1, 2, 3 e etc)
|
||||
1 significa falta do registro no banco de dados (jogador nao tem balao)
|
||||
2 significa que o balao do jogador esta inativo/inoperante
|
||||
3 significa que o jogador nao se encontra perto do bau do balao
|
||||
2) String de texto referente ao problema, nil caso nenhum problema
|
||||
]]
|
||||
telepro.check_balao_proprio = function(player)
|
||||
local name = player:get_player_name()
|
||||
|
||||
-- Verificar se o jogador tem um balao
|
||||
if telepro.bd.verif(name, "pos") ~= true then
|
||||
minetest.chat_send_player(name, "Precisas ter um balao ativo")
|
||||
return 1, "Nenhum balao proprio existente"
|
||||
end
|
||||
|
||||
-- Pega os metadados do bau
|
||||
local meta = minetest.get_meta(telepro.bd.pegar(name, "pos"))
|
||||
if meta:get_string("status") ~= "ativo" then
|
||||
return 2, "Balao proprio inoperante"
|
||||
end
|
||||
|
||||
-- Verificar se tem um Bau de Balao perto do jogador que pertenca a ele
|
||||
if telepro.verif_prox_bau(player) == false then
|
||||
return 3, "Muito distante do proprio Bau de Balao"
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
3
init.lua
3
init.lua
|
@ -37,11 +37,14 @@ dofile(modpath.."/ir_balao.lua")
|
|||
dofile(modpath.."/comum.lua")
|
||||
dofile(modpath.."/reparar_balao.lua")
|
||||
dofile(modpath.."/gerar_balao_aleatorio.lua")
|
||||
dofile(modpath.."/check_balao_proprio.lua")
|
||||
|
||||
-- Interfaces
|
||||
dofile(modpath.."/visitas.lua")
|
||||
dofile(modpath.."/interface_bau.lua")
|
||||
dofile(modpath.."/interface_jogador.lua")
|
||||
|
||||
|
||||
-- Balao
|
||||
dofile(modpath.."/balao.lua")
|
||||
|
||||
|
|
|
@ -26,12 +26,13 @@ telepro.acessar_bau = function(player)
|
|||
-- Exibir formulario de opcoes ao jogador
|
||||
|
||||
-- Cria formspec
|
||||
local formspec = "size[6,4.8]"
|
||||
local formspec = "size[6,5.8]"
|
||||
..default.gui_bg
|
||||
..default.gui_bg_img
|
||||
.."image[0,0;7.3,3;telepro_intro.png]"
|
||||
.."button_exit[0,3;6,1;ir_centro;Ir para Centro]"
|
||||
.."button_exit[0,4;6,1;reparar;Reparar Balao]"
|
||||
.."button[0,5;6,1;visitas;Receber seguidor]"
|
||||
|
||||
-- Exibir formspec
|
||||
minetest.show_formspec(player:get_player_name(), "telepro:bau", formspec)
|
||||
|
@ -48,11 +49,12 @@ telepro.acessar_bau_spawn = function(player)
|
|||
-- Exibir formulario de opcoes ao jogador
|
||||
|
||||
-- Cria formspec
|
||||
local formspec = "size[6,4]"
|
||||
local formspec = "size[6,5]"
|
||||
..default.gui_bg
|
||||
..default.gui_bg_img
|
||||
.."image[0,0;7.3,3;telepro_intro.png]"
|
||||
.."button_exit[0,3;6,1;ir_balao;Ir para o posto de seu Balao]"
|
||||
.."button[0,3;6,1;visitas;Seguir jogador]"
|
||||
.."button_exit[0,4;6,1;ir_balao;Ir para o posto de seu Balao]"
|
||||
|
||||
-- Exibir formspec
|
||||
minetest.show_formspec(player:get_player_name(), "telepro:bau_spawn", formspec)
|
||||
|
@ -65,8 +67,12 @@ 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
|
||||
if fields.ir_centro then
|
||||
elseif fields.ir_centro then
|
||||
|
||||
-- Pegar nome do jogador
|
||||
local name = player:get_player_name()
|
||||
|
@ -128,9 +134,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
|
||||
-- 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
|
||||
if fields.ir_balao then
|
||||
elseif fields.ir_balao then
|
||||
|
||||
-- Pegar nome do jogador
|
||||
local name = player:get_player_name()
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
--[[
|
||||
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/>.
|
||||
|
||||
Visitas
|
||||
]]
|
||||
|
||||
-- Acesar interface do jogador para visitas
|
||||
telepro.acessar_visitas = function(player, tipo)
|
||||
if not player then
|
||||
minetest.log("error", "[Telepro] player == nil (em telepro.acessar_visitas)")
|
||||
return false
|
||||
end
|
||||
|
||||
local formspec
|
||||
local temp = telepro.online[player:get_player_name()]
|
||||
|
||||
if not temp.pedidos_visita then temp.pedidos_visita = {} end
|
||||
|
||||
if tipo == "proprio" then
|
||||
local visitas = ""
|
||||
for n,v in pairs(temp.pedidos_visita) do
|
||||
if visitas ~= "" then visitas = visitas .. "," end
|
||||
visitas = visitas .. n
|
||||
end
|
||||
|
||||
-- Cria formspec
|
||||
formspec = "size[5,3]"
|
||||
..default.gui_bg
|
||||
..default.gui_bg_img
|
||||
.."label[0,0;Pedidos recebidos]"
|
||||
.."dropdown[0,0.5;5.25,1;visita;"..visitas..";]"
|
||||
.."button[0,1.15;5,1;receber_visita;Receber seguidor]"
|
||||
|
||||
.."button[2,2.25;3,1;voltar;Voltar]"
|
||||
|
||||
elseif tipo == "centro" then
|
||||
-- Cria formspec
|
||||
formspec = "size[5,3]"
|
||||
..default.gui_bg
|
||||
..default.gui_bg_img
|
||||
.."field[0.28,0.8;5,1;visitado;Seguir jogador;]"
|
||||
.."button_exit[0,1.25;5,1;enviar_pedido;Enviar pedido]"
|
||||
|
||||
.."button[2,2.25;3,1;voltar;Voltar]"
|
||||
end
|
||||
|
||||
-- Exibir formspec
|
||||
minetest.show_formspec(player:get_player_name(), "telepro:jogador_visitas_"..tipo, formspec)
|
||||
end
|
||||
|
||||
|
||||
-- Receber botoes
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
|
||||
if formname == "telepro:jogador_visitas_centro" then
|
||||
|
||||
if fields.enviar_pedido and fields.visitado ~= "" then -- Jogador online
|
||||
|
||||
local name = player:get_player_name()
|
||||
|
||||
if not telepro.online[fields.visitado] then
|
||||
minetest.chat_send_player(name, "\""..fields.visitado.."\" offline ou inexistente")
|
||||
return
|
||||
end
|
||||
|
||||
local temp = telepro.online[fields.visitado]
|
||||
|
||||
if not temp.pedidos_visita then temp.pedidos_visita = {} end
|
||||
|
||||
-- Insere nome na tabela de pedidos
|
||||
temp.pedidos_visita[name] = true
|
||||
|
||||
minetest.chat_send_player(name, "Pedido enviado a \""..fields.visitado.."\". Avise para aceitar")
|
||||
|
||||
elseif fields.voltar then
|
||||
telepro.acessar_bau_spawn(player)
|
||||
return
|
||||
end
|
||||
|
||||
elseif formname == "telepro:jogador_visitas_proprio" then
|
||||
|
||||
|
||||
if fields.receber_visita and fields.visita ~= "" then
|
||||
|
||||
local name = player:get_player_name()
|
||||
local temp = telepro.online[name]
|
||||
|
||||
-- Verifica se pedido ainda existe
|
||||
if not fields.visita or not temp.pedidos_visita[fields.visita] then
|
||||
minetest.chat_send_player(name, "Pedido invalido "..dump(fields.visita))
|
||||
return
|
||||
end
|
||||
|
||||
-- Verifica se o visitante ainda esta online
|
||||
if not telepro.online[fields.visita] then
|
||||
minetest.chat_send_player(name, "\""..fields.visita.."\" offline")
|
||||
return
|
||||
end
|
||||
|
||||
local visitante = minetest.get_player_by_name(fields.visita)
|
||||
|
||||
-- Verifica se visitante esta perto do balao de centro
|
||||
if not minetest.find_node_near(visitante:getpos(), 25, {"telepro:bau_spawn"}) then
|
||||
minetest.chat_send_player(name, "\""..fields.visita.."\" saiu de perto do balao do centro")
|
||||
minetest.chat_send_player(fields.visita, "Seu pedido para seguir \""..name.."\" foi aceito mas voce se afastou do balao")
|
||||
return
|
||||
end
|
||||
|
||||
-- Teleporta jogador
|
||||
visitante:setpos(player:getpos())
|
||||
temp.pedidos_visita[fields.visita] = nil
|
||||
minetest.chat_send_player(name, "\""..fields.visita.."\" te seguiu")
|
||||
minetest.chat_send_player(fields.visita, "Voce seguiu \""..name.."\"")
|
||||
|
||||
elseif fields.voltar then
|
||||
telepro.acessar_bau(player)
|
||||
return
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end)
|
Loading…
Reference in New Issue