using System; using Server.Network; namespace Server.Misc { public class BlockedClients { public static void Initialize() { // Register our event handler EventSink.Login += new LoginEventHandler( EventSink_Login ); } private static void EventSink_Login( LoginEventArgs args ) { Mobile from = args.Mobile; NetState ns = from.NetState; if(ns == null) return; new VersionTimer(ns).Start(); } private class VersionTimer : Timer { private NetState m_State; public VersionTimer(NetState state) : base(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)) { m_State = state; } protected override void OnTick() { if(m_State == null || m_State.Version != null) Stop(); if(m_State.Version != null && m_State.Version.SourceString == "4.0.8b") { int kickTime = 10; m_State.Mobile.Frozen = true; m_State.Mobile.SendMessage("Krrios client is not allowed on RealmUO."); m_State.Mobile.Say("Krrios client is not allowed on RealmUO."); m_State.Mobile.SendMessage("If you are not using Krrios client, please update."); m_State.Mobile.Say("If you are not using Krrios client, please update."); m_State.Mobile.SendMessage("You will be disconnected in 5 seconds."); m_State.Mobile.Say("You will be disconnected in {0} seconds.", kickTime.ToString()); Timer.DelayCall(TimeSpan.FromSeconds(kickTime), new TimerStateCallback(Kick), m_State); } } private void Kick(object state) { if(state != null && state is NetState) ((NetState)state).Dispose(); } } } }