예제 #1
0
        public void ReadPacketTwo_ReadsValuesProperly()
        {
            var packet = new PlayerPureSyncPacket();

            packet.Read(this.testPacketTwo);

            packet.SyncFlags.IsInWater.Should().Be(false);
            packet.SyncFlags.IsOnGround.Should().Be(true);
            packet.SyncFlags.HasJetpack.Should().Be(false);
            packet.SyncFlags.IsDucked.Should().Be(false);
            packet.SyncFlags.WearsGoggles.Should().Be(false);
            packet.SyncFlags.HasContact.Should().Be(false);
            packet.SyncFlags.IsChoking.Should().Be(false);
            packet.SyncFlags.AkimboTargetUp.Should().Be(false);
            packet.SyncFlags.IsOnFire.Should().Be(false);
            packet.SyncFlags.HasAWeapon.Should().Be(true);
            packet.SyncFlags.IsSyncingVelocity.Should().Be(false);
            packet.SyncFlags.IsStealthAiming.Should().Be(false);

            packet.Position.Should().NotBe(Vector3.Zero);
            packet.Velocity.Should().Be(Vector3.Zero);

            packet.Health.Should().Be(100);
            packet.Armor.Should().Be(0);

            //packet.CameraRotation.Should().Be(0);
            packet.CameraOrientation.BasePosition.Should().Be(packet.Position);
            //packet.CameraOrientation.CameraPosition.Should().Be(Vector3.Zero);
            //packet.CameraOrientation.CameraForward.Should().Be(Vector3.Zero);
        }
예제 #2
0
        protected override void HandlePacket(PacketQueueEntry queueEntry)
        {
            try
            {
                switch (queueEntry.PacketId)
                {
                case PacketId.PACKET_ID_CAMERA_SYNC:
                    CameraSyncPacket cameraPureSyncPacket = new CameraSyncPacket();
                    cameraPureSyncPacket.Read(queueEntry.Data);
                    HandleCameraSyncPacket(queueEntry.Client, cameraPureSyncPacket);
                    break;

                case PacketId.PACKET_ID_PLAYER_PURESYNC:
                    PlayerPureSyncPacket playerPureSyncPacket = new PlayerPureSyncPacket();
                    playerPureSyncPacket.Read(queueEntry.Data);
                    HandleClientPureSyncPacket(queueEntry.Client, playerPureSyncPacket);
                    break;
                }
            } catch (Exception e)
            {
                Debug.WriteLine("Handling packet failed");
                Debug.WriteLine(string.Join(", ", queueEntry.Data));
                Debug.WriteLine($"{e.Message}\n{e.StackTrace}");
            }
        }
예제 #3
0
        public async void HandlePackets()
        {
            while (true)
            {
                while (this.packetQueue.TryDequeue(out PacketQueueEntry queueEntry))
                {
                    try
                    {
                        Console.WriteLine(queueEntry.PacketId);
                        switch (queueEntry.PacketId)
                        {
                        case PacketId.PACKET_ID_CAMERA_SYNC:
                            CameraSyncPacket cameraPureSyncPacket = new CameraSyncPacket();
                            cameraPureSyncPacket.Read(queueEntry.Data);
                            HandleCameraSyncPacket(queueEntry.Client, cameraPureSyncPacket);
                            break;

                        case PacketId.PACKET_ID_PLAYER_PURESYNC:
                            PlayerPureSyncPacket playerPureSyncPacket = new PlayerPureSyncPacket();
                            playerPureSyncPacket.Read(queueEntry.Data);
                            HandlePlayerPureSyncPacket(queueEntry.Client, playerPureSyncPacket);
                            break;
                        }
                    } catch (Exception e)
                    {
                        Console.WriteLine("Handling packet failed");
                        Console.WriteLine(string.Join(", ", queueEntry.Data));
                        //Console.WriteLine($"{e.Message}\n{e.StackTrace}");
                    }
                }
                await Task.Delay(this.sleepInterval);
            }
        }
예제 #4
0
        private void TestPureSync(Client client)
        {
            var playerList = new PlayerListPacket(false);

            playerList.AddPlayer(
                playerId: 666,
                timeContext: 0,
                nickname: "Dummy-Player",
                bitsreamVersion: 343,
                buildNumber: 0,

                isDead: false,
                isInVehicle: false,
                hasJetpack: true,
                isNametagShowing: true,
                isNametagColorOverriden: true,
                isHeadless: false,
                isFrozen: false,

                nametagText: "Dummy-Player",
                color: Color.FromArgb(255, 255, 0, 255),
                moveAnimation: 0,

                model: 9,
                teamId: null,

                vehicleId: null,
                seat: null,

                position: new Vector3(5, 0, 3),
                rotation: 0,

                dimension: 0,
                fightingStyle: 0,
                alpha: 255,
                interior: 0,

                weapons: new byte[16]
                );
            client.SendPacket(playerList);

            var data     = new byte[] { 0, 0, 0, 0, 2, 46, 33, 240, 8, 159, 255, 240, 8, 4, 116, 11, 186, 246, 64, 0, 73, 144, 129, 19, 48, 0, 0 };
            var puresync = new PlayerPureSyncPacket();

            puresync.Read(data);

            puresync.PlayerId = 666;
            puresync.Latency  = 0;

            //_ = Task.Run(async () =>
            //{
            //    for (int i = 0; i < 1000; i++)
            //    {
            //        puresync.Position += new Vector3(0.25f, 0, 0);
            //        client.SendPacket(puresync);
            //        await Task.Delay(250);
            //    }
            //});
        }
예제 #5
0
        public void ReadPacketThree_ReadsValuesProperly()
        {
            var packet = new PlayerPureSyncPacket();

            packet.Read(this.testPacketThree);

            packet.SyncFlags.IsInWater.Should().Be(false);
            packet.SyncFlags.IsOnGround.Should().Be(true);
            packet.SyncFlags.HasJetpack.Should().Be(false);
            packet.SyncFlags.IsDucked.Should().Be(false);
            packet.SyncFlags.WearsGoggles.Should().Be(false);
            packet.SyncFlags.HasContact.Should().Be(false);
            packet.SyncFlags.IsChoking.Should().Be(false);
            packet.SyncFlags.AkimboTargetUp.Should().Be(false);
            packet.SyncFlags.IsOnFire.Should().Be(false);
            packet.SyncFlags.HasAWeapon.Should().Be(true);
            packet.SyncFlags.IsSyncingVelocity.Should().Be(true);
            packet.SyncFlags.IsStealthAiming.Should().Be(false);
        }