public void OnKicked(KickReason reason) { _intentionalDisconnect = true; var text = reason switch { KickReason.QSBVersionNotMatching => "Server refused connection as QSB version does not match.", KickReason.GameVersionNotMatching => "Server refused connection as Outer Wilds version does not match.", KickReason.DLCNotMatching => "Server refused connection as DLC installation state does not match.", KickReason.InEye => "Server refused connection as game has progressed too far.", KickReason.None => "Kicked from server. No reason given.", _ => $"Kicked from server. KickReason:{reason}", }; PopupOK += () => { if (QSBSceneManager.IsInUniverse) { LoadManager.LoadScene(OWScene.TitleScreen, LoadManager.FadeType.ToBlack, 2f); } }; OpenInfoPopup(text, "OK"); SetButtonActive(DisconnectButton, false); SetButtonActive(ConnectButton, true); SetButtonActive(QuitButton, true); SetButtonActive(HostButton, true); SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1); SetButtonActive(NewGameButton, true); }
private void KickReason_Click(object sender, EventArgs e) { if (KickReason.Text.EndsWith("(Optional)")) { KickReason.Clear(); } }
private void DoKickOff(KickProto proto) { LogUtil.Log("DoKickOff!!!"); DoKickOff(); string tips; KickReason reason = (KickReason)proto.reason; switch (reason) { case KickReason.MUTI_LOGIN: tips = "你的帐号在其他地方登录,你被迫下线。请关闭游戏后重新登录。"; break; case KickReason.ILLIGAL_ACTION: tips = "你的帐号操作异常,已被迫下线。请关闭游戏后重新登录。"; break; case KickReason.ROOM_NOT_EXIST: tips = "包间号码输入错误,请重新输入"; break; case KickReason.ROOM_DISMISSED: tips = "房主解散了包间! "; break; case KickReason.LEAVE_ROOM: tips = "你离开了包间!"; break; case KickReason.ALREADY_IN_ROOM: tips = "你已经加入了一个包间,请退出后重新进入。"; break; case KickReason.ROOM_OVER: tips = "房间结束,请退出后重新进入。"; break; case KickReason.ROOM_AHEAD_DISMISSED: tips = "房间未打完第一局,提前解散,请退出后重新进入。"; break; case KickReason.ILLEGAL_STEP: tips = "非法行棋,请退出后重新进入。"; break; default: LogUtil.LogWarning(string.Format("error kick reason {0} at {1}", proto.reason, name)); return; } LogUtil.Log("tips = " + tips); TipsWindow.instance.Show(tips, () => { GameManager.instance.QuitGame(); }); }
public ClientKickCommand(IEnumerable <uint> clientIds, KickReason kickreason, string reasonMessage = null) : base("ClientKick") { foreach (uint clientId in clientIds) { AddParameter("clid", clientId); } AddParameter("reasonid", (uint)kickreason); if (!reasonMessage.IsNullOrTrimmedEmpty()) { if (reasonMessage?.Length > 40) { reasonMessage = reasonMessage.Substring(0, 40); } AddParameter("reasonmsg", reasonMessage); } }
//Handles alert from the server telling us we have been kicked from the server public static void HandleKickedFromServer(ref NetworkPacket Packet) { //Get the reason we were kicked from the packet data string KickReason = Packet.ReadString(); //Log a message showing thats happening here Log.Chat("Kicked from server: " + KickReason + ", changing scene...", true); //Instantiate a new KickReason prefab, make it remain between scene changes GameObject KickReasonObject = GameObject.Instantiate(PrefabManager.Instance.KickReasonPrefab, Vector3.zero, Quaternion.identity); DontDestroyOnLoad(KickReasonObject); //Get the script object on the KickReasonObject and use that to store the KickReason string inside it KickReason KickReasonScript = KickReasonObject.GetComponent <KickReason>(); KickReasonScript.Reason = KickReason; //Now change to the scene showing the user they have been kicked from the game SceneManager.LoadScene("Kicked"); }
internal PlayerToKick(string userId, KickReason reason) { this.userId = userId; this.reason = reason; creationTime = (uint)PlayerEvents.stopwatch.Elapsed.TotalSeconds; }
public void Save(string Key) { bool found = false; string OutputFile = "./Database/Users/" + Name + "/Info.Dat"; Utilities.IO.PrepareDirectory("./Database/"); Utilities.IO.PrepareDirectory("./Database/Users/"); Utilities.IO.PrepareDirectory("./Database/Users/" + Name); Utilities.IO.PrepareFile(OutputFile); string[] OutputFileContents = Utilities.IO.ReadAllLines(OutputFile); string OutTime = Utilities.DateTimeUtilities.ToYearTimeDescending(Utilities.DateTimeUtilities.FormatDateTime(DateTime.Now)); List <String> Output = new List <String>(); foreach (string line in OutputFileContents) { #region GetDataCouplets string ThisLine = line; if (!(ThisLine.Contains("\t"))) { Output.Add(line); continue; } while (ThisLine.Contains("\t\t")) { ThisLine = ThisLine.Replace("\t\t", "\t"); } string Header = ThisLine.Split('\t')[0]; string Data = ThisLine.Remove(0, ((Header.Length) + 1)); var Converted = Utilities.IO.StringToVariable(Data); //NOTE: These WILL Bypass GUI mode if enabled, as the GUI setting is turned on until it is read. //if (Converted is Boolean) Logger.Console.WriteLine(String.Format("Bool: {0}", Data)); //if (Converted is IPAddress) Logger.Console.WriteLine(String.Format("IPAddress: {0}", Data)); //if (Converted is Decimal) Logger.Console.WriteLine(String.Format("Decimal: {0}", Data)); //if (Converted is Int32) Logger.Console.WriteLine(String.Format("Int32: {0}", Data)); //if (Converted is String) Logger.Console.WriteLine(String.Format("String: {0}", Data)); #endregion if (Key.ToUpperInvariant() != Header.ToUpperInvariant()) { Output.Add(line); continue; } switch (Header.ToUpperInvariant()) { #region Switches case Strings.Name: Output.Add(Strings.Name + "\t\t" + Name); found = true; break; case Strings.DisplayedName: Output.Add(Strings.DisplayedName + "\t\t" + DisplayedName.ToString()); found = true; break; case Strings.LastIP: Output.Add(Strings.LastIP + "\t\t\t" + LastIP.ToString()); found = true; break; case Strings.LoginCount: Output.Add(Strings.LoginCount + "\t\t" + LoginCount.ToString()); found = true; break; case Strings.MessagesTyped: Output.Add(Strings.MessagesTyped + "\t\t" + MessagesTyped.ToString()); found = true; break; case Strings.DateJoined: Output.Add(Strings.DateJoined + "\t\t" + DateJoined.ToString()); found = true; break; case Strings.DateLastVisited: Output.Add(Strings.DateLastVisited + "\t\t" + DateLastVisited.ToString()); found = true; break; case Strings.PlayTime: Output.Add(Strings.PlayTime + "\t\t" + PlayTime.ToString()); found = true; break; case Strings.Kills: Output.Add(Strings.Kills + "\t\t\t" + Kills.ToString()); found = true; break; case Strings.Deaths: Output.Add(Strings.Deaths + "\t\t\t" + Deaths.ToString()); found = true; break; case Strings.FlightsFlown: Output.Add(Strings.FlightsFlown + "\t\t" + FlightsFlown.ToString()); found = true; break; case Strings.FlightHours: Output.Add(Strings.FlightHours + "\t\t" + FlightHours.ToString()); found = true; break; case Strings.Banned: Output.Add(Strings.Banned + "\t\t\t" + Banned.ToString()); found = true; break; case Strings.BannedBy: Output.Add(Strings.BannedBy + "\t\t" + BannedBy.ToString()); found = true; break; case Strings.DateBanned: Output.Add(Strings.DateBanned + "\t\t" + DateBanned.ToString()); found = true; break; case Strings.BanExpires: Output.Add(Strings.BanExpires + "\t\t" + BanExpires.ToString()); found = true; break; case Strings.BanReason: Output.Add(Strings.BanReason + "\t\t" + BanReason.ToString()); found = true; break; case Strings.TimesBanned: Output.Add(Strings.TimesBanned + "\t\t" + TimesBanned.ToString()); found = true; break; case Strings.Frozen: Output.Add(Strings.Frozen + "\t\t\t" + Frozen.ToString()); found = true; break; case Strings.FrozenBy: Output.Add(Strings.FrozenBy + "\t\t" + FrozenBy.ToString()); found = true; break; case Strings.DateFrozen: Output.Add(Strings.DateFrozen + "\t\t" + DateFrozen.ToString()); found = true; break; case Strings.FreezeExpires: Output.Add(Strings.FreezeExpires + "\t\t" + FreezeExpires.ToString()); found = true; break; case Strings.FreezeReason: Output.Add(Strings.FreezeReason + "\t\t" + FreezeReason.ToString()); found = true; break; case Strings.TimesFrozen: Output.Add(Strings.TimesFrozen + "\t\t" + TimesFrozen.ToString()); found = true; break; case Strings.Muted: Output.Add(Strings.Muted + "\t\t\t" + Muted.ToString()); found = true; break; case Strings.MutedBy: Output.Add(Strings.MutedBy + "\t\t\t" + MutedBy.ToString()); found = true; break; case Strings.DateMuted: Output.Add(Strings.DateMuted + "\t\t" + DateMuted.ToString()); found = true; break; case Strings.MuteExpires: Output.Add(Strings.MuteExpires + "\t\t" + MuteExpires.ToString()); found = true; break; case Strings.MuteReason: Output.Add(Strings.MuteReason + "\t\t" + MuteReason.ToString()); found = true; break; case Strings.TimesMuted: Output.Add(Strings.TimesMuted + "\t\t" + TimesMuted.ToString()); found = true; break; case Strings.Kicked: Output.Add(Strings.Kicked + "\t\t\t" + Kicked.ToString()); found = true; break; case Strings.KickedBy: Output.Add(Strings.KickedBy + "\t\t" + KickedBy.ToString()); found = true; break; case Strings.DateKicked: Output.Add(Strings.DateKicked + "\t\t" + DateKicked.ToString()); found = true; break; case Strings.KickReason: Output.Add(Strings.KickReason + "\t\t" + KickReason.ToString()); found = true; break; case Strings.TimesKicked: Output.Add(Strings.TimesKicked + "\t\t" + TimesKicked.ToString()); found = true; break; case Strings.OthersBanned: Output.Add(Strings.OthersBanned + "\t\t" + OthersBanned.ToString()); found = true; break; case Strings.OthersFrozen: Output.Add(Strings.OthersFrozen + "\t\t" + OthersFrozen.ToString()); found = true; break; case Strings.OthersMuted: Output.Add(Strings.OthersMuted + "\t\t" + OthersMuted.ToString()); found = true; break; case Strings.OthersKicked: Output.Add(Strings.OthersKicked + "\t\t" + OthersKicked.ToString()); found = true; break; case Strings.GroupRepresented: Output.Add(Strings.GroupRepresented + "\t" + GroupRepresented.ToString()); found = true; break; #endregion default: Logger.Log.SystemMessage(String.Format("Unrecognised Value: {0}", Header)); //Unrecognised Value. break; } } if (!found) { switch (Key) { #region Switches case Strings.Name: Output.Add(Strings.Name + "\t\t" + Name); found = true; break; case Strings.DisplayedName: Output.Add(Strings.DisplayedName + "\t\t" + DisplayedName.ToString()); found = true; break; case Strings.LastIP: Output.Add(Strings.LastIP + "\t\t\t" + LastIP.ToString()); found = true; break; case Strings.LoginCount: Output.Add(Strings.LoginCount + "\t\t" + LoginCount.ToString()); found = true; break; case Strings.MessagesTyped: Output.Add(Strings.MessagesTyped + "\t\t" + MessagesTyped.ToString()); found = true; break; case Strings.DateJoined: Output.Add(Strings.DateJoined + "\t\t" + DateJoined.ToString()); found = true; break; case Strings.DateLastVisited: Output.Add(Strings.DateLastVisited + "\t\t" + DateLastVisited.ToString()); found = true; break; case Strings.PlayTime: Output.Add(Strings.PlayTime + "\t\t" + PlayTime.ToString()); found = true; break; case Strings.Kills: Output.Add(Strings.Kills + "\t\t\t" + Kills.ToString()); found = true; break; case Strings.Deaths: Output.Add(Strings.Deaths + "\t\t\t" + Deaths.ToString()); found = true; break; case Strings.FlightsFlown: Output.Add(Strings.FlightsFlown + "\t\t" + FlightsFlown.ToString()); found = true; break; case Strings.FlightHours: Output.Add(Strings.FlightHours + "\t\t" + FlightHours.ToString()); found = true; break; case Strings.Banned: Output.Add(Strings.Banned + "\t\t\t" + Banned.ToString()); found = true; break; case Strings.BannedBy: Output.Add(Strings.BannedBy + "\t\t" + BannedBy.ToString()); found = true; break; case Strings.DateBanned: Output.Add(Strings.DateBanned + "\t\t" + DateBanned.ToString()); found = true; break; case Strings.BanExpires: Output.Add(Strings.BanExpires + "\t\t" + BanExpires.ToString()); found = true; break; case Strings.BanReason: Output.Add(Strings.BanReason + "\t\t" + BanReason.ToString()); found = true; break; case Strings.TimesBanned: Output.Add(Strings.TimesBanned + "\t\t" + TimesBanned.ToString()); found = true; break; case Strings.Frozen: Output.Add(Strings.Frozen + "\t\t\t" + Frozen.ToString()); found = true; break; case Strings.FrozenBy: Output.Add(Strings.FrozenBy + "\t\t" + FrozenBy.ToString()); found = true; break; case Strings.DateFrozen: Output.Add(Strings.DateFrozen + "\t\t" + DateFrozen.ToString()); found = true; break; case Strings.FreezeExpires: Output.Add(Strings.FreezeExpires + "\t\t" + FreezeExpires.ToString()); found = true; break; case Strings.FreezeReason: Output.Add(Strings.FreezeReason + "\t\t" + FreezeReason.ToString()); found = true; break; case Strings.TimesFrozen: Output.Add(Strings.TimesFrozen + "\t\t" + TimesFrozen.ToString()); found = true; break; case Strings.Muted: Output.Add(Strings.Muted + "\t\t\t" + Muted.ToString()); found = true; break; case Strings.MutedBy: Output.Add(Strings.MutedBy + "\t\t\t" + MutedBy.ToString()); found = true; break; case Strings.DateMuted: Output.Add(Strings.DateMuted + "\t\t" + DateMuted.ToString()); found = true; break; case Strings.MuteExpires: Output.Add(Strings.MuteExpires + "\t\t" + MuteExpires.ToString()); found = true; break; case Strings.MuteReason: Output.Add(Strings.MuteReason + "\t\t" + MuteReason.ToString()); found = true; break; case Strings.TimesMuted: Output.Add(Strings.TimesMuted + "\t\t" + TimesMuted.ToString()); found = true; break; case Strings.Kicked: Output.Add(Strings.Kicked + "\t\t\t" + Kicked.ToString()); found = true; break; case Strings.KickedBy: Output.Add(Strings.KickedBy + "\t\t" + KickedBy.ToString()); found = true; break; case Strings.DateKicked: Output.Add(Strings.DateKicked + "\t\t" + DateKicked.ToString()); found = true; break; case Strings.KickReason: Output.Add(Strings.KickReason + "\t\t" + KickReason.ToString()); found = true; break; case Strings.TimesKicked: Output.Add(Strings.TimesKicked + "\t\t" + TimesKicked.ToString()); found = true; break; case Strings.OthersBanned: Output.Add(Strings.OthersBanned + "\t\t" + OthersBanned.ToString()); found = true; break; case Strings.OthersFrozen: Output.Add(Strings.OthersFrozen + "\t\t" + OthersFrozen.ToString()); found = true; break; case Strings.OthersMuted: Output.Add(Strings.OthersMuted + "\t\t" + OthersMuted.ToString()); found = true; break; case Strings.OthersKicked: Output.Add(Strings.OthersKicked + "\t\t" + OthersKicked.ToString()); found = true; break; case Strings.GroupRepresented: Output.Add(Strings.GroupRepresented + "\t" + GroupRepresented.ToString()); found = true; break; #endregion default: Logger.Log.SystemMessage(String.Format("Unrecognised Value: {0}", Key)); //Unrecognised Value. break; } } try { File.WriteAllLines(OutputFile, Output.ToList()); } catch { } }
private void ReadConfigValues() { if (!File.Exists(PluginSettingsFilePath)) { const string message = "SaveClanTag.xml not found."; FileNotFoundException ex = new FileNotFoundException(message, PluginSettingsFilePath); Logger.FatalToUI("SaveClanTag.xml not found.", ex); throw ex; } Util.WaitUntilReadable(PluginSettingsFilePath, 10000); XDocument doc = XDocument.Load(PluginSettingsFilePath); if (doc.Root == null || doc.Root.Name != "Settings") { const string message = "Could not find settings-root-node in SaveClanTag.xml."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } XAttribute patternAttribute = doc.Root.Attribute("clanTagPattern"); if (patternAttribute == null) { const string message = "Could not find 'clanTagPattern' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } Pattern = patternAttribute.Value.Trim(); if (Pattern.IsNullOrTimmedEmpty()) { const string message = "Please provide a non empty 'clanTagPattern' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } XAttribute reasonAttribute = doc.Root.Attribute("kickReason"); if (reasonAttribute == null) { const string message = "Could not find 'kickReason' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } KickReason = reasonAttribute.Value.Trim(); if (KickReason.IsNullOrTimmedEmpty()) { const string message = "Please provide a non empty 'kickReason' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } XAttribute publicReasonAttribute = doc.Root.Attribute("publicKickReason"); if (publicReasonAttribute == null) { const string message = "Could not find 'publicKickReason' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } PublicKickReason = publicReasonAttribute.Value.Trim(); if (PublicKickReason.IsNullOrTimmedEmpty()) { const string message = "Please provide a non empty 'publicKickReason' Attribute in Settings-node."; ConfigurationErrorsException ex = new ConfigurationErrorsException(message); Logger.FatalToUI(message, ex); throw ex; } ClanMembers = new HashSet <string>(); foreach (XElement loginElement in doc.Root.Descendants("Login")) { if (loginElement.Value.IsNullOrTimmedEmpty()) { continue; } string login = loginElement.Value.Trim(); if (!ClanMembers.Contains(login)) { ClanMembers.Add(login.ToLower()); } } }
/// <summary> /// Kicks one or more clients specified with clid from their currently joined channel or from the server, /// depending on reasonid. The reasonmsg parameter specifies a text message sent to the kicked clients. This /// parameter is optional and may only have a maximum of 40 characters. /// </summary> /// <param name="clientIds">the ids of the clients to kick</param> /// <param name="kickreason">the reason for kicking</param> /// <param name="reasonMessage">the reason for kicking as text</param> public SimpleResponse KickClients(IEnumerable<uint> clientIds, KickReason kickreason, string reasonMessage) { Command command = CommandName.ClientKick.CreateCommand(); foreach (uint clientId in clientIds) command.AddParameter("clid", clientId); command.AddParameter("reasonid", (uint) kickreason); if (!reasonMessage.IsNullOrTrimmedEmpty()) { if (reasonMessage.Length > 40) reasonMessage = reasonMessage.Substring(0, 40); command.AddParameter("reasonmsg", reasonMessage); } return ResponseBase<SimpleResponse>.Parse(SendCommand(command)); }
public SimpleResponse KickClients(IEnumerable<uint> clientIds, KickReason kickreason) { return KickClients(clientIds, kickreason, null); }
/// <summary> /// Kicks one client specified with clid from his currently joined channel or from the server, /// depending on reasonid. The reasonmsg parameter specifies a text message sent to the kicked client. This /// parameter is optional and may only have a maximum of 40 characters. /// </summary> /// <param name="clientId">the id of the client to kick</param> /// <param name="kickReason">the reason for kicking</param> /// <param name="reasonMessage">the reason for kicking as text</param> public SimpleResponse KickClient(uint clientId, KickReason kickReason, string reasonMessage) { return KickClients(new[] {clientId}, kickReason, reasonMessage); }
public SimpleResponse KickClient(uint clientId, KickReason kickReason) { return KickClient(clientId, kickReason, null); }
public ClientKickCommand(uint clientId, KickReason kickReason, string reasonMessage = null) : this(new[] { clientId }, kickReason, reasonMessage) { }