Ir para conteúdo

Featured Replies

Postado

Qual servidor ou website você utiliza como base? 

TFS 1.3
 

Qual o motivo deste tópico? 

Será que alguem pode me ajudar com uma edição simples?

Tenho uma spell de cura que fica aparecendo uns efeitos e manda distance efects pra quem lançou a magia.
Gostaria de fazer ela tipo um exura sio, os efeitos iriram pro target do sio"
Estava tentando utilizar o script do exura sio pra mesclar,   acredito que tenha que mudar as funçoes de player:    para    creature: 

Exura sio

Spoiler

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(player, level, maglevel)
    local min = (level / 5) + (maglevel * 10)
    local max = (level / 5) + (maglevel * 14)
    return min, max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    if creature:isPlayer() and var:getNumber() == creature:getId() then
        creature:sendCancelMessage("You can't cast this spell to yourself.")
        creature:getPosition():sendMagicEffect(CONST_ME_POFF)
    return false
    else
        return combat:execute(creature, var)
    end
end
 

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

Citar

 

 

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

AREA1 = {
    {0, 0, 0},
    {0, 3, 0},
    {0, 0, 0}
}

local cbarea = createCombatArea(AREA1)

local function sendHealingEffect(cid, position, loopCount)
    local player = Player(cid)
    if not player then
        return
    end

    position:sendDistanceEffect(player:getPosition(), CONST_ANI_SMALLHOLY)
    player:addHealth(math.max(100, 150))
    player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
    if loopCount == 0 then
        player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA)
    end
end

function onCastSpell(creature, var)
    local playerPos = creature:getPosition()
    local loopCount = 12
    
    local combat = Combat()

    creature:say('Heal me my brothers!', TALKTYPE_MONSTER_SAY)
 
    for i = 1, loopCount do
        local position = Position(playerPos.x + math.random(-4, 3), playerPos.y + math.random(-3, 2), playerPos.z)
        addEvent(doAreaCombatHealth, i * 75, creature:getId(), COMBAT_PHYSICALDAMAGE, position, cbarea, 0, 0, CONST_ME_ASSASSIN)
        addEvent(sendHealingEffect, i * 75, creature:getId(), position, loopCount - i)
    end
    return false
end 

 

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

 

Editado por Lethal M (veja o histórico de edições)

Resolvido por Dwarfer

Ir para solução
Postado
  • Solução

Coloquei a fórmula da magia como no exura sio que você deixou. Qualquer coisa é só trocar a fórmula ali como você quiser.

 

local spellConfig = {
    healCount = 12, -- número de vezes que vai curar
    healInterval = 75 -- intervalo da cura em milisegundos
}

local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

function onGetFormulaValues(player, level, maglevel)
    local div = 1 / spellConfig.healCount
	local min = div * ((level / 5) + (maglevel * 10))
	local max = div * ((level / 5) + (maglevel * 14))
	return min, max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local function sendHealingEffect(cid, var, target, healcounter)
    local player = Player(cid)
    if not player then
        return
    end
    local targetPlayer = Player(target)
    if not targetPlayer then
        return
    end
    combat:execute(player, var)
    local targetPos = targetPlayer:getPosition()
    local randPos = Position(targetPos.x + math.random(-4, 3), targetPos.y + math.random(-3, 2), targetPos.z)
    randPos:sendMagicEffect(CONST_ME_ASSASSIN)
    randPos:sendDistanceEffect(targetPos, CONST_ANI_SMALLHOLY)
    targetPos:sendMagicEffect(CONST_ME_MAGIC_BLUE)
    if healcounter == 0 then
        targetPos:sendMagicEffect(CONST_ME_HOLYAREA)
    end
end

function onCastSpell(creature, var)
    local target = Player(var:getNumber())
    if not target then
        return
    end
    local healcounter, interval = spellConfig.healCount, spellConfig.healInterval
    local playerId = creature:getId()
    local targetId = target:getId()
    creature:say(string.format('Brothers, heal %s now!', target:getName()), TALKTYPE_MONSTER_SAY)
    for i = 1, healcounter do
        addEvent(sendHealingEffect, (i-1) * interval, playerId, var, targetId, healcounter - i)
    end
    return false
end 

 

Pega a tag do exura sio no spells.xml e coloca para sua magia.

 

Vai ficar assim:

https://i.imgur.com/Uiha0uB.gif

Editado por Dwarfer (veja o histórico de edições)

Contato:

 

Postado
  • Autor

Muito Obrigado @Dwarfer era exatamente o que eu queria !!!! \o/

Aproveitando o post seria possivel colocar pra magia ficar no chao curando em area usando o spoiler inicial do post?
Ao inves de ter target ou ser selftarget, ficaria no chao na pos. que foi castada

O player usaria e criaria uma area 6X6 de cura no local que se repete

Seria uma mescla desta magia com Exura gran mas Res 

 

Cura Self com efeitos

Spoiler

AREA1 = {
    {0, 0, 0},
    {0, 3, 0},
    {0, 0, 0}
}

local cbarea = createCombatArea(AREA1)

local function sendHealingEffect(cid, position, loopCount)
    local player = Player(cid)
    if not player then
        return
    end

    position:sendDistanceEffect(player:getPosition(), CONST_ANI_SMALLHOLY)
    player:addHealth(math.max(100, 150))
    player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
    if loopCount == 0 then
        player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA)
    end
end

function onCastSpell(creature, var)
    local playerPos = creature:getPosition()
    local loopCount = 12
    
    local combat = Combat()

    creature:say('Heal me my brothers!', TALKTYPE_MONSTER_SAY)
 
    for i = 1, loopCount do
        local position = Position(playerPos.x + math.random(-4, 3), playerPos.y + math.random(-3, 2), playerPos.z)
        addEvent(doAreaCombatHealth, i * 75, creature:getId(), COMBAT_PHYSICALDAMAGE, position, cbarea, 0, 0, CONST_ME_ASSASSIN)
        addEvent(sendHealingEffect, i * 75, creature:getId(), position, loopCount - i)
    end
    return false
end


Exura gran mas Res 
 

Spoiler

function onTargetCreature(creature, target)
    local player = creature:getPlayer()
    local min = ((player:getLevel() / 5) + (player:getMagicLevel() * 5.7) + 26)
    local max = ((player:getLevel() / 5) + (player:getMagicLevel() * 10.43) + 62)

    local bosses = {"leiden", "ravennous hunger", "dorokoll the mystic", "eshtaba the conjurer", "eliz the unyielding", "mezlon the defiler", "malkhar deathbringer", "containment crystal"}
    local master = target:getMaster()
    if target:isMonster() and not master or master and master:isMonster() then
        if (not isInArray(bosses, target:getName():lower())) then
            return true
        end
    end

    doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE)
    return true
end

local combat = Combat()
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0)
combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))
combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

function onCastSpell(creature, var)
    return combat:execute(creature, var)
end
 

 

Editado por Lethal M (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo