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