diff --git a/src/common/Network/GamePacketNew.h b/src/common/Network/GamePacketNew.h index 19227cd5..f45835dc 100644 --- a/src/common/Network/GamePacketNew.h +++ b/src/common/Network/GamePacketNew.h @@ -246,6 +246,15 @@ public: m_segHdr.size = size; }; + FFXIVRawPacket( char* data, uint16_t size ) : + m_data( std::vector< uint8_t >( size ) ) + { + auto segmentHdrSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ); + + memcpy( &m_data[0], data + segmentHdrSize, size - segmentHdrSize ); + memcpy( &m_segHdr, data, segmentHdrSize ); + } + uint32_t getContentSize() override { return m_data.size(); diff --git a/src/servers/sapphire_zone/Network/GameConnection.cpp b/src/servers/sapphire_zone/Network/GameConnection.cpp index 264f00a6..d29022e5 100644 --- a/src/servers/sapphire_zone/Network/GameConnection.cpp +++ b/src/servers/sapphire_zone/Network/GameConnection.cpp @@ -362,8 +362,8 @@ void Core::Network::GameConnection::injectPacket( const std::string& packetpath, if( pSize == 0 ) return; - // TODO: fix injection for new packets - //queueOutPacket( GamePacketPtr( new GamePacket( packet + k, pSize, false ) ) ); + queueOutPacket( FFXIVPacketBasePtr( new FFXIVRawPacket( packet + k, pSize ) ) ); + k += ( pSize ); } }