mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Added in "LinkedSlot" info in the InventoryItems. The slot sent when using "SendUpdateAsItemPackage" differ from a normal update. This was causing a crash. Checking is working again, trade is working up to the final transaction.
This commit is contained in:
parent
42ee97d467
commit
d49516c03e
@ -189,16 +189,28 @@ namespace FFXIVClassic_Map_Server.actors.chara
|
||||
{
|
||||
List<InventoryItem> items = new List<InventoryItem>();
|
||||
|
||||
for (int i = 0; i < contentList.Length; i++)
|
||||
for (ushort i = 0; i < contentList.Length; i++)
|
||||
{
|
||||
if (contentList[i] == EMPTY)
|
||||
continue;
|
||||
|
||||
InventoryItem item = GetItem(contentList[i]);
|
||||
item.linkSlot = i; //We have to set the linkSlot as this is the position in the Referenced IP, not the original IP it's linked from.
|
||||
items.Add(GetItem(contentList[i]));
|
||||
}
|
||||
|
||||
targetPlayer.QueuePacket(InventorySetBeginPacket.BuildPacket(owner.actorId, destinationCapacity, destinationCode));
|
||||
SendItemPackets(targetPlayer, items);
|
||||
targetPlayer.QueuePacket(InventorySetEndPacket.BuildPacket(owner.actorId));
|
||||
|
||||
//Clean Up linkSlots
|
||||
for (ushort i = 0; i < contentList.Length; i++)
|
||||
{
|
||||
if (contentList[i] == EMPTY)
|
||||
continue;
|
||||
InventoryItem item = GetItem(contentList[i]);
|
||||
item.linkSlot = 0xFFFF;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -42,6 +42,7 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
||||
public readonly ItemData itemData;
|
||||
public Character owner = null;
|
||||
public ushort slot = 0xFFFF;
|
||||
public ushort linkSlot = 0xFFFF;
|
||||
public ushort itemPackage = 0xFFFF;
|
||||
|
||||
public class ItemModifier
|
||||
@ -170,7 +171,12 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
||||
binWriter.Write((UInt64)uniqueId);
|
||||
binWriter.Write((Int32)quantity);
|
||||
binWriter.Write((UInt32)itemId);
|
||||
|
||||
if (linkSlot == 0xFFFF)
|
||||
binWriter.Write((UInt16)slot);
|
||||
else
|
||||
binWriter.Write((UInt16)linkSlot);
|
||||
linkSlot = 0xFFFF;
|
||||
|
||||
binWriter.Write((Byte)dealingVal);
|
||||
binWriter.Write((Byte)dealingMode);
|
||||
|
@ -30,10 +30,6 @@ function onEventStarted(player, actor, triggerName)
|
||||
|
||||
tradeOffering = player:GetTradeOfferings();
|
||||
|
||||
if (player.actorId == 0xA6) then
|
||||
return;
|
||||
end
|
||||
|
||||
while (true) do
|
||||
widgetOpen, chosenOperation, tradeSlot, itemActor, quantity, itemPackageId, itemSlot = callClientFunction(player, "delegateCommand", GetStaticActor("TradeExecuteCommand"), "processUpdateTradeCommandTrayData");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user