Fixed all known bugs to server side inventory, its now fully tested.

Fixed pvp related stuff, its now fully working.
Inventory data is per account, not per character since I can't get SQLite to do something I need it to do.
Pvp throttling hardcoded because client side has a limit of 5 seconds, so double enforce it server side.
This commit is contained in:
Zidonuke 2011-12-20 21:30:06 -05:00
parent d343983f2c
commit f414fb4e39
4 changed files with 36 additions and 27 deletions

View file

@ -1039,7 +1039,7 @@ namespace TShockAPI
{
Item item = new Item();
Item serverItem = new Item();
if (inventory[i].netID != 0)
if (inventory[i] != null && inventory[i].netID != 0)
{
if (playerData.inventory[i].netID != inventory[i].netID)
{
@ -1057,8 +1057,7 @@ namespace TShockAPI
player.SendMessage("Error: Your item (" + item.name + ") needs to be deleted.", Color.Cyan);
check = false;
}
if (inventory[i].stack > playerData.inventory[i].stack)
else if (inventory[i].stack > playerData.inventory[i].stack)
{
item.netDefaults(inventory[i].netID);
item.Prefix(inventory[i].prefix);
@ -1072,29 +1071,28 @@ namespace TShockAPI
{
Item item = new Item();
Item serverItem = new Item();
if (armor[i].netID != 0)
if (armor[i - 48] != null && armor[i - 48].netID != 0)
{
if (playerData.inventory[i].netID != armor[i].netID)
if (playerData.inventory[i].netID != armor[i - 48].netID)
{
item.netDefaults(armor[i].netID);
item.Prefix(armor[i].prefix);
item.netDefaults(armor[i - 48].netID);
item.Prefix(armor[i - 48].prefix);
item.AffixName();
player.SendMessage("Error: Your armor (" + item.name + ") needs to be deleted.", Color.Cyan);
check = false;
}
else if (playerData.inventory[i].prefix != armor[i].prefix)
else if (playerData.inventory[i].prefix != armor[i - 48].prefix)
{
item.netDefaults(armor[i].netID);
item.Prefix(armor[i].prefix);
item.netDefaults(armor[i - 48].netID);
item.Prefix(armor[i - 48].prefix);
item.AffixName();
player.SendMessage("Error: Your armor (" + item.name + ") needs to be deleted.", Color.Cyan);
check = false;
}
if (armor[i].stack > playerData.inventory[i].stack)
else if (armor[i - 48].stack > playerData.inventory[i].stack)
{
item.netDefaults(armor[i].netID);
item.Prefix(armor[i].prefix);
item.netDefaults(armor[i - 48].netID);
item.Prefix(armor[i - 48].prefix);
item.AffixName();
player.SendMessage("Error: Your armor (" + item.name + ") (" + inventory[i].stack + ") needs to have it's stack decreased to (" + playerData.inventory[i].stack + ").", Color.Cyan);
check = false;