From bdb22f2538df4238415528480a9ee98a238311ae Mon Sep 17 00:00:00 2001 From: BrunoMine Date: Sat, 15 Jul 2017 12:03:24 -0300 Subject: [PATCH] Incorporado a lib memor --- depends.txt | 1 - gerar_balao_aleatorio.lua | 6 +- init.lua | 7 +- interface_bau.lua | 16 ++- ir_balao.lua | 4 +- lib/memor.lua | 278 ++++++++++++++++++++++++++++++++++++++ memor/API.txt | 99 -------------- memor/arquivo.lua | 105 -------------- memor/consulta.lua | 129 ------------------ memor/init.lua | 38 ------ memor/montagem.lua | 49 ------- memor/online.lua | 37 ----- online.lua | 23 ++++ reivindicar.lua | 6 +- 14 files changed, 322 insertions(+), 476 deletions(-) create mode 100644 lib/memor.lua delete mode 100644 memor/API.txt delete mode 100644 memor/arquivo.lua delete mode 100644 memor/consulta.lua delete mode 100644 memor/init.lua delete mode 100644 memor/montagem.lua delete mode 100644 memor/online.lua create mode 100644 online.lua diff --git a/depends.txt b/depends.txt index 61cb572..4ad96d5 100644 --- a/depends.txt +++ b/depends.txt @@ -1,2 +1 @@ -memor? default diff --git a/gerar_balao_aleatorio.lua b/gerar_balao_aleatorio.lua index 9761792..aa86e82 100644 --- a/gerar_balao_aleatorio.lua +++ b/gerar_balao_aleatorio.lua @@ -36,9 +36,9 @@ local finalizar = function(player, pos) -- Desativa o bau anterior do -- Verificar se existe registro no banco de dados - if telepro.bd:verif(name, "pos") == true then + if telepro.bd.verif(name, "pos") == true then -- Pega a coordenada - local pp = telepro.bd:pegar(name, "pos") + local pp = telepro.bd.pegar(name, "pos") -- Acessa os metadados local meta = minetest.get_meta(pp) -- Limpa o parametro dono @@ -55,7 +55,7 @@ local finalizar = function(player, pos) meta:set_string("status", "ativo") -- Salvar status inicial -- Salva a coordenada do novo bau no banco de dados - telepro.bd:salvar(name, "pos", pb) + telepro.bd.salvar(name, "pos", pb) -- Montar balao telepro.montar_balao(pb, name) diff --git a/init.lua b/init.lua index c2f12c6..fd452ec 100644 --- a/init.lua +++ b/init.lua @@ -27,14 +27,11 @@ telepro.spawn = minetest.setting_get_pos("static_spawnpoint") or {x=0, y=0, z=0} -- Carregar scripts notificar("Carregando scripts...") --- Scripts mod memor embarcado -dofile(modpath.."/memor/init.lua") -- Criação do banco de dados -telepro.bd = memor.montar_bd() --- Criar tabela de jogadores online -telepro.online = memor.online() +telepro.bd = dofile(modpath.."/lib/memor.lua") -- Funções +dofile(modpath.."/online.lua") dofile(modpath.."/reivindicar.lua") dofile(modpath.."/ir_balao.lua") dofile(modpath.."/comum.lua") diff --git a/interface_bau.lua b/interface_bau.lua index 3c474a4..3b2ec0e 100644 --- a/interface_bau.lua +++ b/interface_bau.lua @@ -73,7 +73,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Pegar coordenada do jogador local pos = player:getpos() - + + -- 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 + 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, "Muito distante do seu Bau de Balao") @@ -83,7 +89,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Verifica status do bau do balao do -- Pega os metadados do bau - local meta = minetest.get_meta(telepro.bd:pegar(name, "pos")) + local meta = minetest.get_meta(telepro.bd.pegar(name, "pos")) if meta:get_string("status") ~= "ativo" then minetest.chat_send_player(name, "Balao inoperante. Aguarde mantenha o local limpo e aberto e aguarde ele ficar pronto.") @@ -106,7 +112,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- Pegar coordenada do bau - local pos = telepro.bd:pegar(name, "pos") + local pos = telepro.bd.pegar(name, "pos") -- Verificar se o balao ja esta ativo local meta = minetest.get_meta(pos) @@ -139,12 +145,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end -- Verificar se o jogador tem um balao - if telepro.bd:verif(name, "pos") ~= true then + if telepro.bd.verif(name, "pos") ~= true then return telepro.acessar(minetest.get_player_by_name(name)) end -- Verificar se o balao esta ativo - if minetest.get_meta(telepro.bd:pegar(name, "pos")):get_string("status") ~= "ativo" then + if minetest.get_meta(telepro.bd.pegar(name, "pos")):get_string("status") ~= "ativo" then minetest.chat_send_player(name, "O Seu Balao nao esta funcionando. O local foi destruido ou obstruido.") end diff --git a/ir_balao.lua b/ir_balao.lua index 1e4457e..afc2eae 100644 --- a/ir_balao.lua +++ b/ir_balao.lua @@ -30,13 +30,13 @@ telepro.ir_balao = function(player) local name = player:get_player_name() -- Verifica se o registro de balao existe no banco de dados - if telepro.bd:verif(name, "pos") == false then + if telepro.bd.verif(name, "pos") == false then minetest.chat_send_player(player:get_player_name(), "Sem nenhum balao ainda.") return false end -- Pegar coordenada do bau - local pos = telepro.bd:pegar(name, "pos") + local pos = telepro.bd.pegar(name, "pos") -- Verificar se o balao existente no banco de dados ainda existe no mapa do diff --git a/lib/memor.lua b/lib/memor.lua new file mode 100644 index 0000000..306d274 --- /dev/null +++ b/lib/memor.lua @@ -0,0 +1,278 @@ +--[[ + Lib Memor para Minetest + Memor v1.3 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 . + + Inicializador de scripts + ]] + +local modname = minetest.get_current_modname() + +local modpath = minetest.get_modpath(modname) + +-- Variavel global +local memor = {} + +-- Rotinas de interação com arquivos + +-- Diretorio do mundo +local wpath = minetest.get_worldpath() + +-- Cria um diretório na pasta do mundo +function memor.mkdir(dir) + if not dir then + minetest.log("error", "[Memor] Nenhum diretorio especificado (em memor.mkdir)") + return false + end + + dir = wpath.."/"..dir + + if minetest.mkdir then + minetest.mkdir(dir) + else + os.execute('mkdir "' .. dir .. '"') + end + return true +end + +-- Criar um arquivo com os dados serializados (Salvar) +function memor.escrever(dir, arquivo, dados) + + if dir == nil or arquivo == nil or dados == nil then + minetest.log("error", "[Memor] Faltou dados (em memor.escrever)") + return false + end + + local dados = minetest.serialize(dados) + if dados == "" then + minetest.log("error", "[Memor] Dado fornecido invalido (em memor.escrever)") + return false + end + + local saida = io.open(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo, "w") + if saida then + saida:write(dados) + io.close(saida) + return true + else + minetest.log("info", "[Memor] memor.escrever tentou escrever num diretorio inexistente") + return false + end +end + +-- Ler dados de um arquivo de memória (Carregar) +function memor.ler(dir, arquivo) + + if dir == nil or arquivo == nil then + minetest.log("error", "[Memor] Faltou dados (em memor.ler)") + return nil + end + + local entrada = io.open(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo, "r") + if entrada then + local dados = entrada:read("*l") + if dados ~= "" or dados ~= nil then + dados = minetest.deserialize(dados) + end + io.close(entrada) + return dados + else + minetest.log("error", "[Memor] pasta e/ou arquivo inexiste(s) (em memor.ler)") + return nil + end +end + +-- Deletar um arquivo +function memor.deletar(dir, arquivo) + + if not dir or not arquivo then + minetest.log("error", "[Memor] Faltou dados (em memor.deletar)") + return false + end + + os.remove(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo) + return true +end + + +-- Deletar um diretório +function memor.deletar_dir(dir) + + if not dir then + minetest.log("error", "[Memor] Faltou dados (em memor.deletar_dir)") + return false + end + + local list = minetest.get_dir_list(wpath .. "/" .. modname .. "/" .. dir) + + for n, arquivo in ipairs(list) do + os.remove(wpath .. "/" .. modname .. "/" .. dir .. "/" .. arquivo) + end + + os.remove(wpath .. "/" .. modname .. "/" .. dir) + return true +end + +-- Fim + +-- Rotinas de consutas a arquivos + +-- Verifica diretorios e corrige +verificar = function(subdir) + + local dir = modname + + -- Verifica e corrige diretorio + local list = minetest.get_dir_list(minetest.get_worldpath(), true) + local r = false + for n, ndir in ipairs(list) do + if ndir == dir then + r = true + break + end + end + -- Diretorio inexistente + if r == false then + memor.mkdir(dir) + end + + -- Verifica e corrige subdiretorio + list = minetest.get_dir_list(minetest.get_worldpath().."/"..dir, true) + r = false + for n, ndir in ipairs(list) do + if ndir == subdir then + r = true + break + end + end + -- Subdiretorio inexistente + if r == false then + memor.mkdir(dir.."/"..subdir) + end + +end + + +-- Inserir dados +memor.inserir = function(tb, index, valor) + + -- Tenta inserir direto + if memor.escrever(tb, index, valor) == true then return true end + + verificar(tb) + + if memor.escrever(tb, index, valor) then + return true + else + minetest.log("error", "[Memor] Impossivel salvar dados (em memor.inserir)") + return false + end + +end + + +-- Ler dados +memor.consultar = function(tb, index) + + local r = memor.ler(tb, index) + if r == nil then + local mod = modname + minetest.log("error", "[Memor] Registro acessado inexistente ("..dump(mod).."/"..dump(tb).."/"..dump(index)..") (em memor.consultar)") + end + + return r + +end + + +-- Verificar dados +memor.verificar = function(subdir, arquivo) + + local dir = modname + + list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir) + r = false + for n, arq in ipairs(list) do + if arq == arquivo then + r = true + break + end + end + + if r then + return true + else + return false + end +end + +-- Listar +memor.listar = function(subdir) + + local dir = modname + + if subdir then + + local list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir) + + if list == nil then + minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)") + return false + else + return list + end + + else + local list = minetest.get_dir_list(wpath .. "/" .. dir) + + if list == nil then + minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)") + return false + else + return list + end + end +end + +-- Fim + +-- Montagem de banco de dados + +bd = {} + +-- Inserir dados +bd.salvar = function(tb, index, valor) + return memor.inserir(tb, index, valor) +end + +-- Consultar dados +bd.pegar = function(tb, index) + return memor.consultar(tb, index) +end + +-- Verificar dados +bd.verif = function(tb, index) + return memor.verificar(tb, index) +end + +-- Remover dados +bd.remover = function(tb, index) + return memor.deletar(tb, index) +end + +-- Remover tabela +bd.drop_tb = function(tb) + return memor.deletar_dir(tb) +end + +-- Listar dados +bd.listar = function(tb) + return memor.listar(tb) +end + +return bd + +-- Fim diff --git a/memor/API.txt b/memor/API.txt deleted file mode 100644 index 6289a74..0000000 --- a/memor/API.txt +++ /dev/null @@ -1,99 +0,0 @@ -Mod Memor para Minetest -Memor v1.2 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - -Recebeste uma cópia da GNU Lesser General -Public License junto com esse software, -se não, veja em . - -API - -===================================> Montar um banco de dados rápido <=================================== -Esse banco de dados fica em uma subpasta com o nome do mod especificado portanto não deve existir nenhum -arquivo ou pasta com o nome do mod dentro da pasta do mundo pois isso ocasionaria um conflito de nomes - -memor.montar_bd() -- Função que retorna uma tabela de funções para gerenciar o banco de - dados do mod - - OPCIONAL é o nome do mod que usará o banco de dados - Se nulo, fica sendo o nome do mod que executar a função - -Chamadas de função para o banco de dados criado - - salvar(tb, index, valor) -- Salva um valor no banco de dados (cria as tabelas se não existirem) - - é o nome da tabela (exemplo: players, nodes, casas) - é o endereço do valor (exemplo: fome, altura, dono) - é o valor armazenado (exemplo: 6, 30, "Caio") - - pegar(tb, index) -- Retorna o valor armazenado (ou nulo caso seja inexistente) - - é o nome da tabela (exemplo: players, nodes, casas) - é o endereço do valor (exemplo: fome, altura, dono) - - verif(tb, index) -- Verifica se um determinado registro existe (retorna 'true' se existir) - - é o nome da tabela (exemplo: players, nodes, casas) - é o endereço do valor (exemplo: fome, altura, dono) - - remover(tb, index) -- Remove um valor da tabela (apaga o dado armazenado) - - é o nome da tabela (exemplo: players, nodes, casas) - é o endereço do valor (exemplo: fome, altura, dono) - - drop_tb(tb) -- Remove uma tabela (apagando todos os seus dados) - - é o nome da tabela (exemplo: players, nodes, casas) - - listar(tb) -- Retorna uma tabela ordenada com strings dos nomes de tabelas ou indices - - OPICIONAL é uma tabela a qual desejar listar os sues indices - ^ Se nulo, retorna as listagem das tabelas do banco de dados - -Exemplo de uso: - --- Montar um banco de dados na variavel 'registro' -local registro = memor.montar_bd(minetest.get_current_modname()) - --- Criar uma tabela de "medalhas" onde "Maria" terá 15 -registro:salvar("medalhas", "Maria", 15) - --- Verifica se "Maria" existe na tabela de "Medalhas" -if registro:verif("medalhas", "Maria") then - - -- Consulta quantas "medalhas" "Maria" tem - local medalhas = registro:pegar("medalhas", "Maria") -- retorna 15 - - minetest.chat_send_all("Maria tem " .. medalhas .. " medalhas") - -end - --- Remover "Maria" da tabela "medalhas" -registro:remover("medalhas", "Maria") - --- Remove a tabela "medalhas" -registro:drop_tb("medalhas") - -========================================================================================================= - -=====================================> Tabela de jogadores online <====================================== - -memor.online() -- Retorna uma tabela desordenada com índices com nomes dos jogadores online - ^ A tabela só mantém dados dos índices de jogadores online - ^ Caso um nome de jogador que não esteja online for inserido, ele vai - ser apagado assim que algum jogador sair do servidor - - OPCIONAL é uma string com o nome do mod dono da tabela (o que opera a tabela) - Se nulo, fica sendo o nome do mod que executar a função - -Exemplo de uso: - --- Tabela que guarda quem é o convidado de um jogador (controlada para manter apenas jogadores online) -local convidados = memor.online() - --- Jogador "Arnaldo" tem "Luiz" como convidado -convidados["Arnaldo"] = "Luiz" - --- Quando o jogador "Arnaldo" sair do servidor, esse dado será apagado da memória - -========================================================================================================= - diff --git a/memor/arquivo.lua b/memor/arquivo.lua deleted file mode 100644 index 4d4561b..0000000 --- a/memor/arquivo.lua +++ /dev/null @@ -1,105 +0,0 @@ ---[[ - Mod Memor para Minetest - Memor v1.2 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - - Recebeste uma cópia da GNU Lesser General - Public License junto com esse software, - se não, veja em . - - Operadores de arquivamento e leitura - ]] - - --- Diretorio do mundo -local wpath = minetest.get_worldpath() - --- Cria um diretório na pasta do mundo -function memor.mkdir(dir, sub) - if not dir then - minetest.log("error", "[Memor] Nenhum diretorio especificado (em memor.mkdir)") - return false - end - - dir = wpath.."/"..dir - - if minetest.mkdir then - minetest.mkdir(dir) - else - os.execute('mkdir "' .. dir .. '"') - end - return true -end - --- Criar um arquivo com os dados serializados (Salvar) -function memor.escrever(mod, dir, arquivo, dados) - if mod == nil or dir == nil or arquivo == nil or dados == nil then - minetest.log("error", "[Memor] Faltou dados (em memor.escrever)") - return false - end - - local dados = minetest.serialize(dados) - if dados == "" then - minetest.log("error", "[Memor] Dado fornecido invalido (em memor.escrever)") - return false - end - - local saida = io.open(wpath .. "/" .. mod .. "/" .. dir .. "/" .. arquivo, "w") - if saida then - saida:write(dados) - io.close(saida) - return true - else - minetest.log("info", "[Memor] memor.escrever tentou escrever num diretorio inexistente") - return false - end -end - --- Ler dados de um arquivo de memória (Carregar) -function memor.ler(mod, dir, arquivo) - if mod == nil or dir == nil or arquivo == nil then - minetest.log("error", "[Memor] Faltou dados (em memor.ler)") - return nil - end - - local entrada = io.open(wpath .. "/" .. mod .. "/" .. dir .. "/" .. arquivo, "r") - if entrada then - local dados = entrada:read("*l") - if dados ~= "" or dados ~= nil then - dados = minetest.deserialize(dados) - end - io.close(entrada) - return dados - else - minetest.log("error", "[Memor] pasta e/ou arquivo inexiste(s) (em memor.ler)") - return nil - end -end - --- Deletar um arquivo -function memor.deletar(mod, dir, arquivo) - if not mod or not dir or not arquivo then - minetest.log("error", "[Memor] Faltou dados (em memor.deletar)") - return false - end - - os.remove(wpath .. "/" .. mod .. "/" .. dir .. "/" .. arquivo) - return true -end - - --- Deletar um diretório -function memor.deletar_dir(mod, dir) - if not mod or not dir then - minetest.log("error", "[Memor] Faltou dados (em memor.deletar_dir)") - return false - end - - local list = minetest.get_dir_list(wpath .. "/" .. mod .. "/" .. dir) - - for n, arquivo in ipairs(list) do - os.remove(wpath .. "/" .. mod .. "/" .. dir .. "/" .. arquivo) - end - - os.remove(wpath .. "/" .. mod .. "/" .. dir) - return true -end diff --git a/memor/consulta.lua b/memor/consulta.lua deleted file mode 100644 index d540edc..0000000 --- a/memor/consulta.lua +++ /dev/null @@ -1,129 +0,0 @@ ---[[ - Mod Memor para Minetest - Memor v1.2 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - - Recebeste uma cópia da GNU Lesser General - Public License junto com esse software, - se não, veja em . - - Operadores de consulta - ]] - --- Diretório do Mundo -local wpath = minetest.get_worldpath() - --- Verifica diretorios e corrige -verificar = function(dir, subdir) - - -- Verifica e corrige diretorio - local list = minetest.get_dir_list(minetest.get_worldpath(), true) - local r = false - for n, ndir in ipairs(list) do - if ndir == dir then - r = true - break - end - end - -- Diretorio inexistente - if r == false then - memor.mkdir(dir) - end - - -- Verifica e corrige subdiretorio - list = minetest.get_dir_list(minetest.get_worldpath().."/"..dir, true) - r = false - for n, ndir in ipairs(list) do - if ndir == subdir then - r = true - break - end - end - -- Subdiretorio inexistente - if r == false then - memor.mkdir(dir.."/"..subdir) - end - -end - - --- Inserir dados -memor.inserir = function(mod, tb, index, valor) - - -- Tenta inserir direto - if memor.escrever(mod, tb, index, valor) == true then return true end - - verificar(mod, tb) - - if memor.escrever(mod, tb, index, valor) then - return true - else - minetest.log("error", "[Memor] Impossivel salvar dados (em memor.inserir)") - return false - end - -end - - --- Ler dados -memor.consultar = function(mod, tb, index) - - local r = memor.ler(mod, tb, index) - if r == nil then - minetest.log("error", "[Memor] Registro acessado inexistente ("..dump(mod).."/"..dump(tb).."/"..dump(index)..") (em memor.consultar)") - end - - return r - -end - - --- Verificar dados -memor.verificar = function(dir, subdir, arquivo) - - list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir) - r = false - for n, arq in ipairs(list) do - if arq == arquivo then - r = true - break - end - end - - if r then - return true - else - return false - end -end - --- Listar -memor.listar = function(dir, subdir) - if dir == nil then - minetest.log("error", "[Memor] Diretorio inexistente (em memor.listar)") - return false - end - - if subdir then - - local list = minetest.get_dir_list(wpath .. "/" .. dir .. "/" .. subdir) - - if list == nil then - minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)") - return false - else - return list - end - - else - local list = minetest.get_dir_list(wpath .. "/" .. dir) - - if list == nil then - minetest.log("error", "[Memor] Impossivel listar diretorio (em memor.listar)") - return false - else - return list - end - end -end - - diff --git a/memor/init.lua b/memor/init.lua deleted file mode 100644 index ff956d5..0000000 --- a/memor/init.lua +++ /dev/null @@ -1,38 +0,0 @@ ---[[ - Mod Memor para Minetest - Memor v1.2 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - - Recebeste uma cópia da GNU Lesser General - Public License junto com esse software, - se não, veja em . - - Inicializador de scripts - ]] - ---[[ - Script alterado para permitir funcionamento dentro do mod telepro - ]] - --- Verifica se o mod memor original esta ativo -if minetest.get_modpath("memor") then return end - --- Notificador de Inicializador -local notificar = function(msg) - if minetest.setting_get("log_mods") then - minetest.debug("[Aventuras/Memor]"..msg) - end -end - -local modpath = minetest.get_modpath("telepro").."/memor" - --- Variavel global -memor = {} - --- Carregar scripts -notificar("Carregando scripts...") -dofile(modpath.."/arquivo.lua") -dofile(modpath.."/consulta.lua") -dofile(modpath.."/montagem.lua") -dofile(modpath.."/online.lua") -notificar("OK") - diff --git a/memor/montagem.lua b/memor/montagem.lua deleted file mode 100644 index 15244ea..0000000 --- a/memor/montagem.lua +++ /dev/null @@ -1,49 +0,0 @@ ---[[ - Mod Memor para Minetest - Memor v1.2 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - - Recebeste uma cópia da GNU Lesser General - Public License junto com esse software, - se não, veja em . - - Montagem de bando de dados - ]] - - --- Montar banco de dados em um mod -function memor.montar_bd(mod) - v = {} - v.mod = mod or minetest.get_current_modname() - - -- Inserir dados - v.salvar = function(v, tb, index, valor) - return memor.inserir(v.mod, tb, index, valor) - end - - -- Consultar dados - v.pegar = function(v, tb, index) - return memor.consultar(v.mod, tb, index) - end - - -- Verificar dados - v.verif = function(v, tb, index) - return memor.verificar(v.mod, tb, index) - end - - -- Remover dados - v.remover = function(v, tb, index) - return memor.deletar(v.mod, tb, index) - end - - -- Remover tabela - v.drop_tb = function(v, tb) - return memor.deletar_dir(v.mod, tb) - end - - -- Listar dados - v.listar = function(v, tb) - return memor.listar(v.mod, tb) - end - - return v -end diff --git a/memor/online.lua b/memor/online.lua deleted file mode 100644 index ad28cfa..0000000 --- a/memor/online.lua +++ /dev/null @@ -1,37 +0,0 @@ ---[[ - Mod Memor para Minetest - Memor v1.3 Copyright (C) 2016 BrunoMine (https://github.com/BrunoMine) - - Recebeste uma cópia da GNU Lesser General - Public License junto com esse software, - se não, veja em . - - Controle de jogadores online - ]] - - --- Controle de jogadores de cada mod -memor.online_mods = {} - --- Montar banco de dados simples de jogadores online -function memor.online(mod) - local mod = mod or minetest.get_current_modname() - - memor.online_mods[mod] = {} - - return memor.online_mods[mod] -end - --- Adiciona o jogador em todas listas quando entrar no servidor -minetest.register_on_joinplayer(function(player) - for mod,l in pairs(memor.online_mods) do - memor.online_mods[mod][player:get_player_name()] = {} - end -end) - --- Remove o jogador de todas listas quando entrar no servidor -minetest.register_on_leaveplayer(function(player) - for mod,l in pairs(memor.online_mods) do - memor.online_mods[mod][player:get_player_name()] = nil - end -end) diff --git a/online.lua b/online.lua new file mode 100644 index 0000000..11ae008 --- /dev/null +++ b/online.lua @@ -0,0 +1,23 @@ +--[[ + 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 . + + Controle de dados temporarios para jogadores online + ]] + +-- Tabela de jogadores online +telepro.online = {} + +-- Adiciona jogadores que conectam no servidor +minetest.register_on_joinplayer(function(player) + telepro.online[player:get_player_name()] = {} +end) + +-- Remove jogadors que se desconectam do servidor +minetest.register_on_leaveplayer(function(player) + telepro.online[player:get_player_name()] = nil +end) diff --git a/reivindicar.lua b/reivindicar.lua index d822f0a..169b3ff 100644 --- a/reivindicar.lua +++ b/reivindicar.lua @@ -111,9 +111,9 @@ telepro.reivindicar = function(player) -- Desativa o bau anterior do -- Verificar se existe registro no banco de dados - if telepro.bd:verif(name, "pos") == true then + if telepro.bd.verif(name, "pos") == true then -- Pega a coordenada - local p = telepro.bd:pegar(name, "pos") + local p = telepro.bd.pegar(name, "pos") -- Acessa os metadados local meta = minetest.get_meta(p) -- Limpa o parametro dono @@ -130,7 +130,7 @@ telepro.reivindicar = function(player) meta:set_string("status", "ativo") -- Salvar status inicial -- Salva a coordenada do novo bau no banco de dados - telepro.bd:salvar(name, "pos", pos) + telepro.bd.salvar(name, "pos", pos) -- Montar balao telepro.montar_balao(pos, name)