Postado Maio 26, 2014 10 anos Autor Continuou do mesmo jeito, ainda entra na pz estando pk, tanto na versão para kina, quanto na versão para mages :x Eu fiz mas nem testei, estou meio sem tempo, porém a lógica está certa, tente então desta forma : local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)~=1 and t>0) then if(getCreatureSkullType(cid) != SKULL_NONE and getTilePzInfo(tmp)==1) then doCreatureSetNoMove(cid, false) return TRUE end doCreatureSetNoMove(cid, true) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, false) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then tmp = getCreaturePos(cid) dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if (doTileQueryAdd(cid, tmp)==1 or (getCreatureSkullType(cid)!=SKULL_NONE and getTilePzInfo(tmp)==1)) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doCreatureSetNoMove(cid, false) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, true) end end Bom, se não der, quarta-feira tenho o dia livre e tento rever melhor, tá difícil arranjar um tempinho livre.
Postado Maio 27, 2014 10 anos Continuou na mesma :/ Obs: Estou te dando rep, por tentar, e principalmente por se dar ao trabalho de responder, não são todos nesse fórum que fazem o mesmo. Valeu ai
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.