LeoPetryScript 0 Postado Agosto 12, 2020 Share Postado Agosto 12, 2020 (editado) 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 Agosto 12, 2020 por LeoPetryScript Link para o comentário Compartilhar em outros sites More sharing options...
0 nociam 90 Postado Agosto 12, 2020 Share Postado Agosto 12, 2020 dano = dano - (dano * 0.2) se não for isso não saquei o que quer direito. Link para o comentário Compartilhar em outros sites More sharing options...
0 LeoPetryScript 0 Postado Agosto 12, 2020 Autor Share Postado Agosto 12, 2020 (editado) 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 Agosto 12, 2020 por LeoPetryScript Link para o comentário Compartilhar em outros sites More sharing options...
0 DarkWore 112 Postado Agosto 12, 2020 Share Postado Agosto 12, 2020 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 More sharing options...
0 LeoPetryScript 0 Postado Agosto 13, 2020 Autor Share Postado Agosto 13, 2020 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 More sharing options...
0 lSainty 81 Postado Agosto 13, 2020 Share Postado Agosto 13, 2020 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 More sharing options...
0 LeoPetryScript 0 Postado Agosto 13, 2020 Autor Share Postado Agosto 13, 2020 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 More sharing options...
0 lSainty 81 Postado Agosto 13, 2020 Share Postado Agosto 13, 2020 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 More sharing options...
0 LeoPetryScript 0 Postado Agosto 13, 2020 Autor Share Postado Agosto 13, 2020 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 More sharing options...
0 lSainty 81 Postado Agosto 13, 2020 Share Postado Agosto 13, 2020 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 More sharing options...
0 LeoPetryScript 0 Postado Agosto 13, 2020 Autor Share Postado Agosto 13, 2020 (editado) 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 Agosto 13, 2020 por LeoPetryScript Link para o comentário Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Agosto 14, 2020 Share Postado Agosto 14, 2020 onstatchange quer dizer que já foi sofrido o dano. o que tu pode fazer com esse script é devolver parte do valor do dano sofrido. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LeoPetryScript 0
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%
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados