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.UtcNow - state.Mobile.CreationTime > m_AgeLeniency &&
                                                           state.Mobile is PlayerMobile mobile &&
                                                           mobile.GameTime > m_GameTimeLeniency))
            {
                kickMessage = $"This server requires your client version be at least {Required}.";
            }
		protected virtual int GetProgress(ConquestState state, ClientVersionReceivedArgs args)
		{
            if (state.User == null)
                return 0;

            if (args == null || args.State == null || args.State.Mobile is PlayerMobile && args.State.Mobile.Account != state.User.Account || args.Version == null)
			{
				return 0;
			}

			if (Version != null)
			{
				VersionInfo v = args.Version.ToString();

				if (v < Version)
				{
					return 0;
				}
			}

			return 1;
		}
Example #3
0
        protected virtual int GetProgress(ConquestState state, ClientVersionReceivedArgs args)
        {
            if (state.User == null)
            {
                return(0);
            }

            if (args == null || args.State == null || args.State.Mobile is PlayerMobile && args.State.Mobile.Account != state.User.Account || args.Version == null)
            {
                return(0);
            }

            if (Version != null)
            {
                VersionInfo v = args.Version.ToString();

                if (v < Version)
                {
                    return(0);
                }
            }

            return(1);
        }
Example #4
0
        private static void EventSink_ClientVersionReceived(ClientVersionReceivedArgs e)
        {
            string        kickMessage = null;
            NetState      state       = e.State;
            ClientVersion version     = e.Version;

            if (state.Mobile.IsStaff())
            {
                return;
            }

            if (Required != null && version < Required && (m_OldClientResponse == OldClientResponse.Kick || (m_OldClientResponse == OldClientResponse.LenientKick && (DateTime.UtcNow - 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)
                    {
                        Utility.PushColor(ConsoleColor.DarkRed);
                        Console.WriteLine("Client: {0}: Disconnecting, bad version", state);
                        Utility.PopColor();
                        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;
                }
                }
            }
        }
Example #5
0
 public void InvokeClientVersionReceived( ClientVersionReceivedArgs e )
 {
     if ( ClientVersionReceived != null )
         ClientVersionReceived( e );
 }
Example #6
0
        private static void EventSink_ClientVersionReceived( ClientVersionReceivedArgs e )
        {
            GameClient state = e.State;
            ClientVersion version = e.Version;

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

            string kickMessage = null;

            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 ( !AllowClassic || !AllowEnhanced )
            {
                if ( !AllowClassic && version.Type == ClientType.Classic )
                    kickMessage = "This server does not allow classic client to connect.";
                else if ( !AllowEnhanced && version.Type == ClientType.Enhanced )
                    kickMessage = "This server does not allow enhanced client to connect.";

                if ( !AllowClassic && !AllowEnhanced )
                {
                    kickMessage = "This server does not allow any clients to connect.";
                }
                else if ( kickMessage != null )
                {
                    if ( AllowClassic && AllowEnhanced )
                        kickMessage += " You can use classic or enhanced clients.";
                    else if ( AllowClassic )
                        kickMessage += " You can use classic client.";
                    else if ( AllowEnhanced )
                        kickMessage += " You can use enhanced client.";
                }
            }

            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
                    {
                        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;
                        }
                }
            }
        }
Example #7
0
        private static void EventSink_ClientVersionReceived(ClientVersionReceivedArgs e)
        {
            string kickMessage = null;
            NetState state = e.State;
            ClientVersion version = e.Version;

            if (state.Mobile.IsStaff())
                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;
                        }
                }
            }
        }
Example #8
0
        private static void EventSink_ClientVersionReceived(ClientVersionReceivedArgs e)
        {
            GameClient    state   = e.State;
            ClientVersion version = e.Version;

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

            string kickMessage = null;

            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 (!AllowClassic || !AllowEnhanced)
            {
                if (!AllowClassic && version.Type == ClientType.Classic)
                {
                    kickMessage = "This server does not allow classic client to connect.";
                }
                else if (!AllowEnhanced && version.Type == ClientType.Enhanced)
                {
                    kickMessage = "This server does not allow enhanced client to connect.";
                }

                if (!AllowClassic && !AllowEnhanced)
                {
                    kickMessage = "This server does not allow any clients to connect.";
                }
                else if (kickMessage != null)
                {
                    if (AllowClassic && AllowEnhanced)
                    {
                        kickMessage += " You can use classic or enhanced clients.";
                    }
                    else if (AllowClassic)
                    {
                        kickMessage += " You can use classic client.";
                    }
                    else if (AllowEnhanced)
                    {
                        kickMessage += " You can use enhanced client.";
                    }
                }
            }

            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
                {
                    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;
                }
                }
            }
        }
Example #9
0
 static void EventSink_ClientVersionReceived(ClientVersionReceivedArgs e)
 {
     Console.WriteLine("Client version for {0}: {1}", e.State.Address, e.Version);
 }