コード例 #1
0
ファイル: Utils.cs プロジェクト: CjShu/xQx-LeagueSharp
        //public static void DrawJunglePosition(int drawOption)
        //{
        //    if (drawOption == (int)DrawOption.Off)
        //    {
        //        return;
        //    }

        //    junglePositions = new Dictionary<Vector3, System.Drawing.Color>();
        //    if (Game.MapId == (GameMapId)11)
        //    {
        //        const float CircleRange = 115f;

        //        junglePositions.Add(new Vector3(7461.018f, 3253.575f, 52.57141f), System.Drawing.Color.Blue);
        //        // blue team :red;
        //        junglePositions.Add(new Vector3(3511.601f, 8745.617f, 52.57141f), System.Drawing.Color.Blue);
        //        // blue team :blue
        //        junglePositions.Add(new Vector3(7462.053f, 2489.813f, 52.57141f), System.Drawing.Color.Blue);
        //        // blue team :golems
        //        junglePositions.Add(new Vector3(3144.897f, 7106.449f, 51.89026f), System.Drawing.Color.Blue);
        //        // blue team :wolfs
        //        junglePositions.Add(new Vector3(7770.341f, 5061.238f, 49.26587f), System.Drawing.Color.Blue);
        //        // blue team :wariaths

        //        junglePositions.Add(new Vector3(10930.93f, 5405.83f, -68.72192f), System.Drawing.Color.Yellow);
        //        // Dragon

        //        junglePositions.Add(new Vector3(7326.056f, 11643.01f, 50.21985f), System.Drawing.Color.Red);
        //        // red team :red
        //        junglePositions.Add(new Vector3(11417.6f, 6216.028f, 51.00244f), System.Drawing.Color.Red);
        //        // red team :blue
        //        junglePositions.Add(new Vector3(7368.408f, 12488.37f, 56.47668f), System.Drawing.Color.Red);
        //        // red team :golems
        //        junglePositions.Add(new Vector3(10342.77f, 8896.083f, 51.72742f), System.Drawing.Color.Red);
        //        // red team :wolfs
        //        junglePositions.Add(new Vector3(7001.741f, 9915.717f, 54.02466f), System.Drawing.Color.Red);
        //        // red team :wariaths

        //        foreach (var hp in junglePositions)
        //        {
        //            switch (drawOption)
        //            {
        //                case (int)DrawOption.CloseToMobs:
        //                    if (ObjectManager.Player.Distance(hp.Key)
        //                        <= Orbwalking.GetRealAutoAttackRange(null) + 65)
        //                    {
        //                        Render.Circle.DrawCircle(hp.Key, CircleRange, hp.Value);
        //                    }
        //                    break;
        //                case (int)DrawOption.CloseToMobsAndJungleClearActive:
        //                    if (ObjectManager.Player.Distance(hp.Key)
        //                        <= Orbwalking.GetRealAutoAttackRange(null) + 65 && Program.ChampionClass.JungleClearActive)
        //                    {
        //                        Render.Circle.DrawCircle(hp.Key, CircleRange, hp.Value);
        //                    }
        //                    break;
        //            }
        //        }
        //    }
        //}

        public static GameObjectTeam Team(this Obj_AI_Base mob)
        {
            mobTeams = new Dictionary <Vector2, GameObjectTeam>();
            if (Game.MapId == (GameMapId)11)
            {
                mobTeams.Add(new Vector2(7756f, 4118f), GameObjectTeam.Order);  // blue team :red;
                mobTeams.Add(new Vector2(3824f, 7906f), GameObjectTeam.Order);  // blue team :blue
                mobTeams.Add(new Vector2(8356f, 2660f), GameObjectTeam.Order);  // blue team :golems
                mobTeams.Add(new Vector2(3860f, 6440f), GameObjectTeam.Order);  // blue team :wolfs
                mobTeams.Add(new Vector2(6982f, 5468f), GameObjectTeam.Order);  // blue team :wariaths
                mobTeams.Add(new Vector2(2166f, 8348f), GameObjectTeam.Order);  // blue team :Frog jQuery

                mobTeams.Add(new Vector2(4768, 10252), GameObjectTeam.Neutral); // Baron
                mobTeams.Add(new Vector2(10060, 4530), GameObjectTeam.Neutral); // Dragon

                mobTeams.Add(new Vector2(7274f, 11018f), GameObjectTeam.Chaos); // Red team :red;
                mobTeams.Add(new Vector2(11182f, 6844f), GameObjectTeam.Chaos); // Red team :Blue
                mobTeams.Add(new Vector2(6450f, 12302f), GameObjectTeam.Chaos); // Red team :golems
                mobTeams.Add(new Vector2(11152f, 8440f), GameObjectTeam.Chaos); // Red team :wolfs
                mobTeams.Add(new Vector2(7830f, 9526f), GameObjectTeam.Chaos);  // Red team :wariaths
                mobTeams.Add(new Vector2(12568, 6274), GameObjectTeam.Chaos);   // Red team : Frog jQuery

                return
                    (mobTeams.Where(
                         hp => mob.Distance(hp.Key) <= (Orbwalking.GetRealAutoAttackRange(null) * 2))
                     .Select(hp => hp.Value)
                     .FirstOrDefault());
            }
            return(GameObjectTeam.Unknown);
        }
コード例 #2
0
        public override void ExecuteLaneClear()
        {
            var useQ = Program.Config.Item("UseQL").GetValue <StringList>().SelectedIndex;

            var minion =
                MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range)
                .FirstOrDefault(m => m.Health < ObjectManager.Player.GetSpellDamage(m, SpellSlot.Q));

            if (minion != null)
            {
                switch (useQ)
                {
                case 1:
                    minion =
                        MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range)
                        .FirstOrDefault(
                            m =>
                            m.Health <ObjectManager.Player.GetSpellDamage(m, SpellSlot.Q) &&
                                      m.Health> ObjectManager.Player.TotalAttackDamage);
                    Q.Cast(minion);
                    break;

                case 2:
                    minion =
                        MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range)
                        .FirstOrDefault(
                            m =>
                            m.Health <ObjectManager.Player.GetSpellDamage(m, SpellSlot.Q) &&
                                      ObjectManager.Player.Distance(m)
                                      > Orbwalking.GetRealAutoAttackRange(null) + 65);
                    Q.Cast(minion);
                    break;
                }
            }
        }
コード例 #3
0
ファイル: Sivir.cs プロジェクト: mirinsharp/Leaguesharp
        public override void ExecuteLaneClear()
        {
            var qJ = Program.Config.Item("UseQ.Lane").GetValue <StringList>().SelectedIndex;

            if (qJ != 0)
            {
                var minionsQ = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range, MinionTypes.All);
                if (minionsQ != null)
                {
                    if (Q.IsReady())
                    {
                        var locQ = Q.GetLineFarmLocation(minionsQ);
                        if (minionsQ.Count == minionsQ.Count(m => ObjectManager.Player.Distance(m) < Q.Range) &&
                            locQ.MinionsHit > qJ && locQ.Position.IsValid())
                        {
                            Q.Cast(locQ.Position);
                        }
                    }
                }
            }
            var wJ = Program.Config.Item("UseW.Lane").GetValue <StringList>().SelectedIndex;

            if (wJ != 0)
            {
                var minionsW = MinionManager.GetMinions(ObjectManager.Player.ServerPosition,
                                                        Orbwalking.GetRealAutoAttackRange(null) + 165, MinionTypes.All);
                if (minionsW != null && minionsW.Count >= wJ)
                {
                    if (W.IsReady())
                    {
                        W.Cast();
                    }
                }
            }
        }
コード例 #4
0
        public override void GameOnUpdate(EventArgs args)
        {
            if (R.IsReady())
            {
                var x = 0d;
                if (ObjectManager.Player.HealthPercent < 20 && ObjectManager.Player.CountEnemiesInRange(500) > 0)
                {
                    x = HeroManager.Enemies.Where(e => e.IsValidTarget(1000))
                        .Aggregate(0, (current, enemy) => (int)(current + enemy.Health));
                }
                if (ObjectManager.Player.Health < x)
                {
                    R.Cast(ObjectManager.Player.Position);
                }
            }

            Obj_AI_Hero t = null;

            if (KindredECharge != null)
            {
                t = KindredECharge;
                TargetSelector.SetTarget(KindredECharge);
            }
            else
            {
                t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
            }


            if (!t.IsValidTarget())
            {
                return;
            }

            if (ComboActive && !t.HasKindredUltiBuff())
            {
                if (t.IsValidTarget(Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65) && !t.HasKindredUltiBuff())
                {
                    if (GetValue <bool>("Combo.Q.Use"))
                    {
                        Q.Cast(Game.CursorPos);
                        //var x = CommonUtils.GetDashPosition(E, t, 400);
                        //Q.Cast(x);
                    }

                    if (GetValue <bool>("Combo.E.Use") && E.IsReady() && t.IsValidTarget(E.Range))
                    {
                        E.CastOnUnit(t);
                    }

                    if (GetValue <bool>("Combo.W.Use") && W.IsReady() && t.IsValidTarget(W.Range / 2))
                    {
                        W.Cast(t.Position);
                    }
                }
            }
        }
コード例 #5
0
        public override void ExecuteJungleClear()
        {
            if (Q.IsReady())
            {
                var jQ = Marksman.Utils.Utils.GetMobs(Orbwalking.GetRealAutoAttackRange(null) + 65, Marksman.Utils.Utils.MobTypes.All);
                if (jQ != null)
                {
                    switch (GetValue <StringList>("UseQJ").SelectedIndex)
                    {
                    case 1:
                    {
                        Q.Cast(jQ);
                        break;
                    }

                    case 2:
                    {
                        jQ = Utils.Utils.GetMobs(Orbwalking.GetRealAutoAttackRange(null) + 65, Utils.Utils.MobTypes.BigBoys);
                        if (jQ != null)
                        {
                            Q.Cast(jQ);
                        }
                        break;
                    }
                    }
                }
            }


            if (E.IsReady())
            {
                var jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Marksman.Utils.Utils.MobTypes.All);

                if (jungleMobs != null)
                {
                    switch (GetValue <StringList>("UseEJ").SelectedIndex)
                    {
                    case 1:
                    {
                        E.CastOnUnit(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(E.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            E.CastOnUnit(jungleMobs);
                        }
                        break;
                    }
                    }
                }
            }
        }
コード例 #6
0
 public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
 {
     foreach (
         var target in
         HeroManager.Enemies.Where(
             e =>
             e.IsValid && e.Distance(ObjectManager.Player) < Orbwalking.GetRealAutoAttackRange(null) + 65 &&
             e.IsVisible).Where(target => target.HasBuff("kindredcharge")))
     {
         Orbwalker.ForceTarget(target);
     }
 }
コード例 #7
0
        public override void ExecuteLaneClear()
        {
            if (E.IsReady())
            {
                var minions = MinionManager.GetMinions(ObjectManager.Player.Position, E.Range, MinionTypes.All,
                                                       MinionTeam.Enemy);

                if (minions != null)
                {
                    var eJ = Program.Config.Item("UseE.Lane").GetValue <StringList>().SelectedIndex;
                    if (eJ != 0)
                    {
                        var mE = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range + 175,
                                                          MinionTypes.All);
                        var locW = E.GetCircularFarmLocation(mE, 175);
                        if (locW.MinionsHit >= eJ && E.IsInRange(locW.Position.To3D()))
                        {
                            foreach (
                                var x in
                                ObjectManager.Get <Obj_AI_Minion>()
                                .Where(m => m.IsEnemy && !m.IsDead && m.LSDistance(locW.Position) < 100))
                            {
                                E.CastOnUnit(x);
                            }
                        }
                    }
                }
                if (Q.IsReady())
                {
                    var jE = Program.Config.Item("UseQ.Lane").GetValue <StringList>().SelectedIndex;
                    if (jE != 0)
                    {
                        var totalAa =
                            ObjectManager.Get <Obj_AI_Minion>()
                            .Where(
                                m =>
                                m.IsEnemy && !m.IsDead &&
                                m.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null)))
                            .Sum(mob => (int)mob.Health);

                        totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                        if (totalAa > jE)
                        {
                            Q.Cast();
                        }
                    }
                }
            }
        }
コード例 #8
0
        public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
        {
            if (GetValue <bool>("Misc.UseQ.Inhibitor") && args.Target is Obj_BarracksDampener && Q.IsReady())
            {
                if (((Obj_BarracksDampener)args.Target).Health >= Player.TotalAttackDamage * 3)
                {
                    Q.Cast();
                }
            }

            if (GetValue <bool>("Misc.UseQ.Nexus") && args.Target is Obj_HQ && Q.IsReady())
            {
                Q.Cast();
            }

            var unit = args.Target as Obj_AI_Turret;

            if (unit != null)
            {
                if (GetValue <bool>("UseEM") && E.IsReady())
                {
                    if (((Obj_AI_Turret)args.Target).Health >= Player.TotalAttackDamage * 3)
                    {
                        E.CastOnUnit(unit);
                    }
                }

                if (GetValue <bool>("Misc.UseQ.Turret") && Q.IsReady())
                {
                    if (((Obj_AI_Turret)args.Target).Health >= Player.TotalAttackDamage * 3)
                    {
                        Q.Cast();
                    }
                }
            }
            if (args.Target is Obj_AI_Hero)
            {
                var t = args.Target as Obj_AI_Hero;
                if (t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null)) && ComboActive)
                {
                    var useQ = Q.IsReady() && GetValue <bool>("UseQC");
                    if (useQ)
                    {
                        Q.CastOnUnit(Player);
                    }
                }
            }
        }
コード例 #9
0
 public override void Drawing_OnDraw(EventArgs args)
 {
     Spell[] spellList = { Q, W, E, R };
     foreach (var spell in spellList)
     {
         var menuItem = GetValue <Circle>("Draw" + spell.Slot);
         if (menuItem.Active)
         {
             Render.Circle.DrawCircle(ObjectManager.Player.Position,
                                      spell.Slot == SpellSlot.W
                     ? Orbwalking.GetRealAutoAttackRange(null) + 65 + W.Range
                     : spell.Range,
                                      menuItem.Color);
         }
     }
 }
コード例 #10
0
        public override void ExecuteLane()
        {
            if (Q.IsReady() && AsheQCastReady)
            {
                var jQ = GetValue <StringList>("UseQ.Lane").SelectedIndex;
                if (jQ != 0)
                {
                    var totalAa =
                        ObjectManager.Get <Obj_AI_Minion>()
                        .Where(
                            m => m.IsEnemy && !m.IsDead && m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null)))
                        .Sum(mob => (int)mob.Health);

                    totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                    if (totalAa > jQ)
                    {
                        Q.Cast();
                    }
                }
            }

            if (E.IsReady())
            {
                var minions = MinionManager.GetMinions(
                    ObjectManager.Player.Position,
                    E.Range,
                    MinionTypes.All,
                    MinionTeam.Enemy);

                if (minions != null)
                {
                    var jE = GetValue <StringList>("UseW.Lane").SelectedIndex;
                    if (jE != 0)
                    {
                        var mE = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, W.Range, MinionTypes.All);
                        if (mE.Count >= jE)
                        {
                            W.Cast(mE[0].Position);
                        }
                    }
                }
            }
        }
コード例 #11
0
 public override void Spellbook_OnCastSpell(Spellbook sender, SpellbookCastSpellEventArgs args)
 {
     var nClosesTarget = HeroManager.Enemies.Find(e => e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65));
     {
         if (nClosesTarget != null)
         {
             if (GetValue <bool>("UseWMC") &&
                 ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Level > 0 &&
                 Math.Abs(W.Cooldown) < 0.00001 &&
                 args.Slot != SpellSlot.W)
             {
                 var lastMana = ObjectManager.Player.Mana - ObjectManager.Player.Spellbook.GetSpell(args.Slot).ManaCost;
                 if (lastMana < ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).ManaCost)
                 {
                     args.Process = false;
                 }
             }
         }
     }
 }
コード例 #12
0
        public override void Drawing_OnDraw(EventArgs args)
        {
            var drawQ = GetValue <StringList>("DrawQ").SelectedIndex;

            switch (drawQ)
            {
            case 1:
                Render.Circle.DrawCircle(ObjectManager.Player.Position, Q.Range, Color.Aqua);
                break;

            case 2:
                Render.Circle.DrawCircle(ObjectManager.Player.Position, Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65, Color.Aqua);
                break;
            }
            Spell[] spellList = { W, E, R };
            foreach (var spell in spellList)
            {
                var menuItem = GetValue <Circle>("Draw" + spell.Slot);
                if (menuItem.Active)
                {
                    Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
                }
            }
        }
コード例 #13
0
        public override void DrawingOnEndScene(EventArgs args)
        {
            return;

            var nClosesEnemy = HeroManager.Enemies.Find(e => e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null)));

            if (nClosesEnemy != null)
            {
                var aaRange = Orbwalking.GetRealAutoAttackRange(null) + 65 - ObjectManager.Player.Distance(nClosesEnemy);
                Render.Circle.DrawCircle(ObjectManager.Player.Position, aaRange, Color.BurlyWood);

                Vector2 wcPositive  = ObjectManager.Player.Position.To2D() - Vector2.Normalize(nClosesEnemy.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated((float)Math.PI / 180) * aaRange;
                Vector2 wcPositive2 = ObjectManager.Player.Position.To2D() - Vector2.Normalize(nClosesEnemy.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(30 * (float)Math.PI / 180) * aaRange;
                Vector2 wcPositive3 = ObjectManager.Player.Position.To2D() - Vector2.Normalize(nClosesEnemy.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(-30 * (float)Math.PI / 180) * aaRange;

                Vector2 wcPositive2x = ObjectManager.Player.Position.To2D() - Vector2.Normalize(nClosesEnemy.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(60 * (float)Math.PI / 180) * aaRange;
                Vector2 wcPositive3x = ObjectManager.Player.Position.To2D() - Vector2.Normalize(nClosesEnemy.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(-60 * (float)Math.PI / 180) * aaRange;

                if (E.IsReady())
                {
                    var runHere = Vector2.Zero;
                    if (!wcPositive.IsWall())
                    {
                        runHere = wcPositive;
                    }
                    else if (!wcPositive2.IsWall())
                    {
                        runHere = wcPositive2;
                    }
                    else if (!wcPositive3.IsWall())
                    {
                        runHere = wcPositive3;
                    }
                    else if (!wcPositive2x.IsWall())
                    {
                        runHere = wcPositive2x;
                    }
                    else if (!wcPositive3x.IsWall())
                    {
                        runHere = wcPositive3x;
                    }

                    if (runHere != Vector2.Zero && ObjectManager.Player.Distance(runHere) > ObjectManager.Player.BoundingRadius * 2)
                    {
                        E.Cast(runHere);
                    }
                }

                Render.Circle.DrawCircle(wcPositive2.To3D(), 80f, Color.Red);
                Render.Circle.DrawCircle(wcPositive3.To3D(), 80f, Color.Yellow);
                Render.Circle.DrawCircle(wcPositive.To3D(), 80, Color.BurlyWood);

                Render.Circle.DrawCircle(wcPositive2x.To3D(), 80f, Color.Red);
                Render.Circle.DrawCircle(wcPositive3x.To3D(), 80f, Color.Yellow);
            }
            //if (Q.IsReady())
            //{
            return;

            foreach (var t in HeroManager.Enemies.Where(e => e.IsValidTarget(1100)))
            {
                var toPolygon =
                    new CommonGeometry.Rectangle(ObjectManager.Player.Position.To2D(),
                                                 ObjectManager.Player.Position.To2D()
                                                 .Extend(t.Position.To2D(), t.Distance(ObjectManager.Player.Position)), 30).ToPolygon();
                toPolygon.Draw(System.Drawing.Color.Red, 1);

                var o = ObjectManager
                        .Get <Obj_AI_Base>(
                    ).FirstOrDefault(e => e.IsEnemy && !e.IsDead && e.NetworkId != t.NetworkId && toPolygon.IsInside(e) &&
                                     ObjectManager.Player.Distance(t.Position) > ObjectManager.Player.Distance(e) && e.Distance(t) > t.BoundingRadius && e.Distance(ObjectManager.Player) > ObjectManager.Player.BoundingRadius);

                if (o != null)
                {
                    Render.Circle.DrawCircle(o.Position, 105f, Color.GreenYellow);
                    Q.CastOnUnit(o);
                }

                Vector2 wcPositive = ObjectManager.Player.Position.To2D() - Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated((float)Math.PI / 180) * (E.Range - 50);
                Render.Circle.DrawCircle(wcPositive.To3D(), 60, Color.BurlyWood);
                Render.Circle.DrawCircle(wcPositive.To3D(), 80f, Color.BurlyWood);
                Render.Circle.DrawCircle(wcPositive.To3D(), 100f, Color.BurlyWood);
            }
            //}

            return;

            foreach (var t in HeroManager.Enemies.Where(e => e.IsValidTarget(1100)))
            {
                var toPolygon = new CommonGeometry.Rectangle(ObjectManager.Player.Position.To2D(), ObjectManager.Player.Position.To2D().Extend(t.Position.To2D(), t.Distance(ObjectManager.Player.Position)), 40).ToPolygon();
                toPolygon.Draw(System.Drawing.Color.Red, 1);


                foreach (var obj in ObjectManager.Get <Obj_AI_Base>())
                {
                }

                //Console.WriteLine(hero.ChampionName);

                for (int j = 20; j < 361; j += 20)
                {
                    Vector2 wcPositive = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(j * (float)Math.PI / 180) * E.Range;
                    if (!wcPositive.IsWall() && t.Distance(wcPositive) > E.Range)
                    {
                        Render.Circle.DrawCircle(wcPositive.To3D(), 105f, Color.GreenYellow);
                    }
                    //if (!wcPositive.IsWall())
                    //{
                    //    ListWJumpPositions.Add(wcPositive);
                    //}

                    //Vector2 wcNegative = ObjectManager.Player.Position.To2D() +
                    //                     Vector2.Normalize(hero.Position.To2D() - ObjectManager.Player.Position.To2D())
                    //                         .Rotated(-j * (float)Math.PI / 180) * E.Range;

                    //Render.Circle.DrawCircle(wcNegative.To3D(), 105f, Color.White);
                    //if (!wcNegative.IsWall())
                    //{
                    //    ListWJumpPositions.Add(wcNegative);
                    //}
                }
            }
        }
コード例 #14
0
ファイル: Lucian.cs プロジェクト: sadnecc/CHportcn
        public override void PermaActive()
        {
            if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo)
            {
                return;
            }

            var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(E.Range + (Q.IsReady() ? Q.Range : Orbwalking.GetRealAutoAttackRange(null) + 65)) && !e.IsZombie);

            if (enemy != null)
            {
                if (enemy.Health < ObjectManager.Player.TotalAttackDamage * 2 && !LucianHavePassiveBuff() && enemy.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65) && !Q.IsReady())
                {
                    if (W.IsReady() && GetValue <bool>("UseWC"))
                    {
                        W.Cast(enemy.Position);
                    }
                    else if (E.IsReady() && GetValue <StringList>("UseEC").SelectedIndex != 0)
                    {
                        E.Cast(enemy.Position);
                    }
                }

                var xPossibleComboDamage = 0f;
                xPossibleComboDamage += Q.IsReady() ? Q.GetDamage(enemy) + ObjectManager.Player.TotalAttackDamage * 2 : 0;
                xPossibleComboDamage += E.IsReady() ? ObjectManager.Player.TotalAttackDamage * 2 : 0;

                if (enemy.Health < xPossibleComboDamage)
                {
//                    if (enemy.Distance(ObjectManager.Player) > Orbwalking.GetRealAutoAttackRange(null) + 65))
                }

                if (E.IsReady() && Q.IsReady() && GetValue <StringList>("UseEC").SelectedIndex != 0)
                {
                    E.Cast(enemy.Position);
                }
            }
        }
コード例 #15
0
        public override void ExecuteCombo()
        {
            var t =
                HeroManager.Enemies.Find(
                    e => e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65) && e.CanGetDamage());

            if (hasPassive && t != null)
            {
                Orbwalker.ForceTarget(t);
            }

            if (!hasPassive && t.IsValidTarget() && Q.IsReady())
            {
                Q.CastOnUnit(t);
            }

            if (GetValue <bool>("Combo.W.Use") && !hasPassive && t.IsValidTarget() && W.IsReady())
            {
                W.Cast(t.Position);
            }

            if (t.IsValidTarget() && GetValue <bool>("Combo.E.Use") && E.IsReady() && !hasPassive)
            {
                var x = CommonUtils.GetDashPosition(E, t, 200);
                E.Cast(x);
            }

            if (!t.IsValidTarget() && t.IsValidTarget(qExtended.Range))
            {
                var useQExtended = GetValue <StringList>("UseQExtendedC").SelectedIndex;
                if (useQExtended != 0)
                {
                    switch (useQExtended)
                    {
                    case 1:
                    {
                        var tx = QMinion(t);
                        if (tx.IsValidTarget(Q.Range))
                        {
                            Q.CastOnUnit(tx);
                        }
                        break;
                    }

                    case 2:
                    {
                        var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(qExtended.Range) && !e.IsZombie);
                        if (enemy != null)
                        {
                            var tx = QMinion(enemy);
                            if (tx.IsValidTarget())
                            {
                                Q.CastOnUnit(tx);
                            }
                        }
                        break;
                    }
                    }
                }
            }
        }
コード例 #16
0
ファイル: Lucian.cs プロジェクト: sadnecc/CHportcn
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (ObjectManager.Player.IsDead)
            {
                xAttackLeft = 0;
                return;
            }

            if (Game.Time > xPassiveUsedTime + 3 && xAttackLeft == 1)
            {
                xAttackLeft = 0;
            }

            if (Config.Item("Passive" + Id).GetValue <bool>() && xAttackLeft > 0)
            {
                return;
            }

            Obj_AI_Hero t;

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.CastOnUnit(t);
                }
            }


            if (Q.IsReady() && GetValue <KeyBind>("UseQExtendedTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget() && QMinion(t).IsValidTarget())
                {
                    if (ObjectManager.Player.Distance(t) > Q.Range)
                    {
                        Q.CastOnUnit(QMinion(t));
                    }
                }
            }


            if ((!ComboActive && !HarassActive))
            {
                return;
            }

            var useQExtended = GetValue <StringList>("UseQExtendedC").SelectedIndex;

            if (useQExtended != 0)
            {
                switch (useQExtended)
                {
                case 1:
                {
                    t = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);
                    var tx = QMinion(t);
                    if (tx.IsValidTarget())
                    {
                        if (!Orbwalking.InAutoAttackRange(t))
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }

                case 2:
                {
                    var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(Q2.Range) && !e.IsZombie);
                    if (enemy != null)
                    {
                        var tx = QMinion(enemy);
                        if (tx.IsValidTarget())
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }
                }
            }

            // Auto turn off Ghostblade Item if Ultimate active
            if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level > 0)
            {
                Config.Item("GHOSTBLADE")
                .SetValue(ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LucianR");
            }

            //if (useQExtended && Q.IsReady())
            //{
            //    var t = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);
            //    if (t.IsValidTarget() && QMinion.IsValidTarget())
            //    {
            //        if (!Orbwalking.InAutoAttackRange(t))
            //            Q.CastOnUnit(QMinion);
            //    }
            //}

            t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
            if (!t.IsValidTarget())
            {
                return;
            }

            var useQ = GetValue <bool>("UseQC");

            if (useQ && Q.IsReady())
            {
                if (t.IsValidTarget(Q.Range))
                {
                    Q.CastOnUnit(t);
                    Orbwalking.ResetAutoAttackTimer();
                }
            }

            var useW = GetValue <bool>("UseWC");

            if (useW && W.IsReady())
            {
                if (t.IsValidTarget(W.Range))
                {
                    W.Cast(t);
                    Orbwalking.ResetAutoAttackTimer();
                }
            }

            var useE = GetValue <StringList>("UseEC").SelectedIndex;

            if (useE != 0 && E.IsReady())
            {
                if (t.Distance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + E.Range - 50) && E.IsPositionSafe(t.Position.To2D()))
                {
                    E.Cast(t.Position);
                    Orbwalking.ResetAutoAttackTimer();
                }
                else if (Q.IsPositionSafe(Game.CursorPos.To2D()))
                {
                    E.Cast(Game.CursorPos);
                    Orbwalking.ResetAutoAttackTimer();
                }
                Orbwalker.ForceTarget(t);

                //if (t.IsValidTarget(Q.Range))
                //{
                //    E.Cast(Game.CursorPos);
                //}
            }
        }
コード例 #17
0
ファイル: Lucian.cs プロジェクト: sadnecc/CHportcn
        public override void ExecuteJungleClear()
        {
            var jungleQValue = GetValue <StringList>("Jungle.UseQ").SelectedIndex;

            if (jungleQValue != 0 && Q.IsReady())
            {
                var bigMobsQ = Utils.Utils.GetMobs(Q.Range, jungleQValue == 2 ? Utils.Utils.MobTypes.BigBoys : Utils.Utils.MobTypes.All);
                if (bigMobsQ != null && bigMobsQ.Health > ObjectManager.Player.TotalAttackDamage * 2)
                {
                    Q.CastOnUnit(bigMobsQ);
                }
            }

            var jungleWValue = GetValue <StringList>("Jungle.UseQ").SelectedIndex;

            if (jungleWValue != 0 && W.IsReady())
            {
                var bigMobsQ = Utils.Utils.GetMobs(W.Range, jungleWValue == 2 ? Utils.Utils.MobTypes.BigBoys : Utils.Utils.MobTypes.All);
                if (bigMobsQ != null && bigMobsQ.Health > ObjectManager.Player.TotalAttackDamage * 2)
                {
                    W.Cast(bigMobsQ);
                }
            }

            var jungleEValue = GetValue <StringList>("Jungle.UseE").SelectedIndex;

            if (jungleEValue != 0 && E.IsReady())
            {
                var jungleMobs =
                    Marksman.Utils.Utils.GetMobs(Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                                 Marksman.Utils.Utils.MobTypes.All);

                if (jungleMobs != null)
                {
                    switch (GetValue <StringList>("Jungle.UseE").SelectedIndex)
                    {
                    case 1:
                    {
                        if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                            !jungleMobs.SkinName.ToLower().Contains("dragon"))
                        {
                            if (jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                            {
                                E.Cast(
                                    jungleMobs.IsValidTarget(
                                        Orbwalking.GetRealAutoAttackRange(null) + 65)
                                                ? Game.CursorPos
                                                : jungleMobs.Position);
                            }
                        }
                        break;
                    }

                    case 2:
                    {
                        if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                            !jungleMobs.SkinName.ToLower().Contains("dragon"))
                        {
                            jungleMobs =
                                Marksman.Utils.Utils.GetMobs(
                                    E.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                    Marksman.Utils.Utils.MobTypes.BigBoys);
                            if (jungleMobs != null)
                            {
                                E.Cast(
                                    jungleMobs.IsValidTarget(
                                        Orbwalking.GetRealAutoAttackRange(null) + 65)
                                                ? Game.CursorPos
                                                : jungleMobs.Position);
                            }
                        }
                        break;
                    }
                    }
                }
            }
        }
コード例 #18
0
        public void ExecJungleClear()
        {
            var jungleMobs =
                Marksman.Utils.Utils.GetMobs(Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                             Marksman.Utils.Utils.MobTypes.All);

            if (jungleMobs != null)
            {
                switch (GetValue <StringList>("UseQJ").SelectedIndex)
                {
                case 1:
                {
                    if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                        !jungleMobs.SkinName.ToLower().Contains("dragon"))
                    {
                        if (jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                        {
                            Q.Cast(
                                jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                        ? Game.CursorPos
                                        : jungleMobs.Position);
                        }
                    }
                    break;
                }

                case 2:
                {
                    if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                        !jungleMobs.SkinName.ToLower().Contains("dragon"))
                    {
                        jungleMobs =
                            Marksman.Utils.Utils.GetMobs(
                                Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                Marksman.Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast(
                                jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                        ? Game.CursorPos
                                        : jungleMobs.Position);
                        }
                    }
                    break;
                }
                }

                switch (GetValue <StringList>("UseEJ").SelectedIndex)
                {
                case 1:
                {
                    if (jungleMobs.IsValidTarget(E.Range))
                    {
                        E.CastOnUnit(jungleMobs);
                    }
                    break;
                }

                case 2:
                {
                    jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Marksman.Utils.Utils.MobTypes.BigBoys);
                    if (jungleMobs != null)
                    {
                        CastE(jungleMobs);

                        if (ObjectManager.Player.Distance(jungleMobs) < ObjectManager.Player.AttackRange / 2)
                        {
                            E.CastOnUnit(jungleMobs);
                        }
                    }
                    break;
                }
                }
            }
        }
コード例 #19
0
ファイル: MissFortune.cs プロジェクト: mirinsharp/Leaguesharp
        public override void ExecuteLaneClear()
        {
            if (Q.IsReady())
            {
                var lQ = Program.Config.Item("Lane.UseQ").GetValue <StringList>().SelectedIndex;
                if (lQ != 0)
                {
                    {
                        var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                        foreach (var minions in
                                 vMinions.Where(
                                     minions => minions.Health < ObjectManager.Player.GetSpellDamage(minions, SpellSlot.Q)))
                        {
                            Q.CastOnUnit(minions);
                        }
                    }
                }
            }

            if (W.IsReady())
            {
                var lW = Program.Config.Item("Lane.UseW").GetValue <StringList>().SelectedIndex;
                if (lW != 0)
                {
                    var totalAa =
                        ObjectManager.Get <Obj_AI_Minion>()
                        .Where(
                            m =>
                            m.IsEnemy && !m.IsDead &&
                            m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null)))
                        .Sum(mob => (int)mob.Health);

                    totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                    if (totalAa > lW)
                    {
                        W.Cast();
                    }
                }
            }

            if (E.IsReady())
            {
                var lE = Program.Config.Item("Lane.UseE").GetValue <StringList>().SelectedIndex;
                if (lE != 0)
                {
                    var mE = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range, MinionTypes.All);
                    if (mE != null)
                    {
                        var locE = E.GetCircularFarmLocation(mE, 175);
                        if (locE.MinionsHit >= lE && E.IsInRange(locE.Position.To3D()))
                        {
                            foreach (
                                var x in
                                ObjectManager.Get <Obj_AI_Minion>()
                                .Where(m => m.IsEnemy && !m.IsDead && m.Distance(locE.Position) < 500))
                            {
                                E.Cast(x);
                            }
                        }
                    }
                }
            }
        }
コード例 #20
0
        public override void ExecuteJungle()
        {
            if (Q.IsReady() && AsheQCastReady)
            {
                var jE = GetValue <StringList>("UseQJ").SelectedIndex;
                if (jE != 0)
                {
                    if (jE == 1)
                    {
                        var jungleMobs = Utils.Utils.GetMobs(
                            Orbwalking.GetRealAutoAttackRange(null) + 65,
                            Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast();
                        }
                    }
                    else
                    {
                        var totalAa =
                            MinionManager.GetMinions(
                                ObjectManager.Player.Position,
                                Orbwalking.GetRealAutoAttackRange(null) + 165,
                                MinionTypes.All,
                                MinionTeam.Neutral).Sum(mob => (int)mob.Health);
                        totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                        if (totalAa > jE)
                        {
                            Q.Cast();
                        }
                    }
                }
            }

            if (W.IsReady())
            {
                var jungleMobs = Marksman.Utils.Utils.GetMobs(W.Range, Marksman.Utils.Utils.MobTypes.All);
                if (jungleMobs != null)
                {
                    var jW = GetValue <StringList>("UseWJ").SelectedIndex;
                    switch (jW)
                    {
                    case 1:
                    {
                        jungleMobs = Marksman.Utils.Utils.GetMobs(
                            W.Range,
                            Marksman.Utils.Utils.MobTypes.All,
                            jW);
                        W.CastOnUnit(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(W.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            W.CastOnUnit(jungleMobs);
                        }
                        break;
                    }
                    }
                }
            }
        }
コード例 #21
0
ファイル: Jinx.cs プロジェクト: sadnecc/CHportcn
        public override void Game_OnGameUpdate(EventArgs args)
        {
            //var t1 = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
            //if (t1.IsValidTarget())
            //{
            //    if (t1.IsFacing(ObjectManager.Player))
            //    {
            //        Console.WriteLine("--> Face " + t1.ChampionName);
            //    }
            //    else
            //    {
            //        Console.WriteLine(t1.ChampionName + " <-- Back");
            //    }
            //}

            /*
             * var x = HeroManager.Enemies.Find(e => !e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null)) && e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + QAddRange));
             * if (x != null && !FishBoneActive && Q.IsReady())
             * {
             *  Q.Cast();
             *  Program.ChampionClass.Orbwalker.ForceTarget(x);
             * }
             */
            if (Q.IsReady() && GetValue <bool>("SwapDistance") && Program.ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
            {
                var activeQ = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).Level * 25 + 650;
                var t       = TargetSelector.GetTarget(activeQ, TargetSelector.DamageType.Physical);

                if (t.IsValidTarget() && ObjectManager.Player.Distance(t) > Orbwalking.GetRealAutoAttackRange(null) + 65)
                {
                    if (!FishBoneActive)
                    {
                        Q.Cast();
                        Orbwalker.ForceTarget(t);
                        return;
                    }
                }
                if (!t.IsValidTarget() && FishBoneActive)
                {
                    Q.Cast();
                    return;
                }
            }

            if (GetValue <bool>("PingCH"))
            {
                foreach (var enemy in
                         HeroManager.Enemies.Where(
                             t =>
                             R.IsReady() && t.IsValidTarget() && R.GetDamage(t) > t.Health &&
                             t.Distance(ObjectManager.Player) > Orbwalking.GetRealAutoAttackRange(null) + 65 + QAddRange))
                {
                    Utils.Utils.MPing.Ping(enemy.Position.To2D(), 2, PingCategory.Normal);
                }
            }

            var autoEi = GetValue <bool>("AutoEI");
            var autoEs = GetValue <bool>("AutoES");
            var autoEd = GetValue <bool>("AutoED");

            //foreach (var e in HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range)))
            //{
            //    if (E.IsReady()
            //        && (e.HasBuffOfType(BuffType.Stun) || e.HasBuffOfType(BuffType.Snare)
            //            || e.HasBuffOfType(BuffType.Charm) || e.HasBuffOfType(BuffType.Fear) ||
            //            e.HasBuffOfType(BuffType.Slow)
            //            || e.HasBuffOfType(BuffType.Taunt) || e.HasBuff("zhonyasringshield")
            //            || e.HasBuff("Recall")))
            //    {
            //        E.Cast(e);
            //    }
            //}

            if (autoEs || autoEi || autoEd)
            {
                foreach (
                    var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(enemy => enemy.IsValidTarget(E.Range - 50)))
                {
                    if (autoEs && E.IsReady() && enemy.HasBuffOfType(BuffType.Slow))
                    {
                        var castPosition =
                            Prediction.GetPrediction(
                                new PredictionInput
                        {
                            Unit = enemy, Delay = 0.7f, Radius = 120f, Speed = 1750f, Range = 900f,
                            Type = SkillshotType.SkillshotCircle
                        }).CastPosition;


                        if (GetSlowEndTime(enemy) >= (Game.Time + E.Delay + 0.5f))
                        {
                            E.Cast(castPosition);
                        }
                    }

                    if (E.IsReady() &&
                        (enemy.HasBuffOfType(BuffType.Stun) ||
                         enemy.HasBuffOfType(BuffType.Snare) ||
                         enemy.HasBuffOfType(BuffType.Charm) ||
                         enemy.HasBuffOfType(BuffType.Fear) ||
                         enemy.HasBuffOfType(BuffType.Slow) ||
                         enemy.HasBuffOfType(BuffType.Taunt) ||
                         enemy.HasBuff("zhonyasringshield") ||
                         enemy.HasBuff("Recall")))
                    {
                        E.CastIfHitchanceEquals(enemy, HitChance.High);
                    }
                    else
                    if (W.IsReady() &&
                        (enemy.HasBuffOfType(BuffType.Stun) ||
                         enemy.HasBuffOfType(BuffType.Snare) ||
                         enemy.HasBuffOfType(BuffType.Charm) ||
                         enemy.HasBuffOfType(BuffType.Fear) ||
                         enemy.HasBuffOfType(BuffType.Slow) ||
                         enemy.HasBuffOfType(BuffType.Taunt) ||
                         enemy.HasBuff("zhonyasringshield") ||
                         enemy.HasBuff("Recall")))
                    {
                        W.CastIfHitchanceEquals(enemy, HitChance.High);
                    }

                    if (autoEd && E.IsReady() && enemy.IsDashing())
                    {
                        E.CastIfHitchanceEquals(enemy, HitChance.Dashing);
                    }
                }
            }

            if (GetValue <KeyBind>("CastR").Active&& R.IsReady())
            {
                var t = TargetSelector.GetTarget(1500, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget())
                {
                    if (ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) > t.Health && !t.IsZombie)
                    {
                        R.CastIfHitchanceGreaterOrEqual(t);
                        //R.CastIfHitchanceEquals(t, HitChance.High, false);
                    }
                }
            }

            if (GetValue <bool>("SwapQ") && FishBoneActive && !ComboActive)
            {
                Q.Cast();
            }

            if (HarassActive)
            {
                if (GetValue <bool>("UseQMH"))
                {
                    var t = TargetSelector.GetTarget(Q.Range * 2, TargetSelector.DamageType.Magical);
                    foreach (var m in ObjectManager.Get <Obj_AI_Minion>().Where(m => m.Distance(ObjectManager.Player.Position) < Orbwalking.GetRealAutoAttackRange(null) + QAddRange).OrderBy(m => m.Distance(t)))
                    {
                    }
                }
            }

            /*
             * if (GetValue<bool>("SwapQ") && FishBoneActive && (LaneClearActive ||
             *   (HarassActive && TargetSelector.GetTarget(675f + QAddRange, TargetSelector.DamageType.Physical) == null)))
             * {
             *  Q.Cast();
             * }
             */

            if ((!ComboActive && !HarassActive) || !Orbwalking.CanMove(100))
            {
                return;
            }

            var useW = GetValue <bool>("UseW" + (ComboActive ? "C" : "H"));
            var useR = GetValue <bool>("UseRC");

            if (useW && W.IsReady())
            {
                var t    = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                var minW = GetValue <Slider>("MinWRange").Value;

                if (t.IsValidTarget() && !t.HasKindredUltiBuff() && GetRealDistance(t) >= minW)
                {
                    W.CastIfHitchanceGreaterOrEqual(t);
                }
            }

            /*
             * if (useQ)
             * {
             *  foreach (var t in
             *      ObjectManager.Get<Obj_AI_Hero>()
             *          .Where(t => t.IsValidTarget(GetRealPowPowRange(t) + QAddRange + 20f)))
             *  {
             *      var swapDistance = GetValue<bool>("SwapDistance");
             *      var swapAoe = GetValue<bool>("SwapAOE");
             *      var distance = GetRealDistance(t);
             *      var powPowRange = GetRealPowPowRange(t);
             *
             *      if (swapDistance && Q.IsReady())
             *      {
             *          if (distance > powPowRange && !FishBoneActive)
             *          {
             *              if (Q.Cast())
             *              {
             *                  return;
             *              }
             *          }
             *          else if (distance < powPowRange && FishBoneActive)
             *          {
             *              if (Q.Cast())
             *              {
             *                  return;
             *              }
             *          }
             *      }
             *
             *      if (swapAoe && Q.IsReady())
             *      {
             *          if (distance > powPowRange && PowPowStacks > 2 && !FishBoneActive && CountEnemies(t, 150) > 1)
             *          {
             *              if (Q.Cast())
             *              {
             *                  return;
             *              }
             *          }
             *      }
             *  }
             * }
             *
             */
            if (useR && R.IsReady())
            {
                var checkRok = GetValue <bool>("ROverKill");
                var minR     = GetValue <Slider>("MinRRange").Value;
                var maxR     = GetValue <Slider>("MaxRRange").Value;
                var t        = TargetSelector.GetTarget(maxR, TargetSelector.DamageType.Physical);

                if (t.IsValidTarget() && !t.HasKindredUltiBuff())
                {
                    var distance = GetRealDistance(t);

                    if (!checkRok)
                    {
                        if (ObjectManager.Player.GetSpellDamage(t, SpellSlot.R, 1) > t.Health && !t.IsZombie)
                        {
                            R.CastIfHitchanceGreaterOrEqual(t);
                            //R.CastIfHitchanceEquals(t, HitChance.High, false);
                            //if (R.Cast(t) == Spell.CastStates.SuccessfullyCasted) { }
                        }
                    }
                    else if (distance > minR)
                    {
                        var aDamage     = ObjectManager.Player.GetAutoAttackDamage(t);
                        var wDamage     = ObjectManager.Player.GetSpellDamage(t, SpellSlot.W);
                        var rDamage     = ObjectManager.Player.GetSpellDamage(t, SpellSlot.R);
                        var powPowRange = GetRealPowPowRange(t);

                        if (distance < (powPowRange + QAddRange) && !(aDamage * 3.5 > t.Health))
                        {
                            if (!W.IsReady() || !(wDamage > t.Health) || W.GetPrediction(t).CollisionObjects.Count > 0)
                            {
                                if (CountAlliesNearTarget(t, 500) <= 3)
                                {
                                    if (rDamage > t.Health && !t.IsZombie /*&& !ObjectManager.Player.IsAutoAttacking &&
                                                                           * !ObjectManager.Player.IsChanneling*/)
                                    {
                                        R.CastIfHitchanceGreaterOrEqual(t);
                                        //R.CastIfHitchanceEquals(t, HitChance.High, false);
                                        //if (R.Cast(t) == Spell.CastStates.SuccessfullyCasted) { }
                                    }
                                }
                            }
                        }
                        else if (distance > (powPowRange + QAddRange))
                        {
                            if (!W.IsReady() || !(wDamage > t.Health) || distance > W.Range ||
                                W.GetPrediction(t).CollisionObjects.Count > 0)
                            {
                                if (CountAlliesNearTarget(t, 500) <= 3)
                                {
                                    if (rDamage > t.Health && !t.IsZombie /*&& !ObjectManager.Player.IsAutoAttacking &&
                                                                           * !ObjectManager.Player.IsChanneling*/)
                                    {
                                        R.CastIfHitchanceGreaterOrEqual(t);
                                        //R.CastIfHitchanceEquals(t, HitChance.High, false);
                                        //if (R.Cast(t) == Spell.CastStates.SuccessfullyCasted) { }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #22
0
        public override void ExecuteLaneClear()
        {
            var prepareMinions = GetValue <StringList>("UseE.Prepare.Lane").SelectedIndex;

            if (prepareMinions != 0)
            {
                List <Obj_AI_Minion>        list    = new List <Obj_AI_Minion>();
                IEnumerable <Obj_AI_Minion> minions =
                    from m in
                    ObjectManager.Get <Obj_AI_Minion>()
                    .Where(
                        m =>
                        m.Health > ObjectManager.Player.TotalAttackDamage &&
                        m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                    select m;
                if (prepareMinions == 2)
                {
                    minions = minions.Where(m => m.IsUnderAllyTurret());
                }

                var objAiMinions = minions as Obj_AI_Minion[] ?? minions.ToArray();
                foreach (var m in objAiMinions)
                {
                    if (m.GetBuffCount(kalistaEBuffName) >= 0)
                    {
                        Render.Circle.DrawCircle(m.Position, 105f, Color.Blue);
                        list.Add(m);
                    }
                    else
                    {
                        list.Remove(m);
                    }
                }
                var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65));
                if (enemy == null)
                {
                    foreach (var l in objAiMinions.Except(list).ToList())
                    {
                        Program.ChampionClass.Orbwalker.ForceTarget(l);
                    }
                }
                else
                {
                    Program.ChampionClass.Orbwalker.ForceTarget(enemy);
                }
            }

            if (Q.IsReady())
            {
                var qCount = GetValue <StringList>("UseQ.Lane").SelectedIndex;
                if (qCount != 0)
                {
                    var minions = MinionManager.GetMinions(
                        ObjectManager.Player.ServerPosition,
                        Q.Range,
                        MinionTypes.All,
                        MinionTeam.Enemy);

                    foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x)))
                    {
                        var killableMinionCount = 0;
                        foreach (
                            var colminion in
                            qGetCollisionMinions(
                                ObjectManager.Player,
                                ObjectManager.Player.ServerPosition.Extend(minion.ServerPosition, Q.Range)))
                        {
                            if (colminion.Health <= Q.GetDamage(colminion))
                            {
                                if (GetValue <StringList>("UseQ.Mode.Lane").SelectedIndex == 1 &&
                                    colminion.Distance(ObjectManager.Player)
                                    > Orbwalking.GetRealAutoAttackRange(null) + 65)
                                {
                                    killableMinionCount++;
                                }
                                else
                                {
                                    killableMinionCount++;
                                }
                            }
                            else
                            {
                                break;
                            }
                        }

                        if (killableMinionCount >= qCount)
                        {
                            if (!ObjectManager.Player.IsWindingUp && !ObjectManager.Player.IsDashing())
                            {
                                Q.Cast(minion.ServerPosition);
                                break;
                            }
                        }
                    }
                }
            }

            if (E.IsReady())
            {
                var minECount = GetValue <StringList>("UseE.Lane").SelectedIndex;
                if (minECount != 0)
                {
                    var killableMinionCount = 0;
                    foreach (var m in
                             MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range)
                             .Where(x => E.CanCast(x) && x.Health < E.GetDamage(x)))
                    {
                        if (m.SkinName.ToLower().Contains("siege") || m.SkinName.ToLower().Contains("super"))
                        {
                            killableMinionCount += 2;
                        }
                        else
                        {
                            killableMinionCount++;
                        }
                    }

                    if (killableMinionCount >= minECount && E.IsReady() &&
                        ObjectManager.Player.ManaPercent > E.ManaCost * 2)
                    {
                        E.Cast();
                    }
                }
            }

            // Don't miss minion
            if (GetValue <bool>("UseE.LaneNon"))
            {
                var minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range * 1);

                foreach (var n in minions)
                {
                    var xH = HealthPrediction.GetHealthPrediction(n, (int)(ObjectManager.Player.AttackCastDelay * 1000),
                                                                  Game.Ping / 2 + 100);
                    if (xH < 0)
                    {
                        if (n.Health < E.GetDamage(n) && E.CanCast(n))
                        {
                            E.Cast(n);
                        }
                        else if (Q.IsReady() && Q.CanCast(n) &&
                                 n.Distance(ObjectManager.Player.Position) < Orbwalking.GetRealAutoAttackRange(null) + 75)
                        {
                            xH = HealthPrediction.GetHealthPrediction(n,
                                                                      (int)(ObjectManager.Player.AttackCastDelay * 1000), (int)Q.Speed);
                            if (xH < 0)
                            {
                                var input = new PredictionInput
                                {
                                    Unit   = ObjectManager.Player,
                                    Radius = Q.Width,
                                    Delay  = Q.Delay,
                                    Speed  = Q.Speed,
                                };

                                input.CollisionObjects[0] = CollisionableObjects.Minions;

                                int count =
                                    Collision.GetCollision(new List <Vector3> {
                                    n.Position
                                }, input)
                                    .OrderBy(obj => obj.Distance(ObjectManager.Player))
                                    .Count(obj => obj.NetworkId != n.NetworkId);
                                if (count == 0)
                                {
                                    Q.Cast(n);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #23
0
        public override void GameOnUpdate(EventArgs args)
        {
            if (!ComboActive)
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);

                if (!t.IsValidTarget() || !W.IsReady())
                {
                    return;
                }

                if (Program.Config.Item("UseWTH").GetValue <KeyBind>().Active)
                {
                    if (ObjectManager.Player.HasBuff("Recall"))
                    {
                        return;
                    }
                    W.Cast(t);
                }

                if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Charm) ||
                    t.HasBuffOfType(BuffType.Fear) || t.HasBuffOfType(BuffType.Taunt) ||
                    t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))
                {
                    W.Cast(t.Position);
                }
            }

            /* [ Combo ] */
            if (ComboActive)
            {
                var useW = Config.Item("UseWC" + Id).GetValue <bool>();

                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);

                if (Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>() && R.IsReady() &&
                    t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 300) && AsheQ >= 2 &&
                    t.Health > R.GetDamage(t) + ObjectManager.Player.TotalAttackDamage * 4)
                {
                    R.Cast(t);
                }

                if (Q.IsReady() && AsheQCastReady)
                {
                    if (t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 90))
                    {
                        Q.Cast();
                    }
                }

                if (useW && W.IsReady() && t.IsValidTarget())
                {
                    W.Cast(t);
                }

                var useR = Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>();
                if (useR && R.IsReady())
                {
                    var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue <Slider>().Value;
                    var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue <Slider>().Value;

                    t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                    if (!t.IsValidTarget())
                    {
                        return;
                    }

                    var aaDamage = Orbwalking.InAutoAttackRange(t)
                                       ? ObjectManager.Player.GetAutoAttackDamage(t, true)
                                       : 0;

                    if (t.Health > aaDamage && t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) &&
                        ObjectManager.Player.Distance(t) >= minRRange)
                    {
                        R.Cast(t);
                    }
                }
            }

            //Harass
            if (HarassActive)
            {
                var target = TargetSelector.GetTarget(1200, TargetSelector.DamageType.Physical);
                if (target == null)
                {
                    return;
                }

                if (Config.Item("UseWH" + Id).GetValue <bool>() && W.IsReady())
                {
                    W.Cast(target);
                }
            }

            //Manual cast R
            if (Config.Item("RManualCast" + Id).GetValue <KeyBind>().Active)
            {
                var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
                R.Cast(rTarget);
            }
        }
コード例 #24
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            var enemy =
                HeroManager.Enemies.Find(
                    e => e.Buffs.Any(b => b.Name.ToLower() == "quinnw_cosmetic" && e.IsValidTarget(E.Range)));

            if (enemy != null)
            {
                if (enemy.Distance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) + 65)
                {
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, enemy);
                }
                Orbwalker.ForceTarget(enemy);
            }

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.Cast(t, false, true);
                }
            }

            if (ComboActive || HarassActive)
            {
                var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
                var useE = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));

                if (Orbwalking.CanMove(100))
                {
                    if (E.IsReady() && useE)
                    {
                        var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                        if (t.IsValidTarget() && !t.IsZombie && !isHePantheon(t) && !t.HasBuff("QuinnW_Cosmetic"))
                        {
                            E.CastOnUnit(t);
                        }
                    }

                    if (Q.IsReady() && useQ)
                    {
                        var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                        if (t.IsValidTarget() && !t.IsZombie)
                        {
                            Q.Cast(t);
                        }
                    }

                    if (IsValorMode && !E.IsReady())
                    {
                        var vTarget = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                        if (vTarget != null)
                        {
                            calculateValorDamage();
                            if (vTarget.Health >= ValorMinDamage && vTarget.Health <= ValorMaxDamage)
                            {
                                R.Cast();
                            }
                        }
                    }
                }
            }
        }
コード例 #25
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            var orbwalkPos = GetOrbwalkPos();
            var cursor     = Game.CursorPos;

            if (orbwalkPos != cursor &&
                (ComboActive || LaneClearActive || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit))
            {
                Orbwalker.SetMarksmanOrbwalkingPoint(orbwalkPos);
            }
            else
            {
                Orbwalker.SetMarksmanOrbwalkingPoint(cursor);
            }
            Obj_AI_Hero t;

            //Combo
            if (ComboActive)
            {
                var minRRange = Config.Item("UseRCMinR").GetValue <Slider>().Value;
                var maxRRange = Config.Item("UseRCMaxR").GetValue <Slider>().Value;

                t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                if (!t.IsValidTarget())
                {
                    return;
                }
                if (W.IsReady() && Config.Item("UseWC").GetValue <bool>() && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65) &&
                    ObjectManager.Player.Buffs.FirstOrDefault(
                        buff => buff.Name == "dravenfurybuff" || buff.Name == "DravenFury") == null)
                {
                    W.Cast();
                }
                if (IsFleeing(t) && Config.Item("UseEC").GetValue <bool>() && t.IsValidTarget(E.Range))
                {
                    E.Cast(t);
                }

                if (Config.Item("UseRC").GetValue <bool>() && R.IsReady())
                {
                    t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                    if (t.Distance(ObjectManager.Player) >= minRRange && t.Distance(ObjectManager.Player) <= maxRRange &&
                        t.Health < ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) * 2)
                    //R.GetHealthPrediction(target) <= 0)
                    {
                        R.Cast(t);
                    }
                }
            }

            //Peel from melees
            if (Config.Item("EPeel").GetValue <bool>()) //Taken from ziggs(by pq/esk0r)
            {
                foreach (var pos in from enemy in ObjectManager.Get <Obj_AI_Hero>()
                         where
                         enemy.IsValidTarget() &&
                         enemy.Distance(ObjectManager.Player) <=
                         enemy.BoundingRadius + enemy.AttackRange + ObjectManager.Player.BoundingRadius &&
                         LeagueSharp.Common.Orbwalking.IsMelee(enemy)
                         let direction =
                             (enemy.ServerPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized()
                             let pos = ObjectManager.Player.ServerPosition.To2D()
                                       select pos + Math.Min(200, Math.Max(50, enemy.Distance(ObjectManager.Player) / 2)) * direction)
                {
                    E.Cast(pos.To3D());
                }
            }
        }
コード例 #26
0
        public override void Drawing_OnDraw(EventArgs args)
        {
            return;

            var drawE = GetValue <StringList>("DrawE").SelectedIndex;

            if (E.IsReady() && drawE != 0)
            {
                if (drawE == 1 || drawE == 3)
                {
                    Render.Circle.DrawCircle(ObjectManager.Player.Position, E.Range, Color.BurlyWood, 1);
                }

                if (drawE == 2 || drawE == 3)
                {
                    var t = TargetSelector.GetTarget(E.Range + Q.Range, TargetSelector.DamageType.Physical);
                    if (t.IsValidTarget())
                    {
                        var color = System.Drawing.Color.Red;
                        for (var i = 1; i < 8; i++)
                        {
                            var targetBehind = t.Position +
                                               Vector3.Normalize(t.ServerPosition - ObjectManager.Player.Position) * i * 50;

                            if (!targetBehind.IsWall())
                            {
                                color = System.Drawing.Color.Aqua;
                            }
                            else
                            {
                                color = System.Drawing.Color.Red;
                            }
                        }

                        var tt = t.Position + Vector3.Normalize(t.ServerPosition - ObjectManager.Player.Position) * 8 * 50;

                        var startpos = t.Position;
                        var endpos   = tt;
                        var endpos1  = tt +
                                       (startpos - endpos).To2D().Normalized().Rotated(45 * (float)Math.PI / 180).To3D() *
                                       t.BoundingRadius;
                        var endpos2 = tt +
                                      (startpos - endpos).To2D().Normalized().Rotated(-45 * (float)Math.PI / 180).To3D() *
                                      t.BoundingRadius;

                        var width = 2;

                        var x = new Geometry.Polygon.Line(startpos, endpos);
                        {
                            x.Draw(color, width);
                        }

                        var y = new Geometry.Polygon.Line(endpos, endpos1);
                        {
                            y.Draw(color, width);
                        }

                        var z = new Geometry.Polygon.Line(endpos, endpos2);
                        {
                            z.Draw(color, width);
                        }
                    }
                }
            }

            var drawQ = GetValue <StringList>("DrawQ").SelectedIndex;

            switch (drawQ)
            {
            case 1:
                Render.Circle.DrawCircle(ObjectManager.Player.Position, Q.Range, System.Drawing.Color.Aqua);
                break;

            case 2:
                Render.Circle.DrawCircle(ObjectManager.Player.Position,
                                         Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65, System.Drawing.Color.Aqua);
                break;
            }
        }
コード例 #27
0
        public override void ExecuteJungleClear()
        {
            Game.PrintChat("laksdjlasdjlaskd");
            var jungleMobs = Marksman.Utils.Utils.GetMobs(Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                                          Marksman.Utils.Utils.MobTypes.All);

            if (jungleMobs != null)
            {
                switch (GetValue <StringList>("UseQJ").SelectedIndex)
                {
                case 1:
                {
                    if (jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                    {
                        Q.Cast(jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                    ? Game.CursorPos
                                    : jungleMobs.Position);
                    }
                    break;
                }

                case 2:
                {
                    jungleMobs = Marksman.Utils.Utils.GetMobs(
                        Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                        Marksman.Utils.Utils.MobTypes.BigBoys);
                    if (jungleMobs != null)
                    {
                        Q.Cast(jungleMobs.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                    ? Game.CursorPos
                                    : jungleMobs.Position);
                    }
                    break;
                }
                }

                switch (GetValue <StringList>("UseWJ").SelectedIndex)
                {
                case 1:
                {
                    if (jungleMobs.IsValidTarget(W.Range))
                    {
                        W.Cast(jungleMobs.Position);
                    }
                    break;
                }

                case 2:
                {
                    jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Marksman.Utils.Utils.MobTypes.BigBoys);
                    if (jungleMobs != null)
                    {
                        W.Cast(jungleMobs.Position);
                    }
                    break;
                }
                }

                switch (GetValue <StringList>("UseEJ").SelectedIndex)
                {
                case 1:
                {
                    if (jungleMobs.IsValidTarget(E.Range))
                    {
                        E.CastOnUnit(jungleMobs);
                    }
                    break;
                }

                case 2:
                {
                    jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Marksman.Utils.Utils.MobTypes.BigBoys);
                    if (jungleMobs != null)
                    {
                        E.CastOnUnit(jungleMobs);
                    }
                    break;
                }
                }
            }
        }
コード例 #28
0
ファイル: MissFortune.cs プロジェクト: mirinsharp/Leaguesharp
        public override void ExecuteJungleClear()
        {
            var jungleMobs = Marksman.Utils.Utils.GetMobs(Q.Range, Marksman.Utils.Utils.MobTypes.All);

            if (jungleMobs != null)
            {
                if (Q.IsReady())
                {
                    switch (Program.Config.Item("Jungle.UseQ").GetValue <StringList>().SelectedIndex)
                    {
                    case 1:
                    {
                        Q.CastOnUnit(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(Q.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.CastOnUnit(jungleMobs);
                        }
                        break;
                    }
                    }
                }

                if (W.IsReady())
                {
                    var jW = Program.Config.Item("Jungle.UseW").GetValue <StringList>().SelectedIndex;
                    if (jW != 0)
                    {
                        if (jW == 1)
                        {
                            jungleMobs = Utils.Utils.GetMobs(Orbwalking.GetRealAutoAttackRange(null) + 65,
                                                             Utils.Utils.MobTypes.BigBoys);
                            if (jungleMobs != null)
                            {
                                W.Cast();
                            }
                        }
                        else
                        {
                            var totalAa =
                                ObjectManager.Get <Obj_AI_Minion>()
                                .Where(
                                    m =>
                                    m.Team == GameObjectTeam.Neutral &&
                                    m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 165))
                                .Sum(mob => (int)mob.Health);

                            totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                            if (totalAa >= jW)
                            {
                                W.Cast();
                            }
                        }
                    }
                }

                if (E.IsReady())
                {
                    var jE = Program.Config.Item("Jungle.UseE").GetValue <StringList>().SelectedIndex;
                    if (jE != 0)
                    {
                        var aMobs = MinionManager.GetMinions(ObjectManager.Player.Position, E.Range, MinionTypes.All,
                                                             MinionTeam.Neutral);
                        if (aMobs.Count > jE)
                        {
                            E.Cast(aMobs[0]);
                        }
                    }
                }
            }
        }
コード例 #29
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            Orbwalker.SetAttack(Game.Time > rqTumbleBuffEndOfTime);

            if (JungleClearActive)
            {
                ExecJungleClear();
            }

            if ((ComboActive || HarassActive))
            {
                if (GetValue <bool>("FocusW"))
                {
                    var silverBuffMarkedEnemy = VayneData.GetSilverBuffMarkedEnemy;
                    if (silverBuffMarkedEnemy != null)
                    {
                        TargetSelector.SetTarget(silverBuffMarkedEnemy);
                    }
                    else
                    {
                        var attackRange = Orbwalking.GetRealAutoAttackRange(ObjectManager.Player);
                        TargetSelector.SetTarget(
                            TargetSelector.GetTarget(attackRange, TargetSelector.DamageType.Physical));
                    }
                }

                var useQ = GetValue <StringList>("Combo.UseQ").SelectedIndex;
                var t    = TargetSelector.GetTarget(Q.Range + Orbwalking.GetRealAutoAttackRange(null),
                                                    TargetSelector.DamageType.Physical);
                if (Q.IsReady() && t.IsValidTarget() && useQ != 0)
                {
                    switch (useQ)
                    {
                    case 1:
                    {
                        Q.Cast(Game.CursorPos);
                        break;
                    }

                    case 2:
                    {
                        var silverEnemy = VayneData.GetSilverBuffMarkedEnemy;
                        if (silverEnemy != null && t.ChampionName == silverEnemy.ChampionName &&
                            VayneData.GetSilverBuffMarkedCount == 2)
                        {
                            Q.Cast(Game.CursorPos);
                            Orbwalker.ForceTarget(t);
                        }
                        break;
                    }

                    case 3:
                    {
                        if (t.Distance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) && Q.IsPositionSafe(t.Position.To2D()))
                        {
                            Q.Cast(t.Position);
                        }
                        else if (Q.IsPositionSafe(Game.CursorPos.To2D()))
                        {
                            Q.Cast(Game.CursorPos);
                        }
                        Orbwalker.ForceTarget(t);
                        break;
                    }
                    }
                }

                var useE = GetValue <StringList>("UseEC").SelectedIndex;
                if (E.IsReady() && useE != 0)
                {
                    t = TargetSelector.GetTarget(E.Range + Q.Range, TargetSelector.DamageType.Physical);
                    if (useE == 1)
                    {
                        if (t.IsValidTarget())
                        {
                            CastE(t);
                        }
                    }
                    else
                    {
                        foreach (var e in HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range) && !e.IsZombie))
                        {
                            CastE(e);
                        }
                    }

                    /*
                     * foreach (var hero in
                     *  from hero in ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.IsValidTarget(550f))
                     *  let prediction = E.GetPrediction(hero)
                     *  where
                     *      NavMesh.GetCollisionFlags(
                     *          prediction.UnitPosition.To2D()
                     *              .Extend(
                     *                  ObjectManager.Player.ServerPosition.To2D(),
                     *                  -GetValue<Slider>("PushDistance").Value)
                     *              .To3D()).HasFlag(CollisionFlags.Wall) ||
                     *      NavMesh.GetCollisionFlags(
                     *          prediction.UnitPosition.To2D()
                     *              .Extend(
                     *                  ObjectManager.Player.ServerPosition.To2D(),
                     *                  -(GetValue<Slider>("PushDistance").Value/2))
                     *              .To3D()).HasFlag(CollisionFlags.Wall)
                     *  select hero)
                     * {
                     *  E.Cast(hero);
                     * }
                     */
                }
            }

            if (LaneClearActive)
            {
                var useQ = GetValue <bool>("UseQL");

                if (Q.IsReady() && useQ)
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in
                             vMinions.Where(
                                 minions => minions.Health < ObjectManager.Player.GetSpellDamage(minions, SpellSlot.Q)))
                    {
                        Q.Cast(minions);
                    }
                }
            }
        }
コード例 #30
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (ObjectManager.Player.IsDead)
            {
                return;
            }
            if (!Orbwalking.CanMove(100))
            {
                return;
            }

            var getEMarkedEnemy = TristanaData.GetEMarkedEnemy;

            if (getEMarkedEnemy != null)
            {
                TargetSelector.SetTarget(getEMarkedEnemy);
            }
            else
            {
                var attackRange = Orbwalking.GetRealAutoAttackRange(Player);
                TargetSelector.SetTarget(TargetSelector.GetTarget(attackRange, TargetSelector.DamageType.Physical));
            }

            Q.Range = 600 + 5 * (Player.Level - 1);
            E.Range = 630 + 7 * (Player.Level - 1);
            R.Range = 630 + 7 * (Player.Level - 1);

            if (!Player.HasBuff("Recall") && GetValue <KeyBind>("UseETH").Active&& ToggleActive && E.IsReady())
            {
                var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);

                if (t.LSIsValidTarget(E.Range))
                {
                    if (Program.Config.Item("DontEToggleHarass" + t.ChampionName) != null &&
                        Program.Config.Item("DontEToggleHarass" + t.ChampionName).GetValue <bool>() == false)
                    {
                        E.CastOnUnit(t);
                    }
                }
            }

            var useW   = W.IsReady() && GetValue <bool>("UseWC");
            var useWc  = W.IsReady() && GetValue <bool>("UseWCS");
            var useWks = W.IsReady() && GetValue <bool>("UseWKs");
            var useE   = E.IsReady() && GetValue <bool>("UseEC");
            var useR   = R.IsReady() && GetValue <bool>("UseRM") && R.IsReady();

            if (ComboActive)
            {
                Obj_AI_Hero t;
                if (TristanaData.GetEMarkedEnemy != null)
                {
                    t = TristanaData.GetEMarkedEnemy;
                    TargetSelector.SetTarget(TristanaData.GetEMarkedEnemy);
                }
                else
                {
                    t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                }

                if (useE && E.IsReady())
                {
                    if (E.IsReady() && t.LSIsValidTarget(E.Range))
                    {
                        E.CastOnUnit(t);
                    }
                }

                if (useW)
                {
                    t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                    if (t.LSIsValidTarget())
                    {
                        W.Cast(t);
                    }
                }

                /*
                 * else if (useWks)
                 * {
                 *  t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                 *  if (t.LSIsValidTarget() && t.Health < TristanaData.GetWDamage)
                 *      W.Cast(t);
                 * }
                 * else if (useWc)
                 * {
                 *  t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                 *  if (t.LSIsValidTarget() && TristanaData.GetEMarkedCount == 4)
                 *      W.Cast(t);
                 * }
                 */
            }

            if (ComboActive)
            {
                if (useR)
                {
                    var t = TargetSelector.GetTarget(R.Range - 10, TargetSelector.DamageType.Physical);

                    if (!t.LSIsValidTarget())
                    {
                        return;
                    }

                    if (Player.GetSpellDamage(t, SpellSlot.R) - 30 < t.Health ||
                        t.Health < Player.GetAutoAttackDamage(t, true))
                    {
                        return;
                    }

                    R.CastOnUnit(t);
                }
            }
        }