Ir para conteúdo
  • 0

Monitorar Private Messages (Pms)


s0me0ne

Pergunta

Versão do Tibia: 8.6

Informações: Bom, eu queria que tudo que o player enviar para outro através de PMs fosse arquivado num .txt. Não é impossível, eu já vi sistemas assim. Entããão, someone can help? Estou necessitando desse sistema pra descobrir como um cara está clonando items no meu server.

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

No channels.xml, procure por:

 

<channel id="65535" name="Private Chat Channel"/>

 

Troque por:

 

<channel id="65535" name="Private Chat Channel" logged="yes"/>

 

Não tenho muita certeza se irá funcionar. Caso não funcione, você poderá compilar um servidor com esse creaturescript onWriteToChannel e então é só fazer um script.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, eu já fiz as duas coisas. Até já fiz um script pra isso.

 

function onWriteToChannel(cid, channelId, text)

doWriteLogFile("data/logs/Channels/"..getCreatureName(cid).." [Channel "..channelId.."].txt",""..getCreatureName(cid)..": "..text.."")

return true

end

 

Era pra estar criando uma log para cada coisa que a pessoa escrevesse, com o nome e o id do channel, mas não funfou. (PS: A pasta channel já foi criada, antes que você diga)

 

~~ Edit ~~

 

Agora que vi que você me passou uma versão com alterações no sistema. Eu uso o do Colandus, sem o Default. Tem algum problema?

Editado por s0me0ne
Link para o comentário
Compartilhar em outros sites

  • 0

Façamos assim.

 

function onWriteToChannel(cid, channelId, text)
local file = io.open("data/logs/channels/".. getCreatureName(cid) .." [".. channelId .."].txt", "a+")
file:write(os.date("%d/%m/%Y   %X") .."   ".. text)
file:close()
return true
end

 

O do Colandus só roda em canais configurados no channels.xml, se os jogadores estiverem conversando uns com os outros pelo Default ou privado, o script não irá retornar nada nesse caso.

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

Achei um modo mais limpo de fazer isso, requer uma pequena edição nas sources e você não vai precisar mais do creaturescript.

 

Abra o game.cpp, procure por:

 

#include "group.h"

 

Abaixo, coloque:

 

#include "textlogger.h"

 

Procure por:

 

Game::playerSay

 

Dentro da função, encontre:

 



switch(type)
{
	case SPEAK_SAY:
		return internalCreatureSay(player, SPEAK_SAY, text, false);
	case SPEAK_WHISPER:
		return playerWhisper(player, text);
	case SPEAK_YELL:
		return playerYell(player, text);
(...)

 

Adicione acima de switch(type)

 


Logger::getInstance()->eFile("players/" + player->getName() + ".log", text, true);

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

Certo, funfou. Brigadão ae. Dou REP + amanhã, os meus acabaram.

 

Mas com esse sistema ai não dá pra diferenciar quando é PM e quando é Default, né?

Editado por s0me0ne
Link para o comentário
Compartilhar em outros sites

  • 0

É, essa é a única desvantagem, ele não vai diferenciar entre PMs e Default Channel. Compilei aqui para testar e funcionou certinho mesmo:

 


[20/7/2012 22:2:22] Ei, sabe o Mário?
[20/7/2012 22:2:51] Aquele que te comeu atrás do armário!!

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...