Exemple #1
0
        public static void W(Obj_AI_Base unit, Vector2 unitPosition,bool packetcast, int minTargets = 0)
        {
            var points = new List<Vector2>();
            var hitBoxes = new List<int>();

            var startPoint = ObjectManager.Player.ServerPosition.To2D();
            var originalDirection = Spell[SpellSlot.W].Range * (unitPosition - startPoint).Normalized();

            foreach (var enemy in ObjectManager.Get<Obj_AI_Hero>())
            {
                if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId)
                {
                    var pos = Spell[SpellSlot.W].GetPrediction(enemy);
                    if (pos.Hitchance >= HitChance.Medium)
                    {
                        points.Add(pos.UnitPosition.To2D());
                        hitBoxes.Add((int)enemy.BoundingRadius);
                    }
                }
            }

            var posiblePositions = new List<Vector2>();

            for (var i = 0; i < 3; i++)
            {
                if (i == 0) posiblePositions.Add(unitPosition + originalDirection.Rotated(0));
                if (i == 1) posiblePositions.Add(startPoint + originalDirection.Rotated(Spells.Wangle));
                if (i == 2) posiblePositions.Add(startPoint + originalDirection.Rotated(-Spells.Wangle));
            }

            if (startPoint.Distance(unitPosition) < 900)
            {
                for (var i = 0; i < 3; i++)
                {
                    var pos = posiblePositions[i];
                    var direction = (pos - startPoint).Normalized().Perpendicular();
                    var k = (2f / 3 * (unit.BoundingRadius + Spell[SpellSlot.W].Width));
                    posiblePositions.Add(startPoint - k * direction);
                    posiblePositions.Add(startPoint + k * direction);
                }
            }

            var bestPosition = new Vector2();
            var bestHit = -1;

            foreach (var position in posiblePositions)
            {
                var hits = CountHits(position, points, hitBoxes);
                if (hits > bestHit)
                {
                    bestPosition = position;
                    bestHit = hits;
                }
            }

            if (bestHit + 1 <= minTargets)
                return;

            Spell[SpellSlot.W].Cast(bestPosition.To3D(), packetcast);
        }
Exemple #2
0
        //fluxy
        public static bool WallBangable(this AIHeroClient hero, Vector2 pos = new Vector2())
        {
            if (hero.HasBuffOfType(BuffType.SpellImmunity) || hero.HasBuffOfType(BuffType.SpellShield)) return false;
            var qprediction = SpellManager.Q.GetPrediction(hero);
            var qpredlist = pos.IsValid() ? new List<Vector3> { pos.To3D() } : new List<Vector3>
                        {
                            hero.ServerPosition,
                            hero.Position,
                            qprediction.CastPosition,
                            qprediction.UnitPosition
                        };

            var bangableWalls = 0;
            _points = new List<Vector2>();
            foreach (var position in qpredlist)
            {
                for (var i = 0; i < Config.Modes.Combo.QBindDistance; i += (int)hero.BoundingRadius)
                {
                    var cPos = BardPitt.Position.Extend(position, BardPitt.Distance(position) + i).To3D();
                    _points.Add(cPos.To2D());
                    if (NavMesh.GetCollisionFlags(cPos).HasFlag(CollisionFlags.Wall) || NavMesh.GetCollisionFlags(cPos).HasFlag(CollisionFlags.Building))
                    {
                        bangableWalls++;
                        break;
                    }
                }
            }
            if (bangableWalls / qpredlist.Count >= Config.Modes.Combo.QAccuracyPercent / 100f)
            {
                return true;
            }

            return false;
        }
Exemple #3
0
        public static void AddDrawLine(this Vector2 v, Vector2?from = null, int time = 10000)
        {
            var wtc     = Drawing.WorldToScreen(v.To3D());
            var wtcFrom = Drawing.WorldToScreen(from?.To3D() ?? Player.Instance.Position);
            var tuple   = new Tuple <Vector2, Vector2>(wtcFrom, wtc);

            if (!DrawLineList.Contains(tuple))
            {
                DrawLineList.Add(tuple);
            }

            if (time != short.MaxValue)
            {
                Core.DelayAction(() => DrawLineList.Remove(tuple), time);
            }
        }
Exemple #4
0
        public static void MoveTo(Vector2 movePos)
        {
            if (!Situation.ShouldDodge())
            {
                return;
            }

            Evade.lastEvadeCommand = new EvadeCommand
            {
                order = EvadeOrderCommand.MoveTo,
                targetPosition = movePos,
                timestamp = EvadeUtils.TickCount,
                isProcessed = false
            };

            Evade.lastMoveToPosition = movePos;
            Evade.lastMoveToServerPos = myHero.ServerPosition.To2D();

            Player.IssueOrder(GameObjectOrder.MoveTo, movePos.To3D(), false);
        }
        public static void MoveTo(Vector2 movePos)
        {
            if (!Situation.ShouldDodge())
            {
                return;
            }

            AdEvade.LastEvadeCommand = new EvadeCommand
            {
                Order = EvadeOrderCommand.MoveTo,
                TargetPosition = movePos,
                Timestamp = EvadeUtils.TickCount,
                IsProcessed = false
            };

            AdEvade.LastMoveToPosition = movePos;
            AdEvade.LastMoveToServerPos = MyHero.ServerPosition.To2D();
            ConsoleDebug.WriteLine("MoveTo: " + movePos);
            Player.IssueOrder(GameObjectOrder.MoveTo, movePos.To3D(), false);
        }
Exemple #6
0
 public static Vector3 Offset(this Vector3 vector, Vector2 offset)
 {
     return vector.Offset(offset.To3D());
 }
Exemple #7
0
 public float DistanceTo(Vector2 vPosition)
 {
     return Unit.Position.Distance(vPosition.To3D());
 }
Exemple #8
0
        private static void TryToEvade(List <Skillshot> HitBy, Vector2 Pos)
        {
            var dangerLevel = 0;

            foreach (var skillshot in HitBy)
            {
                dangerLevel = Math.Max(dangerLevel, skillshot.GetValue <Slider>("DangerLevel").Value);
            }

            foreach (var evadeSpell in EvadeSpellDatabase.Spells)
            {
                if (evadeSpell.Enabled && evadeSpell.DangerLevel <= dangerLevel)
                {
                    if (evadeSpell.IsReady())
                    {
                        switch (evadeSpell.Slot)
                        {
                        case SpellSlot.W:
                            var skillShotList =
                                HitBy.Where(
                                    x => x.SpellData.CollisionObjects.Contains(CollisionObjectTypes.YasuoWall));

                            if (skillShotList.Any())
                            {
                                var willHitList =
                                    skillShotList.Where(
                                        x =>
                                        x.IsAboutToHit(
                                            150 + evadeSpell.Delay,
                                            ObjectManager.Player));

                                if (willHitList.Any())
                                {
                                    if (
                                        willHitList.OrderByDescending(
                                            x => dangerLevel)
                                        .Any(
                                            x =>
                                            Logic.W.Cast(
                                                ObjectManager.Player.ServerPosition.Extend(x.Start.To3D(),
                                                                                           300))))
                                    {
                                        return;
                                    }
                                }
                            }
                            break;

                        case SpellSlot.E:
                            var dodgeList =
                                GetEvadeTargets(evadeSpell)
                                .Where(
                                    x =>
                                    IsSafe(Logic.PosAfterE(x).To2D()).IsSafe&&
                                    (!Logic.UnderTower(Logic.PosAfterE(x)) ||
                                     Menu.Item("ETower", true).GetValue <bool>()));

                            if (dodgeList.Any())
                            {
                                var dodgeTarget =
                                    dodgeList.Where(x => !x.HasBuff("YasuoDashWrapper"))
                                    .MinOrDefault(i => Logic.PosAfterE(i).Distance(Pos.To3D()));

                                if (dodgeTarget != null && dodgeTarget.DistanceToPlayer() <= Logic.E.Range &&
                                    SpellManager.CanCastE(dodgeTarget))
                                {
                                    Logic.E.CastOnUnit(dodgeTarget, true);
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }
Exemple #9
0
 /// <summary>
 ///     Checks if this position is a wall using NavMesh
 /// </summary>
 public static bool IsWall(this Vector2 position)
 {
     return(position.To3D().IsWall());
 }
Exemple #10
0
 public static bool IsOnScreen(this Vector2 position, float radius)
 {
     return(position.To3D().IsOnScreen(radius));
 }
Exemple #11
0
 public static void moveTo(Vector2 Pos)
 {
     Player.IssueOrder(GameObjectOrder.MoveTo, Pos.To3D());
 }
Exemple #12
0
        public static void CastSpell(EvadeSpellData spellData, Vector2 movePos)
        {
            EvadeSpell.lastSpellEvadeCommand = new EvadeCommand
            {
                order = EvadeOrderCommand.CastSpell,
                targetPosition = movePos,
                evadeSpellData = spellData,
                timestamp = EvadeUtils.TickCount,
                isProcessed = false
            };

            myHero.Spellbook.CastSpell(spellData.spellKey, movePos.To3D(), false);
        }
Exemple #13
0
            public static PredictionOutput GetPrediction(PredictionInput input)
            {
                var mainTargetPrediction = Prediction.GetPrediction(input, false, true);
                var posibleTargets       = new List <PossibleTarget>
                {
                    new PossibleTarget {
                        Position = mainTargetPrediction.UnitPosition.To2D(), Unit = input.Unit
                    }
                };

                if (mainTargetPrediction.Hitchance >= HitChance.Medium)
                {
                    //Add the posible targets  in range:
                    posibleTargets.AddRange(GetPossibleTargets(input));
                }

                if (posibleTargets.Count > 1)
                {
                    var candidates = new List <Vector2>();

                    foreach (var target in posibleTargets)
                    {
                        target.Position = target.Position - input.From.To2D();
                    }

                    for (var i = 0; i < posibleTargets.Count; i++)
                    {
                        for (var j = 0; j < posibleTargets.Count; j++)
                        {
                            if (i != j)
                            {
                                var p = (posibleTargets[i].Position + posibleTargets[j].Position) * 0.5f;
                                if (!candidates.Contains(p))
                                {
                                    candidates.Add(p);
                                }
                            }
                        }
                    }

                    var bestCandidateHits = -1;
                    var bestCandidate     = new Vector2();
                    var positionsList     = posibleTargets.Select(t => t.Position).ToList();

                    foreach (var candidate in candidates)
                    {
                        var hits = GetHits(candidate, input.Range, input.Radius, positionsList);
                        if (hits > bestCandidateHits)
                        {
                            bestCandidate     = candidate;
                            bestCandidateHits = hits;
                        }
                    }

                    if (bestCandidateHits > 1 && input.From.To2D().Distance(bestCandidate, true) > 50 * 50)
                    {
                        return(new PredictionOutput
                        {
                            Hitchance = mainTargetPrediction.Hitchance,
                            _aoeTargetsHitCount = bestCandidateHits,
                            UnitPosition = mainTargetPrediction.UnitPosition,
                            CastPosition = bestCandidate.To3D(),
                            Input = input
                        });
                    }
                }
                return(mainTargetPrediction);
            }
Exemple #14
0
        private static void CastQ(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0)
        {
            var points   = new List <Vector2>();
            var hitBoxes = new List <int>();

            var startPoint        = ObjectManager.Player.ServerPosition.To2D();
            var originalDirection = Q.Range * (unitPosition - startPoint).Normalized();

            foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>())
            {
                if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId)
                {
                    var pos = Q.GetPrediction(enemy);
                    if (pos.Hitchance >= HitChance.Medium)
                    {
                        points.Add(pos.UnitPosition.To2D());
                        hitBoxes.Add((int)enemy.BoundingRadius);
                    }
                }
            }


            var posiblePositions = new List <Vector2>();

            for (var i = 0; i < 3; i++)
            {
                if (i == 0)
                {
                    posiblePositions.Add(unitPosition + originalDirection.Rotated(0));
                }
                if (i == 1)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(Qangle));
                }
                if (i == 2)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(-Qangle));
                }
            }


            if (startPoint.Distance(unitPosition) < 900)
            {
                for (var i = 0; i < 3; i++)
                {
                    var pos       = posiblePositions[i];
                    var direction = (pos - startPoint).Normalized().Perpendicular();
                    var k         = (2 / 3 * (unit.BoundingRadius + Q.Width));
                    posiblePositions.Add(startPoint - k * direction);
                    posiblePositions.Add(startPoint + k * direction);
                }
            }

            var bestPosition = new Vector2();
            var bestHit      = -1;

            foreach (var position in posiblePositions)
            {
                var hits = CountHits(position, points, hitBoxes);
                if (hits > bestHit)
                {
                    bestPosition = position;
                    bestHit      = hits;
                }
            }

            if (bestHit + 1 <= minTargets)
            {
                return;
            }

            Q.Cast(bestPosition.To3D(), true);
        }
