Ir para conteúdo

Featured Replies

Postado

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

 

  • Respostas 22
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Mathias Kenfi
    Mathias Kenfi

    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

  • Mathias Kenfi
    Mathias Kenfi

    Para o healing aparecer, você tem que editar no config.lua na linha a seguir showHealthChange = false Coloque true

Posted Images

Postado
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
  • 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
  • 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo