Bug de arquivo depurador corrigido
O arquivo de debug.txt não estava sendo encontrado devido a um erro de caminhosmaster
parent
20d271d50f
commit
c769c4e78d
|
@ -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
|
46
README.md
46
README.md
|
@ -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
|
||||
|
||||
|
|
|
@ -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,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
|
||||
|
||||
|
|
@ -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()
|
|
@ -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}
|
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
Loading…
Reference in New Issue