Ir para conteúdo

Tapete Voador By Andrew


_ferrari_

Posts Recomendados

Como prometido, fiz meu tapete voador. Neste tutorial, ensinarei como faze-lo funcionar.

 

ESTE TAPETE FOI FEITO NÂO SOMENTE POR MIM, MAS POR TODA A EQUIPE DO WARCRAFT ATS, ENTÃO, NÃO DEIXE DE COLOCAREM OS CRÉDITOS ONDE POSTAREM

 

Requerimentos:

Um pouco de conhecimento sobre actions, movements e mapping

Paciencia para ler e fazer tudo certo e com calma

 

Mãos a massa:

 

Primeiramente, no seu map editor, faça um tapete verde (id=5582) deste jeito:

 

tapete1oj3.th.png

 

"Mas Andrew, o tapete voa pelo 'nada'?"

Não, claro que não, use o tile de espaço vazio (id=460) para cobrir a rota:

 

tapete2yv7.th.png

 

"E como ele funciona?"

Simples. Nos espaços vazios onde o tapete vai pasar, você terá que alterar o Action ID dos tiles. Use esta fórmula:

 

l10370be280041c3ff4d79djr9.th.jpg

 

Para o tapete e faz ele voltar para o lugar de origem - 9001

Esquerda - 9004

Direita - 9003

Para Cima - 9002

Para Baixo (nao altere o actionid neste caso) - 0

 

Agora, sabendo disto, podemos fazer uma rota, de exemplo, assim:

 

andrew460tk2.th.jpg

 

 

 

Entenderam?

 

"Sim"

 

Aqui vai o código então, para nao precisar de alavancas, fiz em movement, então, abram data/movements/script, dupliquem um arquivo la dentro e substitua seu interior por isto:

 

 

----- Tapete Voador by Warcraft ATs -----
function addCarpet(params)
local startpos = params.startpos
local spawnDelay = params.spawnDelay

local speed = 500 Velocidade em milesimos de segundo para o tapete andar um sqm

local pos = params.pos
local cid = params.cid

[color="#8B0000"]--NÃO EDITE ABSOLUTAMENTE NADA SE NÃO SOUBER O QUE ESTÁ FAZENDO.[/color]

local groundpos = {x=pos.x, y=pos.y, z=pos.z, stackpos=0}
local ground = getThingfromPos(groundpos)

pos1 = {x=pos.x, y=pos.y, z=pos.z, stackpos=1}
pos2 = {x=pos.x-1, y=pos.y-1, z=pos.z, stackpos=1}
pos3 = {x=pos.x, y=pos.y-1, z=pos.z, stackpos=1}
pos4 = {x=pos.x+1, y=pos.y-1, z=pos.z, stackpos=1}
pos5 = {x=pos.x-1, y=pos.y, z=pos.z, stackpos=1}
pos6 = {x=pos.x+1, y=pos.y, z=pos.z, stackpos=1}
pos7 = {x=pos.x-1, y=pos.y+1, z=pos.z, stackpos=1}
pos8 = {x=pos.x, y=pos.y+1, z=pos.z, stackpos=1}
pos9 = {x=pos.x+1, y=pos.y+1, z=pos.z, stackpos=1}
item1 = getThingfromPos(pos1)
item2 = getThingfromPos(pos2)
item3 = getThingfromPos(pos3)
item4 = getThingfromPos(pos4)
item5 = getThingfromPos(pos5)
item6 = getThingfromPos(pos6)
item7 = getThingfromPos(pos7)
item8 = getThingfromPos(pos8)
item9 = getThingfromPos(pos9)

newpos = {x=pos.x, y=pos.y+1, z=pos.z}
new2pos = {x=pos.x, y=pos.y-1, z=pos.z}
new3pos = {x=pos.x+1, y=pos.y, z=pos.z}
new4pos = {x=pos.x-1, y=pos.y, z=pos.z}
if ground.actionid == 9001 then
	spawnparams = {startpos = startpos, pos = pos}
	addEvent(spawnCarpet,spawnDelay*1000,spawnparams)
	setPlayerStorageValue(cid,9500,-1)
