* Autor: Obex Sys
* Tested on: TFS 0.3.6
* Requerimento:
o Lua socket > Lua modules > download aki
o Conta no Yahoo mail
Depois de postar tweets agora você pode enviar email para seus players, Não pense que é igual outros sevrer que você fala !email e ve o email pelo jogo, dessa vez você envia um email para os players do seu server! ai eles vão no hotmail, gmail o que for e leem o email
Primeiro vou falar como fiz. Eu usei o server SMTP do yaddo. É de graça qualquer um que tiver conta no yahoo pode usar. Se quiser mudar para outro servidor SMTP pode mudar, só nao mude pro SMTP do gmail por que ele usa SSL (Secure Socket Layer) e o script nao suporta isso.
Primeiro crie uma conta no yahoo, depois instale o lua modules.
Agora adcione isso no talkactions.xml
<talkaction log="yes" words="/email" access="5" event="script" value="email.lua"/>
E em email.lua isso:
Lua:
--[[Config]]
local config={
--Email/pass
user = 'seu_email@yahoo.com.br',
pass = 'suasenha123',
---SMTP config
smtpserver="smtp.mail.yahoo.com.br", -- dont change it
smtpport= 587, -- dont change it
}
--Script By Obex SyS
local mime = require("mime")
local smtp = require("socket.smtp")
dofile('config.lua')
config.username = serverName
function send_mail(cid,mesgt,config,to)
local _, err = smtp.send {
from = '<'..config.user..'>',
rcpt = '<'..to..'>',
source = mesgt,
user = config.user,
password = config.pass,
server = config.smtpserver,
port = config.smtpport,
domain = 'yahoo.com.br',
}
if not err then
addEvent(doPlayerSendTextMessage,100,cid,25,'Email sent')
else
addEvent(doPlayerSendTextMessage,100,cid,25,'Canno t send email: '..tostring(err))
end
end
function getPlayerEmailByName(e) -- Function by ObeX SyS
local cid = getPlayerByName(e)
if not cid or not isPlayer(cid) then
return false
end
local f = db.getResult('select `email` from accounts where id = '..getPlayerAccountId(cid))
if f:getID() ~= -1 then
return f:getDataString('email'),f:free()
else
return false
end
end
function onSay(cid, words, param, channel)--Script By ObeX SyS
if not smtp then
doPlayerSendTextMessage(cid,25,'Install lua socket.')
return true
end
local email,sub,msg = param:match('(.-@?.?)%s*,%s*(.-)%s*,%s*(.+)')
if not email:find('@') then
email = getPlayerEmailByName(email)
end
if sub and msg then
if not email or email:len() < 3 then
doPlayerSendTextMessage(cid,25,'Invalid email.')
return true
end
doPlayerSendTextMessage(cid,25,('Sending email to %s\nSubject:%s\nBody:%s'):format(email,sub,msg))
local mesgt = smtp.message({
headers = {
from = config.username.." "..'<'..config.user..'>',
to = '<'..email..'>',
subject = sub,
},
body = mime.eol(0, ([[%s
%s
Sent by: %s
-----------------------------------
Script by ObeX SyS
-----------------------------------]]):format(msg or '',serverName or '-',getCreatureName(cid))),
})
addEvent(send_mail,200,cid,mesgt,config,email)
else
doPlayerSendTextMessage(cid,25,'Use like this: /email name@hotmail.com, Subject, Message')
end
return true
end
Não esqueça de configurar!
Agora basta usar o comando. Você pode usar assim:
* /email ObeX SyS,Assunto,Mensagem
* /email gatinlp@hotmail.com,Assunto,Mensagem
No começo eu falei para baixar o o Lua socket,Lua modules então vou colocar o download.
Esse é um sistema simples que eu fiz apenas para facilitar a instalação de LuaSocket e outras libs em seu server, é como uma OTAL so que comprimida e restrita à apenas exteções em lua, podendo ser de GD ou se quiser inutilmente lua interface, se quiser pode criar modulos eu tenho um exemplo.
O sistema é uma pasta com um XML que você define quais LIBS quer em seu server, você poe la exemplo, socket, depois baixa o lua socket e joga na pasta modules/scripts.
Vamos lá!
O sistema foi testado e funciona em QUALQUER servidor, o que pode afetar o funcionamento é sua instalação.
Instalação
1º - Baixe o arquivo anexado ao topico.
2º - Coloque a pasta modules na pasta data do seu server.
3º -
Se você usa TFS 0.3.6 ponha o arquivo modules.lua em data/lib
-----------
Se você usa TFS 0.3.5 ou menores coloque o arquivo modules.lua em data/lib e em data.lua coloque isso:
dofile('data/lib/modules.lua')
-----------
Se você usa Open Tibia coloque o modules.lua na pasta data e abra o global.lua e ponha isso:
dofile('data/modules.lua')
-----------
4º - Reload e pronto!
Apos instalar vamos a um exempl ode como cirar um modulo.
Lua:
--[[
Como cirar um modulo
]]
--Isso aqui é pra economizar memoria, vc define tudo q vai usar
local string = require("string")
local base = _G
-- aqui vc poe o nome do modulo (o noem tem que ser igual do arquivo sem o .lua)
module('example')
--Versao
_VERSION = "Example lib 1.0"
-- As funçoes aki
function myprint(...) --example.myprint
local arg = {...}
for i,b in base.pairs(arg) do
io.write(tostring(b))
if i ~= #arg then
io.write(', ')
end
end
end
function array(...) -- example.array
return {...}
end
function replace(s,m,d) --example.replace
return s:gsub(m,d)
end
Ai é so jogar na pasta modules/scripts e adcionar isso no modules.xml
Código:
<module name="example"/>
Example é o nome do modulo
Site para download de libs Lua forge
Libs recomendadas:
* GD
* lua file system
Como instalar modulos
Primeiro baixe o modulo
Vou usar como exemplo LUAGD http://luaforge.net/frs/download.php...33r2-win32.zip (1.6mb)
Código:
<module name="gd"/>
Quando terminar abra o .zip e abra a pasta, dentro vai ter VARIOS arquivos. Copie todas as DLLs e cole na pasta data/modules/scripts e depois adcione essa TAG no modules.xml
Arquivos Anexados
Tipo de Arquivo: zip modules.zip (1,02 MB, 112 visitas)
Espero que tenho o ajuda-do
Att ObeX SyS