Server.Misc.ClientVerification.EventSink_ClientVersionReceived C# (CSharp) Méthode

EventSink_ClientVersionReceived() private static méthode

private static EventSink_ClientVersionReceived ( ClientVersionReceivedArgs e ) : void
e ClientVersionReceivedArgs
Résultat void
		private static void EventSink_ClientVersionReceived( ClientVersionReceivedArgs e )
		{
			string kickMessage = null;
			NetState state = e.State;
			ClientVersion version = e.Version;

			if ( state.Mobile == null || state.Mobile.AccessLevel > AccessLevel.Player )
				return;

			if( Required != null && version < Required && ( m_OldClientResponse == OldClientResponse.Kick ||( m_OldClientResponse == OldClientResponse.LenientKick && (DateTime.Now - state.Mobile.CreationTime) > m_AgeLeniency && state.Mobile is PlayerMobile && ((PlayerMobile)state.Mobile).GameTime > m_GameTimeLeniency )))
			{
				kickMessage = String.Format( "This server requires your client version be at least {0}.", Required );
			}
			else if( !AllowGod || !AllowRegular || !AllowUOTD )
			{
				if( !AllowGod && version.Type == ClientType.God )
					kickMessage = "This server does not allow god clients to connect.";
				else if( !AllowRegular && version.Type == ClientType.Regular )
					kickMessage = "This server does not allow regular clients to connect.";
				else if( !AllowUOTD && state.IsUOTDClient )
					kickMessage = "This server does not allow UO:TD clients to connect.";

				if( !AllowGod && !AllowRegular && !AllowUOTD )
				{
					kickMessage = "This server does not allow any clients to connect.";
				}
				else if( AllowGod && !AllowRegular && !AllowUOTD && version.Type != ClientType.God )
				{
					kickMessage = "This server requires you to use the god client.";
				}
				else if( kickMessage != null )
				{
					if( AllowRegular && AllowUOTD )
						kickMessage += " You can use regular or UO:TD clients.";
					else if( AllowRegular )
						kickMessage += " You can use regular clients.";
					else if( AllowUOTD )
						kickMessage += " You can use UO:TD clients.";
				}
			}

			if( kickMessage != null )
			{
				state.Mobile.SendMessage( 0x22, kickMessage );
				state.Mobile.SendMessage( 0x22, "You will be disconnected in {0} seconds.", KickDelay.TotalSeconds );

				Timer.DelayCall( KickDelay, delegate
				{
					if( state.Socket != null )
					{
						Console.WriteLine( "Client: {0}: Disconnecting, bad version", state );
						state.Dispose();
					}
				} );
			}
			else if( Required != null && version < Required )
			{
				switch( m_OldClientResponse )
				{
					case OldClientResponse.Warn:
					{
						state.Mobile.SendMessage( 0x22, "Your client is out of date. Please update your client.", Required );
						state.Mobile.SendMessage( 0x22, "This server recommends that your client version be at least {0}.", Required );
						break;
					}
					case OldClientResponse.LenientKick:
					case OldClientResponse.Annoy:
					{
						SendAnnoyGump( state.Mobile );
						break;
					}
				}
			}
		}