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

Solved Executing Spell Condition

mackerel

Well-Known Member
Joined
Apr 26, 2017
Messages
398
Solutions
18
Reaction score
72
Hi, I am trying to start 'burn' condition using if statement inside onCastSpell but it doesn't work as it says that setCombatCondition can only be used while loading the script. However, if I do change it so it loads with the script, it will start without if statements

This will say that I cannot execute setCombatCondition inside the function:

Lua:
local percent = 50

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 7)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 1, -0.3, 1)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 10, 3000, -25)

function onCastSpell(cid, var)
    addEvent(doCombat, 200, cid, combat, var)
    addEvent(doCombat, 400, cid, combat, var)
    addEvent(doCombat, 600, cid, combat, var)
        if isPlayer(cid) and percent >= math.random(1,100) then
            setCombatCondition(combat, condition)
            print("Target is burning")
        else
            print("Try again")
        end
    return doCombat(cid, combat, var)
end

And this will start without even checking the if statement..

Lua:
local percent = 50

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 7)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 1, -0.3, 1)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 10, 3000, -25)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
    addEvent(doCombat, 200, cid, combat, var)
    addEvent(doCombat, 400, cid, combat, var)
    addEvent(doCombat, 600, cid, combat, var)
        if isPlayer(cid) and percent >= math.random(1,100) then
            print("Target is burning")
        else
            print("Try again")
        end
    return doCombat(cid, combat, var)
end

ANY HELP APPRECIATED!
 
Try this:
Lua:
--Updated by Aelu 05/03/2017
--Added "Burning" event inside main function
local percent = 50
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 7)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 1, -0.3, 1)
local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 10, 3000, -25)
setCombatCondition(combat, condition)
function onCastSpell(cid, var)
        if isPlayer(cid) and percent >= math.random(1,100) then
            print("Target is burning")
            addEvent(doCombat, 200, cid, combat, var)
            addEvent(doCombat, 400, cid, combat, var)
            addEvent(doCombat, 600, cid, combat, var)
        else
            print("Try again")
        end
    return doCombat(cid, combat, var)
end
 
//EDIT SOLVED

Inside if statement, add:

Lua:
doAddCondition(getCreatureTarget(cid), condition)

Remove:

Lua:
setCombatCondition(combat, condition)
 
Last edited:
Back
Top Bottom