portais/node.lua

91 lines
2.6 KiB
Lua

--
-- Nodes
--
-- Calculando valores
-- Lugares
local string_de_lugares = ""
local id_lugares = {}
-- Fosmpec padrao
local formspec_p = ""
-- Atualizar lista de vilas
local atualizar_lista = function()
if gestor then
-- Pegar lugares do gestor
if gestor then
string_de_lugares = ""
lista_de_pos = {}
-- Minemacro
string_de_lugares = string_de_lugares .. "Minemacro"
table.insert(id_lugares, {nome="Minemacro",pos=gestor.bd:pegar("centro", "pos")})
-- Vilas
for _,vila in ipairs(minetest.get_dir_list(minetest.get_worldpath().."/gestor/vilas")) do
local dados = gestor.bd:pegar("vilas", vila)
string_de_lugares = string_de_lugares .. "," .. dados.nome
table.insert(id_lugares, {nome=dados.nome,pos=dados.pos})
end
-- Atualiza formspec
formspec_p = "size[6,5]"
..default.gui_bg
..default.gui_bg_img
.."label[1,0.25;Escolha seu destino]"
.."textlist[0.5,1;4.8,3;vila;"..string_de_lugares.."]"
end
end
end
atualizar_lista()
-- Exibir Formspec
local exibir_formspec = function(name, escolha)
if escolha then
minetest.show_formspec(name, "portais:bilheteria", formspec_p.."button_exit[0.5,4;5,1;viajar;Viajar]")
else
minetest.show_formspec(name, "portais:bilheteria", formspec_p)
end
end
-- Bilheteria
minetest.register_node("portais:bilheteria", {
description = "Bilheteria",
tiles = {
"default_wood.png", -- Cima
"default_wood.png", -- Baixo
"default_wood.png^portais_bilheteria.png", -- Lado direito
"default_wood.png^portais_bilheteria.png", -- Lado esquerda
"default_wood.png^portais_bilheteria.png", -- Fundo
"default_wood.png^portais_bilheteria.png" -- Frente
},
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
meta:set_string("infotext", "Bilheteria")
end,
on_rightclick = function(pos, node, player)
exibir_formspec(player:get_player_name())
end,
})
-- Receptor de campos
local escolha = {}
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "portais:bilheteria" then
if fields.vila then
local name = player:get_player_name()
local n = string.split(fields.vila, ":")
escolha[name] = n[2]
exibir_formspec(name, n[2])
end
if fields.viajar then
local name = player:get_player_name()
local id = tonumber(escolha[name])
player:setpos(id_lugares[id].pos)
minetest.chat_send_player(name, "Bem vindo a "..id_lugares[id].nome)
end
end
end)