[TUTORIAL] Monitorar suas Skills em tempo real pelo Celular

Bem-vindo!

Ao se registrar conosco, você poderá discutir, compartilhar e enviar mensagens privadas com outros membros da nossa comunidade.

Inscreva-se agora!
Status
Não está aberto para novas respostas.

HalloStar

Bom
Administração
Entrou
Out 13, 2015
Mensagens
468
Cubos
0
Monitore sua conta na palma da mão.

Problema
Após tanto sofrer com contas que assim que eu saia de casa paravam de upar, decidi criar um projeto que traz receber mensagens em tempo real. Ou a caráter do tempo que achar necessário via mensagens de Telegram (ou quaisquer locais que utilizem API).

Objetivo
Conseguir acompanhar tem tempo real minhas skills de qualquer local, até mesmo do trabalho.

Solução
Desenvolver um projeto que integre tanto o Mod macro e um script que processa e envia para um grupo do Telegram, após conversas com o @lomexicano me deu algumas dicas de qual a lógica a ser realizada in-game.

Vamos ao que interessa e como funciona?

  1. Utilizar o mod Macro para coletar a informação das skills, selecionar e dar output em um arquivo.
  2. Um script em PowerShell que faz o processamento das informações, como encontrar, processar, enviar e por fim fazer um controle do arquivo a cada 20 execuções apaga o conteúdo.
Resultado
C7Q0Sfs.png




Como Usar
Etapa 01 - Instalando os macros dentro do Game.
  1. Você deve criar no seu modpack os macros abaixo
  2. $$<telegram_star.txt>
  3. Adicione um novo arquivo onChat, $$<starTelegramOnChat.txt> lembre-se de não mexer no existente, caso exista -> (Como ter mais de um? Clique aqui)
  4. Após isto adicione nos arquivos criados os códigos disponíveis abaixo.
  5. LEMBRE-SE DE ALTERAR NA MACRO $$<telegram_star.txt> o /inspect <nomePlayer> por /stats ou inserir nome do jogador desejado.
Código macro keyBind mencionada acima.
$${
if(@telegram_star);
unset(@telegram_star);
ACHIEVEMENTGET("Telegram Star OFF",diamonds);
log(" ");
log("&e&l[&r&fTELEGRAM &2STAR] &c&lOFF&f&r!");
log(" ");
else;
ACHIEVEMENTGET("Telegram STAR ON",diamonds);
CLEARCHAT;
//echo("/stats");
set(@telegram_star;
log(" ");
log("&e&l[&r&fTELEGRAM &2STAR] &a&lON&f&r!");
log(" ");

do;
wait(10);

echo("/inspect <nomePlayer>");
while(@telegram_star == true);
endif;
//Fim da verificação da variavel Setada;
}$$



Código macro OnChat mencionada acima.
$${
if(@telegram_star);
ifmatches(%CHATCLEAN%,"Escava.ao: (.*)");
MATCH(%CHATCLEAN%,"Escava.ao: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] ==================================");
logto("arquivo.txt","[%DATE%][%TIME%] -=SKILLS DE TRABALHO-=");
logto("arquivo.txt","[%DATE%][%TIME%] Escavacao: %&lvl% XP(%&xp1% / %&xp2%)");
endif;

ifmatches(%CHATCLEAN%,"Pescador: (.*)");
MATCH(%CHATCLEAN%,"Pescador: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Pescador: %&lvl% XP(%&xp1% / %&xp2%)");
endif;

ifmatches(%CHATCLEAN%,"Herbalismo: (.*)");
MATCH(%CHATCLEAN%,"Herbalismo: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Herbalismo: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Minera..o: (.*)");
MATCH(%CHATCLEAN%,"Minera..o: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Mineracao: %&lvl% XP(%&xp1% / %&xp2%)");
endif;

ifmatches(%CHATCLEAN%,"Lenhador: (.*)");
MATCH(%CHATCLEAN%,"Lenhador: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Lenhador: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Machado: (.*)");
MATCH(%CHATCLEAN%,"Machado: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] -=SKILLS DE COMBATE-=");
logto("arquivo.txt","[%DATE%][%TIME%] Machado: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Arqueiro: (.*)");
MATCH(%CHATCLEAN%,"Arqueiro: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Arqueiro: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Espadas: (.*)");
MATCH(%CHATCLEAN%,"Espadas: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Espadas: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Acrobacia: (.*)");
MATCH(%CHATCLEAN%,"Acrobacia: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] -=MISC SKILLS-=");
logto("arquivo.txt","[%DATE%][%TIME%] Acrobacia: %&lvl% XP(%&xp1% / %&xp2%)");
endif;
ifmatches(%CHATCLEAN%,"Repara..o: (.*)");
MATCH(%CHATCLEAN%,"Repara..o: (.*) XP.(.*)/(.*).",{&lvl,&xp1,&xp2});
logto("arquivo.txt","[%DATE%][%TIME%] Reparacao: %&lvl% XP(%&xp1% / %&xp2%)");
endif;

endif;//Fim da macro só executa se a outra macro estiver On.

}$$




Etapa 02 - Script em PowerShell
Bem nesta etapa é necessário conhecimento básico sobre PowerShell e sobre bots.

Para envio é utilizado uma função API do próprio
Telegram feito por intermédio de bots.


  1. Deve-se criar um BOT usando o BotFather por exemplo -> tutorial outro
    1. Crie um bot escrevendo /newbot no contato https://t.me/botfather no telegram
    2. Guarde o token que será gerado
    3. Descubra o ID da sua conta de Telegram mandando /start para o bot @GetIDsBot no Telegram



  2. Alterar as variáveis de acordo com seu cenário $botToken, $chatId, $arquivo.
  3. Se atente para a váriavel $arquivo = "arquivo.txt" ela vai direcionar onde se encontra o arquivo gerado pelas macros.
arquivo.txt deve-se encontra na pasta .minecraft/mods/macros/logs.

A pasta logs por padrão não existe, porém, assim que executado o Macro irá criar.
OBS: deixe o script powershell como mostrado na imagem ou então altere a variável arquivo no script.

8IYJjQd.png


Clique abaixo para obter o código do Script PowerShell
# Configurações
$botToken = "6397064394:AAFqhzc_f8gnVK5g2lSV08CCcJu7K30Tuos"
$chatId = "-1001948145831"

# Caminho do arquivo de texto
$arquivo = "arquivo.txt"
#após quantos envios deletar os registros.
$quantApagar = 4




#variaveis não mexer
$condicaoAnterior = 0
$contador = 0
while ($true) {
# Lê o conteúdo do arquivo
$conteudo = Get-Content $arquivo

#Conta quantas vezes tem essa palavra dentro do arquivo;
$condicao = ($conteudo | Select-String -Pattern "Pescador:").Count

#Se a quantidade mudar de uma vez para a outra entra aqui e executa
if ($condicao -gt $condicaoAnterior) {

$selectPesca = ($conteudo | Select-String -Pattern "Pescador:")
$pesca = $selectPesca | Select-Object -Last 1
$pescador = [regex]::Match($pesca, ' (.*)').Value

$selectEscava = ($conteudo | Select-String -Pattern "Escavacao:")
$escava = $selectEscava | Select-Object -Last 1
$escavacao = [regex]::Match($escava, ' (.*)').Value

$selectHerba = ($conteudo | Select-String -Pattern "Herbalismo:")
$herba = $selectHerba | Select-Object -Last 1
$herbalismo = [regex]::Match($herba, ' (.*)').Value

$selectMiner = ($conteudo | Select-String -Pattern "Mineracao:")
$miner = $selectMiner | Select-Object -Last 1
$mineracao = [regex]::Match($miner, ' (.*)').Value

$selectLenha = ($conteudo | Select-String -Pattern "Lenhador:")
$lenha = $selectLenha | Select-Object -Last 1
$lenhador = [regex]::Match($lenha, ' (.*)').Value

#Skills de combate
$selectMachado = ($conteudo | Select-String -Pattern "Machado:")
$machado = $selectMachado | Select-Object -Last 1
$machado = [regex]::Match($machado, ' (.*)').Value

$selectArqueiro = ($conteudo | Select-String -Pattern "Arqueiro:")
$arqueiro = $selectArqueiro| Select-Object -Last 1
$arqueiro = [regex]::Match($arqueiro, ' (.*)').Value

$selectEspadas = ($conteudo | Select-String -Pattern "Espadas:")
$espadas = $selectEspadas| Select-Object -Last 1
$espadas = [regex]::Match($espadas, ' (.*)').Value

#Misc Skills
$selectAcro = ($conteudo | Select-String -Pattern "Acrobacia:")
$acrobacia = $selectAcro| Select-Object -Last 1
$acrobacia = [regex]::Match($acrobacia, ' (.*)').Value

$selectRep = ($conteudo | Select-String -Pattern "Reparacao:")
$reparacao = $selectRep| Select-Object -Last 1
$reparacao = [regex]::Match($reparacao, ' (.*)').Value


#contabiliza os retornos
$condicaoAnterior = $condicao
#contador para delimitar drop do arquivo e não inchar.
$contador++
Write-Host "Registro encontrado numero -> [$contador]"
Write-Host "Registro encontrado numero -> [$contador]"
Write-Host "Registro encontrado numero -> [$contador]"


#após 3 execuções apagamos o arquivo
if ($contador -ge $quantApagar) {
# Lê o conteúdo do arquivo e apaga.
$conteudo = Get-Content $arquivo
# Apagar o conteúdo do arquivo
Set-Content $arquivo ""

Write-Host "Arquivo foi apagado. /[$contador]\ executado."

$condicaoAnterior = 0
$contador = 0;
}

$mensagem = "
Relatorio de Skills

-=-SKILLS DE TRABALHO-=-
$escavacao
$pescador
$herbalismo
$mineracao
$lenhador

-=-SKILLS DE COMBATE-=-
$machado
$arqueiro
$espadas

-=-MISC SKILLS-=-
$acrobacia
$reparacao
"


Invoke-WebRequest "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=$mensagem"
Write-Host "Novo Registro encontrado, enviando para telegram."

}else{

Write-Host "Nada de novo por aqui, volte depois."
}
#Verificação a cada 10 segundos, caso queira alterar, mude o número 10
Start-Sleep -Seconds 10
}

FAQ - Perguntas e respostas
  1. Como adicionar macros? -> Clique aqui
  2. PowerShell não está executando, como fazer? - > Clique aqui
  3. Não consigo criar um grupo e adicionar o Bot, oque fazer? -> Clique aqui
 
Status
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo