Как можно обойти это исключение?
Вот мой код:
public static class Damage { public static double RDamage(AIBaseClient target) { return new double[] { 100, 200, 300 }[SpellManager.R.Level - 1] + (0.75 * Player.Instance.FlatPhysicalDamageMod) + (1.5 * Player.Instance.FlatPhysicalDamageMod) + (0.2 * target.BuffCount("dariushemo")); } public static double RDamage(AIBaseClient target, int stack) { if (stack == 5) { var bonus = 0f; if (!Player.HasBuff("DariusNoxonTactictsONH")) bonus = new float[] { 0, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 85, 95, 105, 130, 155, 180, 205, 230 }[Player.Instance.Level]; return new double[] { 100, 200, 300 }[SpellManager.R.Level - 1] + (0.75 * (Player.Instance.FlatPhysicalDamageMod + bonus)) + (1.5 * Player.Instance.FlatPhysicalDamageMod) + (0.2 * stack); } return new double[] { 100, 200, 300 }[SpellManager.R.Level - 1] + (0.75 * Player.Instance.FlatPhysicalDamageMod) + (1.5 * Player.Instance.FlatPhysicalDamageMod) + (0.2 * stack); } public static double PassiveDamage(this AIHeroClient target) { float damagePerSec = (12 + Player.Instance.Level + 0.3f * Player.Instance.FlatPhysicalDamageMod) / 5; return (float)(ObjectManager.Player.CalculateDamage(target, DamageType.Physical, damagePerSec * target.BuffCount("dariushemo") * target.BuffRemainTime("dariushemo"))); } public static float PassiveDamage(this AIHeroClient target, int second) { float damagePerSec = (12 + Player.Instance.Level + 0.3f * Player.Instance.FlatPhysicalDamageMod) / 5; return (float)(ObjectManager.Player.CalculateDamage(target, DamageType.Physical, damagePerSec * target.BuffCount("dariushemo") * target.BuffRemainTime("dariushemo") > second ? second : target.BuffRemainTime("dariushemo"))); } public static float PassiveDamage(this AIHeroClient target, int stack, int second) { float damage = ((12 + Player.Instance.Level + 0.3f * Player.Instance.FlatPhysicalDamageMod) / 5) * stack * second; return (float)(ObjectManager.Player.CalculateDamage(target, DamageType.Physical, damage)); } }
Теперь, когда я использую это
if (QTarget.GetResult().IsKillable) return;
а это
if (Damage.RDamage(unit) > Health + Shield + unit.HPRegenRate) { result.IsKillable = true; if (unit.IsValidTarget(SpellManager.R.Range) && unit.PreviousPosition.Distance(Player.Instance.PreviousPosition) > SpellManager.R.Range) result.Range = UltRange.FlashRRange; if (unit.IsValidTarget(SpellManager.R.Range)) result.Range = UltRange.RRange; }
и результат в Индекс находился за пределами массива. в c#
Дайте мне какое-нибудь решение, как решить эту проблему любым альтернативным способом, а затем дайте мне решение
по thienha1
Что я уже пробовал:
Я пробовал использовать try catch но мне нравится находить решение для того чтобы решить его полностью не иметь дело с ошибкой
MadMyche
Какая линия выбрасывает этот "индекс из диапазона"- обычно это лучшее место для начала