Ir para conteúdo

Tapete Voador By Andrew


_ferrari_

Posts Recomendados

ATENÇÃO!!!!!!!!!!

 

 

Desculpe por estar "reavivando" o tópico, espero que não dê problema. Quero avisar a todos que esse script está obsoleto e, como foi dito pelo King CPI, ele CAUSA UM ATAQUE DOSS NO SEU SERVER!.

Foi testado em um server com pouca capacidade e todos os player sofreram debug, e logo após isso, o servidor caiu.

Se for utilizar tenha cuidado.

 

 

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:

 

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:

 

					  I 900390039003 
				   9001		0
				   9002		0
				   9002		0
				   9004 9004 9004

 

 

 

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

 

--NÃO EDITE ABSOLUTAMENTE NADA SE NÃO SOUBER O QUE ESTÁ FAZENDO.

 

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

 

 

COMENTEM PELO AMOR DE DEUS, DEMOREI UM MILHÃO DE ANOS PRA FAZE ELE.... COMENTEM PLZ

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

  • Respostas 35
  • Created
  • Última resposta

Top Posters In This Topic

seguinte, os action id 900x... sao os action id do tile 460 ( o tile vazio) por onde o tapete pasa. entao se o espaço id 460 tiver action id 0, o tapete vai um sqm pra baixo etc...

 

 

Requerimentos:

Um pouco de conhecimento sobre actions, movements e mapping

 

coloquei isso pra que nao houvesem perguntas noobs.... pena que tiveram

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

  • 2 weeks later...

Não sei se você sabe, mas toda vez que teleporta um player ele dá reload na batle list,

faz um monte de reloads... imagina se for 50 teleports e tiver 9 pessoas sobre o tapete...

9x50=450 loads de batle list em menos de 20 segundos... pouco??

 

espero que tenha entendido ;)

 

:hi:

 

*~Edit~*

Não voa pra baixo e nem pra cima(z-1/z+1)...

Mas td bem... jah postou um solução ;)

 

*~Edit2~*

@h3online

Isso porque ele escreve bem, imagine se escrevesse como vc ;)

E está super bem esplicado, e vc só não gostou

porque não conseguiu usar...

 

Se esforce um pouco mais, quem sabe cosiga!

 

Até +

:hi:

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

Eu uso um tapete que sobe e dece, mas pra esse aqui que eu dei release, eu aconselho faze um tapete no andar de baixo, colocar com movements um teleporte que te leve um andar para cima e la vai ter o tapete.

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...