Exemple #1
0
        private static void WLogic()
        {
            #region W逻辑
            foreach (var enemy in HeroManager.Enemies.Where(e => e.IsValid && !e.IsDead && e.Distance(Player) < W.Range).OrderByDescending(k => k.Distance(Player)).OrderByDescending(k => k.Health))
            {
                if (Config.Item("标记W").GetValue <bool>() &&
                    Config.GetBool("WList" + enemy.NetworkId) &&
                    (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) &&
                    enemy.CountAlliesInRange(650) > 0 &&
                    enemy.HasWBuff())
                {
                    W.CastSpell(enemy);
                }

                if (Config.Item("硬控W").GetValue <bool>() && !OktwCommon.CanMove(enemy) && enemy.HasWBuff())
                {
                    W.CastSpell(enemy);
                }

                if (Config.Item("抢人头W").GetValue <bool>() &&
                    Config.GetBool("WList" + enemy.NetworkId) &&
                    Player.CountEnemiesInRange(Player.AttackRange + 100) == 0 && enemy.Health < OktwCommon.GetIncomingDamage(enemy) + W.GetDmg(enemy) &&
                    !Q.CanCast(enemy) && !(Orbwalking.CanAttack() && Orbwalking.InAutoAttackRange(enemy)))
                {
                    W.CastSpell(enemy);
                }
            }
            #endregion
        }
Exemple #2
0
        public override void GameOnUpdate(EventArgs args)
        {
            if (!ComboActive)
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            //Manual cast R
            if (Config.Item("RManualCast" + Id).GetValue <KeyBind>().Active)
            {
                var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
                R.Cast(rTarget);
            }
        }
Exemple #3
0
        private static bool InAttackRange(Obj_AI_Hero target)
        {
            if ((Config.GetStringIndex("伤害类型" + Player.ChampionName) == 1 || Config.GetStringIndex("伤害类型" + Player.ChampionName) == 3) && Orbwalking.InAutoAttackRange(target))
            {
                return(true);
            }

            if (Config.GetStringIndex("伤害类型" + Player.ChampionName) == 2 && (Q.CanCast(target) || W.CanCast(target) || E.CanCast(target) || R.CanCast(target) || Orbwalking.InAutoAttackRange(target)))
            {
                return(true);
            }
            return(false);
        }
Exemple #4
0
        public override void GameOnUpdate(EventArgs args)
        {
            R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500;

            AIHeroClient t;

            if (GetValue <StringList>("AutoWI").SelectedIndex != 0 && W.IsReady())
            {
                foreach (
                    var hero in
                    HeroManager.Enemies.Where(h => h.IsValidTarget(W.Range) && h.HasBuffOfType(BuffType.Stun)))
                {
                    CastW(hero.Position, false);
                }
            }

            if (W.IsReady() &&
                (GetValue <StringList>("AutoWI").SelectedIndex == 1 ||
                 (GetValue <StringList>("AutoWI").SelectedIndex == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(W.Range))
                {
                    if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                        t.HasBuffOfType(BuffType.Taunt) || t.HasBuffOfType(BuffType.Knockup) ||
                        t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))
                    {
                        CastW(t.Position);
                    }

                    if (t.HasBuffOfType(BuffType.Slow) && t.IsValidTarget(E.Range - 200))
                    {
                        //W.Cast(t.Position.Extend(ObjectManager.Player.Position, +200));
                        //W.Cast(t.Position.Extend(ObjectManager.Player.Position, -200));

                        var hit = t.IsFacing(ObjectManager.Player)
                            ? t.Position.Extend(ObjectManager.Player.Position, +200)
                            : t.Position.Extend(ObjectManager.Player.Position, -200);
                        CastW(hit);
                    }
                }
            }

            if (Q.IsReady() &&
                (GetValue <StringList>("AutoQI").SelectedIndex == 1 ||
                 (GetValue <StringList>("AutoQI").SelectedIndex == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(Q.Range - 30, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(Q.Range)
                    &&
                    (t.HasBuffOfType(BuffType.Stun) ||
                     t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) ||
                     (t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) &&
                      !t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))))
                {
                    CastQ(t);
                }
            }

            if (GetValue <KeyBind>("UseQMC").Active)
            {
                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                CastQ(t);
            }

            //if (GetValue<KeyBind>("UseEMC").Active)
            //{
            //    t = TargetSelector.GetTarget(E.Range - 50, TargetSelector.DamageType.Physical);
            //    E.Cast(t);
            //}

            if (GetValue <KeyBind>("UseRMC").Active&& R.IsReady())
            {
                foreach (
                    var e in
                    HeroManager.Enemies.Where(
                        e =>
                        e.IsValidTarget(R.Range) &&
                        ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 65) <=
                        1).OrderBy(e => e.Health))
                {
                    //Utils.MPing.Ping(enemy.Position.To2D());
                    R.CastOnUnit(e);
                }
            }

            //for (int i = 1; i < HeroManager.Enemies.Count(e => e.Health < R.GetDamage(e)); i++)
            //{

            //    Common.CommonGeometry.DrawBox(new Vector2(Drawing.Width * 0.45f, Drawing.Height * 0.80f), 125, 18, Color.Transparent, 1, System.Drawing.Color.Black);
            //    Common.CommonGeometry.DrawText(CommonGeometry.Text, HeroManager.Enemies[i].ChampionName + " Killable", Drawing.Width * 0.455f, Drawing.Height * (0.803f + i * 50), SharpDX.Color.Wheat);
            //}

            if (GetValue <KeyBind>("UseEQC").Active&& E.IsReady() && Q.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(E.Range) &&
                    t.Health
                    < ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q)
                    + ObjectManager.Player.GetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t))
                {
                    CastE();
                    //if (E.Cast(t) == Spell.CastStates.SuccessfullyCasted)
                    //    return;
                    //                    E.Cast(t);
                    CastQ(t);
                }
            }

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

            //var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useW = GetValue <bool>("UseWC");
            var useE = GetValue <bool>("UseEC");
            var useR = GetValue <bool>("UseRC");

            //if (Q.IsReady() && useQ)
            //{
            //    t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
            //    if (t != null)
            //    {
            //        CastQ(t);
            //    }
            //}

            if (useE && E.IsReady())
            {
                //var enemies = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range));
                //var objAiHeroes = enemies as AIHeroClient[] ?? enemies.ToArray();
                //IEnumerable<AIHeroClient> nResult =
                //    (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e)
                //        .Distinct();

                //foreach (var n in nResult.Where(n => n.IsFacing(ObjectManager.Player)))
                //{
                //    if (n.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 - 300) && E.GetPrediction(n).CollisionObjects.Count == 0)
                //    {
                //        E.Cast(n.Position);
                //        if (W.IsReady())
                //            W.Cast(n.Position);
                //    }
                //}
                //if (GetValue<bool>("E.ProtectDistance"))
                //{
                //    foreach (var n in HeroManager.Enemies)
                //    {
                //        if (GetValue<bool>("E." + n.ChampionName + ".ProtectDistance") &&
                //            n.Distance(ObjectManager.Player) < E.Range - 100)
                //        {
                //            E.Cast(n.Position);
                //        }

                //    }
                //}
                foreach (
                    var enemy in
                    HeroManager.Enemies.Where(
                        e =>
                        e.IsValidTarget(E.Range) && e.Health >= ObjectManager.Player.TotalAttackDamage * 2 &&
                        e.IsFacing(ObjectManager.Player) && e.IsValidTarget(E.Range - 300) &&
                        E.GetPrediction(e).CollisionObjects.Count == 0))
                {
                    E.Cast(enemy.Position);
                    var targetBehind = enemy.Position.To2D().Extend(ObjectManager.Player.Position.To2D(), -140);
                    if (W.IsReady() && ObjectManager.Player.Distance(targetBehind) <= W.Range)
                    {
                        W.Cast(enemy.Position);
                    }
                    if (Q.IsReady())
                    {
                        Q.Cast(enemy.Position);
                    }
                }
            }

            if (useW && W.IsReady())
            {
                var nResult = HeroManager.Enemies.Where(e => e.IsValidTarget(W.Range));
                foreach (var n in nResult)
                {
                    if (ObjectManager.Player.Distance(n) < 450 && n.IsFacing(ObjectManager.Player))
                    {
                        CastW(CommonGeometry.CenterOfVectors(new[] { ObjectManager.Player.Position, n.Position }));
                    }
                }
            }

            if (R.IsReady() && useR)
            {
                foreach (
                    var e in
                    HeroManager.Enemies.Where(
                        e =>
                        e.IsValidTarget(R.Range) && e.Health <= R.GetDamage(e) &&
                        ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 350) ==
                        0 &&
                        !Orbwalking.InAutoAttackRange(e) && canCastR))
                {
                    R.CastOnUnit(e);
                }
            }
        }
Exemple #5
0
 public virtual bool InAutoAttackRange(AttackableUnit target)
 {
     return(Orbwalking.InAutoAttackRange(target));
 }
Exemple #6
0
        private static void GameOnUpdate(EventArgs args)
        {
            //Update the combo and harass values.
            ChampionClass.ComboActive = ChampionClass.Config.Item("Orbwalk").GetValue <KeyBind>().Active;

            var vHarassManaPer = Config.Item("HarassMana").GetValue <Slider>().Value;

            ChampionClass.HarassActive = ChampionClass.Config.Item("Farm").GetValue <KeyBind>().Active&&
                                         ObjectManager.Player.ManaPercent >= vHarassManaPer;

            ChampionClass.ToggleActive = ObjectManager.Player.ManaPercent >= vHarassManaPer &&
                                         ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo &&
                                         !ObjectManager.Player.IsRecalling();

            #region LaneClearActive
            ChampionClass.LaneClearActive = ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.None &&
                                            ChampionClass.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo &&
                                            Config.Item("Farm.Active").GetValue <KeyBind>().Active&&
                                            ObjectManager.Player.ManaPercent >= (Config.Item("Farm.Min.Mana.Control").GetValue <KeyBind>().Active ? Config.Item("Lane.Min.Mana").GetValue <Slider>().Value : 0);
            #endregion LaneClearActive

            #region JungleClearActive
            ChampionClass.JungleClearActive = ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                                              Config.Item("Farm.Active").GetValue <KeyBind>().Active&&
                                              MinionManager.GetMinions(ObjectManager.Player.Position, LeagueSharp.Common.Orbwalking.GetRealAutoAttackRange(null) + 65, MinionTypes.All, MinionTeam.Neutral).Count > 0 &&
                                              ObjectManager.Player.ManaPercent >= (Config.Item("Farm.Min.Mana.Control").GetValue <KeyBind>().Active ? Config.Item("Jungle.Min.Mana").GetValue <Slider>().Value : 0);
            #endregion JungleClearActive

            ChampionClass.LastHitActive = ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit;

            //ChampionClass.JungleClearActive = ChampionClass.Config.Item("LaneClear").GetValue<KeyBind>().Active && ObjectManager.Player.ManaPercent >= Config.Item("Jungle.Mana").GetValue<Slider>().Value;

            //ChampionClass.GameOnUpdate(args);

            UseSummoners();
            var useItemModes = Config.Item("UseItemsMode").GetValue <StringList>().SelectedIndex;

            //Items
            if (
                !((ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                   (useItemModes == 2 || useItemModes == 3))
                  ||
                  (ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed &&
                   (useItemModes == 1 || useItemModes == 3))))
            {
                return;
            }

            var botrk      = Config.Item("BOTRK").GetValue <bool>();
            var ghostblade = Config.Item("GHOSTBLADE").GetValue <bool>();
            var sword      = Config.Item("SWORD").GetValue <bool>();
            var muramana   = Config.Item("MURAMANA").GetValue <bool>();
            var target     = ChampionClass.Orbwalker.GetTarget() as Obj_AI_Base;

            var smiteReady = SmiteSlot != SpellSlot.Unknown &&
                             ObjectManager.Player.Spellbook.CanUseSpell(SmiteSlot) == SpellState.Ready;

            if (smiteReady && ChampionClass.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
            {
                Smiteontarget(target as AIHeroClient);
            }

            if (botrk)
            {
                if (target != null && target.Type == ObjectManager.Player.Type &&
                    target.ServerPosition.Distance(ObjectManager.Player.ServerPosition) < 550)
                {
                    var hasCutGlass = Items.HasItem(3144);
                    var hasBotrk    = Items.HasItem(3153);

                    if (hasBotrk || hasCutGlass)
                    {
                        var itemId = hasCutGlass ? 3144 : 3153;
                        var damage = ObjectManager.Player.GetItemDamage(target, Damage.DamageItems.Botrk);
                        if (hasCutGlass || ObjectManager.Player.Health + damage < ObjectManager.Player.MaxHealth)
                        {
                            Items.UseItem(itemId, target);
                        }
                    }
                }
            }

            if (ghostblade && target != null && target.Type == ObjectManager.Player.Type &&
                !ObjectManager.Player.HasBuff("ItemSoTD") && /*if Sword of the divine is not active */
                Orbwalking.InAutoAttackRange(target))
            {
                Items.UseItem(3142);
            }

            if (sword && target != null && target.Type == ObjectManager.Player.Type &&
                !ObjectManager.Player.HasBuff("spectralfury") && /*if ghostblade is not active*/
                Orbwalking.InAutoAttackRange(target))
            {
                Items.UseItem(3131);
            }

            if (muramana && Items.HasItem(3042))
            {
                if (target != null && ChampionClass.ComboActive &&
                    target.Position.Distance(ObjectManager.Player.Position) < 1200)
                {
                    if (!ObjectManager.Player.HasBuff("Muramana"))
                    {
                        Items.UseItem(3042);
                    }
                }
                else
                {
                    if (ObjectManager.Player.HasBuff("Muramana"))
                    {
                        Items.UseItem(3042);
                    }
                }
            }
        }