Ir para conteúdo

Ajuda Com "isinarray" Em Uma Spell


DemonKorg

Posts Recomendados

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

Link para o comentário
Compartilhar em outros sites

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

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

Continua com o mesmo problema =/

 

Todas vocações healam 100, a primeira opção, ressaltando que 100 não seria o número que vou utilizar, é apenas simbólico pra verificação.

 

Qualquer vocação de qual eu use uma UH vai pro combat1.

 

Mais alguma idéia?

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

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

Link para o comentário
Compartilhar em outros sites

Putz, sinto muito em ter que responder de forma negativa denovo, mas não deu certo.

 

Testei com druid, sorcerer, paladin e knight, todos healando 100...

 

Posso contar com sua boa vontade denovo? x.x

Link para o comentário
Compartilhar em outros sites

Muito estranho, rapaz.

Acabei de abrir um servidor de testes para ver seu script e ele está funcionando perfeitamente.

 

Um "heal" diferente para cada vocação.

Link para o comentário
Compartilhar em outros sites

Olá eu testei o script e a runa heala de acordo com a vocação.

 

aqui funciono perfeitamente...

 

 

Demon sugiro que você refaça todos os passos

 

abraços

Link para o comentário
Compartilhar em outros sites

Bem, diante disso só posso entender que o problema está comigo e não com seu script, vou tentar arrumar e se conseguir te mando uma pm, só pra avisar e talz, mas por enquanto nada mesmo :/ to travando meu projeto por causa disso .-.

 

Muito obrigado Oneshot e Vodkart por verificarem, certamente acharei o problema!

 

Tem alguma chance de ser por causa do meu servidor?

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

×
×
  • Criar Novo...