diff --git a/FFXIVClassic Map Server/Database.cs b/FFXIVClassic Map Server/Database.cs index 3af00ec1..6c4afeaf 100644 --- a/FFXIVClassic Map Server/Database.cs +++ b/FFXIVClassic Map Server/Database.cs @@ -647,7 +647,7 @@ namespace FFXIVClassic_Lobby_Server itemId, quantity, slot, - isUntradeable, + itemType, quality, durability, spiritBind, @@ -677,7 +677,7 @@ namespace FFXIVClassic_Lobby_Server byte itemType = reader.GetByte(4); byte qualityNumber = reader.GetByte(5); - uint durability = reader.GetUInt32(6); + int durability = reader.GetInt32(6); ushort spiritBind = reader.GetUInt16(7); byte materia1 = reader.GetByte(8); @@ -701,7 +701,7 @@ namespace FFXIVClassic_Lobby_Server return items; } - public static InventoryItem addItem(Player player, uint itemId, int quantity, byte quality, byte itemType, uint durability, ushort type) + public static InventoryItem addItem(Player player, uint itemId, int quantity, byte quality, byte itemType, int durability, ushort type) { InventoryItem insertedItem = null; @@ -715,9 +715,9 @@ namespace FFXIVClassic_Lobby_Server string query = @" INSERT INTO server_items - (itemId, quality, isUntradeable, durability) + (itemId, quality, itemType, durability) VALUES - (@itemId, @quality, @isUntradeable, @durability); + (@itemId, @quality, @itemType, @durability); "; MySqlCommand cmd = new MySqlCommand(query, conn); diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj index e911d452..4cfb757a 100644 --- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj +++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj @@ -31,6 +31,7 @@ TRACE prompt 4 + true diff --git a/FFXIVClassic Map Server/actors/chara/player/Inventory.cs b/FFXIVClassic Map Server/actors/chara/player/Inventory.cs index a2ac0f03..a331a950 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Inventory.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Inventory.cs @@ -119,7 +119,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player //New item that spilled over while (quantityCount > 0) { - InventoryItem addedItem = Database.addItem(owner, itemId, Math.Min(quantityCount, 5), quality, gItem.isExclusive ? (byte)0x3 : (byte)0x0, 100, inventoryCode); + InventoryItem addedItem = Database.addItem(owner, itemId, Math.Min(quantityCount, 5), quality, gItem.isExclusive ? (byte)0x3 : (byte)0x0, gItem.durability, inventoryCode); list.Add(addedItem); diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index d5ba6cbd..15c726d6 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -635,6 +635,35 @@ namespace FFXIVClassic_Map_Server.Actors //zone.broadcastPacketAroundActor(this, worldMasterMessage); } + public void graphicChange(int slot, InventoryItem invItem) + { + Item item = Server.getItemGamedata(invItem.itemId); + + if (item == null) + { + + } + else if (item is EquipmentItem) + { + EquipmentItem eqItem = (EquipmentItem)item; + + uint graphicId; + + if (eqItem.graphicsWeaponId == null || eqItem.graphicsEquipmentId == null || eqItem.graphicsVariantId == null) + graphicId = 1025; + else + { + graphicId = + eqItem.graphicsWeaponId << 20 | + eqItem.graphicsEquipmentId << 10 | + eqItem.graphicsVariantId << 5 | + eqItem.graphicsColorId << 5; + } + appearanceIds[BODYGEAR] = graphicId; + broadcastPacket(createAppearancePacket(actorId), true); + } + } + public Inventory getInventory(ushort type) { if (inventories.ContainsKey(type)) diff --git a/FFXIVClassic Map Server/dataobjects/InventoryItem.cs b/FFXIVClassic Map Server/dataobjects/InventoryItem.cs index 49514ade..74117b4a 100644 --- a/FFXIVClassic Map Server/dataobjects/InventoryItem.cs +++ b/FFXIVClassic Map Server/dataobjects/InventoryItem.cs @@ -18,7 +18,7 @@ namespace FFXIVClassic_Map_Server.dataobjects public byte itemType; public byte quality = 1; - public uint durability = 0; + public int durability = 0; public ushort spiritbind = 0; public byte materia1 = 0; @@ -39,7 +39,7 @@ namespace FFXIVClassic_Map_Server.dataobjects itemType = gItem.isExclusive ? (byte)0x3 : (byte)0x0; } - public InventoryItem(uint uniqueId, uint itemId, int quantity, ushort slot, byte itemType, byte qualityNumber, uint durability, ushort spiritbind, byte materia1, byte materia2, byte materia3, byte materia4, byte materia5) + public InventoryItem(uint uniqueId, uint itemId, int quantity, ushort slot, byte itemType, byte qualityNumber, int durability, ushort spiritbind, byte materia1, byte materia2, byte materia3, byte materia4, byte materia5) { this.uniqueId = uniqueId; this.itemId = itemId;