Ir para conteúdo
  • 0

(pedido) receber menos % de dano


LeoPetryScript

Pergunta

quando player sofrer um ataque de 1000, receber só 800 de dano que no caso seria (80/100)

no caso abaixo, o player recebe os 1000 de dano + 20%, teria que ser - 20%

function onStatsChange(cid, attacker, type, combat, value, summons)
local summons = getCreatureSummons(cid)
local angel = "death angel [0]"
if #summons >= 1 then
for j = 1, #summons do
if getCreatureName(summons[j]):lower() == string.lower(angel) then
if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
	dano = math.ceil(value*0.2)
	doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255)
	end
else
return true
end
end
end
return true
end

 

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

11 respostass a esta questão

Posts Recomendados

  • 0
4 horas atrás, nociam disse:

 

dano = dano - (dano * 0.2)  se não for isso não saquei o que quer direito.

tipo: eu coloquei assim da maneira que está, porém o player deveria receber 800 de dano, e não recebe, recebe 1200 assim.

aí tentei colocar pra não receber o dano normal, apenas 80* dele, com um return false no final, mas daí ele não recebe nem um e nem outro

 

 

edit1 --

É pra ser tipo um absorvPercentAll = 20 do items.XML mas em vez de ser no item, ser quando o player estiver com um summon

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

  • 0

Tente assim:

function onStatsChange(cid, attacker, type, combat, value, summons)
  local summons = getCreatureSummons(cid)
  local angel = "death angel [0]"
  if #summons >= 1 then
    for j = 1, #summons do
      if getCreatureName(summons[j]):lower() == string.lower(angel) then
        if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
          dano = dano - (value*0.2)
          doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255)
        end
      else
        return true
      end
    end
  end
  return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, DarkWore disse:

Tente assim:


function onStatsChange(cid, attacker, type, combat, value, summons)
  local summons = getCreatureSummons(cid)
  local angel = "death angel [0]"
  if #summons >= 1 then
    for j = 1, #summons do
      if getCreatureName(summons[j]):lower() == string.lower(angel) then
        if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
          dano = dano - (value*0.2)
          doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255)
        end
      else
        return true
      end
    end
  end
  return true
end

 

da erro pq nao reconhece dano = "dano" - (value*0.2)

Link para o comentário
Compartilhar em outros sites

  • 0
43 minutos atrás, LeoPetryScript disse:

da erro pq nao reconhece dano = "dano" - (value*0.2)

Provavelmente pq a variável 'dano' n foi declarada, tenta assim:

function onStatsChange(cid, attacker, type, combat, value, summons)
  local summons = getCreatureSummons(cid)
  local angel = "death angel [0]"
  if #summons >= 1 then
    for j = 1, #summons do
      if getCreatureName(summons[j]):lower() == string.lower(angel) then
        if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
          value = value - (value*0.2)
          doTargetCombatHealth(attacker, cid, combat, -value, -value, 255)
        end
      else
        return true
      end
    end
  end
  return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, lSainty disse:

Provavelmente pq a variável 'dano' n foi declarada, tenta assim:


function onStatsChange(cid, attacker, type, combat, value, summons)
  local summons = getCreatureSummons(cid)
  local angel = "death angel [0]"
  if #summons >= 1 then
    for j = 1, #summons do
      if getCreatureName(summons[j]):lower() == string.lower(angel) then
        if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
          value = value - (value*0.2)
          doTargetCombatHealth(attacker, cid, combat, -value, -value, 255)
        end
      else
        return true
      end
    end
  end
  return true
end

 

testei com um monstro que hita sempre 1100-1200

ele começou a hitar 3200 com esse efeito ativo

Link para o comentário
Compartilhar em outros sites

  • 0
2 minutos atrás, LeoPetryScript disse:

testei com um monstro que hita sempre 1100-1200

ele começou a hitar 3200 com esse efeito ativo

Infelizmente eu n manjo dessas formulas de dano, mas n faz sentido visto que se o 'value' fosse 100 por exemplo, a conta seria: value = 100 - (100*0.2) = 80

Link para o comentário
Compartilhar em outros sites

  • 0
6 minutos atrás, lSainty disse:

Infelizmente eu n manjo dessas formulas de dano, mas n faz sentido visto que se o 'value' fosse 100 por exemplo, a conta seria: value = 100 - (100*0.2) = 80

é que tem que ter tipo um return false pro dano primario, mas se eu coloco return false, n sai nenhum dano

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, LeoPetryScript disse:

é que tem que ter tipo um return false pro dano primario, mas se eu coloco return false, n sai nenhum dano

Dei uma pesquisada e creio que vc vai ter que fazer nas sources. Ao colocar return false (que cancela o dano "original" para causar apenas o do doTargetCombatHealth) ele entra no onStatsChange novamente e vira um loop cancelando o dano.

Link para o comentário
Compartilhar em outros sites

  • 0
29 minutos atrás, lSainty disse:

Dei uma pesquisada e creio que vc vai ter que fazer nas sources. Ao colocar return false (que cancela o dano "original" para causar apenas o do doTargetCombatHealth) ele entra no onStatsChange novamente e vira um loop cancelando o dano.

não sei como faz isso, ai fiz diferente aqui, coloquei pra aparecer do lado do hit "-20%" ai coloquei 

doTargetCombatHealth(attacker, cid, combat, dano, dano, nill)

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

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...