Merge pull request #399 from stevenh/general-devel
Server console can now kick and ban players regardless of the players immune permissions
This commit is contained in:
commit
d2cfccc9be
2 changed files with 23 additions and 26 deletions
|
|
@ -786,7 +786,7 @@ namespace TShockAPI
|
||||||
string reason = args.Parameters.Count > 1
|
string reason = args.Parameters.Count > 1
|
||||||
? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1))
|
? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1))
|
||||||
: "Misbehaviour.";
|
: "Misbehaviour.";
|
||||||
if (!TShock.Utils.Kick(players[0], reason))
|
if (!TShock.Utils.Kick(players[0], reason, !args.Player.RealPlayer, false, args.Player.Name))
|
||||||
{
|
{
|
||||||
args.Player.SendMessage("You can't kick another admin!", Color.Red);
|
args.Player.SendMessage("You can't kick another admin!", Color.Red);
|
||||||
}
|
}
|
||||||
|
|
@ -833,7 +833,7 @@ namespace TShockAPI
|
||||||
string reason = args.Parameters.Count > 1
|
string reason = args.Parameters.Count > 1
|
||||||
? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1))
|
? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1))
|
||||||
: "Misbehaviour.";
|
: "Misbehaviour.";
|
||||||
if (!TShock.Utils.Ban(players[0], reason))
|
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.Name))
|
||||||
{
|
{
|
||||||
args.Player.SendMessage("You can't ban another admin!", Color.Red);
|
args.Player.SendMessage("You can't ban another admin!", Color.Red);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -535,21 +535,10 @@ namespace TShockAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ply">int player</param>
|
/// <param name="ply">int player</param>
|
||||||
/// <param name="reason">string reason</param>
|
/// <param name="reason">string reason</param>
|
||||||
public void ForceKick(TSPlayer player, string reason)
|
/// <param name="silent">bool silent (default: false)</param>
|
||||||
|
public void ForceKick(TSPlayer player, string reason, bool silent = false)
|
||||||
{
|
{
|
||||||
if (!player.ConnectionAlive)
|
Kick(player, reason, true, silent);
|
||||||
return;
|
|
||||||
player.Disconnect(reason);
|
|
||||||
Log.ConsoleInfo(string.Format("{0} was force kicked for : {1}", player.IP, reason));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ForceKick(TSPlayer player, string reason, bool silent)
|
|
||||||
{
|
|
||||||
player.SilentKickInProgress = true;
|
|
||||||
if (!player.ConnectionAlive)
|
|
||||||
return;
|
|
||||||
player.Disconnect(reason);
|
|
||||||
Log.ConsoleInfo(string.Format("{0} was force kicked for : {1}", player.IP, reason));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -557,19 +546,24 @@ namespace TShockAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ply">int player</param>
|
/// <param name="ply">int player</param>
|
||||||
/// <param name="reason">string reason</param>
|
/// <param name="reason">string reason</param>
|
||||||
public bool Kick(TSPlayer player, string reason, string adminUserName = "")
|
/// <param name="force">bool force (default: false)</param>
|
||||||
|
/// <param name="silent">bool silent (default: false)</param>
|
||||||
|
/// <param name="adminUserName">bool silent (default: null)</param>
|
||||||
|
public bool Kick(TSPlayer player, string reason, bool force = false, bool silent = false, string adminUserName = null)
|
||||||
{
|
{
|
||||||
if (!player.ConnectionAlive)
|
if (!player.ConnectionAlive)
|
||||||
return true;
|
return true;
|
||||||
if (!player.Group.HasPermission(Permissions.immunetokick))
|
if (force || !player.Group.HasPermission(Permissions.immunetokick))
|
||||||
{
|
{
|
||||||
string playerName = player.Name;
|
string playerName = player.Name;
|
||||||
|
player.SilentKickInProgress = silent;
|
||||||
player.Disconnect(string.Format("Kicked: {0}", reason));
|
player.Disconnect(string.Format("Kicked: {0}", reason));
|
||||||
Log.ConsoleInfo(string.Format("Kicked {0} for : {1}", playerName, reason));
|
Log.ConsoleInfo(string.Format("Kicked {0} for : {1}", playerName, reason));
|
||||||
if (adminUserName.Length == 0)
|
string verb = force ? "force " : "";
|
||||||
Broadcast(string.Format("{0} was kicked for {1}", playerName, reason.ToLower()));
|
if (string.IsNullOrWhiteSpace(adminUserName))
|
||||||
|
Broadcast(string.Format("{0} was {1}kicked for {2}", playerName, verb, reason.ToLower()));
|
||||||
else
|
else
|
||||||
Broadcast(string.Format("{0} kicked {1} for {2}", adminUserName, playerName, reason.ToLower()));
|
Broadcast(string.Format("{0} {1}kicked {2} for {3}", adminUserName, verb, playerName, reason.ToLower()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -580,21 +574,24 @@ namespace TShockAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="ply">int player</param>
|
/// <param name="ply">int player</param>
|
||||||
/// <param name="reason">string reason</param>
|
/// <param name="reason">string reason</param>
|
||||||
public bool Ban(TSPlayer player, string reason, string adminUserName = "")
|
/// <param name="force">bool force (default: false)</param>
|
||||||
|
/// <param name="adminUserName">bool silent (default: null)</param>
|
||||||
|
public bool Ban(TSPlayer player, string reason, bool force = false, string adminUserName = null)
|
||||||
{
|
{
|
||||||
if (!player.ConnectionAlive)
|
if (!player.ConnectionAlive)
|
||||||
return true;
|
return true;
|
||||||
if (!player.Group.HasPermission(Permissions.immunetoban))
|
if (force || !player.Group.HasPermission(Permissions.immunetoban))
|
||||||
{
|
{
|
||||||
string ip = player.IP;
|
string ip = player.IP;
|
||||||
string playerName = player.Name;
|
string playerName = player.Name;
|
||||||
TShock.Bans.AddBan(ip, playerName, reason);
|
TShock.Bans.AddBan(ip, playerName, reason);
|
||||||
player.Disconnect(string.Format("Banned: {0}", reason));
|
player.Disconnect(string.Format("Banned: {0}", reason));
|
||||||
Log.ConsoleInfo(string.Format("Banned {0} for : {1}", playerName, reason));
|
Log.ConsoleInfo(string.Format("Banned {0} for : {1}", playerName, reason));
|
||||||
if (adminUserName.Length == 0)
|
string verb = force ? "force " : "";
|
||||||
Broadcast(string.Format("{0} was banned for {1}", playerName, reason.ToLower()));
|
if (string.IsNullOrWhiteSpace(adminUserName))
|
||||||
|
Broadcast(string.Format("{0} was {1}banned for {1}", playerName, verb, reason.ToLower()));
|
||||||
else
|
else
|
||||||
Broadcast(string.Format("{0} banned {1} for {2}", adminUserName, playerName, reason.ToLower()));
|
Broadcast(string.Format("{0} {1}banned {1} for {2}", adminUserName, verb, playerName, reason.ToLower()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue