Add length to database primary keys.

Tweak some of the itembans code to be less inefficient.
Removed a chunk of code from the buff code that prevented users from being buffed with a buff that comes from an item.  This code seemed to cause max cpu usage when being disabled.  I don't think this code is useful, but I leave that to people who own servers.  IMO all buff code should be removed.
This commit is contained in:
Zack Piispanen 2014-09-15 09:05:28 -04:00
parent c29f01b959
commit d5527ade42
5 changed files with 10 additions and 13 deletions

View file

@ -101,12 +101,8 @@ namespace TShockAPI.DB
public bool ItemIsBanned(string name, TSPlayer ply) public bool ItemIsBanned(string name, TSPlayer ply)
{ {
if (ItemBans.Contains(new ItemBan(name))) ItemBan b = GetItemBanByName(name);
{ return b != null &&!b.HasPermissionToUseItem(ply);
ItemBan b = GetItemBanByName(name);
return !b.HasPermissionToUseItem(ply);
}
return false;
} }
public bool AllowGroup(string item, string name) public bool AllowGroup(string item, string name)
@ -162,11 +158,11 @@ namespace TShockAPI.DB
public ItemBan GetItemBanByName(String name) public ItemBan GetItemBanByName(String name)
{ {
foreach (ItemBan b in ItemBans) for (int i = 0; i < ItemBans.Count; i++)
{ {
if (b.Name == name) if (ItemBans[i].Name == name)
{ {
return b; return ItemBans[i];
} }
} }
return null; return null;

View file

@ -44,7 +44,7 @@ namespace TShockAPI.DB
new SqlColumn("width", MySqlDbType.Int32), new SqlColumn("width", MySqlDbType.Int32),
new SqlColumn("height", MySqlDbType.Int32), new SqlColumn("height", MySqlDbType.Int32),
new SqlColumn("RegionName", MySqlDbType.VarChar, 50) {Unique = true}, new SqlColumn("RegionName", MySqlDbType.VarChar, 50) {Unique = true},
new SqlColumn("WorldID", MySqlDbType.Text) {Unique = true}, new SqlColumn("WorldID", MySqlDbType.VarChar, 50) { Unique = true },
new SqlColumn("UserIds", MySqlDbType.Text), new SqlColumn("UserIds", MySqlDbType.Text),
new SqlColumn("Protected", MySqlDbType.Int32), new SqlColumn("Protected", MySqlDbType.Int32),
new SqlColumn("Groups", MySqlDbType.Text), new SqlColumn("Groups", MySqlDbType.Text),

View file

@ -44,7 +44,7 @@ namespace TShockAPI.DB
new SqlColumn("WarpName", MySqlDbType.VarChar, 50) {Unique = true}, new SqlColumn("WarpName", MySqlDbType.VarChar, 50) {Unique = true},
new SqlColumn("X", MySqlDbType.Int32), new SqlColumn("X", MySqlDbType.Int32),
new SqlColumn("Y", MySqlDbType.Int32), new SqlColumn("Y", MySqlDbType.Int32),
new SqlColumn("WorldID", MySqlDbType.Text) {Unique = true}, new SqlColumn("WorldID", MySqlDbType.VarChar, 50) { Unique = true },
new SqlColumn("Private", MySqlDbType.Text) new SqlColumn("Private", MySqlDbType.Text)
); );
var creator = new SqlTableCreator(db, var creator = new SqlTableCreator(db,

View file

@ -3292,7 +3292,7 @@ namespace TShockAPI
{ {
var buff = args.Data.ReadInt8(); var buff = args.Data.ReadInt8();
if (TShock.Itembans.ItemBans.Any(s => /*if (TShock.Itembans.ItemBans.Any(s =>
{ {
Item item = new Item(); Item item = new Item();
item.SetDefaults(s.Name); item.SetDefaults(s.Name);
@ -3300,7 +3300,7 @@ namespace TShockAPI
})) }))
{ {
buff = 0; buff = 0;
} }*/
if (buff == 10 && TShock.Config.DisableInvisPvP && args.TPlayer.hostile) if (buff == 10 && TShock.Config.DisableInvisPvP && args.TPlayer.hostile)
buff = 0; buff = 0;

View file

@ -804,6 +804,7 @@ namespace TShockAPI
} }
player.IgnoreActionsForCheating = check; player.IgnoreActionsForCheating = check;
check = "none"; check = "none";
//todo: pretty sure we check every place a players inventory can change, so do we really need to do this?
foreach (Item item in player.TPlayer.armor) foreach (Item item in player.TPlayer.armor)
{ {
if (Itembans.ItemIsBanned(item.name, player)) if (Itembans.ItemIsBanned(item.name, player))