Bug de arquivo depurador corrigido

O arquivo de debug.txt não estava sendo encontrado devido a um erro de caminhos
master
BrunoMine 2016-08-09 22:57:17 -03:00
parent 20d271d50f
commit c769c4e78d
8 changed files with 345 additions and 2 deletions

80
LICENÇA.txt Normal file
View File

@ -0,0 +1,80 @@
LICENÇA CC BY 3.0 BR
A OBRA (CONFORME DEFINIDA ABAIXO) É DISPONIBILIZADA DE ACORDO COM OS TERMOS DESTA LICENÇA PÚBLICA
CREATIVE COMMONS ("CCPL" OU "LICENÇA"). A OBRA É PROTEGIDA POR DIREITO AUTORAL E/OU OUTRAS LEIS
APLICÁVEIS. QUALQUER USO DA OBRA QUE NÃO O AUTORIZADO SOB ESTA LICENÇA OU PELA LEGISLAÇÃO AUTORAL
É PROIBIDO.
AO EXERCER QUAISQUER DOS DIREITOS À OBRA AQUI CONCEDIDOS, VOCÊ ACEITA E CONCORDA FICAR OBRIGADO
NOS TERMOS DESTA LICENÇA. O LICENCIANTE CONCEDE A VOCÊ OS DIREITOS AQUI CONTIDOS EM CONTRAPARTIDA
A SUA ACEITAÇÃO DESTES TERMOS E CONDIÇÕES.
1. Definições
"Obra Derivada" significa uma Obra baseada na Obra ou na Obra e outras Obras pré-existentes,
tal qual uma tradução, adaptação, arranjo musical ou outras alterações de uma Obra literária,
artística ou científica, ou fonograma ou performance, incluindo adaptações cinematográficas ou
qualquer outra forma na qual a Obra possa ser refeita, transformada ou adaptada, abrangendo
qualquer forma reconhecível como derivada da original, com exceção da Obra que constitua uma
Obra Coletiva, a qual não será considerada uma Obra Derivada para os propósitos desta Licença.
Para evitar dúvidas, quando a Obra for uma Obra musical, performance ou fonograma, a sincronização
da Obra em relação cronometrada com uma imagem em movimento (“synching”) será considerada uma
Obra Derivada para os propósitos desta Licença.
"Obra Coletiva" significa uma coleção de Obras literárias, artísticas ou científicas, tais quais
enciclopédias e antologias, ou performances, fonogramas ou transmissões, ou outras Obras ou
materiais não indicados na Seção 1(g) abaixo, que em razão da seleção e arranjo do seu conteúdo,
constituam criações intelectuais nas quais a Obra é incluída na sua integridade em forma
não-modificada, juntamente com uma ou mais contribuições, cada qual constituindo separada e
independentemente uma Obra em si própria, que juntas são reunidas em um todo coletivo. A Obra
que constituir uma Obra Coletiva não será considerada uma Obra Derivada (como definido acima)
para os propósitos desta Licença.
"Distribuir" significa colocar à disposição do público o original e cópias da Obra ou Obra
Derivada, o que for apropriado, por meio de venda ou qualquer outra forma de transferência de
propriedade ou posse.
"Licenciante" significa a pessoa física ou jurídica que oferece a Obra sob os termos desta Licença.
"Autor Original" significa, no caso de uma Obra literária, artística ou científica, o indivíduo ou
indivíduos que criaram a Obra ou, se nenhum indivíduo puder ser identificado, a editora.
"Titular de Direitos Conexos" significa (i) no caso de uma performance os atores, cantores, músicos,
dançarinos, e outras pessoas que atuem, cantem, recitem, declamem, participem em, interpretem ou
façam performances de Obras literárias ou artísticas ou expressões de folclore (ii) no caso de um
fonograma, o produtor, sendo este a pessoa ou entidade legal que primeiramente fixar os sons de
uma performance ou outros sons; e (iii) no caso de radiodifusão, a empresa de radiodifusão.
"Obra" significa a Obra literária, artística e/ou científica oferecida sob os termos desta Licença,
incluindo, sem limitação, qualquer produção nos domínios literário, artístico e científico, qualquer
que seja o modo ou a forma de sua expressão, incluindo a forma digital, tal qual um livro, brochuras
e outros escritos; uma conferência, alocução, sermão e outras Obras da mesma natureza; uma
Obra dramática ou dramático-musical; uma Obra coreográfica ou pantomima; uma composição musical
com ou sem palavras; uma Obra cinematográfica e as expressas por um processo análogo ao da
cinematografia; uma Obra de desenho, pintura, arquitetura, escultura, gravura ou litografia; uma
Obra fotográfica e as Obras expressas por um processo análogo ao da fotografia; uma Obra de arte
aplicada; uma ilustração, mapa, plano, esboço ou Obra tridimensional relativa a geografia, topografia,
arquitetura ou ciência; uma performance, transmissão ou fonograma, na medida em que tais
Obras/direitos sejam reconhecidos e protegidos pela legislação aplicável; uma compilação de dados,
na extensão em que ela seja protegida como uma Obra sujeita ao regime dos direitos autorais; ou
uma Obra executada por artistas circenses ou de shows de variedade, conforme ela não for considerada
uma Obra literária, artística ou científica.
"Você" significa a pessoa física ou jurídica exercendo direitos sob esta Licença, que não tenha
previamente violado os termos desta Licença com relação à Obra, ou que tenha recebido permissão
expressa do Licenciante para exercer direitos sob esta Licença apesar de uma violação prévia.
"Executar Publicamente" significa fazer a utilização pública da Obra e comunicar ao público a Obra,
por qualquer meio ou processo, inclusive por meios com ou sem fio ou performances públicas digitais;
disponibilizar ao público Obras de tal forma que membros do público possam acessar essas Obras de um
local e em um local escolhido individualmente por eles; Executar a Obra para o público por qualquer
meio ou processo e comunicar ao público performances da Obra, inclusive por performance pública
digital; transmitir e retransmitir a Obra por quaisquer meios, inclusive sinais, sons ou imagens.
"Reproduzir" significa fazer cópias da Obra por qualquer meio, inclusive, sem qualquer limitação,
por gravação sonora ou visual, e o direito de fixar e Reproduzir fixações da Obra, inclusive o
armazenamento de uma performance protegida ou fonograma, em forma digital ou qualquer outro meio
eletrônico.
Para continuar lendo a licença
https://creativecommons.org/licenses/by/3.0/br/legalcode

View File

@ -1,2 +1,44 @@
# latent
Mod para Minetest que verifica o LAG dos jogadores
Latent v0.8-beta
================
Por BrunoMine
Um gestor de servidor de minetest
LICENÇA LGPL v3
Gestor é um software livre; você pode redistribuí-lo e/ou
modificá-lo dentro dos termos da Licença Pública Geral Menor GNU
como publicada pela Fundação do Software Livre (FSF); na versão 3
da Licença, ou (na sua opinião) qualquer versão.
Este programa é distribuído na esperança de que possa ser útil,
mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO
a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
Licença Pública Geral Menor GNU para maiores detalhes.
Você deve ter recebido uma cópia da Licença Pública
Geral Menor GNU junto com este programa,
se não, veja <http://www.gnu.org/licenses/>.
Texturas estão sob licença CC-BY 3.0
COMANDOS
/lag | Abre a lista de jogadores online e o LAG de cada um
REQUISITOS
- O jogo precisa estar compilado com RUN_IN_PLACE
INSTALAR
Esse mod verifica a latencia dos jogadores
Modo de Usar (Linux):
Defina a permissao 775 para o arquivo pingar.sh que está no mod
Comando usado seria:
$ chmod 775 pingar.sh

35
comandos.lua Normal file
View File

@ -0,0 +1,35 @@
--[[
Mod Latent para Minetest
Latent v0.8-beta 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 <http://www.gnu.org/licenses/>.
Comandos
]]
-- Abrir lista de jogadores exibindo a latencia no jogo (LAG)
minetest.register_chatcommand("lag", {
params = "[Nenhum]",
description = "Mostra uma lista de jogadores online e uma listagem de latencia",
func = function(name, param)
if name then
ver_players_online(name)
end
end
})
-- Comando de verificacao manual de ips
minetest.register_chatcommand("ips", {
params = "<jogador>",
description = "Verifica os ips dos jogadores online",
privs = {server=true},
func = function(name)
for _, player in ipairs(minetest.get_connected_players()) do
local pname = player:get_player_name()
local ip = minetest.get_player_ip(pname)
minetest.chat_send_player(name, pname.." ("..ip..")")
end
end,
})

0
depends.txt Normal file
View File

24
diretrizes.lua Normal file
View File

@ -0,0 +1,24 @@
--[[
Mod Latent para Minetest
Latent v0.8-beta 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 <http://www.gnu.org/licenses/>.
Diretrizes
]]
-- Numero de pings no ip (cada um demora 3 segundos)
PINGS = 1
-- Valor critico de latencia (em milissegundo) para enviar um aviso ao jogador
LATENCIA_CRITICA = 1000
-- Intervalo de tempo de verificação de latencias criticas (em segundos)
PAUSA_VERIFICAR_VALORES_CRITICOS = 45
-- Intervalo de tempo entre as verificações (em segundos)
PAUSA = 3

140
init.lua Normal file
View File

@ -0,0 +1,140 @@
--[[
Mod Latent para Minetest
Latent v0.8-beta 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 <http://www.gnu.org/licenses/>.
Funcionalidades basicas
]]
dofile(minetest.get_modpath("latent") .. "/diretrizes.lua") -- Carregar Diretrizes.
-- Tempo gasto verificando um IP (em segundos)
local TEMPO_VERIFICANDO = ((PINGS * 3) + 3)
-- Diretorio do mundo/mapa
local dirmapa = string.gsub(minetest.get_worldpath(), "(% +)", "\\ ")
-- Diretorio do mod
local dirmod = string.gsub(minetest.get_modpath("latent"), "(% +)", "\\ ")
-- Lista de jogadores online
local lista = {}
-- Ler resultado do ping
local function ler_ping(ip, slot)
local entrada = io.open(minetest.get_worldpath() .. "/latent_ping" .. slot, "r")
local leitura = tonumber(entrada:read("*l"))
if leitura ~= nil then
lista[ip] = leitura -- Escreve o novo valor de ping no ip
io.close(entrada)
end
end
-- Pingar um ip
local function pingar(ip, slot)
if ip then
os.execute(dirmod.."/pingar.sh "..PINGS.." "..ip.." > "..dirmapa.."/latent_ping"..slot.." &")
minetest.after(TEMPO_VERIFICANDO, ler_ping, ip, slot)
end
end
-- Atualizar lista
local function atualizar_lista()
local slot = 1
for _, player in ipairs(minetest.get_connected_players()) do
local ip = minetest.get_player_ip(player:get_player_name())
pingar(ip, slot)
slot = slot + 1
end
minetest.after(TEMPO_VERIFICANDO+PAUSA, atualizar_lista)
end
-- Retira da lista o jogador que sair do servidor
minetest.register_on_leaveplayer(function(player)
local Nlista = {}
for _, player in ipairs(minetest.get_connected_players()) do
local ip = minetest.get_player_ip(player:get_player_name())
Nlista[ip] = lista[ip] -- Repassa os ips de quem está online
end
lista = Nlista
end)
-- Adiciona na lista o jogador que entrar no servidor
minetest.register_on_joinplayer(function(player)
lista[minetest.get_player_ip(player:get_player_name())] = tonumber(0)
end)
-- Funcao de concatenar valores
local function explode(sep, input)
local t={}
local i=0
for k in string.gmatch(input,"([^"..sep.."]+)") do
t[i]=k
i=i+1
end
return t
end
local function get_max_lag() -- pega o lag do servidor
local arrayoutput = explode(", ",minetest.get_server_status())
local arrayoutput = explode("=",arrayoutput[4])
return arrayoutput[1]
end
-- Funcao de ver players online
function ver_players_online(name)
local texto = ""
local name1 = ""
for _,player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name()
if texto ~= "" then
texto = texto..","..name
else
texto = name
name1 = name
end
if tonumber(lista[minetest.get_player_ip(name)]) ~= nil then
if tonumber(lista[minetest.get_player_ip(name)]) > 1 then
texto = texto.." ("..lista[minetest.get_player_ip(name)].."ms)"
end
end
end
local lag_server = get_max_lag()
local t = string.split(lag_server, ".")
lag_server = tonumber(t[1])
minetest.chat_send_all(texto)
minetest.show_formspec(name, "", "size[7,10]"..
"bgcolor[#080808BB;true]"..
"textlist[0,1.5;6.7,6;;"..texto..";0;true]"..
"image[-0.8,0.6;1,1;latent_players.png]"..
"label[0,0.5;LAG do Servidor "..lag_server.."ms\nJogadores Online nesse momento]"..
"button_exit[5,0.5;2,1;;Voltar]"
)
end
-- Verificar valores criticos de latencia
local function verificar_valores_criticos()
for _,player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name()
local ip = minetest.get_player_ip(name)
if lista[ip] then
if tonumber(lista[ip]) >= LATENCIA_CRITICA then
minetest.chat_send_player(name, "[AVISO] Sua conectividade esta muito ruim. Isso Pode afetar severamente a sua jogabilidade")
end
end
end
minetest.after(PAUSA_VERIFICAR_VALORES_CRITICOS ,verificar_valores_criticos)
end
dofile(minetest.get_modpath("latent") .. "/comandos.lua") -- Carregar Comandos.
-- Iniciando loops de verificacao
atualizar_lista()
verificar_valores_criticos()

22
pingar.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
MEDIA=0
# INFORMACOES
# O primeiro valor é o número de pings
# O segundo valor é o endereço IP que vai receber o ping
# O tempo de cada repeticao pode demorar até 2 segundos
# somasse 3 segundos para o relatorio de ping ser criado
# Retorna 0 caso o IP não seja encontrado
for i in $(seq $1); do
SAIDA=`ping -c 1 -w 3 $2 | grep time= | awk -F"=" '{print $4}'`;
SAIDA="${SAIDA%.*}"
SAIDA="${SAIDA%ms}"
MEDIA=$((SAIDA+MEDIA))
done
MEDIA=$((MEDIA/$1));
MEDIA=$((MEDIA+1));
echo ${MEDIA}

BIN
textures/latent_players.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB