コード例 #1
0
        public static bool ShouldRecall()
        {
            if (Me.HealthPercent >= 80 && MyADC.HealthPercent >= 80)
            {
                return(false);
            }

            if (MyADC.IsDead)
            {
                return(true);
            }

            if (MyADC.IsRecalling() || MyADC.IsInShopRange())
            {
                return(true);
            }

            if (Me.HealthPercent <= 25 && MyADC.HealthPercent <= 25)
            {
                return(true);
            }

            if (Me.Gold >= 1500 && MyADC.HealthPercent >= 70 && Me.HealthPercent <= 50)
            {
                return(true);
            }

            return(false);
        }
コード例 #2
0
        private static void Drawing_OnDraw(System.EventArgs args)
        {
            if (DrawReady)
            {
                if (DrawQ && Q.IsReady())
                {
                    Me.DrawCircle((int)Q.Range, QColor);
                }
                if (DrawW && W.IsReady())
                {
                    Me.DrawCircle((int)W.Range, WColor);
                }
                if (DrawE && E.IsReady())
                {
                    Me.DrawCircle((int)E.Range, EColor);
                }
                if (DrawR && R.IsReady())
                {
                    Me.DrawCircle((int)R.Range, RColor);
                }
            }
            else
            {
                if (DrawQ)
                {
                    Me.DrawCircle((int)Q.Range, QColor);
                }
                if (DrawW)
                {
                    Me.DrawCircle((int)W.Range, WColor);
                }
                if (DrawE)
                {
                    Me.DrawCircle((int)E.Range, EColor);
                }
                if (DrawR)
                {
                    Me.DrawCircle((int)R.Range, RColor);
                }
            }

            if (MyADC.IsValidTarget())
            {
                MyADC.DrawCircle((int)MyADC.BoundingRadius + 50, Color.Aqua, 15f);

                //PositionManager.Position.DrawCircle(25, SharpDX.Color.AliceBlue, 10);

                DangerManager.DrawSpells(Color.Black);
            }

            foreach (var enemy in EntityManager.Heroes.AllHeroes)
            {
                enemy.DrawCircle((int)enemy.BoundingRadius, enemy.IsBeingAutoAttacked() ? Color.Red: Color.Green, 8f);
            }
        }
コード例 #3
0
ファイル: Active.cs プロジェクト: Random007/Elobuddy-1
        public override void Execute()
        {
            Target = TargetSelector.GetTarget(2000, DamageType.Physical);
            if (MyADC == null)
            {
                return;
            }

            if (!Me.IsRecalling())
            {
                PositionManager.Position           = PositionManager.BestPosition();
                Orbwalker.OverrideOrbwalkPosition += OverrideOrbwalkPosition;
            }

            if (MyADC.IsAttacking())
            {
                E.Cast(MyADC);
            }

            if (MyADC.IsInDanger(300, 90))
            {
                E.Cast(MyADC);
            }

            if (Me.IsInDanger(300, 90))
            {
                E.Cast(Me);
            }

            #region Debug

            if (!DebugDanger)
            {
                return;
            }

            foreach (var hero in EntityManager.Heroes.AllHeroes)
            {
                if (hero.IsInDanger(350, 90))
                {
                    Console.WriteLine(hero.BaseSkinName + " Is In Danger");
                }
            }

            #endregion Debug
        }
コード例 #4
0
        public static Vector3 BestRecallPosition()
        {
            var nearestEnemyTower =
                EntityManager.Turrets.Allies.Where(t => t.Health > 10).OrderBy(t => t.Distance(Me)).FirstOrDefault();

            /*
             * var nearestAllyTower =
             *  EntityManager.Turrets.Allies.Where(t => t.Health > 10 && t.IsInRange(Me, 1500)).OrderBy(t => t.Distance(Me)).FirstOrDefault();
             *
             *
             *
             * if (nearestAllyTower != null && nearestEnemyTower != null)
             * {
             *  return nearestEnemyTower.Position.Extend(nearestAllyTower, nearestEnemyTower.Distance(nearestAllyTower) + 250).To3D();
             * }
             */

            if (MyADC.IsValidTarget(1000))
            {
                return(MyADC.Position.Extend(nearestEnemyTower, 250f).To3DWorld());
            }

            var nearestEnemy = EntityManager.Heroes.Enemies.Where(e => e.IsValidTarget(1500)).OrderBy(e => e.Distance(Me)).FirstOrDefault();

            if (nearestEnemy != null)
            {
                var nearestBush = Bushes.OrderBy(b => b.Distance(Me)).ThenByDescending(b => b.Distance(nearestEnemy)).FirstOrDefault();

                if (nearestBush != null)
                {
                    return(nearestBush.Position);
                }
            }
            else
            {
                var nearestBush = Bushes.OrderBy(b => b.Distance(Me)).FirstOrDefault();

                if (nearestBush != null)
                {
                    return(nearestBush.Position);
                }
            }

            return(Vector3.Zero);
        }
コード例 #5
0
        public static Vector3 BestPosition()
        {
            if (MyADC.IsDead)
            {
                return(RecallManager.BestRecallPosition());
            }

            if (Recalling)
            {
                Orbwalker.DisableMovement  = true;
                Orbwalker.DisableAttacking = true;

                if (!Me.IsRecalling())
                {
                    Recalling                  = false;
                    PreparingToRecall          = false;
                    Orbwalker.DisableMovement  = false;
                    Orbwalker.DisableAttacking = false;
                }

                return(Vector3.Zero);
            }

            if (RecallManager.ShouldRecall() || PreparingToRecall)
            {
                Chat.Print("Should Recall");
                var bestRecallPos = RecallManager.BestRecallPosition();
                if (!PreparingToRecall)
                {
                    PreparingToRecall = true;
                    return(bestRecallPos);
                }

                if (PreparingToRecall)
                {
                    if (Me.Distance(bestRecallPos) < 120)
                    {
                        PreparingToRecall = false;
                        Recalling         = true;
                        Player.CastSpell(SpellSlot.Recall);
                    }
                    return(bestRecallPos);
                }
            }

            if (WardManager.CanWard())
            {
                return(WardManager.BestWardPostion());
            }

            if (MyADC.IsInRange(Me, 1000))
            {
                if (Target != null)
                {
                    var posTarget = Target.Position.Extend(MyADC.Position, Target.Distance(MyADC) + GetRandomNumber(MinChampDist, MaxChampDist));
                    posTarget.X += GetRandomNumber(MinRandom, MaxRandom);
                    posTarget.Y += GetRandomNumber(MinRandom, MaxRandom);
                    return(posTarget.To3D((int)MyADC.Position.Y));
                }

                var minions       = EntityManager.MinionsAndMonsters.GetLaneMinions().Where(m => m != null && m.IsValidTarget(1500) && m.IsEnemy);
                var minionBestPos = EntityManager.MinionsAndMonsters.GetCircularFarmLocation(minions, 800, 1500);
                if (minionBestPos.HitNumber > 0)
                {
                    var posMinion = minionBestPos.CastPosition.Extend(MyADC.Position,
                                                                      GetRandomNumber((int)((MinChampDist * 1.3f) + MyADC.Distance(minionBestPos.CastPosition)),
                                                                                      (int)((MaxChampDist * 1.3f) + MyADC.Distance(minionBestPos.CastPosition))));
                    posMinion.X += GetRandomNumber(MinRandom, MaxRandom);
                    posMinion.Y += GetRandomNumber(MinRandom, MaxRandom);
                    return(posMinion.To3D((int)MyADC.Position.Y));
                }


                var nearestTower =
                    EntityManager.Turrets.Allies.Where(t => t.Health > 10).OrderBy(t => t.Distance(Me)).FirstOrDefault(t => t.IsInRange(Me, 3000));
                if (nearestTower != null)
                {
                    var posTower = MyADC.Position.Extend(nearestTower.Position, GetRandomNumber(MinChampDist, MaxChampDist));
                    posTower.X += GetRandomNumber(MinRandom, MaxRandom);
                    posTower.Y += GetRandomNumber(MinRandom, MaxRandom);
                    return(posTower.To3D((int)MyADC.Position.Y));
                }

                var nearestEnemyTower =
                    EntityManager.Turrets.Enemies.Where(t => t.Health > 10).OrderBy(t => t.Distance(Me)).FirstOrDefault(t => t.IsInRange(Me, 3000));
                if (nearestEnemyTower != null)
                {
                    var posEnemyTower = nearestEnemyTower.Position.Extend(MyADC.Position,
                                                                          GetRandomNumber((int)((MinChampDist * 1.6f) + MyADC.Distance(nearestEnemyTower)),
                                                                                          (int)((MaxChampDist * 1.6f) + MyADC.Distance(nearestEnemyTower))));
                    posEnemyTower.X += GetRandomNumber(MinRandom, MaxRandom);
                    posEnemyTower.Y += GetRandomNumber(MinRandom, MaxRandom);
                    return(posEnemyTower.To3D((int)MyADC.Position.Y));
                }
            }

            var pos = MyADC.Position.Extend(MyADC.Direction(), -GetRandomNumber(MinChampDist, MaxChampDist));

            pos.X += GetRandomNumber(-200, 200);
            pos.Y += GetRandomNumber(-200, 200);
            return(pos.To3D((int)MyADC.Position.Y));
        }