Server either console can now kick and ban players regardless of the players immune permissions which fixes #391
Refactored Utils ForceKick to call Kick so we have one core method with all the logic in Added missing params to docs for Kick and Ban
This commit is contained in:
parent
aeab6d9e45
commit
988bc4198b
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