Пример #1
0
        public static Vector3 GetInsecPos(AIHeroClient target)
        {
            try
            {
                if (ClicksecEnabled && InsecMenu.GetCheckBoxValue("clickInsec"))
                {
                    InsecLinePos = Drawing.WorldToScreen(InsecClickPos);
                    return(V2E(InsecClickPos, target.Position, target.Distance(InsecClickPos) + 230).To3D());
                }
                if (isNullInsecPos)
                {
                    isNullInsecPos = false;
                    insecPos       = myHero.Position;
                }

                if (GetAllyHeroes(target, 2000 + InsecMenu.GetSliderValue("bonusrangea")).Count > 0 &&
                    InsecMenu.GetCheckBoxValue("insecally"))
                {
                    var insecPosition =
                        InterceptionPoint(
                            GetAllyInsec(
                                GetAllyHeroes(target, 2000 + InsecMenu.GetSliderValue("bonusrangea"))));

                    InsecLinePos = Drawing.WorldToScreen(insecPosition);
                    return(V2E(insecPosition, target.Position, target.Distance(insecPosition) + 230).To3D());
                }

                var tower =
                    ObjectManager.Get <Obj_AI_Turret>()
                    .Where(
                        turret =>
                        turret.Distance(target) - 725 <= 950 && turret.IsAlly && turret.IsVisible &&
                        turret.Health > 0 && turret.Distance(target) <= 1300 && turret.Distance(target) > 400)
                    .MinOrDefault(i => target.Distance(myHero));

                if (tower != null)
                {
                    InsecLinePos = Drawing.WorldToScreen(tower.Position);
                    return(V2E(tower.Position, target.Position, target.Distance(tower.Position) + 230).To3D());
                }

                if (InsecMenu.GetCheckBoxValue("insecpos"))
                {
                    InsecLinePos = Drawing.WorldToScreen(insecPos);
                    return(V2E(insecPos, target.Position, target.Distance(insecPos) + 230).To3D());
                }
                return(new Vector3());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            return(new Vector3());
        }
Пример #2
0
        private static void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            if (SpellNames.Contains(args.SData.Name.ToLower()))
            {
                PassiveStacks = 2;
                passiveTimer  = Environment.TickCount + 3000;
                LastSpellTime = Environment.TickCount;
            }

            if (args.SData.Name.Equals("BlindMonkQOne", StringComparison.InvariantCultureIgnoreCase))
            {
                castQAgain = false;
                Core.DelayAction(delegate { castQAgain = true; }, 2900);
            }

            if (R.IsReady() && Flash.IsReady())
            {
                var target = InsecMenu.GetCheckBoxValue("insecMode")
                                 ? TargetSelector.SelectedTarget
                                 : TargetSelector.GetTarget(R.Range, DamageType.Physical);

                if (target == null)
                {
                    return;
                }
                if (args.SData.Name.Equals("BlindMonkRKick", StringComparison.InvariantCultureIgnoreCase) &&
                    InsecMenu.GetKeyBindValue("insecflash"))
                {
                    Core.DelayAction(delegate { Flash.Cast(GetInsecPos(target)); }, 80);
                }
            }

            if (args.SData.Name.Equals("summonerflash", StringComparison.InvariantCultureIgnoreCase) &&
                insecComboStep != InsecComboStepSelect.None)
            {
                var target = InsecMenu.GetCheckBoxValue("insecMode")
                                 ? TargetSelector.SelectedTarget
                                 : TargetSelector.GetTarget(Q.Range, DamageType.Physical);

                insecComboStep = InsecComboStepSelect.Pressr;

                Core.DelayAction(delegate { R.Cast(target); }, 80);
            }
            if (args.SData.Name.Equals("BlindMonkQTwo", StringComparison.InvariantCultureIgnoreCase))
            {
                waitingForQ2 = true;
                Core.DelayAction(delegate { waitingForQ2 = false; }, 3000);
            }
            if (args.SData.Name.Equals("BlindMonkRKick", StringComparison.InvariantCultureIgnoreCase))
            {
                insecComboStep = InsecComboStepSelect.None;
            }

            switch (args.SData.Name.ToLower())
            {
            case "blindmonkqone":
                LastQ         = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;

            case "blindmonkwone":
                LastW         = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;

            case "blindmonkeone":
                LastE         = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;

            case "blindmonkqtwo":
                LastQ2        = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                CheckQ        = false;
                break;

            case "blindmonkwtwo":
                LastW2        = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;

            case "blindmonketwo":
                LastQ         = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;

            case "blindmonkrkick":
                LastR         = Environment.TickCount;
                LastSpell     = Environment.TickCount;
                PassiveStacks = 2;
                break;
            }
        }
