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}"); } }
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};"); } }
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; } } }