Ir para conteúdo
  • 0

Spell doMoveCreature


161996

Pergunta

Olá pessoal, estou precisando urgente de uma spell com doMoveCreature que é igual esta abaixo porém sem o bug de atravessar rios e paredes... (obs: ja coloquei blockwalls="1" e tentei de tudo). Ela é controlada pelo ctrl+setas do teclado e é muito legal para usar em servidores derivados.



Spell:





local area = {

{0,0,0},

{0,3,0},

{0,0,0},

}


function onDash(cid)

local poslook = getCreatureLookPosition(cid)

poslook.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

if isWalkable(poslook, false, false, false) then

if not isCreature(getThingfromPos(poslook).uid) then

doMoveCreature(cid, getPlayerLookDirection(cid))

doSendMagicEffect(getPlayerPosition(cid), 2)

return TRUE

else

doMoveCreature(cid, getPlayerLookDirection(cid))

doAreaCombatHealth(0, 1, poslook, area, -getCreatureSpeed(cid)*2/(getCreatureHealth(cid)/300), -getCreatureSpeed(cid)*3/(getCreatureHealth(cid)/30), 9)

doCreatureSay(getThingfromPos(poslook).uid, 'Auch', TALKTYPE_MONSTER)

doSetItemOutfit(getThingfromPos(poslook).uid, 2317, 1*1000)

doSendMagicEffect(getCreaturePosition(getThingfromPos(poslook).uid), 31)

return TRUE

end

end

end


function onCastSpell(cid, var)local distance = 40


for i = 0, distance do

addEvent(onDash,90*i,cid)

end

return TRUE

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






Alguém poderia fazer outra??! Aguardando.

Editado por walquer
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

eu tb estou com esse problema no meu serv avatar... tem como fazer uma lista de storages pra salvar no player quando ele morrer? pq a segunda spell como vc disse usa storage e perde ao morrer

Link para o comentário
Compartilhar em outros sites

  • 0

Muitos posts, e várias teorias que não chegam a lugar nenhum.

 

Só vou dizer uma coisa, não precisa mexer nas sources, antes de usar doMoveCreature, verifica se é possível adicionar o jogador no tile com a função doTileQueryAdd, por exemplo:

if doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then
	doMoveCreature(cid, position)
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...