Ir para conteúdo

[Mod - Sistema] Mensagens OFFLINE


drakylucas

Posts Recomendados

Olá amiguinhos!

 

Peguei o sistema do Ghandi (de outro fórum, polones) e dei uma limpada nele, adaptando-o a meu gosto e agora vou posta-lo.

 

 

Créditos: Ghandi e Draky Lucas

 

 

Como funciona?

Apenas digite /msg NicknameDoPlayer, sua mensagem aqui

exemplo:

/msg Draky Lucas, iae carinha que mora logo ali, blz? saudades brother! ^^

 

 

dae o jogador Draky Lucas receberia isso:

14:34 [30.03.2013 14:30:40] Draky: iae carinha que mora logo ali,blz? saudades brother! ^^

(Draky é o nick do char que enviou a mensagem)

 

Instalação:

Em Mods, crie um arquivo chamado Msgoffline.xml e nele coloque isso:

 

 

<?xml version="1.0" encoding="iso-8859-1"?>
<mod name="Mensagens offline" version="1.0" author="Draky Lucas / Ghandi" contact="XTibia" enabled="yes">
<config name="configuracao_offlinemsg"><![CDATA[
  pasta = "data/logs/offline_msg/" -- local onde salvará as mensagens
  delay = 750 -- tempo em milisegundos entre mensagens

		-- nao mecha
  formatoString = '[%s] %s: %s' -- data, autor, mensagem
  formatoData = '%d.%m.%Y %H:%M:%S' -- dia mes ano hora minuto segundo

		function sendLine(cid, msgType, filename)   -- Função by Ghandi
if(not isPlayer(cid)) then -- nao dar erro caso o player deslogue
 return false
end
local file = io.open(filename, 'r')
if(not file) then
 return false
end
local first, str = true, ''
for line in file:lines() do
 if(first) then
  doPlayerSendTextMessage(cid, msgType, line)
  first = false
 else
  str = str .. line .. '\n'
 end
end
file:close()
if(str ~= '') then
 file = io.open(filename, 'w')
 file:write(str)
 file:close()

 addEvent(sendLine, delay, cid, msgType, filename)
else
 os.remove(filename)
end
  end   -- function sendLine

]]></config>

<talkaction words="/msg" event="buffer"><![CDATA[
 domodlib("configuracao_offlinemsg")
 local params, player = string.explode(param, ","), 0
 if(#params <= 1) then
  doPlayerSendTextMessage(cid, 19, "sem parametros\n digite /msg Nickname, Sua mensagem\n")
  doPlayerSendTextMessage(cid, 19, "Exemplo:\n/msg Draky Lucas, iae fera, blz?")
  return true
 end
 player = db.getResult('SELECT `name`, `online` FROM `players` WHERE `name` = "' .. params[1] .. '";')
 if(player:getID() == -1) then
  return doPlayerSendTextMessage(cid, 19, "Esse jogador não existe!")
 end

 table.remove(params, 1) -- remover o nick do jogador, para salvar só a mensagem
 if(player:getDataInt('online') == 1) then
  local target = getPlayerByNameWildcard(player:getDataString('name'))
  if(isPlayer(target)) then -- evitar bugs
			doPlayerSendTextMessage(target, 27, formatoString:format(os.date(formatoData), getCreatureName(cid), "Mensagem enviada!"))
doPlayerSendTextMessage(target, 27, formatoString:format(os.date(formatoData), getCreatureName(cid), table.concat(params, ",")))  
		else
doPlayerSendTextMessage(cid, 19, "Ocorreu um erro:\nJogador não encontrado.")
  end
  return true
 end

 local file = io.open(pasta .. player:getDataString('name') .. '.txt', 'a+')
 if(not file) then
  doPlayerSendTextMessage(cid, 19, "Sua mensagem não pode ser enviada a todos os destinarios. Desculpe-nos!")
  return true
 end
 file:write(formatoString:format(os.date(formatoData),getCreatureName(cid), table.concat(params, ",")) .. '\n')
 file:close()

 doPlayerSendTextMessage(cid, 27, "Sua mensgem foi enviada ao jogador " ..player:getDataString('name').. "!")
 player:free()
 return true
]]></talkaction>

<creatureevent name="offlinemsglogin" type="login" event="buffer"><![CDATA[
 domodlib("configuracao_offlinemsg")
  addEvent(sendLine, delay, cid, 27, pasta .. getCreatureName(cid) .. ".txt")
 return true
]]></creatureevent>
</mod>

 

 

 

Depois disso, na pasta Data/Logs crie uma pasta chamada offline_msg

 

 

Reinicie o servidor e teste! ^^

 

 

Gostou? REP+ e COMENTE!

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

  • 2 weeks later...
  • 3 weeks later...
×
×
  • Criar Novo...