/// <summary>
        ///     Performs the orbwalking process on another <see cref="AttackableUnit" />
        /// </summary>
        /// <param name="mode"><see cref="OrbwalkerMode" /> mode</param>
        /// <param name="target"><see cref="AttackableUnit" /> target</param>
        public void PerformMode(OrbwalkerMode mode, AttackableUnit target = null)
        {
            if (CanAttack())
            {
                switch (mode)
                {
                case OrbwalkerMode.Combo:
                    PerformModeCombo(target);
                    return;

                case OrbwalkerMode.LaneClear:
                    PerformModeLaneClear(target);
                    return;

                case OrbwalkerMode.LaneFreeze:
                    PerformModeLaneFreeze();
                    return;

                case OrbwalkerMode.LastHit:
                    PerformModeLastHit();
                    return;

                case OrbwalkerMode.Mixed:
                    PerformModeMixed();
                    return;
                }
            }

            if (mode != OrbwalkerMode.None && CanMove())
            {
                MoveTo(Cursor.Position.ToVector3());
            }
        }
示例#2
0
        /// <summary>
        ///     The is the spell active method.
        /// </summary>
        /// <param name="spellSlot">
        ///     The spell slot.
        /// </param>
        /// <param name="orbwalkingMode">
        ///     The orbwalking mode.
        /// </param>
        /// <returns>
        ///     <see cref="bool" />
        /// </returns>
        private static bool IsSpellActive(SpellSlot spellSlot, OrbwalkerMode orbwalkingMode)
        {
            if (Orbwalker.Implementation.GetActiveMode() != orbwalkingMode) //slot
            {
                return(false);
            }

            try
            {
                var orbwalkerModeLower = Orbwalker.ModeName.ToLower();
                var spellSlotNameLower = spellSlot.ToString().ToLower();

                if (orbwalkerModeLower.Equals("lasthit") &&
                    !spellSlotNameLower.Equals("q") || orbwalkerModeLower.Equals("mixed") && spellSlotNameLower.Equals("e") ||
                    orbwalkerModeLower.Equals("combo") && spellSlotNameLower.Equals("e"))
                {
                    return(false);
                }

                return(MyMenu.RootMenu[orbwalkerModeLower + spellSlotNameLower + "use"].Enabled &&
                       MyMenu.RootMenu[orbwalkerModeLower + spellSlotNameLower + "mana"].As <MenuSlider>().Value
                       <= ObjectManager.GetLocalPlayer().ManaPercent());
            }
            catch (Exception e)
            {
                Logging.AddEntry(LoggingEntryType.Error, "@SpellManager.cs: Can not get spell active state for slot {0} - {1}", spellSlot.ToString(), e);
                throw;
            }
        }
示例#3
0
        private static void PreliminaryQCheck(Obj_AI_Base target, OrbwalkerMode mode)
        {
            ////TODO Try to reset AA faster by doing Q against a wall if possible

            if (spells[SpellSlot.Q].IsEnabledAndReady(mode))
            {
                if (VHRMenu["dz191.vhr.misc"]["dz191.vhr.misc.tumble"]["smartq"].GetValue <MenuBool>().Value&& GetQEPosition() != Vector3.Zero)
                {
                    UseTumble(GetQEPosition(), target);

                    DelayAction.Add(
                        (int)(Game.Ping / 2f + spells[SpellSlot.Q].Delay * 1000 + 300f / 1200f + 50f), () =>
                    {
                        if (!spells[SpellSlot.Q].IsReady())
                        {
                            spells[SpellSlot.E].Cast(target);
                        }
                    });
                }
                else
                {
                    var QWallPosition = GetQWallPosition((Obj_AI_Hero)target);
                    if (QWallPosition != Vector3.Zero)
                    {
                        Tumble(QWallPosition, target);
                    }
                    else
                    {
                        UseTumble(target);
                    }
                }
            }
        }
示例#4
0
        public static bool IsEnabledAndReady(this Spell spell, OrbwalkerMode mode)
        {
            var modeString    = mode.ToString().ToLowerInvariant();
            var EnabledInMenu =
                VHR.VHRMenu[string.Format("dz191.vhr.{0}", modeString)][
                    string.Format("Use{0}", spell.Slot.GetStringFromSlot())].GetValue <MenuBool>().Value;

            var Ready = spell.IsReady();

            var ManaManagerCheck = ObjectManager.Player.ManaPercent >= VHR.VHRMenu[string.Format("dz191.vhr.{0}", modeString)][
                string.Format("{0}Mana", spell.Slot.GetStringFromSlot())].GetValue <MenuSlider>().Value;

            return(EnabledInMenu && Ready && ManaManagerCheck);
        }
        /// <summary>
        ///     Returns the attackable target that came out prioritized.
        /// </summary>
        /// <returns>
        ///     <see cref="AttackableUnit" />
        /// </returns>
        public static AttackableUnit GetTarget(OrbwalkerMode mode, float distance = -1f)
        {
            Obj_AI_Minion[] minions = null;
            Obj_AI_Minion   cannon  = null;

            distance = (System.Math.Abs(distance - (-1f)) < float.Epsilon) ? _player.GetRealAutoAttackRange() : distance;

            if (mode == OrbwalkerMode.LaneClear || mode == OrbwalkerMode.LaneFreeze || mode == OrbwalkerMode.LastHit ||
                mode == OrbwalkerMode.Mixed)
            {
                minions = ObjectManager.Get <Obj_AI_Minion>().Where(m => m.IsValidTarget(distance)).ToArray();
                cannon  = minions.FirstOrDefault(m => m.SkinName.Contains("Siege") || m.SkinName.Contains("Super"));
            }

            if (mode == OrbwalkerMode.Combo)
            {
                var target = ObjectHandler.GetFast <Obj_AI_Hero>().OrderBy(t => t.Distance(_player.Position)).FirstOrDefault();
                if (target.IsValidTarget(_player.GetRealAutoAttackRange()))
                {
                    return(target); // TODO: Replace with target selector
                }
            }
            if (mode == OrbwalkerMode.LaneClear || mode == OrbwalkerMode.LastHit || mode == OrbwalkerMode.LaneFreeze ||
                mode == OrbwalkerMode.Mixed)
            {
                // TODO: Add last hit here
            }
            if (mode == OrbwalkerMode.LaneClear)
            {
                if (minions != null)
                {
                    if (!ShouldWait())
                    {
                        if (cannon.IsValidTarget() &&
                            Health.GetHealthPrediction(cannon, (int)(_player.AttackDelay * 1000)) <=
                            _player.TotalAttackDamage)
                        {
                            return(cannon);
                        }
                        return(minions.OrderBy(m => m.Health).FirstOrDefault());
                    }
                }
            }

            return(null);
        }
示例#6
0
        public MenuConfig()
        {
            var mainMenu = new Menu(string.Empty, $"Adept AIO - {Global.Player.ChampionName}", true);

            mainMenu.Attach();
            Global.Orbwalker.Attach(mainMenu);
            FleeOrbwalkerMode = new OrbwalkerMode("Flee", KeyCode.A, null, Flee.OnKeyPressed);
            Global.Orbwalker.AddMode(FleeOrbwalkerMode);

            CondemnFlashOrbwalkerMode = new OrbwalkerMode("Condemn Flash", KeyCode.T, null, CondemnFlash.OnKeyPressed);
            Global.Orbwalker.AddMode(CondemnFlashOrbwalkerMode);

            Gapcloser.Attach(mainMenu, "Anti Gapcloser");

            Combo = new Menu("VayneCombo", "Combo")
            {
                new MenuList("Q",
                             "Q Mode",
                             new[]
                {
                    "After Auto",
                    "Engage"
                },
                             0),
                new MenuList("Mode",
                             "Q To:",
                             new[]
                {
                    "Cursor",
                    "Side"
                },
                             1),
                new MenuBool("ToE", "Force Q To E Pos"),
                new MenuBool("Flash", "Flash E To Ally Turret"),
                new MenuBool("W", "Focus Targets With W Stacks"),
                new MenuBool("E", "Use E"),
                new MenuBool("R", "Use R"),
                new MenuBool("Killable", "Only Use R When Killable"),
                new MenuSlider("Count", "Use R If >= X Enemies Count", 2, 1, 5),
                new MenuSeperator("Whitelist")
            };

            foreach (var enemy in GameObjects.EnemyHeroes)
            {
                Combo.Add(new MenuBool(enemy.ChampionName, $"Use E On: {enemy.ChampionName}"));
            }

            Harass = new Menu("VayneHarass", "Harass")
            {
                new MenuList("Q",
                             "Q Mode",
                             new[]
                {
                    "After Auto",
                    "Engage"
                },
                             0),
                new MenuList("Mode",
                             "Q To:",
                             new[]
                {
                    "Cursor",
                    "Side"
                },
                             1),
                new MenuBool("E", "Use E"),
                new MenuSeperator("Whitelist")
            };

            foreach (var enemy in GameObjects.EnemyHeroes)
            {
                Harass.Add(new MenuBool(enemy.ChampionName, $"Use E On: {enemy.ChampionName}"));
            }

            LaneClear = new Menu("VayneLaneClear", "Lane")
            {
                new MenuList("Q",
                             "Q Mode",
                             new[]
                {
                    "After Auto",
                    "Engage",
                    "Disabled"
                },
                             0),
                new MenuList("QMode",
                             "Q To:",
                             new[]
                {
                    "Cursor",
                    "Side"
                },
                             0),
                new MenuBool("Turret", "Q After AA Turret", false)
            };

            JungleClear = new Menu("VayneJungle", "Jungle")
            {
                new MenuList("Q",
                             "Q Mode",
                             new[]
                {
                    "After Auto",
                    "Engage"
                },
                             0),
                new MenuList("Mode", "Q To:", new[] { "Cursor", "Side" }, 0),
                new MenuBool("E", "Use E")
            };

            Lasthit = new Menu("VayneLasthit", "Lasthit")
            {
                new MenuBool("Q", "Use Q After AA")
            };

            Killsteal = new Menu("VayneKillsteal", "Killsteal")
            {
                new MenuBool("Q", "Q -> AA"),
                new MenuBool("E", "Use E")
            };

            Misc = new Menu("VayneMisc", "Miscellaneous")
            {
                new MenuBool("Q", "Anti Gapcloser | Q"),
                new MenuBool("E", "Anti Gapcloser | E")
            };

            Drawings = new Menu("VayneDrawManager", "DrawManager")
            {
                new MenuSlider("Segments", "Segments", 100, 10, 150).SetToolTip("Smoothness of the circles"),
                new MenuBool("Dmg", "Damage"),
                new MenuBool("Q", "Draw Q Range"),
                new MenuBool("Pred", "Draw E Prediction")
            };

            foreach (var menu in new List <Menu>
            {
                Combo,
                Harass,
                LaneClear,
                JungleClear,
                Lasthit,
                Killsteal,
                Misc,
                Drawings,
                MenuShortcut.Credits
            })
            {
                mainMenu.Add(menu);
            }
        }
示例#7
0
        private void Orbwalker_OnAction(object sender, LeagueSharp.SDK.Core.Orbwalker.OrbwalkerActionArgs e)
        {
            if (!Enable)
            {
                return;
            }
            if (e.Type == OrbwalkerType.AfterAttack && e.Target.IsValidTarget())
            {
                if (Variables.TickCount - yellowtick <= 1500)
                {
                    return;
                }
                if (Orb.ActiveMode == OrbwalkerMode.Orbwalk && comboqafterattack)
                {
                    if (e.Target.IsValidTarget() && !e.Target.IsZombie)
                    {
                        var target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
                        if (target.IsValidTarget() && !target.IsZombie)
                        {
                            Q.Cast(Q.GetPrediction(target).CastPosition);
                        }
                    }
                }
                if (Orb.ActiveMode == OrbwalkerMode.Hybrid && harassqafterattack && Player.ManaPercent >= harassmana)
                {
                    if (e.Target.IsValidTarget() && !e.Target.IsZombie)
                    {
                        var target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
                        if (target.IsValidTarget() && !target.IsZombie)
                        {
                            Q.Cast(Q.GetPrediction(target).CastPosition);
                        }
                    }
                }
            }
            var mode = new OrbwalkerMode[] { OrbwalkerMode.Hybrid, OrbwalkerMode.Orbwalk };

            if (e.Type == OrbwalkerType.BeforeAttack)
            {
                if (IsPickingCard && mode.Contains(Orb.ActiveMode))
                {
                    e.Process = false;
                }
                else if (HasACard != "none" && !GameObjects.EnemyHeroes.Contains(e.Target) && Orb.ActiveMode == OrbwalkerMode.Hybrid)
                {
                    e.Process = false;
                    var target = TargetSelector.GetTarget(Player.GetRealAutoAttackRange(), DamageType.Magical);
                    if (target.IsValidTarget() && !target.IsZombie)
                    {
                        Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                    }
                }
                else if (HasACard != "none" && HasRed && Orb.ActiveMode == OrbwalkerMode.LaneClear)
                {
                    e.Process = false;
                    IDictionary <Obj_AI_Minion, int> creeps = new Dictionary <Obj_AI_Minion, int>();
                    foreach (var x in GameObjects.EnemyMinions.Where(x => x.InAutoAttackRange()))
                    {
                        creeps.Add(x, GameObjects.EnemyMinions.Count(y => y.IsValidTarget() && y.Distance(x.Position) <= 300));
                    }
                    foreach (var x in GameObjects.Jungle.Where(x => x.InAutoAttackRange()))
                    {
                        creeps.Add(x, GameObjects.Jungle.Count(y => y.IsValidTarget() && y.Distance(x.Position) <= 300));
                    }
                    var minion = creeps.OrderByDescending(x => x.Value).FirstOrDefault();
                    Player.IssueOrder(GameObjectOrder.AttackUnit, minion.Key);
                }
            }
            if (e.Type == OrbwalkerType.OnAttack)
            {
                if (HasGold)
                {
                    yellowtick = Variables.TickCount;
                }
            }
        }
示例#8
0
        public static void CastSpell(SpellSlot slot, OrbwalkerMode mode)
        {
            if (slot == SpellSlot.Unknown || ObjectManager.Player.Spellbook.CanUseSpell(slot) != SpellState.Ready)
            {
                return;
            }

            if (mode == OrbwalkerMode.LastHit || mode == OrbwalkerMode.None)
            {
                return;
            }

            var castType = GetSpellType(slot);

            if (castType == CastType.Unknow)
            {
                return;
            }

            if (slot == SpellSlot.Q)
            {
                if (mode == OrbwalkerMode.Combo)
                {
                    if (MenuWrapper.Q.Combo.Enabled)
                    {
                        var target = TargetSelector.GetTarget(Q.Range);
                        if (target != null && target.IsValidTarget(Q.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                Q.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                Q.CastIfHitchanceEquals(target, Q.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                Q.CastIfHitchanceEquals(target, Q.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.Harass)
                {
                    if (MenuWrapper.Q.Harass.Enabled)
                    {
                        var target = TargetSelector.GetTarget(Q.Range);
                        if (target != null && target.IsValidTarget(Q.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                Q.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                Q.CastIfHitchanceEquals(target, Q.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                Q.CastIfHitchanceEquals(target, Q.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.LaneClear)
                {
                    if (MenuWrapper.Q.JungleClear.Enabled)
                    {
                        var target = GameObjects.Jungle.Where(x => x.IsValidTarget(Q.Range) && x.IsJungle())
                                     .OrderByDescending(x => x.MaxHealth).FirstOrDefault();
                        if (target != null && target.IsValidTarget(Q.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                Q.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                Q.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                            else if (castType == CastType.Linear)
                            {
                                Q.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                        }
                    }
                }
            }
            else if (slot == SpellSlot.W)
            {
                if (mode == OrbwalkerMode.Combo)
                {
                    if (MenuWrapper.W.Combo.Enabled)
                    {
                        var target = TargetSelector.GetTarget(W.Range);
                        if (target != null && target.IsValidTarget(W.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                W.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                W.CastIfHitchanceEquals(target, W.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                W.CastIfHitchanceEquals(target, W.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.Harass)
                {
                    if (MenuWrapper.W.Harass.Enabled)
                    {
                        var target = TargetSelector.GetTarget(W.Range);
                        if (target != null && target.IsValidTarget(W.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                W.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                W.CastIfHitchanceEquals(target, W.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                W.CastIfHitchanceEquals(target, W.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.LaneClear)
                {
                    if (MenuWrapper.W.JungleClear.Enabled)
                    {
                        var target = GameObjects.Jungle.Where(x => x.IsValidTarget(W.Range) && x.IsJungle())
                                     .OrderByDescending(x => x.MaxHealth).FirstOrDefault();
                        if (target != null && target.IsValidTarget(W.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                W.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                W.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                            else if (castType == CastType.Linear)
                            {
                                W.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                        }
                    }
                }
            }
            else if (slot == SpellSlot.E)
            {
                if (mode == OrbwalkerMode.Combo)
                {
                    if (MenuWrapper.E.Combo.Enabled)
                    {
                        var target = TargetSelector.GetTarget(E.Range);
                        if (target != null && target.IsValidTarget(E.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                E.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                E.CastIfHitchanceEquals(target, E.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                E.CastIfHitchanceEquals(target, E.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.Harass)
                {
                    if (MenuWrapper.E.Harass.Enabled)
                    {
                        var target = TargetSelector.GetTarget(E.Range);
                        if (target != null && target.IsValidTarget(E.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                E.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                E.CastIfHitchanceEquals(target, E.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                E.CastIfHitchanceEquals(target, E.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.LaneClear)
                {
                    if (MenuWrapper.E.JungleClear.Enabled)
                    {
                        var target = GameObjects.Jungle.Where(x => x.IsValidTarget(E.Range) && x.IsJungle())
                                     .OrderByDescending(x => x.MaxHealth).FirstOrDefault();
                        if (target != null && target.IsValidTarget(E.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                E.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                E.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                            else if (castType == CastType.Linear)
                            {
                                E.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                        }
                    }
                }
            }
            else if (slot == SpellSlot.R)
            {
                if (mode == OrbwalkerMode.Combo)
                {
                    if (MenuWrapper.R.Combo.Enabled)
                    {
                        var target = TargetSelector.GetTarget(R.Range);
                        if (target != null && target.IsValidTarget(R.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                R.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                R.CastIfHitchanceEquals(target, R.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                R.CastIfHitchanceEquals(target, R.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.Harass)
                {
                    if (MenuWrapper.R.Harass.Enabled)
                    {
                        var target = TargetSelector.GetTarget(R.Range);
                        if (target != null && target.IsValidTarget(R.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                R.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                R.CastIfHitchanceEquals(target, R.MinHitChance);
                            }
                            else if (castType == CastType.Linear)
                            {
                                R.CastIfHitchanceEquals(target, R.MinHitChance);
                            }
                        }
                    }
                }
                else if (mode == OrbwalkerMode.LaneClear)
                {
                    if (MenuWrapper.R.JungleClear.Enabled)
                    {
                        var target = GameObjects.Jungle.Where(x => x.IsValidTarget(R.Range) && x.IsJungle())
                                     .OrderByDescending(x => x.MaxHealth).FirstOrDefault();
                        if (target != null && target.IsValidTarget(R.Range))
                        {
                            if (castType == CastType.SelfCast)
                            {
                                R.Cast();
                            }
                            else if (castType == CastType.Circle)
                            {
                                R.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                            else if (castType == CastType.Linear)
                            {
                                R.CastIfHitchanceEquals(target, HitChance.Medium);
                            }
                        }
                    }
                }
            }
        }
示例#9
0
        private static void CastFlayPull(Obj_AI_Hero target, OrbwalkerMode Mode)
        {
            if (target.IsValidTarget(spells[Spells.E].Range) && RootMenu[MenuPrefix + Mode.ToString().ToLowerInvariant()]["useE"].GetValue<MenuBool>().Value)
            {
                var targetPrediction = Movement.GetPrediction(target, 0.25f);

                    var finalPosition =
                        targetPrediction.UnitPosition.Extend(
                            ObjectManager.Player.ServerPosition,
                            ObjectManager.Player.Distance(targetPrediction.UnitPosition) + 100f
                            );
                    spells[Spells.E].Cast(finalPosition);
            }
        }
示例#10
0
        public MenuConfig()
        {
            var mainMenu = new Menu(string.Empty, $"Adept AIO - {Global.Player.ChampionName}", true);

            mainMenu.Attach();

            FleeMode  = new OrbwalkerMode("Flee", KeyCode.A, null, Flee.OnKeyPressed);
            BurstMode = new OrbwalkerMode("Burst", KeyCode.T, () => Global.TargetSelector.GetSelectedTarget(), Burst.OnUpdate);

            BurstMode.ModeBehaviour.Invoke();
            BurstMode.GetTargetImplementation.Invoke();

            Orbwalker.Implementation.AddMode(BurstMode);
            Orbwalker.Implementation.AddMode(FleeMode);

            Orbwalker.Implementation.Attach(mainMenu);
            Gapcloser.Attach(mainMenu, "Anti Gapcloser");

            Combo = new Menu("RivenCombo", "Combo")
            {
                //new MenuList("Mode", "Combo Mode: ", new[] {"Automatic", "Max Damage", "Fast"}, 0),
                new MenuSlider("Change", "Fast Combo When DMG% (target) >= ", 70),
                new MenuList("Chase",
                             "Chase Mode",
                             new[]
                {
                    "Disabled",
                    "Q",
                    "Q & E"
                },
                             0),
                new MenuBool("Flash", "Flash").SetToolTip("Will flash when an target is safely killable."),
                new MenuSliderBool("Check", "Don't Use R1 If X (% HP) <=", true, 20),
                new MenuList("R",
                             "R1 Mode: ",
                             new[]
                {
                    "Never",
                    "Always",
                    "Killable"
                },
                             2),
                new MenuBool("R2", "Use R2")
            };

            BurstMenu = new Menu("RivenBurst", "Burst")
            {
                new MenuSeperator("Note", "Select Target To Burst"),
                new MenuList("Mode",
                             "Burst Mode:",
                             new[]
                {
                    "Automatic",
                    "The Shy",
                    "Execution"
                },
                             0),
                new MenuSeperator("endmylife")
            };
            foreach (var hero in GameObjects.EnemyHeroes)
            {
                BurstMenu.Add(new MenuBool(hero.ChampionName, "Burst: " + hero.ChampionName));
            }

            Harass = new Menu("RivenHarass", "Harass")
            {
                new MenuList("Mode",
                             "Mode: ",
                             new[]
                {
                    "Automatic",
                    "Semi Combo",
                    "Q3 To Safety",
                    "Q3 To Target"
                },
                             0),
                new MenuList("Dodge",
                             "Dodge: ",
                             new[]
                {
                    "Turret",
                    "Cursor",
                    "Away From Target"
                },
                             0),
                new MenuSeperator("Whitelist", "Whitelist")
            };
            foreach (var hero in GameObjects.EnemyHeroes)
            {
                Harass.Add(new MenuBool(hero.ChampionName, "Harass: " + hero.ChampionName));
            }

            Lane = new Menu("RivenLane", "Lane")
            {
                new MenuBool("Check", "Safe Clear").SetToolTip("Wont clear when enemies are nearby"),
                new MenuBool("Q", "Q"),
                new MenuBool("W", "W"),
                new MenuBool("E", "E")
            };

            Jungle = new Menu("RivenJungle", "Jungle")
            {
                new MenuBool("Check", "Safe Clear").SetToolTip("Wont clear when enemies are nearby"),
                new MenuBool("Q", "Q"),
                new MenuBool("W", "W"),
                new MenuBool("E", "E")
            };

            Killsteal = new Menu("RivenKillsteal", "Killsteal")
            {
                new MenuBool("Ignite", "Ignite"),
                new MenuBool("Q", "Q"),
                new MenuBool("W", "W"),
                new MenuBool("R2", "R2")
            };

            Miscellaneous = new Menu("RivenMiscellaneous", "Miscellaneous")
            {
                new MenuBool("Walljump", "Walljump During Flee"),
                new MenuBool("Force", "Spam Q1, Q2 During Flee"),
                new MenuBool("Active", "Keep Q Active"),
                new MenuBool("Interrupt", "Dodge Certain Spells")
            };

            Drawings = new Menu("RivenDrawManager", "DrawManager")
            {
                new MenuSlider("Segments", "Segments", 100, 10, 150).SetToolTip("Smoothness of the circles"),
                new MenuBool("Dmg", "Damage"),
                new MenuBool("Mouse", "Mouse Helper").SetToolTip("Shows where to put mouse to properly Q AA chase the target"),
                new MenuBool("Target", "Draw Line At Target"),
                new MenuBool("Engage", "Engage Range"),
                new MenuBool("R2", "R2 Range", false),
                new MenuBool("Pattern", "Current Pattern")
            };

            foreach (var menu in new List <Menu>
            {
                Combo,
                BurstMenu,
                Harass,
                Lane,
                Jungle,
                Killsteal,
                Drawings,
                Miscellaneous,
                MenuShortcut.Credits
            })
            {
                mainMenu.Add(menu);
            }
        }
示例#11
0
 public static bool CanUseSkill(OrbwalkerMode mode)
 {
     return Orbwalker.CanMove && (!Orbwalker.CanAttack || Orbwalker.GetTarget(mode) == null);
 }
示例#12
0
        public void Init()
        {
            var spellConfig = new SpellConfig();

            spellConfig.Load();

            var insecManager = new InsecManager(spellConfig);

            var wardtracker = new WardTracker(spellConfig);
            var wardmanager = new WardManager(wardtracker);

            var wardjump  = new WardJump(wardtracker, wardmanager, spellConfig);
            var insec     = new Insec(wardtracker, wardmanager, spellConfig, insecManager);
            var kickFlash = new KickFlash(spellConfig, insecManager);

            var combo = new Combo(wardmanager, spellConfig, wardtracker);

            var harass      = new Harass(wardmanager, spellConfig);
            var jungle      = new JungleClear(wardmanager, spellConfig);
            var lane        = new LaneClear(spellConfig);
            var lasthit     = new Lasthit(spellConfig);
            var killsteal   = new Killsteal(spellConfig);
            var drawManager = new DrawManager(spellConfig, insecManager, new Dmg(spellConfig));

            var mainmenu = new Menu("main", "Adept AIO", true);

            mainmenu.Attach();

            var insecMode     = new OrbwalkerMode("Insec", KeyCode.T, null, insec.OnKeyPressed);
            var wardjumpMode  = new OrbwalkerMode("Wardjump", KeyCode.G, null, wardjump.OnKeyPressed);
            var kickFlashMode = new OrbwalkerMode("Kick Flash", KeyCode.A, null, kickFlash.OnKeyPressed);

            insecMode.MenuItem.OnValueChanged     += (sender, args) => insec.Enabled = args.GetNewValue <MenuKeyBind>().Value;
            wardjumpMode.MenuItem.OnValueChanged  += (sender, args) => wardjump.Enabled = args.GetNewValue <MenuKeyBind>().Value;
            kickFlashMode.MenuItem.OnValueChanged += (sender, args) => kickFlash.Enabled = args.GetNewValue <MenuKeyBind>().Value;

            Global.Orbwalker.AddMode(insecMode);
            Global.Orbwalker.AddMode(wardjumpMode);
            Global.Orbwalker.AddMode(kickFlashMode);
            Global.Orbwalker.Attach(mainmenu);

            var insecMenu     = new Menu("Insec", "Insec");
            var insecBk       = new MenuKeyBind("BK", "Bubba Kush Toggle", KeyCode.L, KeybindType.Toggle);
            var insecF        = new MenuBool("Flash", "Enable Flash");
            var insecObject   = new MenuBool("Object", "Use Q On Minions").SetToolTip("Uses Q to gapclose to every minion");
            var insecQLast    = new MenuBool("Last", "Use Q After Insec").SetToolTip("Only possible if no minions near target");
            var insecPosition = new MenuList("Position", "Insec Position", new[] { "Ally Turret", "Ally Hero" }, 0);
            var insecKick     = new MenuList("Kick", "Kick Type: ", new[] { "Flash R", "R Flash" }, 1);

            insecMenu.Add(insecBk);
            insecMenu.Add(insecF);
            insecMenu.Add(insecObject);
            insecMenu.Add(insecQLast);
            insecMenu.Add(insecPosition);
            insecMenu.Add(insecKick);
            mainmenu.Add(insecMenu);

            Temp.IsBubbaKush                = insec.Bk = insecMenu["BK"].Enabled;
            insec.FlashEnabled              = insecMenu["Flash"].Enabled;
            insec.ObjectEnabled             = insecMenu["Object"].Enabled;
            insec.QLast                     = insecMenu["Last"].Enabled;
            insecManager.InsecPositionValue = insecMenu["Position"].Value;
            insecManager.InsecKickValue     = insecMenu["Kick"].Value;

            insecBk.OnValueChanged += (sender, args) =>
            {
                insec.Bk         = args.GetNewValue <MenuKeyBind>().Value;
                Temp.IsBubbaKush = args.GetNewValue <MenuKeyBind>().Value;
            };

            insecF.OnValueChanged        += (sender, args) => insec.FlashEnabled = args.GetNewValue <MenuBool>().Value;
            insecObject.OnValueChanged   += (sender, args) => insec.ObjectEnabled = args.GetNewValue <MenuBool>().Value;
            insecQLast.OnValueChanged    += (sender, args) => insec.QLast = args.GetNewValue <MenuBool>().Value;
            insecPosition.OnValueChanged += (sender, args) => insecManager.InsecPositionValue = args.GetNewValue <MenuList>().Value;
            insecKick.OnValueChanged     += (sender, args) => insecManager.InsecKickValue = args.GetNewValue <MenuList>().Value;

            var comboMenu   = new Menu("Combo", "Combo");
            var comboTurret = new MenuBool("Turret", "Don't Q2 Into Turret");
            var comboQ      = new MenuBool("Q", "Use Q");
            var comboQ2     = new MenuBool("Q2", "Use Q2");
            var comboW      = new MenuBool("W", "Use W");
            var comboWard   = new MenuBool("Ward", "Use Wards");
            var comboE      = new MenuBool("E", "Use E");

            foreach (var b in new List <MenuBool>
            {
                comboTurret,
                comboQ,
                comboQ2,
                comboW,
                comboWard,
                comboE
            })
            {
                comboMenu.Add(b);
            }
            mainmenu.Add(comboMenu);

            combo.TurretCheckEnabled = comboMenu["Turret"].Enabled;
            combo.Q1Enabled          = comboMenu["Q"].Enabled;
            combo.Q2Enabled          = comboMenu["Q2"].Enabled;
            combo.WEnabled           = comboMenu["W"].Enabled;
            combo.WardEnabled        = comboMenu["Ward"].Enabled;
            combo.EEnabled           = comboMenu["E"].Enabled;

            comboTurret.OnValueChanged += (sender, args) => combo.TurretCheckEnabled = args.GetNewValue <MenuBool>().Value;
            comboQ.OnValueChanged      += (sender, args) => combo.Q1Enabled = args.GetNewValue <MenuBool>().Value;
            comboQ2.OnValueChanged     += (sender, args) => combo.Q2Enabled = args.GetNewValue <MenuBool>().Value;
            comboW.OnValueChanged      += (sender, args) => combo.WEnabled = args.GetNewValue <MenuBool>().Value;
            comboWard.OnValueChanged   += (sender, args) => combo.WardEnabled = args.GetNewValue <MenuBool>().Value;
            comboE.OnValueChanged      += (sender, args) => combo.EEnabled = args.GetNewValue <MenuBool>().Value;

            var harassMenu = new Menu("Harass", "Harass");
            var harassQ    = new MenuBool("Q", "Use Q");
            var harassQ2   = new MenuBool("Q2", "Use Q2");
            var harassMode = new MenuList("Mode", "W Mode: ", new[] { "Away", "W Self" }, 0);
            var harassE    = new MenuBool("E", "Use E");
            var harassE2   = new MenuBool("E2", "Use E2");

            harassMenu.Add(harassQ);
            harassMenu.Add(harassQ2);
            harassMenu.Add(harassMode);
            harassMenu.Add(harassE);
            harassMenu.Add(harassE2);
            mainmenu.Add(harassMenu);

            harass.Q1Enabled = harassMenu["Q"].Enabled;
            harass.Q2Enabled = harassMenu["Q2"].Enabled;
            harass.Mode      = harassMenu["Mode"].Value;
            harass.EEnabled  = harassMenu["E"].Enabled;
            harass.E2Enabled = harassMenu["E2"].Enabled;

            harassQ.OnValueChanged    += (sender, args) => harass.Q1Enabled = args.GetNewValue <MenuBool>().Value;
            harassQ2.OnValueChanged   += (sender, args) => harass.Q2Enabled = args.GetNewValue <MenuBool>().Value;
            harassMode.OnValueChanged += (sender, args) => harass.Mode = args.GetNewValue <MenuList>().Value;
            harassE.OnValueChanged    += (sender, args) => harass.EEnabled = args.GetNewValue <MenuBool>().Value;
            harassE2.OnValueChanged   += (sender, args) => harass.E2Enabled = args.GetNewValue <MenuBool>().Value;

            var jungleMenu  = new Menu("Jungle", "Jungle");
            var jungleSteal = new MenuBool("Steal", "Steal Legendary");
            var jungleSmite = new MenuBool("Smite", "Smite Big Mobs");
            var jungleBlue  = new MenuBool("Blue", "Smite Blue Buff");
            var jungleQ     = new MenuBool("Q", "Q");
            var jungleW     = new MenuBool("W", "W");
            var jungleE     = new MenuBool("E", "E");

            foreach (var b in new List <MenuBool>
            {
                jungleSteal,
                jungleSmite,
                jungleBlue,
                jungleQ,
                jungleW,
                jungleE
            })
            {
                jungleMenu.Add(b);
            }
            mainmenu.Add(jungleMenu);

            jungle.StealEnabled = jungleMenu["Steal"].Enabled;
            jungle.SmiteEnabled = jungleMenu["Smite"].Enabled;
            jungle.BlueEnabled  = jungleMenu["Blue"].Enabled;
            jungle.Q1Enabled    = jungleMenu["Q"].Enabled;
            jungle.WEnabled     = jungleMenu["W"].Enabled;
            jungle.EEnabled     = jungleMenu["E"].Enabled;

            jungleSteal.OnValueChanged += (sender, args) => jungle.StealEnabled = args.GetNewValue <MenuBool>().Value;
            jungleSmite.OnValueChanged += (sender, args) => jungle.Q1Enabled = args.GetNewValue <MenuBool>().Value;
            jungleBlue.OnValueChanged  += (sender, args) => jungle.BlueEnabled = args.GetNewValue <MenuBool>().Value;
            jungleQ.OnValueChanged     += (sender, args) => jungle.Q1Enabled = args.GetNewValue <MenuBool>().Value;
            jungleW.OnValueChanged     += (sender, args) => jungle.WEnabled = args.GetNewValue <MenuBool>().Value;
            jungleE.OnValueChanged     += (sender, args) => jungle.EEnabled = args.GetNewValue <MenuBool>().Value;

            var laneMenu  = new Menu("Lane", "Lane");
            var laneCheck = new MenuBool("Check", "Don't Clear When Enemies Nearby");
            var laneQ     = new MenuBool("Q", "Q");
            var laneW     = new MenuBool("W", "W");
            var laneE     = new MenuBool("E", "E");

            foreach (var b in new List <MenuBool>
            {
                laneCheck,
                laneQ,
                laneW,
                laneE
            })
            {
                laneMenu.Add(b);
            }
            mainmenu.Add(laneMenu);

            lane.CheckEnabled = laneMenu["Check"].Enabled;
            lane.Q1Enabled    = laneMenu["Q"].Enabled;
            lane.WEnabled     = laneMenu["W"].Enabled;
            lane.EEnabled     = laneMenu["E"].Enabled;

            laneCheck.OnValueChanged += (sender, args) => lane.CheckEnabled = args.GetNewValue <MenuBool>().Value;
            laneQ.OnValueChanged     += (sender, args) => lane.Q1Enabled = args.GetNewValue <MenuBool>().Value;
            laneW.OnValueChanged     += (sender, args) => lane.WEnabled = args.GetNewValue <MenuBool>().Value;
            laneE.OnValueChanged     += (sender, args) => lane.EEnabled = args.GetNewValue <MenuBool>().Value;

            var lasthitMenu    = new Menu("Lasthit", "Lasthit");
            var lasthitEnabled = new MenuBool("Enabled", "Enabled");

            lasthitMenu.Add(lasthitEnabled);
            mainmenu.Add(lasthitMenu);
            lasthit.Enabled = lasthitMenu["Enabled"].Enabled;
            lasthitEnabled.OnValueChanged += (sender, args) => lasthit.Enabled = args.GetNewValue <MenuBool>().Value;

            var ksMenu   = new Menu("Killsteal", "Killsteal");
            var ksIgnite = new MenuBool("Ignite", "Ignite");
            var ksSmite  = new MenuBool("Smite", "Smite");
            var ksQ      = new MenuBool("Q", "Q");
            var ksE      = new MenuBool("E", "E");
            var ksR      = new MenuBool("R", "R");

            foreach (var b in new List <MenuBool>
            {
                ksIgnite, ksSmite, ksQ, ksE, ksR
            })
            {
                ksMenu.Add(b);
            }
            mainmenu.Add(ksMenu);

            killsteal.IgniteEnabled = ksMenu["Ignite"].Enabled;
            killsteal.SmiteEnabled  = ksMenu["Smite"].Enabled;
            killsteal.QEnabled      = ksMenu["Q"].Enabled;
            killsteal.EEnabled      = ksMenu["E"].Enabled;
            killsteal.REnabled      = ksMenu["R"].Enabled;

            ksIgnite.OnValueChanged += (sender, args) => killsteal.IgniteEnabled = args.GetNewValue <MenuBool>().Value;
            ksSmite.OnValueChanged  += (sender, args) => killsteal.SmiteEnabled = args.GetNewValue <MenuBool>().Value;
            ksQ.OnValueChanged      += (sender, args) => killsteal.QEnabled = args.GetNewValue <MenuBool>().Value;
            ksE.OnValueChanged      += (sender, args) => killsteal.EEnabled = args.GetNewValue <MenuBool>().Value;
            ksR.OnValueChanged      += (sender, args) => killsteal.REnabled = args.GetNewValue <MenuBool>().Value;

            var drawMenu     = new Menu("Draw", "Drawings");
            var drawSegments = new MenuSlider("Segments", "Segments", 100, 100, 200).SetToolTip("Smoothness of the circles");
            var drawPosition = new MenuBool("Position", "Insec Position");
            var drawQ        = new MenuBool("Q", "Q Range");

            drawMenu.Add(drawSegments);
            drawMenu.Add(drawPosition);
            drawMenu.Add(drawQ);
            mainmenu.Add(drawMenu);

            drawManager.QEnabled        = drawMenu["Q"].Enabled;
            drawManager.SegmentsValue   = drawMenu["Segments"].Value;
            drawManager.PositionEnabled = drawMenu["Position"].Enabled;

            drawSegments.OnValueChanged += (sender, args) => drawManager.SegmentsValue = args.GetNewValue <MenuSlider>().Value;
            drawPosition.OnValueChanged += (sender, args) => drawManager.PositionEnabled = args.GetNewValue <MenuBool>().Value;
            drawQ.OnValueChanged        += (sender, args) => drawManager.QEnabled = args.GetNewValue <MenuBool>().Value;

            Gapcloser.Attach(mainmenu, "Gapcloser");
            var gapcloser = new AntiGapcloser(spellConfig, wardmanager, wardtracker);

            Gapcloser.OnGapcloser += gapcloser.OnGapcloser;

            var manager = new Manager(combo, harass, jungle, lane, lasthit);

            Game.OnUpdate += manager.OnUpdate;
            Game.OnUpdate += killsteal.OnUpdate;

            Global.Orbwalker.PostAttack += manager.PostAttack;

            Render.OnRender  += drawManager.OnRender;
            Render.OnPresent += drawManager.RenerDamage;

            Obj_AI_Base.OnProcessSpellCast += insec.OnProcessSpellCast;
            Obj_AI_Base.OnProcessSpellCast += kickFlash.OnProcessSpellCast;
            Obj_AI_Base.OnProcessSpellCast += spellConfig.OnProcessSpellCast;

            GameObject.OnCreate += wardtracker.OnCreate;
        }
示例#13
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="Orbwalker" /> class.
        /// </summary>
        public Orbwalker()
        {
            #region Menu

            _menu = new Menu("CommonEx.Orbwalker", "Orbwalker");

            var drawingMenu = new Menu("Drawings", "Drawings");
            drawingMenu.Add(new MenuItem <MenuBool>("HoldZone", "Draw Hold Zone")
            {
                Value = new MenuBool()
            });
            drawingMenu.Add(new MenuItem <MenuBool>("AttackedMinion", "Draw Attacked Minion")
            {
                Value = new MenuBool(true) // thats redundant :S
            });
            drawingMenu.Add(new MenuItem <MenuBool>("AutoAttackRange", "Draw AA Range")
            {
                Value = new MenuBool(true)
            });
            _menu.Add(drawingMenu);

            _menu.Add(new MenuItem <MenuKeyBind>("Combo", "Combo")
            {
                Value = new MenuKeyBind(Keys.Space, KeyBindType.Press)
            });
            _menu.Add(new MenuItem <MenuKeyBind>("Harass", "Harass")
            {
                Value = new MenuKeyBind(Keys.C, KeyBindType.Press)
            });
            _menu.Add(new MenuItem <MenuKeyBind>("WaveClear", "Wave Clear")
            {
                Value = new MenuKeyBind(Keys.V, KeyBindType.Press)
            });
            _menu.Add(new MenuItem <MenuKeyBind>("LastHit", "Last Hit")
            {
                Value = new MenuKeyBind(Keys.X, KeyBindType.Press)
            });
            _menu.Add(new MenuItem <MenuKeyBind>("Freeze", "Freeze")
            {
                Value = new MenuKeyBind(Keys.F1, KeyBindType.Toggle)
            });

            Variables.LeagueSharpMenu.Add(_menu);

            _menu["Combo"].GetValue <MenuKeyBind>().ValueChanged +=
                (sender, args) =>
            {
                if (args.GetValue <MenuKeyBind>().Active)
                {
                    _activeMode = OrbwalkerMode.Combo;
                }
            };
            _menu["Harass"].GetValue <MenuKeyBind>().ValueChanged +=
                (sender, args) =>
            {
                if (args.GetValue <MenuKeyBind>().Active)
                {
                    _activeMode = OrbwalkerMode.Mixed;
                }
            };
            _menu["WaveClear"].GetValue <MenuKeyBind>().ValueChanged +=
                (sender, args) =>
            {
                if (args.GetValue <MenuKeyBind>().Active)
                {
                    _activeMode = OrbwalkerMode.LaneClear;
                }
            };
            _menu["LastHit"].GetValue <MenuKeyBind>().ValueChanged +=
                (sender, args) =>
            {
                if (args.GetValue <MenuKeyBind>().Active)
                {
                    _activeMode = OrbwalkerMode.LastHit;
                }
            };
            _menu["Freeze"].GetValue <MenuKeyBind>().ValueChanged +=
                (sender, args) =>
            {
                _activeFreeze = args.GetValue <MenuKeyBind>().Active;
            };

            #endregion
        }
示例#14
0
        public static bool IsEnabledAndReady(this Spell spell, OrbwalkerMode mode)
        {
            var modeString = mode.ToString().ToLowerInvariant();
            var EnabledInMenu =
                VHR.VHRMenu[string.Format("dz191.vhr.{0}", modeString)][
                    string.Format("Use{0}", spell.Slot.GetStringFromSlot())].GetValue<MenuBool>().Value;

            var Ready = spell.IsReady();

            var ManaManagerCheck = ObjectManager.Player.ManaPercent >= VHR.VHRMenu[string.Format("dz191.vhr.{0}", modeString)][
                    string.Format("{0}Mana", spell.Slot.GetStringFromSlot())].GetValue<MenuSlider>().Value;

            return EnabledInMenu && Ready && ManaManagerCheck;
        }
示例#15
0
 private void Orbwalker_OnAction(object sender, LeagueSharp.SDK.Core.Orbwalker.OrbwalkerActionArgs e)
 {
     if (!Enable)
         return;
     if (e.Type == OrbwalkerType.AfterAttack && e.Target.IsValidTarget())
     {
         if (Variables.TickCount - yellowtick <= 1500)
             return;
         if (Orb.ActiveMode == OrbwalkerMode.Orbwalk && comboqafterattack)
         {
             if (e.Target.IsValidTarget() && !e.Target.IsZombie)
             {
                 var target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
                 if (target.IsValidTarget() && !target.IsZombie)
                 Q.Cast(Q.GetPrediction(target).CastPosition);
             }
         }
         if (Orb.ActiveMode == OrbwalkerMode.Hybrid && harassqafterattack && Player.ManaPercent >= harassmana)
         {
             if (e.Target.IsValidTarget() && !e.Target.IsZombie)
             {
                 var target = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
                 if (target.IsValidTarget() && !target.IsZombie)
                     Q.Cast(Q.GetPrediction(target).CastPosition);
             }
         }
     }
     var mode = new OrbwalkerMode[] { OrbwalkerMode.Hybrid, OrbwalkerMode.Orbwalk };
     if (e.Type == OrbwalkerType.BeforeAttack)
     {
         if (IsPickingCard && mode.Contains(Orb.ActiveMode)) e.Process = false;
         else if (HasACard != "none" && !GameObjects.EnemyHeroes.Contains(e.Target) && Orb.ActiveMode == OrbwalkerMode.Hybrid)
         {
             e.Process = false;
             var target = TargetSelector.GetTarget(Player.GetRealAutoAttackRange(), DamageType.Magical);
             if (target.IsValidTarget() && !target.IsZombie)
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
         }
         else if (HasACard != "none" && HasRed && Orb.ActiveMode == OrbwalkerMode.LaneClear)
         {
             e.Process = false;
             IDictionary<Obj_AI_Minion, int> creeps = new Dictionary<Obj_AI_Minion, int>();
             foreach (var x in GameObjects.EnemyMinions.Where(x => x.InAutoAttackRange()))
             {
                 creeps.Add(x, GameObjects.EnemyMinions.Count(y => y.IsValidTarget() && y.Distance(x.Position) <= 300));
             }
             foreach (var x in GameObjects.Jungle.Where(x => x.InAutoAttackRange()))
             {
                 creeps.Add(x, GameObjects.Jungle.Count(y => y.IsValidTarget() && y.Distance(x.Position) <= 300));
             }
             var minion = creeps.OrderByDescending(x => x.Value).FirstOrDefault();
             Player.IssueOrder(GameObjectOrder.AttackUnit, minion.Key);
         }
     }
     if (e.Type == OrbwalkerType.OnAttack)
     {
         if (HasGold)
             yellowtick = Variables.TickCount;
     }
 }
示例#16
0
文件: VHR.cs 项目: rekso/LeagueSharp
        private static void PreliminaryQCheck(Obj_AI_Base target, OrbwalkerMode mode)
        {
            ////TODO Try to reset AA faster by doing Q against a wall if possible

            if (spells[SpellSlot.Q].IsEnabledAndReady(mode))
            {
                if (VHRMenu["dz191.vhr.misc"]["dz191.vhr.misc.tumble"]["smartq"].GetValue<MenuBool>().Value && GetQEPosition() != Vector3.Zero)
                {
                    UseTumble(GetQEPosition(), target);

                    DelayAction.Add(
                        (int) (Game.Ping / 2f + spells[SpellSlot.Q].Delay * 1000 + 300f / 1200f + 50f), () =>
                        {
                            if (!spells[SpellSlot.Q].IsReady())
                            {
                                spells[SpellSlot.E].Cast(target);
                            }
                        });
                }
                else
                {
                    var QWallPosition = GetQWallPosition((Obj_AI_Hero)target);
                    if (QWallPosition != Vector3.Zero)
                    {
                        Tumble(QWallPosition, target);
                    }
                    else
                    {
                        UseTumble(target);
                    }
                }
            }
        }
示例#17
0
        public static void Attach()
        {
            _mainMenu = new Menu(string.Empty, $"Adept AIO - {Global.Player.ChampionName}", true);
            _mainMenu.Attach();

            FleeOrbwalkerMode = new OrbwalkerMode("Flee", KeyCode.A, null, Flee.OnKeyPressed);
            Global.Orbwalker.AddMode(FleeOrbwalkerMode);

            Global.Orbwalker.Attach(_mainMenu);

            Combo = new Menu("Combo", "Combo")
            {
                new MenuBool("Q", "Use Q"),
                new MenuBool("W", "Use W"),
                new MenuBool("E", "Use E"),
                new MenuBool("R", "Use R"),
                new MenuList("Style", "Shadow Style", new [] { "Triangle", "Line", "Cursor" }, 0),
                new MenuBool("Killable", "Only Use R When Killable"),
                new MenuSeperator("Whitelist")
            };

            foreach (var enemy in GameObjects.EnemyHeroes)
            {
                Combo.Add(new MenuBool(enemy.ChampionName, $"Use R On: {enemy.ChampionName}"));
            }

            Harass = new Menu("Harass", "Harass")
            {
                new MenuBool("Q", "Use Q"),
                new MenuBool("W", "Use W"),
                new MenuSliderBool("W2", "Use W Twice | Not If >= X Enemies", true, 2, 1, 5).SetToolTip("Max Range W, will try to W AA "),
                new MenuSlider("Health", "Don't Use W2 if % HP is Below", 30),
                new MenuBool("E", "Use E"),
                new MenuSlider("Energy", "Min. Energy %", 40)
            };

            LaneClear = new Menu("Lane", "LaneClear")
            {
                new MenuBool("Check", "Don't Clear When Enemies Nearby"),
                new MenuBool("TurretFarm", "Smart Under Turret Farm"),
                new MenuSliderBool("Q", "Use Q | Min. Minions Hit", true, 3, 1, 6),
                new MenuBool("W", "Use W"),
                new MenuSliderBool("E", "Use E | Min. Minions Hit", true, 3, 1, 6),
                new MenuSlider("Energy", "Min. Energy %", 40)
            };

            JungleClear = new Menu("Jungle", "JungleClear")
            {
                new MenuBool("Q", "Use Q"),
                new MenuBool("E", "Use E"),
                new MenuSlider("Energy", "Min. Energy %", 40)
            };

            Lasthit = new Menu("Lasthit", "Lasthit")
            {
                new MenuBool("Q", "Use Q"),
                new MenuBool("E", "Use E"),
                new MenuSlider("Energy", "Min. Energy %", 40)
            };

            Killsteal = new Menu("Killsteal", "Killsteal")
            {
                new MenuBool("Q", "Use Q"),
                new MenuBool("E", "Use E")
            };

            Misc = new Menu("Misc", "Miscellaneous")
            {
                new MenuBool("Q", "Always Use Q On Enemies", false),
                new MenuBool("E", "Use E To Slow Enemies"),
                new MenuBool("R", "Use R To Dodge Enemy Spells"),
                new MenuSlider("Health", "Dodge if % Health is below", 20),
                new MenuBool("W", "Anti-Gapclose with W")
            };

            Drawings = new Menu("DrawManager", "DrawManager")
            {
                new MenuSlider("Segments", "Segments", 100, 10, 150).SetToolTip("Smoothness of the circles"),
                new MenuBool("Dmg", "Damage"),
                new MenuBool("Range", "Draw Engage Range"),
                new MenuBool("Q", "Draw Q Range"),
                new MenuBool("Pred", "Draw Q Prediction")
            };

            Gapcloser.Attach(_mainMenu, "Anti Gapcloser");

            foreach (var menu in new List <Menu>
            {
                Combo,
                Harass,
                LaneClear,
                JungleClear,
                Lasthit,
                Killsteal,
                Misc,
                Drawings,
                MenuShortcut.Credits
            })
            {
                _mainMenu.Add(menu);
            }
        }
示例#18
0
        /// <summary>
        ///     Returns the best target candidate.
        /// </summary>
        /// <param name="modeArg">
        ///     The requested mode
        /// </param>
        /// <returns>
        ///     The <see cref="AttackableUnit" />.
        /// </returns>
        public static AttackableUnit GetTarget(OrbwalkerMode? modeArg)
        {
            var mode = modeArg ?? ActiveMode;

            if (mode == OrbwalkerMode.Orbwalk || mode == OrbwalkerMode.None
                || (mode == OrbwalkerMode.Hybrid && !Menu["advanced"]["miscPriorizeFarm"].GetValue<MenuBool>().Value))
            {
                var target = TargetSelector.GetTarget();
                if (target != null)
                {
                    return target;
                }
            }

            if (mode == OrbwalkerMode.LaneClear || mode == OrbwalkerMode.Hybrid || mode == OrbwalkerMode.LastHit)
            {
                foreach (var minion in
                    GameObjects.EnemyMinions.Where(
                        m =>
                        m.IsValidTarget(m.GetRealAutoAttackRange())
                        && m.Health < 2 * GameObjects.Player.TotalAttackDamage).OrderByDescending(m => m.MaxHealth))
                {
                    var time =
                        (int)
                        ((GameObjects.Player.AttackCastDelay * 1000)
                         + (GameObjects.Player.Distance(minion) / GameObjects.Player.GetProjectileSpeed() * 1000)
                         + (Game.Ping / 2f));
                    var healthPrediction = Health.GetPrediction(minion, time, 100);

                    if (healthPrediction <= 0)
                    {
                        InvokeAction(
                            new OrbwalkerActionArgs
                                {
                                    Position = minion.Position, Target = minion, Process = true, 
                                    Type = OrbwalkerType.NonKillableMinion
                                });
                    }

                    if (healthPrediction > 0 && healthPrediction <= GameObjects.Player.GetAutoAttackDamage(minion, true))
                    {
                        return minion;
                    }
                }
            }

            if (mode == OrbwalkerMode.LaneClear)
            {
                foreach (var turret in GameObjects.EnemyTurrets.Where(t => t.IsValidTarget(t.GetRealAutoAttackRange())))
                {
                    return turret;
                }

                foreach (
                    var inhibitor in GameObjects.EnemyInhibitors.Where(i => i.IsValidTarget(i.GetRealAutoAttackRange()))
                    )
                {
                    return inhibitor;
                }

                if (GameObjects.EnemyNexus.IsValidTarget(GameObjects.EnemyNexus.GetRealAutoAttackRange()))
                {
                    return GameObjects.EnemyNexus;
                }
            }

            if (mode != OrbwalkerMode.LastHit)
            {
                var target = TargetSelector.GetTarget();
                if (target != null)
                {
                    return target;
                }
            }

            if (ActiveMode == OrbwalkerMode.LaneClear)
            {
                var shouldWait =
                    GameObjects.EnemyMinions.Any(
                        m =>
                        m.IsValidTarget(m.GetRealAutoAttackRange())
                        && Health.GetPrediction(m, (int)((GameObjects.Player.AttackDelay * 1000) * 2f), 100)
                        <= GameObjects.Player.GetAutoAttackDamage(m, true));
                if (!shouldWait)
                {
                    var mob =
                        (GameObjects.JungleLegendary.FirstOrDefault(j => j.IsValidTarget(j.GetRealAutoAttackRange()))
                         ?? GameObjects.JungleSmall.FirstOrDefault(
                             j =>
                             j.IsValidTarget(j.GetRealAutoAttackRange()) && j.Name.Contains("Mini")
                             && j.Name.Contains("SRU_Razorbeak"))
                         ?? GameObjects.JungleLarge.FirstOrDefault(j => j.IsValidTarget(j.GetRealAutoAttackRange())))
                        ?? GameObjects.JungleSmall.FirstOrDefault(j => j.IsValidTarget(j.GetRealAutoAttackRange()));
                    if (mob != null)
                    {
                        return mob;
                    }

                    var minion = (from m in
                                      GameObjects.EnemyMinions.Where(m => m.IsValidTarget(m.GetRealAutoAttackRange()))
                                  let predictedHealth =
                                      Health.GetPrediction(m, (int)((GameObjects.Player.AttackDelay * 1000) * 2f), 100)
                                  where
                                      predictedHealth >= 2 * GameObjects.Player.GetAutoAttackDamage(m, true)
                                      || System.Math.Abs(predictedHealth - m.Health) < float.Epsilon
                                  select m).MaxOrDefault(m => m.Health);
                    if (minion != null)
                    {
                        return minion;
                    }

                    return
                        GameObjects.AttackableUnits.OrderBy(a => a.MaxHealth)
                            .FirstOrDefault(a => a.IsValidTarget(a.GetRealAutoAttackRange()));
                }
            }

            return null;
        }
示例#19
0
 internal static AttackableUnit GetTarget(OrbwalkerMode? modeArg)
 {
     var mode = modeArg ?? ActiveMode;
     if ((mode == OrbwalkerMode.LaneClear || mode == OrbwalkerMode.Hybrid)
         && !Program.MainMenu["Orbwalker"]["Advanced"]["PriorizeFarm"])
     {
         var target = TargetSelector.GetTarget();
         if (target != null)
         {
             return target;
         }
     }
     if (mode == OrbwalkerMode.LaneClear || mode == OrbwalkerMode.Hybrid || mode == OrbwalkerMode.LastHit)
     {
         foreach (var minion in
             GameObjects.EnemyMinions.Where(m => m.InAutoAttackRange() && Minion.IsMinion(m))
                 .OrderByDescending(m => m.GetMinionType() == MinionTypes.Siege)
                 .ThenBy(m => m.GetMinionType() == MinionTypes.Super)
                 .ThenBy(m => m.Health)
                 .ThenByDescending(m => m.MaxHealth))
         {
             var time =
                 (int)
                 (Program.Player.AttackCastDelay * 1000
                  + Math.Max(0, Program.Player.Distance(minion) - Program.Player.BoundingRadius)
                  / Program.Player.GetProjectileSpeed() * 1000 - 100 + Game.Ping / 2f);
             var healthPrediction = Health.GetPrediction(minion, time, FarmDelay);
             if (healthPrediction <= 0)
             {
                 InvokeAction(
                     new OrbwalkerActionArgs
                         {
                             Position = minion.Position, Target = minion, Process = true,
                             Type = OrbwalkerType.NonKillableMinion
                         });
             }
             if (healthPrediction > 0 && healthPrediction <= Program.Player.GetAutoAttackDamage(minion, true))
             {
                 return minion;
             }
         }
     }
     if (mode == OrbwalkerMode.LaneClear)
     {
         foreach (var turret in GameObjects.EnemyTurrets.Where(t => t.InAutoAttackRange()))
         {
             return turret;
         }
         foreach (var inhibitor in GameObjects.EnemyInhibitors.Where(i => i.InAutoAttackRange()))
         {
             return inhibitor;
         }
         if (GameObjects.EnemyNexus.InAutoAttackRange())
         {
             return GameObjects.EnemyNexus;
         }
     }
     if (mode != OrbwalkerMode.LastHit)
     {
         var target = TargetSelector.GetTarget();
         if (target != null)
         {
             return target;
         }
     }
     if (ActiveMode == OrbwalkerMode.LaneClear)
     {
         var shouldWait =
             GameObjects.EnemyMinions.Any(
                 m =>
                 m.InAutoAttackRange() && Minion.IsMinion(m)
                 && Health.GetPrediction(m, (int)(Program.Player.AttackDelay * 1000 * 2f), FarmDelay)
                 <= Program.Player.GetAutoAttackDamage(m, true));
         if (!shouldWait)
         {
             foreach (var specialMinion in
                 GameObjects.EnemyMinions.Where(
                     m => m.InAutoAttackRange() && SpecialMinions.Any(i => i.Equals(m.CharData.BaseSkinName))))
             {
                 return specialMinion;
             }
             var mob = GameObjects.JungleLegendary.FirstOrDefault(j => j.InAutoAttackRange())
                       ?? GameObjects.JungleSmall.FirstOrDefault(
                           j =>
                           j.InAutoAttackRange() && j.Name.Contains("Mini") && j.Name.Contains("SRU_Razorbeak"))
                       ?? GameObjects.JungleLarge.FirstOrDefault(j => j.InAutoAttackRange())
                       ?? GameObjects.JungleSmall.FirstOrDefault(j => j.InAutoAttackRange());
             if (mob != null)
             {
                 return mob;
             }
             foreach (var sentinel in
                 GameObjects.EnemyMinions.Where(
                     m => m.InAutoAttackRange() && m.CharData.BaseSkinName == "kalistaspawn"))
             {
                 return sentinel;
             }
             if (LastMinion.InAutoAttackRange())
             {
                 var predHealth = Health.GetPrediction(
                     LastMinion,
                     (int)(Program.Player.AttackDelay * 1000 * 2f),
                     FarmDelay);
                 if (predHealth >= 2 * Program.Player.GetAutoAttackDamage(LastMinion, true)
                     || Math.Abs(predHealth - LastMinion.Health) < float.Epsilon)
                 {
                     return LastMinion;
                 }
             }
             var minion = (from m in
                               GameObjects.EnemyMinions.Where(m => m.InAutoAttackRange() && Minion.IsMinion(m))
                           let predictedHealth =
                               Health.GetPrediction(m, (int)(Program.Player.AttackDelay * 1000 * 2f), FarmDelay)
                           where
                               predictedHealth >= 2 * Program.Player.GetAutoAttackDamage(m, true)
                               || Math.Abs(predictedHealth - m.Health) < float.Epsilon
                           select m).MaxOrDefault(m => m.Health);
             if (minion != null)
             {
                 return LastMinion = minion;
             }
             return
                 GameObjects.EnemyMinions.FirstOrDefault(
                     m =>
                     m.InAutoAttackRange()
                     && (m.CharData.BaseSkinName == "elisespiderling"
                         || m.CharData.BaseSkinName == "teemomushroom"));
         }
     }
     return null;
 }