private static void KickPlayerPlayWithoutLauncherClientWorker() { using (LauncherServerSendRequestToTShock aTunnelToTShock = new LauncherServerSendRequestToTShock()) { bool IsLauncherClientOn; while (true) { try { foreach (KeyValuePair<string, TShockPlayerInformations> aPlayer in OverallInformations.TShockPlayers) { if (aPlayer.Value.IsLoggedIn) { IsLauncherClientOn = false; foreach (KeyValuePair<string, LauncherClientInformations> aClient in OverallInformations.Clients) { if (aClient.Value.UserName == aPlayer.Value.UserName) { IsLauncherClientOn = true; break; } } if (!IsLauncherClientOn) { string Response; if (aTunnelToTShock.SendRequest(new Request02() { RequestType = "Kick", AuthCode = OverallInformations.AuthCode, Parameters = new List<string>() { aPlayer.Value.PlayerName, "Please run Launcher..." } }, out Response)) { ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(Response); if (ResponseContent.Status == ResponseStatusType.Done) { OutputMessage(String.Format("[Server]: {0}", JoinListOfStrings(ResponseContent.Broadcast)), MessageType.Info); } else if (ResponseContent.Status == ResponseStatusType.Fail) { OutputMessage(String.Format("[Server]: {0}", JoinListOfStrings(ResponseContent.Error)), MessageType.Error); } else { OutputMessage("[Server]: KickPlayerPlayWithoutLauncherClientWorker() | Error: Unknown returned data from TShock Server.", MessageType.Error); } } else { OutputMessage("[Server]: KickPlayerPlayWithoutLauncherClientWorker() | Error: TShock Server does not response.", MessageType.Error); } } } } } catch (Exception ex) { OutputMessage(String.Format("[Launcher]: KickPlayerPlayWithoutLauncherClientWorker() | Error: {0}", ex.Message), MessageType.Error); } Thread.Sleep(new TimeSpan(0, 0, 1)); } } }
// Để cập nhật lại danh sách Player cho hệ thống quản lí dễ dàng, khi khởi động, Server sẽ tiến hành kick hết // tất cả Player hiện tại đang có mặt trên TShock Server (Cả login lẫn chưa login). private static void KickAllWhenStartServer() { OutputMessage("[Server]: Kick all Players on TShock Server...", ConsoleColor.Green); LauncherServerSendRequestToTShockInstance = new LauncherServerSendRequestToTShock(); string aResponse; if (LauncherServerSendRequestToTShockInstance.SendRequest(new Request02() { RequestType = "KickAll", AuthCode = OverallInformations.AuthCode, Parameters = new List<string>() { "Please run Launcher..." } }, out aResponse)) { OutputMessage("[Server]: All Players have been kicked.", MessageType.Success); } else { OutputMessage("[Server]: KickAllWhenStartServer() | Error: TShock Server does not response.", MessageType.Error); } }