예제 #1
0
 public static void DisconnectClient(ClientWrapper client, string reason = null)
 {
     if (client != null)
     {
         if (client.Disconnected)
         {
             return;
         }
         if (client.Player != null)
         {
             ConsoleFunctions.WriteInfoLine(client.Player.Username + " disconnected" + (reason == null ? "." : " (Reason: {0})."), reason);
             client.Player.SavePlayer();
             client.Player.Level.RemovePlayer(client.Player.EntityId);
             client.Player.Level.BroadcastPlayerRemoval(client);
         }
         client.ThreadPool.KillAllThreads();
         client.TcpClient.Close();
         ClientManager.RemoveClient(client);
         client.Disconnected = true;
     }
     else
     {
         ConsoleFunctions.WriteFatalErrorLine("Cannot disconnect a client from the server! (Save/Restart/Panic)");
     }
 }