Postado Julho 31, 2013 12 anos Hola queria saber como botar sistema de fly no meu otserver naruto seria o seguinte teria algumas vocaçoes que poderiam voar (ex: deidara no seu passaro de argila, sai no seu passaro de tinta, gaara na sua areia....) queria saber se tem como criar um sistema de !fly com up e down e so sertas vocaçoes poderiam voar ou so possa voar caso tenha um item( de preferencia so se tiver um item) e que as vocaçoes que possam voar cada uma tenha seu looktype é possivel ja ouvi falar de colocar um chão invisivel usando rme n sei direito por favor me ajudem que eu quero mto msmo estarein dando rep+5 por 5 dias seguidos para quem me ajudar presmo que não seja mto diferente de sistema fly de pokemon AJUDEI? DA REP +
Postado Julho 31, 2013 12 anos amigão, eu não tenho esse script e não sei como fazer, mas talvez o script do Mock possa ser útil, não sei se vai funcionar mas vou tentar ;p Créditos: Mock CONST_FLYVOID = 460 CONT_FLYOUTFIT = 239 IGNORED = {6495,7096,7099,5167,5162,5163,405,7100, 5315,5521,5316,5193,5192,5191,945,5048,923,950,951, 952,953,3623,954,955,949,9101,3352,9106,9103,1524, 1111,437,433,443,434,442,436,445,941,444,435,943, 1027,925,930,926,928,922,921,1112,406,904,931,934, 932,933,5319} --- Config here up = {} down = {} fly = {} fly.win = function(cid)-- Script by mock setPlayerStorageValue(cid, 102015,1) doPlayerSendTextMessage(cid,27,'Now you can fly.') end fly.add = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102015) == -1 or getPlayerStorageValue(cid,13241) == 1 then return false end if getPlayerStorageValue(cid, 102059) <= 0 then local outfit = getCreatureOutfit(cid) outfit.lookType = CONT_FLYOUTFIT doSetCreatureOutfit(cid, outfit, -1) setPlayerStorageValue(cid, 102059,1) doChangeSpeed(cid, 390) doPlayerSendTextMessage(cid,27,'Fale \'up\' e \'down\'.' ) return true else doPlayerSendTextMessage(cid,27, "Você ja esta voando.") return false end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end fly.using=function(cid)-- Script by mock return getPlayerStorageValue(cid, 102059) > 0 end fly.logout = function(cid)-- Script by mock if fly.using(cid) then local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102010,1) setPlayerStorageValue(cid, 102011,p.x) setPlayerStorageValue(cid, 102012,p.y) setPlayerStorageValue(cid, 102013,p.z) deletarEmVolta(p) fly.del(cid) end return true end fly.login = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102010) ~= -1 then setPlayerStorageValue(cid, 102010,-1) local p = {} p.x = getPlayerStorageValue(cid, 102011) p.y = getPlayerStorageValue(cid, 102012) p.z = getPlayerStorageValue(cid, 102013) if not checkAround(p) then fly.add(cid) down.gerarEmVolta(p) doTeleportThing(cid,p) end end return true end fly.die = function(cid)-- Script by mock if fly.using(cid) then local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102011,-1) setPlayerStorageValue(cid, 102012,-1) setPlayerStorageValue(cid, 102013,-1) deletarEmVolta(p) fly.del(cid) end return true end fly.del = function(cid)-- Script by mock if getPlayerStorageValue(cid, 102059) > 0 then if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then return false end doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 102059,-1) doChangeSpeed(cid, -390) return true end end function hasSqm2(pos)-- Script by mock local f = getTileThingByPos(pos) if f.itemid ~= 0 and f.itemid ~= 1 and (not isWalkable(pos) and not isInArray(IGNORED,f.itemid)) then return true end return false end function hasSqm3(pos)-- Script by mock local f = getTileThingByPos(pos) if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID and not isInArray(IGNORED,f.itemid) then return true end return false end function deletar(pos)-- Script by mock if hasSqm(pos) then local sqm = getSqmId(pos) if sqm.itemid == CONST_FLYVOID then doRemoveItem(sqm.uid,1) end end end function deletarEmVolta(pos) for x=-1,1 do for y=-1,1 do deletar({x=pos.x+x,y=pos.y+y,z=pos.z}) end end end function checkAround(pos)-- Script by mock for x=-1,1 do for y=-1,1 do if hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z}) then return true end end end return false end function fly.checkAround(pos)-- Script by mock local n = 0 for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if g.itemid == CONST_FLYVOID then n = n+1 end if isCreature(getTopCreature({x=pos.x+x,y=pos.y+y,z=pos.z}).uid) then return false end end end if n == 9 then return true end return false end function up.checkAround(pos)-- Script by mock for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if hasSqm3({x=pos.x+x,y=pos.y+y,z=pos.z}) or g.itemid == CONST_FLYVOID then return true end end end return false end function down.checkAround(pos,f)-- Script by mock for x=-1,1 do for y=-1,1 do local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z}) if (not f and hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z})) or g.itemid == CONST_FLYVOID then return true end end end return false end function gerarEmVolta(pos)-- Script by mock local n = 30000 for x=-1,1 do for y=-1,1 do n =n+1 doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n) end end end function doItem(pos,a,d)-- Script by mock if not hasSqm2(pos) then doCreateTile(CONST_FLYVOID,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doSetItemActionId(c.uid, a) end end function getSqmId(pos,t)-- Script by mock if hasSqm(pos) or t then pos.stackpos = 0 local i = getTileThingByPos(pos) return i end return nil end function down.doItem(pos,a)-- Script by mock if not hasSqm(pos) then doCreateTile(CONST_FLYVOID,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doSetItemActionId(c.uid, a) end end function down.gerarEmVolta(pos)-- Script by mock local n = 30000 for x=-1,1 do for y=-1,1 do n =n+1 down.doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n) end end end function doCreateTile(id,pos) -- Script by mock doAreaCombatHealth(0,0,pos,0,0,0,255) doCreateItem(id,1,pos) end Agora é 1 scritp em creaturescripts, 3 em talkactions e 1 em movements. Creaturescripts Em seu login.lua coloque isso:fly.login(cid) no seu logout.lua coloque isso:fly.logout(cid) e no script que o player morre coloque isso:fly.die(cid) Isso é para quando o player entrar e sair do server pra voltar onde ele estava :coolface: Movements Em movements.xml: <movevent type="StepIn" actionid="30001" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30002" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30003" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30004" event="script" value="fly.lua"/> <movevent type="StepOut" actionid="30005" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30006" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30007" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30008" event="script" value="fly.lua"/> <movevent type="StepIn" actionid="30009" event="script" value="fly.lua"/> <movevent type="AddItem" tileitem="1" itemid="460" event="script" value="fly.lua"/> E no script fly.lua ---Script by mock the bear function doCopyItem(item,pos) ---Script by mock the bear for i=1,6 do pos.z = pos.z+1 if hasSqm(pos) and getSqmId(pos).itemid ~= 10217 then local i = doCreateItem(item.itemid,item.type,pos) if item.actionid ~= 0 then doSetItemActionid(i,item.actionid) end doSendMagicEffect(pos,9) return i else local p2 = {x=pos.x+1,y=pos.y+1,z=pos.z} doSendDistanceShoot(pos,p2,40) doSendMagicEffect(pos,2) end end end function onAddItem(item,pos,k) ---Script by mock the bear doCopyItem(item,k) doRemoveItem(item.uid,item.type == 0 and 1 or item.type) end function onStepIn(cid, item, position, fromPosition) ---Script by mock the bear local dir = { [30004] = {0,6,7}, [30007] = {7,0,6,1,5}, [30008] = {1,5,7}, [30009] = {5,4,2,1,7}, [30006] = {2,5,4}, [30003] = {4,3,6,2,5}, [30002] = {3,4,6}, [30001] = {6,0,7,3,4}, } if isPlayer(cid) then local chkps = {x=position.x,y=position.y,z=position.z} local ig = false for i,b in pairs(dir[item.actionid]) do local nw = getPosByDir(chkps,b) local g = getTileThingByPos(nw) if hasSqm3(nw) or g.itemid == CONST_FLYVOID or nw.x < 35 or nw.y < 35 then ig = true break end end if not ig then deletarEmVolta(fromPosition) gerarEmVolta(getCreaturePosition(cid)) else doTeleportThing(cid,fromPosition,false) doPlayerSendTextMessage(cid,27, "Sorry, you cannot fly here.") end end end function onStepOut(cid, item, position, fromPosition,q) addEvent(function(pos) if fly.checkAround(pos) then deletarEmVolta(pos) end end,10000,position) end Talkactions Em talkactions.xml <talkaction words="up" case-sensitive="no" event="script" value="flyup.lua"/> <talkaction words="down" case-sensitive="no" event="script" value="flydown.lua"/> <talkaction words="!fly" case-sensitive="no" event="script" value="fly.lua"/> Em fly.lua function onSay(cid, words, param) --- By moc kthe bear (MTB) if param ~= '' and getPlayerGroupId(cid) > 3 then local cida = getPlayerByName(param) if cida and isPlayer(cida) then fly.win(cida) end return true end if fly.using(cid) then local p = getCreaturePosition(cid) p.stackpos = 0 local f = getTileThingByPos(p) if fly.del(cid) then if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then return true else setPlayerStorageValue(cid,10941,1) local p = getCreaturePosition(cid) setPlayerStorageValue(cid, 102011,p.x) setPlayerStorageValue(cid, 102012,p.y) setPlayerStorageValue(cid, 102013,p.z) return true end else doPlayerSendTextMessage(cid,27,'You cannot turn off the fly here.') end else if fly.add(cid) then local pos = getCreaturePosition(cid) if getSqmId(pos).itemid == 10217 then down.gerarEmVolta(pos) end return true else doPlayerSendTextMessage(cid,27,'You cannot fly.') return true end end return true endFlyup.lua function onSay(cid)--- By moc kthe bear (MTB) local time = os.time() if time < getPlayerStorageValue(cid, 102054) then doPlayerSendCancel(cid, "You are exhausted.") return true end if not fly.using(cid) then return false end local pos = getCreaturePosition(cid) pos.z = pos.z-1 if hasSqm(pos) or pos.z < 0 or up.checkAround(pos) then doPlayerSendTextMessage(cid,27,'You cannot fly higger.') return true else gerarEmVolta(pos) doTeleportThing(cid,pos) pos.z = pos.z+1 deletarEmVolta(pos) end return true endFlydown.lua function onSay(cid)--- By moc kthe bear (MTB) local time = os.time() if time < getPlayerStorageValue(cid, 102054) then doPlayerSendCancel(cid, "You are exhausted.") return true end if not fly.using(cid) then return false end local pos = getCreaturePosition(cid) pos.stackpos = 0 local g = getTileThingByPos(pos) pos.z = pos.z+1 local f = getTileThingByPos(pos) if getSqmId(getCreaturePosition(cid)).itemid ~= CONST_FLYVOID or down.checkAround(pos) or (g.itemid ~= CONST_FLYVOID and f.itemid ~= CONST_FLYVOID and f.itemid ~= 0 and f.itemid ~= 1) or (not isWalkable(pos,true,false,false) and hasSqm(pos)) or (hasSqm(pos) and not getTileHouseInfo(pos)) == 0 then doPlayerSendTextMessage(cid,27,'You cannot go to down here.') return true else down.gerarEmVolta(pos) doTeleportThing(cid,pos) pos.z = pos.z-1 deletarEmVolta(pos) end return true end Ot Design: https://discord.gg/VgtVRNmCD7
Postado Julho 31, 2013 12 anos a segunda linha CONT_FLYOUTFIT = 239 Ot Design: https://discord.gg/VgtVRNmCD7
Postado Agosto 1, 2013 12 anos cara é só mudar o Oufit para o do Deidara se não souber como Mudar me avise te explico Contato : under12451 (Skype) Meus Tutoriais O Que é DDoS ? como se Proteger Por Tony Criando Servidor Poketibia Sistemas de Vips com [VIP] No Nome Cyclops - Mistrock - 100% AFK Como Editar um NPC 8.6 [ Itens e Preços] Editando Swords 8.6 Como Editar um NPC 8.6 [VENDA]
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.