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:
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:
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:
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:
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!