Ir para conteúdo
Entre para seguir isso  
alisonjf

[8.1+] Tapete Voador

Recommended Posts

alisonjf    2
alisonjf

Nome: Tapete voador

Versão: 8.1+

Tipo de Script: MoveEvent

Servidor Testado: Nenhum

Créditos: DeGhost

-------------------------------------------------------------------------

 

Ae de novo galera. Eu trouxe o script 'Taxi System' pra vocês agora to trazendo o tapete voador que é um pouco mais engraçado. Vamos ao trabalho:

 

 

Dentro da pasta data/movements/scripts, crie um arquivo chamado flyingcarpet.lua e dentro insira:

local storages = {
   isMoving = 12550,
   direction = 12551,
   speed = 12552
}
function CarMoveLeft(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z}

new1pos = {x=x.pos.x-2, y=x.pos.y-1, z=x.pos.z}
new2pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z}
new3pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z}

new4pos = {x=x.pos.x-2, y=x.pos.y, z=x.pos.z}

new6pos = {x=x.pos.x, y=x.pos.y, z=x.pos.z}

new7pos = {x=x.pos.x-2, y=x.pos.y+1, z=x.pos.z}
new8pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z}
new9pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z}


gate1pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate2pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate3pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z, stackpos=1}

gate4pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate6pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate7pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate8pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate9pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z, stackpos=1}

get1gate = getThingfromPos(gate1pos)
get2gate = getThingfromPos(gate2pos)
get3gate = getThingfromPos(gate3pos)
get4gate = getThingfromPos(gate4pos)
get6gate = getThingfromPos(gate6pos)
get7gate = getThingfromPos(gate7pos)
get8gate = getThingfromPos(gate8pos)
get9gate = getThingfromPos(gate9pos)

doCreateItem(1798,1,newpos)
doCreateItem(1794,1,new1pos)
doCreateItem(1795,1,new2pos)
doCreateItem(1796,1,new3pos)
doCreateItem(1797,1,new4pos)
doCreateItem(1799,1,new6pos)
doCreateItem(1800,1,new7pos)
doCreateItem(1801,1,new8pos)
doCreateItem(1802,1,new9pos)
doTeleportThing(x.cid, newpos, FALSE)
doRemoveItem(Car.uid,1)
doRemoveItem(get1gate.uid,1)
doRemoveItem(get2gate.uid,1)
doRemoveItem(get3gate.uid,1)
doRemoveItem(get4gate.uid,1)
doRemoveItem(get6gate.uid,1)
doRemoveItem(get7gate.uid,1)
doRemoveItem(get8gate.uid,1)
doRemoveItem(get9gate.uid,1)


end

function CarMoveRight(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z}

new1pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z}
new2pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z}
new3pos = {x=x.pos.x+2, y=x.pos.y-1, z=x.pos.z}

new4pos = {x=x.pos.x, y=x.pos.y, z=x.pos.z}

new6pos = {x=x.pos.x+2, y=x.pos.y, z=x.pos.z}

new7pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z}
new8pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z}
new9pos = {x=x.pos.x+2, y=x.pos.y+1, z=x.pos.z}



gate1pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate2pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate3pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z, stackpos=1}

gate4pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate6pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate7pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate8pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate9pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z, stackpos=1}

get1gate = getThingfromPos(gate1pos)
get2gate = getThingfromPos(gate2pos)
get3gate = getThingfromPos(gate3pos)
get4gate = getThingfromPos(gate4pos)
get6gate = getThingfromPos(gate6pos)
get7gate = getThingfromPos(gate7pos)
get8gate = getThingfromPos(gate8pos)
get9gate = getThingfromPos(gate9pos)

doCreateItem(1798,1,newpos)
doCreateItem(1794,1,new1pos)
doCreateItem(1795,1,new2pos)
doCreateItem(1796,1,new3pos)
doCreateItem(1797,1,new4pos)
doCreateItem(1799,1,new6pos)
doCreateItem(1800,1,new7pos)
doCreateItem(1801,1,new8pos)
doCreateItem(1802,1,new9pos)
doTeleportThing(x.cid, newpos, FALSE)
doRemoveItem(Car.uid,1)
doRemoveItem(get1gate.uid,1)
doRemoveItem(get2gate.uid,1)
doRemoveItem(get3gate.uid,1)
doRemoveItem(get4gate.uid,1)
doRemoveItem(get6gate.uid,1)
doRemoveItem(get7gate.uid,1)
doRemoveItem(get8gate.uid,1)
doRemoveItem(get9gate.uid,1)

end
function CarMoveUp(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z}

new1pos = {x=x.pos.x-1, y=x.pos.y-2, z=x.pos.z}
new2pos = {x=x.pos.x, y=x.pos.y-2, z=x.pos.z}
new3pos = {x=x.pos.x+1, y=x.pos.y-2, z=x.pos.z}

new4pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z}

new6pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z}

new7pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z}
new8pos = {x=x.pos.x, y=x.pos.y, z=x.pos.z}
new9pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z}

gate1pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate2pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate3pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z, stackpos=1}

gate4pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate6pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate7pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate8pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate9pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z, stackpos=1}

get1gate = getThingfromPos(gate1pos)
get2gate = getThingfromPos(gate2pos)
get3gate = getThingfromPos(gate3pos)
get4gate = getThingfromPos(gate4pos)
get6gate = getThingfromPos(gate6pos)
get7gate = getThingfromPos(gate7pos)
get8gate = getThingfromPos(gate8pos)
get9gate = getThingfromPos(gate9pos)

doCreateItem(1798,1,newpos)
doCreateItem(1794,1,new1pos)
doCreateItem(1795,1,new2pos)
doCreateItem(1796,1,new3pos)
doCreateItem(1797,1,new4pos)
doCreateItem(1799,1,new6pos)
doCreateItem(1800,1,new7pos)
doCreateItem(1801,1,new8pos)
doCreateItem(1802,1,new9pos)
doTeleportThing(x.cid, newpos, FALSE)
doRemoveItem(Car.uid,1)
doRemoveItem(get1gate.uid,1)
doRemoveItem(get2gate.uid,1)
doRemoveItem(get3gate.uid,1)
doRemoveItem(get4gate.uid,1)
doRemoveItem(get6gate.uid,1)
doRemoveItem(get7gate.uid,1)
doRemoveItem(get8gate.uid,1)
doRemoveItem(get9gate.uid,1)
end

function CarMoveDown(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z}

new1pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z}
new2pos = {x=x.pos.x, y=x.pos.y, z=x.pos.z}
new3pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z}

new4pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z}

new6pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z}

new7pos = {x=x.pos.x-1, y=x.pos.y+2, z=x.pos.z}
new8pos = {x=x.pos.x, y=x.pos.y+2, z=x.pos.z}
new9pos = {x=x.pos.x+1, y=x.pos.y+2, z=x.pos.z}

gate1pos = {x=x.pos.x-1, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate2pos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z, stackpos=1}
gate3pos = {x=x.pos.x+1, y=x.pos.y-1, z=x.pos.z, stackpos=1}

gate4pos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate6pos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z, stackpos=1}

gate7pos = {x=x.pos.x-1, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate8pos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z, stackpos=1}
gate9pos = {x=x.pos.x+1, y=x.pos.y+1, z=x.pos.z, stackpos=1}

get1gate = getThingfromPos(gate1pos)
get2gate = getThingfromPos(gate2pos)
get3gate = getThingfromPos(gate3pos)
get4gate = getThingfromPos(gate4pos)
get6gate = getThingfromPos(gate6pos)
get7gate = getThingfromPos(gate7pos)
get8gate = getThingfromPos(gate8pos)
get9gate = getThingfromPos(gate9pos)

doCreateItem(1798,1,newpos)
doCreateItem(1794,1,new1pos)
doCreateItem(1795,1,new2pos)
doCreateItem(1796,1,new3pos)
doCreateItem(1797,1,new4pos)
doCreateItem(1799,1,new6pos)
doCreateItem(1800,1,new7pos)
doCreateItem(1801,1,new8pos)
doCreateItem(1802,1,new9pos)
doTeleportThing(x.cid, newpos, FALSE)
doRemoveItem(Car.uid,1)
doRemoveItem(get1gate.uid,1)
doRemoveItem(get2gate.uid,1)
doRemoveItem(get3gate.uid,1)
doRemoveItem(get4gate.uid,1)
doRemoveItem(get6gate.uid,1)
doRemoveItem(get7gate.uid,1)
doRemoveItem(get8gate.uid,1)
doRemoveItem(get9gate.uid,1)

