Ir para conteúdo

Tps/placas/pisos Falantes V 3.0 - By Mock


Mock

Posts Recomendados

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:

mff.png

 

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:

<globalevent name="show" interval="1" script="show.lua"/>

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
end

Terminado? 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:

function f()
return f()
end
f()

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)

<talkaction words="!show" script="show.lua"/>

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
end

Pronto :D

 

 

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 :D --- 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 :p 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') end

Ou 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},

Link para o comentário
Compartilhar em outros sites

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 por DoidinMapper
Link para o comentário
Compartilhar em outros sites

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 é

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
×
×
  • Criar Novo...