Ir para conteúdo

[Pedido] Rune Que Varia De Acordo Com O Level E Tambem Que Seja Variavel Por Vocação


eduhespanhol

Posts Recomendados

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 
end

 

O 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.

Link para o comentário
Compartilhar em outros sites

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%.

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

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%.

 

Boa Noite.

 

Primeiramente, Desculpe-me a demora, não pude acessar o computador por "motivos técnicos". (Não estava ligando por causa da Placa de Video ;P)

 

Simplismente PERFEITO "Oneshot", você conseguiu sanar a dúvida por completo. Meus parabens, por tal habilidade com Script. E quando descobrir o "Sistema avançado de configuração" se possivel, passe para nós do XTibia.

 

E novamente, Muito, mas Muito obrigado mesmo era EXATAMENTE o que estava procurando.

 

Duvida Sanada, Tópico Reportado.

 

Ahh... REP + :button_ok:

 

Atenciosamente, Hespanhol.

Editado por hespanhol
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...