Support for client 6.0.5.0.

The satisfies my yearly RunUO commit for 2007. :-P
This commit is contained in:
zippy 2007-11-27 02:28:55 +00:00
parent a4c562c06d
commit 0b19ae183e
2 changed files with 29 additions and 2 deletions

View file

@ -152,7 +152,13 @@ namespace Server.Network
if ( !ns.Seeded )
{
if ( buffer.Length >= 4 )
if ( buffer.GetPacketID() == 0xEF )
{
// new packet in client 6.0.5.0 replaces the traditional seed method with a seed packet
// 0xEF = 239 = multicast IP, so this should never appear in a normal seed. So this is backwards compatible with older clients.
ns.Seeded = true;
}
else if ( buffer.Length >= 4 )
{
buffer.Dequeue( m_Peek, 0, 4 );
@ -180,7 +186,7 @@ namespace Server.Network
{
int packetID = buffer.GetPacketID();
if ( !ns.SentFirstPacket && packetID != 0xF0 && packetID != 0xF1 && packetID != 0xCF && packetID != 0x80 && packetID != 0x91 && packetID != 0xA4 )
if ( !ns.SentFirstPacket && packetID != 0xF0 && packetID != 0xF1 && packetID != 0xCF && packetID != 0x80 && packetID != 0x91 && packetID != 0xA4 && packetID != 0xEF )
{
Console.WriteLine( "Client: {0}: Encrypted client detected, disconnecting", ns );
ns.Dispose();

View file

@ -147,6 +147,7 @@ namespace Server.Network
Register( 0xD1, 2, true, new OnPacketReceive( LogoutReq ) );
Register( 0xD6, 0, true, new OnPacketReceive( BatchQueryProperties ) );
Register( 0xD7, 0, true, new OnPacketReceive( EncodedCommand ) );
Register( 0xEF, 21, false, new OnPacketReceive( LoginServerSeed ) );
Register6017( 0x08, 15, true, new OnPacketReceive( DropReq6017 ) );
@ -2231,6 +2232,26 @@ namespace Server.Network
}
}
public static void LoginServerSeed( NetState state, PacketReader pvSrc )
{
state.m_Seed = pvSrc.ReadInt32();
state.Seeded = true;
if ( state.m_Seed == 0 )
{
Console.WriteLine("Login: {0}: Invalid client detected, disconnecting", state);
state.Dispose();
return;
}
int clientMaj = pvSrc.ReadInt32();
int clientMin = pvSrc.ReadInt32();
int clientRev = pvSrc.ReadInt32();
int clientPat = pvSrc.ReadInt32();
state.Version = new ClientVersion( clientMaj, clientMin, clientRev, clientPat );
}
public static void AccountLogin( NetState state, PacketReader pvSrc )
{
if ( state.SentFirstPacket )