Olá!
Vejamos como fazer esse seu script, como te disse por PM, podemos usar a função onGetFormulaValues para mudar o jeito que a fórmula é calculada, de modo que, teremos algo mais ou menos assim:
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)
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)
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)
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)
function onGetFormulaValues_sorcerer(cid, level, maglevel)
local x, y = maglevel*3, level/5
return (x*1.2+y), (x*1.5+y)
end
function onGetFormulaValues_druid(cid, level, maglevel)
local x, y = maglevel*3, level/5
return (x*1.2+y), (x*1.5+y)
end
function onGetFormulaValues_paladin(cid, level, maglevel)
local x, y = maglevel*3, level/5
return (x*1.2+y), (x*1.5+y)
end
function onGetFormulaValues_knight(cid, level, maglevel)
local x, y = maglevel*3, level/5
return (x*1.2+y), (x*1.5+y)
end
setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_sorcerer")
setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_druid")
setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_paladin")
setCombatCallback(combat4, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_knight")
function onCastSpell(cid, var)
if isInArray({1, 5}, getPlayerVocation(cid)) then
doCombat(cid, combat1, var)
elseif isInArray({2, 6}, getPlayerVocation(cid)) then
doCombat(cid, combat2, var)
elseif isInArray({3, 7}, getPlayerVocation(cid)) then
doCombat(cid, combat3, var)
elseif isInArray({4, 8}, getPlayerVocation(cid)) then
doCombat(cid, combat4, var)
end
return true
end
Creio que assim você pode manipular melhor as fórmulas, o problema é o tamanho do script! ![]()
Estou trabalhando em um "sistema avançado de configuração" de magias que, creio eu, compacta o número de linhas em 80%.




info
Grupo: Campones
Registrado: 14/08/07
Posts: 5
Reputação: 0
Bom Dia Xtibianos!
Venho aqui novamente, pedir um script simples, só que para mim, Bem complicado.
Inicialmente, vou colocar, um "Script" que o usuário "Oneshot"(Scripter e tanto), fez para que cada vocação tivesse sua "própria" formula na hora do resultado final, a cura de uma Rune "Ultimate Healing".
Aqui vai o Script que ele criou:
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) setHealingFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 10, 12) --[[Fórmula dos Sorcerers]] 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) setHealingFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 10, 12) --[[Fórmula dos Druids]] 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) setHealingFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 10, 12) --[[Fórmula dos Paladins]] 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) setHealingFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 10, 12) --[[Fórmula dos Knights]] 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 endO que estou pedindo, é que seja, uma base como essa, claro que se alguém tiver uma idéia melhor de como formatar esse "Script" será muito bem vinda, mais a idéia principal é, todas as vocações tenham cálculos diferentes para o resultado final que é o tanto que irão healar e também que o calculo não seja baseado pelo ML(Magic Level) e sim pelo LVL(Level), o Objetivo que gostaria mesmo, seria uma formula, que tivesse, Ml e Lvl os dois como variantes da mesma. Mas se não tiver como, só com o Level estaria muito bom.
Agradeço, desde já, a atenção de quem leu o tópico até aqui e obrigado pela atenção. :button_ok:
Atenciosamente, Hespanhol.