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!