Tem duas opções: diretamente na tag ou manipulando storages no código lua da spell.
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Na tag falas do exaust? Se for, assim é problema, porq se eu por um exaust grande em uma, acaba afetando as outras da mesma categoria e não é isso que quero. Creio que a solução seja por storage. Tem como me mostrar como ponho no script da spell?
Vou deixar um script aqui, se puder, me mostra nele e diz se posso seguir a mesma forma para acrescentar nas outras.
Ta ela:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(cid, level, maglevel) min = (level * 2 + maglevel * 3) * 1 max = (level * 2 + maglevel * 3) * 1.75 return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
function onGetFormulaValues(cid, level, maglevel)
min = (level * 2 + maglevel * 3) * 1
max = (level * 2 + maglevel * 3) * 1.75
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
local time = xxx --Cooldown, em segundos.
local storage = 91812 --Uma storage qualquer que não esteja em uso no seu servidor.
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, storage) > os.time() then --Checando se ainda está em cooldown.
return doPlayerSendCancel(cid, "Wait "..getPlayerStorageValue(cid, storage) - os.time().." second(s) to use this spell again.")
end
setPlayerStorageValue(cid, storage, os.time() + time) --Setando CD na spell.
return doCombat(cid, combat, var)
end
Editado Agosto 8 por zipter98
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Eu tenho spells que atiram magias seguidas, adicionando dessa forma, funcionaria com elas?
Da uma olhada:
-- Areas/Combat for 0ms
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)
function onGetFormulaValues(cid, level, skill, attack, factor)
min = -(level * 1 + skill * 1.5) * 0.3
max = -(level * 1 + skill * 1.5) * 0.7
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
-- Areas/Combat for 100ms
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)
function onGetFormulaValues(cid, level, skill, attack, factor)
min = -(level * 1 + skill * 1.5) * 0.3
max = -(level * 1 + skill * 1.5) * 0.7
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
-- Areas/Combat for 200ms
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)
function onGetFormulaValues(cid, level, skill, attack, factor)
min = -(level * 1 + skill * 1.5) * 0.3
max = -(level * 1 + skill * 1.5) * 0.7
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
-- Areas/Combat for 300ms
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)
function onGetFormulaValues(cid, level, skill, attack, factor)
min = -(level * 1 + skill * 1.5) * 0.3
max = -(level * 1 + skill * 1.5) * 0.7
return min, max
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
-- =============== 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(combat,cid,var)
addEvent(RunPart,100,combat,cid,var)
addEvent(RunPart,200,combat,cid,var)
addEvent(RunPart,300,combat,cid,var)
return true
end
Basta colocar no local apropriado, como indiquei, e sim, irá funcionar.
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Então colocaria a storage em cada evento, certo?
Uma storage diferente para cada spell.
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Ok, obrigado pela ajuda.





info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian
Como coloco cooldown em spell? TFS 0.4 rev 3884 v8.60.