alisonjf 2 #1 Postado 26 Novembro, 2008 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 1 Muurilo_vaalim reagiu a isto Compartilhar este post Link para o post
Nord 2 #2 Postado 29 Novembro, 2008 Funciona mesmo, só que atravessa algumas paredes xP Aprovado Compartilhar este post Link para o post
Mock 32 #3 Postado 29 Novembro, 2008 Eu ja vi esse script em varios ots so que nunca vi aqui postado no ot net fico massa tem alguns errozinhos ocmo atravessa parede com o nord disse mais nada q n possa ser arrumado Compartilhar este post Link para o post
Hauhua 0 #4 Postado 29 Novembro, 2008 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 #5 Postado 29 Novembro, 2008 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 #6 Postado 29 Novembro, 2008 (editado) Eu pisei no tapete e ele saiu andando e se auto destruiu hsaueiahseuha. Não tem como fazer uma rota fixa pra ele? Editado 29 Novembro, 2008 por Hauhua Compartilhar este post Link para o post
gatuxos 0 #7 Postado 10 Dezembro, 2008 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? Compartilhar este post Link para o post
Bull Yincol 0 #8 Postado 13 Dezembro, 2008 mais e onde o tapete fica?? Compartilhar este post Link para o post
Soult 0 #9 Postado 15 Dezembro, 2008 Mano é muito louco esse scripter aueeea parabéns Compartilhar este post Link para o post
Botijão 0 #10 Postado 15 Dezembro, 2008 Dava pra encurtar umas coisinhas... De qualquer maneira, tá bom o script =D Compartilhar este post Link para o post
skyofdeus 6 #11 Postado 16 Dezembro, 2008 Legal esse Script ^^ Compartilhar este post Link para o post
Demoniac Johnny 0 #12 Postado 23 Dezembro, 2008 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 #13 Postado 23 Dezembro, 2008 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 #14 Postado 25 Dezembro, 2008 muito r0x meu deus funciona direitinho akew XD bem legal msm Compartilhar este post Link para o post
gslayeryourotsv9 0 #15 Postado 12 Março, 2009 (editado) 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 12 Abril, 2009 por Matcher Compartilhar este post Link para o post
BenGo 0 #16 Postado 12 Março, 2009 usauhas muito bom msm, ate colokei no meu ot eo pessoal adorou =* Compartilhar este post Link para o post
lols123456 0 #17 Postado 12 Abril, 2009 Eu não entendi onde coloca isso " <movevent event="StepIn" itemid="1798" script="flyingcarpet.lua" /> Compartilhar este post Link para o post
Mock 32 #18 Postado 12 Abril, 2009 Obrigado por quebrarem as regras e reviver um topico. Compartilhar este post Link para o post