Exemple #15
0
        private static bool CheckPoint(Vector2 pos)
        {
            var paths = ObjectManager.Player.GetPath(pos.To3D());

            return(paths.Length > 0 && pos.Distance(paths[paths.Length - 1]) > 5);
        }
Exemple #16
0
 public static SafePath IsPathSafe(this Vector2 pos, int time, int speed = -1, int delay = 0)
 {
     return(ObjectManager.Player.GetPath(pos.To3D()).ToList().To2D().IsPathSafe(time, speed, delay));
 }
Exemple #17
0
        public static PredictionOutput GetBadaoStandarPrediction(this Spell spell, Obj_AI_Base target,
                                                                 List <Vector2> path, float speed = -1)
        {
            // check the unit speed input
            speed = (Math.Abs(speed - (-1)) < float.Epsilon) ? target.MoveSpeed : speed;
            // set standar output
            Vector2   castpos   = target.ServerPosition.To2D();
            Vector2   unitpos   = target.ServerPosition.To2D();
            HitChance hitchance = HitChance.Impossible;

            // target standing like a statue (performing an attack, casting spell, afk, aimbush.....)
            if (path.Count <= 1)
            {
                // set standar position
                castpos = target.ServerPosition.To2D();
                unitpos = target.ServerPosition.To2D();
                // target in range
                if (spell.RangeCheckFrom.To2D().Distance(castpos) <= spell.Range)
                {
                    hitchance = HitChance.High;
                }
                // target out of range
                else
                {
                    // skill shot circle
                    if (spell.Type == SkillshotType.SkillshotCircle)
                    {
                        // check for extra radius
                        if (spell.RangeCheckFrom.To2D().Distance(castpos) <=
                            spell.Range + spell.Width + target.BoundingRadius - 40)
                        {
                            castpos   = spell.RangeCheckFrom.To2D().Extend(castpos, spell.Range);
                            hitchance = HitChance.Medium;
                        }
                        else
                        {
                            castpos   = spell.RangeCheckFrom.To2D().Extend(castpos, spell.Range);
                            hitchance = HitChance.OutOfRange;
                        }
                    }
                    else
                    {
                        hitchance = HitChance.OutOfRange;
                    }
                }
                return(new PredictionOutput()
                {
                    UnitPosition = unitpos.To3D(),
                    CastPosition = castpos.To3D(),
                    Hitchance = hitchance
                });
            }
            //Skillshots with only a delay
            if (Math.Abs(spell.Speed - float.MaxValue) < float.Epsilon && path.Count >= 2)
            {
                var a        = path[0];
                var b        = path[1];
                var distance = a.Distance(b);
                // skillshot circle
                if (spell.Type == SkillshotType.SkillshotCircle)
                {
                    //standar distance
                    var x = speed * (spell.Delay + Game.Ping / 2000f + 0.06f);
                    // position 1 properties
                    var distance01 = x - (target.BoundingRadius + spell.Width) / 2;
                    var pos01      = a.Extend(b, distance01);
                    // position 2 properties
                    var distance02 = x;
                    var pos02      = a.Extend(b, distance02);
                    // position 3 properties
                    var distance03 = x + (target.BoundingRadius + spell.Width) / 2;
                    var pos03      = pos02.Extend(spell.From.To2D(), distance03);
                    // lines length
                    var length01 = pos01.Distance(pos02);
                    var length02 = pos02.Distance(pos03);
                    // set standar position
                    unitpos = pos02;
                    castpos = pos02;
                    // list cast poses
                    List <Vector2> poses = new List <Vector2>();
                    for (int i = 0; i <= 10; i++)
                    {
                        poses.Add(i <= 5 ? pos01.Extend(pos02, i * length01 / 6) : pos02.Extend(pos03, (i - 5) * length02 / 5));
                    }
                    // check cast pos
                    for (int i = 0; i <= 10; i++)
                    {
                        if (poses[i].Distance(spell.RangeCheckFrom.To2D()) <= spell.Range &&
                            poses[i].Distance(a) <= distance)
                        {
                            if (i <= 3)
                            {
                                hitchance = HitChance.VeryHigh;
                            }
                            else if (i <= 6)
                            {
                                hitchance = HitChance.High;
                            }
                            else
                            {
                                hitchance = HitChance.Medium;
                            }

                            return(new PredictionOutput
                            {
                                UnitPosition = unitpos.To3D(),
                                CastPosition = poses[i].To3D(),
                                Hitchance = hitchance
                            });
                        }
                    }
                    // hitchance out of range
                    return(new PredictionOutput
                    {
                        UnitPosition = unitpos.To3D(),
                        CastPosition = castpos.To3D(),
                        Hitchance = HitChance.OutOfRange
                    });
                }
                // skill shot line and cone
                else
                {
                    //standar distance
                    var x = speed * (spell.Delay + Game.Ping / 2000f + 0.06f);
                    // position properties
                    var distance01 = x;
                    var pos01      = a.Extend(b, distance01);
                    var range01    = spell.RangeCheckFrom.To2D().Distance(pos01);
                    // set standar position
                    unitpos = pos01;
                    castpos = pos01;
                    // hitchance high
                    if (distance01 < distance && range01 <= spell.Range)
                    {
                        castpos   = pos01;
                        hitchance = HitChance.High;
                        return(new PredictionOutput
                        {
                            UnitPosition = unitpos.To3D(),
                            CastPosition = castpos.To3D(),
                            Hitchance = hitchance
                        });
                    }
                    // hitchance out of range
                    return(new PredictionOutput
                    {
                        UnitPosition = unitpos.To3D(),
                        CastPosition = castpos.To3D(),
                        Hitchance = HitChance.OutOfRange
                    });
                }
            }
            //  skill shot with a delay and speed
            if (Math.Abs(spell.Speed - float.MaxValue) > float.Epsilon)
            {
                var a        = path[0];
                var b        = path[1];
                var distance = a.Distance(b);
                // standar prediction
                float  dis  = spell.From.To2D().Distance(a);
                float  rad  = 0;
                double time = math.t(speed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f,
                                     0, spell.From.To2D(), a, b);
                var unitpos02 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed) : new Vector2();
                var castpos02 = unitpos02;
                // very high prediction
                rad  = (target.BoundingRadius + spell.Width) / 2;
                time = math.t(target.MoveSpeed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f,
                              rad, spell.From.To2D(), a, b);
                var unitpos01 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed - rad) : new Vector2();
                var castpos01 = unitpos01;
                // medium prediction
                time = math.t(target.MoveSpeed, spell.Speed, dis, spell.Delay + Game.Ping / 2f / 1000 + 0.06f - rad / spell.Speed,
                              0, spell.From.To2D(), a, b);
                var unitpos03 = !double.IsNaN(time) ? a.Extend(b, (float)time * speed) : new Vector2();
                var castpos03 = unitpos03.IsValid()
                    ? spell.From.To2D().Extend(unitpos03, spell.From.To2D().Distance(unitpos03) - rad)
                    : new Vector2();
                if (castpos01.IsValid() && castpos02.IsValid() && castpos03.IsValid())
                {
                    var length01 = castpos01.Distance(castpos02);
                    var length02 = castpos02.Distance(castpos03);
                    var Acosb    =
                        Math.Acos(
                            Math.Abs(float.IsNaN(math.CosB(spell.From.To2D(), a, b))
                                ? 0.99f
                                : Math.Abs(math.CosB(spell.From.To2D(), a, b)))) * (180 / Math.PI);
                    // skillshot circle + line
                    if (spell.Type == SkillshotType.SkillshotCircle ||
                        (spell.Type == SkillshotType.SkillshotLine && Acosb <= 110 && Acosb >= 70))
                    {
                        List <Vector2> poses = new List <Vector2>();
                        for (int i = 0; i <= 10; i++)
                        {
                            poses.Add(i <= 5
                                ? castpos01.Extend(castpos02, i * length01 / 6)
                                : castpos02.Extend(castpos03, (i - 5) * length02 / 5));
                        }
                        // check cast pos
                        for (int i = 0; i <= 10; i++)
                        {
                            if (poses[i].Distance(spell.RangeCheckFrom.To2D()) <= spell.Range &&
                                poses[i].Distance(a) <= distance)
                            {
                                if (i <= 3)
                                {
                                    hitchance = HitChance.VeryHigh;
                                }
                                else if (i <= 6)
                                {
                                    hitchance = HitChance.High;
                                }
                                else
                                {
                                    hitchance = HitChance.Medium;
                                }

                                return(new PredictionOutput
                                {
                                    UnitPosition = unitpos02.To3D(),
                                    CastPosition = poses[i].To3D(),
                                    Hitchance = hitchance
                                });
                            }
                        }
                        // hitchance out of range
                        return(new PredictionOutput
                        {
                            UnitPosition = unitpos02.To3D(),
                            CastPosition = castpos02.To3D(),
                            Hitchance = HitChance.OutOfRange
                        });
                    }
                    // skillshot line + cone
                    else
                    {
                        var distance02 = a.Distance(castpos02);
                        var range01    = spell.RangeCheckFrom.To2D().Distance(castpos02);
                        // hitchance high
                        if (distance02 < distance && range01 <= spell.Range)
                        {
                            return(new PredictionOutput
                            {
                                UnitPosition = unitpos02.To3D(),
                                CastPosition = castpos02.To3D(),
                                Hitchance = HitChance.High
                            });
                        }
                        // hitchance out of range
                        return(new PredictionOutput
                        {
                            UnitPosition = unitpos02.To3D(),
                            CastPosition = castpos02.To3D(),
                            Hitchance = HitChance.OutOfRange
                        });
                    }
                }
            }
            return(new PredictionOutput
            {
                UnitPosition = unitpos.To3D(),
                CastPosition = castpos.To3D(),
                Hitchance = hitchance
            });
        }
Exemple #18
0
 public static void Insec(Obj_AI_Hero target)
 {
     Rpos = Player.Position.To2D().Extend(target.Position.To2D(), Player.Distance(target) + 250);
     if (Rpos.Distance(Player.Position) <= R.Range)
     {
         if (Player.Distance(Rpos.Extend(target.Position.To2D(), 700 - target.Distance(Rpos))) < E.Range && !IsWall(Rpos.To3D()) && target.IsFacing(Player))
         {
             R.Cast(Rpos);
         }
     }
 }
Exemple #19
0
        private static void WardJump(
            Vector3 pos,
            bool m2M           = true,
            bool maxRange      = false,
            bool reqinMaxRange = false,
            bool minions       = true,
            bool champions     = true)
        {
            if (WStage != WCastStage.First)
            {
                return;
            }

            var basePos = Player.Position.To2D();
            var newPos  = (pos.To2D() - Player.Position.To2D());

            if (JumpPos == new Vector2())
            {
                if (reqinMaxRange)
                {
                    JumpPos = pos.To2D();
                }
                else if (maxRange || Player.Distance(pos) > 590)
                {
                    JumpPos = basePos + (newPos.Normalized() * (590));
                }
                else
                {
                    JumpPos = basePos + (newPos.Normalized() * (Player.Distance(pos)));
                }
            }
            if (JumpPos != new Vector2() && reCheckWard)
            {
                reCheckWard = false;
                Utility.DelayAction.Add(
                    20,
                    () =>
                {
                    if (JumpPos != new Vector2())
                    {
                        JumpPos     = new Vector2();
                        reCheckWard = true;
                    }
                });
            }
            if (m2M)
            {
                Orbwalk(pos);
            }
            if (!spells[Spells.W].IsReady() || spells[Spells.W].Instance.Name == "blindmonkwtwo" ||
                reqinMaxRange && Player.Distance(pos) > spells[Spells.W].Range)
            {
                return;
            }

            if (minions || champions)
            {
                if (champions)
                {
                    var champs = (from champ in ObjectManager.Get <Obj_AI_Hero>()
                                  where
                                  champ.IsAlly && champ.Distance(Player) < spells[Spells.W].Range &&
                                  champ.Distance(pos) < 200 && !champ.IsMe
                                  select champ).ToList();
                    if (champs.Count > 0 && WStage == WCastStage.First)
                    {
                        if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First)
                        {
                            return;
                        }

                        CastW(champs[0]);
                        return;
                    }
                }
                if (minions)
                {
                    var minion2 = (from minion in ObjectManager.Get <Obj_AI_Minion>()
                                   where
                                   minion.IsAlly && minion.Distance(Player) < spells[Spells.W].Range &&
                                   minion.Distance(pos) < 200 && !minion.Name.ToLower().Contains("ward")
                                   select minion).ToList();
                    if (minion2.Count > 0 && WStage == WCastStage.First)
                    {
                        if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First)
                        {
                            return;
                        }

                        CastW(minion2[0]);
                        return;
                    }
                }
            }

            var isWard = false;

            foreach (var ward in ObjectManager.Get <Obj_AI_Base>())
            {
                if (ward.IsAlly && ward.Name.ToLower().Contains("ward") && ward.Distance(JumpPos) < 200)
                {
                    isWard = true;
                    if (500 >= Environment.TickCount - wcasttime || WStage != WCastStage.First) //credits to JackisBack
                    {
                        return;
                    }

                    CastW(ward);
                    wcasttime = Environment.TickCount;
                }
            }

            if (!isWard && castWardAgain)
            {
                var ward = FindBestWardItem();
                if (ward == null || WStage != WCastStage.First)
                {
                    return;
                }

                Player.Spellbook.CastSpell(ward.SpellSlot, JumpPos.To3D());

                lastWardPos = JumpPos.To3D();
                LastWard    = Environment.TickCount;
            }
        }
Exemple #20
0
 /// <summary>
 ///     Casts the spell to the position.
 /// </summary>
 public void Cast(Vector2 position, bool packetCast = false)
 {
     Cast(position.To3D(), packetCast);
 }
Exemple #21
0
 public static bool Cast(this SummonerSpell spell, Vector2 position)
 {
     return(IsReady(spell) &&
            (ObjectManager.Player.Distance(position, true) < spell.Range * spell.Range) &&
            ObjectManager.Player.Spellbook.CastSpell(spell.Slot, position.To3D()));
 }
Exemple #22
0
 /// <summary>
 ///     Casts the spell to the position.
 /// </summary>
 public bool Cast(Vector2 position, bool packetCast = false)
 {
     return(Cast(position.To3D(), packetCast));
 }
Exemple #23
0
        private static void CastWE(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0)
        {
            var usePacket = Config.Item("usePackets").GetValue <bool>();
            var points    = new List <Vector2>();
            var hitBoxes  = new List <int>();

            Vector2 startPoint        = ObjectManager.Player.ServerPosition.To2D();
            Vector2 originalDirection = W.Range * (unitPosition - startPoint).Normalized();

            foreach (Obj_AI_Hero enemy in HeroList)
            {
                if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId)
                {
                    PredictionOutput pos = W.GetPrediction(enemy);
                    if (pos.Hitchance >= HitChance.Medium)
                    {
                        points.Add(pos.UnitPosition.To2D());
                        hitBoxes.Add((int)enemy.BoundingRadius);
                    }
                }
            }


            var posiblePositions = new List <Vector2>();

            for (int i = 0; i < 3; i++)
            {
                if (i == 0)
                {
                    posiblePositions.Add(unitPosition + originalDirection.Rotated(0));
                }
                if (i == 1)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(Wangle));
                }
                if (i == 2)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(-Wangle));
                }
            }


            if (startPoint.Distance(unitPosition) < 900)
            {
                for (int i = 0; i < 3; i++)
                {
                    Vector2 pos       = posiblePositions[i];
                    Vector2 direction = (pos - startPoint).Normalized().Perpendicular();
                    float   k         = (2 / 3 * (unit.BoundingRadius + Q.Width));
                    posiblePositions.Add(startPoint - k * direction);
                    posiblePositions.Add(startPoint + k * direction);
                }
            }

            var bestPosition = new Vector2();
            int bestHit      = -1;

            foreach (Vector2 position in posiblePositions)
            {
                int hits = CountHits(position, points, hitBoxes);
                if (hits > bestHit)
                {
                    bestPosition = position;
                    bestHit      = hits;
                }
            }

            if (bestHit + 1 <= minTargets)
            {
                return;
            }

            W.Cast(bestPosition.To3D(), usePacket);
        }
Exemple #24
0
 public static Obj_AI_Minion GetNearestMinionByNames(this Vector2 position, string[] names)
 {
     return(GetNearestMinionByNames(position.To3D(), names));
 }
Exemple #25
0
        private static void onDraw(EventArgs args)
        {
            if (Config.Item("disDraw").GetValue <bool>())
            {
                return;
            }


            foreach (Obj_AI_Base jun in MinionManager.GetMinions(Yasuo.Player.ServerPosition, 700, MinionTypes.All, MinionTeam.Neutral))
            {
                Drawing.DrawCircle(jun.Position, 70, Color.Green);
                Vector2 posAfterE = Yasuo.Player.ServerPosition.To2D() + (Vector2.Normalize(jun.ServerPosition.To2D() - Yasuo.Player.ServerPosition.To2D()) * 475);
                // Vector2 posAfterE = Yasuo.Player.Position.To2D().Extend(jun.Position.To2D(), 475);//jun.ServerPosition.To2D().Extend() + (Vector2.Normalize(Yasuo.Player.Position.To2D() - jun.ServerPosition.To2D()) * 475);
                Drawing.DrawCircle(posAfterE.To3D(), 50, Color.Violet);
                Vector3 posAfterDash = Yasuo.Player.GetPath(posAfterE.To3D()).Last();
                Drawing.DrawCircle(posAfterDash, 50, Color.DarkRed);
            }

            if (Config.Item("drawQ").GetValue <bool>())
            {
                Utility.DrawCircle(Yasuo.Player.Position, 475, (Yasuo.isDashigPro) ? Color.Red : Color.Blue, 10, 10);
            }
            if (Config.Item("drawR").GetValue <bool>())
            {
                Utility.DrawCircle(Yasuo.Player.Position, 1200, Color.Blue);
            }

            if (Config.Item("flee").GetValue <KeyBind>().Active&& Config.Item("drawWJ").GetValue <bool>())
            {
                Utility.DrawCircle(Game.CursorPos, 350, Color.Cyan);

                Utility.DrawCircle(Yasuo.lastDash.from, 60, Color.BlueViolet);
                Utility.DrawCircle(Yasuo.lastDash.to, 60, Color.BlueViolet);

                foreach (Yasuo.YasDash dash in Yasuo.dashes)
                {
                    if (dash.from.Distance(Game.CursorPos) < 1200)
                    {
                        var SA = Drawing.WorldToScreen(dash.from);
                        var SB = Drawing.WorldToScreen(dash.to);
                        Drawing.DrawLine(SA.X, SA.Y, SB.X, SB.Y, 3, Color.Green);
                    }
                }
            }


            /*   if ((int)NavMesh.GetCollisionFlags(Game.CursorPos) == 2 || (int)NavMesh.GetCollisionFlags(Game.CursorPos) == 64)
             *  Drawing.DrawCircle(Game.CursorPos, 70, Color.Green);
             * if (map.isWall(Game.CursorPos.To2D()))
             *  Drawing.DrawCircle(Game.CursorPos, 100, Color.Red);
             *
             * foreach (Polygon pol in map.poligs)
             * {
             *  pol.Draw(Color.BlueViolet, 3);
             * }
             *
             * foreach(Obj_AI_Base jun in MinionManager.GetMinions(Yasuo.Player.ServerPosition,700,MinionTypes.All,MinionTeam.Neutral))
             * {
             *  Drawing.DrawCircle(jun.Position, 70, Color.Green);
             *   SharpDX.Vector2 proj = map.getClosestPolygonProj(jun.ServerPosition.To2D());
             *   SharpDX.Vector2 posAfterE = jun.ServerPosition.To2D() + (SharpDX.Vector2.Normalize(proj - jun.ServerPosition.To2D() ) * 475);
             *   Drawing.DrawCircle(posAfterE.To3D(), 50, Color.Violet);
             * }
             *
             * foreach (Obj_SpellMissile mis in skillShots)
             * {
             *  Drawing.DrawCircle(mis.Position, 47, Color.Orange);
             *  Drawing.DrawCircle(mis.EndPosition, 100, Color.BlueViolet);
             * Drawing.DrawCircle(mis.SpellCaster.Position, Yasuo.Player.BoundingRadius + mis.SData.LineWidth, Color.DarkSalmon);
             *  Drawing.DrawCircle(mis.StartPosition, 70, Color.Green);
             * }*/
        }