elseif ground.actionid == 9004 then
	doRemoveItem(item1.uid,1)
	doRemoveItem(item2.uid,1)
	doRemoveItem(item3.uid,1)
	doRemoveItem(item4.uid,1)
	doRemoveItem(item5.uid,1)
	doRemoveItem(item6.uid,1)
	doRemoveItem(item7.uid,1)
	doRemoveItem(item8.uid,1)
	doRemoveItem(item9.uid,1)
	new4pos1 = {x=new4pos.x, y=new4pos.y, z=new4pos.z}
	new4pos2 = {x=new4pos.x-1, y=new4pos.y-1, z=new4pos.z}
	new4pos3 = {x=new4pos.x, y=new4pos.y-1, z=new4pos.z}
	new4pos4 = {x=new4pos.x+1, y=new4pos.y-1, z=new4pos.z}
	new4pos5 = {x=new4pos.x-1, y=new4pos.y, z=new4pos.z}
	new4pos6 = {x=new4pos.x+1, y=new4pos.y, z=new4pos.z}
	new4pos7 = {x=new4pos.x-1, y=new4pos.y+1, z=new4pos.z}
	new4pos8 = {x=new4pos.x, y=new4pos.y+1, z=new4pos.z}
	new4pos9 = {x=new4pos.x+1, y=new4pos.y+1, z=new4pos.z}
	doCreateItem(5582,1,new4pos1)
	doCreateItem(5578,1,new4pos2)
	doCreateItem(5579,1,new4pos3)
	doCreateItem(5580,1,new4pos4)
	doCreateItem(5581,1,new4pos5)
	doCreateItem(5583,1,new4pos6)
	doCreateItem(5584,1,new4pos7)
	doCreateItem(5585,1,new4pos8)
	doCreateItem(5586,1,new4pos9)

	doTeleportThing(cid, new4pos)

	newparams = {pos = new4pos, cid = cid, startpos = startpos, spawnDelay = 10}
	addEvent(addCarpet,speed,newparams)
elseif ground.actionid == 9003 then
	doRemoveItem(item1.uid,1)
	doRemoveItem(item2.uid,1)
	doRemoveItem(item3.uid,1)
	doRemoveItem(item4.uid,1)
	doRemoveItem(item5.uid,1)
	doRemoveItem(item6.uid,1)
	doRemoveItem(item7.uid,1)
	doRemoveItem(item8.uid,1)
	doRemoveItem(item9.uid,1)
	new3pos1 = {x=new3pos.x, y=new3pos.y, z=new3pos.z}
	new3pos2 = {x=new3pos.x-1, y=new3pos.y-1, z=new3pos.z}
	new3pos3 = {x=new3pos.x, y=new3pos.y-1, z=new3pos.z}
	new3pos4 = {x=new3pos.x+1, y=new3pos.y-1, z=new3pos.z}
	new3pos5 = {x=new3pos.x-1, y=new3pos.y, z=new3pos.z}
	new3pos6 = {x=new3pos.x+1, y=new3pos.y, z=new3pos.z}
	new3pos7 = {x=new3pos.x-1, y=new3pos.y+1, z=new3pos.z}
	new3pos8 = {x=new3pos.x, y=new3pos.y+1, z=new3pos.z}
	new3pos9 = {x=new3pos.x+1, y=new3pos.y+1, z=new3pos.z}
	doCreateItem(5582,1,new3pos1)
	doCreateItem(5578,1,new3pos2)
	doCreateItem(5579,1,new3pos3)
	doCreateItem(5580,1,new3pos4)
	doCreateItem(5581,1,new3pos5)
	doCreateItem(5583,1,new3pos6)
	doCreateItem(5584,1,new3pos7)
	doCreateItem(5585,1,new3pos8)
	doCreateItem(5586,1,new3pos9)

	doTeleportThing(cid, new3pos)

	newparams = {pos = new3pos, cid = cid, startpos = startpos, spawnDelay = 10}
	addEvent(addCarpet,speed,newparams)
