• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 1.X+ spell does not execute area

f0lpz

New Member
Joined
May 24, 2020
Messages
7
Reaction score
0
my spell does not execute arr2 and arr3
using tfs 1.3


Lua:
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat1:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
combat2:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat3:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local arr1 = {
{2},
{1}
}

local arr2 = {
{1},
{1},
{1},
{1},
{1},
{3}
}

local arr3 = {
{1},
{1},
{1},
{1},
{1},
{1},
{1},
{3}
}

combat1:setArea(createCombatArea(arr1))
combat2:setArea(createCombatArea(arr2))
combat3:setArea(createCombatArea(arr3))

local function onCastSpell2(param)
    if getTilePzInfo(getPlayerPosition(param.cid)) == true or isPlayer(param.cid) == false then -- não continua a magia se o jogador entrar em PZ ou morrer
        return false
    end
  
    if param.skill == true then -- se no teste anterior ele tinha a skill de upgrade, a magia é melhor
        combat:execute(param.cid, param.combat3, param.var)
    else
        combat:execute(param.cid, param.combat2, param.var)
    end
end

function onCastSpell(creature, variant)
    local player = Player(creature)
  --  if player:getExhaustion(51001) <= 0 then -- testa se o jogador já pode usar a magia novamente (exhausted)
  --      player:getPosition():sendMagicEffect(CONST_ME_POFF)
   --     player:sendCancelMessage("Você precisa aguardar "..player:getExhaustion(51001).." segundos.")
   --     return false
  --  end

    if player:getMana() < 2400 then -- testa se tem mana pra usar a skill
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        player:sendCancelMessage("You do not have enough mana.")
        return false
    end
    player:addMana(-2400, false)
    player:addManaSpent(2400)
    --player:setExhaustion(51001, 10) -- seta o exhaust
  
    combat1:execute(creature, variant)
   -- if player:getStorageValue(30021) == 1 then -- testa se tem a skill de aprimoramento
        local param = {cid = cid, var = var, combat2 = combat2, combat3 = combat3, skill = true}
        addEvent(onCastSpell2, 500, param)
   -- else
      --  local param = {cid = cid, var = var, combat2 = combat2, skill = false}
       -- addEvent(onCastSpell2, 800, param)
   -- end
    return true
end
 
Solution
@f0lpz

Code:
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat1:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
combat2:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat3:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local arr1 = {
{3},
{1}
}

local arr2 = {
{1},
{1},
{1},
{1},
{1},
{3}
}

local...
@f0lpz

Code:
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat1:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
combat2:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_GIANTICE)
combat3:setFormula(COMBAT_FORMULA_LEVELMAGIC, -4.5, -400, -4.0, -400)

local arr1 = {
{3},
{1}
}

local arr2 = {
{1},
{1},
{1},
{1},
{1},
{3}
}

local arr3 = {
{1},
{1},
{1},
{1},
{1},
{1},
{1},
{3}
}

combat1:setArea(createCombatArea(arr1))
combat2:setArea(createCombatArea(arr2))
combat3:setArea(createCombatArea(arr3))

local function onCastSpell2(cid, variant, skill)
    local player = Player(cid)
    if not player then return false end

    if player:getTile():hasFlag(TILESTATE_PROTECTIONZONE) then
        return false
    end
 
    if skill then -- se no teste anterior ele tinha a skill de upgrade, a magia é melhor
        combat3:execute(player, variant)
    else
        combat2:execute(player, variant)
    end
end

function onCastSpell(creature, variant)
  --  if creature:getExhaustion(51001) <= 0 then -- testa se o jogador já pode usar a magia novamente (exhausted)
  --      creature:getPosition():sendMagicEffect(CONST_ME_POFF)
   --     creature:sendCancelMessage("Você precisa aguardar "..creature:getExhaustion(51001).." segundos.")
   --     return false
  --  end

    if creature:getMana() < 2400 then -- testa se tem mana pra usar a skill
        creature:getPosition():sendMagicEffect(CONST_ME_POFF)
        creature:sendCancelMessage("You do not have enough mana.")
        return false
    end

    creature:addMana(-2400, false)
    creature:addManaSpent(2400)
    --creature:setExhaustion(51001, 10) -- seta o exhaust
 
    combat1:execute(creature, variant)
   -- if creature:getStorageValue(30021) == 1 then -- testa se tem a skill de aprimoramento
        addEvent(onCastSpell2, 500, creature:getId(), variant, true)
   -- else
      --  local param = {cid = cid, var = var, combat2 = combat2, skill = false}
       -- addEvent(onCastSpell2, 800, param)
   -- end
    return true
end
 
Solution
Back
Top