Lol mt massa cara achei mt loco
- Fórum
- OTServ
- Recursos
- Scripting
- Actions e Talkactions
- [Tile] Múltiplos Efeitos E Falas!
[Tile] Múltiplos Efeitos E Falas!
Por Newtonnotwen, 21 de ago. de 2012 em Actions e Talkactions
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

Imagem adicionada.
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

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
Editado Agosto 22 por Skymagnum
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

Vídeo adicionado.
Editado Agosto 22 por Newtonnotwen
info
Grupo: Artesão
Registrado: 10/08/12
Posts: 114
Reputação: +15

ta mto show manow, a idéia e bem bacana!gostei mto ai moh lokura! vo botar pra assubir texto mais foda tipo "NOOIZ" vai fikar show
Abraços ![]()
info
Grupo: Campones
Registrado: 25/08/12
Posts: 11
Reputação: 0

muito bom script meus parabéns rep+
info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80

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.
info
Grupo: Campones
Registrado: 02/12/11
Posts: 4
Reputação: 0
Char no Tibia: NaoTenhoChar

Po cara fica ruim tu fazer por cor
=/
Sou daltônico mano
Mas irei pedir ajuda pra alguem ![]()
Agradeço o script estava precisando =D




info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80
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!
Editado Agosto 22 por Newtonnotwen