elseif ground.actionid == 9002 then
	doRemoveItem(item1.uid,1)
	doRemoveItem(item2.uid,1)
	doRemoveItem(item3.uid,1)
	doRemoveItem(item4.uid,1)
	doRemoveItem(item5.uid,1)
	doRemoveItem(item6.uid,1)
	doRemoveItem(item7.uid,1)
	doRemoveItem(item8.uid,1)
	doRemoveItem(item9.uid,1)
	new2pos1 = {x=new2pos.x, y=new2pos.y, z=new2pos.z}
	new2pos2 = {x=new2pos.x-1, y=new2pos.y-1, z=new2pos.z}
	new2pos3 = {x=new2pos.x, y=new2pos.y-1, z=new2pos.z}
	new2pos4 = {x=new2pos.x+1, y=new2pos.y-1, z=new2pos.z}
	new2pos5 = {x=new2pos.x-1, y=new2pos.y, z=new2pos.z}
	new2pos6 = {x=new2pos.x+1, y=new2pos.y, z=new2pos.z}
	new2pos7 = {x=new2pos.x-1, y=new2pos.y+1, z=new2pos.z}
	new2pos8 = {x=new2pos.x, y=new2pos.y+1, z=new2pos.z}
	new2pos9 = {x=new2pos.x+1, y=new2pos.y+1, z=new2pos.z}
	doCreateItem(5582,1,new2pos1)
	doCreateItem(5578,1,new2pos2)
	doCreateItem(5579,1,new2pos3)
	doCreateItem(5580,1,new2pos4)
	doCreateItem(5581,1,new2pos5)
	doCreateItem(5583,1,new2pos6)
	doCreateItem(5584,1,new2pos7)
	doCreateItem(5585,1,new2pos8)
	doCreateItem(5586,1,new2pos9)

	doTeleportThing(cid, new2pos)

	newparams = {pos = new2pos, cid = cid, startpos = startpos, spawnDelay = 10}
	addEvent(addCarpet,speed,newparams)
else
	doRemoveItem(item1.uid,1)
	doRemoveItem(item2.uid,1)
	doRemoveItem(item3.uid,1)
	doRemoveItem(item4.uid,1)
	doRemoveItem(item5.uid,1)
	doRemoveItem(item6.uid,1)
	doRemoveItem(item7.uid,1)
	doRemoveItem(item8.uid,1)
	doRemoveItem(item9.uid,1)
	newpos1 = {x=newpos.x, y=newpos.y, z=newpos.z}
	newpos2 = {x=newpos.x-1, y=newpos.y-1, z=newpos.z}
	newpos3 = {x=newpos.x, y=newpos.y-1, z=newpos.z}
	newpos4 = {x=newpos.x+1, y=newpos.y-1, z=newpos.z}
	newpos5 = {x=newpos.x-1, y=newpos.y, z=newpos.z}
	newpos6 = {x=newpos.x+1, y=newpos.y, z=newpos.z}
	newpos7 = {x=newpos.x-1, y=newpos.y+1, z=newpos.z}
	newpos8 = {x=newpos.x, y=newpos.y+1, z=newpos.z}
	newpos9 = {x=newpos.x+1, y=newpos.y+1, z=newpos.z}
	doCreateItem(5582,1,newpos1)
	doCreateItem(5578,1,newpos2)
	doCreateItem(5579,1,newpos3)
	doCreateItem(5580,1,newpos4)
	doCreateItem(5581,1,newpos5)
	doCreateItem(5583,1,newpos6)
	doCreateItem(5584,1,newpos7)
	doCreateItem(5585,1,newpos8)
	doCreateItem(5586,1,newpos9)

	doTeleportThing(cid, newpos)

	newparams = {pos = newpos, cid = cid, startpos = startpos, spawnDelay = 10}
	addEvent(addCarpet,speed,newparams)
