示例#1
0
        /// <summary>
        /// Gapcloser
        /// </summary>
        /// <param name="gapcloser"></param>
        #region GapCloser
        private static void OnGapCloser(ActiveGapcloser gapcloser)
        {
            if (!gapcloser.Sender.IsEnemy)
            {
                return;
            }
            var gap = GlobalManager.getCheckBoxItem(miscMenu, "miscMenu.qwgap");

            if (!gap)
            {
                return;
            }
            if (Player.HasBuff("pyromania_particle"))
            {
                if (Q.IsReady() &&
                    Q.IsInRange(gapcloser.Start))
                {
                    Q.Cast(gapcloser.Start);
                }

                if (W.IsReady() && W.IsInRange(gapcloser.Start))
                {
                    W.Cast(gapcloser.Start);
                }
            }
        }
示例#2
0
文件: Utils.cs 项目: Burbb/Portaio
        public static IEnumerable <Obj_AI_Base> GetMins(this LeagueSharp.Common.Spell spell, FarmMode farmMode, GameObjectTeam minionTeam,
                                                        MinionType minionType = MinionType.All, MinionGroup minionGroup = MinionGroup.Alone, int minionCount = 1)
        {
            IEnumerable <Obj_AI_Base> list = ObjectManager.Get <Obj_AI_Minion>().Where(m => m.LSIsValidTarget(spell.Range));
            IEnumerable <Obj_AI_Base> mobs;

            if (farmMode == FarmMode.JungleClear)
            {
                mobs = list.Where(w => w.Team == minionTeam);
                if (minionType == MinionType.BigMobs)
                {
                    IEnumerable <Obj_AI_Base> oMob = (from fMobs in mobs
                                                      from fBigBoys in
                                                      new[]
                    {
                        "SRU_Blue", "SRU_Gromp", "SRU_Murkwolf", "SRU_Razorbeak", "SRU_Red",
                        "SRU_Krug", "SRU_Dragon", "SRU_Baron", "Sru_Crab"
                    }
                                                      where fBigBoys == fMobs.BaseSkinName
                                                      select fMobs).AsEnumerable();

                    mobs = oMob;
                }
            }
            else
            {
                mobs = list;
            }

            var objAiBases        = mobs as IList <Obj_AI_Base> ?? mobs.ToList();
            List <Obj_AI_Base> m1 = objAiBases.ToList();

            var locLine = spell.GetLineFarmLocation(m1);

            if (locLine.MinionsHit >= 3 && spell.IsInRange(locLine.Position.To3D()))
            {
                spell.Cast(locLine.Position);
            }

            var locCircular = spell.GetCircularFarmLocation(m1, spell.Width);

            if (locCircular.MinionsHit >= minionCount && spell.IsInRange(locCircular.Position.To3D()))
            {
                spell.Cast(locCircular.Position);
            }

            return(null);
        }
示例#3
0
        private static void Clear()
        {
            var minionObj = GetMinions(600, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);

            if (!minionObj.Any() || HaveQ)
            {
                return;
            }
            if (getCheckBoxItem(clearMenu, "Q") && Q.IsReady() && !HaveW &&
                (minionObj.Count(i => Q.IsInRange(i)) > 2 || minionObj.Any(i => i.MaxHealth >= 1200 && Q.IsInRange(i)) ||
                 !minionObj.Any(i => Player.IsInAutoAttackRange(i))) && Q.Cast())
            {
                return;
            }
            if (getCheckBoxItem(clearMenu, "E") && E.IsReady() &&
                Player.HealthPercent >= getSliderItem(clearMenu, "EHpA") &&
                (!getCheckBoxItem(clearMenu, "EW") || HaveW))
            {
                var obj = minionObj.FirstOrDefault(i => E.IsInRange(i) && i.Team == GameObjectTeam.Neutral);
                if (obj != null && E.CastOnUnit(obj))
                {
                    return;
                }
            }
            if (getCheckBoxItem(clearMenu, "W") && W.IsReady() &&
                (minionObj.Count(i => Player.IsInAutoAttackRange(i)) > 2 ||
                 minionObj.Any(i => i.MaxHealth >= 1200 && Player.IsInAutoAttackRange(i))))
            {
                W.Cast();
            }
        }
示例#4
0
 private static void Clear()
 {
     if (getCheckBoxItem(clearMenu, "E") && E.IsReady())
     {
         var minionObj = GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
         if (minionObj.Any())
         {
             var pos = E.GetCircularFarmLocation(minionObj.Cast <Obj_AI_Base>().ToList());
             if (pos.MinionsHit > 1)
             {
                 if (E.Cast(pos.Position, getCheckBoxItem(miscMenu, "Packet")))
                 {
                     if (getCheckBoxItem(clearMenu, "Q") && Q.IsReady())
                     {
                         Q.Cast(pos.Position, getCheckBoxItem(miscMenu, "Packet"));
                     }
                     return;
                 }
             }
             else
             {
                 var obj = minionObj.FirstOrDefault(i => i.MaxHealth >= 1200);
                 if (obj != null && E.Cast(obj, getCheckBoxItem(miscMenu, "Packet")).IsCasted())
                 {
                     return;
                 }
             }
         }
     }
     if (getCheckBoxItem(clearMenu, "Q") && Q.IsReady())
     {
         var minionObj =
             GetMinions(Q2.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth)
             .Cast <Obj_AI_Base>()
             .ToList();
         if (minionObj.Any() &&
             (!getCheckBoxItem(clearMenu, "E") || !E.IsReady() ||
              (E.IsReady() && E.GetCircularFarmLocation(minionObj).MinionsHit == 1)))
         {
             if (getCheckBoxItem(clearMenu, "E") &&
                 Flag.Where(i => minionObj.Count(a => Q2.WillHit(a, i.ServerPosition)) > 1)
                 .Any(i => Q.Cast(i.ServerPosition, getCheckBoxItem(miscMenu, "Packet"))))
             {
                 return;
             }
             var pos = Q.GetLineFarmLocation(minionObj.Where(i => Q.IsInRange(i)).ToList());
             if (pos.MinionsHit > 0 && Q.Cast(pos.Position, getCheckBoxItem(miscMenu, "Packet")))
             {
                 return;
             }
         }
     }
     if (getCheckBoxItem(clearMenu, "W") && W.IsReady() &&
         Player.HealthPercent < getSliderItem(clearMenu, "WHpU") &&
         GetMinions(W.Range, MinionTypes.All, MinionTeam.NotAlly).Any() &&
         W.Cast(getCheckBoxItem(miscMenu, "Packet")))
     {
     }
 }
示例#5
0
文件: Utils.cs 项目: Burbb/Portaio
        public static Vector2 GetLineFarmMinions(this LeagueSharp.Common.Spell spell, int minionCount)
        {
            List <Obj_AI_Base> minions = MinionManager.GetMinions(ObjectManager.Player.Position, spell.Range);

            MinionManager.FarmLocation location = spell.GetLineFarmLocation(minions);
            if (location.MinionsHit >= minionCount && spell.IsInRange(location.Position.To3D()))
            {
                return(location.Position);
            }

            return(new Vector2(0, 0));
        }
示例#6
0
            public static Vector2 Minions(Spell spell, MobTypes mobTypes = MobTypes.All, int minMobCount = 1)
            {
                var rangedMinionsE = LeagueSharp.Common.MinionManager.GetMinions(
                    ObjectManager.Player.ServerPosition,
                    Spells.E.Range);

                var minionsE = Spells.E.GetCircularFarmLocation(rangedMinionsE, spell.Range);

                if (minionsE.MinionsHit < minMobCount || !spell.IsInRange(minionsE.Position))
                {
                    return(new Vector2());
                }

                return(minionsE.Position);
            }
示例#7
0
            public static Vector2 GetCircularFarmLocation(Spell spell, MobTypes mobTypes = MobTypes.All,
                                                          int minMobCount = 1)
            {
                var cVector        = new Vector2();
                var rangedMinionsE = LeagueSharp.Common.MinionManager.GetMinions(ObjectManager.Player.ServerPosition,
                                                                                 spell.Range);

                var minionsE = spell.GetCircularFarmLocation(rangedMinionsE, spell.Range);

                if (minionsE.MinionsHit > minMobCount && spell.IsInRange(minionsE.Position))
                {
                    cVector = minionsE.Position;
                }

                return(cVector);
            }
示例#8
0
        private static void JungleFarm()
        {
            var mobs = MinionManager.GetMinions(
                myHero.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);

            if (mobs.Count > 0)
            {
                var mob = mobs[0];

                if (Q.IsReady())
                {
                    Q.CastOnUnit(mob);
                }

                if (E.IsReady() && E.IsInRange(mob))
                {
                    E.Cast();
                }
            }
        }
示例#9
0
文件: Program.cs 项目: Burbb/Portaio
        private static void OnDraw(EventArgs args)
        {
            var Target = TargetSelector.GetTarget(Q.Range, DamageType.Physical);

            if (getCheckBoxItem(drawMenu, "Draw_Disabled"))
            {
                return;
            }

            if (getCheckBoxItem(drawMenu, "Qdraw"))
            {
                Render.Circle.DrawCircle(player.Position, Q.Range, Color.White, 3);
            }
            if (getCheckBoxItem(drawMenu, "Wdraw"))
            {
                Render.Circle.DrawCircle(player.Position, W.Range, Color.White, 3);
            }
            if (getCheckBoxItem(drawMenu, "Rdraw"))
            {
                Render.Circle.DrawCircle(player.Position, R.Range, Color.White, 3);
            }
            if (Target == null)
            {
                return;
            }
            if (getCheckBoxItem(drawMenu, "combodamage") && Q.IsInRange(Target))
            {
                var Positions = GetLength();
                Drawing.DrawLine
                (
                    new Vector2(Target.HPBarPosition.X + 10 + Positions[0] * 104, Target.HPBarPosition.Y + 20),
                    new Vector2(Target.HPBarPosition.X + 10 + Positions[1] * 104, Target.HPBarPosition.Y + 20),
                    9,
                    Color.Orange
                );
            }
        }
示例#10
0
        public static void useRSmart()
        {
            var obj = (from enemy in HeroManager.Enemies.Where(i => R.IsInRange(i) && CanCastR(i))
                       let sub = enemy.GetEnemiesInRange(RWidth).Where(CanCastR).ToList()
                                 where
                                 (sub.Count > 1 && R.IsKillable(enemy)) ||
                                 sub.Any(i => i.HealthPercent < YasuoSharp.smartR["useRHP"].Cast <Slider>().CurrentValue) ||
                                 sub.Count >= YasuoSharp.smartR["useRHit"].Cast <Slider>().CurrentValue
                                 orderby sub.Count descending
                                 select enemy).ToList();

            if (obj.Any())
            {
                var target = !YasuoSharp.smartR["useRHitTime"].Cast <CheckBox>().CurrentValue ? obj.FirstOrDefault() : obj.Where(i => TimeLeftR(i) * 1000 < 150 + Game.Ping * 2).MinOrDefault(TimeLeftR);
                if (target != null && R.CastOnUnit(target))
                {
                    return;
                }
            }

            /*
             * float timeToLand = float.MaxValue;
             * List<AIHeroClient> enemInAir = getKockUpEnemies(ref timeToLand);
             * foreach (AIHeroClient enem in enemInAir)
             * {
             *  int aroundAir = 0;
             *  foreach (AIHeroClient enem2 in enemInAir)
             *  {
             *      if (Vector3.DistanceSquared(enem.ServerPosition, enem2.ServerPosition) < 400 * 400)
             *          aroundAir++;
             *  }
             *  if (aroundAir >= YasuoSharp.smartR["useRHit"].Cast<Slider>().CurrentValue && timeToLand < 0.4f)
             *      R.Cast(enem);
             * }
             */
        }
示例#11
0
            public static Vector2 Minions(Spell spell, MobTypes mobTypes = MobTypes.All, int minMobCount = 1)
            {
                var rangedMinionsE = LeagueSharp.Common.MinionManager.GetMinions(
                    ObjectManager.Player.ServerPosition,
                    Spells.E.Range);

                var minionsE = Spells.E.GetCircularFarmLocation(rangedMinionsE, spell.Range);
                if (minionsE.MinionsHit < minMobCount || !spell.IsInRange(minionsE.Position))
                {
                    return new Vector2();
                }

                return minionsE.Position;
            }
示例#12
0
            public static Vector2 GetCircularFarmLocation(Spell spell, MobTypes mobTypes = MobTypes.All,
                int minMobCount = 1)
            {
                var cVector = new Vector2();
                var rangedMinionsE = LeagueSharp.Common.MinionManager.GetMinions(ObjectManager.Player.ServerPosition,
                    spell.Range);

                var minionsE = spell.GetCircularFarmLocation(rangedMinionsE, spell.Range);
                if (minionsE.MinionsHit > minMobCount && spell.IsInRange(minionsE.Position))
                {
                    cVector = minionsE.Position;
                }

                return cVector;
            }
示例#13
0
文件: Program.cs 项目: riwalry1/AIO
        //Combo
        private static void Combo()
        {
            var useQ = (combo["useQ"].Cast <CheckBox>().CurrentValue);
            var useW = (combo["useW"].Cast <CheckBox>().CurrentValue);
            var useE = (combo["useE"].Cast <CheckBox>().CurrentValue);
            var useR = (combo["useR"].Cast <CheckBox>().CurrentValue);
            var m    = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
            var pred = Q.GetPrediction(m);

            if (!m.LSIsValidTarget())
            {
                return;
            }
            if (Player.Mana > E.ManaCost + W.ManaCost + R.ManaCost)
            {
                if (useE && E.IsReady() && E.IsInRange(m))
                {
                    E.CastOnUnit(m);
                }
                if (useQ && Q.IsReady() && Player.Mana > Q.ManaCost && Q.IsInRange(m))
                {
                    if (pred.Hitchance >= HitChance.High)
                    {
                        Q.Cast(pred.CastPosition);
                    }
                }
                if (useW && W.IsReady())
                {
                    W.Cast(m);
                }
                if (useR && R.IsReady() && m != null && E.IsInRange(m))
                {
                    R.CastOnUnit(m);
                }
            }
            else
            {
                if (useE && E.IsReady() && E.IsInRange(m))
                {
                    E.CastOnUnit(m);
                }
                if (useQ && Q.IsReady() && Player.Mana > Q.ManaCost && Q.IsInRange(m))
                {
                    if (pred.Hitchance >= HitChance.High)
                    {
                        Q.Cast(pred.CastPosition);
                    }
                }
                if (useW && W.IsReady() && Player.Mana > W.ManaCost && W.IsInRange(m))
                {
                    W.Cast(m);
                }
            }
            if (combo["useIgniteInCombo"].Cast <CheckBox>().CurrentValue)
            {
                if (m.Health < Player.GetSummonerSpellDamage(m, LeagueSharp.Common.Damage.SummonerSpell.Ignite))
                {
                    Player.Spellbook.CastSpell(igniteSlot, m);
                }
            }
        }
示例#14
0
文件: Thresh.cs 项目: geramz/PortAIO
        private static void Unit_OnDash(Obj_AI_Base sender, Dash.DashItem args)
        {
            if (sender.IsEnemy && Player.LSDistance(args.EndPos) > Player.LSDistance(args.StartPos))
            {
                if (E.IsInRange(args.StartPos))
                {
                    E.Cast(sender);
                }

                if (getCheckBoxItem(SpellConfig, "autoQ") && SpellQ.GetState() == QState.ThreshQ && Q.IsInRange(args.EndPos) && !E.IsInRange(args.EndPos) && Math.Abs(args.Duration - args.EndPos.LSDistance(sender) / Q.Speed * 1000) < 150)
                {
                    List <Vector2> to = new List <Vector2>();
                    to.Add(args.EndPos);
                    var QCollision = Q.GetCollision(Player.Position.LSTo2D(), to);
                    if (QCollision == null || QCollision.Count == 0 || QCollision.All(a => !a.IsMinion))
                    {
                        if (Q.Cast(args.EndPos))
                        {
                            return;
                        }
                    }
                }
            }
        }
示例#15
0
        public static bool SpellPrediction(Spell spell, Obj_AI_Hero target,bool collisionable)
        {
            //
            var dist = ObjectManager.Player.Distance(target.Position);
            var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition;
            var e = pos1.Distance(target.GetWaypoints()[1].To3D());

            pos1.Extend(target.GetWaypoints()[1].To3D(), -e);
            Render.Circle.DrawCircle(pos1, 10, System.Drawing.Color.BlueViolet, 2);
            //
            var point = PointsAroundTheTarget(target.Position, target.BoundingRadius + 50).FirstOrDefault(t => t.IsWall());
            if (point.X != 0 && point.Y != 0 && point.Z != 0)
            {
                if (MinionCollideLine(ObjectManager.Player.Position, ExtendWallpos(target, point), spell,collisionable)) return false;

                Render.Circle.DrawCircle(ExtendWallpos(target, point), 10, System.Drawing.Color.Brown, 2);
                spell.Cast(ExtendWallpos(target, point));
                return true;
            }
            else
            {
                var range = spell.Range;
                if (target.Position.Distance(ObjectManager.Player.Position) < target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                    range -= 100;
                }

                if (!spell.IsInRange(target, range)) return false;

                if (target.IsFacing(ObjectManager.Player) && target.Position.Distance(ObjectManager.Player.Position) > target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                  if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                        spell.Cast(target.Position);
                        return true;

                }
               // float speed =
                if (target.IsImmovable) // check for cc guys
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }

              //  if(target.IsChannelingImportantSpell())
                if (target.IsWindingUp && !target.IsMelee())
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }

                if (target.Position.Distance(ObjectManager.Player.Position) <= 300)
                {
                    CastToDirection( target, spell,collisionable);
                }
                else
                {
                    var oldPos = target.GetWaypoints()[0].To3D();
                   var h = false;
                    Utility.DelayAction.Add(Game.Ping + 1000, () => h = Next(target, oldPos, spell,collisionable));
                    return h;
                }
            }
            return false;
        }
示例#16
0
        public static bool SpellPrediction(Spell spell, Obj_AI_Hero target,bool collisionable)
        {
            //
            var dist = ObjectManager.Player.Distance(target.Position);
            var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition-40;
            var dister = target.Position.Extend(target.GetWaypoints()[1].To3D(), target.GetWaypoints()[1].To3D().Distance(target.Position) + 50);
              //  var pos1 = LeagueSharp.Common.Prediction.GetPrediction(target, dist / spell.Speed).UnitPosition - 40;
            var wts = Drawing.WorldToScreen(target.Position);
            var wtsx = target.GetWaypoints()[1];
            Drawing.DrawLine(wts[0], wts[1], wtsx[0], wtsx[1], 2f, System.Drawing.Color.Red);
            var e = pos1.Distance(target.GetWaypoints()[1].To3D());

            pos1.Extend(target.GetWaypoints()[1].To3D(), -e);
            Render.Circle.DrawCircle(dister, 10, System.Drawing.Color.GreenYellow, 2);
            Render.Circle.DrawCircle(pos1, 10, System.Drawing.Color.BlueViolet, 2);
            //
            var point = PointsAroundTheTarget(target.Position, target.BoundingRadius + 50).FirstOrDefault(t => t.IsWall());
            if (point.X != 0 && point.Y != 0 && point.Z != 0)
            {
                if (MinionCollideLine(ObjectManager.Player.Position, ExtendWallpos(target, point), spell,collisionable)) return false;

                Render.Circle.DrawCircle(ExtendWallpos(target, point), 10, System.Drawing.Color.Brown, 2);
                spell.Cast(ExtendWallpos(target, point));
                return true;
            }
            else
            {
                var range = spell.Range;
                if (target.Position.Distance(ObjectManager.Player.Position) < target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                    range -= 100;
                }

                if (!spell.IsInRange(target, range)) return false;

                /*if (target.IsFacing(ObjectManager.Player) && target.Position.Distance(ObjectManager.Player.Position) > target.GetWaypoints()[1].Distance(ObjectManager.Player.Position))
                {
                  if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;

                    {
                        Game.PrintChat("Casteando por inface");
                       spell.Cast(target.Position);

                        return true;
                    }

                }*/
                // code of dashes
                if (target.IsDashing())
                {
                    float timeforArrive=(target.Position.Distance(target.GetDashInfo().EndPos.To3D()))/target.GetDashInfo().Speed;
                    float grabtime =( ObjectManager.Player.Position.Distance(target.GetDashInfo().EndPos.To3D())
                                     / spell.Speed)+spell.Delay;
                    if (timeforArrive<grabtime)
                    {
                        spell.Cast(target.GetDashInfo().EndPos);
                        return true;
                    }
                }
               /* if (target.IsImmovable) // check for cc guys
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }*/

              //  if(target.IsChannelingImportantSpell())
                if (target.IsWindingUp && !target.IsMelee())
                {
                    if (MinionCollideLine(ObjectManager.Player.Position, target.Position, spell,collisionable)) return false;
                    spell.Cast(target.Position);
                    return true;
                }

                if (target.Position.Distance(ObjectManager.Player.Position) <= 300)
                {
                    CastToDirection( target, spell,collisionable);
                }
                else
                {
                    var oldPos = target.GetWaypoints()[0].To3D();
                   var h = false;
                    Utility.DelayAction.Add(Game.Ping + 1000, () => h = Next(target, oldPos, spell,collisionable));
                    return h;
                }
            }
            return false;
        }
示例#17
0
 public Obj_AI_Base getMinionsOnRange(Spell spell)
 {
     return  ObjectManager.Get<Obj_AI_Base>().Where(x => spell.IsInRange(x)).MinOrDefault(x => x.Distance(Game.CursorPos));
 }
示例#18
0
        private static void Combo()
        {
            var comboQ = getSliderItem(comboMenu, "comboQ");
            var comboW = getCheckBoxItem(comboMenu, "comboW");
            var comboE = getCheckBoxItem(comboMenu, "comboE");
            var comboR = getSliderItem(comboMenu, "comboR");

            if (comboQ > 1 && _spellQ.IsReady())
            {
                if (_spellR.IsReady() && comboR > 0)
                //search unit that provides most targets hit by ult. prioritize hero target unit
                {
                    var         maxTargetsHit      = 0;
                    Obj_AI_Base unitMostTargetsHit = null;

                    foreach (
                        var unit in
                        ObjectManager.Get <Obj_AI_Base>()
                        .Where(
                            x =>
                            x.LSIsValidTarget(_spellQ.Range) &&
                            _spellQ.GetPrediction(x).HitChance >= EloBuddy.SDK.Enumerations.HitChance.High))             //causes troubles?
                    {
                        var targetsHit = unit.LSCountEnemiesInRange((int)_spellR.Range);
                        //unitposition might not reflect where you land with Q

                        if (targetsHit > maxTargetsHit ||
                            (unitMostTargetsHit != null && targetsHit >= maxTargetsHit &&
                             unit.Type == GameObjectType.AIHeroClient))
                        {
                            maxTargetsHit      = targetsHit;
                            unitMostTargetsHit = unit;
                        }
                    }

                    if (maxTargetsHit >= comboR)
                    {
                        CastQ(unitMostTargetsHit);
                    }
                }

                Obj_AI_Base target = TargetSelector.GetTarget(_spellQ.Range, DamageType.Magical);
                if (target != null)
                {
                    var pred = _spellQ.GetPrediction(target);
                    if (comboQ == 2 || (comboQ == 3 && !Orbwalking.InAutoAttackRange(target)) && _spellQ.IsReady() && target.LSIsValidTarget() && pred.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High)
                    {
                        _spellQ.Cast(pred.CastPosition);
                    }
                    else if (!target.CanMove && comboQ == 2 || comboQ == 3)
                    {
                        _spellQ.Cast(target);
                    }
                }
            }

            if (comboW && _spellW.IsReady())
            {
                var target = TargetSelector.GetTarget(_spellW.Range + 200, DamageType.Magical);

                if (target != null)
                {
                    var enoughMana = GetManaPercent() >= getSliderItem(comboMenu, "comboWPercent");

                    if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).ToggleState == 1)
                    {
                        if (ObjectManager.Player.LSDistance(target.ServerPosition) <= _spellW.Range && enoughMana)
                        {
                            _comboW = true;
                            _spellW.Cast();
                        }
                    }
                    else if (!enoughMana)
                    {
                        RegulateWState(true);
                    }
                }
                else
                {
                    RegulateWState();
                }
            }

            if (comboE && _spellE.IsReady())
            {
                CastE(Helper.EnemyTeam.OrderBy(x => x.LSDistance(ObjectManager.Player)).FirstOrDefault(x => _spellE.IsInRange(x)));
            }
        }
示例#19
0
        private static void Farm(bool laneClear)
        {
            if (!menuFarm["EnabledFarm"].Cast<CheckBox>().CurrentValue)
            {
                return;
            }

            if (Player.ManaPercent < menuFarm["Lane.Mana"].Cast<Slider>().CurrentValue)
            {
                return;
            }
            if (!Orbwalker.CanMove)
            {
                return;
            }

            var rangedMinionsQ = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range + Q.Width + 30, MinionTypes.Ranged);
            var allMinionsQ = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range + Q.Width + 30);
            var rangedMinionsW = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, W.Range + W.Width + 30, MinionTypes.Ranged);
            var allMinionsW = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, W.Range + W.Width + 30);

            var useQi = menuFarm["UseQFarm"].Cast<ComboBox>().CurrentValue;
            var useWi = menuFarm["UseWFarm"].Cast<ComboBox>().CurrentValue;
            var useQ = (laneClear && (useQi == 1 || useQi == 2)) || (!laneClear && (useQi == 0 || useQi == 2));
            var useW = (laneClear && (useWi == 1 || useWi == 2)) || (!laneClear && (useWi == 0 || useWi == 2));

            if (useQ && Q.IsReady())
                if (laneClear)
                {
                    var fl1 = Q.GetCircularFarmLocation(rangedMinionsQ, Q.Width);
                    var fl2 = Q.GetCircularFarmLocation(allMinionsQ, Q.Width);

                    if (fl1.MinionsHit >= 3)
                    {
                        Q.Cast(fl1.Position);
                    }

                    else if (fl2.MinionsHit >= 2 || allMinionsQ.Count == 1)
                    {
                        Q.Cast(fl2.Position);
                    }
                }
                else
                {
                    foreach (var minion in allMinionsQ.Where(minion => !Orbwalking.InAutoAttackRange(minion) && minion.Health < 0.75 * Q.GetDamage(minion)))
                    {
                        Q.Cast(minion);
                    }
                }

            if (useW && W.IsReady() && allMinionsW.Count > 3)
            {
                if (laneClear)
                {
                    if (Player.Spellbook.GetSpell(SpellSlot.W).ToggleState == 1)
                    {
                        //WObject
                        var gObjectPos = GetGrabableObjectPos(false);

                        if (gObjectPos.LSTo2D().IsValid() && Utils.TickCount - W.LastCastAttemptT > Game.Ping + 150)
                        {
                            W.Cast(gObjectPos);
                        }
                    }
                    else if (Player.Spellbook.GetSpell(SpellSlot.W).ToggleState != 1)
                    {
                        var fl1 = Q.GetCircularFarmLocation(rangedMinionsW, W.Width);
                        var fl2 = Q.GetCircularFarmLocation(allMinionsW, W.Width);

                        if (fl1.MinionsHit >= 3 && W.IsInRange(fl1.Position.To3D()))
                        {
                            W.Cast(fl1.Position);
                        }

                        else if (fl2.MinionsHit >= 1 && W.IsInRange(fl2.Position.To3D()) && fl1.MinionsHit <= 2)
                        {
                            W.Cast(fl2.Position);
                        }
                    }
                }
            }
        }
示例#20
0
        private static void Clear()
        {
            SmiteMob();
            var minionObj =
                Helper.GetMinions(E.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth)
                .Cast <Obj_AI_Base>()
                .ToList();

            if (!minionObj.Any())
            {
                return;
            }
            if (clearQ && Q.IsReady())
            {
                var pos = Q.GetCircularFarmLocation(minionObj.Where(i => Q.IsInRange(i, Q.Range + Q.Width / 2)).ToList());
                if (pos.MinionsHit > 1)
                {
                    Q.Cast(pos.Position);
                    return;
                }
                var obj = minionObj.FirstOrDefault(i => i.MaxHealth >= 1200);
                if (obj != null && Q.IsInRange(obj, Q.Range + Q2.Width / 2) && Q.IsReady())
                {
                    Q.Cast(obj);
                    return;
                }
            }
            if (clearE && E.IsReady())
            {
                var pos = E.GetLineFarmLocation(minionObj);
                if (pos.MinionsHit > 0)
                {
                    E.Cast(pos.Position);
                    return;
                }
            }
            if (clearW && W.IsReady())
            {
                if (myHero.HealthPercent >= (WPriority ? 85 : ClearWHpU))
                {
                    if (!HaveWDmg)
                    {
                        W.Cast();
                        return;
                    }
                }
                else if (HaveWDmg)
                {
                    W.Cast();
                    return;
                }
            }
            if (Item)
            {
                var item = Hydra.IsReady() ? Hydra : Tiamat;
                if (item.IsReady() &&
                    (minionObj.Count(i => item.IsInRange(i)) > 2 ||
                     minionObj.Any(i => i.MaxHealth >= 1200 && i.Distance(myHero) < item.Range - 80)))
                {
                    item.Cast();
                }
            }
        }
示例#21
0
文件: LeeSin.cs 项目: fgpmaia/Lsharp
 public static bool SmiteCollision(Obj_AI_Hero Target, Spell Skill)
 {
     if (!SmiteReady()) return false;
     var ListCol = Skill.GetPrediction(Target).CollisionObjects.Where(i => IsValid(i, Skill.Range) && Skill.WillHit(i.Position, Target.Position, (int)i.BoundingRadius));
     if (Skill.IsInRange(Target.Position) && ListCol.Count() == 1)
     {
         if (ListCol.First() is Obj_AI_Minion && CastSmite(ListCol.First()))
         {
             Skill.Cast(Target.Position);
             return true;
         }
     }
     return false;
 }
示例#22
0
        public override void ExecuteLaneClear()
        {
            List <Obj_AI_Base> laneMinions;

            var laneWValue = Program.laneclear["Lane.UseW"].Cast <ComboBox>().CurrentValue;

            if (laneWValue != 0 && W.IsReady())
            {
                var totalAa =
                    ObjectManager.Get <Obj_AI_Minion>()
                    .Where(
                        m =>
                        m.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 + W.Range))
                    .Sum(mob => (int)mob.Health);

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

            var laneQValue = Program.laneclear["Lane.UseQ"].Cast <ComboBox>().CurrentValue;

            if (laneQValue != 0 && W.IsReady())
            {
                if (laneQValue == 1 || laneQValue == 3)
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in vMinions
                             .Where(minions => minions.Health < ObjectManager.Player.LSGetSpellDamage(minions, SpellSlot.Q))
                             .Where(
                                 m =>
                                 m.LSIsValidTarget(Q.Range) &&
                                 m.LSDistance(ObjectManager.Player.Position) > GetRealAARange)
                             )
                    {
                        var qP  = Q.GetPrediction(minions);
                        var hit = qP.CastPosition.LSExtend(ObjectManager.Player.Position, -140);
                        if (qP.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High)
                        {
                            Q.Cast(hit);
                        }
                    }
                }
                if (laneQValue == 2 || laneQValue == 3)
                {
                    var minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range * 1);

                    foreach (var n in from n in minions
                             let xH =
                                 HealthPrediction.GetHealthPrediction(n,
                                                                      (int)(ObjectManager.Player.AttackCastDelay * 1000), Game.Ping / 2 + 100)
                                 where xH < 0
                                 where n.Health < Q.GetDamage(n)
                                 select n)
                    {
                        Q.Cast(n);
                    }
                }
            }

            var laneEValue = Program.laneclear["Lane.UseE"].Cast <ComboBox>().CurrentValue;

            if (laneEValue != 0 && E.IsReady())
            {
                laneMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range,
                                                       MinionTypes.All);

                if (laneMinions != null)
                {
                    var locE = E.GetLineFarmLocation(laneMinions);
                    if (laneMinions.Count == laneMinions.Count(m => ObjectManager.Player.LSDistance(m) < E.Range) &&
                        locE.MinionsHit > laneEValue && locE.Position.IsValid())
                    {
                        E.Cast(locE.Position);
                    }
                }
            }

            var laneRValue = Program.laneclear["Lane.UseR"].Cast <ComboBox>().CurrentValue;

            if (laneRValue != 0 && R.IsReady() && UltiBuffStacks < Program.laneclear["Lane.UseRLim"].Cast <Slider>().CurrentValue)
            {
                switch (laneRValue)
                {
                case 1:
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in vMinions
                             .Where(minions => minions.Health < R.GetDamage(minions))
                             .Where(
                                 m =>
                                 m.LSIsValidTarget(R.Range) &&
                                 m.LSDistance(ObjectManager.Player.Position) > GetRealAARange)
                             )
                    {
                        R.Cast(minions);
                    }

                    break;
                }

                case 2:
                {
                    laneMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, R.Range + R.Width + 30,
                                                           MinionTypes.Ranged);

                    if (laneMinions != null)
                    {
                        var locR = R.GetCircularFarmLocation(laneMinions, R.Width * 0.75f);
                        if (locR.MinionsHit >= laneEValue && R.IsInRange(locR.Position.To3D()))
                        {
                            R.Cast(locR.Position);
                        }
                    }

                    break;
                }
                }
            }
        }