Extend NetItem

This commit is contained in:
MarioE 2015-05-04 22:11:10 -04:00
parent 0535f6b7c6
commit d5fb8726cc
7 changed files with 170 additions and 194 deletions

View file

@ -17,7 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
using System; using System;
using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq;
using System.Text; using System.Text;
using MySql.Data.MySqlClient; using MySql.Data.MySqlClient;
using Terraria; using Terraria;
@ -75,7 +77,7 @@ namespace TShockAPI.DB
playerData.maxHealth = reader.Get<int>("MaxHealth"); playerData.maxHealth = reader.Get<int>("MaxHealth");
playerData.mana = reader.Get<int>("Mana"); playerData.mana = reader.Get<int>("Mana");
playerData.maxMana = reader.Get<int>("MaxMana"); playerData.maxMana = reader.Get<int>("MaxMana");
playerData.inventory = NetItem.Parse(reader.Get<string>("Inventory")); playerData.inventory = reader.Get<string>("Inventory").Split('~').Select(NetItem.Parse).ToArray();
playerData.spawnX = reader.Get<int>("spawnX"); playerData.spawnX = reader.Get<int>("spawnX");
playerData.spawnY = reader.Get<int>("spawnY"); playerData.spawnY = reader.Get<int>("spawnY");
playerData.hair = reader.Get<int?>("hair"); playerData.hair = reader.Get<int?>("hair");
@ -104,23 +106,12 @@ namespace TShockAPI.DB
public bool SeedInitialData(User user) public bool SeedInitialData(User user)
{ {
var inventory = new StringBuilder(); var inventory = new StringBuilder();
for (int i = 0; i < NetItem.maxNetInventory; i++)
{ var items = TShock.ServerSideCharacterConfig.StartingInventory;
if (i > 0) if (items.Count < NetItem.MaxInventory)
{ items.AddRange(new NetItem[NetItem.MaxInventory - items.Count]);
inventory.Append("~");
} string initialItems = String.Join("~", items.Take(NetItem.MaxInventory));
if (i < TShock.ServerSideCharacterConfig.StartingInventory.Count)
{
var item = TShock.ServerSideCharacterConfig.StartingInventory[i];
inventory.Append(item.netID).Append(',').Append(item.stack).Append(',').Append(item.prefix);
}
else
{
inventory.Append("0,0,0");
}
}
string initialItems = inventory.ToString();
try try
{ {
database.Query("INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8);", database.Query("INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8);",
@ -162,7 +153,7 @@ namespace TShockAPI.DB
{ {
database.Query( database.Query(
"INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18);", "INSERT INTO tsCharacter (Account, Health, MaxHealth, Mana, MaxMana, Inventory, spawnX, spawnY, hair, hairDye, hairColor, pantsColor, shirtColor, underShirtColor, shoeColor, hideVisuals, skinColor, eyeColor, questsCompleted) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18);",
player.User.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); player.User.ID, playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor),TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor),TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -176,7 +167,7 @@ namespace TShockAPI.DB
{ {
database.Query( database.Query(
"UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18 WHERE Account = @5;", "UPDATE tsCharacter SET Health = @0, MaxHealth = @1, Mana = @2, MaxMana = @3, Inventory = @4, spawnX = @6, spawnY = @7, hair = @8, hairDye = @9, hairColor = @10, pantsColor = @11, shirtColor = @12, underShirtColor = @13, shoeColor = @14, hideVisuals = @15, skinColor = @16, eyeColor = @17, questsCompleted = @18 WHERE Account = @5;",
playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, NetItem.ToString(playerData.inventory), player.User.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished); playerData.health, playerData.maxHealth, playerData.mana, playerData.maxMana, String.Join("~", playerData.inventory), player.User.ID, player.TPlayer.SpawnX, player.TPlayer.SpawnY, player.TPlayer.hair, player.TPlayer.hairDye, TShock.Utils.EncodeColor(player.TPlayer.hairColor), TShock.Utils.EncodeColor(player.TPlayer.pantsColor), TShock.Utils.EncodeColor(player.TPlayer.shirtColor), TShock.Utils.EncodeColor(player.TPlayer.underShirtColor), TShock.Utils.EncodeColor(player.TPlayer.shoeColor), TShock.Utils.EncodeBitsByte(player.TPlayer.hideVisual), TShock.Utils.EncodeColor(player.TPlayer.skinColor), TShock.Utils.EncodeColor(player.TPlayer.eyeColor), player.TPlayer.anglerQuestsFinished);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)

View file

@ -120,11 +120,11 @@ namespace TShockAPI
TShock.ServerSideCharacterConfig = new ServerSideConfig TShock.ServerSideCharacterConfig = new ServerSideConfig
{ {
StartingInventory = StartingInventory =
new List<NetItem>() new List<NetItem>
{ {
new NetItem() {netID = -15, stack = 1, prefix = 0}, new NetItem(-15, 1, 0),
new NetItem() {netID = -13, stack = 1, prefix = 0}, new NetItem(-13, 1, 0),
new NetItem() {netID = -16, stack = 1, prefix = 0} new NetItem(-16, 1, 0)
} }
}; };
} }

View file

@ -1278,14 +1278,14 @@ namespace TShockAPI
// Players send a slot update packet for each inventory slot right after they've joined. // Players send a slot update packet for each inventory slot right after they've joined.
bool bypassTrashCanCheck = false; bool bypassTrashCanCheck = false;
if (plr == args.Player.Index && !args.Player.HasSentInventory && slot == NetItem.maxNetInventory) if (plr == args.Player.Index && !args.Player.HasSentInventory && slot == NetItem.MaxInventory)
{ {
args.Player.HasSentInventory = true; args.Player.HasSentInventory = true;
bypassTrashCanCheck = true; bypassTrashCanCheck = true;
} }
if (OnPlayerSlot(plr, slot, stack, prefix, type) || plr != args.Player.Index || slot < 0 || if (OnPlayerSlot(plr, slot, stack, prefix, type) || plr != args.Player.Index || slot < 0 ||
slot > NetItem.maxNetInventory) slot > NetItem.MaxInventory)
return true; return true;
if (args.Player.IgnoreSSCPackets) if (args.Player.IgnoreSSCPackets)
{ {

114
TShockAPI/NetItem.cs Normal file
View file

@ -0,0 +1,114 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Terraria;
namespace TShockAPI
{
/// <summary>
/// Represents an item.
/// </summary>
public struct NetItem
{
/// <summary>
/// The number of armor slots.
/// </summary>
public static readonly int ArmorSlots = 16;
/// <summary>
/// The number of dye slots.
/// </summary>
public static readonly int DyeSlots = 8;
/// <summary>
/// The inventory size.
/// </summary>
public static readonly int MaxInventory = 83;
private readonly int _netId;
private readonly byte _prefixId;
private readonly int _stack;
/// <summary>
/// Gets the net ID.
/// </summary>
public int NetId
{
get { return _netId; }
}
/// <summary>
/// Gets the prefix.
/// </summary>
public byte PrefixId
{
get { return _prefixId; }
}
/// <summary>
/// Gets the stack.
/// </summary>
public int Stack
{
get { return _stack; }
}
/// <summary>
/// Creates a new <see cref="NetItem"/>.
/// </summary>
/// <param name="netId">The net ID.</param>
/// <param name="stack">The stack.</param>
/// <param name="prefixId">The prefix ID.</param>
public NetItem(int netId, int stack, byte prefixId)
{
_netId = netId;
_stack = stack;
_prefixId = prefixId;
}
/// <summary>
/// Converts the <see cref="NetItem"/> to a string.
/// </summary>
/// <returns></returns>
public override string ToString()
{
return String.Format("{0},{1},{2}", _netId, _stack, _prefixId);
}
/// <summary>
/// Converts a string into a <see cref="NetItem"/>.
/// </summary>
/// <param name="str">The string.</param>
/// <exception cref="ArgumentNullException"/>
/// <exception cref="FormatException"/>
/// <returns></returns>
public static NetItem Parse(string str)
{
if (str == null)
throw new ArgumentNullException("str");
string[] comp = str.Split(',');
if (comp.Length != 3)
throw new FormatException("String does not contain three sections.");
int netId = Int32.Parse(comp[0]);
int stack = Int32.Parse(comp[1]);
byte prefixId = Byte.Parse(comp[2]);
return new NetItem(netId, stack, prefixId);
}
/// <summary>
/// Converts an <see cref="Item"/> into a <see cref="NetItem"/>.
/// </summary>
/// <param name="item">The <see cref="Item"/>.</param>
/// <returns></returns>
public static explicit operator NetItem(Item item)
{
return item == null
? new NetItem()
: new NetItem(item.netID, item.stack, item.prefix);
}
}
}

View file

@ -1072,7 +1072,7 @@ namespace TShockAPI
public class PlayerData public class PlayerData
{ {
public NetItem[] inventory = new NetItem[NetItem.maxNetInventory]; public NetItem[] inventory = new NetItem[NetItem.MaxInventory];
public int health = TShock.ServerSideCharacterConfig.StartingHealth; public int health = TShock.ServerSideCharacterConfig.StartingHealth;
public int maxHealth = TShock.ServerSideCharacterConfig.StartingHealth; public int maxHealth = TShock.ServerSideCharacterConfig.StartingHealth;
public int mana = TShock.ServerSideCharacterConfig.StartingMana; public int mana = TShock.ServerSideCharacterConfig.StartingMana;
@ -1094,7 +1094,7 @@ namespace TShockAPI
public PlayerData(TSPlayer player) public PlayerData(TSPlayer player)
{ {
for (int i = 0; i < NetItem.maxNetInventory; i++) for (int i = 0; i < NetItem.MaxInventory; i++)
{ {
this.inventory[i] = new NetItem(); this.inventory[i] = new NetItem();
} }
@ -1102,28 +1102,18 @@ namespace TShockAPI
for (int i = 0; i < TShock.ServerSideCharacterConfig.StartingInventory.Count; i++) for (int i = 0; i < TShock.ServerSideCharacterConfig.StartingInventory.Count; i++)
{ {
var item = TShock.ServerSideCharacterConfig.StartingInventory[i]; var item = TShock.ServerSideCharacterConfig.StartingInventory[i];
StoreSlot(i, item.netID, item.prefix, item.stack); StoreSlot(i, item.NetId, item.PrefixId, item.Stack);
} }
} }
public void StoreSlot(int slot, int netID, int prefix, int stack) public void StoreSlot(int slot, int netID, byte prefix, int stack)
{ {
if(slot > (this.inventory.Length - 1)) //if the slot is out of range then dont save if(slot > (this.inventory.Length - 1)) //if the slot is out of range then dont save
{ {
return; return;
} }
this.inventory[slot].netID = netID; this.inventory[slot] = new NetItem(netID, stack, prefix);
if (this.inventory[slot].netID != 0)
{
this.inventory[slot].stack = stack;
this.inventory[slot].prefix = prefix;
}
else
{
this.inventory[slot].stack = 0;
this.inventory[slot].prefix = 0;
}
} }
public void CopyCharacter(TSPlayer player) public void CopyCharacter(TSPlayer player)
@ -1157,75 +1147,21 @@ namespace TShockAPI
Item[] inventory = player.TPlayer.inventory; Item[] inventory = player.TPlayer.inventory;
Item[] armor = player.TPlayer.armor; Item[] armor = player.TPlayer.armor;
Item[] dye = player.TPlayer.dye; Item[] dye = player.TPlayer.dye;
for (int i = 0; i < NetItem.maxNetInventory; i++) for (int i = 0; i < NetItem.MaxInventory; i++)
{ {
if (i < NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)) if (i < NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots))
{ {
if (player.TPlayer.inventory[i] != null) this.inventory[i] = (NetItem)inventory[i];
}
else if (i < NetItem.MaxInventory - NetItem.DyeSlots)
{ {
this.inventory[i].netID = inventory[i].netID; var index = i - (NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots));
this.inventory[i] = (NetItem)armor[index];
} }
else else
{ {
this.inventory[i].netID = 0; var index = i - (NetItem.MaxInventory - NetItem.DyeSlots);
} this.inventory[i] = (NetItem)dye[index];
if (this.inventory[i].netID != 0)
{
this.inventory[i].stack = inventory[i].stack;
this.inventory[i].prefix = inventory[i].prefix;
}
else
{
this.inventory[i].stack = 0;
this.inventory[i].prefix = 0;
}
}
else if (i < NetItem.maxNetInventory - NetItem.dyeSlots)
{
var index = i - (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots));
if (player.TPlayer.armor[index] != null)
{
this.inventory[i].netID = armor[index].netID;
}
else
{
this.inventory[i].netID = 0;
}
if (this.inventory[i].netID != 0)
{
this.inventory[i].stack = armor[index].stack;
this.inventory[i].prefix = armor[index].prefix;
}
else
{
this.inventory[i].stack = 0;
this.inventory[i].prefix = 0;
}
}
else
{
var index = i - (NetItem.maxNetInventory - NetItem.dyeSlots);
if (player.TPlayer.dye[index] != null)
{
this.inventory[i].netID = dye[index].netID;
}
else
{
this.inventory[i].netID = 0;
}
if (this.inventory[i].netID != 0)
{
this.inventory[i].stack = dye[index].stack;
this.inventory[i].prefix = dye[index].prefix;
}
else
{
this.inventory[i].stack = 0;
this.inventory[i].prefix = 0;
}
} }
} }
} }
@ -1268,59 +1204,38 @@ namespace TShockAPI
else else
player.TPlayer.hideVisual.ClearAll(); player.TPlayer.hideVisual.ClearAll();
for (int i = 0; i < NetItem.maxNetInventory; i++) for (int i = 0; i < NetItem.MaxInventory; i++)
{ {
if (i < NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)) if (i < NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots))
{ {
if (this.inventory[i] != null) player.TPlayer.inventory[i].netDefaults(this.inventory[i].NetId);
{
player.TPlayer.inventory[i].netDefaults(this.inventory[i].netID);
}
else
{
player.TPlayer.inventory[i].netDefaults(0);
}
if (player.TPlayer.inventory[i].netID != 0) if (player.TPlayer.inventory[i].netID != 0)
{ {
player.TPlayer.inventory[i].stack = this.inventory[i].stack; player.TPlayer.inventory[i].stack = this.inventory[i].Stack;
player.TPlayer.inventory[i].prefix = (byte)this.inventory[i].prefix; player.TPlayer.inventory[i].prefix = this.inventory[i].PrefixId;
} }
} }
else if (i < NetItem.maxNetInventory - NetItem.dyeSlots) else if (i < NetItem.MaxInventory - NetItem.DyeSlots)
{ {
var index = i - (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)); var index = i - (NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots));
if (this.inventory[i] != null) player.TPlayer.armor[index].netDefaults(this.inventory[i].NetId);
{
player.TPlayer.armor[index].netDefaults(this.inventory[i].netID);
}
else
{
player.TPlayer.armor[index].netDefaults(0);
}
if (player.TPlayer.armor[index].netID != 0) if (player.TPlayer.armor[index].netID != 0)
{ {
player.TPlayer.armor[index].stack = this.inventory[i].stack; player.TPlayer.armor[index].stack = this.inventory[i].Stack;
player.TPlayer.armor[index].prefix = (byte)this.inventory[i].prefix; player.TPlayer.armor[index].prefix = (byte)this.inventory[i].PrefixId;
} }
} }
else else
{ {
var index = i - (NetItem.maxNetInventory - NetItem.dyeSlots); var index = i - (NetItem.MaxInventory - NetItem.DyeSlots);
if (this.inventory[i] != null) player.TPlayer.dye[index].netDefaults(this.inventory[i].NetId);
{
player.TPlayer.dye[index].netDefaults(this.inventory[i].netID);
}
else
{
player.TPlayer.dye[index].netDefaults(0);
}
if (player.TPlayer.dye[index].netID != 0) if (player.TPlayer.dye[index].netID != 0)
{ {
player.TPlayer.dye[index].stack = this.inventory[i].stack; player.TPlayer.dye[index].stack = this.inventory[i].Stack;
player.TPlayer.dye[index].prefix = (byte)this.inventory[i].prefix; player.TPlayer.dye[index].prefix = (byte)this.inventory[i].PrefixId;
} }
} }
} }
@ -1401,49 +1316,4 @@ namespace TShockAPI
NetMessage.SendData(39, player.Index, -1, "", 400); NetMessage.SendData(39, player.Index, -1, "", 400);
} }
} }
public class NetItem
{
public static readonly int maxNetInventory = 83;
public static readonly int armorSlots = 16;
public static readonly int dyeSlots = 8;
public int netID;
public int stack;
public int prefix;
public static string ToString(NetItem[] inventory)
{
StringBuilder items = new StringBuilder();
for (int i = 0; i < maxNetInventory; i++)
{
items.Append(inventory[i].netID).Append(",");
if (inventory[i].netID != 0)
items.Append(inventory[i].stack).Append(",").Append(inventory[i].prefix).Append("~");
else
items.Append("0,0~");
}
return items.ToString(0, items.Length - 1);
}
public static NetItem[] Parse(string data)
{
NetItem[] inventory = new NetItem[maxNetInventory];
int i;
for (i = 0; i < maxNetInventory; i++)
{
inventory[i] = new NetItem();
}
string[] items = data.Split('~');
i = 0;
foreach (string item in items)
{
string[] idata = item.Split(',');
inventory[i].netID = int.Parse(idata[0]);
inventory[i].stack = int.Parse(idata[1]);
inventory[i].prefix = int.Parse(idata[2]);
i++;
}
return inventory;
}
}
} }

View file

@ -162,9 +162,9 @@ namespace TShockAPI
{ {
Config = new ConfigFile(); Config = new ConfigFile();
ServerSideCharacterConfig = new ServerSideConfig(); ServerSideCharacterConfig = new ServerSideConfig();
ServerSideCharacterConfig.StartingInventory.Add(new NetItem { netID = -15, prefix = 0, stack = 1 }); ServerSideCharacterConfig.StartingInventory.Add(new NetItem(-15, 1, 0));
ServerSideCharacterConfig.StartingInventory.Add(new NetItem { netID = -13, prefix = 0, stack = 1 }); ServerSideCharacterConfig.StartingInventory.Add(new NetItem(-13, 1, 0));
ServerSideCharacterConfig.StartingInventory.Add(new NetItem { netID = -16, prefix = 0, stack = 1 }); ServerSideCharacterConfig.StartingInventory.Add(new NetItem(-16, 1, 0));
Order = 0; Order = 0;
instance = this; instance = this;
} }
@ -1844,9 +1844,9 @@ namespace TShockAPI
Item[] inventory = player.TPlayer.inventory; Item[] inventory = player.TPlayer.inventory;
Item[] armor = player.TPlayer.armor; Item[] armor = player.TPlayer.armor;
Item[] dye = player.TPlayer.dye; Item[] dye = player.TPlayer.dye;
for (int i = 0; i < NetItem.maxNetInventory; i++) for (int i = 0; i < NetItem.MaxInventory; i++)
{ {
if (i < NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)) if (i < NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots))
{ {
Item item = new Item(); Item item = new Item();
if (inventory[i] != null && inventory[i].netID != 0) if (inventory[i] != null && inventory[i].netID != 0)
@ -1863,10 +1863,10 @@ namespace TShockAPI
} }
} }
} }
else if(i < (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots))) else if(i < (NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots)))
{ {
Item item = new Item(); Item item = new Item();
var index = i - (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)); var index = i - (NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots));
if (armor[index] != null && armor[index].netID != 0) if (armor[index] != null && armor[index].netID != 0)
{ {
item.netDefaults(armor[index].netID); item.netDefaults(armor[index].netID);
@ -1881,10 +1881,10 @@ namespace TShockAPI
} }
} }
} }
else if (i < (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots))) else if (i < (NetItem.MaxInventory - (NetItem.ArmorSlots + NetItem.DyeSlots)))
{ {
Item item = new Item(); Item item = new Item();
var index = i - (NetItem.maxNetInventory - NetItem.dyeSlots); var index = i - (NetItem.MaxInventory - NetItem.DyeSlots);
if (dye[index] != null && dye[index].netID != 0) if (dye[index] != null && dye[index].netID != 0)
{ {
item.netDefaults(dye[index].netID); item.netDefaults(dye[index].netID);

View file

@ -84,6 +84,7 @@
<Compile Include="Hooks\PlayerHooks.cs" /> <Compile Include="Hooks\PlayerHooks.cs" />
<Compile Include="Hooks\RegionHooks.cs" /> <Compile Include="Hooks\RegionHooks.cs" />
<Compile Include="ILog.cs" /> <Compile Include="ILog.cs" />
<Compile Include="NetItem.cs" />
<Compile Include="SqlLog.cs" /> <Compile Include="SqlLog.cs" />
<Compile Include="TextLog.cs" /> <Compile Include="TextLog.cs" />
<Compile Include="PaginationTools.cs" /> <Compile Include="PaginationTools.cs" />
@ -188,7 +189,7 @@
</PropertyGroup> </PropertyGroup>
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>
<UserProperties BuildVersion_IncrementBeforeBuild="False" BuildVersion_StartDate="2011/6/17" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_BuildAction="Both" BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" /> <UserProperties BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" BuildVersion_BuildAction="Both" BuildVersion_BuildVersioningStyle="None.None.None.MonthAndDayStamp" BuildVersion_StartDate="2011/6/17" BuildVersion_IncrementBeforeBuild="False" />
</VisualStudio> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.