end
function onStepIn(cid, item, position, fromPosition)
local pos = position
if isPlayer(cid) == 1 then
   local status = {
       isMoving = getPlayerStorageValue(cid, storages.isMoving),
       direction = getPlayerStorageValue(cid, storages.direction),
       speed = getPlayerStorageValue(cid, storages.speed)
   }
   if status.speed <= 0 then
       setPlayerStorageValue(cid, storages.speed, 500)
       status.speed = 800
   elseif status.speed >= 3500 then
       setPlayerStorageValue(cid, storages.speed, 500)
       status.speed = 800    
   end
   CarPos = getThingPos(item.uid)



    if status.isMoving == 1 then

	local x = {cid = cid, pos = pos, Cpos = CarPos}
       if status.direction == 1  then

           CheckRight = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 1})
	    	CheckLeft = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 1})
           CheckRight2 = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 2})
	    	CheckLeft2 = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 2})





    	if (isWall(CheckLeft.itemid) == 1 or isWall(CheckLeft2.itemid) == 1 or isCreature(CheckLeft.uid) >0) and (isWall(CheckRight.itemid)==0 and  isWall(CheckRight2.itemid)==0) then 
               setPlayerStorageValue(cid, storages.direction, 2)
               addEvent(CarMoveRight, status.speed, x)

           elseif isWall(CheckLeft.itemid) == 0 and isWall(CheckLeft2.itemid) == 0 then
               addEvent(CarMoveLeft, status.speed, x)
		else

		setPlayerStorageValue(cid, storages.isMoving, 1)

           end



       elseif status.direction == 2 then
           CheckRight = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 1})
	    	CheckLeft = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 1})
           CheckRight2 = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 2})
	    	CheckLeft2 = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 2})




    	if (isWall(CheckRight.itemid) == 1 or isWall(CheckRight2.itemid) == 1 or isCreature(CheckRight.uid) >0) and ( isWall(CheckLeft.itemid) == 0 and  isWall(CheckLeft2.itemid) == 0) then 
               setPlayerStorageValue(cid, storages.direction, 1)
               addEvent(CarMoveLeft, status.speed, x)

           elseif isWall(CheckRight.itemid) == 0 and isWall(CheckRight2.itemid) == 0 then
               addEvent(CarMoveRight, status.speed, x)
		else

		setPlayerStorageValue(cid, storages.isMoving, 1)
           end


       elseif status.direction == 3 then
          CheckUp = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 1})
          CheckDown = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 1})
          CheckUp2 = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 2})
          CheckDown2 = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 2})


		if (isWall(CheckUp.itemid) == 1 or isWall(CheckUp2.itemid) == 1 or isCreature(CheckUp.uid) >0) and (isWall(CheckDown.itemid) == 0 and  isWall(CheckDown2.itemid) == 0) then

               setPlayerStorageValue(cid, storages.direction, 4)
               addEvent(CarMoveDown, status.speed, x)

elseif isWall(CheckUp.itemid) == 0 and isWall(CheckUp2.itemid) == 0 then
	     addEvent(CarMoveUp, status.speed, x)

           else

			setPlayerStorageValue(cid, storages.isMoving, 1)
           end


       elseif status.direction == 4 then
          CheckUp = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 1})
          CheckDown = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 1})
          CheckUp2 = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 2})
          CheckDown2 = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 2})


		if (isWall(CheckDown.itemid) == 1 or isWall(CheckDown2.itemid) == 1 or isCreature(CheckDown.uid) >0) and (isWall(CheckUp.itemid) == 0 and  isWall(CheckUp2.itemid) == 0) then

               setPlayerStorageValue(cid, storages.direction, 3)
               addEvent(CarMoveUp, status.speed, x)

elseif isWall(CheckDown.itemid) == 0 and isWall(CheckDown2.itemid) == 0 then
	     addEvent(CarMoveDown, status.speed, x)

           else

			setPlayerStorageValue(cid, storages.isMoving, 1)
           end


       end


   elseif status.isMoving == -1 then
       setPlayerStorageValue(cid, storages.isMoving, 1)
   end
end
end

 

Depois, abra o arquivo movements.xml que fica dentro da pasta data/movements e coloque a seguinte linha:

<movevent event="StepIn" itemid="1798" script="flyingcarpet.lua" />

 

E então na pasta data/talkactions/scripts crie um arquivo chamado flyingcarpet.lua e coloque:

local storages = {
   isMoving = 12550,
   direction = 12551,
   speed = 12552
}
function onSay(cid, words, param)
local status = {
   isMoving = getPlayerStorageValue(cid, storages.isMoving),
   direction = getPlayerStorageValue(cid, storages.direction),
   speed = getPlayerStorageValue(cid, storages.speed)
}
local controls = {
   ["up"] = {storage = storages.direction, new = 3, txt = "up"},
   ["down"] = {storage = storages.direction, new = 4, txt = "down"}, 
   ["left"] = {storage = storages.direction, new = 1, txt = "left"}, 
   ["right"] = {storage = storages.direction, new = 2, txt = "right"},
   ["speedup"] = {storage = storages.speed, new = status.speed-50, txt = "fast"},
   ["speeddown"] = {storage = storages.speed, new = status.speed+50, txt = "slow"},
   ["stop"] = {storage = storages.direction, new = -1, txt = "stop"}
}
if status.isMoving == 1 then
   ctrl = controls[param]
   if (ctrl ~= nil) then
       setPlayerStorageValue(cid, ctrl.storage, ctrl.new)
       doCreatureSay(cid, ctrl.txt, TALKTYPE_SAY)
   else
       doSendMagicEffect(getPlayerPosition(cid), 2)
       doPlayerSendCancel(cid, "Invalid operation.")
   end
else
   doPlayerSendCancel(cid, "You are not in a Flying Carpet.")
end
end

 

Na pasta data/talkactions abra o arquivo talkactions.xml e insira:

<talkaction words="carpet" script="flyingcarpet.lua" />

 

 

Função isWall:

function isWall(id)
local walls = {1025, 1032, 1028, 1030, 1035, 1027, 1219, 4645, 4647, 4646, 4644}
if isInArray(walls, id) == 1 then
return 1
else
return 0
end
end

 

 

Controles:

 

Direções

- carpet "left

- carpet "right

- carpet "up

- carpet "down

 

Velocidade

- carpet "speedup

- carpet "speeddown

 

Parando ele

- carpet "stop

--------------------------------------------------------------------------

 

Gostaram: Doem OT$ :)

Reclamações/Dúvidas: Postem

Compartilhar este post


Link para o post
Nord    2
Nord

Funciona mesmo, só que atravessa algumas paredes xP

 

Aprovado

Compartilhar este post


Link para o post
Mock    32
Mock

Eu ja vi esse script em varios ots so que nunca vi aqui postado no ot net :P

 

fico massa tem alguns errozinhos ocmo atravessa parede com o nord disse mais nada q n possa ser arrumado :P

Compartilhar este post


Link para o post
Hauhua    0
Hauhua

Onde que é pra colocar na Função isWall?

 

E como que funciona o sistema?

Você sobe no tapete e vai digitando os comandos ou ele tem uma rota definida?

Compartilhar este post


Link para o post
Deragon    25
Deragon

hauhua

vc vai no tapete

e fala

carpet "up

ai ele vai fica indo pra /\ indefinidamente

se encontrar um ID que está na função iswall (cuja tem q ser add no global.lua ou functions.lua) ele pára e vai pro sentido contrário, no caso \/

Compartilhar este post


Link para o post
Hauhua    0
Hauhua

Eu pisei no tapete e ele saiu andando e se auto destruiu hsaueiahseuha.

Não tem como fazer uma rota fixa pra ele?

Editado por Hauhua

Compartilhar este post


Link para o post
gatuxos    0
gatuxos

Ei quando eu dou a função fala que você nao esta em cima do "Flying Carpet"...

 

 

Qual é o ID que tenho q estar em cima para poder viajar? :D

Compartilhar este post


Link para o post
Bull Yincol    0
Bull Yincol

mais e onde o tapete fica??

Compartilhar este post


Link para o post
Soult    0
Soult

Mano é muito louco esse scripter aueeea

parabéns

Compartilhar este post


Link para o post
Botijão    0
Botijão

Dava pra encurtar umas coisinhas...

De qualquer maneira, tá bom o script =D

Compartilhar este post


Link para o post
skyofdeus    6
skyofdeus

Legal esse Script ^^

Compartilhar este post


Link para o post
Demoniac Johnny    0
Demoniac Johnny

Hum

 

Eu ja tinha visto esse script, não lembro a onde, mas lembro, o DeGhost tinha baseado esse script no Car System.

 

Muito bom traze-lo a OTnet muito inovador ^^

Compartilhar este post


Link para o post
541320    0
541320
function isWall(id)

local walls = {1025, 1032, 1028, 1030, 1035, 1027, 1219, 4645, 4647, 4646, 4644}

if isInArray(walls, id) == 1 then

return 1

else

return 0

end

end

 

mas aonde colok esse código?

Compartilhar este post


Link para o post
Iago Felipe    5
Iago Felipe

muito r0x meu deus

 

funciona direitinho akew XD bem legal msm

Compartilhar este post


Link para o post
gslayeryourotsv9    0
gslayeryourotsv9

tipo cara eu tenho q fazer o tapate no map editor e só ? ou tem q colokar id essas coisas action id uniquid essas coisas ?

 

[12/03/2009 19:20:08] Lua Script Error: [MoveEvents Interface]

[12/03/2009 19:20:08] in a timer event called from:

[12/03/2009 19:20:08] data/movements/scripts/flyingcarpet.lua:onStepIn

[12/03/2009 19:20:08] luaDoRemoveItem(). Item not found

:/ me ajuda plz

Editado por Matcher

Compartilhar este post


Link para o post
BenGo    0
BenGo

usauhas muito bom msm, ate colokei no meu ot eo pessoal adorou =*

Compartilhar este post


Link para o post
lols123456    0
lols123456

Eu não entendi onde coloca isso "

<movevent event="StepIn" itemid="1798" script="flyingcarpet.lua" />

Compartilhar este post


Link para o post
Mock    32
Mock

Obrigado por quebrarem as regras e reviver um topico.

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×