Postado Janeiro 25, 2020 5 anos Você declarou as variáveis, min e max, na função abaixo function onGetFormulaValues(cid, level, maglevel) local min = (((level/5)+(maglevel*1) +1)) local max = (((level/5)+(maglevel*2) +3)) return min, max end Você deve declarar essas funções de forma global, como eu mostrei local min, max = 15, 30 -- Isto é um exemplo de uma variável global Desta forma, o valor será global. Só não fechar com end
Postado Janeiro 25, 2020 5 anos Autor @Joaovettor Pra mim não faz sentido... Porque o script pegaria o valor min (fixo) e max (tambem fixo) e não usaria ml pra nada Eu acabei de testa com um lv 1 com ml 1 e um com ml 52, os dois curaram 24
Postado Janeiro 25, 2020 5 anos 27 minutos atrás, Zazeros disse: @Joaovettor Pra mim não faz sentido... Porque o script pegaria o valor min (fixo) e max (tambem fixo) e não usaria ml pra nada Eu acabei de testa com um lv 1 com ml 1 e um com ml 52, os dois curaram 24 Você não entendeu nada do que expliquei É claro que você curou, afinal a varíavel min e max estão declaras na função function onGetFormulaValues(cid, level, maglevel) Já aqui, não está declarado o que seria min e max, pois elas não foram decladas. Elas foram declaradas apenas na função citada acima setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, math.random(min, max))
Postado Janeiro 25, 2020 5 anos Autor @Joaovettor Cara, eu disse que não entendia muito disso, mas eu realmente to tentando entender o que tu disse. Eu pedi pra ajudar a fazer uma magia que curasse de acordo com o ML, ai ela tava retornando um erro ou curava um valor fixo, depoisi voce veio e colocou o valor fixo no começo do script, usando como exemplo, mas exemplo de que? O que eu deveria colocar para que ele usasse uma formula para curar ao inves dos valores fixos? Eu entendi que se eu quiser que a magia cure, eu tenho que colocar os valores fora da função, mas ai como eu colocaria pra que o script detecte o ML do jogador e faça o calculo sem colocar na função?
Postado Janeiro 25, 2020 5 anos Solução 10 minutos atrás, Zazeros disse: @Joaovettor Cara, eu disse que não entendia muito disso, mas eu realmente to tentando entender o que tu disse. Eu pedi pra ajudar a fazer uma magia que curasse de acordo com o ML, ai ela tava retornando um erro ou curava um valor fixo, depoisi voce veio e colocou o valor fixo no começo do script, usando como exemplo, mas exemplo de que? O que eu deveria colocar para que ele usasse uma formula para curar ao inves dos valores fixos? Eu entendi que se eu quiser que a magia cure, eu tenho que colocar os valores fora da função, mas ai como eu colocaria pra que o script detecte o ML do jogador e faça o calculo sem colocar na função? Os valores fixos foram exemplos de como deve ser feito, afinal da maneira que você estava fazendo não ia funcionar Para não ser valor fixo, basta você fazer da mesma forma que está escrito na função abaixo: function onGetFormulaValues(cid, level, maglevel) local min = (((level/5)+(maglevel*1) +1)) local max = (((level/5)+(maglevel*2) +3)) return min, max end Neste caso é só você criar uma variável GLOBAL da mesma forma que está escrito acima EXEMPLO: local level = getPlayerLevel(cid) local maglevel = getPlayerMagLevel(cid) local min, max = (((level/5)+(maglevel*1) +1)), (((level/5)+(maglevel*2) +3)) Mas deve ser declarado com variável GLOBAL, neste caso você deve declarar ela fora de uma função Porém você vai se deparar com outro problema, que é a variável "cid", porque você precisa de uma função padrão para declarar esta variável. Então para TENTAR resolver este problema tente usar o script dessa forma local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, maglevel) local min = (((level/5)+(maglevel*1) +1)) local max = (((level/5)+(maglevel*2) +3)) -- Essas variáveis são validas apenas para esta função, pois você fechou o escopo return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local condition = createConditionObject(CONDITION_REGENERATION) function onCastSpell(cid, var) -- Perceba que eu coloquei dentro desta função para definir a variável cid local level = getPlayerLevel(cid) local maglevel = getPlayerMagLevel(cid) local min, max = math.ceil((((level/5)+(maglevel*1) +1))), math.ceil((((level/5)+(maglevel*2) +3))) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_TICKS, 1 * 60 * 1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, math.random(min, max)) -- Agora estão declaradas logo acima setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setCombatCondition(combat, condition) return doCombat(cid, combat, var) end É uma das possibilidades de resolver o problema (existe script melhor pra tal coisa, porém é a mesma coisa)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.