Пример #3
0
        /// <summary>
        /// This event is triggered every tick of the game
        /// </summary>
        /// <param name="args"></param>
        ///



        private static void Game_OnTick(EventArgs args)
        {
            if (Extensions.doubleClickReset <= Environment.TickCount && Extensions.clickCount != 0)
            {
                Extensions.doubleClickReset = float.MaxValue;
                Extensions.clickCount       = 0;
            }

            if (Extensions.clickCount >= 2)
            {
                Extensions.resetTime       = Environment.TickCount + 3000;
                Extensions.ClicksecEnabled = true;
                Extensions.InsecClickPos   = Game.CursorPos;
                Extensions.clickCount      = 0;
            }


            if (Extensions.passiveTimer <= Environment.TickCount)
            {
                Extensions.PassiveStacks = 0;
            }

            if (Extensions.resetTime <= Environment.TickCount && !InsecMenu.GetKeyBindValue("insec") &&
                Extensions.ClicksecEnabled)
            {
                Extensions.ClicksecEnabled = false;
            }

            if (Extensions.q2Timer <= Environment.TickCount)
            {
                Extensions.q2Done = false;
            }

            if (myHero.IsDead || MenuGUI.IsChatOpen || myHero.IsRecalling())
            {
                return;
            }


            if ((InsecMenu.GetCheckBoxValue("insecMode") ? TargetSelector.SelectedTarget
                     : TargetSelector.GetTarget(SpellsManager.Q.Range, DamageType.Physical)) == null)
            {
                Extensions.insecComboStep = Extensions.InsecComboStepSelect.None;
            }

            if (ComboMenu.GetKeyBindValue("starCombo"))
            {
                WardCombo.Execute();
            }

            if (MiscMenu.GetCheckBoxValue("igniteks"))
            {
                var newTarget = TargetSelector.GetTarget(600, DamageType.True);

                if (newTarget != null && SpellsManager.igniteSlot != SpellSlot.Unknown &&
                    myHero.Spellbook.CanUseSpell(SpellsManager.igniteSlot) == SpellState.Ready &&
                    ObjectManager.Player.GetSummonerSpellDamage(newTarget, DamageLibrary.SummonerSpells.Ignite) > newTarget.Health)
                {
                    myHero.Spellbook.CastSpell(SpellsManager.igniteSlot, newTarget);
                }
            }

            if (InsecMenu.GetKeyBindValue("insec") && SpellsManager.R.IsReady())
            {
                if (InsecMenu.GetCheckBoxValue("insecorbw"))
                {
                    Extensions.Orbwalk(Game.CursorPos);
                }

                var newTarget = InsecMenu.GetCheckBoxValue("insecMode") ? TargetSelector.SelectedTarget : TargetSelector.GetTarget(SpellsManager.Q.Range, DamageType.Physical);

                if (newTarget != null)
                {
                    Insec.InsecCombo(newTarget);
                }
            }
            else
            {
                Extensions.isNullInsecPos = true;
                Extensions.wardJumped     = false;
            }

            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                Extensions.insecComboStep = Extensions.InsecComboStepSelect.None;
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                Combo.Execute();
            }
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
            {
                Harass.Execute();
            }
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                LaneClear.Execute();
            }
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            {
                JungleClear.Execute();
            }

            Killsteal.Execute();


            if (WardJumpMenu.GetKeyBindValue("wardjump"))
            {
                WardJumper.WardjumpToMouse();
            }

            if (InsecMenu.GetKeyBindValue("insecflash"))
            {
                Extensions.Orbwalk(Game.CursorPos);

                var target = TargetSelector.GetTarget(SpellsManager.R.Range, DamageType.Physical);
                if (target == null)
                {
                    return;
                }

                if (SpellsManager.R.IsReady() && !target.IsZombie &&
                    SpellsManager.Flash.IsReady() &&
                    target.IsValidTarget(SpellsManager.R.Range))
                {
                    SpellsManager.R.Cast(target);
                }
            }


            if (!ComboMenu.GetCheckBoxValue("rkickkill") || !SpellsManager.R.IsReady())
            {
                return;
            }

            AIHeroClient t =
                EntityManager.Heroes.Enemies.Find(
                    e =>
                    e.IsValidTarget(SpellsManager.Q.Range + SpellsManager.W.Range) && !e.IsDead && !e.IsZombie &&
                    e.Distance(Game.CursorPos) < e.Distance(ObjectManager.Player.Position) &&

                    !e.IsValidTarget(myHero.GetAutoAttackRange(null) + 65) && e.Health < e.MaxHealth * 0.14);

            if (t == null)
            {
                return;
            }

            foreach (var enemy in EntityManager.Heroes.Enemies.Where(e => e.Distance(t.Position) < 800 && e.NetworkId != t.NetworkId && ObjectManager.Player.Distance(e) < ObjectManager.Player.Distance(t)))
            {
                toPolygon = new Geometry2.Rectangle(t.Position.To2D(), t.Position.To2D().Extend(ObjectManager.Player.Position.To2D(), 800), 100).ToPolygon();
                toPolygon.Draw(Color.Blue, 3);

                if (toPolygon.IsInside(enemy.Position.To2D()))
                {
                    SpellsManager.R.Cast(enemy);
                }
            }


            if (ComboMenu.GetCheckBoxValue("rkick"))
            {
                float leeSinRKickDistance = 700;
                float leeSinRKickWidth    = 100;
                var   minREnemies         = ComboMenu.GetSliderValue("rkickcount");
                foreach (var enemy in EntityManager.Heroes.Enemies)
                {
                    var startPos  = enemy.ServerPosition;
                    var endPos    = myHero.ServerPosition.Extend(startPos, myHero.Distance(enemy) + leeSinRKickDistance);
                    var rectangle = new Geometry.Polygon.Rectangle(startPos, endPos, leeSinRKickWidth);

                    if (EntityManager.Heroes.Enemies.Count(x => rectangle.IsInside(x)) >= minREnemies)
                    {
                        SpellsManager.R.Cast(enemy);
                    }
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Put in here what you want to do when the mode is running
        /// </summary>
        public static void InsecCombo(AIHeroClient target)
        {
            if (target != null && target.IsVisible)
            {
                if (myHero.Distance(GetInsecPos(target)) < 200)
                {
                    insecComboStep = InsecComboStepSelect.Pressr;
                }
                else if (insecComboStep == InsecComboStepSelect.None &&
                         GetInsecPos(target).Distance(myHero.Position) < 600)
                {
                    insecComboStep = InsecComboStepSelect.Wgapclose;
                }
                else if (insecComboStep == InsecComboStepSelect.None &&
                         target.Distance(myHero) < Q.Range)
                {
                    insecComboStep = InsecComboStepSelect.Qgapclose;
                }

                switch (insecComboStep)
                {
                case InsecComboStepSelect.Qgapclose:

                    var prediction = Q.GetPrediction(target);
                    if (prediction.CollisionObjects.Count(h => h.IsEnemy && !h.IsDead && h is Obj_AI_Minion) >= 1 && InsecMenu.GetCheckBoxValue("inseccheck") && Q.IsReady())
                    {
                        foreach (var unit in ObjectManager.Get <Obj_AI_Base>().Where(obj => (((obj is Obj_AI_Minion) && myHero.GetSpellDamage(target, SpellSlot.Q) < obj.Health + 10) || (obj is AIHeroClient)) && obj.IsValidTarget(Q.Range) && obj.Distance(GetInsecPos(target)) < 500))
                        {
                            var pred = Q.GetPrediction(unit);
                            if (pred.HitChance >= HitChance.High)
                            {
                                Q.Cast(pred.CastPosition);
                            }
                            break;
                        }
                    }

                    if (!(target.HasQBuff()) && QState)
                    {
                        CastQ(target, MiscMenu.GetCheckBoxValue("smiteq"));
                    }
                    else if (target.HasQBuff())
                    {
                        Q2.Cast();
                        insecComboStep = InsecComboStepSelect.Wgapclose;
                    }
                    else
                    {
                        if (Q.Name == "blindmonkqtwo" && ReturnQBuff().Distance(target) <= 600 && target.HasQBuff())
                        {
                            Q2.Cast();
                        }
                    }
                    break;

                case InsecComboStepSelect.Wgapclose:

                    if (myHero.Distance(target) < WardRange)
                    {
                        WardJumper.WardJump(GetInsecPos(target), false, true, true);


                        if (FindBestWardItem() == null && R.IsReady() &&
                            InsecMenu.GetCheckBoxValue("insecnoward") &&
                            Flash.IsReady())
                        {
                            if ((GetInsecPos(target).Distance(myHero.Position) < FlashRange &&
                                 LastWard + 1000 < Environment.TickCount) || !W.IsReady())
                            {
                                Flash.Cast(GetInsecPos(target));
                            }
                        }
                    }
                    else if (myHero.Distance(target) < WardFlashRange)
                    {
                        WardJumper.WardJump(target.Position);

                        if (R.IsReady() && InsecMenu.GetCheckBoxValue("insecnoward") &&
                            Flash.IsReady())
                        {
                            if (myHero.Distance(target) < FlashRange - 25)
                            {
                                if (FindBestWardItem() == null || LastWard + 1000 < Environment.TickCount)
                                {
                                    Flash.Cast(GetInsecPos(target));
                                }
                            }
                        }
                    }
                    break;

                case InsecComboStepSelect.Pressr:
                    R.Cast(target);
                    break;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Normal drawings
        /// </summary>
        /// <param name="args"></param>
        private static void Drawing_OnDraw(EventArgs args)
        {
            var newTarget = InsecMenu.GetCheckBoxValue("insecMode") ? TargetSelector.SelectedTarget : TargetSelector.GetTarget(Q.Range, DamageType.Physical);


            if (Extensions.ClicksecEnabled && InsecMenu.GetCheckBoxValue("clickInsec"))
            {
                Drawing.DrawCircle(Extensions.InsecClickPos, 100, Color.DeepSkyBlue);
            }

            var playerPos = Drawing.WorldToScreen(ObjectManager.Player.Position);

            if (InsecMenu.GetKeyBindValue("insecflash"))
            {
                Drawing.DrawText(playerPos.X - 55, playerPos.Y + 40, Color.Yellow, "Flash Insec enabled");
            }

            if (DrawingsMenu.GetCheckBoxValue("drawinseclines") && R.IsReady())
            {
                if (newTarget != null && newTarget.IsVisible && newTarget.IsValidTarget() && !newTarget.IsDead && myHero.Distance(newTarget) < 3000)
                {
                    Vector2 targetPos = Drawing.WorldToScreen(newTarget.Position);
                    Drawing.DrawLine(
                        Extensions.InsecLinePos.X,
                        Extensions.InsecLinePos.Y,
                        targetPos.X,
                        targetPos.Y,
                        3,
                        Color.Gold);

                    Drawing.DrawText(
                        Drawing.WorldToScreen(newTarget.Position).X - 40,
                        Drawing.WorldToScreen(newTarget.Position).Y + 10,
                        Color.White,
                        "Selected Target");

                    Drawing.DrawCircle(Extensions.GetInsecPos(newTarget), 100, Color.DeepSkyBlue);
                }
            }

            if (!DrawingsMenu.GetCheckBoxValue("drawsenabled"))
            {
                return;
            }



            if (WardJumpMenu.GetKeyBindValue("wardjump") && DrawingsMenu.GetCheckBoxValue("drawwardjump"))
            {
                Drawing.DrawCircle(Extensions.JumpPos.To3D(), 20, Color.Red);
                Drawing.DrawCircle(myHero.Position, 600, Color.Red);
            }
            var readyDraw = DrawingsMenu.GetCheckBoxValue("readyDraw");

            if (DrawingsMenu.GetCheckBoxValue("qDraw") && readyDraw ? Q.IsReady() : DrawingsMenu.GetCheckBoxValue("qDraw"))
            {
                Circle.Draw(QColorSlide.GetSharpColor(), Q.Range, 1f, Player.Instance);
            }

            if (DrawingsMenu.GetCheckBoxValue("wDraw") && readyDraw ? W.IsReady() : DrawingsMenu.GetCheckBoxValue("wDraw"))
            {
                Circle.Draw(WColorSlide.GetSharpColor(), W.Range, 1f, Player.Instance);
            }

            if (DrawingsMenu.GetCheckBoxValue("eDraw") && readyDraw ? E.IsReady() : DrawingsMenu.GetCheckBoxValue("eDraw"))
            {
                Circle.Draw(EColorSlide.GetSharpColor(), E.Range, 1f, Player.Instance);
            }

            if (DrawingsMenu.GetCheckBoxValue("rDraw") && readyDraw ? R.IsReady() : DrawingsMenu.GetCheckBoxValue("rDraw"))
            {
                Circle.Draw(RColorSlide.GetSharpColor(), R.Range, 1f, Player.Instance);
            }
        }