eduhespanhol 0 Postado Julho 30, 2010 Share Postado Julho 30, 2010 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 https://xtibia.com/forum/topic/138437-pedido-rune-que-varia-de-acordo-com-o-level-e-tambem-que-seja-variavel-por-voca%C3%A7%C3%A3o/ Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 30, 2010 Share Postado Julho 30, 2010 (editado) 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 Julho 30, 2010 por Oneshot Link para o comentário https://xtibia.com/forum/topic/138437-pedido-rune-que-varia-de-acordo-com-o-level-e-tambem-que-seja-variavel-por-voca%C3%A7%C3%A3o/#findComment-914516 Compartilhar em outros sites More sharing options...
eduhespanhol 0 Postado Agosto 4, 2010 Autor Share Postado Agosto 4, 2010 (editado) 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 Agosto 4, 2010 por hespanhol Link para o comentário https://xtibia.com/forum/topic/138437-pedido-rune-que-varia-de-acordo-com-o-level-e-tambem-que-seja-variavel-por-voca%C3%A7%C3%A3o/#findComment-916797 Compartilhar em outros sites More sharing options...
Posts Recomendados