Пример #1
0
        static AutoWalker()
        {
            GameID     = DateTime.Now.Ticks + "" + RandomString(10);
            newPF      = MainMenu.GetMenu("AB").Get <CheckBox>("newPF").CurrentValue;
            NavGraph   = new NavGraph(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "EloBuddy\\AutoBuddyPlus"));
            PfNodes    = new List <Vector3>();
            color      = new ColorBGRA(79, 219, 50, 255);
            MyNexus    = ObjectManager.Get <Obj_HQ>().First(n => n.IsAlly);
            EneMyNexus = ObjectManager.Get <Obj_HQ>().First(n => n.IsEnemy);
            EnemyLazer =
                ObjectManager.Get <Obj_AI_Turret>().FirstOrDefault(tur => !tur.IsAlly && tur.GetLane() == Lane.Spawn);
            myHero = ObjectManager.Player;
            initSummonerSpells();

            Target = ObjectManager.Player.Position;
            Orbwalker.DisableMovement = false;

            Orbwalker.DisableAttacking = false;
            Game.OnUpdate += Game_OnUpdate;
            Orbwalker.OverrideOrbwalkPosition = () => Target;
            if (Orbwalker.HoldRadius > 130 || Orbwalker.HoldRadius < 80)
            {
                Chat.Print("=================WARNING=================", Color.Red);
                Chat.Print("Your hold radius value in orbwalker isn't optimal for AutoBuddy", Color.Aqua);
                Chat.Print("Please set hold radius through menu=>Orbwalker");
                Chat.Print("Recommended values: Hold radius: 80-130, Delay between movements: 100-250");
            }

            Drawing.OnDraw += Drawing_OnDraw;

            Core.DelayAction(OnEndGame, 20000);
            updateItems();
            oldOrbwalk();
            Game.OnTick += OnTick;
        }
Пример #2
0
        //start of divehelper logic
        private static float minionTankCheck(Obj_AI_Turret enemytower)
        {
            float timetanked = 0;

            if (enemytower == null)
            {
                return(timetanked);
            }
            var allyminionsundertower = ObjectManager.Get <Obj_AI_Minion>().Where(x => x.Distance(enemytower) < 900 && !x.IsDead && x.IsAlly);

            if (allyminionsundertower == null)
            {
                return(timetanked);
            }

            foreach (var minion in allyminionsundertower)
            {
                float shotssurvived = (float)(minion.Health / enemytower.GetAutoAttackDamage(minion));
                if (shotssurvived < 1)
                {
                    shotssurvived = 1;
                }
                timetanked += shotssurvived * enemytower.AttackSpeedMod;
            }
            float timetankedXD = timetanked;

            timetanked = 0;
            return(timetankedXD);
        }
Пример #3
0
        static AutoWalker()
        {
            myNexus = ObjectManager.Get<Obj_HQ>().First(n => n.IsAlly);
            enemyNexus = ObjectManager.Get<Obj_HQ>().First(n => n.IsEnemy);
            enemyLazer = ObjectManager.Get<Obj_AI_Turret>().FirstOrDefault(tur => tur.IsEnemy && tur.GetLane() == Lane.Spawn);
            p = ObjectManager.Player;

            if (p.Spellbook.GetSpell(SpellSlot.Summoner1).Name == "summonerheal")
            {
                Heal = new Spell.Active(SpellSlot.Summoner1);
            }
            if (p.Spellbook.GetSpell(SpellSlot.Summoner2).Name == "summonerheal")
            {
                Heal = new Spell.Active(SpellSlot.Summoner2);
            }
            if (p.Spellbook.GetSpell(SpellSlot.Summoner1).Name == "summonerhaste")
            {
                Ghost = new Spell.Active(SpellSlot.Summoner1);
            }
            if (p.Spellbook.GetSpell(SpellSlot.Summoner2).Name == "summonerhaste")
            {
                Ghost = new Spell.Active(SpellSlot.Summoner2);
            }

            target = ObjectManager.Player.Position;
            Orbwalker.DisableMovement = true;
            Orbwalker.OnPreAttack += Orbwalker_OnPreAttack;
            Game.OnTick += OnTick;
            if (MainMenu.GetMenu("AB").Get<CheckBox>("debuginfo").CurrentValue)
                Drawing.OnDraw += Drawing_OnDraw;
        }
Пример #4
0
 public TurretBase(Obj_AI_Turret turret)
 {
     _turret    = turret;
     _location  = GetTurretLocation(turret);
     _priority  = GetPriority(turret);
     _difficult = IsDifficult(_priority);
 }
Пример #5
0
 /// <summary>
 /// Give me the estimated position via SummonersRift.Base.TowerXYZ
 /// </summary>
 public ObjectiveInnerTurret(Vector2 position, ObjectiveOuterTurret requiredTurret)
     : base(position)
 {
     Object = ObjectManager.Get<Obj_AI_Turret>().FirstOrDefault(tower => Math.Abs(tower.Position.X - position.X) < ObjectiveOuterTurret.EstimatedPositionRange && Math.Abs(tower.Position.Y - position.Y) < ObjectiveOuterTurret.EstimatedPositionRange);
     _requiredTurret = requiredTurret;
     RequiredObjectives.Add(requiredTurret);
 }
Пример #6
0
        private void Obj_AI_Hero_OnNewPath(Obj_AI_Base sender, GameObjectNewPathEventArgs args)
        {
            if (!IsActive() || !sender.IsMe)
            {
                return;
            }

            for (int i = 0; i < args.Path.Length; i++)
            {
                var           point      = args.Path[i];
                Obj_AI_Turret baseTurret = ObjectManager.Get <Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 1425, true, point));
                if (baseTurret != null)
                {
                    Vector3 newPos;
                    if (i == 0)
                    {
                        Obj_AI_Turret baseAllyTurret = ObjectManager.Get <Obj_AI_Turret>().Find(turret => IsBaseTurret(turret, 999999999, false, ObjectManager.Player.ServerPosition));
                        newPos = baseTurret.ServerPosition.Extend(baseAllyTurret.ServerPosition, 1425);
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
                        return;
                    }
                    else
                    {
                        float dist =
                            args.Path[i - 1].Distance(
                                baseTurret.ServerPosition) - 1425f - 70f;
                        newPos = args.Path[i - 1].Extend(point, dist);
                    }
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, newPos);
                }
            }
        }
Пример #7
0
        private void Drawing_OnDraw(EventArgs args)
        {
            float turretRange = 800 + Player.Instance.BoundingRadius;
            int   drawRange   = towerRangeMenu["rangetodraw"].Cast <Slider>().CurrentValue;

            foreach (KeyValuePair <int, Obj_AI_Turret> entry in turrets)
            {
                Obj_AI_Turret turret = entry.Value;

                if (turret == null || !turret.IsValid || turret.IsDead)
                {
                    Core.DelayAction(() => turrets.Remove(entry.Key), 1);
                    continue;
                }

                if (turret.IsAlly && !towerRangeMenu["drawallyrange"].Cast <CheckBox>().CurrentValue || turret.IsEnemy && !towerRangeMenu["drawenemyrange"].Cast <CheckBox>().CurrentValue || Player.Instance.IsDead)
                {
                    continue;
                }

                float distToTurret = Player.Instance.ServerPosition.Distance(turret.Position);
                if (distToTurret < turretRange + drawRange)
                {
                    if (distToTurret < turretRange && turret.IsEnemy)
                    {
                        Circle.Draw(new ColorBGRA(255, 0, 0, 255), turretRange, 5, turret.Position);
                        continue;
                    }

                    float alpha = distToTurret > turretRange ? ((turretRange + drawRange - distToTurret) / 2) / (drawRange / 2) : 1f;
                    Circle.Draw(new ColorBGRA(0, 255, 0, alpha), turretRange, 5, turret.Position);
                }
            }
        }
Пример #8
0
        public static void Harass()
        {
            Obj_AI_Turret closestTower = ObjectManager.Get <Obj_AI_Turret>().Where(tur => tur.IsAlly).OrderBy(tur => tur.Distance(player.Position)).First();



            if (player.Mana / player.MaxMana * 100 > xMenu.SubMenu("Harass").Item("Harassmana").GetValue <Slider>().Value)
            {
                return;
            }


            var target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (target == null)
            {
                return;
            }
            {
                if (target.IsValidTarget(Q.Range) && Q.IsReady() && xMenu.Item("hQ").GetValue <bool>() == true)
                {
                    Q.Cast(target, xMenu.Item("Packet").GetValue <bool>());
                }

                if (target.IsValidTarget(E.Range) && E.IsReady() && xMenu.Item("hE").GetValue <bool>() == true)
                {
                    E.Cast(target, xMenu.Item("Packet").GetValue <bool>());
                    E2.Cast(closestTower.ServerPosition);
                }
            }
        }
Пример #9
0
        private static void Harass()
        {
            Obj_AI_Turret closestTower =
                ObjectManager.Get <Obj_AI_Turret>()
                .Where(tur => tur.IsAlly)
                .OrderBy(tur => tur.Distance(Player.Position))
                .First();

            Obj_AI_Hero qTarget = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (qTarget != null && Config.Item("UseQHarass").GetValue <bool>() &&
                (qTarget.IsValidTarget(Q.Range) && Q.IsReady()))
            {
                Q.Cast(qTarget);
            }

            if (qTarget != null && Config.Item("UseWHarass").GetValue <bool>() && W.IsReady())
            {
                W.Cast();
            }
            if (E.IsReady() && Config.Item("UseEHarass").GetValue <bool>())
            {
                sendMovementPacket(closestTower.ServerPosition.To2D());
                if (JumpState != 1)
                {
                    E.Cast(closestTower.ServerPosition);
                }
                if (JumpState == 1)
                {
                    E2.Cast(closestTower.ServerPosition);
                }
            }
            // Had same Harass idea but didn´t know how to script it. Credits to DZ191
        }
Пример #10
0
 public static Lane GetLane(this Obj_AI_Turret tur)
 {
     if (tur.Name.EndsWith("Shrine_A"))
     {
         return(Lane.Spawn);
     }
     if (tur.Name.EndsWith("C_02_A") || tur.Name.EndsWith("C_01_A"))
     {
         return(Lane.HQ);
     }
     if (tur.Name == null || tur.Name.Length < 12)
     {
         return(Lane.Unknown);
     }
     if (tur.Name[10] == 'R')
     {
         return(Lane.Bot);
     }
     if (tur.Name[10] == 'C')
     {
         return(Lane.Mid);
     }
     if (tur.Name[10] == 'L')
     {
         return(Lane.Top);
     }
     return(Lane.Unknown);
 }
Пример #11
0
        public static bool IsBaseTurret(Obj_AI_Turret unit,
            float range,
            bool enemyTeam,
            Vector3 from)
        {
            if (unit == null || !unit.IsValid)
            {
                return false;
            }

            if (enemyTeam && unit.Team == ObjectManager.Player.Team)
            {
                return false;
            }
            else if (!enemyTeam && unit.Team != ObjectManager.Player.Team)
            {
                return false;
            }

            if (!unit.Name.Contains("TurretShrine_A"))
            {
                return false;
            }

            var @base = unit as Obj_AI_Base;
            var unitPosition = @base != null ? @base.ServerPosition : unit.Position;

            return !(range < float.MaxValue) ||
                   !(Vector2.DistanceSquared(
                       (@from.To2D().IsValid() ? @from : ObjectManager.Player.ServerPosition).To2D(),
                       unitPosition.To2D()) > range * range);
        }
Пример #12
0
        private static List <ChampLane> GetChampLanes(float maxDistance = 3000, float maxDistanceFront = 4000)
        {
            Obj_AI_Turret top1 = GetAllyTurret("L_03_A");
            Obj_AI_Turret top2 = GetAllyTurret("L_02_A");
            Obj_AI_Turret mid1 = GetAllyTurret("C_05_A");
            Obj_AI_Turret mid2 = GetAllyTurret("C_04_A");
            Obj_AI_Turret bot1 = GetAllyTurret("R_03_A");
            Obj_AI_Turret bot2 = GetAllyTurret("R_02_A");

            List <ChampLane> ret = new List <ChampLane>();

            foreach (AIHeroClient h in EntityManager.Heroes.Allies.Where(hero => hero.IsAlly && !hero.IsMe))
            {
                Lane lane = Lane.Unknown;
                if (h.Distance(top1) < maxDistanceFront || h.Distance(top2) < maxDistance)
                {
                    lane = Lane.Top;
                }
                else if (h.Distance(mid1) < maxDistanceFront || h.Distance(mid2) < maxDistance)
                {
                    lane = Lane.Mid;
                }
                else if (h.Distance(bot1) < maxDistanceFront || h.Distance(bot2) < maxDistance)
                {
                    lane = Lane.Bot;
                }
                else if (h.FindSummonerSpellSlotFromName("SummonerSmite") != SpellSlot.Unknown)
                {
                    lane = Lane.Jungle;
                }
                ret.Add(new ChampLane(h, lane));
            }
            return(ret);
        }
Пример #13
0
        public void ChangeLane(Lane l)
        {
            status = "selected " + l;
            Obj_AI_Turret ally = null, enemy = null;

            if (l == Lane.Top)
            {
                ally  = (GetAllyTurret("L_03_A") ?? GetAllyTurret("L_02_A")) ?? GetAllyTurret("L_01_A");
                enemy = (GetEnemyTurret("L_03_A") ?? GetEnemyTurret("L_02_A")) ?? GetEnemyTurret("L_01_A");
            }
            else if (l == Lane.Bot)
            {
                ally  = (GetAllyTurret("R_03_A") ?? GetAllyTurret("R_02_A")) ?? GetAllyTurret("R_01_A");
                enemy = (GetEnemyTurret("R_03_A") ?? GetEnemyTurret("R_02_A")) ?? GetEnemyTurret("R_01_A");
            }
            else if (l == Lane.Mid)
            {
                ally  = (GetAllyTurret("C_05_A") ?? GetAllyTurret("C_04_A")) ?? GetAllyTurret("C_03_A");
                enemy = (GetEnemyTurret("R_05_A") ?? GetEnemyTurret("R_04_A")) ?? GetEnemyTurret("C_03_A");
            }

            if (ally == null)
            {
                ally = GetAllyHQTurret() ?? GetAllySpawnTurret();
            }

            if (enemy == null)
            {
                enemy = GetEnemyHQTurret() ?? GetEnemySpawnTurret();
            }

            currentLogic.pushLogic.Reset(ally, enemy, l);
        }
Пример #14
0
        private static Obj_AI_Turret SpawnTurret()
        {
            Obj_AI_Turret spawn = null;

            spawn = EntityManager.Turrets.Allies.Where(x => x.Distance(Spawn) < 500).First();
            return(spawn);
        }
Пример #15
0
        public static bool IsBaseTurret(Obj_AI_Turret unit,
                                        float range,
                                        bool enemyTeam,
                                        Vector3 from)
        {
            if (unit == null || !unit.IsValid)
            {
                return(false);
            }

            if (enemyTeam && unit.Team == ObjectManager.Player.Team)
            {
                return(false);
            }
            else if (!enemyTeam && unit.Team != ObjectManager.Player.Team)
            {
                return(false);
            }

            if (!unit.Name.Contains("TurretShrine_A"))
            {
                return(false);
            }

            var @base        = unit as Obj_AI_Base;
            var unitPosition = @base != null ? @base.ServerPosition : unit.Position;

            return(!(range < float.MaxValue) ||
                   !(Vector2.DistanceSquared(
                         (@from.To2D().IsValid() ? @from : ObjectManager.Player.ServerPosition).To2D(),
                         unitPosition.To2D()) > range * range));
        }
Пример #16
0
        private static List <ChampLane> GetChampLanes(float maxDistance = 2000, float maxDistanceFront = 3000)
        {
            Obj_AI_Turret top1 =
                ObjectManager.Get <Obj_AI_Turret>().First(tur => tur.IsAlly && tur.Name.EndsWith("L_03_A"));
            Obj_AI_Turret top2 =
                ObjectManager.Get <Obj_AI_Turret>().First(tur => tur.IsAlly && tur.Name.EndsWith("L_02_A"));

            Obj_AI_Turret bot1 =
                ObjectManager.Get <Obj_AI_Turret>().First(tur => tur.IsAlly && tur.Name.EndsWith("R_03_A"));
            Obj_AI_Turret bot2 =
                ObjectManager.Get <Obj_AI_Turret>().First(tur => tur.IsAlly && tur.Name.EndsWith("R_02_A"));

            List <ChampLane> ret = new List <ChampLane>();

            foreach (AIHeroClient h in EntityManager.Heroes.Allies.Where(hero => hero.IsAlly && !hero.IsMe))
            {
                Lane lane = Lane.Unknown;
                if (h.Distance(top1) < maxDistanceFront || h.Distance(top2) < maxDistance)
                {
                    lane = Lane.Top;
                }

                if (h.Distance(bot1) < maxDistanceFront || h.Distance(bot2) < maxDistance)
                {
                    lane = Lane.Bot;
                }

                ret.Add(new ChampLane(h, lane));
            }
            return(ret);
        }
Пример #17
0
        public static Obj_AI_Turret GetMostCloseTower(this Obj_AI_Base target)
        {
            Obj_AI_Turret tur = null;

            if (target.IsDead)
            {
                return(null);
            }

            foreach (var turret in ObjectManager.Get <Obj_AI_Turret>().Where(t =>
                                                                             t.IsValid && !t.IsDead && t.Health > 1f && t.IsVisible && t.Distance(target) < 1000))
            {
                if (turret != null)
                {
                    if (tur == null)
                    {
                        tur = turret;
                    }
                    else if (tur != null && tur.Distance(target) > turret.Distance(target))
                    {
                        tur = turret;
                    }
                }
            }
            return(tur);
        }
Пример #18
0
        private static Lanes GetLane(Obj_AI_Turret turret)
        {
            if ((turret.Distance(Point1) <= 1500 || turret.Distance(Point2) <= 1500 || turret.Distance(Point3) <= 1500 ||
                 turret.Distance(Point4) <= 1500 || turret.Distance(Point5) <= 1500 || turret.Distance(Point6) <= 1500 ||
                 turret.Distance(Point7) <= 1500 || turret.Distance(Point8) <= 1500 || turret.Distance(Point9) <= 1500 ||
                 turret.Distance(Point10) <= 1500 || turret.Distance(Point11) <= 1500 || turret.Distance(Point12) <= 1500 ||
                 turret.Distance(Point13) <= 1500 || turret.Distance(Point14) <= 1500 || turret.Distance(Point15) <= 1500 ||
                 turret.Distance(Point16) <= 1500 || turret.Distance(Point17) <= 1500 || turret.Distance(Point18) <= 1500 ||
                 turret.Distance(Point19) <= 1500 || turret.Distance(Point20) <= 1500 || turret.Distance(Point21) <= 1500 ||
                 turret.Distance(Point22) <= 1500 || turret.Distance(Point23) <= 1500 || turret.Distance(Point24) <= 1500 ||
                 turret.Distance(Point25) <= 1500))
            {
                return(Lanes.Bot);
            }

            if ((turret.Distance(Pointtop1) <= 1500 || turret.Distance(Pointtop2) <= 1500 || turret.Distance(Pointtop3) <= 1500 ||
                 turret.Distance(Pointtop4) <= 1500 || turret.Distance(Pointtop5) <= 1500 || turret.Distance(Pointtop6) <= 1500 ||
                 turret.Distance(Pointtop7) <= 1500 || turret.Distance(Pointtop8) <= 1500 || turret.Distance(Pointtop9) <= 1500 ||
                 turret.Distance(Pointtop10) <= 1500 || turret.Distance(Pointtop11) <= 1500))
            {
                return(Lanes.Top);
            }

            if (turret.Distance(Pointmid1) <= 800 || turret.Distance(Pointmid2) <= 800 || turret.Distance(Pointmid3) <= 800 ||
                turret.Distance(Pointmid4) <= 800 || turret.Distance(Pointmid5) <= 800 || turret.Distance(Pointmid6) <= 800 ||
                turret.Distance(Pointmid7) <= 800 || turret.Distance(Pointmid8) <= 800 || turret.Distance(Pointmid9) <= 800 ||
                turret.Distance(Pointmid10) <= 800)
            {
                return(Lanes.Mid);
            }
            return(Lanes.Unknown);
        }
Пример #19
0
 private static void FireOnTurretShot(GameObject unit, Obj_AI_Turret turret, TurretShotArgs.TurretShotType type)
 {
     if (OnTurretShot != null)
     {
         OnTurretShot(MethodBase.GetCurrentMethod().DeclaringType, new TurretShotArgs(unit, turret, type));
     }
 }
Пример #20
0
        /* TODO: UNFINISHED */
        private static void MethodMinion()
        {
            IEnumerable <Obj_AI_Minion> minions = Globals.GetLaneMinions(2000);

            if (minions.IsEmpty())
            {
                return;
            }

            Obj_AI_Minion target = minions.FirstOrDefault();

            if (!target.IsValid())
            {
                return;
            }

            if (Globals.MyHero.IsUnderEnemyTurret())
            {
                Obj_AI_Turret _Turret = ObjectManager.Turrets.Enemy.MinOrDefault(x => x.Distance(Globals.MyHero));
                Globals.MyHero.IssueOrder(Globals.Tibbers.CanAttack ? GameObjectOrder.AutoAttackPet : GameObjectOrder.MovePet, target);
            }
            else
            {
                Globals.MyHero.IssueOrder(Globals.Tibbers.CanAttack ? GameObjectOrder.AutoAttackPet : GameObjectOrder.MovePet, target);
            }
        }
Пример #21
0
        private static void onDraw(EventArgs args)
        {
            Drawing.DrawCircle(LeeSin.Player.Position, 730, Color.Blue);

            /* if(map.isWall(Game.CursorPos.To2D()))
             *    Drawing.DrawCircle(Game.CursorPos, 200, Color.Red);
             * else
             *    Drawing.DrawCircle(Game.CursorPos, 200, Color.Beige);
             * Polygon pol;
             * if ((pol = map.getInWhichPolygon(Game.CursorPos.To2D())) != null)
             * {
             *    /*SharpDX.Vector2 start = pol.Points[pol.Count() - 1];
             *    foreach (SharpDX.Vector2 vecPol in pol.Points)
             *    {
             *        SharpDX.Vector2 closest = pol.ClosestVec(start, vecPol, Game.CursorPos.To2D());
             *        Drawing.DrawCircle(closest.To3D(), 100, Color.Green);
             *        start = vecPol;
             *    }
             *    Drawing.DrawCircle(LeeSin.Player.Position, 400, Color.Green);
             *    SharpDX.Vector2 proj = pol.getProjOnPolygon(Game.CursorPos.To2D());
             *    Drawing.DrawCircle(proj.To3D(), 100, Color.Green);
             * }*/
            //ObjectManager.Get<Obj_AI_Turret>().Where(tur => tur.IsAlly).OrderBy(tur => tur.Distance(LeeSin.Player.ServerPosition)).First().Position;

            Obj_AI_Turret closest_tower = ObjectManager.Get <Obj_AI_Turret>().Where(tur => tur.IsAlly).OrderBy(tur => tur.Distance(LeeSin.Player.ServerPosition)).First();
            Obj_AI_Base   jumpOn        = ObjectManager.Get <Obj_AI_Base>().Where(ally => ally.IsAlly && !(ally is Obj_AI_Turret) && !ally.IsMe && ally.Distance(LeeSin.Player.ServerPosition) < 700).OrderBy(tur => tur.Distance(closest_tower.ServerPosition)).First();

            Drawing.DrawCircle(closest_tower.Position, 300, Color.Red);
            Drawing.DrawCircle(jumpOn.Position, 200, Color.Red);



            if (LeeSin.LockedTarget != null)
            {
                Drawing.DrawCircle(LeeSin.LockedTarget.Position, 200, Color.Red);
            }

            foreach (Polygon pol in map.poligs)
            {
                pol.Draw(Color.BlueViolet, 3);
            }

            if (LeeSin.testSpellCast != null)
            {
                Drawing.DrawCircle(LeeSin.testSpellCast.To3D(), 100, Color.Blue);
            }

            if (LeeSin.testSpellProj != null)
            {
                Drawing.DrawCircle(LeeSin.testSpellProj.To3D(), 100, Color.Red);
            }


            //LeeSin.testSpellProj
            // foreach (Polygon pol in map.poligs)
            //{
            // pol.Draw(Color.Red, 2);

            //}
        }
Пример #22
0
        /// <summary>
        ///     Gets the turret tier type.
        /// </summary>
        /// <param name="turret">
        ///     The turret.
        /// </param>
        /// <returns>
        ///     The <see cref="TurretType" />.
        /// </returns>
        public static TurretType GetTurretType(this Obj_AI_Turret turret)
        {
            switch (turret.CharData.BaseSkinName)
            {
            case "SRUAP_Turret_Order1":
            case "SRUAP_Turret_Chaos1":
            case "ha_ap_orderturret":
            case "HA_AP_OrderTurret2":
            case "HA_AP_OrderTurret3":
            case "HA_AP_ChaosTurret":
            case "HA_AP_ChaosTurret2":
            case "HA_AP_ChaosTurret3":
                return(TurretType.TierOne);

            case "SRUAP_Turret_Order2":
            case "SRUAP_Turret_Chaos2":
                return(TurretType.TierTwo);

            case "SRUAP_Turret_Order3":
            case "SRUAP_Turret_Chaos3":
                return(TurretType.TierThree);

            case "SRUAP_Turret_Order4":
            case "SRUAP_Turret_Chaos4":
                return(TurretType.TierFour);

            default:
                return(TurretType.Unknown);
            }
        }
Пример #23
0
        static AutoWalker()
        {
            GameID = DateTime.Now.Ticks + ""+RandomString(10);
            newPF = MainMenu.GetMenu("AB").Get<CheckBox>("newPF").CurrentValue;
            NavGraph=new NavGraph(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "EloBuddy\\AutoBuddyPlus"));
            PfNodes=new List<Vector3>();
            color = new ColorBGRA(79, 219, 50, 255);
            MyNexus = ObjectManager.Get<Obj_HQ>().First(n => n.IsAlly);
            EneMyNexus = ObjectManager.Get<Obj_HQ>().First(n => n.IsEnemy);
            EnemyLazer =
                ObjectManager.Get<Obj_AI_Turret>().FirstOrDefault(tur => !tur.IsAlly && tur.GetLane() == Lane.Spawn);
            myHero = ObjectManager.Player;
            initSummonerSpells();

            Target = ObjectManager.Player.Position;
            Orbwalker.DisableMovement = false;

            Orbwalker.DisableAttacking = false;
            Game.OnUpdate += Game_OnUpdate;
            Orbwalker.OverrideOrbwalkPosition = () => Target;
            if (Orbwalker.HoldRadius > 130 || Orbwalker.HoldRadius < 80)
            {
                Chat.Print("=================WARNING=================", Color.Red);
                Chat.Print("Your hold radius value in orbwalker isn't optimal for AutoBuddy", Color.Aqua);
                Chat.Print("Please set hold radius through menu=>Orbwalker");
                Chat.Print("Recommended values: Hold radius: 80-130, Delay between movements: 100-250");
            }
            
            Drawing.OnDraw += Drawing_OnDraw;
            
            Core.DelayAction(OnEndGame, 20000);
            updateItems();
            oldOrbwalk();
            Game.OnTick += OnTick;
        }
Пример #24
0
        private void harassMode(Obj_AI_Hero target)
        {
            Obj_AI_Turret closestTower =
                ObjectManager.Get <Obj_AI_Turret>()
                .Where(tur => tur.IsAlly)
                .OrderBy(tur => tur.Distance(player.Position))
                .First();

            if (target != null && target.IsValidTarget(E.Range))
            {
                if (Q.IsReady() && menu.Item("useQH").GetValue <bool>())
                {
                    Q.Cast(target, true);
                }
                if (W.IsReady() && menu.Item("useWH").GetValue <bool>())
                {
                    W.Cast(player, true);
                }
                if (E.IsReady() && menu.Item("eTower").GetValue <bool>())
                {
                    sendMovementPacket(closestTower.ServerPosition.To2D());
                    if (jumpStage == FizzJump.PLAYFUL && player.Spellbook.GetSpell(SpellSlot.E).Name == "FizzJump")
                    {
                        E.Cast(closestTower.ServerPosition, true);
                    }
                    if (jumpStage == FizzJump.TRICKSTER && player.Spellbook.GetSpell(SpellSlot.E).Name == "fizzjumptwo")
                    {
                        E2.Cast(closestTower.ServerPosition, true);
                    }
                }
            }
        }
Пример #25
0
        static AutoWalker()
        {
            GameID = DateTime.Now.Ticks + "" + RandomString(10);

            newPF = MainMenu.GetMenu("AB").Get <CheckBox>("newPF").CurrentValue;

            NavGraph = new NavGraph(Path.Combine(SandboxConfig.DataDirectory, "AutoBuddy"));

            PfNodes = new List <Vector3>();

            color = new ColorBGRA(79, 219, 50, 255);

            MyNexus = ObjectManager.Get <Obj_HQ>().First(n => n.IsAlly);

            EneMyNexus = ObjectManager.Get <Obj_HQ>().First(n => n.IsEnemy);

            EnemyLazer = ObjectManager.Get <Obj_AI_Turret>().FirstOrDefault(tur => !tur.IsAlly && tur.GetLane() == Lane.Spawn);

            p = ObjectManager.Player;

            initSummonerSpells();


            Chat.Print("Selecting target position.");

            Target = ObjectManager.Player.Position;

            Chat.Print("Made it through the orbwalker...");

            Orbwalker.DisableMovement = false;

            Orbwalker.DisableAttacking = false;
            Game.OnUpdate += Game_OnUpdate;

            if (!MainMenu.GetMenu("AB").Get <CheckBox>("disableAutoBuddy").CurrentValue)
            {
                Orbwalker.OverrideOrbwalkPosition = () => Target;
            }

            if (Orbwalker.HoldRadius > 130 || Orbwalker.HoldRadius < 80)
            {
                Chat.Print("=================WARNING=================", Color.Red);
                Chat.Print("Your hold radius value in orbwalker isn't optimal for AutoBuddy", Color.Aqua);
                Chat.Print("Please set hold radius through menu=>Orbwalker");
                Chat.Print("Recommended values: Hold radius: 80-130, Delay between movements: 100-250");
            }

            if (MainMenu.GetMenu("AB").Get <CheckBox>("debuginfo").CurrentValue)
            {
                Drawing.OnDraw += Drawing_OnDraw;
            }

            Core.DelayAction(OnEndGame, 20000);
            updateItems();
            oldOrbwalk();
            Game.OnTick    += OnTick;
            Chat.OnMessage += Chat_OnMessage;
            Drawing.OnDraw += Drawing_OnDraw;
        }
Пример #26
0
        public static bool getBackHarass()
        {
            Obj_AI_Turret closest_tower = ObjectManager.Get <Obj_AI_Turret>().Where(tur => tur.IsAlly).OrderBy(tur => tur.Distance(Player.ServerPosition)).First();
            Obj_AI_Base   jumpOn        = ObjectManager.Get <Obj_AI_Base>().Where(ally => ally.IsAlly && !(ally is Obj_AI_Turret) && !ally.IsMe && ally.Distance(LeeSin.Player.ServerPosition) < 700).OrderBy(tur => tur.Distance(closest_tower.ServerPosition)).First();

            W.Cast(jumpOn);
            return(false);
        }
Пример #27
0
 /// <summary>
 /// A function used to update all turrets
 /// </summary>
 public static void Update()
 {
     AllyTurrets.Clear();
     AllyTurrets = ObjectHandler.Get <Obj_AI_Turret>().FindAll(t => t.IsAlly);
     EnemyTurrets.Clear();
     EnemyTurrets       = ObjectHandler.Get <Obj_AI_Turret>().FindAll(t => !t.IsAlly);
     ClosestAllyTurret  = AllyTurrets.OrderBy(t => t.Distance(ObjectHandler.Player.Position)).FirstOrDefault();
     ClosestEnemyTurret = EnemyTurrets.OrderBy(t => t.Distance(ObjectHandler.Player.Position)).FirstOrDefault();
 }
Пример #28
0
        private static void MoveToTurret()
        {
            Obj_AI_Turret turret = EntityManager.Turrets.Allies.Where(x => !x.IsDead).OrderBy(x => x.Distance(Clone)).FirstOrDefault();

            if (turret == null)
            {
                MoveToMouse();
            }
            Player.IssueOrder(GameObjectOrder.MovePet, turret.Position.Extend(myHero, new Random().Next((int)turret.BoundingRadius, 400)).To3D());
        }
Пример #29
0
        public static bool DangerousTurret(Obj_AI_Turret turret)
        {
            if (!Config.towerDiveMenu["ylm.towerdive.enabled"].Cast <CheckBox>().CurrentValue)
            {
                return(true);
            }
            var units = ObjectManager.Get <Obj_AI_Base>().Where(o => (o.IsAlly && (o is AIHeroClient || o.IsMinion)) && turret.Distance(o, true) <= 900 * 900);

            return(units.Count() >= Config.towerDiveMenu["ylm.towerdive.minAllies"].Cast <Slider>().CurrentValue);
        }
Пример #30
0
        public static bool DangerousTurret(Obj_AI_Turret turret)
        {
            if (!Config.Param <bool>("ylm.towerdive.enabled"))
            {
                return(true);
            }
            var units = ObjectManager.Get <Obj_AI_Base>().Where(o => (o.IsAlly && (o.IsChampion() || o.IsMinion)) && turret.Distance(o, true) <= 900 * 900);

            return(units.Count() >= Config.Param <Slider>("ylm.towerdive.minAllies").Value);
        }
Пример #31
0
        private static void Game_OnGameProcessPacket(GamePacketEventArgs args)
        {
            if (args.PacketData[0] == Packet.S2C.TowerAggro.Header)
            {
                Packet.S2C.TowerAggro.Struct aggroPacket = Packet.S2C.TowerAggro.Decoded(args.PacketData);
                Obj_AI_Turret turret = ObjectManager.Get <Obj_AI_Turret>().First(t => t.NetworkId == aggroPacket.TurretNetworkId);
                Obj_AI_Base   target = ObjectManager.Get <Obj_AI_Base>().First(t => t.NetworkId == aggroPacket.TargetNetworkId);

                Game.PrintChat(turret.BaseSkinName + target.BaseSkinName);
            }



            GamePacket p = new GamePacket(args.PacketData);

            if (p.Header != Packet.S2C.TowerAggro.Header)
            {
                return;
            }
            if (Packet.S2C.TowerAggro.Decoded(args.PacketData).TargetNetworkId != Player.NetworkId)
            {
                return;
            }

            if (Game.Time - foundturret > 20 && !recalling)
            {
                var turret2 =
                    ObjectManager.Get <Obj_AI_Turret>()
                    .Where(x => x.Distance(Player.Position) < 3500 && x.IsAlly);

                if (turret2.Any())
                {
                    stopfollowing = true;
                    turret        = turret2.First();
                    foundturret   = Game.Time;
                }
            }


            if (!stopfollowing || recalling) //따라다니고 있고 리콜중이라면 패스
            {
                return;
            }

            Player.IssueOrder(GameObjectOrder.MoveTo, turret);                          // 터렛으로 움직여

            if ((Player.Distance(turret.Position) <= 350) || !(Game.Time - count > 15)) // 15초가 안지났고 터렛과의 거리가 350보다 크면
            {
                return;
            }
            Player.Spellbook.CastSpell(SpellSlot.Recall);

            recalling = true;
            count     = Game.Time;
        }
Пример #32
0
        private void castR(Obj_AI_Hero target)
        {
            if (target == null || !target.IsValidTarget(R.Width))
            {
                return;
            }

            Obj_AI_Turret closestTower =
                ObjectManager.Get <Obj_AI_Turret>()
                .Where(tur => tur.IsAlly)
                .OrderBy(tur => tur.Distance(player.Position))
                .First();
            Obj_AI_Hero allyHero =
                ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsAlly).OrderBy(
                    hero => hero.Distance(player.Position)).First();

            if (player.GetSpellDamage(target, SpellSlot.R) - 10 > target.Health && menu.Item("alwaysR").GetValue <bool>())
            {
                R.Cast(target, true);
            }

            switch (menu.Item("throwPos").GetValue <StringList>().SelectedIndex)
            {
            case 0:     // wall
                foreach (
                    Obj_AI_Hero collisionTarget in
                    ObjectManager.Get <Obj_AI_Hero>().Where(hero => hero.IsValidTarget(R.Width)))
                {
                    CastRToCollision(collisionTarget);
                }
                break;

            case 1:     // mouse
                if (R.IsReady())
                {
                    R.Cast(Game.CursorPos.To2D(), true);
                }
                break;

            case 2:     // closest tower
                //TODO: check if will land under turret
                if (closestTower.Distance(target) <= 800 && R.IsReady())
                {
                    R.Cast(closestTower.Position, true);
                }
                break;

            case 3:     // closest ally
                if (allyHero.IsValid && R.IsReady())
                {
                    R.Cast(allyHero.Position, true);
                }
                break;
            }
        }
Пример #33
0
		public static bool IsInTurret(this Obj_AI_Base targetHero, Obj_AI_Turret targetTurret = null) {
			if (targetTurret == null)
			{
				targetTurret = targetHero.GetMostCloseTower();
			}
			if (targetTurret != null && targetHero.Distance(targetTurret) < 850)
			{
				return true;
			}
			return false;
		}
Пример #34
0
 //Used for fleemode
 private static bool minionsUnderTower(Obj_AI_Turret enemytower)
 {
     if (enemytower.Spellbook.IsAutoAttacking && !enemytower.IsAttackingPlayer)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #35
0
        public static bool IsUnderTurret(Vector3 position)
        {
            Obj_AI_Turret closestTurret = EntityManager.Turrets.Enemies.Where(a =>
                                                                              a.IsInRange(position, a.AttackRange + 35) &&
                                                                              !a.IsDead).OrderBy(a => a.Distance(position)).FirstOrDefault();

            if (closestTurret == null)
            {
                return(false);
            }
            return(true);
        }
Пример #36
0
 public ObjectiveBaseTurret(Vector2 position, ObjectiveInhibitor inhib1, ObjectiveInhibitor inhib2, ObjectiveInhibitor inhib3)
     : base(position)
 {
     Object = ObjectManager.Get<Obj_AI_Turret>().FirstOrDefault(tower => Math.Abs(tower.Position.X - position.X) < ObjectiveOuterTurret.EstimatedPositionRange && Math.Abs(tower.Position.Y - position.Y) < ObjectiveOuterTurret.EstimatedPositionRange);
     _inhib1 = inhib1;
     _inhib2 = inhib2;
     _inhib3 = inhib3;
     RequireAll = false;
     RequiredObjectives.Add(inhib1);
     RequiredObjectives.Add(inhib2);
     RequiredObjectives.Add(inhib3);
 }
Пример #37
0
        //static void Game_OnGameNotifyEvent(GameNotifyEventArgs args)
        //{
        //    args.
        //}

        private static void Game_OnGameProcessPacket(GamePacketEventArgs args)
        {
            var p = new GamePacket(args.PacketData);
            if (p.Header != Packet.S2C.TowerAggro.Header)
            {
                return;
            }
            if (Packet.S2C.TowerAggro.Decoded(args.PacketData).TargetNetworkId != ObjectManager.Player.NetworkId)
            {
                return;
            }
            if (Game.Time - foundturret > 20 && !recalling)
            {
                var turret2 =
                    ObjectManager.Get<Obj_AI_Turret>()
                        .Where(x => x.IsAlly)
                        .OrderBy(x => Vector3.Distance(ObjectManager.Player.Position, x.Position))
                        .FirstOrDefault();

                if (turret2 != null)
                {
                    stopdoingshit = true;
                    turret = turret2;
                    foundturret = Game.Time;
                }
            }


            if (!stopdoingshit || recalling)
            {
                return;
            }
            ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, turret);
            if (!(ObjectManager.Player.Distance(turret) <= 350) || !(Game.Time - count > 15))
            {
                return;
            }
            
            
            Talk(stufftosay[saycounter]);
            saycounter++;
            ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Recall);

            recalling = true;
            count = Game.Time;
        }
Пример #38
0
 /// <summary>
 /// Give me the estimated position via SummonersRift.Base.TowerXYZ
 /// </summary>
 /// <param name="position"></param>
 public ObjectiveOuterTurret(Vector2 position)
     : base(position)
 {
     Object = ObjectManager.Get<Obj_AI_Turret>().FirstOrDefault(tower => Math.Abs(tower.Position.X - position.X) < EstimatedPositionRange && Math.Abs(tower.Position.Y - position.Y) < EstimatedPositionRange);
 }
Пример #39
0
        private static Lanes GetLane(Obj_AI_Turret turret)
        {
            if ((turret.Distance(Point1) <= 1500 || turret.Distance(Point2) <= 1500 || turret.Distance(Point3) <= 1500 ||
                 turret.Distance(Point4) <= 1500 || turret.Distance(Point5) <= 1500 || turret.Distance(Point6) <= 1500 ||
                 turret.Distance(Point7) <= 1500 || turret.Distance(Point8) <= 1500 || turret.Distance(Point9) <= 1500 ||
                 turret.Distance(Point10) <= 1500 || turret.Distance(Point11) <= 1500 || turret.Distance(Point12) <= 1500 ||
                 turret.Distance(Point13) <= 1500 || turret.Distance(Point14) <= 1500 || turret.Distance(Point15) <= 1500 ||
                 turret.Distance(Point16) <= 1500 || turret.Distance(Point17) <= 1500 || turret.Distance(Point18) <= 1500 ||
                 turret.Distance(Point19) <= 1500 || turret.Distance(Point20) <= 1500 || turret.Distance(Point21) <= 1500 ||
                 turret.Distance(Point22) <= 1500 || turret.Distance(Point23) <= 1500 || turret.Distance(Point24) <= 1500 ||
                 turret.Distance(Point25) <= 1500))
            {
                return Lanes.Bot;
            }

            if ((turret.Distance(Pointtop1) <= 1500 || turret.Distance(Pointtop2) <= 1500 || turret.Distance(Pointtop3) <= 1500 ||
                 turret.Distance(Pointtop4) <= 1500 || turret.Distance(Pointtop5) <= 1500 || turret.Distance(Pointtop6) <= 1500 ||
                 turret.Distance(Pointtop7) <= 1500 || turret.Distance(Pointtop8) <= 1500 || turret.Distance(Pointtop9) <= 1500 ||
                 turret.Distance(Pointtop10) <= 1500 || turret.Distance(Pointtop11) <= 1500))
            {
                return Lanes.Top;
            }

            if (turret.Distance(Pointmid1) <= 800 || turret.Distance(Pointmid2) <= 800 || turret.Distance(Pointmid3) <= 800 ||
                turret.Distance(Pointmid4) <= 800 || turret.Distance(Pointmid5) <= 800 || turret.Distance(Pointmid6) <= 800 ||
                turret.Distance(Pointmid7) <= 800 || turret.Distance(Pointmid8) <= 800 || turret.Distance(Pointmid9) <= 800 ||
                turret.Distance(Pointmid10) <= 800)
            {
                return Lanes.Mid;
            }
            return Lanes.Unknown;
        }
Пример #40
0
        public static void DoAutoplay()
        {
            if (Bot.InFountain() && RandomDecision())
            {
                WalkAround(Bot.Position);
            }
            var timeElapsed = Environment.TickCount - _loaded;
            if (!Bot.IsDead)
            {
                try
                {
                    var turret = MetaHandler.EnemyTurrets.FirstOrDefault(t => t.Distance(Bot.Position) < 1200);
                    if (_overrideAttackUnitAction && !_tookRecallDecision)
                    {
                        Bot.IssueOrder(GameObjectOrder.MoveTo, _safepos.To3D());
                    }
                    if (!Bot.UnderTurret(true))
                    {
                        _overrideAttackUnitAction = false;
                    }
                    if (Bot.UnderTurret(true) && MetaHandler.NearbyAllyMinions(turret, 750) > 2 && IsBotSafe() && !_tookRecallDecision)
                    {
                            if (turret.Distance(Bot.Position) < Bot.AttackRange && !_overrideAttackUnitAction)
                                Bot.IssueOrder(GameObjectOrder.AttackUnit, turret);
                    }
                    else
                    {
                        if (TargetSelector.GetTarget(Bot.AttackRange, TargetSelector.DamageType.Physical) != null)
                        {
                            Obj_AI_Hero target = TargetSelector.GetTarget(Bot.AttackRange, TargetSelector.DamageType.Physical);
                            if (target != null && target.IsValid && !target.IsDead && IsBotSafe() &&
                                !target.UnderTurret(true) && !_overrideAttackUnitAction && !_tookRecallDecision)
                            {
                                Bot.IssueOrder(GameObjectOrder.AttackUnit, target);
                            }
                        }
                    }
                    if (Bot.UnderTurret(true) && MetaHandler.NearbyAllyMinions(turret, 750) < 2)
                    {
                        _safepos.X = (Bot.Position.X + _safe);
                        _safepos.Y = (Bot.Position.Y + _safe);
                        Bot.IssueOrder(GameObjectOrder.MoveTo, _safepos.To3D());
                    }
                    #region Carry is null
                    if (Carry == null && timeElapsed > 15000 && timeElapsed < 135000 && !_byPassLoadedCheck)
                    {
                        if (Bot.InFountain() || Bot.Distance(BotLanePos) > 400)
                        {
                            Bot.IssueOrder(GameObjectOrder.MoveTo, BotLanePos.To3D());
                        }
                        if (Bot.Distance(BotLanePos) < 1000)
                        {
                            WalkAround(BotLanePos.To3D());
                            if (timeElapsed > 60000 && !MetaHandler.ShouldSupportTopLane)
                            {
                                if (
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero => !hero.IsMe && hero.Distance(Bot.Position) < 4500 && !MetaHandler.HasSmite(hero)) !=
                                    null)
                                {
                                    Carry =
                                        MetaHandler.AllyHeroes.FirstOrDefault(
                                            hero =>
                                                !hero.IsMe && hero.Distance(Bot.Position) < 4500 && !MetaHandler.HasSmite(hero));
                                }
                            }
                            if (timeElapsed > 60000 && MetaHandler.ShouldSupportTopLane)
                            {
                                if (
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero => !hero.IsMe && hero.Distance(TopLanePos) < 4500 && !MetaHandler.HasSmite(hero)) !=
                                    null)
                                {
                                    Carry =
                                        MetaHandler.AllyHeroes.FirstOrDefault(
                                            hero =>
                                                !hero.IsMe && hero.Distance(TopLanePos) < 4500 && !MetaHandler.HasSmite(hero));
                                }
                            }
                        }
                    }
                    if (_byPassLoadedCheck && Carry == null)
                    {
                        if (MetaHandler.AllyHeroes.FirstOrDefault(hero => !hero.IsMe && !hero.InFountain() && !MetaHandler.HasSmite(hero)) != null)
                        {
                            Carry = MetaHandler.AllyHeroes.FirstOrDefault(hero => !hero.IsMe && !hero.InFountain() && !MetaHandler.HasSmite(hero));
                        }
                    }
                    #endregion
                    #region Carry is dead
                    if (Carry != null)
                    {
                        if (IsBotSafe() && Carry.IsDead || Carry.InFountain())
                        {
                            if (_tempcarry == null || _tempcarry.IsDead || _tempcarry.InFountain())
                            {
                                if (
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero =>
                                            !hero.IsMe && !hero.InFountain() && !hero.IsDead &&
                                            !MetaHandler.HasSmite(hero)) != null)
                                {
                                    _tempcarry =
                                        MetaHandler.AllyHeroes.FirstOrDefault(
                                            hero =>
                                                !hero.IsMe && !hero.InFountain() && !hero.IsDead &&
                                                !MetaHandler.HasSmite(hero));
                                }
                                if (
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero =>
                                            !hero.IsMe && !hero.InFountain() && !hero.IsDead &&
                                            !MetaHandler.HasSmite(hero)) == null &&
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead) != null)
                                {
                                    //well f**k, let's follow the jungler -sighs-
                                    _tempcarry =
                                        MetaHandler.AllyHeroes.FirstOrDefault(
                                            hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead);
                                }
                                if (!MetaHandler.AllyHeroes.Any(hero => !hero.IsMe && !hero.IsDead))
                                    //everyone is dead
                                {
                                    if (!Bot.InFountain())
                                    {
                                        NearestAllyTurret = MetaHandler.AllyTurrets.FirstOrDefault();
                                        if (NearestAllyTurret != null)
                                        {
                                            _saferecall.X = NearestAllyTurret.Position.X + _safe;
                                            _saferecall.Y = NearestAllyTurret.Position.Y;
                                            _tookRecallDecision = true;
                                            if (Bot.Position.Distance(_saferecall.To3D()) < 200)
                                            {
                                                Bot.Spellbook.CastSpell(SpellSlot.Recall);
                                            }
                                            else
                                            {

                                                Bot.IssueOrder(GameObjectOrder.MoveTo, _saferecall.To3D());
                                            }
                                        }
                                    }
                                }
                            }
                            if (_tempcarry != null)
                            {

                                Console.WriteLine("Carry dead or afk, following: " + _tempcarry.ChampionName);
                                _frontline.X = _tempcarry.Position.X + _chosen;
                                _frontline.Y = _tempcarry.Position.Y + _chosen;
                                if (!(_tempcarry.UnderTurret(true) && MetaHandler.NearbyAllyMinions(_tempcarry, 400) < 2) && IsBotSafe())
                                {
                                    if (_tempcarry.Distance(Bot) > 550 && !_tookRecallDecision)
                                    {
                                        Bot.IssueOrder(GameObjectOrder.MoveTo, _frontline.To3D());
                                        WalkAround(_tempcarry);
                                    }
                                }
                            }
                        }
                    }
                    #endregion Carry is dead
                    #region Following
                    if (Carry != null && !Carry.IsDead && !Carry.InFountain() && IsBotSafe() && !(Carry.UnderTurret(true) && MetaHandler.NearbyAllyMinions(Carry, 400) < 2))
                    {
                        Console.WriteLine("All good, following: " + Carry.ChampionName);
                        _frontline.X = Carry.Position.X + _chosen;
                        _frontline.Y = Carry.Position.Y + _chosen;
                        if (Carry.Distance(Bot) > 550 && !_tookRecallDecision)
                        {
                            Bot.IssueOrder(GameObjectOrder.MoveTo, _frontline.To3D());
                        }

                        WalkAround(Carry);
                    }
                    #endregion Following
                    #region Carry not found
                    if (timeElapsed > 135000 &&
                        Carry == null && IsBotSafe())
                    {
                        if (_tempcarry == null || _tempcarry.IsDead || _tempcarry.InFountain())
                        {
                            if (
                                MetaHandler.AllyHeroes.FirstOrDefault(
                                    hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead && !MetaHandler.HasSmite(hero)) != null)
                            {
                                _tempcarry =
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead && !MetaHandler.HasSmite(hero));
                            }
                            if (
                                MetaHandler.AllyHeroes.FirstOrDefault(
                                    hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead && !MetaHandler.HasSmite(hero)) == null &&
                                MetaHandler.AllyHeroes.FirstOrDefault(
                                    hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead) != null)
                            {
                                //well f**k, let's follow the jungler -sighs-
                                _tempcarry =
                                    MetaHandler.AllyHeroes.FirstOrDefault(
                                        hero => !hero.IsMe && !hero.InFountain() && !hero.IsDead);
                            }
                        }
                        if (_tempcarry != null)
                        {
                            Console.WriteLine("Carry not found, following: " + _tempcarry.ChampionName);
                            _frontline.X = _tempcarry.Position.X + _chosen;
                            _frontline.Y = _tempcarry.Position.Y + _chosen;
                            if (!(_tempcarry.UnderTurret(true) && MetaHandler.NearbyAllyMinions(_tempcarry, 400) < 2) && IsBotSafe())
                            {
                                if (Bot.Distance(_frontline) > 550 && !_tookRecallDecision)
                                {
                                    Bot.IssueOrder(GameObjectOrder.MoveTo, _frontline.To3D());
                                }
                                WalkAround(_tempcarry);
                            }
                        }
                    }
                    #endregion
                    #region Lowhealth mode
                    if (!IsBotSafe() && !Bot.InFountain())
                    {
                        NearestAllyTurret = MetaHandler.AllyTurrets.FirstOrDefault();
                        if (NearestAllyTurret != null)
                        {
                            _saferecall.X = NearestAllyTurret.Position.X + _safe;
                            _saferecall.Y = NearestAllyTurret.Position.Y;
                            if (Bot.Position.Distance(_saferecall.To3D()) < 200)
                            {
                                if (Environment.TickCount - _lastRecallAttempt > Rand.Next(500, 2000))
                                {
                                    Bot.Spellbook.CastSpell(SpellSlot.Recall);
                                    _lastRecallAttempt = Environment.TickCount;
                                }
                            }
                            else
                            {

                                Bot.IssueOrder(GameObjectOrder.MoveTo, _saferecall.To3D());
                            }
                        }

                    }
                    #endregion
                    #region Carry Switching

                    if ((Bot.Level > 8 || Environment.TickCount - _loaded > 900000) && Environment.TickCount - _lastSwitched > 180000)
                    {
                        var alliesSortedByKDA =
                            MetaHandler.AllyHeroes.OrderByDescending(hero => (hero.ChampionsKilled / ((hero.Deaths != 0) ? hero.Deaths : 1))); //AsunaChan2Kawaii
                        if (alliesSortedByKDA.FirstOrDefault() != null)
                        {
                            Carry = alliesSortedByKDA.FirstOrDefault();
                            _lastSwitched = Environment.TickCount;
                        }
                    }
                    #endregion
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
Пример #41
0
        public void SetAttack()
        {
            AttackableUnit orbTarget = orb.GetTarget();

            if (orbTarget != null)
            {
                if (orbTarget is Obj_AI_Hero)
                {
                    if (!Player.UnderTurret(true))
                    {
                        SetOrbWalk(orbTarget);
                    }
                }
                else if (orbTarget is Obj_AI_Minion)
                {
                    status = "Follow";
                    if (orbTarget.Health <= Player.GetAutoAttackDamage(Player, true))
                    {
                        orb.SetAttack(true);
                        Player.IssueOrder(GameObjectOrder.AttackUnit, orbTarget);
                    }
                }
            }
            else
                status = "Follow";

            lstTurrets = ObjectHandler.Get<Obj_AI_Turret>().Enemies.ToList().FindAll(t => !t.IsDead);
            turret = lstTurrets.OrderBy(t => t.Distance(Player)).ToList().Count > 0 ? lstTurrets.OrderBy(t => t.Distance(Player)).ToList()[0] : null;

            if (turret != null)
            {

                if (turret.Distance(Player) <= Player.AttackRange)
                {
                    orb.SetAttack(true);
                }

            }
        }
Пример #42
0
        private static void OnProcessSpell(Obj_AI_Base unit, GameObjectProcessSpellCastEventArgs spell)
        {
            if (unit.IsMe)
            {

                if (IsAutoAttackReset(spell.SData.Name))
                    Utility.DelayAction.Add(250, ResetAutoAttackTimer);

                if (!IsAutoAttack(spell.SData.Name))
                    return;

                if (spell.Target is Obj_AI_Base || spell.Target is Obj_BarracksDampener || spell.Target is Obj_HQ)
                {

                    _lastAaTick = Utils.GameTimeTickCount - Game.Ping/2;

                    if (spell.Target is Obj_AI_Base)
                    {
                        _lastTarget = (Obj_AI_Base) spell.Target;

                        FireOnTargetSwitch((Obj_AI_Base) spell.Target);

                        //for melle
                        if (unit.IsMeele)
                            Utility.DelayAction.Add((int) (unit.AttackCastDelay*1000 + Game.Ping*0.5) + 50,
                                () => FireAfterAttack(unit, _lastTarget));
                    }

                    FireOnAttack(unit, _lastTarget);

                }
            }

            if (!unit.IsValidTarget(2000, false) || !unit.IsAlly || unit is Obj_AI_Hero || !(unit is Obj_AI_Turret) || !IsAutoAttack(spell.SData.Name) || !(spell.Target is Obj_AI_Base))
                return;

            _turretTarget = (Obj_AI_Base)spell.Target;
            _turretAttacking = (Obj_AI_Turret)unit;
        }
Пример #43
0
 private static Obj_AI_Turret getClosestTurret(Vector3 pos)
 {
     var minions = ObjectManager.Get<Obj_AI_Turret>().ToList();
     Obj_AI_Turret closestMinion = new Obj_AI_Turret();
     float closestDistSq = float.PositiveInfinity;
     foreach (var minion in minions)
     {
         if (Vector3.Distance(pos, minion.Position) < closestDistSq)
         {
             closestDistSq = Vector3.Distance(pos, minion.Position);
             closestMinion = minion;
         }
     }
     return closestMinion;
 }
Пример #44
0
        //static void Game_OnGameNotifyEvent(GameNotifyEventArgs args)
        //{
        //    args.
        //}

        private static void Game_OnGameProcessPacket(GamePacketEventArgs args)
        {
            GamePacket p = new GamePacket(args.PacketData);
            if (p.Header != Packet.S2C.TowerAggro.Header) return;
            if (Packet.S2C.TowerAggro.Decoded(args.PacketData).TargetNetworkId != ObjectManager.Player.NetworkId)
                return;
            if (Game.Time - foundturret > 20 && !recalling)
            {
                var turret2 =
                    ObjectManager.Get<Obj_AI_Turret>()
                        .Where(x => x.Distance(ObjectManager.Player) < 3500 && x.IsAlly);

                if (turret2.Any())
                {
                    stopdoingshit = true;
                    turret = turret2.First();
                    foundturret = Game.Time;
                }
            }


            if (!stopdoingshit || recalling) return;
            ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, turret);
            if (!(ObjectManager.Player.Distance(turret) <= 350) || !(Game.Time - count > 15)) return;
            //               Game.Say(stufftosay[saycounter]);
            //               saycounter++;
            ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Recall);

            recalling = true;
            count = Game.Time;
        }
Пример #45
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            //if (Utility.InShopRange())
            //{
            //   stopdoingshit = false;
            //   recalling = false;
            // }
            //Game.PrintChat("in1");
            if (!stopfollowingshittarget)
            {
                follow =
                    ObjectManager.Get<Obj_AI_Hero>()
                        .First(x => !x.IsMe && x.IsAlly && menu.Item(x.ChampionName).GetValue<bool>()) ??
                    ObjectManager.Get<Obj_AI_Hero>().First(x => !x.IsMe && x.IsAlly && ap.Contains(x.ChampionName)) ??
                    ObjectManager.Get<Obj_AI_Hero>().First(x => !x.IsMe && x.IsAlly && bruiser.Contains(x.ChampionName)) ??
                    ObjectManager.Get<Obj_AI_Hero>().First(x => x.IsAlly && !x.IsMe);
                //followpos = follow.Position;
            }
            //Game.PrintChat(follow.ChampionName);
            // if (deathcounter == 4)
            //      deathcounter = 0;





            if (Game.Time - gamestart > 480)
            {
                follow = allies[i];
                i++;
                gamestart = Game.Time;
            }


            // Game.PrintChat("insadfsadfd");

            // if (ObjectManager.Player.IsDead && Game.Time - timedead > 80)
            //{
            //     Game.Say(deaths[deathcounter]);
            //     deathcounter++;
            //     timedead = Game.Time;
            // }

            //foreach (var c in _WardSpots.Where(x => x.Distance(ObjectManager.Player.Position) < 600))
            //{
            //    InventorySlot wardSlot = Wards.GetWardSlot();

            //    if (wardSlot != null && wardSlot.Id != ItemId.Unknown)
            //    {
            //        wardSlot.UseItem(c);
            //    }
            //}

            //foreach (var c in _SafeWardSpots.Where(x => x.WardPosition.Distance(ObjectManager.Player.Position) < 600))//x.Distance(ObjectManager.Player.Position) < 600))
            //{
            //    InventorySlot wardSlot = Wards.GetWardSlot();

            //    if (wardSlot != null && wardSlot.Id != ItemId.Unknown)
            //    {
            //        wardSlot.UseItem(c.WardPosition);
            //    }
            //}

            //foreach (var item in ids)
            //{
            //    if (Items.HasItem(ids[counter]) && counter < index + 1)
            //    {
            //        index = counter;
            //    }
            //    counter++;
            //}

            //if (Utility.InShopRange())
            //{
            //    Game.PrintChat(index.ToString());
            //    Game.PrintChat(ids[index].ToString());

            //    foreach (var item in ids)
            //    {

            //            if (!Items.HasItem(ids[index]))
            //            {
            //                Game.PrintChat(ids[index].ToString());
            //                Packet.C2S.BuyItem.Encoded(new Packet.C2S.BuyItem.Struct(ids[index])).Send();
            //                index++;
            //                return;
            //            }


            //    }
            //}


            //foreach (var item in ids)
            //{
            //    if (Items.HasItem(ids[counter]) && counter < index + 1)
            //    {
            //        index = counter;
            //    }
            //    counter++;
            //}

            //Game.PrintChat("lel");
            if (Utility.InShopRange())
            {
                // Game.PrintChat("in range");
                foreach (var item in nextItem.itemIds)
                {
                    // Game.PrintChat(item.ToString());
                    if (!Items.HasItem(item))
                    {
                        Packet.C2S.BuyItem.Encoded(new Packet.C2S.BuyItem.Struct(item, ObjectManager.Player.NetworkId))
                            .Send();

                    }
                }

                checkItemInventory();
            }
            //Game.PrintChat("hue");
            //if (saycounter == 3)
            //    saycounter = 0;
            //if (menu.Item("on").GetValue<KeyBind>().Active)
            //{
            // Game.PrintChat(index.ToString());
            // if (Items.HasItem(ids[index]))
            //    index++;
            Console.WriteLine("Recalling = " + recalling);

            Console.WriteLine("stop: " + stopdoingshit);
            // Game.PrintChat(follow.ChampionName);
            if (Game.Time - foundturret > 25)
                stopdoingshit = false;
            //if (Utility.InShopRange())
            //{
            //    Game.PrintChat(index.ToString());
            //    if (!Items.HasItem(ids[index]))
            //    {
            //        Game.PrintChat(ids[index].ToString());
            //        Packet.C2S.BuyItem.Encoded(new Packet.C2S.BuyItem.Struct(ids[index])).Send();
            //        index++;
            //    }
            //}

            if (Game.Time - followtime > 40 && followpos.Distance(follow.Position) <= 100)
            {
                follow = ObjectManager.Get<Obj_AI_Hero>().First(x => !x.IsMe && x.IsAlly && ap.Contains(x.ChampionName)) ?? ObjectManager.Get<Obj_AI_Hero>().First(x => !x.IsMe && x.IsAlly && bruiser.Contains(x.ChampionName));
                followpos = follow.Position;
                followtime = Game.Time;
                stopfollowingshittarget = true;
            }

            if (follow.IsDead)
            {
                follow = ObjectManager.Get<Obj_AI_Hero>().First(x => !x.IsMe && x.Distance(ObjectManager.Player) < 1300);
            }

            Console.WriteLine(follow.IsDead);
            if ((follow.IsDead ||
                 (follow.Distance(ObjectManager.Player.Position) > 5000 && !Utility.InShopRange() &&
                  spawn.Distance(follow.Position) < 1500) ||
                 ObjectManager.Player.Health / ObjectManager.Player.MaxHealth * 100 <
                 menu.Item("hpb").GetValue<Slider>().Value))
            {

                if (Game.Time - foundturret > 20 && !recalling)
                {
                    var turret2 =
                        ObjectManager.Get<Obj_AI_Turret>()
                            .Where(x => x.Distance(ObjectManager.Player) < 3500 && x.IsAlly);

                    if (turret2.Any())
                    {
                        stopdoingshit = true;
                        turret = turret2.First();
                        foundturret = Game.Time;
                    }
                }


                if (stopdoingshit && !recalling)
                {
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, turret);
                    if (ObjectManager.Player.Distance(turret) <= 350 && Game.Time - count > 15)
                    {
                        // Game.Say(stufftosay[saycounter]);
                        //  saycounter++;
                        ObjectManager.Player.Spellbook.CastSpell(SpellSlot.Recall);

                        recalling = true;
                        count = Game.Time;
                    }
                }
            }

            //Game.PrintChat((Game.Time - count).ToString());
            if ((Game.Time - count > 15 && Game.Time - count < 17)) //|| Utility.InShopRange())
            {
                stopdoingshit = false;
                recalling = false;
            }

            if (!recalling && !stopdoingshit && W.IsReady())
            {
                var allies2 =
                    ObjectManager.Get<Obj_AI_Hero>()
                        .Where(
                            x =>
                                x.IsAlly && x.Health / x.MaxHealth * 100 < menu.Item("allyhpw").GetValue<Slider>().Value &&
                                !x.IsDead && x.Distance(ObjectManager.Player.Position) < 550);
                var objAiHeroes = allies2 as Obj_AI_Hero[] ?? allies2.ToArray();
                if (objAiHeroes.Any() &&
                    ObjectManager.Player.Health / ObjectManager.Player.MaxHealth * 100 >
                    menu.Item("wabovehp").GetValue<Slider>().Value)
                    W.Cast(objAiHeroes.First());
            }

            if (menu.Item("user").GetValue<bool>() && R.IsReady())
            {
                var allies =
                    ObjectManager.Get<Obj_AI_Hero>()
                        .Where(
                            x =>
                                x.IsAlly && x.Health / x.MaxHealth * 100 < menu.Item("allyhpr").GetValue<Slider>().Value &&
                                !x.IsDead);
                if (allies.Any())
                {
                    if (R.IsReady())
                        R.Cast();
                }
            }

            if (!recalling && !stopdoingshit)
            {
                if (follow.Distance(ObjectManager.Player.Position) > 500)
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, follow);
                if (!follow.IsDead)
                {
                    if (W.IsReady() && menu.Item("usew").GetValue<bool>() &&
                        ObjectManager.Player.Health / ObjectManager.Player.MaxHealth * 100 >
                        menu.Item("wabovehp").GetValue<Slider>().Value)
                    {
                        if (follow.Health / follow.MaxHealth * 100 < menu.Item("allyhpw").GetValue<Slider>().Value &&
                            follow.Distance(ObjectManager.Player.Position) < 550 &&
                            ObjectManager.Player.Health / ObjectManager.Player.MaxHealth * 100 >
                            menu.Item("wabovehp").GetValue<Slider>().Value)
                        {
                            W.Cast(follow);
                        }
                        else if (follow.Health / follow.MaxHealth * 100 < menu.Item("allyhpw").GetValue<Slider>().Value &&
                                 follow.Distance(ObjectManager.Player.Position) > 550)
                        {
                            ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, follow.Position);
                        }
                    }

                    if (ts.Target.Distance(ObjectManager.Player) < Q.Range && Q.IsReady() && !Utility.UnderTurret(ObjectManager.Player, true))
                    {
                        Q.Cast(ts.Target);
                    }

                    if (ts.Target.Distance(ObjectManager.Player) < E.Range && E.IsReady() && !Utility.UnderTurret(ObjectManager.Player, true))
                    {
                        E.Cast(ts.Target);
                    }

                    if (!(follow.Distance(ObjectManager.Player.Position) > 350)) return;
                    Random x = new Random();
                    var xPos = ((spawn.X - follow.Position.X) / Vector3.Distance(follow.Position, spawn)) * 300 +
                               follow.Position.X -
                               x.Next(25, 150);
                    var yPos = ((spawn.Y - follow.Position.Y) / Vector3.Distance(follow.Position, spawn)) * 300 +
                               follow.Position.Y -
                               x.Next(25, 150);
                    var vec = new Vector3(xPos, yPos, follow.Position.Z);
                    if (
                        NavMesh.GetCollisionFlags(
                            vec.To2D().Extend(ObjectManager.Player.Position.To2D(), 150).To3D())
                            .HasFlag(CollisionFlags.None))
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, vec);
                    //Game.PrintChat("following");
                }

                else
                {
                    Random y = new Random();
                    var turret =
                        ObjectManager.Get<Obj_AI_Turret>()
                            .First(x => x.Distance(ObjectManager.Player) < 3500 && x.IsAlly);
                    var xPos = ((spawn.X - turret.Position.X) / Vector3.Distance(turret.Position, spawn)) * 300 +
                               turret.Position.X -
                               y.Next(25, 150);
                    var yPos = ((spawn.Y - turret.Position.Y) / Vector3.Distance(turret.Position, spawn)) * 300 +
                               turret.Position.Y -
                               y.Next(25, 150);

                    var vec = new Vector3(xPos, yPos, follow.Position.Z);
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, vec);
                }
            }

        }
Пример #46
0
        private bool MinionOK(Obj_AI_Base minion , Obj_AI_Turret turret)
        {
            var turrentDmg = turret.GetAutoAttackDamage(minion);

            var hits = (int)(minion.Health / turrentDmg);

            var playerDmg = Player.GetAutoAttackDamage(minion);
            var minionHel = HealthPrediction.LaneClearHealthPrediction(minion, 400);

            var hpAfter = minionHel % turrentDmg;

            if ((hpAfter > playerDmg) && hpAfter > 5 && (hits>0 || minionAgro!=minion))
            {
                Program.debug(" minion HP " + (int)minionHel + " turretDmg " + (int)turrentDmg);
                Program.debug("HPAfter " + hpAfter + " MyDamage " + (int)Player.GetAutoAttackDamage(minion) + " HITS " + (int)hits + " tur " + turrentDmg);
                Orbwalker.ForceTarget(minion);
                Orbwalking.Attack = true;
                return false;
            }
            else
            {
                Program.debug("else HPAfter " + hpAfter + " MyDamage " + (int)Player.GetAutoAttackDamage(minion) + " HITS " + (int)hits + " tur " + turrentDmg);
                return true;
            }
        }
Пример #47
0
        private static bool ShouldWait(Obj_AI_Turret turret = null)
        {
            if (turret != null && turret.Target.IsValidTarget())
                return ObjectManager.Get<Obj_AI_Minion>()
                    .Any(
                    minion =>
                    minion.IsValidTarget() && minion.Team != GameObjectTeam.Neutral &&
                    InAutoAttackRange(minion) && minion.NetworkId != turret.Target.NetworkId &&
                    HealthPrediction.LaneClearHealthPrediction(
                    minion, (int)((Player.AttackDelay * 1000) * LaneClearWaitTimeMod), FarmDelay()) <= Player.GetAutoAttackDamage(minion));

            return ObjectManager.Get<Obj_AI_Minion>()
            .Any(
            minion =>
            minion.IsValidTarget() && minion.Team != GameObjectTeam.Neutral &&
            InAutoAttackRange(minion) &&
            HealthPrediction.LaneClearHealthPrediction(
            minion, (int)((Player.AttackDelay * 1000) * LaneClearWaitTimeMod), FarmDelay()) <= Player.GetAutoAttackDamage(minion));
        }
Пример #48
0
 public static int GetMinions(Obj_AI_Turret Turret)
 {
     int i = 0;
     foreach (var minion in ObjectManager.Get<Obj_AI_Minion>().Where(t => t.Name.Contains("Minion") && t.Distance(Turret.Position) <= 855 && !t.IsEnemy))
     {
         i++;
     }
     return i;
 }