CoopSerializer class added
This commit is contained in:
@ -23,7 +23,7 @@ namespace CoopClient
|
|||||||
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered);
|
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered);
|
||||||
Client.FlushSendQueue();
|
Client.FlushSendQueue();
|
||||||
|
|
||||||
Client.Disconnect("Disconnected");
|
Client.Disconnect("Bye!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -143,7 +143,7 @@ namespace CoopClient
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NetConnectionStatus.Disconnected:
|
case NetConnectionStatus.Disconnected:
|
||||||
GTA.UI.Notification.Show("~r~" + reason);
|
GTA.UI.Notification.Show("~r~Disconnected: " + reason);
|
||||||
|
|
||||||
// Reset all values
|
// Reset all values
|
||||||
FullPlayerSync = true;
|
FullPlayerSync = true;
|
||||||
|
@ -113,12 +113,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.HandshakePacket);
|
message.Write((byte)PacketTypes.HandshakePacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -128,11 +123,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
HandshakePacket data;
|
HandshakePacket data = CoopSerializer.Deserialize<HandshakePacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<HandshakePacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
ID = data.ID;
|
ID = data.ID;
|
||||||
SocialClubName = data.SocialClubName;
|
SocialClubName = data.SocialClubName;
|
||||||
@ -158,12 +149,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.PlayerConnectPacket);
|
message.Write((byte)PacketTypes.PlayerConnectPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -173,11 +159,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
PlayerConnectPacket data;
|
PlayerConnectPacket data = CoopSerializer.Deserialize<PlayerConnectPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<PlayerConnectPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
SocialClubName = data.SocialClubName;
|
SocialClubName = data.SocialClubName;
|
||||||
@ -195,12 +177,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.PlayerDisconnectPacket);
|
message.Write((byte)PacketTypes.PlayerDisconnectPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -210,11 +187,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
PlayerDisconnectPacket data;
|
PlayerDisconnectPacket data = CoopSerializer.Deserialize<PlayerDisconnectPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<PlayerDisconnectPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
}
|
}
|
||||||
@ -260,12 +233,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.FullSyncPlayerPacket);
|
message.Write((byte)PacketTypes.FullSyncPlayerPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -275,11 +243,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
FullSyncPlayerPacket data;
|
FullSyncPlayerPacket data = CoopSerializer.Deserialize<FullSyncPlayerPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<FullSyncPlayerPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
ModelHash = data.ModelHash;
|
ModelHash = data.ModelHash;
|
||||||
@ -335,12 +299,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.FullSyncNpcPacket);
|
message.Write((byte)PacketTypes.FullSyncNpcPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -350,11 +309,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
FullSyncNpcPacket data;
|
FullSyncNpcPacket data = CoopSerializer.Deserialize<FullSyncNpcPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<FullSyncNpcPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
ID = data.ID;
|
ID = data.ID;
|
||||||
ModelHash = data.ModelHash;
|
ModelHash = data.ModelHash;
|
||||||
@ -404,12 +359,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.LightSyncPlayerPacket);
|
message.Write((byte)PacketTypes.LightSyncPlayerPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -419,11 +369,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
LightSyncPlayerPacket data;
|
LightSyncPlayerPacket data = CoopSerializer.Deserialize<LightSyncPlayerPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<LightSyncPlayerPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
Health = data.Health;
|
Health = data.Health;
|
||||||
@ -450,12 +396,7 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.ChatMessagePacket);
|
message.Write((byte)PacketTypes.ChatMessagePacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -465,14 +406,37 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
ChatMessagePacket data;
|
ChatMessagePacket data = CoopSerializer.Deserialize<ChatMessagePacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<ChatMessagePacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Username = data.Username;
|
Username = data.Username;
|
||||||
Message = data.Message;
|
Message = data.Message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CoopSerializer
|
||||||
|
{
|
||||||
|
public static T Deserialize<T>(byte[] data) where T : new()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream stream = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
return Serializer.Deserialize<T>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("The deserialization of the packet {0} failed!", typeof(T).Name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] Serialize<T>(T packet)
|
||||||
|
{
|
||||||
|
using (MemoryStream stream = new MemoryStream())
|
||||||
|
{
|
||||||
|
Serializer.Serialize(stream, packet);
|
||||||
|
return stream.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,12 +94,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.HandshakePacket);
|
message.Write((byte)PacketTypes.HandshakePacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -109,11 +104,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
HandshakePacket data;
|
HandshakePacket data = CoopSerializer.Deserialize<HandshakePacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<HandshakePacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
ID = data.ID;
|
ID = data.ID;
|
||||||
SocialClubName = data.SocialClubName;
|
SocialClubName = data.SocialClubName;
|
||||||
@ -139,12 +130,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.PlayerConnectPacket);
|
message.Write((byte)PacketTypes.PlayerConnectPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -154,11 +140,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
PlayerConnectPacket data;
|
PlayerConnectPacket data = CoopSerializer.Deserialize<PlayerConnectPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<PlayerConnectPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
SocialClubName = data.SocialClubName;
|
SocialClubName = data.SocialClubName;
|
||||||
@ -176,12 +158,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.PlayerDisconnectPacket);
|
message.Write((byte)PacketTypes.PlayerDisconnectPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -191,11 +168,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
PlayerDisconnectPacket data;
|
PlayerDisconnectPacket data = CoopSerializer.Deserialize<PlayerDisconnectPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<PlayerDisconnectPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
}
|
}
|
||||||
@ -241,12 +214,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.FullSyncPlayerPacket);
|
message.Write((byte)PacketTypes.FullSyncPlayerPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -256,11 +224,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
FullSyncPlayerPacket data;
|
FullSyncPlayerPacket data = CoopSerializer.Deserialize<FullSyncPlayerPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<FullSyncPlayerPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
ModelHash = data.ModelHash;
|
ModelHash = data.ModelHash;
|
||||||
@ -316,12 +280,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.FullSyncNpcPacket);
|
message.Write((byte)PacketTypes.FullSyncNpcPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -331,11 +290,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
FullSyncNpcPacket data;
|
FullSyncNpcPacket data = CoopSerializer.Deserialize<FullSyncNpcPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<FullSyncNpcPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
ID = data.ID;
|
ID = data.ID;
|
||||||
ModelHash = data.ModelHash;
|
ModelHash = data.ModelHash;
|
||||||
@ -385,12 +340,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.LightSyncPlayerPacket);
|
message.Write((byte)PacketTypes.LightSyncPlayerPacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -400,11 +350,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
LightSyncPlayerPacket data;
|
LightSyncPlayerPacket data = CoopSerializer.Deserialize<LightSyncPlayerPacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<LightSyncPlayerPacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Player = data.Player;
|
Player = data.Player;
|
||||||
Health = data.Health;
|
Health = data.Health;
|
||||||
@ -431,12 +377,7 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
message.Write((byte)PacketTypes.ChatMessagePacket);
|
message.Write((byte)PacketTypes.ChatMessagePacket);
|
||||||
|
|
||||||
byte[] result;
|
byte[] result = CoopSerializer.Serialize(this);
|
||||||
using (MemoryStream stream = new MemoryStream())
|
|
||||||
{
|
|
||||||
Serializer.Serialize(stream, this);
|
|
||||||
result = stream.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
message.Write(result.Length);
|
message.Write(result.Length);
|
||||||
message.Write(result);
|
message.Write(result);
|
||||||
@ -446,14 +387,37 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
int len = message.ReadInt32();
|
int len = message.ReadInt32();
|
||||||
|
|
||||||
ChatMessagePacket data;
|
ChatMessagePacket data = CoopSerializer.Deserialize<ChatMessagePacket>(message.ReadBytes(len));
|
||||||
using (MemoryStream stream = new MemoryStream(message.ReadBytes(len)))
|
|
||||||
{
|
|
||||||
data = Serializer.Deserialize<ChatMessagePacket>(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
Username = data.Username;
|
Username = data.Username;
|
||||||
Message = data.Message;
|
Message = data.Message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CoopSerializer
|
||||||
|
{
|
||||||
|
public static T Deserialize<T>(byte[] data) where T : new()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (MemoryStream stream = new MemoryStream(data))
|
||||||
|
{
|
||||||
|
return Serializer.Deserialize<T>(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("The deserialization of the packet {0} failed!", typeof(T).Name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] Serialize<T>(T packet)
|
||||||
|
{
|
||||||
|
using (MemoryStream stream = new MemoryStream())
|
||||||
|
{
|
||||||
|
Serializer.Serialize(stream, packet);
|
||||||
|
return stream.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,34 +124,33 @@ namespace CoopServer
|
|||||||
Logging.Info("New incoming connection from: " + message.SenderConnection.RemoteEndPoint.ToString());
|
Logging.Info("New incoming connection from: " + message.SenderConnection.RemoteEndPoint.ToString());
|
||||||
if (message.ReadByte() != (byte)PacketTypes.HandshakePacket)
|
if (message.ReadByte() != (byte)PacketTypes.HandshakePacket)
|
||||||
{
|
{
|
||||||
|
Logging.Info(string.Format("Player with IP {0} blocked, reason: Wrong packet!", message.SenderConnection.RemoteEndPoint.ToString()));
|
||||||
message.SenderConnection.Deny("Wrong packet!");
|
message.SenderConnection.Deny("Wrong packet!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Packet approvalPacket;
|
Packet approvalPacket;
|
||||||
approvalPacket = new HandshakePacket();
|
approvalPacket = new HandshakePacket();
|
||||||
approvalPacket.NetIncomingMessageToPacket(message);
|
approvalPacket.NetIncomingMessageToPacket(message);
|
||||||
GetHandshake(message.SenderConnection, (HandshakePacket)approvalPacket);
|
GetHandshake(message.SenderConnection, (HandshakePacket)approvalPacket);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Logging.Info(string.Format("Player with IP {0} blocked, reason: {1}", message.SenderConnection.RemoteEndPoint.ToString(), e.Message));
|
||||||
|
message.SenderConnection.Deny(e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NetIncomingMessageType.StatusChanged:
|
case NetIncomingMessageType.StatusChanged:
|
||||||
NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
|
NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
|
||||||
|
|
||||||
string reason = message.ReadString();
|
|
||||||
string player = NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier);
|
string player = NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier);
|
||||||
//Logging.Debug(NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier) + " " + status + ": " + reason);
|
|
||||||
|
|
||||||
switch (status)
|
if (status == NetConnectionStatus.Disconnected && Players.ContainsKey(player))
|
||||||
{
|
{
|
||||||
case NetConnectionStatus.Connected:
|
SendPlayerDisconnectPacket(new PlayerDisconnectPacket() { Player = player }, message.ReadString());
|
||||||
//Logging.Info("New incoming connection from: " + message.SenderConnection.RemoteEndPoint.ToString());
|
|
||||||
break;
|
|
||||||
case NetConnectionStatus.Disconnected:
|
|
||||||
if (Players.ContainsKey(player))
|
|
||||||
{
|
|
||||||
SendPlayerDisconnectPacket(new PlayerDisconnectPacket() { Player = player }, reason);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NetIncomingMessageType.Data:
|
case NetIncomingMessageType.Data:
|
||||||
@ -164,42 +163,83 @@ namespace CoopServer
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case (byte)PacketTypes.PlayerConnectPacket:
|
case (byte)PacketTypes.PlayerConnectPacket:
|
||||||
|
try
|
||||||
|
{
|
||||||
packet = new PlayerConnectPacket();
|
packet = new PlayerConnectPacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
SendPlayerConnectPacket(message.SenderConnection, (PlayerConnectPacket)packet);
|
SendPlayerConnectPacket(message.SenderConnection, (PlayerConnectPacket)packet);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case (byte)PacketTypes.PlayerDisconnectPacket:
|
case (byte)PacketTypes.PlayerDisconnectPacket:
|
||||||
|
try
|
||||||
|
{
|
||||||
packet = new PlayerDisconnectPacket();
|
packet = new PlayerDisconnectPacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
SendPlayerDisconnectPacket((PlayerDisconnectPacket)packet);
|
SendPlayerDisconnectPacket((PlayerDisconnectPacket)packet);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case (byte)PacketTypes.FullSyncPlayerPacket:
|
case (byte)PacketTypes.FullSyncPlayerPacket:
|
||||||
|
try
|
||||||
|
{
|
||||||
packet = new FullSyncPlayerPacket();
|
packet = new FullSyncPlayerPacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
FullSyncPlayer((FullSyncPlayerPacket)packet);
|
FullSyncPlayer((FullSyncPlayerPacket)packet);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case (byte)PacketTypes.FullSyncNpcPacket:
|
case (byte)PacketTypes.FullSyncNpcPacket:
|
||||||
if (MainSettings.NpcsAllowed)
|
if (MainSettings.NpcsAllowed)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
packet = new FullSyncNpcPacket();
|
packet = new FullSyncNpcPacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
FullSyncNpc(message.SenderConnection, (FullSyncNpcPacket)packet);
|
FullSyncNpc(message.SenderConnection, (FullSyncNpcPacket)packet);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logging.Warning(Players[NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier)].Username + " tries to send Npcs!");
|
|
||||||
message.SenderConnection.Disconnect("Npcs are not allowed!");
|
message.SenderConnection.Disconnect("Npcs are not allowed!");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (byte)PacketTypes.LightSyncPlayerPacket:
|
case (byte)PacketTypes.LightSyncPlayerPacket:
|
||||||
|
try
|
||||||
|
{
|
||||||
packet = new LightSyncPlayerPacket();
|
packet = new LightSyncPlayerPacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
LightSyncPlayer((LightSyncPlayerPacket)packet);
|
LightSyncPlayer((LightSyncPlayerPacket)packet);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case (byte)PacketTypes.ChatMessagePacket:
|
case (byte)PacketTypes.ChatMessagePacket:
|
||||||
|
try
|
||||||
|
{
|
||||||
packet = new ChatMessagePacket();
|
packet = new ChatMessagePacket();
|
||||||
packet.NetIncomingMessageToPacket(message);
|
packet.NetIncomingMessageToPacket(message);
|
||||||
SendChatMessage((ChatMessagePacket)packet);
|
SendChatMessage((ChatMessagePacket)packet);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
message.SenderConnection.Disconnect(e.Message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Logging.Error("Unhandled Data / Packet type");
|
Logging.Error("Unhandled Data / Packet type");
|
||||||
|
Reference in New Issue
Block a user