Jump to content

[Tile] Múltiplos Efeitos E Falas!


Newtonnotwen

Recommended Posts

Esse script é um tile que quando pisa ele faz vários efeitos e varias mensagens animadas, os efeitos e as mensagens, como também suas cores (da mensagem), são escolhidas de acordo com seu gosto.

 

Imagem:

25714132.png

 

Vídeo:

 

 

Em movements.xml adicione:

<movevent type="StepIn" actionid="13615" event="script" value="supertile.lua"/>

Em data/movements/scripts crie um arquivo.lua nomeie para supertile e adicione:

function onStepIn(cid, item, pos)

ppos = getCreaturePosition(cid)

pos1 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos2 = {x=ppos.x-2, y=ppos.y-2, z=ppos.z}

pos3 = {x=ppos.x-2, y=ppos.y+2, z=ppos.z}

pos4 = {x=ppos.x+2, y=ppos.y-2, z=ppos.z}

pos5 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

pos5 = {x=ppos.x, y=ppos.y+2, z=ppos.z}

pos6 = {x=ppos.x, y=ppos.y-2, z=ppos.z}

pos7 = {x=ppos.x+2, y=ppos.y, z=ppos.z}

pos8 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

if isPlayer(cid) then

if item.actionid == 13615

then

oi = getPlayerStorageValue(cid,13615)

if oi == -1 then

doSendMagicEffect(getThingPos(cid), 27)

doSendMagicEffect(getThingPos(cid), 28)

doSendMagicEffect(getThingPos(cid), 29)

doSendMagicEffect(getThingPos(cid), 30)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos2, 61)

doSendMagicEffect(pos3, 61)

doSendMagicEffect(pos4, 61)

doSendMagicEffect(pos5, 61)

doSendMagicEffect(pos6, 61)

doSendMagicEffect(pos7, 61)

doSendMagicEffect(pos8, 61)

doSendAnimatedText(pos1,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos2,"HAIL", math.random(75,75))

doSendAnimatedText(pos8,"oO", math.random(95,95))

doSendAnimatedText(pos4,"RUSH", math.random(05,05))

doSendAnimatedText(pos5,"Lord", math.random(113,113))

doSendAnimatedText(pos6,"hAiL", math.random(90,90))

doSendAnimatedText(pos7,"fire", math.random(145,145))

doSendAnimatedText(pos3,"Lordfire", math.random(150,150))

 

else

 

end

 

end

 

end

 

end

Editando:

 

-Laranja: Efeitos que vão aparecer onde o player pisar (no tile com o action id)

-Verde: Efeitos que aparecerão nas posições declaradas

-Vermelho: Mensagem que irá aparecer nas posições declaradas

-Marrom: Cor das mensagens (/y)

 

Para ver as cores digite com o GOD /y

 

Pode varias de 1 até 256.

 

Ex:

 

/y 1

/y 2

 

E por ai vai.

 

-Roxo: Creio que seja a parte mais complicada

 

Aqui vai um tutorial:

 

Todas as funções expressas na cor roxa possuem uma base assim:

 

pos5 = {x=ppos.x, y=ppos.y, z=ppos.z}

 

Essa base deve permanecer inalterada, porem primeiro vamos compreende-la:

 

Considere que tile preto localizado no centro da imagem seja o tile com o action id do script.

 

Para que um efeito e uma fala aconteça nesse tile você deve declarar a posição assim:

 

Efeito: doSendMagicEffect(getThingPos(cid), 30)

Mensagem: doSendAnimatedText(ppos,"Lordfire", math.random(150,150))

 

Para todo efeito e mensagem que for declarado para esse tile se usa a parte em roxo, que é a posição que o player pisou, logo depois editando o efeito (em azul), a mensagem (em vermelho) e a cor (em verde).

 

Efeito e mensagem fora da posição do tile, segue aquela base apresentada:

 

pos5 = {x=ppos.x, y=ppos.y, z=ppos.z}

 

Entendendo ela, observe a imagem:

tuto2wu.png

Como pôde observar o eixo das ordenadas (y), faz uma contrariedade com o eixo cartesiano matemático, é assim mesmo, o Tibia é especial :-).

 

Não sabe sobre o sistema cartesiano (caso saiba salte esse passo, se não entender volte a ele)?

O sistema cartesiano é um sistema matemático feito para determinar posições, esse conteúdo é propriamente restrito ao Tibia, não use ele em provas de matemática, pois se trata de uma contradição com o eixo y).

 

Como ele funciona (do tibia)?

 

Como pôde ter observado na imagem existem 2 linhas imaginarias que se interceptam em um ponto, esse ponto é onde o tile do action id está, considere os valores dessa imagem considerando o seguinte:

tuto1ls.png

 

x = Linha na horizontal (esquerda para direita)

y = Linha na vertical (cima para baixo)

 

Assim se quiser uma posição no gráfico, basta pegar os valores de x e y que geram esse grafico.

 

Editando:

 

pos5 = {x=ppos.x, y=ppos.y, z=ppos.z}, caso queira adicionar um efeito no local -3 a esquerda, no eixo das abcissas (x) declare o seguinte:

 

pos5 = {x=ppos.x-3, y=ppos.y, z=ppos.z}

 

-Vermelho: Veja que foi adicionado o valor -3 (a posição de exemplo)

-Azul: Observe que foi declarado em x, não em y)

-Verde: Note que y não foi alterado

 

Outro exemplo:

 

pos5 = {x=ppos.x, y=ppos.y+5, z=ppos.z}

 

-Vermelho: Veja que foi adicionado o valor -3 (a posição de exemplo)

-Azul: Observe que foi declarado em x, não em y)

-Verde: Note que y não foi alterado

 

Qual seria a posição do efeito nesse caso?

 

(x+0 e y+5)

 

Adicionando posições em que x e y não se equivalem a zero:

 

Segue a mesma logica que o anterior, observe a imagem:

tuto3r.png

O quadrado expresso em verde se localiza em que posição?

 

Obviamente x = +2 e y = -1, agora basta apenas declarar:

 

pos5 = {x=ppos.x+2, y=ppos.y-1, z=ppos.z}

 

Entendeu? Caso tenha alguma duvida é só perguntar.

 

E o Z?

 

O Z não altere, ele é o "andar".

 

Como adicionar novas posições, efeitos e mensagens?

 

Script original:

function onStepIn(cid, item, pos)

ppos = getCreaturePosition(cid)

pos1 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos2 = {x=ppos.x-2, y=ppos.y-2, z=ppos.z}

pos3 = {x=ppos.x-2, y=ppos.y+2, z=ppos.z}

pos4 = {x=ppos.x+2, y=ppos.y-2, z=ppos.z}

pos5 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

pos5 = {x=ppos.x, y=ppos.y+2, z=ppos.z}

pos6 = {x=ppos.x, y=ppos.y-2, z=ppos.z}

pos7 = {x=ppos.x+2, y=ppos.y, z=ppos.z}

pos8 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

if isPlayer(cid) then

if item.actionid == 13615

then

oi = getPlayerStorageValue(cid,13615)

if oi == -1 then

doSendMagicEffect(getThingPos(cid), 27)

doSendMagicEffect(getThingPos(cid), 28)

doSendMagicEffect(getThingPos(cid), 29)

doSendMagicEffect(getThingPos(cid), 30)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos2, 61)

doSendMagicEffect(pos3, 61)

doSendMagicEffect(pos4, 61)

doSendMagicEffect(pos5, 61)

doSendMagicEffect(pos6, 61)

doSendMagicEffect(pos7, 61)

doSendMagicEffect(pos8, 61)

doSendAnimatedText(pos1,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos2,"HAIL", math.random(75,75))

doSendAnimatedText(pos8,"oO", math.random(95,95))

doSendAnimatedText(pos4,"RUSH", math.random(05,05))

doSendAnimatedText(pos5,"Lord", math.random(113,113))

doSendAnimatedText(pos6,"hAiL", math.random(90,90))

doSendAnimatedText(pos7,"fire", math.random(145,145))

doSendAnimatedText(pos3,"Lordfire", math.random(150,150))

 

else

 

end

 

end

 

end

 

 

end

Copie as partes em verde e adicione logo embaixo, exemplo:

function onStepIn(cid, item, pos)

ppos = getCreaturePosition(cid)

pos1 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos1 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos2 = {x=ppos.x-2, y=ppos.y-2, z=ppos.z}

pos3 = {x=ppos.x-2, y=ppos.y+2, z=ppos.z}

pos4 = {x=ppos.x+2, y=ppos.y-2, z=ppos.z}

pos5 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

pos5 = {x=ppos.x, y=ppos.y+2, z=ppos.z}

pos6 = {x=ppos.x, y=ppos.y-2, z=ppos.z}

pos7 = {x=ppos.x+2, y=ppos.y, z=ppos.z}

pos8 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

if isPlayer(cid) then

if item.actionid == 13615

then

oi = getPlayerStorageValue(cid,13615)

if oi == -1 then

doSendMagicEffect(getThingPos(cid), 27)

doSendMagicEffect(getThingPos(cid), 28)

doSendMagicEffect(getThingPos(cid), 29)

doSendMagicEffect(getThingPos(cid), 30)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos2, 61)

doSendMagicEffect(pos3, 61)

doSendMagicEffect(pos4, 61)

doSendMagicEffect(pos5, 61)

doSendMagicEffect(pos6, 61)

doSendMagicEffect(pos7, 61)

doSendMagicEffect(pos8, 61)

doSendAnimatedText(pos1,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos1,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos2,"HAIL", math.random(75,75))

doSendAnimatedText(pos8,"oO", math.random(95,95))

doSendAnimatedText(pos4,"RUSH", math.random(05,05))

doSendAnimatedText(pos5,"Lord", math.random(113,113))

doSendAnimatedText(pos6,"hAiL", math.random(90,90))

doSendAnimatedText(pos7,"fire", math.random(145,145))

doSendAnimatedText(pos3,"Lordfire", math.random(150,150))

 

else

 

end

 

end

 

end

 

 

end

-Vermelho: Parte duplicada

 

Agora edite as posições para uma que não exista ainda:

function onStepIn(cid, item, pos)

ppos = getCreaturePosition(cid)

pos1 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos9 = {x=ppos.x-2, y=ppos.y, z=ppos.z}

pos2 = {x=ppos.x-2, y=ppos.y-2, z=ppos.z}

pos3 = {x=ppos.x-2, y=ppos.y+2, z=ppos.z}

pos4 = {x=ppos.x+2, y=ppos.y-2, z=ppos.z}

pos5 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

pos5 = {x=ppos.x, y=ppos.y+2, z=ppos.z}

pos6 = {x=ppos.x, y=ppos.y-2, z=ppos.z}

pos7 = {x=ppos.x+2, y=ppos.y, z=ppos.z}

pos8 = {x=ppos.x+2, y=ppos.y+2, z=ppos.z}

if isPlayer(cid) then

if item.actionid == 13615

then

oi = getPlayerStorageValue(cid,13615)

if oi == -1 then

doSendMagicEffect(getThingPos(cid), 27)

doSendMagicEffect(getThingPos(cid), 28)

doSendMagicEffect(getThingPos(cid), 29)

doSendMagicEffect(getThingPos(cid), 30)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos9, 61)

doSendMagicEffect(pos2, 61)

doSendMagicEffect(pos3, 61)

doSendMagicEffect(pos4, 61)

doSendMagicEffect(pos5, 61)

doSendMagicEffect(pos6, 61)

doSendMagicEffect(pos7, 61)

doSendMagicEffect(pos8, 61)

doSendAnimatedText(pos1,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos9,"XTIBIA!", math.random(30,30))

doSendAnimatedText(pos2,"HAIL", math.random(75,75))

doSendAnimatedText(pos8,"oO", math.random(95,95))

doSendAnimatedText(pos4,"RUSH", math.random(05,05))

doSendAnimatedText(pos5,"Lord", math.random(113,113))

doSendAnimatedText(pos6,"hAiL", math.random(90,90))

doSendAnimatedText(pos7,"fire", math.random(145,145))

doSendAnimatedText(pos3,"Lordfire", math.random(150,150))

 

else

 

end

 

end

 

end

 

 

end

-Laranja: Posição editada

 

Obs: Os números variam até infinito, porem por uma questão de organização siga o exemplo das posições, pos1, pos2, pos3, pos4...Na sequencia.

 

Removendo posições:

 

Segue o mesmo pensamento, porem de ordem contraria a adição, qualquer duvida poste.

 

Duvidas que poder vir a surgir:

 

Oque é esse math.random(30,30))?

 

Esse math.random é para as cores variarem, como o nome diz Random, ou seja aleatório, varia as cores, se quiser por exemplo que venha aleatoriamente todas as cores entre os números 14 e 200 ponha math.random(14,200))

 

Como faço para colocar que só venha uma cor?

 

math.random(30,30)), repita os números, no caso só vai vir palavras de cores /y 30.

 

Créditos:

 

Newtonnotwen, pelo script, tutorial e ideia.

 

Por favor comente, e lembrando qualquer duvida poste!

Edited by Newtonnotwen
Link to comment
Share on other sites

Bem legal porêm você devia começar estudar tabelas ia ficar melhor

 

exemplo que eu fiz

 

 

function onStepIn(cid, item, pos)
local pos = getPlayerPosition(cid)
local table_pos = {
{"Xtibia" , x = pos.x + 2, y = pos.y, z = pos.z},
{"Hail" , x = pos.x - 2, y = pos.y, z = pos.z},
{"0o" , x = pos.x, y = pos.y + 2, z = pos.z},
{"Rush" , x = pos.x, y = pos.y - 2, z = pos.z},
{"Lord Fire" , x = pos.x + 2, y = pos.y + 2, z = pos.z},
{"Rushando" , x = pos.x - 2, y = pos.y - 2, z = pos.z},
{"Xtibia Foda" , x = pos.x + 2, y = pos.y - 2, z = pos.z},
{"Dig Din" , x = pos.x - 2, y = pos.y + 2, z = pos.z}
}
for i = 1, #table_pos do
doSendMagicEffect(table_pos[i][2], 61)
doSendMagicEffect(pos, math.random(28, 30))
doSendAnimatedText(table_pos[i][2], table_pos[i][1], math.random(1, 255))
end
if isPlayer(cid) and getPlayerStorageValue(cid, 5121) < 1 then
doPlayerSendTextMessage(cid, 27, "Você acionou o Super Tile")
setPlayerStorageValue(cid, 5121, 1)
else
doPlayerSendTextMessage(cid, 28, getPlayerStorageValue(cid, 5121) < 1 and "Você só pode acionar uma vez o super tile.")
end
return true
end

 

Edited by Skymagnum
Link to comment
Share on other sites

Bem legal porêm você devia começar estudar tabelas ia ficar melhor

 

exemplo que eu fiz

 

 

function onStepIn(cid, item, pos)
local pos = getPlayerPosition(cid)
local table_pos = {
{"Xtibia" , x = pos.x + 2, y = pos.y, z = pos.z},
{"Hail" , x = pos.x - 2, y = pos.y, z = pos.z},
{"0o" , x = pos.x, y = pos.y + 2, z = pos.z},
{"Rush" , x = pos.x, y = pos.y - 2, z = pos.z},
{"Lord Fire" , x = pos.x + 2, y = pos.y + 2, z = pos.z},
{"Rushando" , x = pos.x - 2, y = pos.y - 2, z = pos.z},
{"Xtibia Foda" , x = pos.x + 2, y = pos.y - 2, z = pos.z},
{"Dig Din" , x = pos.x - 2, y = pos.y + 2, z = pos.z}
}
for i = 1, #table_pos do
doSendMagicEffect(table_pos[i][2], 61)
doSendMagicEffect(pos, math.random(28, 30))
doSendAnimatedText(table_pos[i][2], table_pos[i][1], math.random(1, 255))
end
if isPlayer(cid) and getPlayerStorageValue(cid, 5121) < 1 then
doPlayerSendTextMessage(cid, 27, "Você acionou o Super Tile")
setPlayerStorageValue(cid, 5121, 1)
else
doPlayerSendTextMessage(cid, 28, getPlayerStorageValue(cid, 5121) < 1 and "Você só pode acionar uma vez o super tile.")
end
return true
end

 

 

Não entendo muito, mas vou procurar aprender, vlws.

Link to comment
Share on other sites

  • 2 weeks later...
×
×
  • Create New...