Exemplo n.º 1
0
        void OnOutcomingRpc(PacketRpcEventArgs e)
        {
            var bs       = e.BitStreamId;
            var rpcid    = e.Id;
            var playerId = e.PlayerId;

            if (rpcid == 11)
            {
                var BS     = new BitStream(bs);
                var result = BS.ReadValue(ParamType.UInt16, "playerId", ParamType.UInt8, "nicknameLen", ParamType.String, "nickname");

                var Id          = (int)result["playerId"];
                var nicknameLen = (string)result["nickname"];
                var nickname    = (int)result["nicknameLen"];

                Console.WriteLine($"Nickname changed. Id: {Id}, Nickname: {nickname}; Len: {nicknameLen}");
            }

            if (rpcid == 86)
            {
                var BS     = new BitStream(bs);
                var result = BS.ReadValue(
                    ParamType.UInt16, "playerId",
                    ParamType.UInt8, "AnimLibLength",
                    ParamType.String, "AnimLib",
                    ParamType.UInt8, "AnimNameLength",
                    ParamType.String, "AnimName",
                    ParamType.Float, "fDelta",
                    ParamType.Bool, "loop",
                    ParamType.Bool, "lockx",
                    ParamType.Bool, "locky",
                    ParamType.Bool, "freeze",
                    ParamType.UInt32, "dTime"
                    );

                var Id       = (int)result["playerId"];
                var AnimLib  = (string)result["AnimLib"];
                var AnimName = (string)result["AnimName"];

                Console.WriteLine($"Animation applied. Id: {Id}; Anim Lib: {AnimLib}; Anim Name: {AnimName}");
            }
        }
Exemplo n.º 2
0
        void OnIncomingRpc(PacketRpcEventArgs e)
        {
            var bs       = e.BitStreamId;
            var rpcid    = e.Id;
            var playerId = e.PlayerId;

            if (rpcid == 119)
            {
                var BS = new BitStream(bs);

                var   result = BS.ReadValue(ParamType.Float, "x", ParamType.Float, "y", ParamType.Float, "z");
                float x      = (float)result["x"];
                float y      = (float)result["y"];
                float z      = (float)result["z"];
                Console.WriteLine($"Map Clicked X: {x}; Y: {y}; Z: {z};");
            }
            if (rpcid == 25)
            {
                var BS     = new BitStream(bs);
                var result = BS.ReadValue(
                    ParamType.Int32, "version",
                    ParamType.UInt8, "mod",
                    ParamType.UInt8, "nicknameLen",
                    ParamType.String, "nickname",
                    ParamType.UInt32, "challengeResponse",
                    ParamType.UInt8, "authKeyLen",
                    ParamType.String, "authKey",
                    ParamType.UInt8, "clientVersionLen",
                    ParamType.String, "clientVersion"
                    );
                var nickname      = (string)result["nickname"];
                var clientVersion = (string)result["clientVersion"];
                var authKey       = (string)result["authKey"];

                Console.WriteLine($"Client joined. Version: {clientVersion}; Auth Key: {authKey}; Nickname: {nickname};");
            }
        }
Exemplo n.º 3
0
        void OnOutcomingPacket(PacketRpcEventArgs e)
        {
            var bs       = e.BitStreamId;
            var packetid = e.Id;
            var playerId = e.PlayerId;

            var BS = new BitStream(bs);

            switch (packetid)
            {
            case (int)PacketIdentifiers.OnFootSync:
            {
                var onFoot = new OnFootSync(BS);

                onFoot.ReadOutcoming();
                Console.WriteLine($"Reading outcoming OnFootSync. Position: {onFoot.Position}; Health: {onFoot.Health}; Armour: {onFoot.Armour}; Velocity: {onFoot.Velocity};");

                BS.ResetWritePointer();
                onFoot.Position = new Vector3(onFoot.Position.X, onFoot.Position.Y, onFoot.Position.Z + 10);
                onFoot.WriteOutcoming();

                break;
            }

            case (int)PacketIdentifiers.DriverSync:
            {
                var driver = new DriverSync(BS);

                driver.ReadOutcoming();
                Console.WriteLine($"Reading outcoming DriverSync. Position: {driver.Position};");

                BS.ResetWritePointer();
                driver.Position = new Vector3(driver.Position.X, driver.Position.Y, driver.Position.Z + 10);
                driver.WriteOutcoming();

                break;
            }

            case (int)PacketIdentifiers.AimSync:
            {
                var aim = new AimSync(BS);

                aim.ReadOutcoming();
                Console.WriteLine($"Reading outcoming AimSync. Camera looks at: {aim.CameraFrontVector};");

                break;
            }

            case (int)PacketIdentifiers.BulletSync:
            {
                var bullet = new BulletSync(BS);

                bullet.ReadOutcoming();
                Console.WriteLine($"Reading outcoming BulletSync. Bullet hit: {bullet.HitPosition};");

                break;
            }

            case (int)PacketIdentifiers.PassengerSync:
            {
                var passenger = new PassengerSync(BS);

                passenger.ReadOutcoming();
                Console.WriteLine($"Reading outcoming PassengerSync. VehicleId: {passenger.VehicleId}; Position: {passenger.Position}; DriveBy: {passenger.DriveBy};");

                break;
            }

            case (int)PacketIdentifiers.SpectatorSync:
            {
                //Spectator syncronization does not have outcoming packets;

                break;
            }

            case (int)PacketIdentifiers.TrailerSync:
            {
                var trailer = new TrailerSync(BS);

                trailer.ReadOutcoming();
                Console.WriteLine($"Reading outcoming TrailerSync. Position: {trailer.Position};");

                break;
            }

            case (int)PacketIdentifiers.UnoccupiedSync:
            {
                var unoccupied = new UnoccupiedSync(BS);

                unoccupied.ReadOutcoming();
                Console.WriteLine($"Reading outcoming UnoccupiedSync. Position: {unoccupied.Position}; Health: {unoccupied.VehicleHealth};");

                break;
            }
            }
        }