コード例 #1
0
ファイル: WallQ.cs プロジェクト: hup3s/Elobuddy-Addons
        public static void WallTumble()
        {
            foreach (var delayedAction in DelayedActions)
            {
                if (delayedAction.Value <= Environment.TickCount)
                {
                    delayedAction.Key.Invoke();
                    DelayedActions.Remove(delayedAction.Key);
                    return;
                }
            }
            if (!Program.Q.IsReady()) return;

            Vector2 drakeWallQPos = new Vector2(11514, 4462);
            Vector2 midWallQPos = new Vector2(6667, 8794);

            var selectedPos = drakeWallQPos.Distance(_Player) < midWallQPos.Distance(_Player) ? drakeWallQPos :  midWallQPos;
            var walkPos = drakeWallQPos.Distance(_Player) < midWallQPos.Distance(_Player)
                ? new Vector2(12050, 4827)
                : new Vector2(6962, 8952);
            if (_Player.Distance(walkPos) < 200 && _Player.Distance(walkPos) > 1)
            {
                Player.IssueOrder(GameObjectOrder.MoveTo, walkPos.To3D());
            }
            else if(_Player.Distance(walkPos) <= 10)
            {
                Player.IssueOrder(GameObjectOrder.MoveTo, walkPos.To3D());
                DelayedActions.Add(delegate {Program.Q.Cast(selectedPos.To3D());}, Environment.TickCount + 106 + (Game.Ping/2));
            }
        }
コード例 #2
0
ファイル: MyExtensions.cs プロジェクト: q51251/LeagueSharp-1
        public static Vector3 GetTumblePos(this Obj_AI_Base target)
        {
            //if the target is not a melee and he's alone he's not really a danger to us, proceed to 1v1 him :^ )
            if (!target.IsMelee && Heroes.Player.CountEnemiesInRange(800) == 1) return Game.CursorPos;

            var aRC = new Geometry.Circle(Heroes.Player.ServerPosition.To2D(), 300).ToPolygon().ToClipperPath();
            var cursorPos = Game.CursorPos;
            var targetPosition = target.ServerPosition;
            var pList = new List<Vector3>();
            var additionalDistance = (0.106 + Game.Ping / 2000f) * target.MoveSpeed;

            if (!cursorPos.IsDangerousPosition()) return cursorPos;

            foreach (var p in aRC)
            {
                var v3 = new Vector2(p.X, p.Y).To3D();

                if (target.IsFacing(Heroes.Player))
                {
                    if (!v3.IsDangerousPosition() && v3.Distance(targetPosition) < 550) pList.Add(v3);
                }
                else
                {
                    if (!v3.IsDangerousPosition() && v3.Distance(targetPosition) < 550 - additionalDistance) pList.Add(v3);
                }
            }
            if (Heroes.Player.UnderTurret() || Heroes.Player.CountEnemiesInRange(800) == 1)
            {
                return pList.Count > 1 ? pList.OrderBy(el => el.Distance(cursorPos)).FirstOrDefault() : Vector3.Zero;
            }
            return pList.Count > 1 ? pList.OrderBy(el => el.Distance(cursorPos)).FirstOrDefault() : Vector3.Zero;
        }
コード例 #3
0
ファイル: Misc.cs プロジェクト: himrengod/Elobuddy-1
        public static void WallTumble()
        {
            if (Game.MapId != GameMapId.SummonersRift) return;
            if (!Vayne.Q.IsReady())
            {
                Orbwalker.DisableMovement = false;
                return;
            }
            Orbwalker.DisableMovement = true;

            Vector2 drakeWallQPos = new Vector2(11514, 4462);
            Vector2 midWallQPos = new Vector2(6667, 8794);

            var selectedPos = drakeWallQPos.Distance(_Player) < midWallQPos.Distance(_Player) ? drakeWallQPos : midWallQPos;
            var walkPos = drakeWallQPos.Distance(_Player) < midWallQPos.Distance(_Player)
                ? new Vector2(12050, 4827)
                : new Vector2(6962, 8952);
            if (_Player.Distance(walkPos) < 200 && _Player.Distance(walkPos) > 60)
            {
                Player.IssueOrder(GameObjectOrder.MoveTo, walkPos.To3D());
            }
            else if (_Player.Distance(walkPos) <= 50)
            {
                Player.CastSpell(SpellSlot.Q, selectedPos.To3D());
            }
        }
コード例 #4
0
ファイル: Collision.cs プロジェクト: Ryzeros/L-
 /// <summary>
 /// Checks enemy hero collisions
 /// </summary>
 /// <param name="from">Start position</param>
 /// <param name="to">End position</param>
 /// <param name="width">Rectangle scale</param>
 /// <param name="delay">Spell delay</param>
 /// <param name="missileSpeed">Spell missile speed</param>
 /// <param name="isArc">Checks collision for arc spell</param>
 /// <returns>true if collision found</returns>
 public static bool CheckAllyHeroCollision(Vector2 from, Vector2 to, float width, float delay, float missileSpeed = 0, bool isArc = false)
 {
     var spellHitBox = ClipperWrapper.MakePaths(ClipperWrapper.DefineRectangle(from, to, width));
     if (isArc)
     {
         spellHitBox = ClipperWrapper.MakePaths(new SPrediction.Geometry.Polygon(
                         ClipperWrapper.DefineArc(from - new Vector2(875 / 2f, 20), to, (float)Math.PI * (to.Distance(from) / 875f), 410, 200 * (to.Distance(from) / 875f)),
                         ClipperWrapper.DefineArc(from - new Vector2(875 / 2f, 20), to, (float)Math.PI * (to.Distance(from) / 875f), 410, 320 * (to.Distance(from) / 875f))));
     }
     return HeroManager.Allies.AsParallel().Any(p => ClipperWrapper.IsIntersects(ClipperWrapper.MakePaths(ClipperWrapper.DefineCircle(Prediction.GetFastUnitPosition(p, delay, missileSpeed), p.BoundingRadius)), spellHitBox));
 }
コード例 #5
0
        /// <summary>
        /// Gets Prediction result
        /// </summary>
        /// <param name="target">Target for spell</param>
        /// <param name="width">Spell width</param>
        /// <param name="delay">Spell delay</param>
        /// <param name="missileSpeed">Spell missile speed</param>
        /// <param name="range">Spell range</param>
        /// <param name="collisionable">Spell collisionable</param>
        /// <param name="type">Spell skillshot type</param>
        /// <param name="path">Waypoints of target</param>
        /// <param name="avgt">Average reaction time (in ms)</param>
        /// <param name="movt">Passed time from last movement change (in ms)</param>
        /// <param name="avgp">Average Path Lenght</param>
        /// <param name="from">Spell casted position</param>
        /// <param name="rangeCheckFrom"></param>
        /// <returns>Prediction result as <see cref="Prediction.Result"/></returns>
        public static Prediction.Result GetPrediction(Obj_AI_Base target, float width, float delay, float missileSpeed, float range, bool collisionable, List<Vector2> path, float avgt, float movt, float avgp, Vector2 from, Vector2 rangeCheckFrom)
        {
            Prediction.Result result = Prediction.GetPrediction(target, width, delay, missileSpeed, range, collisionable, SkillshotType.SkillshotCircle, path, avgt, movt, avgp, from, rangeCheckFrom);
            if (result.HitChance >= HitChance.Low && delay >= 1.0f && width < 250)
            {
                result.CastPosition += (result.CastPosition - from + target.Direction.To2D()).Normalized() * width / 2f;
                if (from.Distance(result.CastPosition) > range - Prediction.GetArrivalTime(from.Distance(result.CastPosition), delay, missileSpeed) * target.MoveSpeed * (100 - Prediction.predMenu.Item("SPREDMAXRANGEIGNORE").GetValue<Slider>().Value) / 100f)
                    result.HitChance = HitChance.OutOfRange;
            }

            return result;
        }
コード例 #6
0
ファイル: Condemn.cs プロジェクト: hup3s/Elobuddy-Addons
 public static Vector2 GetFirstNonWallPos(Vector2 startPos, Vector2 endPos)
 {
     int distance = 0;
     for (int i = 0; i < Program.CondemnMenu["pushDistance"].Cast<Slider>().CurrentValue; i += 20)
     {
         var cell = startPos.Extend(endPos, endPos.Distance(startPos) + i).ToNavMeshCell().CollFlags;
         if (cell.HasFlag(CollisionFlags.Wall) || cell.HasFlag(CollisionFlags.Building))
         {
             distance = i - 20;
         }
     }
     return startPos.Extend(endPos, distance + endPos.Distance(startPos));
 }
コード例 #7
0
ファイル: Mechanics.cs プロジェクト: Kysamaa/EloBuddy
 public static Vector2 GetFirstNonWallPos(Vector2 startPos, Vector2 endPos)
 {
     int distance = 0;
     for (int i = 0; i < Manager.MenuManager.CondemnPushDistance; i += 20)
     {
         var cell = startPos.Extend(endPos, endPos.Distance(startPos) + i);
         if (NavMesh.GetCollisionFlags(cell).HasFlag(CollisionFlags.Wall) ||
             NavMesh.GetCollisionFlags(cell).HasFlag(CollisionFlags.Building))
         {
             distance = i - 20;
         }
     }
     return startPos.Extend(endPos, distance + endPos.Distance(startPos));
 }
コード例 #8
0
ファイル: Collision.cs プロジェクト: denizereer3/EloBuddy
        public static FastPredResult FastPrediction(Vector2 from, Obj_AI_Base unit, int delay, int speed)
        {
            var tDelay = delay / 1000f + (from.Distance(unit) / speed);
            var d = tDelay * unit.MoveSpeed;
            var path = unit.Path;

            if (path.Length > d)
            {
                return new FastPredResult
                {
                    IsMoving = true,
                    CurrentPos = unit.ServerPosition.To2D(),
                    PredictedPos = CutPath(path, d)[0].To2D(),
                };
            }

            if (path.Count() == 0)
            {
                return new FastPredResult
                {
                    IsMoving = false,
                    CurrentPos = unit.ServerPosition.To2D(),
                    PredictedPos = unit.ServerPosition.To2D(),
                };
            }

            return new FastPredResult
            {
                IsMoving = false,
                CurrentPos = path[path.Count() - 1].To2D(),
                PredictedPos = path[path.Count() - 1].To2D(),
            };
        }
コード例 #9
0
ファイル: Extensions.cs プロジェクト: Hydro202/Leaguesharp
        public static Vector3 GetCondemnPosition(this Vector3 position)
        {
            var pointList = new List<Vector3>();

            pointList.Add(Vector3.Zero);

            for (var j = 485; j >= 50; j -= 100)
            {
                var offset = (int)(2 * Math.PI * j / 100);

                for (var i = 0; i <= offset; i++)
                {
                    var angle = i * Math.PI * 2 / offset;
                    var point =
                        new Vector2(
                            (float)(position.X + j * Math.Cos(angle)),
                            (float)(position.Y - j * Math.Sin(angle))).To3D();

                    var cP = point.Extend(position, point.Distance(position) + 50);
                    if (point.IsWall() && cP.Distance(point) < 425 && !cP.UnderTurret(true) && cP.Distance(position) > 325 && cP.Distance(position) < 545 &&
                 (cP.CountEnemiesInRange(425) <= cP.CountAlliesInRange(325)))
                    {
                        pointList.Add(cP);
                    }
                }
            }

            return pointList.OrderByDescending(p=>p.Distance(position)).FirstOrDefault();
        }
コード例 #10
0
ファイル: Wizard.cs プロジェクト: AristoLOL/EloBuddy-1
        public static Vector3 GetPRADAPos(this AIHeroClient target)
        {
            if (target == null) return Vector3.Zero;
            var aRC = new Geometry.Circle(Heroes.Player.ServerPosition.To2D(), 300).ToPolygon().ToClipperPath();
            var tP = target.ServerPosition;
            var pList = new List<Vector3>();
            foreach (var p in aRC)
            {
                var v3 = new Vector2(p.X, p.Y).To3D();


                if (!v3.UnderTurret(true) && v3.Distance(tP) > 325 && v3.Distance(tP) < Heroes.Player.AttackRange &&
                    (v3.CountEnemiesInRange(425) <= v3.CountAlliesInRange(325))) pList.Add(v3);
            }
            return pList.Count > 1 ? pList.OrderByDescending(el => el.Distance(tP)).FirstOrDefault() : Vector3.Zero;
        }
コード例 #11
0
        public static FastPredResult FastPrediction(Vector2 from, Obj_AI_Base unit, int delay, int speed)
        {
            var tDelay = delay/1000f + (from.Distance(unit)/speed);
            var d = tDelay*unit.MoveSpeed;
            var path = unit.GetWaypoints();

            if (path.PathLength() > d)
            {
                return new FastPredResult
                {
                    IsMoving = true,
                    CurrentPos = unit.ServerPosition.To2D(),
                    PredictedPos = path.CutPath((int) d)[0]
                };
            }
            if (path.Count == 0)
            {
                return new FastPredResult
                {
                    IsMoving = false,
                    CurrentPos = unit.ServerPosition.To2D(),
                    PredictedPos = unit.ServerPosition.To2D()
                };
            }
            return new FastPredResult
            {
                IsMoving = false,
                CurrentPos = path[path.Count - 1],
                PredictedPos = path[path.Count - 1]
            };
        }
コード例 #12
0
ファイル: EvadeHelper.cs プロジェクト: qktlfflzk/Backup5.4
        public static PositionInfo InitPositionInfo(Vector2 pos, float extraDelayBuffer, float extraEvadeDistance, Vector2 lastMovePos, Spell lowestEvadeTimeSpell) //clean this shit up
        {
            var extraDist = Evade.menu.SubMenu("MiscSettings").SubMenu("ExtraBuffers").Item("ExtraCPADistance").GetValue<Slider>().Value;

            var posInfo = canHeroWalkToPos(pos, myHero.MoveSpeed, extraDelayBuffer + Game.Ping, extraDist);
            posInfo.isDangerousPos = CheckDangerousPos(pos, 6);
            posInfo.hasExtraDistance = extraEvadeDistance > 0 ? CheckDangerousPos(pos, extraEvadeDistance) : false;// ? 1 : 0;            
            posInfo.closestDistance = posInfo.distanceToMouse;
            posInfo.intersectionTime = GetIntersectTime(lowestEvadeTimeSpell, myHero.ServerPosition.To2D(), pos);
            posInfo.distanceToMouse = pos.Distance(lastMovePos);
            posInfo.posDistToChamps = GetDistanceToChampions(pos);

            if (Evade.menu.SubMenu("MiscSettings").SubMenu("FastEvade").Item("RejectMinDistance").GetValue<Slider>().Value > 0
            && Evade.menu.SubMenu("MiscSettings").SubMenu("FastEvade").Item("RejectMinDistance").GetValue<Slider>().Value >
                posInfo.closestDistance) //reject closestdistance
            {
                posInfo.rejectPosition = true;
            }

            if (Evade.menu.SubMenu("MiscSettings").SubMenu("ExtraBuffers").Item("MinComfortZone").GetValue<Slider>().Value >
                posInfo.posDistToChamps)
            {
                posInfo.hasComfortZone = false;
            }

            return posInfo;
        }
コード例 #13
0
 public Arc(Vector2 start, Vector2 end, int hitbox)
 {
     Start = start;
     End = end;
     HitBox = hitbox;
     Distance = Start.Distance(End);
 }
コード例 #14
0
 private static int CountEnemiesUltRange(Vector2 CastPosition)
 {
     int count = 0;
     foreach (Vector3 EnemyPos in GetEnemyInPos())
         if (CastPosition.Distance(EnemyPos) <= 425)
             count++;
     return count;
 }
コード例 #15
0
ファイル: Program.cs プロジェクト: 0s0speedy/LeagueSharp
 public static bool CanEscapeWithFlash(Vector2 pos)
 {
     foreach (Obj_AI_Turret turret in ObjectManager.Get<Obj_AI_Turret>().Where(turret => turret.IsEnemy && turret.Health > 0))
     {
         if (pos.Distance(turret.Position.To2D()) < (1800 + Player.BoundingRadius))
             return true;
     }
     return false;
 }
コード例 #16
0
ファイル: VectorHelper.cs プロジェクト: himrengod/Elobuddy-1
        public static double AngleBetween(Vector2 a, Vector2 b, Vector2 c)
        {
            var a1 = c.Distance(b);
            var b1 = a.Distance(c);
            var c1 = b.Distance(a);
            if (a1 == 0 || c1 == 0) { return 0; }

            return Math.Acos((a1 * a1 + c1 * c1 - b1 * b1) / (2 * a1 * c1)) * (180 / Math.PI);
        }
コード例 #17
0
ファイル: WallQ.cs プロジェクト: hup3s/Elobuddy-Addons
 public static void Drawing_OnDraw()
 {
     Vector2 drakeWallQPos = new Vector2(12050, 4827);
     Vector2 midWallQPos = new Vector2(6962, 8952);
     if (drakeWallQPos.Distance(_Player) < 3000)
         new Circle() { Color = _Player.Distance(drakeWallQPos) <= 100 ? Color.DodgerBlue : Color.White, Radius = 100 }.Draw(drakeWallQPos.To3D());
     if (midWallQPos.Distance(_Player) < 3000)
         new Circle() { Color = _Player.Distance(midWallQPos) <= 100 ? Color.DodgerBlue : Color.White,  Radius = 100 }.Draw(midWallQPos.To3D());
 }
コード例 #18
0
ファイル: Item.cs プロジェクト: noradium/Black-Rins-ambition
 /// <summary>
 /// アイテムと自機の当たり判定
 /// </summary>
 /// <returns>
 /// The collision detection.
 /// </returns>
 /// <param name='mySpritePosition'>
 /// My sprite position.
 /// </param>
 public static Item1 ItemCollisionDetection(Vector2 mySpritePosition)
 {
     foreach(Item1 item in ItemList){
         if(mySpritePosition.Distance(item.Sprite.Position) < 50){
             return item;
         }
     }
     return null;
 }
コード例 #19
0
ファイル: Geometry.cs プロジェクト: Ryzeros/L-
 /// <summary>
 /// Gets closest on circle point
 /// </summary>
 /// <param name="center">Circle center</param>
 /// <param name="radius">Circle radius</param>
 /// <param name="pointStart">Point start</param>
 /// <param name="pointEnd">Point end</param>
 /// <returns></returns>
 internal static Vector2 ClosestCirclePoint(Vector2 center, float radius, Vector2 pointStart, Vector2 pointEnd)
 {
     Vector2 point;
     if (pointStart.Distance(center) < pointEnd.Distance(center))
         point = pointStart;
     else
         point = pointEnd;
     Vector2 v = (point - center);
     return center + v / v.Length() * radius;
 }
コード例 #20
0
ファイル: Helper.cs プロジェクト: StopMotionCuber/MotionSharp
 public static bool GetPredPos(Obj_AI_Hero enemy, bool additionalReactionTime = false, bool additionalBarrelTime = false)
 {
     PredPos = SPrediction.Prediction.GetFastUnitPosition(enemy, Config.Menu.Item("misc.enemyReactionTime").GetValue<Slider>().Value);
     float reactionDistance = Config.Menu.Item("misc.enemyReactionTime").GetValue<Slider>().Value  +  (additionalReactionTime? Config.Menu.Item("misc.additionalReactionTime").GetValue<Slider>().Value : 0) * enemy.MoveSpeed*0.001f;
     if (PredPos.Distance(enemy) > reactionDistance)
     {
         PredPos = enemy.Position.Extend(PredPos.To3D(), reactionDistance).To2D();
     }
     return true;
 }
コード例 #21
0
ファイル: CirclePrediction.cs プロジェクト: Xelamats/PortAIO
        /// <summary>
        ///     Gets Aoe Prediction result
        /// </summary>
        /// <param name="width">Spell width</param>
        /// <param name="delay">Spell delay</param>
        /// <param name="missileSpeed">Spell missile speed</param>
        /// <param name="range">Spell range</param>
        /// <param name="from">Spell casted position</param>
        /// <param name="rangeCheckFrom"></param>
        /// <returns>Prediction result as <see cref="Prediction.AoeResult" /></returns>
        public static Prediction.AoeResult GetAoePrediction(float width, float delay, float missileSpeed, float range,
            Vector2 from, Vector2 rangeCheckFrom)
        {
            var result = new Prediction.AoeResult {HitCount = 0};
            var enemies =
                HeroManager.Enemies.Where(
                    p =>
                        p.IsValidTarget() &&
                        Prediction.GetFastUnitPosition(p, delay, 0, from).Distance(rangeCheckFrom) < range);

            if (enemies.Count() > 0)
            {
                var posSummary = Vector2.Zero;
                enemies.AsParallel()
                    .ForAll(p => posSummary += Prediction.GetFastUnitPosition(p, delay, missileSpeed, from));
                var center = posSummary/enemies.Count();
                float flyTime = 0;
                if (missileSpeed != 0)
                    flyTime = from.Distance(center)/missileSpeed;

                posSummary = Vector2.Zero;
                var predictionResults = new List<Tuple<Prediction.Result, float>>();

                foreach (var enemy in enemies)
                {
                    var prediction = GetPrediction(enemy, width, delay + flyTime, 0, range, false, enemy.GetWaypoints(),
                        enemy.AvgMovChangeTime(), enemy.LastMovChangeTime(), enemy.AvgPathLenght(),
                        enemy.LastAngleDiff(), from, rangeCheckFrom);
                    if (prediction.HitChance > HitChance.Medium)
                    {
                        posSummary += prediction.UnitPosition;
                        predictionResults.Add(new Tuple<Prediction.Result, float>(prediction, enemy.BoundingRadius));
                    }
                }

                if (predictionResults.Count > 0)
                {
                    center = posSummary/predictionResults.Count;
                    result.CastPosition = center;
                    foreach (var res in predictionResults)
                    {
                        if (
                            LeagueSharp.Common.Geometry.CircleCircleIntersection(center, res.Item1.UnitPosition, width,
                                res.Item2).Length > 1)
                            result.HitCount++;
                    }
                }

                predictionResults.Clear();
                GC.Collect(GC.GetGeneration(predictionResults));
            }

            return result;
        }
コード例 #22
0
 public static double BadaoAngleBetween(Vector2 a, Vector2 center, Vector2 c)
 {
     float a1 = c.Distance(center);
     float b1 = a.Distance(c);
     float c1 = center.Distance(a);
     if (a1 == 0 || c1 == 0) { return 0; }
     else
     {
         return Math.Acos((a1 * a1 + c1 * c1 - b1 * b1) / (2 * a1 * c1)) * (180 / Math.PI);
     }
 }
コード例 #23
0
ファイル: Program.cs プロジェクト: tramyeu/EloBuddy
        //-----------------------------------------------CountRHits(Vector2 CastPosition)-------------------------------------------
        static int CountRHits(Vector2 CastPosition)
        {
            int Hits = new int();

            foreach (Vector3 EnemyPos in GetEnemiesPosition())
            {
                if (CastPosition.Distance(EnemyPos) <= 260) Hits += 1;
            }

            return Hits;
        }
コード例 #24
0
ファイル: Gragas.cs プロジェクト: xcxooxl/Lsharp3
 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);
         }
     }
 }
コード例 #25
0
ファイル: MyExtensions.cs プロジェクト: q51251/LeagueSharp-1
        public static Vector3 GetPositioning(this Obj_AI_Base target)
        {
            var cursorPos = Game.CursorPos;
            //if the target is not a melee and he's alone he's not really a danger to us, proceed to 1v1 him :^ )
            if (!target.IsMelee && Heroes.Player.CountEnemiesInRange(800) == 1) return cursorPos;
            if (!cursorPos.IsDangerousPosition()) return cursorPos;

            var aRC = new Geometry.Circle(Heroes.Player.ServerPosition.To2D(), 575).ToPolygon().ToClipperPath();
            var targetPosition = Prediction.GetPrediction(target, 1800f).UnitPosition;
            var pList = new List<Vector3>();

            if (!cursorPos.IsDangerousPosition() || Player.UnderTurret() || Game.CursorPos.UnderTurret(true) || Player.CountEnemiesInRange(1400) == 1) return cursorPos;

            foreach (var p in aRC)
            {
                var v3 = new Vector2(p.X, p.Y).To3D();

                if (!v3.IsDangerousPosition() && v3.Distance(targetPosition) > 375 && v3.Distance(targetPosition) < 600) pList.Add(v3);
            }
            return pList.Count > 1 ? pList.OrderBy(el => el.Distance(cursorPos)).FirstOrDefault() : Vector3.Zero;
        }
コード例 #26
0
ファイル: Extensions.cs プロジェクト: VivianGit/Asuvril
        public static Vector2? GetFirstWallPoint(Vector2 from, Vector2 to, float step = 25)
        {
            var direction = (to - from).Normalized();

            for (float d = 0; d < from.Distance(to); d = d + step)
            {
                var testPoint = from + d * direction;
                var flags = NavMesh.GetCollisionFlags(testPoint.X, testPoint.Y);
                if (flags.HasFlag(CollisionFlags.Wall) || flags.HasFlag(CollisionFlags.Building))
                {
                    return from + (d - step) * direction;
                }
            }
            return null;
        }
コード例 #27
0
ファイル: Insec.cs プロジェクト: Enochen/EloBuddy
        //From B$.Common
        public static Vector2[] CircleCircleIntersection(Vector2 center1, Vector2 center2, float radius1, float radius2)
        {
            var distance = center1.Distance(center2);

            if (distance > radius1 + radius2 || (distance <= Math.Abs(radius1 - radius2)))
            {
                return new Vector2[] { };
            }

            var a = (radius1 * radius1 - radius2 * radius2 + distance * distance) / (2 * distance);
            var h = (float)Math.Sqrt(radius1 * radius1 - a * a);
            var direction = (center2 - center1).Normalized();
            var pa = center1 + a * direction;
            var intersection1 = pa + h * direction.Perpendicular();
            var intersection2 = pa - h * direction.Perpendicular();
            return new[] { intersection1, intersection2 };
        }
コード例 #28
0
ファイル: xDMath.cs プロジェクト: blm95/LeagueSharp-2
        public static Vector2[] CircleCircleIntersection(Vector2 center1, Vector2 center2, float radius1, float radius2)
        {
            var D = center1.Distance(center2);

            if (D > radius1 + radius2 || (D <= Math.Abs(radius1 - radius2)))
            {
                return new Vector2[] { };
            }

            var A = (radius1 * radius1 - radius2 * radius2 + D * D) / (2 * D);
            var H = (float)Math.Sqrt(radius1 * radius1 - A * A);
            var Direction = (center2 - center1).Normalized();
            var PA = center1 + A * Direction;
            var S1 = PA + H * Direction.Perpendicular();
            var S2 = PA - H * Direction.Perpendicular();
            return new[] { S1, S2 };
        }
コード例 #29
0
ファイル: Utils.cs プロジェクト: Esk0r/LeagueSharp
        public static bool CanReach(Vector2 start, Vector2 end, List<Geometry.Polygon> polygons, bool checkWalls = false)
        {
            if (start == end)
            {
                return false;
            }

            //TODO Disable if the distance to the start position is high
            if (checkWalls)
            {
                var nPoints = 2;
                var step = start.Distance(end) / nPoints;

                var direction = (end - start).Normalized();
                for (int i = 0; i <= nPoints; i++)
                {
                    var p = start + i * step * direction;
                    if (p.IsWall())
                    {
                        return false;
                    }
                }
            }
            

            foreach (var polygon in polygons)
            {
                for (int i = 0; i < polygon.Points.Count; i++)
                {
                    var a = polygon.Points[i];
                    var b = polygon.Points[i == polygon.Points.Count - 1 ? 0 : i + 1];

                    if (Evade.Utils.LineSegmentsCross(start, end, a, b))
                    {
                        return false;
                    }
                }
            }

            return true;
        }
コード例 #30
0
ファイル: MyExtensions.cs プロジェクト: cttbot/LeagueSharp
        public static Vector3 GetAggressiveTumblePos(this Obj_AI_Base target)
        {
            var cursorPos = Game.CursorPos;

            if (!cursorPos.IsDangerousPosition()) return cursorPos;
            //if the target is not a melee and he's alone he's not really a danger to us, proceed to 1v1 him :^ )
            if (!target.IsMelee && Heroes.Player.CountEnemiesInRange(800) == 1) return cursorPos;

            var aRC = new Geometry.Circle(Heroes.Player.ServerPosition.To2D(), 300).ToPolygon().ToClipperPath();
            var targetPosition = target.ServerPosition;

            foreach (var p in aRC)
            {
                var v3 = new Vector2(p.X, p.Y).To3D();
                var dist = v3.Distance(targetPosition);
                if (dist > 325 && dist < 450)
                {
                    return v3;
                }
            }
            return Vector3.Zero;
        }