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

How to Put Cooldown on Spells

CollapserMemory

New Member
Joined
Dec 4, 2014
Messages
66
Reaction score
1
I have Any Spell and i want put Cooldown on this ...
local scom1 = createCombatObject()
local scom2 = createCombatObject()

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.7, -1.7, -1.8, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 3)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 15)

arr1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}

arr2 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
}

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
setCombatArea(scom1, area1)
setCombatArea(scom2, area2)

function onTargetTile(cid, pos)
doCombat(cid,combat1,positionToVariant(pos))
end

function onTargetTile2(cid, pos)
doCombat(cid,combat2,positionToVariant(pos))
end

setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

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

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

function onCastSpell(cid, var)
doPlayerAddSoul(cid, math.random(2, 2))
local parameters = { cid = cid, var = var}
addEvent(onCastSpell1, 1, parameters)
addEvent(onCastSpell2, 2, parameters)

return TRUE
end
 
Code:
    local cd_stg = 9080
    local cd_time = 1 -- seconds
    if(getPlayerStorageValue(cid, cd_stg) < 1 then
        doPlayerSetStorageValue(cid, cd_stg, 1)
        addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
        local scom1 = createCombatObject()
        local scom2 = createCombatObject()

        local combat1 = createCombatObject()
        setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 3)
        setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)
        setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.7, -1.7, -1.8, 0)

        local combat2 = createCombatObject()
        setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 3)
        setCombatParam(combat2, COMBAT_PARAM_EFFECT, 15)

        arr1 = {
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        }

        arr2 = {
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        }

        local area1 = createCombatArea(arr1)
        local area2 = createCombatArea(arr2)
        setCombatArea(scom1, area1)
        setCombatArea(scom2, area2)

        function onTargetTile(cid, pos)
        doCombat(cid,combat1,positionToVariant(pos))
        end

        function onTargetTile2(cid, pos)
        doCombat(cid,combat2,positionToVariant(pos))
        end

        setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
        setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

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

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

        function onCastSpell(cid, var)
        doPlayerAddSoul(cid, math.random(2, 2))
        local parameters = { cid = cid, var = var}
        addEvent(onCastSpell1, 1, parameters)
        addEvent(onCastSpell2, 2, parameters)
    else
        doPlayerSendCancel("Spells is cooling down").
    end
    return TRUE
end
 
Code:
    local cd_stg = 9080
    local cd_time = 1 -- seconds
    if(getPlayerStorageValue(cid, cd_stg) < 1 then
        doPlayerSetStorageValue(cid, cd_stg, 1)
        addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
        local scom1 = createCombatObject()
        local scom2 = createCombatObject()

        local combat1 = createCombatObject()
        setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 3)
        setCombatParam(combat1, COMBAT_PARAM_EFFECT, 6)
        setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.7, -1.7, -1.8, 0)

        local combat2 = createCombatObject()
        setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
        setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 3)
        setCombatParam(combat2, COMBAT_PARAM_EFFECT, 15)

        arr1 = {
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        }

        arr2 = {
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        }

        local area1 = createCombatArea(arr1)
        local area2 = createCombatArea(arr2)
        setCombatArea(scom1, area1)
        setCombatArea(scom2, area2)

        function onTargetTile(cid, pos)
        doCombat(cid,combat1,positionToVariant(pos))
        end

        function onTargetTile2(cid, pos)
        doCombat(cid,combat2,positionToVariant(pos))
        end

        setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
        setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2")

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

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

        function onCastSpell(cid, var)
        doPlayerAddSoul(cid, math.random(2, 2))
        local parameters = { cid = cid, var = var}
        addEvent(onCastSpell1, 1, parameters)
        addEvent(onCastSpell2, 2, parameters)
    else
        doPlayerSendCancel("Spells is cooling down").
    end
    return TRUE
end
Thank You GUy ! excelent ! Can you put cooldown in my other spell for i see how to you do ? See

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

function onCastSpell(cid, var)
doPlayerAddSoul(cid, math.random(1, 1))
return doCombat(cid, combat, var)
end
 
Code:
    local cd_stg = 9081
    local cd_time = 1 -- seconds
    if(getPlayerStorageValue(cid, cd_stg) < 1 then
        doPlayerSetStorageValue(cid, cd_stg, 1)
        addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
        local combat = createCombatObject()
        setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
        setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
        setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
        setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

        function onCastSpell(cid, var)
            doPlayerAddSoul(cid, math.random(1, 1))
            return doCombat(cid, combat, var)
        end
    else
        doPlayerSendCancel("Spells is cooling down").
    end
    return TRUE
end
 
Code:
    local cd_stg = 9081
    local cd_time = 1 -- seconds
    if(getPlayerStorageValue(cid, cd_stg) < 1 then
        doPlayerSetStorageValue(cid, cd_stg, 1)
        addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
        local combat = createCombatObject()
        setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
        setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
        setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
        setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

        function onCastSpell(cid, var)
            doPlayerAddSoul(cid, math.random(1, 1))
            return doCombat(cid, combat, var)
        end
    else
        doPlayerSendCancel("Spells is cooling down").
    end
    return TRUE
end
Error --- data/spells/scripts/gran frigo.lua:3: ')' expected near 'then'
 
Code:
local cd_stg = 9081
local cd_time = 1 -- seconds
if(getPlayerStorageValue(cid, cd_stg) < 1) then
    doPlayerSetStorageValue(cid, cd_stg, 1)
    addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
    setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

    function onCastSpell(cid, var)
        doPlayerAddSoul(cid, math.random(1, 1))
        return doCombat(cid, combat, var)
    end
else
    doPlayerSendCancel("Spells is cooling down")
    return TRUE
end
 
Code:
local cd_stg = 9081
local cd_time = 1 -- seconds
if(getPlayerStorageValue(cid, cd_stg) < 1) then
    doPlayerSetStorageValue(cid, cd_stg, 1)
    addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
    setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
    setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
    setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

    function onCastSpell(cid, var)
        doPlayerAddSoul(cid, math.random(1, 1))
        return doCombat(cid, combat, var)
    end
else
    doPlayerSendCancel("Spells is cooling down")
    return TRUE
end


-- See All Erros ---
[26/07/2015 23:53:55] Warning: [Event::loadScript] Can not load script. data/spells/scripts/.lua
[26/07/2015 23:53:55] cannot open data/spells/scripts/.lua: No such file or directory

[26/07/2015 23:53:55] Lua Script Error: [Spell Interface]
[26/07/2015 23:53:55] data/spells/scripts/gran frigo.lua

[26/07/2015 23:53:55] luaGetPlayerStorageValue(). Player not found

[26/07/2015 23:53:55] Lua Script Error: [Spell Interface]
[26/07/2015 23:53:55] data/spells/scripts/gran frigo.lua

[26/07/2015 23:53:55] data/spells/scripts/gran frigo.lua:4: attempt to call global 'doPlayerSetStorageValue' (a nil value)
[26/07/2015 23:53:55] Warning: [Event::loadScript] Can not load script. data/spells/scripts/gran frigo.lua
[26/07/2015 23:53:55] cannot open data/spells/scripts/.lua: No such file or directory
 
ah, yeah. cid doesn't exist until the spell is cast. I believe this should work.
Code:
local cd_stg = 9081
local cd_time = 1 -- seconds
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

    function onCastSpell(cid, var)
        if(getPlayerStorageValue(cid, cd_stg) < 1) then
            doPlayerSetStorageValue(cid, cd_stg, 1)
            addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
            doPlayerAddSoul(cid, math.random(1, 1))
            return doCombat(cid, combat, var)
        else
            doPlayerSendCancel("Spells is cooling down")
        return TRUE
    end
    return TRUE
end
 
ah, yeah. cid doesn't exist until the spell is cast. I believe this should work.
Code:
local cd_stg = 9081
local cd_time = 1 -- seconds
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

    function onCastSpell(cid, var)
        if(getPlayerStorageValue(cid, cd_stg) < 1) then
            doPlayerSetStorageValue(cid, cd_stg, 1)
            addEvent(doPlayerSetStorageValue,cd_time, cid, cd_stg,0)
            doPlayerAddSoul(cid, math.random(1, 1))
            return doCombat(cid, combat, var)
        else
            doPlayerSendCancel("Spells is cooling down")
        return TRUE
    end
    return TRUE
end
-- No Say Spells --
[27/07/2015 00:03:31] Lua Script Error: [Spell Interface]
[27/07/2015 00:03:31] data/spells/scripts/gran frigo.lua:eek:nCastSpell

[27/07/2015 00:03:31] data/spells/scripts/gran frigo.lua:11: attempt to call global 'doPlayerSetStorageValue' (a nil value)
[27/07/2015 00:03:31] stack traceback:
[27/07/2015 00:03:31] data/spells/scripts/gran frigo.lua:11: in function <data/spells/scripts/gran frigo.lua:9>
 
See the spell now ... no have error but the spell It does not appear.

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

function onCastSpell(cid, var)
doPlayerAddSoul(cid, math.random(1, 1))
return doCombat(cid, combat, var)
end

local tempo = 10
local stor = 23232


function onCastSpell(cid, var)

if exhaustion.check(cid, 23006) == false and (getPlayerStorageValue(cid, stor) - os.time() <= 0) then
setPlayerStorageValue(cid, stor, os.time() + time)
exhaustion.set(cid, 23006, 1)
else
doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can only use this spell one time every 10

seconds.")
end
return true
end
 
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

local tempo = 10
local stor = 23232

function onCastSpell(cid, var)
    if exhaustion.check(cid, 23006) == false and (getPlayerStorageValue(cid, stor) - os.time() <= 0) then
        setPlayerStorageValue(cid, stor, os.time() + time)
        exhaustion.set(cid, 23006, 1)
        doPlayerAddSoul(cid, math.random(1, 1))
        return doCombat(cid, combat, var)
    else
        doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can only use this spell one time every 10 seconds.")
        return false
    end
    return true
end
 
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT,CONST_ME_ICEATTACK)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.6, -0, -1.7, 0)

local tempo = 10
local stor = 23232

function onCastSpell(cid, var)
    if exhaustion.check(cid, 23006) == false and (getPlayerStorageValue(cid, stor) - os.time() <= 0) then
        setPlayerStorageValue(cid, stor, os.time() + time)
        exhaustion.set(cid, 23006, 1)
        doPlayerAddSoul(cid, math.random(1, 1))
        return doCombat(cid, combat, var)
    else
        doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 23006).."]")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can only use this spell one time every 10 seconds.")
        return false
    end
    return true
end
Fail man :/
don't work
 
Back
Top Bottom