示例#1
0
        private static void AIHeroClient_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!getKeyBindItem(wSpells, "WSpells") || !W.IsReady())
            {
                return;
            }

            var unit = sender as AIHeroClient;

            if (unit == null || !unit.IsValid || !unit.IsEnemy)
            {
                return;
            }

            // spell handled by evade
            if (SpellDatabase.GetByName(args.SData.Name) != null)
            {
                Console.WriteLine("EVADE PROCESS SPELL RETURN");
                return;
            }

            Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name);
            if (!SpellBlock.Contains(unit, args))
            {
                return;
            }

            var castUnit = unit;
            var type     = args.SData.TargettingType;

            Console.WriteLine(
                "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius);
            Console.WriteLine("Distance: " + args.End.DistanceToPlayer());

            if (!unit.LSIsValidTarget() || getBoxItem(wSpells, "WMode") == 1)
            {
                var target = TargetSelector.SelectedTarget;
                if (target == null || !target.LSIsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTarget(W.Range, DamageType.Physical);
                }

                if (target != null && target.LSIsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsSkillShot())
            {
                if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300)
                {
                    LeagueSharp.Common.Utility.DelayAction.Add(400 + (int)(unit.LSDistance(Player) / 7f), () => CastW(castUnit));
                }
                else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260)
                {
                    Console.WriteLine("RIVEN");
                    CastW(castUnit);
                }
                else if (args.End.DistanceToPlayer() < 60)
                {
                    CastW(castUnit);
                }
            }
            if (type.IsTargeted() && args.Target != null)
            {
                if (!args.Target.IsMe ||
                    (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 &&
                     args.Target.DistanceToPlayer() < 400))
                {
                    return;
                }

                if (getCheckBoxItem(wSpells, "WTurret") && Player.UnderTurret(true))
                {
                    return;
                }

                if (unit.ChampionName.Equals("Nautilus") ||
                    (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R)))
                {
                    var d          = unit.DistanceToPlayer();
                    var travelTime = d / args.SData.MissileSpeed;
                    var delay      = travelTime * 1000 - W.Delay + 150;
                    Console.WriteLine("TT: " + travelTime + " " + delay);
                    LeagueSharp.Common.Utility.DelayAction.Add((int)delay, () => CastW(castUnit));
                    return;
                }

                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                // annie moving tibbers
                if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R))
                {
                    return;
                }
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self))
            {
                var d = args.End.LSDistance(Player.ServerPosition);
                var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius;
                Console.WriteLine(d + " " + " " + p);
                if (d < p)
                {
                    Console.WriteLine("CAST");
                    CastW(castUnit);
                }
            }
        }
示例#2
0
        private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!Menu.Item("WSpells").IsActive() || !W.IsReady())
            {
                return;
            }

            var unit = sender as Obj_AI_Hero;

            if (unit == null || !unit.IsValid || !unit.IsEnemy)
            {
                return;
            }

            if (Menu.Item("WSmart").IsActive() &&
                (Player.HasBuff("BlackShield") || Player.HasBuff("itemmagekillerveil")))
            {
                return;
            }

            // spell handled by evade
            if (SpellDatabase.GetByName(args.SData.Name) != null)
            {
                Console.WriteLine("EVADE PROCESS SPELL RETURN");
                return;
            }

            Console.WriteLine("({0}) {1}", args.Slot, args.SData.Name);
            if (!SpellBlock.Contains(unit, args))
            {
                return;
            }

            var castUnit = unit;
            var type     = args.SData.TargettingType;

            Console.WriteLine(
                "PassiveType: {0} Range: {1} Radius: {2}", type, args.SData.CastRange, args.SData.CastRadius);
            Console.WriteLine("Distance: " + args.End.DistanceToPlayer());

            if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1)
            {
                var target = TargetSelector.GetSelectedTarget();
                if (target == null || !target.IsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTargetNoCollision(W);
                }

                if (target != null && target.IsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsSkillShot())
            {
                if (unit.ChampionName.Equals("Bard") && args.End.DistanceToPlayer() < 300)
                {
                    Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit));
                }
                else if (unit.ChampionName.Equals("Riven") && args.End.DistanceToPlayer() < 260)
                {
                    //Console.WriteLine("RIVEN");
                    CastW(castUnit);
                }
                else if (args.End.DistanceToPlayer() < 60)
                {
                    CastW(castUnit);
                }
            }
            if (type.IsTargeted() && args.Target != null)
            {
                if (!args.Target.IsMe ||
                    (args.Target.Name.Equals("Barrel") && args.Target.DistanceToPlayer() > 200 &&
                     args.Target.DistanceToPlayer() < 400))
                {
                    return;
                }

                if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true))
                {
                    return;
                }

                if (unit.ChampionName.Equals("Nautilus") ||
                    (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R)))
                {
                    var d          = unit.DistanceToPlayer();
                    var travelTime = d / args.SData.MissileSpeed;
                    var delay      = travelTime * 1000 - W.Delay + 150;
                    //Console.WriteLine("TT: " + travelTime + " " + delay);
                    Utility.DelayAction.Add((int)delay, () => CastW(castUnit));
                    return;
                }

                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                // annie moving tibbers
                if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R))
                {
                    return;
                }
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Cone) && args.End.DistanceToPlayer() < args.SData.CastRadius)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self))
            {
                var d = args.End.Distance(Player.ServerPosition);
                var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius;
                //Console.WriteLine(d + " " + " " + p);
                if (d < p)
                {
                    //Console.WriteLine("CAST");
                    CastW(castUnit);
                }
            }
        }
示例#3
0
文件: Program.cs 项目: jayblah/Trees
        private static void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender == null || !sender.IsValid)
            {
                return;
            }

            if (sender.IsMe)
            {
                var slot = Player.GetSpellSlot(args.SData.Name);

                if (slot.Equals(SpellSlot.E))
                {
                    Orbwalking.ResetAutoAttackTimer();
                }

                return;
            }

            var autoW = Menu.Item("WSpells").IsActive() && W.IsReady();

            if (!autoW)
            {
                return;
            }

            var unit     = sender as Obj_AI_Hero;
            var castUnit = unit;
            var type     = args.SData.TargettingType;

            var blockableSpell = unit != null && unit.IsEnemy && SpellBlock.Contains(unit, args);

            if (!blockableSpell)
            {
                //Console.WriteLine("RETURN");
                return;
            }

            //Console.WriteLine(type);
            if (!unit.IsValidTarget() || Menu.Item("WMode").GetValue <StringList>().SelectedIndex == 1)
            {
                var target = TargetSelector.GetSelectedTarget();
                if (target == null || !target.IsValidTarget(W.Range))
                {
                    target = TargetSelector.GetTargetNoCollision(W);
                }

                if (target != null && target.IsValidTarget(W.Range))
                {
                    castUnit = target;
                }
            }

            if (type.IsTargeted() && args.Target != null && args.Target.IsMe)
            {
                if (Menu.Item("WTurret").IsActive() && Player.UnderTurret(true))
                {
                    return;
                }

                CastW(castUnit);
            }
            else if (unit.ChampionName.Equals("Riven") && unit.Distance(Player) < 400)
            {
                CastW(castUnit);
            }
            else if (unit.ChampionName.Equals("Bard") && type.Equals(SpellDataTargetType.Location) &&
                     args.End.Distance(Player.ServerPosition) < 300)
            {
                Utility.DelayAction.Add(400 + (int)(unit.Distance(Player) / 7f), () => CastW(castUnit));
            }
            else if (args.SData.IsAutoAttack() && args.Target != null && args.Target.IsMe)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.SelfAoe) &&
                     unit.Distance(Player.ServerPosition) < args.SData.CastRange + args.SData.CastRadius / 2)
            {
                CastW(castUnit);
            }
            else if (type.Equals(SpellDataTargetType.Self))
            {
                // this probably isn't needed
                if ((unit.ChampionName.Equals("Kalista") && Player.Distance(unit) < 350))
                {
                    CastW(castUnit);
                }

                // need to look into this
                if (unit.ChampionName.Equals("Zed") && Player.Distance(unit) < 300)
                {
                    Utility.DelayAction.Add(200, () => CastW(castUnit));
                }
            }
        }