add commands for allowed groups for banned items
This commit is contained in:
parent
50eeae2a86
commit
2e7fa14a91
2 changed files with 135 additions and 20 deletions
|
|
@ -163,6 +163,8 @@ namespace TShockAPI
|
|||
add(Permissions.manageitem, AddItem, "additem", "banitem");
|
||||
add(Permissions.manageitem, DeleteItem, "delitem", "unbanitem");
|
||||
add(Permissions.manageitem, ListItems, "listitems", "listbanneditems");
|
||||
add(Permissions.manageitem, AddItemGroup, "additemgroup");
|
||||
add(Permissions.manageitem, DeleteItemGroup, "delitemgroup");
|
||||
add(Permissions.cfg, SetSpawn, "setspawn");
|
||||
add(Permissions.cfg, Reload, "reload");
|
||||
add(Permissions.cfg, ServerPassword, "serverpassword");
|
||||
|
|
@ -1738,7 +1740,7 @@ namespace TShockAPI
|
|||
|
||||
private static void AddItem(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count > 0)
|
||||
if (args.Parameters.Count == 1)
|
||||
{
|
||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
||||
if (items.Count == 0)
|
||||
|
|
@ -1765,13 +1767,13 @@ namespace TShockAPI
|
|||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid use: /addItem \"item name\" or /addItem ##", Color.Red);
|
||||
args.Player.SendMessage("Invalid use: /additem \"item name\" or /additem ##", Color.Red);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DeleteItem(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count > 0)
|
||||
if (args.Parameters.Count == 1)
|
||||
{
|
||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
||||
if (items.Count == 0)
|
||||
|
|
@ -1798,7 +1800,7 @@ namespace TShockAPI
|
|||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid use: /delItem \"item name\" or /delItem ##", Color.Red);
|
||||
args.Player.SendMessage("Invalid use: /delitem \"item name\" or /delitem ##", Color.Red);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1806,7 +1808,105 @@ namespace TShockAPI
|
|||
{
|
||||
args.Player.SendMessage("The banned items are: " + String.Join(",", TShock.Itembans.ItemBans), Color.Yellow);
|
||||
}
|
||||
|
||||
private static void AddItemGroup(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count == 2)
|
||||
{
|
||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
||||
if (items.Count == 0)
|
||||
{
|
||||
args.Player.SendMessage("Invalid item type!", Color.Red);
|
||||
}
|
||||
else if (items.Count > 1)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("More than one ({0}) item matched!", items.Count), Color.Red);
|
||||
}
|
||||
else
|
||||
{
|
||||
var item = items[0];
|
||||
if (item.type >= 1)
|
||||
{
|
||||
if(TShock.Groups.GroupExists(args.Parameters[1]))
|
||||
{
|
||||
ItemBan ban = TShock.Itembans.GetItemBanByName(item.name);
|
||||
|
||||
if(!ban.AllowedGroups.Contains(args.Parameters[1]))
|
||||
{
|
||||
TShock.Itembans.AllowGroup(item.name, args.Parameters[1]);
|
||||
args.Player.SendMessage("Banned item " + item.name + " has been allowed for group " + args.Parameters[1] + ".", Color.Green);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Banned item " + item.name + " is already allowed for group " + args.Parameters[1] + "!", Color.OrangeRed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Group " + args.Parameters[1] + " not found!", Color.Red);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid item type!", Color.Red);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid use: /additemgroup \"item name\" \"group name\"", Color.Red);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DeleteItemGroup(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count == 2)
|
||||
{
|
||||
var items = TShock.Utils.GetItemByIdOrName(args.Parameters[0]);
|
||||
if (items.Count == 0)
|
||||
{
|
||||
args.Player.SendMessage("Invalid item type!", Color.Red);
|
||||
}
|
||||
else if (items.Count > 1)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("More than one ({0}) item matched!", items.Count), Color.Red);
|
||||
}
|
||||
else
|
||||
{
|
||||
var item = items[0];
|
||||
if (item.type >= 1)
|
||||
{
|
||||
if(TShock.Groups.GroupExists(args.Parameters[1]))
|
||||
{
|
||||
ItemBan ban = TShock.Itembans.GetItemBanByName(item.name);
|
||||
|
||||
if(ban.AllowedGroups.Contains(args.Parameters[1]))
|
||||
{
|
||||
TShock.Itembans.RemoveGroup(item.name, args.Parameters[1]);
|
||||
args.Player.SendMessage("Removed access for group " + args.Parameters[1] + " to banned item " + item.name + ".", Color.Green);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Group " + args.Parameters[1] + " has not access to banned item " + item.name + "!", Color.Red);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Group " + args.Parameters[1] + " not found!", Color.Red);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid item type!", Color.Red);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Invalid use: /delitemgroup \"item name\" \"group name\"", Color.Red);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Item Management
|
||||
|
||||
#region Server Config Commands
|
||||
|
|
|
|||
|
|
@ -115,16 +115,23 @@ namespace TShockAPI.DB
|
|||
ItemBan b = GetItemBanByName(item);
|
||||
if (b != null)
|
||||
{
|
||||
groupsNew = String.Join(",", b.AllowedGroups);
|
||||
if (groupsNew.Length > 0)
|
||||
groupsNew += ",";
|
||||
groupsNew += name;
|
||||
b.SetAllowedGroups(groupsNew);
|
||||
try
|
||||
{
|
||||
groupsNew = String.Join(",", b.AllowedGroups);
|
||||
if (groupsNew.Length > 0)
|
||||
groupsNew += ",";
|
||||
groupsNew += name;
|
||||
b.SetAllowedGroups(groupsNew);
|
||||
|
||||
int q = database.Query("UPDATE ItemBans SET AllowedGroups=@0 WHERE ItemName=@1", groupsNew,
|
||||
item);
|
||||
|
||||
return q > 0;
|
||||
int q = database.Query("UPDATE ItemBans SET AllowedGroups=@0 WHERE ItemName=@1", groupsNew,
|
||||
item);
|
||||
|
||||
return q > 0;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
@ -135,12 +142,20 @@ namespace TShockAPI.DB
|
|||
ItemBan b = GetItemBanByName(item);
|
||||
if (b != null)
|
||||
{
|
||||
b.RemoveGroup(group);
|
||||
string groups = string.Join(",", b.AllowedGroups);
|
||||
int q = database.Query("UPDATE ItemBans SET AllowedGroups=@0 WHERE ItemName=@1", groups,
|
||||
item);
|
||||
if (q > 0)
|
||||
return true;
|
||||
try
|
||||
{
|
||||
b.RemoveGroup(group);
|
||||
string groups = string.Join(",", b.AllowedGroups);
|
||||
int q = database.Query("UPDATE ItemBans SET AllowedGroups=@0 WHERE ItemName=@1", groups,
|
||||
item);
|
||||
|
||||
if (q > 0)
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -212,7 +227,7 @@ namespace TShockAPI.DB
|
|||
|
||||
public override string ToString()
|
||||
{
|
||||
return Name;
|
||||
return Name + " (" + String.Join(",", AllowedGroups) + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue