_F

Tapete Voador By Andrew

Por _ferrari_, 18 de nov. de 2007 em Actions e Talkactions

script
5.0 (1)
21
3.9k
18 de novembro de 2007 às 15:57

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 Dezembro 6 por _ferrari_

SkullsS
19 de novembro de 2007 às 11:16

mto bom

 

parabens

 

flw

KauslerK
19 de novembro de 2007 às 13:57

Massa..gostei desse script

42912264
19 de novembro de 2007 às 14:24

xP...

 

1 Dia 1 "Pessoa" Pergunto ao Jota ve onde postar Scripts..

o Jv Disse

 

"Posta no Open Tibia Actions" xP

heheheh

 

Parabens Script.

Como ja Havia Dito.

Conde SapoC
20 de novembro de 2007 às 00:28

Já vi alguns tutoriais sobre isso...

 

mas com certeza este é o melhor deles.

 

 

Super Aprovado

 

Mas acredito que a grande maioria dos usuários não vai conseguir fazer funcionar.

:thumbsupsmiley:

42912264
20 de novembro de 2007 às 16:19

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.

20 de novembro de 2007 às 22:38

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

Conde SapoC
20 de novembro de 2007 às 23:47
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:

crow123456789C
21 de novembro de 2007 às 06:29

Mt bom

XD

21 de novembro de 2007 às 09:48

@Conde Sapo

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

o melhor que eu já vi

(e já vi MUITOS)

 

Muito obrigado mesmo cara...

 

a proposito, vou arrumar onde por as action ids

Conde SapoC
21 de novembro de 2007 às 20:53

Já colaram no outro forum

AUhiHuaUehE

 

Achei em outro forum e achei interessante trazer-lo para os membros do GAYnet.
Créditos Andrew and Friends.
22 de novembro de 2007 às 08:56

que bom que puseram os créditos né :D

gayforum?? =x

Editado Novembro 22 por _ferrari_

24 de novembro de 2007 às 14:13

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

24 de novembro de 2007 às 17:12

@guilherme

ele nao sobe andares, e sim, o 9001 no 460 faz ele parar e voltar ao ponto de origem

AddictA
24 de novembro de 2007 às 18:49

Aprovado,

Movido para seção: Open Tibia > Actions!