/// <summary> /// Disables the player for the given <paramref name="reason"/> /// </summary> /// <param name="reason">The reason why the player was disabled.</param> /// <param name="flags">Flags to dictate where this event is logged to.</param> public virtual void Disable(string reason = "", DisableFlags flags = DisableFlags.WriteToLog) { LastThreat = DateTime.UtcNow; SetBuff(BuffID.Frozen, 330, true); SetBuff(BuffID.Stoned, 330, true); SetBuff(BuffID.Webbed, 330, true); if (ActiveChest != -1) { ActiveChest = -1; SendData(PacketTypes.ChestOpen, "", -1); } if (!string.IsNullOrEmpty(reason)) { if ((DateTime.UtcNow - LastDisableNotification).TotalMilliseconds > 5000) { if (flags.HasFlag(DisableFlags.WriteToConsole)) { if (flags.HasFlag(DisableFlags.WriteToLog)) { TShock.Log.ConsoleInfo("Player {0} has been disabled for {1}.", Name, reason); } else { Server.SendInfoMessage("Player {0} has been disabled for {1}.", Name, reason); } } LastDisableNotification = DateTime.UtcNow; } } /* * Calling new StackTrace() is incredibly expensive, and must be disabled * in release builds. Use a conditional call instead. */ LogStackFrame(); }
/// <summary> /// Disables the player for the given <paramref name="reason"/> /// </summary> /// <param name="reason">The reason why the player was disabled.</param> /// <param name="flags">Flags to dictate where this event is logged to.</param> public virtual void Disable(string reason = "", DisableFlags flags = DisableFlags.WriteToLog) { LastThreat = DateTime.UtcNow; SetBuff(BuffID.Frozen, 330, true); SetBuff(BuffID.Stoned, 330, true); SetBuff(BuffID.Webbed, 330, true); if (ActiveChest != -1) { ActiveChest = -1; SendData(PacketTypes.ChestOpen, "", -1); } if (!string.IsNullOrEmpty(reason)) { if ((DateTime.UtcNow - LastDisableNotification).TotalMilliseconds > 5000) { if (flags.HasFlag(DisableFlags.WriteToConsole)) { if (flags.HasFlag(DisableFlags.WriteToLog)) { TShock.Log.ConsoleInfo("Player {0} has been disabled for {1}.", Name, reason); } else { Server.SendInfoMessage("Player {0} has been disabled for {1}.", Name, reason); } } LastDisableNotification = DateTime.UtcNow; } } var trace = new StackTrace(); StackFrame frame = null; frame = trace.GetFrame(1); if (frame != null && frame.GetMethod().DeclaringType != null) TShock.Log.Debug(frame.GetMethod().DeclaringType.Name + " called Disable()."); }