• 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 Spell Creation Problem

Testerus

Intermediate OT User
Joined
Mar 18, 2014
Messages
673
Reaction score
126
Hello everyone!
I'm trying to make a single-target spell using: SpellCreator.
I checked those in the properties:

xoajd8.jpg

And after I tried it in-game, I got this:

cjq8sb.jpg
u8dkux.jpg


So, basically the toward-target distance effects are applied.
BUT, the area effects are one sqm away of the targeted creature each time.
I tried to block more creatures to see if the area effect damage apply to the creatures and it did.

Anyone could help me? Ask me more if you need. Thank you!

Kind regards,
 
It's a targeted spell that affects only one target, but has four shots: x2 earth dmg then x2 ice dmg.
Here's the lua:
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush_3 = createCombatObject()
setCombatParam(combat0_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
setCombatParam(combat0_Brush_3, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)
setCombatParam(combat0_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatArea(combat0_Brush_3,createCombatArea({{2},
{1}}))
function getDmg_Brush_3(cid, level, maglevel)
    return (317)*-1,(326)*-1
end
setCombatCallback(combat0_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")

-- Areas/Combat for 500ms
local combat5_Brush_4 = createCombatObject()
setCombatParam(combat5_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat5_Brush_4, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat5_Brush_4, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatArea(combat5_Brush_4,createCombatArea({{2},
{1}}))
function getDmg_Brush_4(cid, level, maglevel)
    return (312)*-1,(318)*-1
end
setCombatCallback(combat5_Brush_4, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_4")

-- Areas/Combat for 1500ms
local combat15_Brush = createCombatObject()
setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat15_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatArea(combat15_Brush,createCombatArea({{2},
{1}}))
function getDmg_Brush(cid, level, maglevel)
    return (345)*-1,(368)*-1
end
setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")

-- Areas/Combat for 2200ms
local combat22_Brush_2 = createCombatObject()
setCombatParam(combat22_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
setCombatParam(combat22_Brush_2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
setCombatParam(combat22_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatArea(combat22_Brush_2,createCombatArea({{2},
{1}}))
function getDmg_Brush_2(cid, level, maglevel)
    return (379)*-1,(391)*-1
end
setCombatCallback(combat22_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end       
        end
    end
end

function onCastSpell(cid, var)
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush_3,cid,var)
    addEvent(RunPart,500,combat5_Brush_4,cid,var)
    addEvent(RunPart,1500,combat15_Brush,cid,var)
    addEvent(RunPart,2200,combat22_Brush_2,cid,var)
    return true
end
 
Code:
-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush_3 = createCombatObject()
setCombatParam(combat0_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
setCombatParam(combat0_Brush_3, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)
setCombatParam(combat0_Brush_3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)

function getDmg_Brush_3(cid, level, maglevel)
    return (317)*-1,(326)*-1
end
setCombatCallback(combat0_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")

-- Areas/Combat for 500ms
local combat5_Brush_4 = createCombatObject()
setCombatParam(combat5_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
setCombatParam(combat5_Brush_4, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat5_Brush_4, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)

function getDmg_Brush_4(cid, level, maglevel)
    return (312)*-1,(318)*-1
end
setCombatCallback(combat5_Brush_4, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_4")

-- Areas/Combat for 1500ms
local combat15_Brush = createCombatObject()
setCombatParam(combat15_Brush, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat15_Brush, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatParam(combat15_Brush, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)

function getDmg_Brush(cid, level, maglevel)
    return (345)*-1,(368)*-1
end
setCombatCallback(combat15_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")

-- Areas/Combat for 2200ms
local combat22_Brush_2 = createCombatObject()
setCombatParam(combat22_Brush_2, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
setCombatParam(combat22_Brush_2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
setCombatParam(combat22_Brush_2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)

function getDmg_Brush_2(cid, level, maglevel)
    return (379)*-1,(391)*-1
end
setCombatCallback(combat22_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
    if (isCreature(cid)) then
        doCombat(cid, c, var)
        if (dirList ~= nil) then -- Emit distance effects
            local i = 2;
            while (i < #dirList) do
                doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList[i],y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
                i = i + 2
            end      
        end
    end
end

function onCastSpell(cid, var)
    local startPos = getCreaturePosition(cid)
    RunPart(combat0_Brush_3,cid,var)
    addEvent(RunPart,500,combat5_Brush_4,cid,var)
    addEvent(RunPart,1500,combat15_Brush,cid,var)
    addEvent(RunPart,2200,combat22_Brush_2,cid,var)
    return true
end

P.S Next time don't use spell generator, make it by yourself.
 
Back
Top