end
end
function spawnCarpet(params)
local startpos = params.startpos
local pos = params.pos
pos1 = {x=startpos.x, y=startpos.y, z=startpos.z}
pos2 = {x=startpos.x-1, y=startpos.y-1, z=startpos.z}
pos3 = {x=startpos.x, y=startpos.y-1, z=startpos.z}
pos4 = {x=startpos.x+1, y=startpos.y-1, z=startpos.z}
pos5 = {x=startpos.x-1, y=startpos.y, z=startpos.z}
pos6 = {x=startpos.x+1, y=startpos.y, z=startpos.z}
pos7 = {x=startpos.x-1, y=startpos.y+1, z=startpos.z}
pos8 = {x=startpos.x, y=startpos.y+1, z=startpos.z}
pos9 = {x=startpos.x+1, y=startpos.y+1, z=startpos.z}
doCreateItem(5582,1,pos1)
doCreateItem(5578,1,pos2)
doCreateItem(5579,1,pos3)
doCreateItem(5580,1,pos4)
doCreateItem(5581,1,pos5)
doCreateItem(5583,1,pos6)
doCreateItem(5584,1,pos7)
doCreateItem(5585,1,pos8)
doCreateItem(5586,1,pos9)

pos1 = {x=pos.x, y=pos.y, z=pos.z, stackpos=1}
pos2 = {x=pos.x-1, y=pos.y-1, z=pos.z, stackpos=1}
pos3 = {x=pos.x, y=pos.y-1, z=pos.z, stackpos=1}
pos4 = {x=pos.x+1, y=pos.y-1, z=pos.z, stackpos=1}
pos5 = {x=pos.x-1, y=pos.y, z=pos.z, stackpos=1}
pos6 = {x=pos.x+1, y=pos.y, z=pos.z, stackpos=1}
pos7 = {x=pos.x-1, y=pos.y+1, z=pos.z, stackpos=1}
pos8 = {x=pos.x, y=pos.y+1, z=pos.z, stackpos=1}
pos9 = {x=pos.x+1, y=pos.y+1, z=pos.z, stackpos=1}
item1 = getThingfromPos(pos1)
item2 = getThingfromPos(pos2)
item3 = getThingfromPos(pos3)
item4 = getThingfromPos(pos4)
item5 = getThingfromPos(pos5)
item6 = getThingfromPos(pos6)
item7 = getThingfromPos(pos7)
item8 = getThingfromPos(pos8)
item9 = getThingfromPos(pos9)
doRemoveItem(item1.uid,1)
doRemoveItem(item2.uid,1)
doRemoveItem(item3.uid,1)
doRemoveItem(item4.uid,1)
doRemoveItem(item5.uid,1)
doRemoveItem(item6.uid,1)
doRemoveItem(item7.uid,1)
doRemoveItem(item8.uid,1)
doRemoveItem(item9.uid,1)

ppos1 = {x=startpos.x, y=startpos.y, z=startpos.z, stackpos=253}
ppos2 = {x=startpos.x-1, y=startpos.y-1, z=startpos.z, stackpos=253}
ppos3 = {x=startpos.x, y=startpos.y, z=startpos.z, stackpos=253}
ppos4 = {x=startpos.x+1, y=startpos.y-1, z=startpos.z, stackpos=253}
ppos5 = {x=startpos.x-1, y=startpos.y, z=startpos.z, stackpos=253}
ppos6 = {x=startpos.x+1, y=startpos.y, z=startpos.z, stackpos=253}
ppos7 = {x=startpos.x-1, y=startpos.y+1, z=startpos.z, stackpos=253}
ppos8 = {x=startpos.x, y=startpos.y+1, z=startpos.z, stackpos=253}
ppos9 = {x=startpos.x+1, y=startpos.y+1, z=startpos.z, stackpos=253}
player1 = getThingfromPos(ppos1)
player2 = getThingfromPos(ppos2)
player3 = getThingfromPos(ppos3)
player4 = getThingfromPos(ppos4)
player5 = getThingfromPos(ppos5)
player6 = getThingfromPos(ppos6)
player7 = getThingfromPos(ppos7)
player8 = getThingfromPos(ppos8)
player9 = getThingfromPos(ppos9)

nppos1 = {x=startpos.x+1, y=startpos.y, z=startpos.z}
nppos2 = {x=startpos.x, y=startpos.y-1, z=startpos.z}
nppos3 = {x=startpos.x+1, y=startpos.y-1, z=startpos.z}
nppos4 = {x=startpos.x+2, y=startpos.y-1, z=startpos.z}
nppos5 = {x=startpos.x, y=startpos.y, z=startpos.z}
nppos6 = {x=startpos.x+2, y=startpos.y, z=startpos.z}
nppos7 = {x=startpos.x, y=startpos.y+1, z=startpos.z}
nppos8 = {x=startpos.x+1, y=startpos.y+1, z=startpos.z}
nppos9 = {x=startpos.x+2, y=startpos.y+1, z=startpos.z}

if player1.itemid > 0 then
	doTeleportThing(player1.uid, nppos1)
end
if player2.itemid > 0 then
	doTeleportThing(player2.uid, nppos2)
end
if player3.itemid > 0 then
	doTeleportThing(player3.uid, nppos3)
end
if player4.itemid > 0 then
	doTeleportThing(player4.uid, nppos4)
end
if player5.itemid > 0 then
	doTeleportThing(player5.uid, nppos5)
end
if player6.itemid > 0 then
	doTeleportThing(player6.uid, nppos6)
end
if player7.itemid > 0 then
	doTeleportThing(player7.uid, nppos7)
end
if player8.itemid > 0 then
	doTeleportThing(player8.uid, nppos8)
end
if player9.itemid > 0 then
	doTeleportThing(player9.uid, nppos9)
end
end

function onStepIn(cid, item, pos)
if isPlayer(cid) == 1 then
	isMoving = getPlayerStorageValue(cid,9500)
	if item.itemid == 5582 and isMoving == -1 then
		params = {cid = cid, pos = pos, startpos = pos, spawnDelay = 10}
		addEvent(addCarpet, 100, params)
		setPlayerStorageValue(cid,9500,1)
	end
end
end

 

Então adicione isto em data/movements/movements.xml

 

<movevent event="StepIn" itemid="5582" script="tapete.lua"/>

 

 

 

ENJOY

 

 

COMENTE

Editado por _ferrari_
Link para o comentário
Compartilhar em outros sites

Eu Consegui xP...

 

Testei In My Map Test xP

hehehe

 

Fico Rox :) so nao consegui configura pra onde ele vai anda xP

 

Ja Testei Tbm o Sistema de Montanha Russa da BO Esse tmb e Rox

xP

 

 

 

Cya...

 

Andrew Otimo Trabalho

 

 

Como ja Disse Conde.

Aprovado.

Link para o comentário
Compartilhar em outros sites

valeu pela força galera, só de ler eses posts, me da energia pra vira as noites fazendo scripts.

esse aqui, eu fiz de um jeito que nunca será preciso editar o script para usar o tapete, só será necessario editar o mapa...

 

@conde sapo

sei que é dificil, mas como eu disse no começo do tutorial:

 

Requerimentos:

Um pouco de conhecimento sobre actions, movements e mapping

Paciencia para ler e fazer tudo certo e com calma

 

se você tiver um bom conhecimento sobre actions, movements e mapping, vai conseguir ler o script e interpretar tudo, vai conseguir colocar no mapa as actionids e vai saber onde por o script também

Link para o comentário
Compartilhar em outros sites

Fico Rox :) so nao consegui configura pra onde ele vai anda xP
Se você realmente conseguiu , configurar pra onde ele vai é a coisa mais facil do mundo.

 

 

@conde sapo

sei que é dificil, mas como eu disse no começo do tutorial:

Eu me referia a sua explicação...

onde e como colocar as ACTIONS é que ficou ruim. (quase péssimo)

eu consegui entender LENDO O SCRIPT

 

o SCRIPT ??? é perfeito...........

o melhor que eu já vi

(e já vi MUITOS)

 

 

:hi:

Link para o comentário
Compartilhar em outros sites

Não entendi direito, eu coloco o ActionID 9001 no tile (id:460) pra voltar pro ponto de origem? Tipo, como faço pra ele subir andares? Não peguei o jeito, meio complicado, da pra explica um pouco melhor? se não for pedir muito :p

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...