Exemple #26
0
 /// <summary>
 ///     Checks if the unit position is on screen
 /// </summary>
 public static bool IsOnScreen(this Vector2 position)
 {
     return(position.To3D().IsOnScreen());
 }
        public static void WallDash()
        {
            if (Variables._Player.Distance(spotA) <= 600)
            {
                MoveToLimited(spotA.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotA.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_Blue" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotB) <= 600)
            {
                MoveToLimited(spotB.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotB.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini4.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotC) <= 600)
            {
                MoveToLimited(spotC.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotC.To3D()) == 0 && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotD) <= 600)
            {
                MoveToLimited(spotD.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotD.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Razorbreak" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini3.1.2" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini3.1.4" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotE) <= 600)
            {
                MoveToLimited(spotE.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotE.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_KrugMini" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotF) <= 400)
            {
                MoveToLimited(spotF.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotF.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Blue" && jungleMobs.BaseSkinName != "SRU_BlueMini1.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotG) <= 600)
            {
                MoveToLimited(spotG.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotG.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini2.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotH) <= 600)
            {
                MoveToLimited(spotH.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotH.To3D()) == 0 && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotI) <= 120)
            {
                MoveToLimited(spotI.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotI.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini8.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotJ) <= 120)
            {
                MoveToLimited(spotJ.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotJ.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Murkwolf" && jungleMobs.BaseSkinName != "SRU_MurkwolfMini8.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotL) <= 600)
            {
                MoveToLimited(spotL.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Yasuo.E.Range)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotL.To3D()) == 0 && jungleMobs.BaseSkinName == "SRU_KrugMini" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotM) <= 200)
            {
                MoveToLimited(spotM.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotM.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini10.1.3" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotN) <= 600)
            {
                MoveToLimited(spotN.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(100)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotN.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_RazorbreakMini9.1.2" && jungleMobs.BaseSkinName != "SRU_RazorbreakMini9.1.4" && jungleMobs.BaseSkinName != "SRU_Razorbreak" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
            if (Variables._Player.Distance(spotO) <= 200)
            {
                MoveToLimited(spotO.To3D());


                var jminions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Variables._Player.ServerPosition, 1000, true);
                foreach (var jungleMobs in jminions.Where(x => x.IsValidTarget(Variables._Player.AttackRange)))
                {
                    if (jungleMobs == null)
                    {
                        return;
                    }
                    if (Variables._Player.Distance(spotO.To3D()) == 0 && jungleMobs.BaseSkinName != "SRU_Red" && jungleMobs.BaseSkinName != "SRU_RedMini10.1.2" && jungleMobs.IsVisible && Yasuo.E.IsReady() && jungleMobs != null && jungleMobs.IsValidTarget(Yasuo.E.Range) && Variables.CanCastE(jungleMobs))
                    {
                        Yasuo.E.Cast(jungleMobs);
                    }
                }
            }
        }
Exemple #28
0
 /// <summary>
 ///     Randomizes the position with the supplied min/max
 /// </summary>
 public static Vector2 Randomize(this Vector2 position, int min, int max)
 {
     return(position.To3D().Randomize(min, max).To2D());
 }
Exemple #29
0
        public override void Drawing_OnDraw(EventArgs args)
        {
            var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);

            if (t.IsValidTarget())
            {
                Render.Circle.DrawCircle(t.Position, 105f, Color.GreenYellow);

                var wcCenter = ObjectManager.Player.Position.Extend(t.Position,
                                                                    ObjectManager.Player.Distance(t.Position) / 2);

                Vector2 wcLeft = ObjectManager.Player.Position.To2D() +
                                 Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D())
                                 .Rotated(ObjectManager.Player.Distance(t.Position) < 300
                                         ? 45
                                         : 37 * (float)Math.PI / 180) * ObjectManager.Player.Distance(t.Position) / 2;

                Vector2 wcRight = ObjectManager.Player.Position.To2D() +
                                  Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D())
                                  .Rotated(ObjectManager.Player.Distance(t.Position) < 300
                                          ? -45
                                          : -37 * (float)Math.PI / 180) * ObjectManager.Player.Distance(t.Position) / 2;

                Render.Circle.DrawCircle(wcCenter, 50f, Color.Red);
                Render.Circle.DrawCircle(wcLeft.To3D(), 50f, Color.Green);
                Render.Circle.DrawCircle(wcRight.To3D(), 50f, Color.Yellow);
            }
            //var bx = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range * 3));
            //foreach (var n in bx)
            //{
            //    if (n.IsValidTarget(800) && ObjectManager.Player.Distance(n) < 450)
            //    {
            //        Vector3[] x = new[] { ObjectManager.Player.Position, n.Position };
            //        Vector2 aX =
            //            Drawing.WorldToScreen(new Vector3(CommonGeometry.CenterOfVectors(x).X,
            //                CommonGeometry.CenterOfVectors(x).Y, CommonGeometry.CenterOfVectors(x).Z));

            //        Render.Circle.DrawCircle(CommonGeometry.CenterOfVectors(x), 85f, Color.White );
            //        Drawing.DrawText(aX.X - 15, aX.Y - 15, Color.GreenYellow, n.ChampionName);

            //    }
            //}

            //var enemies = HeroManager.Enemies.Where(e => e.IsValidTarget(1500));
            //var objAiHeroes = enemies as Obj_AI_Hero[] ?? enemies.ToArray();
            //IEnumerable<Obj_AI_Hero> nResult =
            //    (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e)
            //        .Distinct();

            //foreach (var n in nResult)
            //{
            //    var x = E.GetPrediction(n).CollisionObjects.Count;
            //    Render.Circle.DrawCircle(n.Position, (Orbwalking.GetRealAutoAttackRange(null) + 65) - 300, Color.GreenYellow);
            //}

            var nResult = HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range - 200));

            foreach (var n in nResult.Where(n => n.IsFacing(ObjectManager.Player)))
            {
                if (n.IsValidTarget())
                {
                    Render.Circle.DrawCircle(n.Position, E.Range - 200, Color.GreenYellow, 1);
                }
            }

            Spell[] spellList = { Q, W, E, R };
            foreach (var spell in spellList)
            {
                var menuItem = GetValue <Circle>("Draw" + spell.Slot);
                if (menuItem.Active)
                {
                    Render.Circle.DrawCircle(ObjectManager.Player.Position, spell.Range, menuItem.Color);
                }
            }
        }
Exemple #30
0
 public static void SendMovePacket(this Obj_AI_Base v, Vector2 point)
 {
     EloBuddy.Player.IssueOrder(GameObjectOrder.MoveTo, point.To3D(), false);
 }
Exemple #31
0
        private static void GetJumpPosition()
        {
            foreach (var t in HeroManager.Enemies.Where(e => e.LSIsValidTarget(2500)))
            {
                var toPolygon = new CommonGeometry.Rectangle(ObjectManager.Player.Position.LSTo2D(),
                                                             ObjectManager.Player.Position.LSTo2D().LSExtend(t.Position.LSTo2D(), t.LSDistance(ObjectManager.Player.Position)),
                                                             E.Range).ToPolygon();
                toPolygon.Draw(System.Drawing.Color.Red, 1);


                //Console.WriteLine(hero.ChampionName);

                for (int j = 20; j < 361; j += 20)
                {
                    Vector2 wcPositive = ObjectManager.Player.Position.LSTo2D() + Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()).LSRotated(j * (float)Math.PI / 180) * E.Range;
                    if (!wcPositive.LSIsWall() && t.LSDistance(wcPositive) > E.Range)
                    {
                        Render.Circle.DrawCircle(wcPositive.To3D(), 105f, Color.GreenYellow);
                    }
                    //if (!wcPositive.LSIsWall())
                    //{
                    //    ListWJumpPositions.Add(wcPositive);
                    //}

                    //Vector2 wcNegative = ObjectManager.Player.Position.LSTo2D() +
                    //                     Vector2.Normalize(hero.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D())
                    //                         .LSRotated(-j * (float)Math.PI / 180) * E.Range;

                    //Render.Circle.DrawCircle(wcNegative.To3D(), 105f, Color.White);
                    //if (!wcNegative.LSIsWall())
                    //{
                    //    ListWJumpPositions.Add(wcNegative);
                    //}
                }
            }

            //Vector2 location = ObjectManager.Player.Position.LSTo2D() +
            //                   Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D()) * W.Range;
            //Vector2 wCastPosition = location;

            ////Render.Circle.DrawCircle(wCastPosition.To3D(), 105f, System.Drawing.Color.Red);


            //if (!wCastPosition.LSIsWall())
            //{
            //    xList.Add(wCastPosition);
            //}

            //if (!wCastPosition.LSIsWall())
            //{
            //    ExistingJumpPositions.Add(new ListJumpPositions
            //    {
            //        Position = wCastPosition,
            //        Name = name
            //    });

            //    ListWJumpPositions.Add(wCastPosition);
            //}

            //if (wCastPosition.LSIsWall())
            //{
            //    for (int j = 20; j < 80; j += 20)
            //    {
            //        Vector2 wcPositive = ObjectManager.Player.Position.LSTo2D() +
            //                             Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D())
            //                                 .LSRotated(j * (float)Math.PI / 180) * W.Range;
            //        if (!wcPositive.LSIsWall())
            //        {
            //            ListWJumpPositions.Add(wcPositive);
            //        }

            //        Vector2 wcNegative = ObjectManager.Player.Position.LSTo2D() +
            //                             Vector2.Normalize(t.Position.LSTo2D() - ObjectManager.Player.Position.LSTo2D())
            //                                 .LSRotated(-j * (float)Math.PI / 180) * W.Range;
            //        if (!wcNegative.LSIsWall())
            //        {
            //            ListWJumpPositions.Add(wcNegative);
            //        }
            //    }

            //    float xDiff = ObjectManager.Player.Position.X - t.Position.X;
            //    float yDiff = ObjectManager.Player.Position.Y - t.Position.Y;
            //    int angle = (int)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI);
            //}

            ////foreach (var aa in ListWJumpPositions)
            ////{
            ////    Render.Circle.DrawCircle(aa.To3D2(), 105f, System.Drawing.Color.White);
            ////}
            //var al1 = xList.OrderBy(al => al.LSDistance(t.Position)).First();

            //var color = System.Drawing.Color.DarkRed;
            //var width = 4;

            //var startpos = ObjectManager.Player.Position;
            //var endpos = al1.To3D();
            //if (startpos.LSDistance(endpos) > 100)
            //{
            //    var endpos1 = al1.To3D() +
            //                  (startpos - endpos).LSTo2D().Normalized().LSRotated(25 * (float)Math.PI / 180).To3D() * 75;
            //    var endpos2 = al1.To3D() +
            //                  (startpos - endpos).LSTo2D().Normalized().LSRotated(-25 * (float)Math.PI / 180).To3D() * 75;

            //    //var x1 = new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos);
            //    //x1.Draw(color, width - 2);
            //    new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos).Draw(color, width - 2);


            //    var y1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos1);
            //    y1.Draw(color, width - 2);
            //    var z1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos2);
            //    z1.Draw(color, width - 2);
            //}


            ////foreach (var al in ListWJumpPositions.OrderBy(al => al.LSDistance(t.Position)))
            ////{
            ////    Render.Circle.DrawCircle(al.To3D(), 105f, System.Drawing.Color.White);
            ////}
            ////            Render.Circle.DrawCircle(al1.To3D(), 85, System.Drawing.Color.White);
            //return al1;
        }
        /// <summary>
        /// Casts the item on a Vector2 position.
        /// </summary>
        public static void UseItem(int id, Vector2 position)
        {
            foreach (var slot in
                ObjectManager.Player.InventoryItems.Where(slot => slot.Id == (ItemId)id)
                    .Where(slot => position != Vector2.Zero))
            {

                ObjectManager.Player.Spellbook.CastSpell(slot.SpellSlot, position.To3D());
            }
        }
Exemple #33
0
 /// <summary>
 ///     Casts the item on a Vector2 position.
 /// </summary>
 /// <param name="id">The identifier.</param>
 /// <param name="position">The position.</param>
 /// <returns></returns>
 public static bool UseItem(int id, Vector2 position)
 {
     return UseItem(id, position.To3D());
 }
Exemple #34
0
        internal void CastWE(Obj_AI_Base unit, Vector2 unitPosition, int minTargets = 0, HitChance hc = HitChance.Medium)
        {
            var points   = new List <Vector2>();
            var hitBoxes = new List <int>();

            Vector2 startPoint        = Khazix.ServerPosition.To2D();
            Vector2 originalDirection = W.Range * (unitPosition - startPoint).Normalized();

            foreach (AIHeroClient enemy in HeroManager.Enemies)
            {
                if (enemy.IsValidTarget() && enemy.NetworkId != unit.NetworkId)
                {
                    PredictionOutput pos = WE.GetPrediction(enemy);
                    if (pos.Hitchance >= hc)
                    {
                        points.Add(pos.UnitPosition.To2D());
                        hitBoxes.Add((int)enemy.BoundingRadius + 275);
                    }
                }
            }

            var posiblePositions = new List <Vector2>();

            for (int i = 0; i < 3; i++)
            {
                if (i == 0)
                {
                    posiblePositions.Add(unitPosition + originalDirection.Rotated(0));
                }
                if (i == 1)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(Wangle));
                }
                if (i == 2)
                {
                    posiblePositions.Add(startPoint + originalDirection.Rotated(-Wangle));
                }
            }


            if (startPoint.LSDistance(unitPosition) < 900)
            {
                for (int i = 0; i < 3; i++)
                {
                    Vector2 pos       = posiblePositions[i];
                    Vector2 direction = (pos - startPoint).Normalized().Perpendicular();
                    float   k         = (2 / 3 * (unit.BoundingRadius + W.Width));
                    posiblePositions.Add(startPoint - k * direction);
                    posiblePositions.Add(startPoint + k * direction);
                }
            }

            var bestPosition = new Vector2();
            int bestHit      = -1;

            foreach (Vector2 position in posiblePositions)
            {
                int hits = CountHits(position, points, hitBoxes);
                if (hits > bestHit)
                {
                    bestPosition = position;
                    bestHit      = hits;
                }
            }

            if (bestHit + 1 <= minTargets)
            {
                return;
            }

            W.Cast(bestPosition.To3D(), false);
        }
Exemple #35
0
 /// <summary>
 /// Casts the item on a Vector2 position.
 /// </summary>
 public static void UseItem(int id, Vector2 position)
 {
     foreach (
         var slot in
             ObjectManager.Player.InventoryItems.Where(slot => slot.Id == (ItemId) id)
                 .Where(slot => position != null))
     {
         slot.UseItem(position.To3D());
     }
 }
Exemple #36
0
 /// <summary>
 ///     Casts the item on a Vector2 position.
 /// </summary>
 /// <param name="id">The identifier.</param>
 /// <param name="position">The position.</param>
 /// <returns></returns>
 public static bool UseItem(int id, Vector2 position)
 {
     return(UseItem(id, position.To3D()));
 }
Exemple #37
0
        /*Combo*/

        /*Q Split GetCollision*/
        private static List <Obj_AI_Base> GetCollision(Vector2 from, IEnumerable <Vector2> to, float width, float speed, float delay, float delayOverride = -1)
        {
            return(Pradiction.Collision.GetCollision(to.Select(h => h.To3D()).ToList(), new Pradiction.PredictionInput {
                From = from.To3D(), Type = Pradiction.SkillshotType.SkillshotLine, Radius = width, Delay = delayOverride > 0 ? delayOverride : delay, Speed = speed
            }));
        }
 public static void CastSpell(EvadeSpellData spellData, Vector2 movePos)
 {
     EvadeSpell.LastSpellEvadeCommand = new EvadeCommand
     {
         Order = EvadeOrderCommand.CastSpell,
         TargetPosition = movePos,
         EvadeSpellData = spellData,
         Timestamp = EvadeUtils.TickCount,
         IsProcessed = false
     };
     ConsoleDebug.WriteLine("CastSpell: " + movePos);
     MyHero.Spellbook.CastSpell(spellData.SpellKey, movePos.To3D(), false);
 }
Exemple #39
0
 /// <summary>
 ///     Determines whether the specified vector is in range of the item.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <returns></returns>
 public bool IsInRange(Vector2 target)
 {
     return(this.IsInRange(target.To3D()));
 }
Exemple #40
0
 /// <summary>
 ///     Determines whether the specified vector is in range of the item.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <returns></returns>
 public bool IsInRange(Vector2 target)
 {
     return IsInRange(target.To3D());
 }
Exemple #41
0
 public static float DistanceToMouse(this Vector2 position)
 {
     return(Game.CursorPosition.Distance(position.To3D()));
 }
Exemple #42
0
 public void Cast(Vector2 position)
 {
     if (ObjectManager.Player.Distance(position) < Range)
     {
         UseItem(Id, position.To3D());
     }
 }
Exemple #43
0
 public bool Cast(Vector2 fromPosition, Vector2 toPosition)
 {
     return(Cast(fromPosition.To3D(), toPosition.To3D()));
 }