Boa Mock, adoro seus scripts cara, você é bem criativo. =)
Achei legal usar esse script em quests é uma boa colocar alguns pisos falantes nas quests mais dificeis.. =]
Por Mock, 11 de mai. de 2010 em Globalevents e Spells
info
Grupo: Herói
Registrado: 25/06/08
Posts: 723
Reputação: +275
Gênero: Masculino
Char no Tibia: Diiva

Boa Mock, adoro seus scripts cara, você é bem criativo. =)
Achei legal usar esse script em quests é uma boa colocar alguns pisos falantes nas quests mais dificeis.. =]
Editado Maio 11 por DoidinMapper
boa mock,gostei,apesar da 1.0 ser boa,essa é sem comparaçao.
info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain

a 1.0 era isso:
function ae()
doSendAnimatedText({x=....},'dragon',123)
....
addEvent(ae,1000)
end
function onUse(cid...)
addEvent(ae,1000)
return true
end
essa é 100% melhor a 3.0, só parece ser complicada mais nem é
info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain
Antes de tudo o primeiro sistema de TPs falantes foi eu que fiz em um server chamado limao server, em seguida postei usando addEvent. Depois fiz com globalevent igual a um cara de outro topico. ai depois disso espalharam-se rippings e versoes melhoradas. entao lancei a final bem melhor que dessa vez vc nao é limitado a 9 letras por TP, dessa vez vc pode por seu texto, (ocorre algumas pequenas falhas no texto espaços amais mais é so editar)
Author="Mock" Versao="3.0" Testado = {"Open tibia","DBOT","TFS"}Bem essa é a versão 3.0 do meu script que mais fem sucesso e mais foi ripado, depois de uma leve discução em otro forum por causa de umas 5 versoes dele ripado (a 1.0 e a 2.0) decidi lançar logo a 3.0 para calar a boca desse povo ._.'
A diferença desse para o outro que este pode rodar em qualquer vsersao, de otservers 8.1 a otserver de hoje, usando globalevent ou nao. e tambem pode-se rodar funções, existe a possibilidade de por chance em cada efeito para nao sair sempre, tambem a possibilidade de mandar efeitos de texto com mais de 9 letras assim:
Vou dividir o topico em 2 partes, a primeira para servidores com globalevent, e a segunda para os que nao tem, e no final ensino a configurar.
Com globalevent
Bom ja que seu servidor tem globalevest adcione esta tag no globalevents.xml:
Feito isso crie o arquivo show.lua e nele ponha isso:
---------------------------- --------Talkting TPS 3.0 --- ---------- By mock --------- --dont remove the credists-- ---------------------------- clolortypes = { {kind=2,chance=100,{x=100,y=100,z=7},'Haha i can say ma ny words with this script ;D ---By mock ',255}, -- kind (text), chance 100%,pos,Text,color {kind=3,chance=98,{x=100,y=100,z=7},{x=102,y=102,z=7},CONST_ANI_SPEAR}, -- kind(distance), chance 98%, frompos, topos, distance {kind=4,chance=10,function() --- kind(function), chance 10%, function local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end}, {kind=1,chance=20,{x=100,y=100,z=7},CONST_ME_WATERCREATURE}, -- kind (effect), chance 20%, pos, effecttype } function animatedTextBig(pos,letters,color)-- by Mock local pos2 = {x=pos.x,y=pos.y,z=pos.z} local m = 10 local c = math.floor(#letters/m) local ac = 0 for i=1,c+1 do ac = i local l1 = ((i-1)*m) local l2 = (m*(i))-1 doSendAnimatedText(pos2,letters:sub(l1,l2), color) pos2.x = pos2.x+1 end return ac end function run_it() for i=1,#clolortypes do if clolortypes[i].kind == 1 then if clolortypes[i].chance >= math.random(1,100) then doSendMagicEffect(clolortypes[i][1],clolortypes[i][2]) end elseif clolortypes[i].kind == 2 then if clolortypes[i].chance >= math.random(1,100) then animatedTextBig(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 3 then if clolortypes[i].chance >= math.random(1,100) then doSendDistanceShoot(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 4 then if clolortypes[i].chance >= math.random(1,100) then xpcall(clolortypes[i][1](),false) --- para nao parar o evento end end end end function onThink(interval, lastExecution) run_it() return TRUE endTerminado? entao pronto ^^
siga para a tutorial de configuação no final do topico.
--------------------------------------------------------------
Sem globalevent -open tibia
Ja que seu server nao tem globalevent temos que criar algo como ele ^^
entao vamo usar uma coisa chamada recursividade que é isso:
a função se chama e nao para de executar, mais para isso ela deve ser chamada uma vez. entao vamos chama-la uma vez usando talkactions? pode-se usar actions basta chamr ela assim:
run_it()
Mais em fim vamos ensinar a fazer por talk.
Va em talkactions.xml e adcione esta tag
(note que a tag esta na versao antiga pois servers sem globalevent ainda tem esse sistema padrão)
Agora em talkactions crie o show.lua e ponha isso:
---------------------------- --------Talkting TPS 3.0 --- ---------- By mock --------- --dont remove the credists-- ---------------------------- clolortypes = { {kind=2,chance=100,{x=100,y=100,z=7},'Haha i can say ma ny words with this script ;D ---By mock ',255}, -- kind (text), chance 100%,pos,Text,color {kind=3,chance=98,{x=100,y=100,z=7},{x=102,y=102,z=7},CONST_ANI_SPEAR}, -- kind(distance), chance 98%, frompos, topos, distance {kind=4,chance=10,function() --- kind(function), chance 10%, function local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end}, {kind=1,chance=20,{x=100,y=100,z=7},CONST_ME_WATERCREATURE}, -- kind (effect), chance 20%, pos, effecttype } function animatedTextBig(pos,letters,color)-- by Mock local pos2 = {x=pos.x,y=pos.y,z=pos.z} local m = 10 local c = math.floor(#letters/m) local ac = 0 for i=1,c+1 do ac = i local l1 = ((i-1)*m) local l2 = (m*(i))-1 doSendAnimatedText(pos2,letters:sub(l1,l2), color) pos2.x = pos2.x+1 end return ac end function run_it() local delay = 1 -- seconds for i=1,#clolortypes do if clolortypes[i].kind == 1 then if clolortypes[i].chance >= math.random(1,100) then doSendMagicEffect(clolortypes[i][1],clolortypes[i][2]) end elseif clolortypes[i].kind == 2 then if clolortypes[i].chance >= math.random(1,100) then animatedTextBig(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 3 then if clolortypes[i].chance >= math.random(1,100) then doSendDistanceShoot(clolortypes[i][1],clolortypes[i][2],clolortypes[i][3]) end elseif clolortypes[i].kind == 4 then if clolortypes[i].chance >= math.random(1,100) then xpcall(clolortypes[i][1](),false) --- para nao parar o evento end end end addEvent(run_it,1000*delay,false) end function onSay(cid, words, param) run_it() return TRUE endPronto
Configuarando
E facil d++++++++ configurar
--- Config animatex text.
você deve adcionar uma estrutura de tabela como esse na tabela clolortypes:
{kind=[color="Red"]2[/color],chance=%,pos,text,color},2 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas.
Chance vai de 1 a 100
pos: {x=...}
Text = 'OMG eu posso falar coisas grandes com esse script
--- by mock '
Color = TEXTCOLOR_YELLOW ou 210 (0-255)
--- Config magic effect.
você deve adcionar uma estrutura de tabela como esse na tabela clolortypes:
{kind=1,chance=%,pos,type},
2 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas.
Chance vai de 1 a 100
pos: {x=...}
type = CONST_ME_WATERCREATURE
--- Config distance shoot.
você deve adcionar uma estrutura de tabela como esse na tabela clolortypes:
{kind=[color="Red"]3[/color],chance=%,frompos,topos,type},3 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas.
Chance vai de 1 a 100
frompos: {x=...}
topos: {x=...}
type: CONST_ANI_SPEAR (ou o numero
no caso 1)
--- Config functions.
você deve adcionar uma estrutura de tabela como esse na tabela clolortypes:
{kind=[color="Red"]4[/color],chance=10,function},4 é uma constante do script, se vc mudar e deixar esses parametros vai dar problemas.
Chance vai de 1 a 100
deve ser +/- assim na tabela:
function() print('hail') endOu ja pronto assim:
{kind=4,chance=10,function() local pos = {x=110,y=110,z=7,stackpos=255} local a = getThingfromPos(pos) if isPlayer(a.uid) == TRUE then doTeleportThing(a.uid, {x=100,y=100,z=7}) end end},