• 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 that can only attack a certain Monster

kozmo

Member
Joined
Jan 30, 2009
Messages
443
Solutions
2
Reaction score
23
Need a Spell that can only be used on a event zombie Monster, no other players or creatures.
 
Solution
Lua:
     local variant = Variant(var)
     if variant:getName() ~= "Zombie" then
          return false
     end
What? That makes no sense, var is already type of Variant and Variant:getName is not a thing.

Either var:getNumber() or creature:getTarget().

Lua:
function onCastSpell(creature, var)
    local target = Creature(var:getNumber()) -- try to get target from variant
    if not target then
        target = creature:getTarget() -- if no target from variant, get it from caster
        if not target then
            return false
        end
    end
   
    if target:getName() ~= "Zombie" then -- check target name
        return false
    end
   
    return combat:execute(creature, var)...
Lua:
if variant:getName() ~= "Zombie" then
return false
end
Where do you place this inside here?

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

function onGetFormulaValues(player, level)
    local min = (level / 5) + (level * 4.4) + 8
    local max = (level / 5) + (level * 8.2) + 14
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
    return combat:execute(creature, var)
end
 
Lua:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues(player, level)
    local min = (level / 5) + (level * 4.4) + 8
    local max = (level / 5) + (level * 8.2) + 14
    return -min, -max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onCastSpell(creature, var)
     local variant = Variant(var)
     if variant:getName() ~= "Zombie" then
          return false
     end
    return combat:execute(creature, var)
end
 
Lua:
     local variant = Variant(var)
     if variant:getName() ~= "Zombie" then
          return false
     end
What? That makes no sense, var is already type of Variant and Variant:getName is not a thing.

Either var:getNumber() or creature:getTarget().

Lua:
function onCastSpell(creature, var)
    local target = Creature(var:getNumber()) -- try to get target from variant
    if not target then
        target = creature:getTarget() -- if no target from variant, get it from caster
        if not target then
            return false
        end
    end
   
    if target:getName() ~= "Zombie" then -- check target name
        return false
    end
   
    return combat:execute(creature, var)
end
 
Last edited:
Solution
Back
Top