• 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+ Coverting 8.6 (0.4) Spell to 10.98 TFS 1.3 PROBLEM

jo31

New Member
Joined
May 24, 2010
Messages
70
Reaction score
1
Location
Sweden
I have tried all night to convert this spell from 8.6 to 10.98 but i cant seem to get it to work?
C++:
local combat1 = createCombatObject()
combat:setParameter(combat1, COMBAT_PARAM_TYPE, 2)
combat:setParameter(combat1, COMBAT_PARAM_EFFECT, 11)
combat:setParameter(combat1, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -860)

local combat2 = createCombatObject()
combat:setParameter(combat2, COMBAT_PARAM_TYPE, 8)
combat:setParameter(combat2, COMBAT_PARAM_EFFECT, 36)
combat:setParameter(combat2, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -900)

local combat3 = createCombatObject()
combat:setParameter(combat3, COMBAT_PARAM_TYPE, 2)
combat:setParameter(combat3, COMBAT_PARAM_EFFECT, 11)
combat:setParameter(combat3, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -700,  -1.5, -760)

local combat4 = createCombatObject()
combat:setParameter(combat4, COMBAT_PARAM_TYPE, 8)
combat:setParameter(combat4, COMBAT_PARAM_EFFECT, 36)
combat:setParameter(combat4, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -810)

local function onCastSpell1(parameters)
    doCombat(parameters.cid, combat1, parameters.var)
end
 
local function onCastSpell2(parameters)
    doCombat(parameters.cid, combat2, parameters.var)
end
 
local function onCastSpell3(parameters)
    doCombat(parameters.cid, combat3, parameters.var)
end

local function onCastSpell4(parameters)
    doCombat(parameters.cid, combat4, parameters.var)
end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 300, parameters)
addEvent(onCastSpell3, 600, parameters)
addEvent(onCastSpell4, 800, parameters)
return TRUE
end
Post automatically merged:

Error in Console.
Code:
data/spells/scripts/attack/arcanestrike.lua:2: attempt to call global 'createCombatObject' (a nil value)
stack traceback:
        [C]: in function 'createCombatObject'
 
I have tried all night to convert this spell from 8.6 to 10.98 but i cant seem to get it to work?
C++:
local combat1 = createCombatObject()
combat:setParameter(combat1, COMBAT_PARAM_TYPE, 2)
combat:setParameter(combat1, COMBAT_PARAM_EFFECT, 11)
combat:setParameter(combat1, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -860)

local combat2 = createCombatObject()
combat:setParameter(combat2, COMBAT_PARAM_TYPE, 8)
combat:setParameter(combat2, COMBAT_PARAM_EFFECT, 36)
combat:setParameter(combat2, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -900)

local combat3 = createCombatObject()
combat:setParameter(combat3, COMBAT_PARAM_TYPE, 2)
combat:setParameter(combat3, COMBAT_PARAM_EFFECT, 11)
combat:setParameter(combat3, COMBAT_PARAM_DISTANCEEFFECT, 35)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -700,  -1.5, -760)

local combat4 = createCombatObject()
combat:setParameter(combat4, COMBAT_PARAM_TYPE, 8)
combat:setParameter(combat4, COMBAT_PARAM_EFFECT, 36)
combat:setParameter(combat4, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC,  -1.5, -800,  -1.5, -810)

local function onCastSpell1(parameters)
    doCombat(parameters.cid, combat1, parameters.var)
end

local function onCastSpell2(parameters)
    doCombat(parameters.cid, combat2, parameters.var)
end

local function onCastSpell3(parameters)
    doCombat(parameters.cid, combat3, parameters.var)
end

local function onCastSpell4(parameters)
    doCombat(parameters.cid, combat4, parameters.var)
end

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 300, parameters)
addEvent(onCastSpell3, 600, parameters)
addEvent(onCastSpell4, 800, parameters)
return TRUE
end
Post automatically merged:

Error in Console.
Code:
data/spells/scripts/attack/arcanestrike.lua:2: attempt to call global 'createCombatObject' (a nil value)
stack traceback:
        [C]: in function 'createCombatObject'

Lua:
-- COMBAT [1]
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, 2)
combat1:setParameter(COMBAT_PARAM_EFFECT, 11)
combat1:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 35)

function onGetFormulaValues1(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 70) + 25)
    max = -((level / 5) + (maglevel * 100) + 50)
    return min, max
end

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")

-- COMBAT [2]
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, 8)
combat2:setParameter(COMBAT_PARAM_EFFECT, 36)
combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 3)

function onGetFormulaValues2(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 60) + 25)
    max = -((level / 5) + (maglevel * 90) + 50)
    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")

-- COMBAT [3]
local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, 2)
combat3:setParameter(COMBAT_PARAM_EFFECT, 11)
combat3:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 35)

function onGetFormulaValues3(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 750) + 25)
    max = -((level / 5) + (maglevel * 900) + 50)
    return min, max
end

combat3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")

-- COMBAT [4]
local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, 8)
combat4:setParameter(COMBAT_PARAM_EFFECT, 36)
combat4:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 3)

function onGetFormulaValues4(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 75) + 25)
    max = -((level / 5) + (maglevel * 90) + 50)
    return min, max
end

combat4:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")


local function bam(creature, variant, c)
    if not creature then
        return false
    end
    
    c:execute(creature, variant)
end

function onCastSpell(creature, variant)
    addEvent(bam, 0, creature, variant, combat1)
    addEvent(bam, 300, creature, variant, combat2)
    addEvent(bam, 600, creature, variant, combat3)
    addEvent(bam, 900, creature, variant, combat4)

    return true
end
 
Tagging users
Lua:
-- COMBAT [1]
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, 2)
combat1:setParameter(COMBAT_PARAM_EFFECT, 11)
combat1:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 35)

function onGetFormulaValues1(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 70) + 25)
    max = -((level / 5) + (maglevel * 100) + 50)
    return min, max
end

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")

-- COMBAT [2]
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, 8)
combat2:setParameter(COMBAT_PARAM_EFFECT, 36)
combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 3)

function onGetFormulaValues2(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 60) + 25)
    max = -((level / 5) + (maglevel * 90) + 50)
    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")

-- COMBAT [3]
local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, 2)
combat3:setParameter(COMBAT_PARAM_EFFECT, 11)
combat3:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 35)

function onGetFormulaValues3(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 750) + 25)
    max = -((level / 5) + (maglevel * 900) + 50)
    return min, max
end

combat3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")

-- COMBAT [4]
local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, 8)
combat4:setParameter(COMBAT_PARAM_EFFECT, 36)
combat4:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 3)

function onGetFormulaValues4(cid, level, maglevel)
    min = -((level / 5) + (maglevel * 75) + 25)
    max = -((level / 5) + (maglevel * 90) + 50)
    return min, max
end

combat4:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")


local function bam(creature, variant, c)
    if not creature then
        return false
    end
   
    c:execute(creature, variant)
end

function onCastSpell(creature, variant)
    addEvent(bam, 0, creature, variant, combat1)
    addEvent(bam, 300, creature, variant, combat2)
    addEvent(bam, 600, creature, variant, combat3)
    addEvent(bam, 900, creature, variant, combat4)

    return true
end



Code:
Lua Script Error: [Spell Interface]
data/spells/scripts/attack/arcanestrike.lua:onCastSpell
luaAddEvent(). Argument #3 is unsafe
stack traceback:
        [C]: in function 'addEvent'
        data/spells/scripts/attack/arcanestrike.lua:86: in function <data/spells/scripts/attack/arcanes                                 trike.lua:81>

I get this in my console every time i use the spell
Post automatically merged:

C++:
-- COMBAT [1]
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, 12)
combat1:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues1(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")

-- COMBAT [2]
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, 16)
combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues2(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")

-- COMBAT [3]
local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, 12)
combat3:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues3(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")

-- COMBAT [4]
local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat4:setParameter(COMBAT_PARAM_EFFECT, 16)
combat4:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues4(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat4:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")


-- COMBAT [5]
local combat5 = Combat()
combat5:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat5:setParameter(COMBAT_PARAM_EFFECT, 12)
combat5:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues5(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat5:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues5")


local function bam(creature, variant, c)
    if not creature then
        return false
    end
    
    c:execute(creature, variant)
end

function onCastSpell(creature, variant)
    addEvent(bam, 0, creature, variant, combat1)
    addEvent(bam, 300, creature, variant, combat2)
    addEvent(bam, 600, creature, variant, combat3)
    addEvent(bam, 900, creature, variant, combat4)
    addEvent(bam, 1200, creature, variant, combat5)
    return true
end



This is the spell
Post automatically merged:

@WibbenZ
 
Last edited:
Code:
Lua Script Error: [Spell Interface]
data/spells/scripts/attack/arcanestrike.lua:onCastSpell
luaAddEvent(). Argument #3 is unsafe
stack traceback:
        [C]: in function 'addEvent'
        data/spells/scripts/attack/arcanestrike.lua:86: in function <data/spells/scripts/attack/arcanes                                 trike.lua:81>

I get this in my console every time i use the spell
Post automatically merged:

C++:
-- COMBAT [1]
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, 12)
combat1:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues1(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")

-- COMBAT [2]
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, 16)
combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues2(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")

-- COMBAT [3]
local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, 12)
combat3:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues3(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")

-- COMBAT [4]
local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat4:setParameter(COMBAT_PARAM_EFFECT, 16)
combat4:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues4(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat4:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")


-- COMBAT [5]
local combat5 = Combat()
combat5:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat5:setParameter(COMBAT_PARAM_EFFECT, 12)
combat5:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues5(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat5:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues5")


local function bam(creature, variant, c)
    if not creature then
        return false
    end
   
    c:execute(creature, variant)
end

function onCastSpell(creature, variant)
    addEvent(bam, 0, creature, variant, combat1)
    addEvent(bam, 300, creature, variant, combat2)
    addEvent(bam, 600, creature, variant, combat3)
    addEvent(bam, 900, creature, variant, combat4)
    addEvent(bam, 1200, creature, variant, combat5)
    return true
end



This is the spell
Post automatically merged:

@WibbenZ

Well spotted, this will fix your problem. It appears that passing userdata in addevent is a no no🥳

Lua:
-- COMBAT [1]
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat1:setParameter(COMBAT_PARAM_EFFECT, 12)
combat1:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues1(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")

-- COMBAT [2]
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, 16)
combat2:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues2(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")

-- COMBAT [3]
local combat3 = Combat()
combat3:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat3:setParameter(COMBAT_PARAM_EFFECT, 12)
combat3:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues3(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat3:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")

-- COMBAT [4]
local combat4 = Combat()
combat4:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
combat4:setParameter(COMBAT_PARAM_EFFECT, 16)
combat4:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

function onGetFormulaValues4(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat4:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")

-- COMBAT [5]
local combat5 = Combat()
combat5:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat5:setParameter(COMBAT_PARAM_EFFECT, 12)
combat5:setParameter(COMBAT_PARAM_DISTANCEEFFECT, 36)

function onGetFormulaValues5(cid, level, maglevel)
    min = -((level / 6) + (maglevel * 4) + 25)
    max = -((level / 4) + (maglevel * 8) + 50)
    return min, max
end

combat5:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues5")

local function bam(creatureId, variant, c)
    local creature = Creature(creatureId)
    if not creature then
        return false
    end
    
    c:execute(creature, variant)
end

function onCastSpell(creature, variant)
    addEvent(bam, 0, creature.uid, variant, combat1)
    addEvent(bam, 300, creature.uid, variant, combat2)
    addEvent(bam, 600, creature.uid, variant, combat3)
    addEvent(bam, 900, creature.uid, variant, combat4)
    addEvent(bam, 1200, creature.uid, variant, combat5)

    return true
end
 
Back
Top