Files
RAGECOOP-V/RageCoop.Core/Packets/PlayerPackets.cs

250 lines
6.4 KiB
C#
Raw Normal View History

2022-09-08 12:41:56 -07:00
using GTA.Math;
using Lidgren.Network;
2022-09-08 12:41:56 -07:00
using System.Net;
2022-05-22 15:55:26 +08:00
namespace RageCoop.Core
{
2022-07-01 14:39:43 +08:00
internal partial class Packets
2022-05-22 15:55:26 +08:00
{
2022-08-08 17:03:41 +08:00
internal struct PlayerData
{
public int ID;
public string Username;
}
public class Handshake : Packet
2022-05-22 15:55:26 +08:00
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.Handshake;
2022-05-22 15:55:26 +08:00
public int PedID { get; set; }
public string Username { get; set; }
public string ModVersion { get; set; }
2022-06-24 10:33:36 +08:00
/// <summary>
/// The asymetrically crypted Aes key
/// </summary>
public byte[] AesKeyCrypted;
/// <summary>
/// The asymetrically crypted Aes IV
/// </summary>
public byte[] AesIVCrypted;
/// <summary>
/// The password hash with client Aes
/// </summary>
2022-07-29 14:51:17 +08:00
public byte[] PasswordEncrypted { get; set; }
2022-06-24 10:33:36 +08:00
2022-08-06 12:32:04 +08:00
public IPEndPoint InternalEndPoint { get; set; }
protected override void Serialize(NetOutgoingMessage m)
2022-05-22 15:55:26 +08:00
{
// Write Player Ped ID
m.Write(PedID);
2022-05-22 15:55:26 +08:00
// Write Username
m.Write(Username);
2022-05-22 15:55:26 +08:00
// Write ModVersion
m.Write(ModVersion);
2022-05-22 15:55:26 +08:00
m.Write(InternalEndPoint.ToString());
2022-08-06 12:32:04 +08:00
2022-06-24 10:33:36 +08:00
// Write AesKeyCrypted
m.WriteByteArray(AesKeyCrypted);
2022-06-24 10:33:36 +08:00
// Write AesIVCrypted
m.WriteByteArray(AesIVCrypted);
2022-06-24 10:33:36 +08:00
// Write PassHash
m.WriteByteArray(PasswordEncrypted);
2022-06-24 10:33:36 +08:00
2022-05-22 15:55:26 +08:00
}
public override void Deserialize(NetIncomingMessage m)
2022-05-22 15:55:26 +08:00
{
#region NetIncomingMessageToPacket
2022-05-22 15:55:26 +08:00
// Read player netHandle
PedID = m.ReadInt32();
2022-05-22 15:55:26 +08:00
// Read Username
Username = m.ReadString();
2022-05-22 15:55:26 +08:00
// Read ModVersion
ModVersion = m.ReadString();
2022-06-24 10:33:36 +08:00
2022-09-08 12:41:56 -07:00
InternalEndPoint = CoreUtils.StringToEndPoint(m.ReadString());
2022-08-06 12:32:04 +08:00
2022-09-08 12:41:56 -07:00
AesKeyCrypted = m.ReadByteArray();
2022-06-24 10:33:36 +08:00
2022-09-08 12:41:56 -07:00
AesIVCrypted = m.ReadByteArray();
2022-06-24 10:33:36 +08:00
2022-09-08 12:41:56 -07:00
PasswordEncrypted = m.ReadByteArray();
2022-05-22 15:55:26 +08:00
#endregion
}
}
2022-08-08 17:03:41 +08:00
public class HandshakeSuccess : Packet
{
public PlayerData[] Players { get; set; }
public override PacketType Type => PacketType.HandshakeSuccess;
protected override void Serialize(NetOutgoingMessage m)
2022-08-08 17:03:41 +08:00
{
m.Write(Players.Length);
2022-09-08 12:41:56 -07:00
foreach (var p in Players)
2022-08-08 17:03:41 +08:00
{
m.Write(p.ID);
m.Write(p.Username);
2022-08-08 17:03:41 +08:00
}
}
public override void Deserialize(NetIncomingMessage m)
2022-08-08 17:03:41 +08:00
{
2022-09-08 12:41:56 -07:00
Players = new PlayerData[m.ReadInt32()];
for (int i = 0; i < Players.Length; i++)
2022-08-08 17:03:41 +08:00
{
2022-09-08 12:41:56 -07:00
Players[i] = new PlayerData()
2022-08-08 17:03:41 +08:00
{
2022-09-08 12:41:56 -07:00
ID = m.ReadInt32(),
Username = m.ReadString(),
2022-08-08 17:03:41 +08:00
};
}
}
}
2022-05-22 15:55:26 +08:00
public class PlayerConnect : Packet
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.PlayerConnect;
2022-05-22 15:55:26 +08:00
public int PedID { get; set; }
public string Username { get; set; }
protected override void Serialize(NetOutgoingMessage m)
2022-05-22 15:55:26 +08:00
{
// Write NetHandle
m.Write(PedID);
2022-05-22 15:55:26 +08:00
m.Write(Username);
2022-05-22 15:55:26 +08:00
}
public override void Deserialize(NetIncomingMessage m)
2022-05-22 15:55:26 +08:00
{
#region NetIncomingMessageToPacket
// Read player netHandle
PedID = m.ReadInt32();
2022-05-22 15:55:26 +08:00
// Read Username
Username = m.ReadString();
2022-05-22 15:55:26 +08:00
#endregion
}
}
public class PlayerDisconnect : Packet
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.PlayerDisconnect;
2022-05-22 15:55:26 +08:00
public int PedID { get; set; }
protected override void Serialize(NetOutgoingMessage m)
2022-05-22 15:55:26 +08:00
{
m.Write(PedID);
2022-05-22 15:55:26 +08:00
}
public override void Deserialize(NetIncomingMessage m)
2022-05-22 15:55:26 +08:00
{
#region NetIncomingMessageToPacket
PedID = m.ReadInt32();
2022-05-22 15:55:26 +08:00
#endregion
}
}
public class PlayerInfoUpdate : Packet
2022-05-22 15:55:26 +08:00
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.PlayerInfoUpdate;
2022-08-06 10:43:24 +08:00
2022-05-22 15:55:26 +08:00
/// <summary>
/// Ped ID for this Player
/// </summary>
public int PedID { get; set; }
public string Username { get; set; }
public float Latency { get; set; }
2022-08-08 17:03:41 +08:00
public Vector3 Position { get; set; }
2022-08-22 00:23:46 +08:00
public bool IsHost;
protected override void Serialize(NetOutgoingMessage m)
2022-05-22 15:55:26 +08:00
{
// Write ID
m.Write(PedID);
2022-05-22 15:55:26 +08:00
// Write Username
m.Write(Username);
2022-05-22 15:55:26 +08:00
// Write Latency
m.Write(Latency);
m.Write(Position);
2022-08-08 17:03:41 +08:00
m.Write(IsHost);
2022-05-22 15:55:26 +08:00
}
public override void Deserialize(NetIncomingMessage m)
2022-05-22 15:55:26 +08:00
{
2022-05-22 15:55:26 +08:00
// Read player ID
PedID = m.ReadInt32();
2022-05-22 15:55:26 +08:00
// Read Username
Username = m.ReadString();
2022-09-08 12:41:56 -07:00
Latency = m.ReadFloat();
2022-08-08 17:03:41 +08:00
2022-09-08 12:41:56 -07:00
Position = m.ReadVector3();
2022-08-22 00:23:46 +08:00
2022-09-08 12:41:56 -07:00
IsHost = m.ReadBoolean();
2022-05-22 15:55:26 +08:00
}
}
2022-06-24 10:33:36 +08:00
public class PublicKeyResponse : Packet
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.PublicKeyResponse;
2022-08-06 10:43:24 +08:00
2022-06-24 10:33:36 +08:00
public byte[] Modulus;
public byte[] Exponent;
protected override void Serialize(NetOutgoingMessage m)
2022-06-24 10:33:36 +08:00
{
m.WriteByteArray(Modulus);
m.WriteByteArray(Exponent);
2022-06-24 10:33:36 +08:00
}
public override void Deserialize(NetIncomingMessage m)
2022-06-24 10:33:36 +08:00
{
#region NetIncomingMessageToPacket
2022-09-08 12:41:56 -07:00
Modulus = m.ReadByteArray();
Exponent = m.ReadByteArray();
2022-06-24 10:33:36 +08:00
#endregion
}
}
public class PublicKeyRequest : Packet
{
2022-09-08 12:41:56 -07:00
public override PacketType Type => PacketType.PublicKeyRequest;
2022-06-24 10:33:36 +08:00
}
2022-05-22 15:55:26 +08:00
}
}