Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.Qual servidor ou website você utiliza como base? 

 

Qual o motivo deste tópico? ajuda com spell

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

alguém consegue fazer a Sprite do personagem desaparecer ao teleportar no alvo quando uso a skill?

 

Você tem o código disponível? Se tiver publique-o aqui: 

local config = {
efeitoTele = 3, -- efeito q ira aparacer a cada teleport.
efeitoDamage = 134, -- efeito q ira aparecer ao hitar no alvo
hits = 1, -- quantos hits vai dar
delay = 500, -- intervalo de tempo a cada hit
min = 2000, -- dano minimo
max = 2400, -- dano maximo
damage = COMBAT_PHYSICALDAMAGE -- tipo do dano
}
function isWalkable(pos, creature, pz, proj) -- 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 not pz then return false 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 true
                                    end
                    end
    end
    return true
end
function getPosDirs(p, dir) -- mkalo
    return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end
function validPos(pos)
tb = {}
for i = 1, 8 do
  newpos = getPosDirs(pos, i)
  if isWalkable(newpos) then
   table.insert(tb, newpos)
  end
end
table.insert(tb, pos)
return tb
end
spell = {
start = function (cid, target, markpos, hits)
    if not isCreature(cid) then return true end
    if not isCreature(target) or hits < 1 then
                 doTeleportThing(cid, markpos)
                 doSendMagicEffect(getThingPos(cid), config.efeitoTele)
                 return true
    end
    posAv = validPos(getThingPos(target))
    rand = #posAv == 1 and 1 or #posAv - 1
    doSendMagicEffect(getThingPos(cid), config.efeitoTele)
    doTeleportThing(cid, posAv[math.random(1, rand)])
    doAreaCombatHealth(cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage)
    addEvent(spell.start, config.delay, cid, target, markpos, hits - 1)
   end
}
function onCastSpell(cid)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z}
target = getCreatureTarget(cid)
if target then
  spell.start(cid, target, getThingPos(cid), config.hits)
doSendMagicEffect(position1, 138)
end
return true
end

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

chidori.lua

Link para o post
Compartilhar em outros sites

dessa forma?

 

local config = {
    efeitoTele = 3, -- efeito que irá aparecer a cada teleport.
    efeitoDamage = 134, -- efeito que irá aparecer ao acertar o alvo
    hits = 10, -- quantos hits serão dados
    delay = 500, -- intervalo de tempo entre cada hit
    min = 2000, -- dano mínimo
    max = 2400, -- dano máximo
    damage = COMBAT_PHYSICALDAMAGE, -- tipo de dano
	animation = 138 -- animação do feitiço
}

function isWalkable(pos, creature, pz, proj) -- nord / fixed: odranoels.s
    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 not pz then 
        return false 
    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 true
            end
        end
    end
    return true
end

function getPosDirs(p, dir) -- mkalo / fixed: odranoels.s
    return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or 
           dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or 
           dir == 3 and {x=p.x, y=p.y+1, z=p.z} or 
           dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or 
           dir == 5 and {x=p.x+1, y=p.y, z=p.z} or 
           dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or 
           dir == 7 and {x=p.x, y=p.y-1, z=p.z} or 
           dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end

function validPos(pos)
    local tb = {}
    for i = 1, 8 do
        local newpos = getPosDirs(pos, i)
        if isWalkable(newpos) then
            table.insert(tb, newpos)
        end
    end
    table.insert(tb, pos)
    return tb
end

spell = { -- fixed: odranoels.s
    start = function (cid, target, markpos, hits)
        if not isCreature(cid) then 
            return true 
        end
        if not isCreature(target) or hits < 1 then
            doTeleportThing(cid, markpos)
            doSendMagicEffect(getThingPos(cid), config.efeitoTele)
            return true
        end
        local posAv = validPos(getThingPos(target))
        local rand = #posAv == 1 and 1 or #posAv - 1
        doSendMagicEffect(getThingPos(cid), config.efeitoTele)
       
        local playerOutfit = getCreatureOutfit(cid)
        setCreatureOutfit(cid, {lookType = 0})
        
        local hitCount = 0
        local originalPos = getThingPos(cid)
        local function doHit()
            hitCount = hitCount + 1
            if hitCount <= config.hits then
                addEvent(function()
                    doTeleportThing(cid, posAv[math.random(1, rand)])
                    addEvent(doAreaCombatHealth, config.delay, cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage)
                    addEvent(doHit, config.delay)
                end, config.delay)
            else
                addEvent(function()
                    if isCreature(cid) then
                        doTeleportThing(cid, originalPos)
                        setCreatureOutfit(cid, playerOutfit)
                    end
                end, config.delay)
            end
        end
        doHit()
    end
}

function onCastSpell(cid)
    local target = getCreatureTarget(cid)
    if target then
        local position1 = {x = getThingPosition(target).x + 1, y = getThingPosition(target).y + 1, z = getThingPosition(target).z}
        spell.start(cid, target, getThingPos(cid), config.hits)
        doSendMagicEffect(position1, config.animation)
    end
    return true
end 

function setCreatureOutfit(cid, outfit)  -- odranoels.s
    if outfit.lookType == nil then
        return
    end
    
    local lookType = outfit.lookType
    local lookHead = outfit.lookHead or 0
    local lookBody = outfit.lookBody or 0
    local lookLegs = outfit.lookLegs or 0
    local lookFeet = outfit.lookFeet or 0
    local addons = outfit.addons or 0
    
    doCreatureChangeOutfit(cid, {lookType = lookType, lookHead = lookHead, lookBody = lookBody, lookLegs = lookLegs, lookFeet = lookFeet, addons = addons})
end

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Odranoel S.S disse:

dessa forma?

 



local config = {
    efeitoTele = 3, -- efeito que irá aparecer a cada teleport.
    efeitoDamage = 134, -- efeito que irá aparecer ao acertar o alvo
    hits = 10, -- quantos hits serão dados
    delay = 500, -- intervalo de tempo entre cada hit
    min = 2000, -- dano mínimo
    max = 2400, -- dano máximo
    damage = COMBAT_PHYSICALDAMAGE, -- tipo de dano
	animation = 138 -- animação do feitiço
}

function isWalkable(pos, creature, pz, proj) -- nord / fixed: odranoels.s
    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 not pz then 
        return false 
    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 true
            end
        end
    end
    return true
end

function getPosDirs(p, dir) -- mkalo / fixed: odranoels.s
    return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or 
           dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or 
           dir == 3 and {x=p.x, y=p.y+1, z=p.z} or 
           dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or 
           dir == 5 and {x=p.x+1, y=p.y, z=p.z} or 
           dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or 
           dir == 7 and {x=p.x, y=p.y-1, z=p.z} or 
           dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}
end

function validPos(pos)
    local tb = {}
    for i = 1, 8 do
        local newpos = getPosDirs(pos, i)
        if isWalkable(newpos) then
            table.insert(tb, newpos)
        end
    end
    table.insert(tb, pos)
    return tb
end

spell = { -- fixed: odranoels.s
    start = function (cid, target, markpos, hits)
        if not isCreature(cid) then 
            return true 
        end
        if not isCreature(target) or hits < 1 then
            doTeleportThing(cid, markpos)
            doSendMagicEffect(getThingPos(cid), config.efeitoTele)
            return true
        end
        local posAv = validPos(getThingPos(target))
        local rand = #posAv == 1 and 1 or #posAv - 1
        doSendMagicEffect(getThingPos(cid), config.efeitoTele)
       
        local playerOutfit = getCreatureOutfit(cid)
        setCreatureOutfit(cid, {lookType = 0})
        
        local hitCount = 0
        local originalPos = getThingPos(cid)
        local function doHit()
            hitCount = hitCount + 1
            if hitCount <= config.hits then
                addEvent(function()
                    doTeleportThing(cid, posAv[math.random(1, rand)])
                    addEvent(doAreaCombatHealth, config.delay, cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage)
                    addEvent(doHit, config.delay)
                end, config.delay)
            else
                addEvent(function()
                    if isCreature(cid) then
                        doTeleportThing(cid, originalPos)
                        setCreatureOutfit(cid, playerOutfit)
                    end
                end, config.delay)
            end
        end
        doHit()
    end
}

function onCastSpell(cid)
    local target = getCreatureTarget(cid)
    if target then
        local position1 = {x = getThingPosition(target).x + 1, y = getThingPosition(target).y + 1, z = getThingPosition(target).z}
        spell.start(cid, target, getThingPos(cid), config.hits)
        doSendMagicEffect(position1, config.animation)
    end
    return true
end 

function setCreatureOutfit(cid, outfit)  -- odranoels.s
    if outfit.lookType == nil then
        return
    end
    
    local lookType = outfit.lookType
    local lookHead = outfit.lookHead or 0
    local lookBody = outfit.lookBody or 0
    local lookLegs = outfit.lookLegs or 0
    local lookFeet = outfit.lookFeet or 0
    local addons = outfit.addons or 0
    
    doCreatureChangeOutfit(cid, {lookType = lookType, lookHead = lookHead, lookBody = lookBody, lookLegs = lookLegs, lookFeet = lookFeet, addons = addons})
end

 

IRMAO FICOU PEREITO CONSEGUI ADPTAR QUASE QUE EXATAMENTE COMO EU QUERIA 

 

MUITO OBRIGADOOOOO

 

EXISTE A POSSIBILIDADE DE FAZER ESSE COMANDO SE REPETIR ALGUMAS VEZES 

PARA ROLAR UMA ANIMAÇAO ANTES DE TELEPORTAR USANDO AS LOOKTYPE ????

 

 local playerOutfit = getCreatureOutfit(cid)
        setCreatureOutfit(cid, {lookType = 704})
        

 

Editado por sirmagna (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo