VA

Sistema Email System 1.2

Por Vampirinhoo, 26 de set. de 2010 em Actions e Talkactions

otserv
tibia
script
7
2.9k
VampirinhooV
26 de setembro de 2010 às 07:16

* 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 :tongue:

Editado Setembro 26 por Vampirinhoo

brunin86B
26 de setembro de 2010 às 18:10

Gostei :D tava precisando de 1 desse, vlw por postar ^^ REP+

DevilMoonD
29 de setembro de 2010 às 00:50

que lixo de script..

n é util..

joaohdJ
29 de setembro de 2010 às 07:28

Este script é de sua autoria? Tenho quase certeza que o autor é o mock... Caso não seja seu, coloque os créditos.

 

 

 

Link do tópico do mock : Concorrencia

 

 

flw

DevilMoonD
29 de setembro de 2010 às 10:19

Esses nego hj em dia cada vez + noob, pega o script do nego posta aki no xtibia nao pede autorizaçao e nem coloca creditos e Rippa Mapps ainda =)

 

 

Vou Alertar o Mock ve se ele Autorizou postar aqui, Pq se nao tu vai te ferra mlk ^^

e o Mock nao deicha qualquer 1 Postar!!

 

Bjos :*

1 mês depois...
FortesF
06 de outubro de 2010 às 13:13

muito interessante este script.. vou usar em meu servidor com certeza =]

6 meses depois...
LukasScottL
10 de abril de 2011 às 17:20

podia gastar seu tempo em um script melhor

script bom mais poca utilidade

bom trabalho

 

Aprovado