mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-21 20:27:47 +00: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:
parent
f5ea82f735
commit
08c5980b22
6 changed files with 24 additions and 25 deletions
|
@ -146,7 +146,7 @@
|
|||
<Compile Include="packets\receive\GroupCreatedPacket.cs" />
|
||||
<Compile Include="packets\receive\HandshakePacket.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\recruitment\RecruitmentDetailsRequestPacket.cs" />
|
||||
<Compile Include="packets\receive\recruitment\RecruitmentSearchRequestPacket.cs" />
|
||||
|
|
|
@ -1073,6 +1073,8 @@ namespace FFXIVClassic_Map_Server
|
|||
buyer.GetItemPackage(Inventory.CURRENCY_CRYSTALS).RemoveItem(1000001, cost);
|
||||
}
|
||||
|
||||
bazaar.CheckBazaarFlags();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ using FFXIVClassic_Map_Server.actors.group;
|
|||
using FFXIVClassic_Map_Server.Actors.Chara;
|
||||
using FFXIVClassic_Map_Server.dataobjects;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor.inventory;
|
||||
using FFXIVClassic_Map_Server.utils;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
@ -125,6 +126,16 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
|
||||
#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)
|
||||
{
|
||||
AddItem(catalogID, 1);
|
||||
|
|
|
@ -552,7 +552,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
//GetSpawnPackets(actorId, spawnType).DebugPrintPacket();
|
||||
|
||||
#region Inventory & Equipment
|
||||
QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId));
|
||||
QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true));
|
||||
itemPackages[Inventory.NORMAL].SendFullInventory(this);
|
||||
itemPackages[Inventory.CURRENCY_CRYSTALS].SendFullInventory(this);
|
||||
itemPackages[Inventory.KEYITEMS].SendFullInventory(this);
|
||||
|
@ -1630,7 +1630,9 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
public void SendMyTradeToPlayer(Player player)
|
||||
{
|
||||
Inventory tradeInventory = new Inventory(this, 4, Inventory.TRADE);
|
||||
player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true));
|
||||
tradeInventory.SendFullInventory(player);
|
||||
player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId));
|
||||
}
|
||||
|
||||
public void SendDataPacket(params object[] parameters)
|
||||
|
@ -1817,16 +1819,6 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
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)
|
||||
{
|
||||
Retainer retainer = Database.LoadRetainer(this, retainerIndex);
|
||||
|
|
|
@ -236,12 +236,9 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
|||
|
||||
public void RefreshPositioning(Character owner, ushort itemPackage, ushort slot)
|
||||
{
|
||||
lock (owner.GetItemPackage(itemPackage))
|
||||
{
|
||||
this.owner = owner;
|
||||
this.itemPackage = itemPackage;
|
||||
this.slot = slot;
|
||||
}
|
||||
this.owner = owner;
|
||||
this.itemPackage = itemPackage;
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
public void SetExclusive(bool isExclusive)
|
||||
|
|
|
@ -7,16 +7,13 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
|
|||
public const ushort OPCODE = 0x016D;
|
||||
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];
|
||||
data[0] = 2;
|
||||
return new SubPacket(OPCODE, sourceActorId, data);
|
||||
}
|
||||
|
||||
public static SubPacket BuildPacket(uint playerActorID)
|
||||
{
|
||||
byte[] data = new byte[8];
|
||||
if (clearItemPackage)
|
||||
data[0] = 2;
|
||||
|
||||
return new SubPacket(OPCODE, playerActorID, data);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue