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\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);
|
||||||
|
|
|
@ -236,12 +236,9 @@ 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.itemPackage = itemPackage;
|
||||||
this.owner = owner;
|
this.slot = slot;
|
||||||
this.itemPackage = itemPackage;
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue