• 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!

A way to make this spell script simpler?

Karmia

https://discord.gg/FP36zQyaYG
Joined
Apr 21, 2016
Messages
127
Reaction score
85
Hi,

what I'm trying to do here is to create the animations of the strike spells like real Tibia. Is there a way to make this spell cleaner?

Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

local distanceCombat = Combat()
distanceCombat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
distanceCombat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
distanceCombat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

function onGetFormulaValuesDistance(player, level, magicLevel)
  local min = (level / 5) + (magicLevel * 1.4) + 8
  local max = (level / 5) + (magicLevel * 2.2) + 13
  return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
distanceCombat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValuesDistance")

function onCastSpell(creature, variant)
  if(variantToNumber(variant) ~= 0) then
    return distanceCombat:execute(creature, variant)
  end
  return combat:execute(creature, variant)
end
 
Solution
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, variant)
local target = creature:getTarget()
if target then
    creature:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE)
end
    return combat:execute(creature, variant)
end
Should this work too, I guess?
Hi,

what I'm trying to do here is to create the animations of the strike spells like real Tibia. Is there a way to make this spell cleaner?

Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

local distanceCombat = Combat()
distanceCombat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
distanceCombat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
distanceCombat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

function onGetFormulaValuesDistance(player, level, magicLevel)
  local min = (level / 5) + (magicLevel * 1.4) + 8
  local max = (level / 5) + (magicLevel * 2.2) + 13
  return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
distanceCombat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValuesDistance")

function onCastSpell(creature, variant)
  if(variantToNumber(variant) ~= 0) then
    return distanceCombat:execute(creature, variant)
  end
  return combat:execute(creature, variant)
end
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

local distanceCombat = Combat()
distanceCombat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
distanceCombat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
distanceCombat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
distanceCombat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, variant)
  if(variantToNumber(variant) ~= 0) then
    return distanceCombat:execute(creature, variant)
  end
  return combat:execute(creature, variant)
end

Why would you create the same function twice :) ?
 
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

local distanceCombat = Combat()
distanceCombat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
distanceCombat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
distanceCombat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
distanceCombat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, variant)
  if(variantToNumber(variant) ~= 0) then
    return distanceCombat:execute(creature, variant)
  end
  return combat:execute(creature, variant)
end

Why would you create the same function twice :) ?
Because thats how setCallback works, it yoinks the method
 
if(variantToNumber(variant) ~= 0) then
use variant:getNumber()

Other than that you cant do anything about it or if you would do its not worth it
 
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)

function onGetFormulaValues(player, level, magicLevel)
    local min = (level / 5) + (magicLevel * 1.4) + 8
    local max = (level / 5) + (magicLevel * 2.2) + 13
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, variant)
local target = creature:getTarget()
if target then
    creature:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_FIRE)
end
    return combat:execute(creature, variant)
end
Should this work too, I guess?
 
Solution
Back
Top