From 3d09b3efc00601cc0740de751d7926c84c163b4c Mon Sep 17 00:00:00 2001 From: NotAdam Date: Wed, 4 Jul 2018 19:28:54 +1000 Subject: [PATCH 1/2] unlockAction now takes u16 param, unlockAction debug command added --- src/servers/sapphire_zone/Actor/Player.cpp | 2 +- src/servers/sapphire_zone/Actor/Player.h | 2 +- .../sapphire_zone/DebugCommand/DebugCommandHandler.cpp | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index bd2fbaaa..8621da64 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -562,7 +562,7 @@ void Core::Entity::Player::changePosition( float x, float y, float z, float o ) m_queuedZoneing = boost::make_shared( getZoneId(), pos, Util::getTimeMs(), o ); } -void Core::Entity::Player::learnAction( uint8_t actionId ) +void Core::Entity::Player::learnAction( uint16_t actionId ) { uint16_t index; uint8_t value; diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index e0d9d645..2607852e 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -419,7 +419,7 @@ public: /*! update bitmask for how-to's seen */ void updateHowtosSeen( uint32_t howToId ); /*! learn an action / update the unlock bitmask. */ - void learnAction( uint8_t actionId ); + void learnAction( uint16_t actionId ); /*! learn a song / update the unlock bitmask. */ void learnSong( uint8_t songId, uint32_t itemId ); /*! check if an action is already unlocked in the bitmask. */ diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 38e30881..6b18689e 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -423,6 +423,13 @@ void Core::DebugCommandHandler::add( char * data, Entity::Player& player, boost: player.queuePacket( controlPacket );*/ } + else if( subCommand == "unlock" ) + { + uint32_t id; + + sscanf( params.c_str(), "%d", &id ); + player.learnAction( id ); + } else { player.sendUrgent( subCommand + " is not a valid ADD command." ); From 924c455f34803d53589e5dd31552cb2e8854ad51 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Wed, 4 Jul 2018 22:13:06 +1000 Subject: [PATCH 2/2] add packet injection back --- src/common/Network/GamePacketNew.h | 9 +++++++++ src/servers/sapphire_zone/Network/GameConnection.cpp | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) 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 ); } }