Add /group help, show time left instead of date of expiration

This commit is contained in:
MarioE 2013-11-10 23:58:39 -05:00
parent 9c2ee33784
commit bc72390bf0
2 changed files with 73 additions and 32 deletions

View file

@ -1076,8 +1076,8 @@ namespace TShockAPI
switch (subcmd) switch (subcmd)
{ {
case "add": case "add":
#region Add ban
{ {
#region Add ban
if (args.Parameters.Count < 2) if (args.Parameters.Count < 2)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban add <player> [reason]"); args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban add <player> [reason]");
@ -1098,12 +1098,12 @@ namespace TShockAPI
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.UserAccountName)) if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.UserAccountName))
args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name); args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name);
} }
#endregion
} }
#endregion
return; return;
case "addip": case "addip":
#region Add IP ban
{ {
#region Add IP ban
if (args.Parameters.Count < 2) if (args.Parameters.Count < 2)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addip <ip> [reason]"); args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addip <ip> [reason]");
@ -1116,12 +1116,12 @@ namespace TShockAPI
: "Manually added IP address ban."; : "Manually added IP address ban.";
TShock.Bans.AddBan(ip, "", "", reason, false, args.Player.UserAccountName); TShock.Bans.AddBan(ip, "", "", reason, false, args.Player.UserAccountName);
args.Player.SendSuccessMessage("Banned IP {0}.", ip); args.Player.SendSuccessMessage("Banned IP {0}.", ip);
#endregion
} }
#endregion
return; return;
case "addtemp": case "addtemp":
#region Add temp ban
{ {
#region Add temp ban
if (args.Parameters.Count < 3) if (args.Parameters.Count < 3)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addtemp <player> <time> [reason]"); args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban addtemp <player> <time> [reason]");
@ -1166,12 +1166,12 @@ namespace TShockAPI
else else
args.Player.SendErrorMessage("Failed to ban {0}, check logs.", players[0].Name); args.Player.SendErrorMessage("Failed to ban {0}, check logs.", players[0].Name);
} }
#endregion
} }
#endregion
return; return;
case "del": case "del":
#region Delete ban
{ {
#region Delete ban
string plStr = args.Parameters[1]; string plStr = args.Parameters[1];
Ban ban = TShock.Bans.GetBanByName(plStr, false); Ban ban = TShock.Bans.GetBanByName(plStr, false);
if (ban != null) if (ban != null)
@ -1183,12 +1183,12 @@ namespace TShockAPI
} }
else else
args.Player.SendErrorMessage("No bans for {0} exist.", plStr); args.Player.SendErrorMessage("No bans for {0} exist.", plStr);
#endregion
} }
#endregion
return; return;
case "delip": case "delip":
#region Delete IP ban
{ {
#region Delete IP ban
if (args.Parameters.Count != 2) if (args.Parameters.Count != 2)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban delip <ip>"); args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /ban delip <ip>");
@ -1206,12 +1206,12 @@ namespace TShockAPI
} }
else else
args.Player.SendErrorMessage("IP {0} is not banned.", ip); args.Player.SendErrorMessage("IP {0} is not banned.", ip);
#endregion
} }
#endregion
return; return;
case "help": case "help":
#region Help
{ {
#region Help
int pageNumber; int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
return; return;
@ -1234,12 +1234,12 @@ namespace TShockAPI
FooterFormat = "Type /ban help {0} for more sub-commands." FooterFormat = "Type /ban help {0} for more sub-commands."
} }
); );
#endregion
} }
#endregion
return; return;
case "list": case "list":
#region List bans
{ {
#region List bans
int pageNumber; int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
{ {
@ -1259,12 +1259,12 @@ namespace TShockAPI
FooterFormat = "Type /ban list {0} for more.", FooterFormat = "Type /ban list {0} for more.",
NothingToDisplayString = "There are currently no bans." NothingToDisplayString = "There are currently no bans."
}); });
#endregion
} }
#endregion
return; return;
case "listip": case "listip":
#region List IP bans
{ {
#region List IP bans
int pageNumber; int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
{ {
@ -1284,8 +1284,8 @@ namespace TShockAPI
FooterFormat = "Type /ban listip {0} for more.", FooterFormat = "Type /ban listip {0} for more.",
NothingToDisplayString = "There are currently no IP bans." NothingToDisplayString = "There are currently no IP bans."
}); });
#endregion
} }
#endregion
return; return;
default: default:
args.Player.SendErrorMessage("Invalid subcommand! Type /ban help for more information."); args.Player.SendErrorMessage("Invalid subcommand! Type /ban help for more information.");
@ -2128,14 +2128,7 @@ namespace TShockAPI
private static void Group(CommandArgs args) private static void Group(CommandArgs args)
{ {
if (args.Parameters.Count == 0) string subcmd = args.Parameters.Count == 0 ? "help" : args.Parameters[0].ToLower();
{
args.Player.SendInfoMessage("Invalid syntax! Proper syntax: /group <command> [arguments]");
args.Player.SendInfoMessage("Commands: add, addperm, del, delperm, list, listperm");
args.Player.SendInfoMessage("Arguments: add <group name>, addperm <group name> <permissions...>, del <group name>");
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
return;
}
switch (args.Parameters[0].ToLower()) switch (args.Parameters[0].ToLower())
{ {
@ -2203,7 +2196,37 @@ namespace TShockAPI
} }
#endregion #endregion
return; return;
case "help":
#region Help
{
int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
return;
var lines = new List<string>
{
"add <name> <permissions...> - Adds a new group.",
"addperm <group> <permissions...> - Adds permissions to a group.",
"color <group> <rrr,ggg,bbb> - Changes a group's chat color.",
"del <group> - Deletes a group.",
"delperm <group> <permissions...> - Removes permissions from a group.",
"list [page] - Lists groups.",
"listperm <group> [page] - Lists a group's permissions.",
"parent <group> <parent group> - Changes a group's parent group.",
"prefix <group> <prefix> - Changes a group's prefix.",
"suffix <group> <suffix> - Changes a group's suffix."
};
PaginationTools.SendPage(args.Player, pageNumber, lines,
new PaginationTools.Settings
{
HeaderFormat = "Group Sub-Commands ({0}/{1}):",
FooterFormat = "Type /group help {0} for more sub-commands."
}
);
}
#endregion
return;
case "parent": case "parent":
#region Parent #region Parent
{ {
@ -2460,8 +2483,8 @@ namespace TShockAPI
int pageNumber; int pageNumber;
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber)) if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
return; return;
IEnumerable<string> groupNames = from grp in TShock.Groups.groups var groupNames = from grp in TShock.Groups.groups
select grp.Name; select grp.Name;
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(groupNames), PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(groupNames),
new PaginationTools.Settings new PaginationTools.Settings
{ {
@ -2501,12 +2524,6 @@ namespace TShockAPI
} }
#endregion #endregion
return; return;
case "help":
args.Player.SendInfoMessage("Syntax: /group <command> [arguments]");
args.Player.SendInfoMessage("Commands: add, addperm, parent, del, delperm, list, listperm");
args.Player.SendInfoMessage("Arguments: add <group name>, addperm <group name> <permissions...>, del <group name>");
args.Player.SendInfoMessage("Arguments: delperm <group name> <permissions...>, list [page], listperm <group name> [page]");
return;
} }
} }
#endregion Group Management #endregion Group Management

View file

@ -950,6 +950,30 @@ namespace TShockAPI
if (!Utils.HasBanExpired(ban)) if (!Utils.HasBanExpired(ban))
{ {
DateTime exp; DateTime exp;
if (!DateTime.TryParse(ban.Expiration, out exp))
{
player.Disconnect("You are banned forever: " + ban.Reason);
}
else
{
TimeSpan ts = exp - DateTime.UtcNow;
if (ts.Days > 0)
{
player.Disconnect(String.Format("You are banned for {0} day{1}, {2} hour{3}: {4}",
ts.Days, ts.Days == 1 ? "": "s", ts.Hours, ts.Hours == 1 ? "" : "s", ban.Reason));
}
else if (ts.Hours > 0)
{
player.Disconnect(String.Format("You are banned for {0} hour{1}, {2} minute{3}: {4}",
ts.Hours, ts.Hours == 1 ? "" : "s", ts.Minutes, ts.Minutes == 1 ? "" : "s", ban.Reason));
}
else
{
player.Disconnect(String.Format("You are banned for {0} minute{1}: {2}",
ts.Minutes, ts.Minutes == 1 ? "" : "s", ban.Reason));
}
}
string duration = DateTime.TryParse(ban.Expiration, out exp) ? String.Format("until {0}", exp.ToString("G")) : "forever"; string duration = DateTime.TryParse(ban.Expiration, out exp) ? String.Format("until {0}", exp.ToString("G")) : "forever";
player.Disconnect(String.Format("Banned {0}: {1}", duration, ban.Reason)); player.Disconnect(String.Format("Banned {0}: {1}", duration, ban.Reason));
args.Handled = true; args.Handled = true;