예제 #1
0
 /// <summary>
 /// Reset the net to its default position
 /// </summary>
 public void Reset()
 {
     if (m_BaseAddress == RED_NET_ADDRESS)
     {
         RightFrontBottom = RedDefaultPositions.RIGHT_FRONT_BOTTOM;
         LeftFrontBottom  = RedDefaultPositions.LEFT_FRONT_BOTTOM;
         LeftBackBottom   = RedDefaultPositions.LEFT_BACK_BOTTOM;
         RightBackBottom  = RedDefaultPositions.RIGHT_BACK_BOTTOM;
         RightFrontTop    = RedDefaultPositions.RIGHT_FRONT_TOP;
         LeftFrontTop     = RedDefaultPositions.LEFT_FRONT_TOP;
         LeftBackTop      = RedDefaultPositions.LEFT_BACK_TOP;
         RightBackTop     = RedDefaultPositions.RIGHT_BACK_TOP;
     }
     else if (m_BaseAddress == BLUE_NET_ADDRESS)
     {
         RightFrontBottom = BlueDefaultPositions.RIGHT_FRONT_BOTTOM;
         LeftFrontBottom  = BlueDefaultPositions.LEFT_FRONT_BOTTOM;
         LeftBackBottom   = BlueDefaultPositions.LEFT_BACK_BOTTOM;
         RightBackBottom  = BlueDefaultPositions.RIGHT_BACK_BOTTOM;
         RightFrontTop    = BlueDefaultPositions.RIGHT_FRONT_TOP;
         LeftFrontTop     = BlueDefaultPositions.LEFT_FRONT_TOP;
         LeftBackTop      = BlueDefaultPositions.LEFT_BACK_TOP;
         RightBackTop     = BlueDefaultPositions.RIGHT_BACK_TOP;
     }
 }
예제 #2
0
        public static float Angle(HQMVector v1, HQMVector v2)
        {
            double x = v1.X - v2.X;
            double z = v1.Z - v2.Z;

            return((float)(Math.Atan2(x, z) * -180 / Math.PI));
        }
예제 #3
0
        public static void Start()
        {
            HQMVector redServicePoint = new HQMVector(19f, 1f, 40.5f);

            Puck.Position           = redServicePoint;
            Puck.Velocity           = new HQMVector(0f, 0f, 0f);
            Puck.RotationalVelocity = new HQMVector(0f, 0f, 0f);

            Chat.SendMessage("Red Serve");
        }
예제 #4
0
 /// <summary>
 /// Translates the whole net by the given vector
 /// </summary>
 /// <param name="translation">The vector to translate</param>
 public void Translate(HQMVector translation)
 {
     RightFrontBottom += translation;
     LeftFrontBottom  += translation;
     LeftBackBottom   += translation;
     RightBackBottom  += translation;
     RightFrontTop    += translation;
     LeftFrontTop     += translation;
     LeftBackTop      += translation;
     RightBackTop     += translation;
 }
예제 #5
0
        public static Player ClosestTeammate(HQMVector v)
        //Gets the closest player from the same team, excluding self
        {
            Player closestPlayer  = null;
            float  playerDistance = 999f;

            foreach (Player p in PlayerManager.Players)
            {
                if ((Calc.DistanceSquared(p.Position, v) < playerDistance) && (p.Team == PlayerManager.LocalPlayer.Team) && (p.Name != PlayerManager.LocalPlayer.Name))
                {
                    playerDistance = Calc.DistanceSquared(p.Position, v);
                    closestPlayer  = p;
                }
            }

            return(closestPlayer);
        }
예제 #6
0
        public static Player ClosestOpponent(HQMVector v)
        //Gets the closest player from the opposite team
        {
            Player closestPlayer  = null;
            float  playerDistance = 999f;

            foreach (Player p in PlayerManager.Players)
            {
                if ((Calc.DistanceSquared(p.Position, v) < playerDistance) && (p.Team != PlayerManager.LocalPlayer.Team))
                {
                    playerDistance = Calc.DistanceSquared(p.Position, v);
                    closestPlayer  = p;
                }
            }

            return(closestPlayer);
        }
예제 #7
0
        public static Player ClosestPlayer(HQMVector v)
        //Gets the closest player from any team to the puck
        {
            Player closestPlayer  = null;
            float  playerDistance = 999f;

            foreach (Player p in PlayerManager.Players)
            {
                if (Calc.DistanceSquared(p.Position, v) < playerDistance)
                {
                    playerDistance = Calc.DistanceSquared(p.Position, v);
                    closestPlayer  = p;
                }
            }

            return(closestPlayer);
        }
예제 #8
0
        public static void Setup(float posts, float center)
        {
            HQMVector RIGHT_FRONT_BOTTOM = new HQMVector(21.485f, 1.1f, 30.5f);
            HQMVector LEFT_FRONT_BOTTOM  = new HQMVector(8.515f, 0.9f, 30.5f);
            HQMVector LEFT_BACK_BOTTOM   = new HQMVector(13.75f, 1.1f, 30.5f);
            HQMVector RIGHT_BACK_BOTTOM  = new HQMVector(16.25f, 0.9f, 30.5f);
            HQMVector RIGHT_FRONT_TOP    = new HQMVector(21.485f, 0, 30.5f);
            HQMVector LEFT_FRONT_TOP     = new HQMVector(8.515f, 0, 30.5f);
            HQMVector LEFT_BACK_TOP      = new HQMVector(13.75f, 0, 30.5f);
            HQMVector RIGHT_BACK_TOP     = new HQMVector(16.25f, 0, 30.5f);

            const int BLUE_NET_ADDRESS = 0x00CFA974;

            MemoryEditor.WriteHQMVector(RIGHT_FRONT_BOTTOM, BLUE_NET_ADDRESS);
            MemoryEditor.WriteHQMVector(LEFT_FRONT_BOTTOM, BLUE_NET_ADDRESS + 0xC);
            MemoryEditor.WriteHQMVector(LEFT_BACK_BOTTOM, BLUE_NET_ADDRESS + 0x18);
            MemoryEditor.WriteHQMVector(RIGHT_BACK_BOTTOM, BLUE_NET_ADDRESS + 0x24);
            MemoryEditor.WriteHQMVector(RIGHT_FRONT_TOP, BLUE_NET_ADDRESS + 0x30);
            MemoryEditor.WriteHQMVector(LEFT_FRONT_TOP, BLUE_NET_ADDRESS + 0x3C);
            MemoryEditor.WriteHQMVector(LEFT_BACK_TOP, BLUE_NET_ADDRESS + 0x48);
            MemoryEditor.WriteHQMVector(RIGHT_BACK_TOP, BLUE_NET_ADDRESS + 0x54);
        }
예제 #9
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            HQMVector puckPos = Puck.Position;

            PuckPos.Text = "Puck Pos: (" + puckPos + ")";

            HQMVector puckRot = Puck.RotationalVelocity;

            PuckSpin.Text = "Puck Spin: (" + puckRot + ")";

            HQMVector puckVel = Puck.Velocity;

            PuckVel.Text = "Puck Velocity: (" + puckVel + ")";

            HQMVector playerPos = PlayerManager.LocalPlayer.Position;

            PlayerPos.Text = "Player Pos: (" + playerPos + ")";

            HQMVector playerStickPos = PlayerManager.LocalPlayer.StickPosition;

            PlayerStick.Text = "Player Stick Pos: (" + playerStickPos + ")";
        }
예제 #10
0
 public static string GetZone(HQMVector target)
 {
     if (target.Z >= 30.5f && Math.Abs(target.X - 15) < DOUBLES_WIDTH)
     {
         if (target.Z < RED_SERVICE_LINE)
         {
             return("RED SERVICE BOX");
         }
         else if ((target.Z > RED_SERVICE_LINE) && (target.Z < RED_BASE_LINE))
         {
             return("RED BACK COURT");
         }
         else
         {
             return("OUT!");
         }
     }
     else if (target.Z < 30.5f && Math.Abs(target.X - 15) < DOUBLES_WIDTH)
     {
         if (target.Z > BLUE_SERVICE_LINE)
         {
             return("BLUE SERVICE BOX");
         }
         else if ((target.Z < BLUE_SERVICE_LINE) && (target.Z > BLUE_BASE_LINE))
         {
             return("BLUE BACK COURT");
         }
         else
         {
             return("OUT!");
         }
     }
     else
     {
         return("OUT!");
     }
 }
예제 #11
0
 public static float DistanceSquared(HQMVector v1, HQMVector v2)
 {
     return((v1.X - v2.X) * (v1.X - v2.X) + (v1.Z - v2.Z) * (v1.Z - v2.Z));
 }