Jump to content
  • 0

[SPELL] ki defence, chakra defence.


BrunoBrilha

Question

Fiz um aqui que esta pegando certinho, o problema e que e toda vez que acontece 

doPlayerSendTextMessage(cid, 20, "Sua guarda esta aberta")

 

Aparece o seguinte erro na distro

[8:31:46.479] [Error - Spell Interface]
[8:31:46.480] In a timer event called from:
[8:31:46.481] data/spells/scripts/Guarda.lua:onCastSpell
[8:31:46.482] Description:
[8:31:46.483] (luaDoCombat) Combat not found

 

Mas ele pega normal, tudo esta pegando certinho "não a erro na spell em si".

 

<instant name="Defensiva" words="Defensiva" lvl="10" mana="0" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" blockwalls="1" enabled="1" event="script" value="Guarda.lua"/>

 

Spell:

Spoiler
function onCastSpell(cid, var)
    local waittime = 20 -- Tempo de exhaustion
    local storage = 696002

    if exhaustion.check(cid, storage) then
        local remainingTime = exhaustion.get(cid, storage)
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) -- Efeito visual quando o jogador está cansado
        doPlayerSendTextMessage(cid, 20, "Voce esta cansado. Tempo restante: " .. remainingTime .. " segundos.")
        return false
    end

    exhaustion.set(cid, storage, waittime)

    local condition = createConditionObject(CONDITION_MANASHIELD)
    setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
    doAddCondition(cid, condition)

    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) -- Efeito visual quando a guarda está alta
    doPlayerSendTextMessage(cid, 20, "Guarda alta!")

    addEvent(function()
        if isCreature(cid) then
            local combat = createCombatObject()
            setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)
            setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
            doCombat(cid, combat, var)
            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) -- Efeito visual quando a guarda está aberta
            doPlayerSendTextMessage(cid, 20, "Sua guarda esta aberta")
        end
    end, 10000) -- Este valor deve ser igual ao valor definido em setConditionParam para a duração do efeito

    return true
end

 

 

Edited by BrunoBrilha
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

O erro que você está vendo acontece porque o sistema não está encontrando um combate (ou seja, a variável combat) quando a função doCombat() é chamada dentro do evento temporizado.

Isso ocorre porque o evento temporizado é executado após o término do efeito da guarda, e nesse momento, o combate associado à habilidade pode ter sido encerrado.

Para corrigir isso, você pode verificar se o jogador ainda está sob o efeito da habilidade antes de executar o combate dentro do evento temporizado. Aqui está como você pode fazer isso:

 

function onCastSpell(cid, var)
    local waittime = 20 -- Tempo de exhaustion
    local storage = 696002

    if exhaustion.check(cid, storage) then
        local remainingTime = exhaustion.get(cid, storage)
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) -- Efeito visual quando o jogador está cansado
        doPlayerSendTextMessage(cid, 20, "Voce esta cansado. Tempo restante: " .. remainingTime .. " segundos.")
        return false
    end

    exhaustion.set(cid, storage, waittime)

    local condition = createConditionObject(CONDITION_MANASHIELD)
    setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
    doAddCondition(cid, condition)

    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) -- Efeito visual quando a guarda está alta
    doPlayerSendTextMessage(cid, 20, "Guarda alta!")

    addEvent(function()
        if isCreature(cid) then
            if getCreatureCondition(cid, CONDITION_MANASHIELD) then -- Verifica se a condição ainda está ativa
                local combat = createCombatObject()
                setCombatParam(combat, COMBAT_PARAM_EFFECT, 12)
                setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)
                doCombat(cid, combat, var)
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) -- Efeito visual quando a guarda está aberta
                doPlayerSendTextMessage(cid, 20, "Sua guarda esta aberta")
            end
        end
    end, 10000) -- Este valor deve ser igual ao valor definido em setConditionParam para a duração do efeito

    return true
end

Com esta modificação, a função doCombat() só será chamada se o jogador ainda estiver sob o efeito da habilidade. Isso deve resolver o erro que você está enfrentando.

Link to comment
Share on other sites

×
×
  • Create New...