Isso porque você criou as funções que retornam dano com o mesmo nome, todas elas.
Tente criar essa função com um número na frente, igual você faz com as variáveis de combate,
Veja o script abaixo que eu consertei e tente entender,
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatParam(combat1, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat1, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos Sorcerers]]
function onGetFormulaValues1(cid, level, maglevel)
local min = 100
local max = 101
return min, max
end
setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues1")
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatParam(combat2, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat2, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos druids]]
function onGetFormulaValues2(cid, level, maglevel)
local min = ((level*1)+(maglevel*6))
local max = ((level*1)+(maglevel*7))
return min, max
end
setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")
local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat3, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat3, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos paladins]]
function onGetFormulaValues3(cid, level, maglevel)
local min = ((level*10)+(maglevel*(25/10)))
local max = ((level*10)+(maglevel*3))
return min, max
end
setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues3")
local combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat4, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatParam(combat4, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat4, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos knights]]
function onGetFormulaValues4(cid, level, maglevel)
local min = ((level*5)+(maglevel*40))
local max = ((level*5)+(maglevel*50))
return min, max
end
setCombatCallback(combat4, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues4")
function onCastSpell(cid, var)
if isInArray({1, 5}, getPlayerVocation(cid)) then
return doCombat(cid, combat1, var)
elseif isInArray({2, 6}, getPlayerVocation(cid)) then
return doCombat(cid, combat2, var)
elseif isInArray({3, 7}, getPlayerVocation(cid)) then
return doCombat(cid, combat3, var)
elseif isInArray({4, 8}, getPlayerVocation(cid)) then
return doCombat(cid, combat4, var)
end
end
Teste e reporte no tópico o funcionamento ;D





info
Grupo: Campones
Registrado: 07/06/06
Posts: 6
Reputação: 0
Peguei esse script com o Oneshot, ele me ajudou em outro tópico, porém ao testar percebi que não funciona...
Ele deveria analisar a vocação do player e, de acordo com a vocação, executar uma fórmula.
Porém o que acontece é que ele usa sempre a primeira fórmula, sendo knight, paladin, ou sorcerer.
Aí o script.
Gostaria que alguém me mostrasse aonde está o erro.
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat1, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat1, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos Sorcerers]] function onGetFormulaValues(cid, level, maglevel) local min = 100 local max = 101 return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat2, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat2, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat2, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos druids]] function onGetFormulaValues(cid, level, maglevel) local min = ((level*1)+(maglevel*6)) local max = ((level*1)+(maglevel*7)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat3, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat3, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos paladins]] function onGetFormulaValues(cid, level, maglevel) local min = ((level*10)+(maglevel*(25/10))) local max = ((level*10)+(maglevel*3)) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat4, COMBAT_PARAM_AGGRESSIVE, FALSE) setCombatParam(combat4, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat4, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) --[[Fórmula dos knights]] function onGetFormulaValues(cid, level, maglevel) local min = ((level*5)+(maglevel*40)) local max = ((level*5)+(maglevel*50)) return min, max end setCombatCallback(combat4, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if isInArray({1, 5}, getPlayerVocation(cid)) then return doCombat(cid, combat1, var) elseif isInArray({2, 6}, getPlayerVocation(cid)) then return doCombat(cid, combat2, var) elseif isInArray({3, 7}, getPlayerVocation(cid)) then return doCombat(cid, combat3, var) elseif isInArray({4, 8}, getPlayerVocation(cid)) then return doCombat(cid, combat4, var) end end