mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-25 02:57: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;
|
||||
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