Ejemplo n.º 1
0
        private static void DetonateQ(Obj_AI_Base t)
        {
            if (QMissile != null && QMissile.IsValid)
            {
                QSplit.Collision = false;
                var realPosition = QMissile.StartPosition.LSExtend(QMissile.EndPosition,
                                                                   QMissile.StartPosition.Distance(QMissile.Position) + Game.Ping / 2 + 60);
                //Q.Cast();

                QSplit.UpdateSourcePosition(realPosition, realPosition);

                var start  = QMissile.StartPosition.To2D();
                var end    = realPosition.To2D();
                var radius = QSplit.Range;

                var dir  = (end - start).Normalized();
                var pDir = dir.Perpendicular();

                var rightEndPos = end + pDir * radius;
                var leftEndPos  = end - pDir * radius;

                var rEndPos = new Vector3(rightEndPos.X, rightEndPos.Y, ObjectManager.Player.Position.Z);
                var lEndPos = new Vector3(leftEndPos.X, leftEndPos.Y, ObjectManager.Player.Position.Z);

                if (QSplit.WillHit(t, rEndPos) || QSplit.WillHit(t, lEndPos))
                {
                    Q.Cast();
                }
            }
        }
Ejemplo n.º 2
0
        private static void BestAim(Vector3 predictionPos)
        {
            var start       = Player.Position.To2D();
            var c1          = predictionPos.Distance(Player.Position);
            var playerPos2d = Player.Position.To2D();

            foreach (var point in pointList)
            {
                for (var j = 400; j <= 1100; j = j + 50)
                {
                    var posExtend = Player.Position.LSExtend(point, j);

                    var a1 = Player.Distance(posExtend);
                    var b1 = (float)Math.Sqrt(c1 * c1 - a1 * a1);

                    if (b1 > QSplit.Range)
                    {
                        continue;
                    }

                    var pointA = Player.Position.LSExtend(point, a1);

                    var end  = pointA.To2D();
                    var dir  = (end - start).Normalized();
                    var pDir = dir.Perpendicular();

                    var rightEndPos = end + pDir * b1;
                    var leftEndPos  = end - pDir * b1;

                    var rEndPos = new Vector3(rightEndPos.X, rightEndPos.Y, ObjectManager.Player.Position.Z);
                    var lEndPos = new Vector3(leftEndPos.X, leftEndPos.Y, ObjectManager.Player.Position.Z);

                    if (lEndPos.Distance(predictionPos) < QSplit.Width)
                    {
                        var collision = Q.GetCollision(playerPos2d, new List <Vector2> {
                            posExtend.To2D()
                        });
                        if (collision.Count > 0)
                        {
                            break;
                        }

                        var collisionS = QSplit.GetCollision(pointA.To2D(), new List <Vector2> {
                            lEndPos.To2D()
                        });
                        if (collisionS.Count > 0)
                        {
                            break;
                        }

                        Q.Cast(pointA);
                        return;
                    }
                    if (rEndPos.Distance(predictionPos) < QSplit.Width)
                    {
                        var collision = Q.GetCollision(playerPos2d, new List <Vector2> {
                            posExtend.To2D()
                        });
                        if (collision.Count > 0)
                        {
                            break;
                        }

                        var collisionR = QSplit.GetCollision(pointA.To2D(), new List <Vector2> {
                            rEndPos.To2D()
                        });
                        if (collisionR.Count > 0)
                        {
                            break;
                        }

                        Q.Cast(pointA);
                        return;
                    }
                }
            }
        }