Clean up /itemban, /projban and tempbans
This commit is contained in:
parent
6d3bb30c7c
commit
3e12e80a89
3 changed files with 184 additions and 194 deletions
|
|
@ -1148,7 +1148,8 @@ namespace TShockAPI
|
|||
int time;
|
||||
if (!TShock.Utils.TryParseTime(args.Parameters[2], out time))
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid time string! Proper format: 0d0h0m0s, with at least one time specifier.");
|
||||
args.Player.SendErrorMessage("Invalid time string! Proper format: _d_h_m_s, with at least one time specifier.");
|
||||
args.Player.SendErrorMessage("For example, 1d and 10h-30m+2m are both valid time strings, but 2 is not.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2192,9 +2193,9 @@ namespace TShockAPI
|
|||
|
||||
private static void Group(CommandArgs args)
|
||||
{
|
||||
string subcmd = args.Parameters.Count == 0 ? "help" : args.Parameters[0].ToLower();
|
||||
string subCmd = args.Parameters.Count == 0 ? "help" : args.Parameters[0].ToLower();
|
||||
|
||||
switch (subcmd)
|
||||
switch (subCmd)
|
||||
{
|
||||
case "add":
|
||||
#region Add group
|
||||
|
|
@ -2596,16 +2597,8 @@ namespace TShockAPI
|
|||
|
||||
private static void ItemBan(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count == 0)
|
||||
{
|
||||
args.Player.SendInfoMessage("Invalid syntax! Proper syntax: /itemban <command> [arguments]");
|
||||
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||
args.Player.SendInfoMessage("Arguments: add <item name>, allow <item name> <group name>");
|
||||
args.Player.SendInfoMessage("Arguments: del <item name>, disallow <item name> <group name>, list [page]");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (args.Parameters[0].ToLower())
|
||||
string subCmd = args.Parameters.Count == 0 ? "help" : args.Parameters[0].ToLower();
|
||||
switch (subCmd)
|
||||
{
|
||||
case "add":
|
||||
#region Add item
|
||||
|
|
@ -2662,17 +2655,17 @@ namespace TShockAPI
|
|||
ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name);
|
||||
if (ban == null)
|
||||
{
|
||||
args.Player.SendErrorMessage(items[0].name + " is not banned.");
|
||||
args.Player.SendErrorMessage("{0} is not banned.", items[0].name);
|
||||
return;
|
||||
}
|
||||
if (!ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.Itembans.AllowGroup(items[0].name, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage(String.Format("{0} has been allowed to use {1}.", args.Parameters[2], items[0].name));
|
||||
args.Player.SendSuccessMessage("{0} has been allowed to use {1}.", args.Parameters[2], items[0].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendWarningMessage(String.Format("{0} is already allowed to use {1}.", args.Parameters[2], items[0].name));
|
||||
args.Player.SendWarningMessage("{0} is already allowed to use {1}.", args.Parameters[2], items[0].name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2705,7 +2698,7 @@ namespace TShockAPI
|
|||
#endregion
|
||||
return;
|
||||
case "disallow":
|
||||
#region Allow group to item
|
||||
#region Disllow group from item
|
||||
{
|
||||
if (args.Parameters.Count != 3)
|
||||
{
|
||||
|
|
@ -2733,42 +2726,64 @@ namespace TShockAPI
|
|||
ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name);
|
||||
if (ban == null)
|
||||
{
|
||||
args.Player.SendErrorMessage(items[0].name + " is not banned.");
|
||||
args.Player.SendErrorMessage("{0} is not banned.", items[0].name);
|
||||
return;
|
||||
}
|
||||
if (ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.Itembans.RemoveGroup(items[0].name, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage(String.Format("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].name));
|
||||
args.Player.SendSuccessMessage("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendWarningMessage(String.Format("{0} is already disallowed to use {1}.", args.Parameters[2], items[0].name));
|
||||
args.Player.SendWarningMessage("{0} is already disallowed to use {1}.", args.Parameters[2], items[0].name);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
return;
|
||||
case "help":
|
||||
args.Player.SendInfoMessage("Syntax: /itemban <command> [arguments]");
|
||||
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||
args.Player.SendInfoMessage("Arguments: add <item name>, allow <item name> <group name>");
|
||||
args.Player.SendInfoMessage("Arguments: del <item name>, disallow <item name> <group name>, list [page]");
|
||||
#region Help
|
||||
{
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
|
||||
var lines = new List<string>
|
||||
{
|
||||
"add <item> - Adds an item ban.",
|
||||
"allow <item> <group> - Allows a group to use an item.",
|
||||
"del <item> - Deletes an item ban.",
|
||||
"disallow <item> <group> - Disallows a group from using an item.",
|
||||
"list [page] - Lists all item bans."
|
||||
};
|
||||
|
||||
PaginationTools.SendPage(args.Player, pageNumber, lines,
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Item Ban Sub-Commands ({0}/{1}):",
|
||||
FooterFormat = "Type /itemban help {0} for more sub-commands."
|
||||
}
|
||||
);
|
||||
}
|
||||
#endregion
|
||||
return;
|
||||
case "list":
|
||||
#region List items
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
IEnumerable<string> itemNames = from itemBan in TShock.Itembans.ItemBans
|
||||
select itemBan.Name;
|
||||
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(itemNames),
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Item bans ({0}/{1}):",
|
||||
FooterFormat = "Type /itemban list {0} for more.",
|
||||
NothingToDisplayString = "There are currently no banned items."
|
||||
});
|
||||
{
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
IEnumerable<string> itemNames = from itemBan in TShock.Itembans.ItemBans
|
||||
select itemBan.Name;
|
||||
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(itemNames),
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Item bans ({0}/{1}):",
|
||||
FooterFormat = "Type /itemban list {0} for more.",
|
||||
NothingToDisplayString = "There are currently no banned items."
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
return;
|
||||
}
|
||||
|
|
@ -2779,201 +2794,170 @@ namespace TShockAPI
|
|||
|
||||
private static void ProjectileBan(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count == 0)
|
||||
{
|
||||
args.Player.SendInfoMessage("Invalid syntax! Proper syntax: /projban <command> [arguments]");
|
||||
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||
args.Player.SendInfoMessage("Arguments: add <proj id>, allow <proj id> <group name>");
|
||||
args.Player.SendInfoMessage("Arguments: del <proj id>, disallow <proj id> <group name>, list [page]");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (args.Parameters[0].ToLower())
|
||||
string subCmd = args.Parameters.Count == 0 ? "help" : args.Parameters[0].ToLower();
|
||||
switch (subCmd)
|
||||
{
|
||||
case "add":
|
||||
|
||||
#region Add projectile
|
||||
|
||||
{
|
||||
if (args.Parameters.Count != 2)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban add <proj id>");
|
||||
return;
|
||||
if (args.Parameters.Count != 2)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban add <proj id>");
|
||||
return;
|
||||
}
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id) && id > 0 && id < Main.maxProjectileTypes)
|
||||
{
|
||||
TShock.ProjectileBans.AddNewBan(id);
|
||||
args.Player.SendSuccessMessage("Banned projectile {0}.", id);
|
||||
}
|
||||
else
|
||||
args.Player.SendErrorMessage("Invalid projectile ID!");
|
||||
}
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id))
|
||||
{
|
||||
TShock.ProjectileBans.AddNewBan(id);
|
||||
args.Player.SendSuccessMessage("Banned Projectile: " + id + ".");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Projectile Id must be a number.");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return;
|
||||
case "allow":
|
||||
|
||||
#region Allow group to projectile
|
||||
|
||||
{
|
||||
if (args.Parameters.Count != 3)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban allow <id> <group name>");
|
||||
return;
|
||||
if (args.Parameters.Count != 3)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban allow <id> <group>");
|
||||
return;
|
||||
}
|
||||
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id) && id > 0 && id < Main.maxProjectileTypes)
|
||||
{
|
||||
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid group.");
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectileBan ban = TShock.ProjectileBans.GetBanById(id);
|
||||
if (ban == null)
|
||||
{
|
||||
args.Player.SendErrorMessage("Projectile {0} is not banned.", id);
|
||||
return;
|
||||
}
|
||||
if (!ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.ProjectileBans.AllowGroup(id, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage("{0} has been allowed to use projectile {1}.", args.Parameters[2], id);
|
||||
}
|
||||
else
|
||||
args.Player.SendWarningMessage("{0} is already allowed to use projectile {1}.", args.Parameters[2], id);
|
||||
}
|
||||
else
|
||||
args.Player.SendErrorMessage("Invalid projectile ID!");
|
||||
}
|
||||
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id))
|
||||
#endregion
|
||||
return;
|
||||
case "del":
|
||||
#region Delete projectile
|
||||
{
|
||||
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||
if (args.Parameters.Count != 2)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid group.");
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban del <id>");
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectileBan ban = TShock.ProjectileBans.GetBanById(id);
|
||||
if (ban == null)
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id) && id > 0 && id < Main.maxProjectileTypes)
|
||||
{
|
||||
args.Player.SendErrorMessage("Projectile " + id + " is not banned.");
|
||||
return;
|
||||
}
|
||||
if (!ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.ProjectileBans.AllowGroup(id, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage(String.Format("{0} has been allowed to use projectile {1}.", args.Parameters[2],
|
||||
id));
|
||||
TShock.ProjectileBans.RemoveBan(id);
|
||||
args.Player.SendSuccessMessage("Unbanned projectile {0}.", id);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendWarningMessage(String.Format("{0} is already allowed to use projectile {1}.", args.Parameters[2],
|
||||
id));
|
||||
return;
|
||||
}
|
||||
args.Player.SendErrorMessage("Invalid projectile ID!");
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Projectile Id must be a number.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
case "del":
|
||||
|
||||
#region Delete item
|
||||
|
||||
{
|
||||
if (args.Parameters.Count != 2)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban del <id>");
|
||||
return;
|
||||
}
|
||||
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id))
|
||||
{
|
||||
TShock.ProjectileBans.RemoveBan(id);
|
||||
args.Player.SendSuccessMessage("Unbanned Projectile: " + id + ".");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Projectile Id must be a number.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return;
|
||||
case "disallow":
|
||||
|
||||
#region Allow group to item
|
||||
|
||||
{
|
||||
if (args.Parameters.Count != 3)
|
||||
#region Disallow group from projectile
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban disallow <id> <group name>");
|
||||
return;
|
||||
}
|
||||
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id))
|
||||
{
|
||||
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||
if (args.Parameters.Count != 3)
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid group.");
|
||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /projban disallow <id> <group name>");
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectileBan ban = TShock.ProjectileBans.GetBanById(id);
|
||||
if (ban == null)
|
||||
short id;
|
||||
if (Int16.TryParse(args.Parameters[1], out id) && id > 0 && id < Main.maxProjectileTypes)
|
||||
{
|
||||
args.Player.SendErrorMessage("Projectile " + id + " is not banned.");
|
||||
return;
|
||||
}
|
||||
if (ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.ProjectileBans.RemoveGroup(id, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage(String.Format("{0} has been disallowed from using projectile {1}.",
|
||||
args.Parameters[2], id));
|
||||
return;
|
||||
if (!TShock.Groups.GroupExists(args.Parameters[2]))
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid group.");
|
||||
return;
|
||||
}
|
||||
|
||||
ProjectileBan ban = TShock.ProjectileBans.GetBanById(id);
|
||||
if (ban == null)
|
||||
{
|
||||
args.Player.SendErrorMessage("Projectile {0} is not banned.", id);
|
||||
return;
|
||||
}
|
||||
if (ban.AllowedGroups.Contains(args.Parameters[2]))
|
||||
{
|
||||
TShock.ProjectileBans.RemoveGroup(id, args.Parameters[2]);
|
||||
args.Player.SendSuccessMessage("{0} has been disallowed from using projectile {1}.", args.Parameters[2], id);
|
||||
return;
|
||||
}
|
||||
else
|
||||
args.Player.SendWarningMessage("{0} is already prevented from using projectile {1}.", args.Parameters[2], id);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendWarningMessage(String.Format("{0} is already prevented from using projectile {1}.",
|
||||
args.Parameters[2], id));
|
||||
return;
|
||||
}
|
||||
args.Player.SendErrorMessage("Invalid projectile ID!");
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendErrorMessage("Invalid syntax! Projectile Id must be a number.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return;
|
||||
case "help":
|
||||
args.Player.SendInfoMessage("Syntax: /projban <command> [arguments]");
|
||||
args.Player.SendInfoMessage("Commands: add, allow, del, disallow, list");
|
||||
args.Player.SendInfoMessage("Arguments: add <id>, allow <id> <group name>");
|
||||
args.Player.SendInfoMessage("Arguments: del <id>, disallow <id> <group name>, list [page]");
|
||||
#region Help
|
||||
{
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
|
||||
var lines = new List<string>
|
||||
{
|
||||
"add <projectile ID> - Adds a projectile ban.",
|
||||
"allow <projectile ID> <group> - Allows a group to use a projectile.",
|
||||
"del <projectile ID> - Deletes an projectile ban.",
|
||||
"disallow <projectile ID> <group> - Disallows a group from using a projectile.",
|
||||
"list [page] - Lists all projectile bans."
|
||||
};
|
||||
|
||||
PaginationTools.SendPage(args.Player, pageNumber, lines,
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Projectile Ban Sub-Commands ({0}/{1}):",
|
||||
FooterFormat = "Type /projban help {0} for more sub-commands."
|
||||
}
|
||||
);
|
||||
}
|
||||
#endregion
|
||||
return;
|
||||
case "list":
|
||||
|
||||
#region List items
|
||||
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
IEnumerable<Int16> projectileIds = from projectileBan in TShock.ProjectileBans.ProjectileBans
|
||||
select projectileBan.ID;
|
||||
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(projectileIds),
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Projectile bans ({0}/{1}):",
|
||||
FooterFormat = "Type /Projectile list {0} for more.",
|
||||
NothingToDisplayString = "There are currently no banned projectiles."
|
||||
});
|
||||
|
||||
#region List projectiles
|
||||
{
|
||||
int pageNumber;
|
||||
if (!PaginationTools.TryParsePageNumber(args.Parameters, 1, args.Player, out pageNumber))
|
||||
return;
|
||||
IEnumerable<Int16> projectileIds = from projectileBan in TShock.ProjectileBans.ProjectileBans
|
||||
select projectileBan.ID;
|
||||
PaginationTools.SendPage(args.Player, pageNumber, PaginationTools.BuildLinesFromTerms(projectileIds),
|
||||
new PaginationTools.Settings
|
||||
{
|
||||
HeaderFormat = "Projectile bans ({0}/{1}):",
|
||||
FooterFormat = "Type /projban list {0} for more.",
|
||||
NothingToDisplayString = "There are currently no banned projectiles."
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#endregion Projectile Management
|
||||
|
||||
#region Server Config Commands
|
||||
|
|
|
|||
|
|
@ -968,12 +968,16 @@ namespace TShockAPI
|
|||
player.Disconnect(String.Format("You are banned for {0} hour{1} and {2} minute{3}: {4}",
|
||||
ts.Hours, ts.Hours == 1 ? "" : "s", ts.Minutes, ts.Minutes == 1 ? "" : "s", ban.Reason));
|
||||
}
|
||||
else if (ts.Minutes > 0)
|
||||
{
|
||||
player.Disconnect(String.Format("You are banned for {0} minute{1} and {2} second{3}: {4}",
|
||||
ts.Minutes, ts.Minutes == 1 ? "" : "s", ts.Seconds, ts.Seconds == 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));
|
||||
player.Disconnect(String.Format("You are banned for {0} second{1}: {2}",
|
||||
ts.Seconds, ts.Seconds == 1 ? "" : "s", ban.Reason));
|
||||
}
|
||||
|
||||
}
|
||||
args.Handled = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -893,7 +893,7 @@ namespace TShockAPI
|
|||
var sb = new StringBuilder(3);
|
||||
for (int i = 0; i < str.Length; i++)
|
||||
{
|
||||
if (char.IsDigit(str[i]) || (str[i] == '-' || str[i] == '+'))
|
||||
if (Char.IsDigit(str[i]) || (str[i] == '-' || str[i] == '+'))
|
||||
sb.Append(str[i]);
|
||||
else
|
||||
{
|
||||
|
|
@ -921,6 +921,8 @@ namespace TShockAPI
|
|||
}
|
||||
}
|
||||
}
|
||||
if (sb.Length != 0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue