mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-25 11:07:45 +00:00
Update PacketHandlers.cpp
This commit is contained in:
parent
55beb4f6ab
commit
9622ba7229
1 changed files with 0 additions and 118 deletions
|
@ -931,121 +931,3 @@ void Sapphire::Network::GameConnection::diveHandler( const Packets::FFXIVARR_PAC
|
||||||
setPos->data().unknown1 = 0;
|
setPos->data().unknown1 = 0;
|
||||||
player.queuePacket( setPos ); // need delay, same as above.
|
player.queuePacket( setPos ); // need delay, same as above.
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also used for gearsets
|
|
||||||
void Sapphire::Network::GameConnection::inventoryEquipRecommendedItemsHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
|
|
||||||
{
|
|
||||||
const auto packet = ZoneChannelPacket< Client::FFXIVInventoryEquipRecommendedItemsHandler >( inPacket );
|
|
||||||
const auto sequence = player.getNextInventorySequence();
|
|
||||||
|
|
||||||
// Loop over all swapped pieces
|
|
||||||
for (int slot = 0; slot < 14; slot++ )
|
|
||||||
{
|
|
||||||
const auto fromSlot = packet.data().containerIndex[ slot ];
|
|
||||||
const auto fromContainer = packet.data().storageId[ slot ];
|
|
||||||
|
|
||||||
player.sendDebug( "Container: {} ", fromContainer );
|
|
||||||
player.sendDebug( "Slot: {} ", fromSlot );
|
|
||||||
|
|
||||||
const auto fromItem = fromSlot == -1 ? nullptr : player.getItemAt( fromContainer, fromSlot );
|
|
||||||
const auto equippedItem = player.getItemAt( Common::GearSet0, slot );
|
|
||||||
|
|
||||||
if ( fromItem )
|
|
||||||
{
|
|
||||||
auto slotUpdate = std::make_shared< UpdateInventorySlotPacket >( player.getId(), fromSlot, fromContainer, *fromItem, slot );
|
|
||||||
player.queuePacket( slotUpdate );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( equippedItem )
|
|
||||||
{
|
|
||||||
auto slotUpdate2 = std::make_shared< UpdateInventorySlotPacket >( player.getId(), slot, Common::GearSet0, *equippedItem, slot + 1 );
|
|
||||||
player.queuePacket( slotUpdate2 );
|
|
||||||
|
|
||||||
//player.updateModels( static_cast< Common::GearSetSlot >( slot ), equippedItem, true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loop over all the changed items
|
|
||||||
for (int slot = 0; slot < 14; slot++ )
|
|
||||||
{
|
|
||||||
const auto fromSlot = packet.data().containerIndex[ slot ];
|
|
||||||
const auto fromContainer = packet.data().storageId[ slot ];
|
|
||||||
|
|
||||||
if ( fromContainer == Common::GearSet0 )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const auto fromItem = fromSlot == -1 ? nullptr : player.getItemAt( fromContainer, fromSlot );
|
|
||||||
const auto equippedItem = player.getItemAt( Common::GearSet0, slot );
|
|
||||||
|
|
||||||
if ( fromItem && equippedItem )
|
|
||||||
{
|
|
||||||
auto invTransPacket = makeZonePacket< Server::FFXIVIpcInventoryTransaction >( player.getId() );
|
|
||||||
invTransPacket->data().sequence = sequence;
|
|
||||||
invTransPacket->data().ownerId = player.getId();
|
|
||||||
invTransPacket->data().storageId = Common::GearSet0;
|
|
||||||
invTransPacket->data().catalogId = fromItem->getId();
|
|
||||||
invTransPacket->data().stackSize = fromItem->getStackSize();
|
|
||||||
invTransPacket->data().slotId = slot;
|
|
||||||
invTransPacket->data().type = Common::InventoryOperation::Swap;
|
|
||||||
player.queuePacket( invTransPacket );
|
|
||||||
|
|
||||||
player.swapItem( fromContainer, fromSlot, Common::GearSet0, slot );
|
|
||||||
|
|
||||||
//player.updateGearContainer( slot, fromItem );
|
|
||||||
//player.updateContainer( fromContainer, fromSlot, equippedItem );
|
|
||||||
}
|
|
||||||
else if ( fromItem && !equippedItem )
|
|
||||||
{
|
|
||||||
auto invTransPacket = makeZonePacket< Server::FFXIVIpcInventoryTransaction >( player.getId() );
|
|
||||||
invTransPacket->data().sequence = sequence;
|
|
||||||
invTransPacket->data().ownerId = player.getId();
|
|
||||||
invTransPacket->data().storageId = Common::GearSet0;
|
|
||||||
invTransPacket->data().catalogId = fromItem->getId();
|
|
||||||
invTransPacket->data().stackSize = fromItem->getStackSize();
|
|
||||||
invTransPacket->data().slotId = slot;
|
|
||||||
invTransPacket->data().type = Common::InventoryOperation::Move;
|
|
||||||
player.queuePacket( invTransPacket );
|
|
||||||
|
|
||||||
player.moveItem( fromContainer, fromSlot, Common::GearSet0, slot, false );
|
|
||||||
}
|
|
||||||
else if ( !fromItem && equippedItem )
|
|
||||||
{
|
|
||||||
player.equipItem( static_cast< Common::GearSetSlot >( slot ), equippedItem, false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transaction finished
|
|
||||||
auto ackPacket = makeZonePacket< Server::FFXIVIpcInventoryTransactionFinish >( player.getId() );
|
|
||||||
ackPacket->data().sequenceId = sequence;
|
|
||||||
ackPacket->data().sequenceId1 = sequence;
|
|
||||||
ackPacket->data().padding = 3298534884017;
|
|
||||||
|
|
||||||
// Send the gear inventory
|
|
||||||
player.sendGearInventory();
|
|
||||||
|
|
||||||
// Send the player stats
|
|
||||||
player.sendStats();
|
|
||||||
|
|
||||||
// Send the player model
|
|
||||||
player.sendModel();
|
|
||||||
|
|
||||||
// Send status effect update
|
|
||||||
auto effectListPacket = makeZonePacket< Server::FFXIVIpcStatusEffectList >( player.getId() );
|
|
||||||
effectListPacket->data().classId = static_cast< uint8_t > ( player.getClass() );
|
|
||||||
effectListPacket->data().level1 = player.getLevel();
|
|
||||||
effectListPacket->data().level = player.getLevel();
|
|
||||||
effectListPacket->data().current_hp = player.getMaxHp();
|
|
||||||
effectListPacket->data().current_mp = player.getMaxMp();
|
|
||||||
effectListPacket->data().max_hp = player.getMaxHp();
|
|
||||||
effectListPacket->data().max_mp = player.getMaxMp();
|
|
||||||
player.sendToInRangeSet( effectListPacket, true );
|
|
||||||
|
|
||||||
// Send class info
|
|
||||||
auto classInfoPacket = makeZonePacket< FFXIVIpcUpdateClassInfo >( player.getId() );
|
|
||||||
classInfoPacket->data().classId = static_cast< uint8_t > ( player.getClass() );
|
|
||||||
classInfoPacket->data().level1 = player.getLevel();
|
|
||||||
classInfoPacket->data().level = player.getLevel();
|
|
||||||
classInfoPacket->data().nextLevelIndex = player.getLevel();
|
|
||||||
classInfoPacket->data().currentExp = player.getExp();
|
|
||||||
player.queuePacket( classInfoPacket );
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue