Beispiel #1
0
        public static void CampStealer()
        {
            var jungleMinions = MinionManager.GetMinions(
                Player.ServerPosition, Q.IsReady() ? Q.Range : 760, MinionTypes.All, MinionTeam.Neutral,
                MinionOrderTypes.MaxHealth);

            if (jungleMinions != null)
            {
                foreach (var jungleMinion in
                         jungleMinions.Where(
                             minion =>
                             Q.GetHealthPrediction(minion) <
                             Q.GetDamage(minion) + Q.GetDamage(minion, 1) +
                             Player.GetSummonerSpellDamage(minion, Damage.SummonerSpell.Smite))
                         .Where(
                             jungleMinion =>
                             JungleCamps.Any(j => jungleMinion.BaseSkinName.StartsWith(j)) ||
                             SmallMinionCamps.Any(j => jungleMinion.BaseSkinName.StartsWith(j)))
                         .Where(jungleMinion => LeeUtility.MenuParamBool(jungleMinion.BaseSkinName)))
                {
                    Q.Cast(jungleMinion);
                    var backPos = Player.ServerPosition;
                    Utility.DelayAction.Add(250, () => Q.Cast());
                    var minion = jungleMinion;
                    Utility.DelayAction.Add(
                        (int)((Player.Distance(jungleMinion) - 725) / Q.Speed * 1000) + 300 + Game.Ping, () =>
                    {
                        Player.GetSummonerSpellDamage(minion, Damage.SummonerSpell.Smite);
                        LeeUtility.WardJump(backPos);
                    });
                    Player.SummonerSpellbook.CastSpell(LeeSinSharp.SmiteSlot, jungleMinion);
                }
            }
        }
Beispiel #2
0
        public static void LaneClear()
        {
            if (Player.HasBuff("blindmonkpassive_cosmetic", true) || _waitForSpell >= Environment.TickCount)
            {
                return;
            }

            var minions       = MinionManager.GetMinions(Player.ServerPosition, E.Range);
            var jungleMinions = MinionManager.GetMinions(
                Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral);

            minions.AddRange(jungleMinions);
            minions.RemoveAll(m => m.Name.IndexOf("ward", StringComparison.InvariantCultureIgnoreCase) >= 0);
            //Doesn't create a new substring Kappa
            foreach (var minion in minions.OrderByDescending(m => m.MaxHealth).ThenBy(m => m.Health))
            {
                if (LeeUtility.MenuParamBool("UseEW") && E.IsReady() &&
                    Vector3.DistanceSquared(minion.ServerPosition, Player.ServerPosition) <= 350 * 350)
                {
                    Console.WriteLine("E");
                    E.Cast();
                    _waitForSpell = Environment.TickCount + 250 + Game.Ping;
                }
                else if (LeeUtility.MenuParamBool("UseQW") && Q.IsReady())
                {
                    Q.Cast(minion);
                    _waitForSpell = Environment.TickCount + 250 + Game.Ping;
                }
                else if (LeeUtility.MenuParamBool("UseWW") && W.IsReady())
                {
                    W.Cast();
                    _waitForSpell = Environment.TickCount + 250 + Game.Ping;
                }
            }
        }
Beispiel #3
0
        public static void Combo(Obj_AI_Hero targetHero) //Thanks Roach_ For helping me with combo
        {
            if (!targetHero.IsValidTarget())
            {
                return;
            }
            var enemyQBuffed = targetHero.HasBuff("BlindMonkQOne", true);
            var autoAttacks  = Config.Menu.Item("aaBetween").GetValue <Slider>().Value;
            var passiveCount = LeeUtility.BuffCount("blindmonkpassive_cosmetic");

            if (!enemyQBuffed && autoAttacks != 0 && passiveCount >= Math.Abs(autoAttacks - 2))
            {
                return;
            }
            if (LeeUtility.MenuParamBool("useQC") && Q.IsReady() && Q.Instance.Name == "BlindMonkQOne" && R.IsReady() &&
                Vector3.DistanceSquared(targetHero.ServerPosition, Player.ServerPosition) <= 375 * 375)
            {
                LeeUtility.CastQ(targetHero, QMode.Combo);
            }
            else if (LeeUtility.MenuParamBool("useQC") && enemyQBuffed && R.IsReady())
            {
                if (targetHero.Distance(Player) <= R.Range)
                {
                    R.Cast(targetHero, LeeUtility.MenuParamBool("packetCast"));
                    Utility.DelayAction.Add(750, () => Q.Cast(targetHero));
                }
                else
                {
                    Player.IssueOrder(GameObjectOrder.MoveTo, targetHero.ServerPosition);
                }
            }
            else
            {
                if (LeeUtility.MenuParamBool("useQC") && LeeUtility.CastQ(targetHero, QMode.Combo))
                {
                    var qPos = Q.GetPrediction(targetHero);
                    Utility.DelayAction.Add(
                        (int)(targetHero.Distance(qPos.UnitPosition) / Q.Speed * 1000) + 300 + Game.Ping, () => Q.Cast());
                }
                if (Vector3.DistanceSquared(targetHero.ServerPosition, Player.ServerPosition) <= 350 * 350 &&
                    E.IsReady())
                {
                    if (E.IsReady() && LeeUtility.MenuParamBool("useE1C") &&
                        (E.Instance.Name == "BlindMonkEOne" || LeeUtility.MenuParamBool("useE2C")))
                    {
                        E.Cast();
                    }
                    else if (!Q.IsReady() && !E.IsReady() && !R.IsReady() && LeeUtility.MenuParamBool("useW1C") &&
                             (W.Instance.Name == "BlindMonkWOne" || LeeUtility.MenuParamBool("useW2C")) &&
                             Player.Mana - 50 >= 50)
                    {
                        W.Cast();
                    }
                }
            }
        }
Beispiel #4
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            try
            {
                if (Config.Menu.Item("wardJump").GetValue <KeyBind>().Active)
                {
                    LeeMethods.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                    LeeUtility.WardJump(Game.CursorPos);
                }

                if (SmiteSlot != SpellSlot.Unknown && Config.Menu.Item("stealCamp").GetValue <KeyBind>().Active)
                {
                    LeeMethods.CampStealer();
                }
                if (SmiteSlot != SpellSlot.Unknown && Config.Menu.Item("smiteEnabled").GetValue <KeyBind>().Active)
                {
                    LeeMethods.Smite();
                }
                //Console.WriteLine(LeeUtility.MenuParamBool("enabledKS"));
                if (Config.Menu.Item("enabledKS").GetValue <KeyBind>().Active)
                {
                    LeeMethods.KSer();
                }

                var target = SimpleTs.GetTarget(
                    LeeMethods.Q.IsReady() ? LeeMethods.Q.Range : LeeMethods.R.Range, SimpleTs.DamageType.Physical);
                LeeMethods.InsecCombo(target);
                switch (Config.Orbwalker.ActiveMode)
                {
                case Orbwalking.OrbwalkingMode.Combo:
                    LeeMethods.Combo(target);
                    break;

                case Orbwalking.OrbwalkingMode.Mixed:
                    LeeMethods.Harass(target);
                    break;

                case Orbwalking.OrbwalkingMode.LastHit:
                    break;

                case Orbwalking.OrbwalkingMode.LaneClear:
                    LeeMethods.LaneClear();
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #5
0
        public static void Smite()
        {
            var jungleMinions = MinionManager.GetMinions(
                Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral);

            if (jungleMinions != null)
            {
                foreach (var jungleMinion in
                         jungleMinions.Where(
                             jungleMinion =>
                             JungleCamps.Any(j => jungleMinion.Name.StartsWith(j)) ||
                             SmallMinionCamps.Any(j => jungleMinion.Name.StartsWith(j)))
                         .Where(
                             jungleMinion =>
                             LeeUtility.MenuParamBool(jungleMinion.Name) &&
                             jungleMinion.Health <=
                             Player.GetSummonerSpellDamage(jungleMinion, Damage.SummonerSpell.Smite)))
                {
                    Player.SummonerSpellbook.CastSpell(LeeSinSharp.SmiteSlot, jungleMinion);
                }
            }
        }
Beispiel #6
0
        public LeeSinSharp()
        {
            LeeMethods.Player = ObjectManager.Player;
            SmiteSlot         = LeeMethods.Player.GetSpellSlot("SummonerSmite");
            FlashSlot         = LeeMethods.Player.GetSpellSlot("summonerflash");
            LeeMethods.Q.SetSkillshot(0.25f, 65f, 1800f, true, SkillshotType.SkillshotLine);
            LeeMethods.R.SetTargetted(0.25f, float.MaxValue);
            Config.SpellList.Add(LeeMethods.Q);
            Config.SpellList.Add(LeeMethods.W);
            Config.SpellList.Add(LeeMethods.E);
            Config.SpellList.Add(LeeMethods.R);

            // ReSharper disable once ObjectCreationAsStatement
            new Config();
            if (Config.StealthChampiopns)
            {
                Obj_AI_Base.OnProcessSpellCast += OnProcessSpellCast;
            }
            Game.OnGameUpdate   += Game_OnGameUpdate;
            GameObject.OnCreate += GameObject_OnCreate;
            Drawing.OnDraw      += OnDraw;
            LeeUtility.SendMessage("Loaded");
        }
Beispiel #7
0
        public static void KSer()
        {
            foreach (var hero in
                     ObjectManager.Get <Obj_AI_Hero>()
                     .Where(
                         h => h.IsEnemy && h.Distance(Player) < (Q.IsReady() ? Q.Range : R.Range) && h.IsValidTarget())
                     .OrderBy(h => h.Health))
            {
                if (LeeUtility.MenuParamBool("useQ1KS"))
                {
                    var predictedHealth = Q.GetHealthPrediction(hero);
                    var q1Damage        = Q.GetDamage(hero, 0);
                    if (Q.IsReady() && predictedHealth <= q1Damage)
                    {
                        Q.Cast(hero);
                    }
                    else if (Q.IsReady() && LeeUtility.MenuParamBool("useQ2KS") &&
                             predictedHealth < q1Damage + Q.GetDamage(hero, 1))
                    {
                        Q.Cast(hero);
                        Utility.DelayAction.Add(
                            (int)(Math.Ceiling(Player.Distance(hero) / Q.Speed * 1000) + 300 + Game.Ping),
                            () => Q.Cast(Player));
                    }
                }
                if (E.IsReady() && LeeUtility.MenuParamBool("useE1KS") &&
                    Vector3.DistanceSquared(Player.ServerPosition, hero.ServerPosition) <= 350 * 350 &&
                    E.GetHealthPrediction(hero) <= W.GetDamage(hero))
                {
                    E.Cast();
                }
                if (R.IsReady() && LeeUtility.MenuParamBool("useRKS") &&
                    Vector3.DistanceSquared(Player.ServerPosition, hero.ServerPosition) <= 375 * 375 &&
                    R.GetHealthPrediction(hero) <=
                    R.GetDamage(hero) * Config.Menu.Item("rOverKill").GetValue <Slider>().Value / 100)
                {
                    R.Cast();
                }
                if (R.IsReady() && LeeUtility.MenuParamBool("useRCollisionKS") &&
                    Vector3.DistanceSquared(Player.ServerPosition, hero.ServerPosition) <= 375 * 375)
                {
                    var hero1    = hero;
                    var startPos = Player.ServerPosition.To2D();
                    var endPos   = Player.ServerPosition.To2D().Extend(hero1.ServerPosition.To2D(), 1200);

                    var polygon = new Polygon(LeeUtility.Rectangle(startPos, endPos, hero1.BoundingRadius));
                    foreach (var victim in
                             ObjectManager.Get <Obj_AI_Hero>()
                             .Where(
                                 h =>
                                 h.IsEnemy && h != hero1 &&
                                 R.GetHealthPrediction(h) <=
                                 R.GetDamage(h) * Config.Menu.Item("rOverKill").GetValue <Slider>().Value / 100))
                    {
                        if (polygon.Contains(victim.ServerPosition.To2D()))
                        {
                            R.Cast(hero1);
                        }
                    }
                }
            }
        }
Beispiel #8
0
        public static void Harass(Obj_AI_Hero targetHero, bool useW = true)
        {
            if (!targetHero.IsValidTarget())
            {
                _harassStage = HarassStage.Nothing;
                return;
            }
            switch (_harassStage)
            {
            case HarassStage.Nothing:
                _harassStage = HarassStage.Started;
                break;

            case HarassStage.Started:
                _harassStage = HarassStage.Doing;
                if (E.IsReady() &&
                    Vector3.DistanceSquared(Player.ServerPosition, targetHero.ServerPosition) <= 350 * 350 &&
                    LeeUtility.MenuParamBool("UseE1H"))
                {
                    E.Cast();
                    if (LeeUtility.MenuParamBool("UseE2H"))
                    {
                        Utility.DelayAction.Add(
                            250 - Game.Ping / 2 + 10, () =>
                        {
                            E.Cast(Player, true);
                            _harassStage = LeeUtility.MenuParamBool("UseQ1H") && Q.IsReady()
                                        ? HarassStage.Doing
                                        : HarassStage.Finished;
                        });
                    }
                }
                else
                {
                    _harassStage = HarassStage.Finished;
                }
                if (Q.IsReady() && LeeUtility.MenuParamBool("UseQ1H"))
                {
                    //LeeUtility.CastQ(targetHero, QMode.Harass);
                    if (LeeUtility.CastQ(targetHero, QMode.Harass) && LeeUtility.MenuParamBool("UseQ2H"))
                    {
                        var delay = (int)(targetHero.Distance(Player) / Q.Speed * 1000) + 300 + Game.Ping;
                        Utility.DelayAction.Add(
                            delay, () =>
                        {
                            if (Vector3.DistanceSquared(_harassInitialVector3, Player.ServerPosition) <= 600 * 600)
                            {
                                _harassInitialVector3 = Player.ServerPosition;
                            }
                            Q.Cast(targetHero);
                        });
                        Utility.DelayAction.Add(delay * 2, () => _harassStage = HarassStage.Finished);
                    }
                    else
                    {
                        _harassStage = HarassStage.Finished;
                    }
                }
                else
                {
                    _harassStage = HarassStage.Finished;
                }
                break;

            case HarassStage.Doing:
                break;

            case HarassStage.Finished:
                if (LeeUtility.MenuParamBool("UseWH") && useW)
                {
                    LeeUtility.WardJump(_harassInitialVector3, LeeUtility.MenuParamBool("UseWardWH"));
                }
                _harassStage = HarassStage.Nothing;
                break;
            }
        }
Beispiel #9
0
        public static void InsecCombo(Obj_AI_Hero targetHero)
        {
            if (((!W.IsReady() || Items.GetWardSlot() == null) &&
                 Player.SummonerSpellbook.CanUseSpell(LeeSinSharp.FlashSlot) != SpellState.Ready) || !R.IsReady() ||
                !Q.IsReady() || Q.Instance.Name != "BlindMonkQOne")
            {
                if (Config.Menu.Item("insec1").GetValue <KeyBind>().Active ||
                    Config.Menu.Item("insec2").GetValue <KeyBind>().Active)
                {
                    Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                }
                return;
            }
            if (!targetHero.IsValidTarget())
            {
                return;
            }
            var useFlash = LeeUtility.MenuParamBool("useFlashInsec") &&
                           ((Config.Menu.Item("insecMode").GetValue <StringList>().SelectedIndex == 0 &&
                             (!W.IsReady() || Items.GetWardSlot() == null)) ||
                            (Config.Menu.Item("insecMode").GetValue <StringList>().SelectedIndex == 1 &&
                             Player.SummonerSpellbook.CanUseSpell(LeeSinSharp.FlashSlot) == SpellState.Ready));
            //Console.WriteLine(Game.Time + useFlash.ToString());
            //useFlash = true;

            var pos  = Player.ServerPosition.To2D();
            var qPos = Q.GetPrediction(targetHero);

            if (Config.Menu.Item("insec1").GetValue <KeyBind>().Active)
            {
                if (LeeUtility.CastQ(targetHero, QMode.Insec))
                {
                    var delay = (int)(Player.Distance(qPos.UnitPosition) / Q.Speed * 1000) + 300 + Game.Ping;
                    Utility.DelayAction.Add(delay, () => Q.Cast());
                    if (useFlash)
                    {
                        Utility.DelayAction.Add(
                            (int)(delay * 1.2), () =>
                        {
                            if (Vector3.DistanceSquared(targetHero.ServerPosition, Player.ServerPosition) <=
                                375 * 375)
                            {
                                R.Cast(targetHero);
                                //Console.WriteLine("casted R");
                                Utility.DelayAction.Add(
                                    200 - Game.Ping,
                                    () =>
                                    Player.SummonerSpellbook.CastSpell(
                                        LeeSinSharp.FlashSlot, LeeUtility.GetInsecVector3(targetHero, true, pos)));
                            }
                        });
                    }
                    else
                    {
                        Utility.DelayAction.Add(
                            (int)(delay * 1.1), () =>
                        {
                            var wardJumpPos = LeeUtility.GetInsecVector3(targetHero, false, pos);
                            if (Vector3.DistanceSquared(wardJumpPos, Player.ServerPosition) <= 600 * 600)
                            {
                                LeeUtility.WardJump(wardJumpPos, true, false);
                                //Utility.DelayAction.Add(300 + Game.Ping, () => LeeUtility.WardJump(wardJumpPos, true, false));
                                Utility.DelayAction.Add(
                                    250 + Game.Ping, () =>
                                {
                                    if (Vector3.DistanceSquared(wardJumpPos, Player.ServerPosition) <= 100 * 100)
                                    {
                                        R.Cast(targetHero, LeeUtility.MenuParamBool("packetCast"));
                                    }
                                });
                            }
                        });
                    }
                }
                else
                {
                    Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                }
            }
            else if (Config.Menu.Item("insec2").GetValue <KeyBind>().Active)
            {
                var insecPos   = LeeUtility.GetInsecVector3(targetHero, useFlash, pos);
                var inDistance = Player.Distance(insecPos) <= (useFlash ? 400 : 600);
                if (useFlash)
                {
                    if (inDistance &&
                        Vector3.DistanceSquared(Player.ServerPosition, targetHero.ServerPosition) <= 375 * 375)
                    {
                        R.Cast(targetHero);
                        Utility.DelayAction.Add(
                            200 - Game.Ping, () => Player.SummonerSpellbook.CastSpell(LeeSinSharp.FlashSlot, insecPos));
                        Utility.DelayAction.Add(
                            250, () =>
                        {
                            Q.Cast(targetHero);
                            var delay = (int)(Player.Distance(targetHero) / Q.Speed * 1000) + 300 + Game.Ping;
                            Utility.DelayAction.Add(delay + 500, () => Q.Cast(targetHero));
                        });
                    }
                    else
                    {
                        Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                    }
                }
                else
                {
                    if (inDistance)
                    {
                        LeeUtility.WardJump(insecPos);
                        Utility.DelayAction.Add(250 + Game.Ping, () => R.Cast(targetHero, false));
                        Utility.DelayAction.Add(
                            250, () =>
                        {
                            var delay = (int)(Player.Distance(targetHero) / Q.Speed * 1000) + 300 + Game.Ping;
                            Q.Cast(targetHero);
                            Utility.DelayAction.Add(delay + 500, () => Q.Cast(targetHero));
                        });
                    }
                    else
                    {
                        Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                    }
                }
            }
        }
Beispiel #10
0
        private void OnDraw(EventArgs args)
        {
            try
            {
                foreach (var spell in Config.SpellList)
                {
                    var menuItem = Config.Menu.Item(spell.Slot + "Draw").GetValue <Circle>();
                    if (menuItem.Active)
                    {
                        Utility.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
                    }
                }
                var insecItem = Config.Menu.Item("drawInsec").GetValue <Circle>();
                if (insecItem.Active && _target.IsValidTarget() && (Config.Menu.Item("insec1").GetValue <KeyBind>().Active ||
                                                                    Config.Menu.Item("insec2").GetValue <KeyBind>().Active))
                {
                    var startPoint     = _target.Position.To2D();
                    var insecPoint     = LeeUtility.GetInsecVector3(_target, false, LeeMethods.Player.Position.To2D()).To2D();
                    var endPoint       = startPoint.Extend(insecPoint, -1200);
                    var insecRectangle = LeeUtility.Rectangle(startPoint, endPoint, _target.BoundingRadius);
                    for (int i = 0; i < insecRectangle.Count; i++)
                    {
                        Drawing.DrawLine(Drawing.WorldToScreen(insecRectangle[i].To3D()), Drawing.WorldToScreen(insecRectangle[i == 3 ? 0 : i + 1].To3D()), 1, insecItem.Color);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            /*try
             * {
             *  var startPos = LeeMethods.Player.ServerPosition.To2D();
             *  var endPos = LeeMethods.Player.ServerPosition.To2D().Extend(Game.CursorPos.To2D(), 1200);
             *  Utility.DrawCircle(endPos.To3D(),10,Color.Red);
             *  Utility.DrawCircle(startPos.To3D(), 10, Color.Red);
             *
             *  var rectangle = LeeUtility.Rectangle(startPos, endPos, LeeMethods.Player.BoundingRadius);
             *  Utility.DrawCircle(rectangle[0].To3D(), 10, Color.Red);
             *  Utility.DrawCircle(rectangle[1].To3D(), 10, Color.Green);
             *  Utility.DrawCircle(rectangle[2].To3D(), 10, Color.Blue);
             *  Utility.DrawCircle(rectangle[3].To3D(), 10, Color.Black);
             *
             *  Drawing.DrawLine(Drawing.WorldToScreen(rectangle[0].To3D()), Drawing.WorldToScreen(rectangle[1].To3D()), 1, Color.Red);
             *  Drawing.DrawLine(Drawing.WorldToScreen(rectangle[1].To3D()), Drawing.WorldToScreen(rectangle[2].To3D()), 1, Color.Green);
             *  Drawing.DrawLine(Drawing.WorldToScreen(rectangle[2].To3D()), Drawing.WorldToScreen(rectangle[3].To3D()), 1, Color.Blue);
             *  Drawing.DrawLine(Drawing.WorldToScreen(rectangle[3].To3D()), Drawing.WorldToScreen(rectangle[0].To3D()), 1, Color.Black);
             *
             *  var polygon = new Polygon(rectangle);
             *  if (polygon.Contains(Game.CursorPos.To2D()))
             *  {
             *      Packet.S2C.Ping.Encoded(new Packet.S2C.Ping.Struct(Game.CursorPos.X, Game.CursorPos.Y)).Process();
             *  }
             * }
             * catch (Exception e)
             * {
             *  Console.WriteLine(e);
             *  throw;
             * }*/
            //var hero1 = hero;

            //Drawing.DrawText(100, 100, Color.White, "Harass Stage: " + LeeMethods.harassStage);
            //Console.WriteLine(ObjectManager.Player.BoundingRadius);
        }