mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Moved SendItemPackage to character class. Added a flag check after a bazaar purchase is made. Discovered a flag in InventoryBeginChangePacket that either modifies the client package or clears and refills it. Implemented this mode for a bunch of "SendFullInventory" methods.
This commit is contained in:
		| @@ -146,7 +146,7 @@ | |||||||
|     <Compile Include="packets\receive\GroupCreatedPacket.cs" /> |     <Compile Include="packets\receive\GroupCreatedPacket.cs" /> | ||||||
|     <Compile Include="packets\receive\HandshakePacket.cs" /> |     <Compile Include="packets\receive\HandshakePacket.cs" /> | ||||||
|     <Compile Include="packets\receive\LangaugeCodePacket.cs" /> |     <Compile Include="packets\receive\LangaugeCodePacket.cs" /> | ||||||
|     <Compile Include="packets\receive\ItemPackageRequestPacket.cs" /> |     <Compile Include="packets\receive\UpdateItemPackagePacket.cs" /> | ||||||
|     <Compile Include="packets\receive\ParameterDataRequestPacket.cs" /> |     <Compile Include="packets\receive\ParameterDataRequestPacket.cs" /> | ||||||
|     <Compile Include="packets\receive\recruitment\RecruitmentDetailsRequestPacket.cs" /> |     <Compile Include="packets\receive\recruitment\RecruitmentDetailsRequestPacket.cs" /> | ||||||
|     <Compile Include="packets\receive\recruitment\RecruitmentSearchRequestPacket.cs" /> |     <Compile Include="packets\receive\recruitment\RecruitmentSearchRequestPacket.cs" /> | ||||||
|   | |||||||
| @@ -1073,6 +1073,8 @@ namespace FFXIVClassic_Map_Server | |||||||
|                 buyer.GetItemPackage(Inventory.CURRENCY_CRYSTALS).RemoveItem(1000001, cost); |                 buyer.GetItemPackage(Inventory.CURRENCY_CRYSTALS).RemoveItem(1000001, cost); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             bazaar.CheckBazaarFlags(); | ||||||
|  |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ using FFXIVClassic_Map_Server.actors.group; | |||||||
| using FFXIVClassic_Map_Server.Actors.Chara; | using FFXIVClassic_Map_Server.Actors.Chara; | ||||||
| using FFXIVClassic_Map_Server.dataobjects; | using FFXIVClassic_Map_Server.dataobjects; | ||||||
| using FFXIVClassic_Map_Server.packets.send.actor; | using FFXIVClassic_Map_Server.packets.send.actor; | ||||||
|  | using FFXIVClassic_Map_Server.packets.send.actor.inventory; | ||||||
| using FFXIVClassic_Map_Server.utils; | using FFXIVClassic_Map_Server.utils; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
|  |  | ||||||
| @@ -125,6 +126,16 @@ namespace FFXIVClassic_Map_Server.Actors | |||||||
|  |  | ||||||
|         #region Inventory |         #region Inventory | ||||||
|  |  | ||||||
|  |         public void SendItemPackage(Player player, uint id) | ||||||
|  |         { | ||||||
|  |             if (!itemPackages.ContainsKey((ushort)id)) | ||||||
|  |                 return; | ||||||
|  |  | ||||||
|  |             player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true)); | ||||||
|  |             itemPackages[(ushort)id].SendFullInventory(player); | ||||||
|  |             player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         public void AddItem(uint catalogID) |         public void AddItem(uint catalogID) | ||||||
|         { |         { | ||||||
|             AddItem(catalogID, 1); |             AddItem(catalogID, 1); | ||||||
|   | |||||||
| @@ -552,7 +552,7 @@ namespace FFXIVClassic_Map_Server.Actors | |||||||
|             //GetSpawnPackets(actorId, spawnType).DebugPrintPacket(); |             //GetSpawnPackets(actorId, spawnType).DebugPrintPacket(); | ||||||
|  |  | ||||||
|             #region Inventory & Equipment |             #region Inventory & Equipment | ||||||
|             QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId)); |             QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true)); | ||||||
|             itemPackages[Inventory.NORMAL].SendFullInventory(this); |             itemPackages[Inventory.NORMAL].SendFullInventory(this); | ||||||
|             itemPackages[Inventory.CURRENCY_CRYSTALS].SendFullInventory(this); |             itemPackages[Inventory.CURRENCY_CRYSTALS].SendFullInventory(this); | ||||||
|             itemPackages[Inventory.KEYITEMS].SendFullInventory(this); |             itemPackages[Inventory.KEYITEMS].SendFullInventory(this); | ||||||
| @@ -1630,7 +1630,9 @@ namespace FFXIVClassic_Map_Server.Actors | |||||||
|         public void SendMyTradeToPlayer(Player player) |         public void SendMyTradeToPlayer(Player player) | ||||||
|         { |         { | ||||||
|             Inventory tradeInventory = new Inventory(this, 4, Inventory.TRADE); |             Inventory tradeInventory = new Inventory(this, 4, Inventory.TRADE); | ||||||
|  |             player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true)); | ||||||
|             tradeInventory.SendFullInventory(player); |             tradeInventory.SendFullInventory(player); | ||||||
|  |             player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public void SendDataPacket(params object[] parameters) |         public void SendDataPacket(params object[] parameters) | ||||||
| @@ -1817,16 +1819,6 @@ namespace FFXIVClassic_Map_Server.Actors | |||||||
|             chocoboAppearance = appearanceId; |             chocoboAppearance = appearanceId; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public void SendItemPackage(Player player, uint id) |  | ||||||
|         { |  | ||||||
|             if (!itemPackages.ContainsKey((ushort)id)) |  | ||||||
|                 return; |  | ||||||
|  |  | ||||||
|             player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId)); |  | ||||||
|             itemPackages[(ushort)id].SendFullInventory(player); |  | ||||||
|             player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId)); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         public Retainer SpawnMyRetainer(Npc bell, int retainerIndex) |         public Retainer SpawnMyRetainer(Npc bell, int retainerIndex) | ||||||
|         { |         { | ||||||
|             Retainer retainer = Database.LoadRetainer(this, retainerIndex); |             Retainer retainer = Database.LoadRetainer(this, retainerIndex); | ||||||
|   | |||||||
| @@ -235,14 +235,11 @@ namespace FFXIVClassic_Map_Server.dataobjects | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         public void RefreshPositioning(Character owner, ushort itemPackage, ushort slot) |         public void RefreshPositioning(Character owner, ushort itemPackage, ushort slot) | ||||||
|         { |  | ||||||
|             lock (owner.GetItemPackage(itemPackage)) |  | ||||||
|         { |         { | ||||||
|             this.owner = owner; |             this.owner = owner; | ||||||
|             this.itemPackage = itemPackage; |             this.itemPackage = itemPackage; | ||||||
|             this.slot = slot;             |             this.slot = slot;             | ||||||
|         } |         } | ||||||
|         } |  | ||||||
|  |  | ||||||
|         public void SetExclusive(bool isExclusive) |         public void SetExclusive(bool isExclusive) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -7,16 +7,13 @@ namespace  FFXIVClassic_Map_Server.packets.send.actor.inventory | |||||||
|         public const ushort OPCODE = 0x016D; |         public const ushort OPCODE = 0x016D; | ||||||
|         public const uint PACKET_SIZE = 0x28; |         public const uint PACKET_SIZE = 0x28; | ||||||
|  |  | ||||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId) |         public static SubPacket BuildPacket(uint playerActorID, bool clearItemPackage = false) | ||||||
|         { |         { | ||||||
|             byte[] data = new byte[8]; |             byte[] data = new byte[8]; | ||||||
|             data[0] = 2; |  | ||||||
|             return new SubPacket(OPCODE, sourceActorId, data); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         public static SubPacket BuildPacket(uint playerActorID) |             if (clearItemPackage) | ||||||
|         { |                 data[0] = 2; | ||||||
|             byte[] data = new byte[8]; |  | ||||||
|             return new SubPacket(OPCODE, playerActorID, data); |             return new SubPacket(OPCODE, playerActorID, data); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user