From 98e7873afe94e824f9fcdb6a85f246f6c829f6fe Mon Sep 17 00:00:00 2001 From: Minho Kang Date: Thu, 17 Aug 2017 23:48:47 +0900 Subject: [PATCH 1/8] Remove VS2015 boost compiler from CMake This changes let CMake determine which boost compiler to use and therefore allowing it to use toolchain other than VS2015. --- CMakeLists.txt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7ecee17..acb43b44 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,16 +2,14 @@ cmake_minimum_required(VERSION 2.6) project (Sapphire) set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) - + set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) - + set(PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include) # boost stuff -if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") - set(Boost_COMPILER "-vc140") -endif() +# set(Boost_DEBUG 1) if(NOT SAPPHIRE_BOOST_VER) set(SAPPHIRE_BOOST_VER 1.60.0) @@ -20,6 +18,6 @@ set(SAPPHIRE_BOOST_FOLDER_NAME boost_1_60_0) include_directories("${PROJECT_INCLUDE_DIR}") include_directories("${PROJECT_SOURCE_DIR}") - + add_subdirectory("src/servers") add_subdirectory("src/libraries/sapphire/datReader") From e9a576353302cb9834d8c514a953c6d2822056d2 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 17:30:00 +0200 Subject: [PATCH 2/8] Changed handlers to take a const& instead of a shared_ptr of inPacket --- src/servers/Server_Common/GamePacket.cpp | 2 +- src/servers/Server_Common/GamePacket.h | 16 ++-- src/servers/Server_Zone/ActionHandler.cpp | 18 ++-- src/servers/Server_Zone/CFHandlers.cpp | 26 +++--- src/servers/Server_Zone/EventHandlers.cpp | 50 +++++------ src/servers/Server_Zone/GMCommandHandlers.cpp | 20 +++-- src/servers/Server_Zone/GameConnection.cpp | 2 +- src/servers/Server_Zone/GameConnection.h | 4 +- src/servers/Server_Zone/InventoryHandler.cpp | 16 ++-- src/servers/Server_Zone/PacketHandlers.cpp | 84 +++++++++---------- src/servers/Server_Zone/SkillHandler.cpp | 8 +- 11 files changed, 124 insertions(+), 122 deletions(-) diff --git a/src/servers/Server_Common/GamePacket.cpp b/src/servers/Server_Common/GamePacket.cpp index 180ccfec..9618eaa8 100644 --- a/src/servers/Server_Common/GamePacket.cpp +++ b/src/servers/Server_Common/GamePacket.cpp @@ -94,7 +94,7 @@ void Core::Network::Packets::GamePacket::savePacket() } -std::string Core::Network::Packets::GamePacket::toString() +std::string Core::Network::Packets::GamePacket::toString() const { std::string str = "\n"; diff --git a/src/servers/Server_Common/GamePacket.h b/src/servers/Server_Common/GamePacket.h index d4bf27c3..f74ef798 100644 --- a/src/servers/Server_Common/GamePacket.h +++ b/src/servers/Server_Common/GamePacket.h @@ -20,17 +20,17 @@ public: GamePacket( void ); ~GamePacket( void ); - uint16_t getSize() + uint16_t getSize() const { return m_segHdr.size; } - uint16_t getType() + uint16_t getType() const { return m_segHdr.type; } - uint16_t getSubType() + uint16_t getSubType() const { return m_subType; } @@ -42,9 +42,9 @@ public: } template - T getValAt( uint16_t pos ) + T getValAt( uint16_t pos ) const { - return *reinterpret_cast< T* >( &m_dataBuf[0] + pos ); + return *reinterpret_cast< const T* >( &m_dataBuf[0] + pos ); } void setBytesAt( uint16_t offset, uint8_t * bytes, uint16_t length ) @@ -52,9 +52,9 @@ public: memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + offset ), bytes, length ); } - char * getStringAt( uint16_t pos ) + const char * getStringAt( uint16_t pos ) const { - return reinterpret_cast< char* >( &m_dataBuf[0] + pos ); + return reinterpret_cast< const char* >( &m_dataBuf[0] + pos ); } void setStringAt( uint16_t pos, const std::string& str ) @@ -69,7 +69,7 @@ public: void setHeader( uint16_t size, uint16_t type, uint32_t id1, uint32_t id2, uint16_t subType, uint32_t unknown = 0xFED2E000 ); - std::string toString(); + std::string toString() const; void savePacket(); diff --git a/src/servers/Server_Zone/ActionHandler.cpp b/src/servers/Server_Zone/ActionHandler.cpp index 03d46e66..a6f0fa60 100644 --- a/src/servers/Server_Zone/ActionHandler.cpp +++ b/src/servers/Server_Zone/ActionHandler.cpp @@ -54,15 +54,15 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::actionHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::actionHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint16_t commandId = pInPacket->getValAt< uint16_t >( 0x20 ); - uint64_t param1 = pInPacket->getValAt< uint64_t >( 0x24 ); - uint32_t param11 = pInPacket->getValAt< uint32_t >( 0x24 ); - uint32_t param12 = pInPacket->getValAt< uint32_t >( 0x28 ); - uint32_t param2 = pInPacket->getValAt< uint32_t >( 0x2c ); - uint64_t param3 = pInPacket->getValAt< uint64_t >( 0x38 ); + uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 ); + uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 ); + uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 ); + uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 ); + uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2c ); + uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 ); g_log.debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " + boost::str( boost::format( "%|04X|" ) % ( uint32_t ) ( commandId & 0xFFFF ) ) + @@ -107,7 +107,7 @@ void Core::Network::GameConnection::actionHandler( Core::Network::Packets::GameP case 0x03: // Change target { - uint64_t targetId = pInPacket->getValAt< uint64_t >( 0x24 ); + uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); pPlayer->changeTarget( targetId ); break; } @@ -121,7 +121,7 @@ void Core::Network::GameConnection::actionHandler( Core::Network::Packets::GameP case 0x1F4: // emote { uint64_t targetId = pPlayer->getTargetId(); - uint32_t emoteId = pInPacket->getValAt< uint32_t >( 0x24 ); + uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 ); pPlayer->sendToInRangeSet( ActorControlPacket144( pPlayer->getId(), Emote, emoteId, 0, 0, 0, targetId ) ); break; diff --git a/src/servers/Server_Zone/CFHandlers.cpp b/src/servers/Server_Zone/CFHandlers.cpp index 31cb0172..357bd0ca 100644 --- a/src/servers/Server_Zone/CFHandlers.cpp +++ b/src/servers/Server_Zone/CFHandlers.cpp @@ -54,8 +54,8 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::cfDutyInfoRequest(Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfDutyInfoRequest( const Core::Network::Packets::GamePacket& inPacket, + Core::Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcCFDutyInfo > dutyInfoPacket( pPlayer->getId() ); queueOutPacket( dutyInfoPacket ); @@ -65,15 +65,15 @@ void Core::Network::GameConnection::cfDutyInfoRequest(Core::Network::Packets::Ga } -void Core::Network::GameConnection::cfRegisterDuty(Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfRegisterDuty( const Core::Network::Packets::GamePacket& inPacket, + Core::Entity::PlayerPtr pPlayer) { // TODO use for loop for this - auto contentId1 = pInPacket->getValAt< uint16_t >( 46 ); - auto contentId2 = pInPacket->getValAt< uint16_t >( 48 ); - auto contentId3 = pInPacket->getValAt< uint16_t >( 50 ); - auto contentId4 = pInPacket->getValAt< uint16_t >( 52 ); - auto contentId5 = pInPacket->getValAt< uint16_t >( 54 ); + auto contentId1 = inPacket.getValAt< uint16_t >( 46 ); + auto contentId2 = inPacket.getValAt< uint16_t >( 48 ); + auto contentId3 = inPacket.getValAt< uint16_t >( 50 ); + auto contentId4 = inPacket.getValAt< uint16_t >( 52 ); + auto contentId5 = inPacket.getValAt< uint16_t >( 54 ); pPlayer->sendDebug("Duty register request"); pPlayer->sendDebug("ContentId1" + std::to_string(contentId1)); @@ -89,14 +89,14 @@ void Core::Network::GameConnection::cfRegisterDuty(Core::Network::Packets::GameP queueOutPacket( cfCancelPacket ); } -void Core::Network::GameConnection::cfRegisterRoulette(Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfRegisterRoulette( const Core::Network::Packets::GamePacket& inPacket, + Core::Entity::PlayerPtr pPlayer) { pPlayer->sendDebug("Roulette register"); } -void Core::Network::GameConnection::cfDutyAccepted(Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfDutyAccepted( const Core::Network::Packets::GamePacket& inPacket, + Core::Entity::PlayerPtr pPlayer) { pPlayer->sendDebug("TODO: Duty accept"); } diff --git a/src/servers/Server_Zone/EventHandlers.cpp b/src/servers/Server_Zone/EventHandlers.cpp index cb7de0b6..7d914f33 100644 --- a/src/servers/Server_Zone/EventHandlers.cpp +++ b/src/servers/Server_Zone/EventHandlers.cpp @@ -48,10 +48,10 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::eventHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint16_t eventHandlerId = pInPacket->getValAt< uint16_t >( 0x12 ); + uint16_t eventHandlerId = inPacket.getValAt< uint16_t >( 0x12 ); // we need to abort the event in case it has not been scripted so the player wont be locked up auto abortEventFunc = []( Core::Entity::PlayerPtr pPlayer, uint64_t actorId, uint32_t eventId ) @@ -71,8 +71,8 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::TalkEventHandler: // Talk event { - uint64_t actorId = pInPacket->getValAt< uint64_t >( 0x20 ); - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x28 ); + uint64_t actorId = inPacket.getValAt< uint64_t >( 0x20 ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x28 ); if( !g_scriptMgr.onTalk( pPlayer, actorId, eventId ) ) abortEventFunc( pPlayer, actorId, eventId ); @@ -81,9 +81,9 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::EmoteEventHandler: // Emote event { - uint64_t actorId = pInPacket->getValAt< uint64_t >( 0x20 ); - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x28 ); - uint16_t emoteId = pInPacket->getValAt< uint16_t >( 0x2C ); + uint64_t actorId = inPacket.getValAt< uint64_t >( 0x20 ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x28 ); + uint16_t emoteId = inPacket.getValAt< uint16_t >( 0x2C ); std::string eventName = Event::getEventName( eventId ); @@ -95,11 +95,11 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::WithinRangeEventHandler: { - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x24 ); - uint32_t eventParam1 = pInPacket->getValAt< uint32_t >( 0x20 ); - float x = pInPacket->getValAt< float >( 0x28 ); - float y = pInPacket->getValAt< float >( 0x2C ); - float z = pInPacket->getValAt< float >( 0x30 ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x24 ); + uint32_t eventParam1 = inPacket.getValAt< uint32_t >( 0x20 ); + float x = inPacket.getValAt< float >( 0x28 ); + float y = inPacket.getValAt< float >( 0x2C ); + float z = inPacket.getValAt< float >( 0x30 ); std::string eventName = Event::getEventName( eventId ); @@ -110,11 +110,11 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::OutOfRangeEventHandler: { - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x24 ); - uint32_t eventParam1 = pInPacket->getValAt< uint32_t >( 0x20 ); - float x = pInPacket->getValAt< float >( 0x28 ); - float y = pInPacket->getValAt< float >( 0x2C ); - float z = pInPacket->getValAt< float >( 0x30 ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x24 ); + uint32_t eventParam1 = inPacket.getValAt< uint32_t >( 0x20 ); + float x = inPacket.getValAt< float >( 0x28 ); + float y = inPacket.getValAt< float >( 0x2C ); + float z = inPacket.getValAt< float >( 0x30 ); std::string eventName = Event::getEventName( eventId ); @@ -125,9 +125,9 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::EnterTeriEventHandler: { - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x20 ); - uint16_t eventParam1 = pInPacket->getValAt< uint16_t >( 0x24 ); - uint16_t eventParam2 = pInPacket->getValAt< uint16_t >( 0x26 ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x20 ); + uint16_t eventParam1 = inPacket.getValAt< uint16_t >( 0x24 ); + uint16_t eventParam2 = inPacket.getValAt< uint16_t >( 0x26 ); std::string eventName = Event::getEventName( eventId ); @@ -139,11 +139,11 @@ void Core::Network::GameConnection::eventHandler( Core::Network::Packets::GamePa case ClientIpcType::ReturnEventHandler: case ClientIpcType::TradeReturnEventHandler: { - uint32_t eventId = pInPacket->getValAt< uint32_t >( 0x20 ); - uint16_t subEvent = pInPacket->getValAt< uint16_t >( 0x24 ); - uint16_t param1 = pInPacket->getValAt< uint16_t >( 0x26 ); - uint16_t param2 = pInPacket->getValAt< uint16_t >( 0x28 ); - uint16_t param3 = pInPacket->getValAt< uint16_t >( 0x2C ); + uint32_t eventId = inPacket.getValAt< uint32_t >( 0x20 ); + uint16_t subEvent = inPacket.getValAt< uint16_t >( 0x24 ); + uint16_t param1 = inPacket.getValAt< uint16_t >( 0x26 ); + uint16_t param2 = inPacket.getValAt< uint16_t >( 0x28 ); + uint16_t param3 = inPacket.getValAt< uint16_t >( 0x2C ); std::string eventName = Event::getEventName( eventId ); diff --git a/src/servers/Server_Zone/GMCommandHandlers.cpp b/src/servers/Server_Zone/GMCommandHandlers.cpp index 70b644d1..c0041075 100644 --- a/src/servers/Server_Zone/GMCommandHandlers.cpp +++ b/src/servers/Server_Zone/GMCommandHandlers.cpp @@ -92,15 +92,17 @@ enum GmCommand Jump = 0x025E, JumpNpc = 0x025F, }; -void Core::Network::GameConnection::gm1Handler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::gm1Handler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t commandId = pInPacket->getValAt< uint32_t >( 0x20 ); - uint32_t param1 = pInPacket->getValAt< uint32_t >( 0x24 ); - uint32_t param2 = pInPacket->getValAt< uint32_t >( 0x28 ); - uint32_t param3 = pInPacket->getValAt< uint32_t >( 0x38 ); + uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); + uint32_t param1 = inPacket.getValAt< uint32_t >( 0x24 ); + uint32_t param2 = inPacket.getValAt< uint32_t >( 0x28 ); + uint32_t param3 = inPacket.getValAt< uint32_t >( 0x38 ); - g_log.debug( pPlayer->getName() + " used GM1 commandId: " + std::to_string( commandId ) + ", params: " + std::to_string( param1 ) + ", " + std::to_string( param2 ) + ", " + std::to_string( param3 ) ); + g_log.debug( pPlayer->getName() + " used GM1 commandId: " + std::to_string( commandId ) + + ", params: " + std::to_string( param1 ) + ", " + + std::to_string( param2 ) + ", " + std::to_string( param3 ) ); Core::Entity::ActorPtr targetActor; @@ -336,11 +338,11 @@ void Core::Network::GameConnection::gm1Handler( Core::Network::Packets::GamePack } -void Core::Network::GameConnection::gm2Handler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::gm2Handler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t commandId = pInPacket->getValAt< uint32_t >( 0x20 ); - std::string param1 = pInPacket->getStringAt( 0x34 ); + uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); + std::string param1 = inPacket.getStringAt( 0x34 ); g_log.debug( pPlayer->getName() + " used GM2 commandId: " + std::to_string( commandId ) + ", params: " + param1 ); diff --git a/src/servers/Server_Zone/GameConnection.cpp b/src/servers/Server_Zone/GameConnection.cpp index 6dd4712a..66c6b11f 100644 --- a/src/servers/Server_Zone/GameConnection.cpp +++ b/src/servers/Server_Zone/GameConnection.cpp @@ -155,7 +155,7 @@ void Core::Network::GameConnection::handleGamePacket( Core::Network::Packets::Ga g_log.debug( "[" + std::to_string( m_pSession->getId() ) + "] Handling packet : " + name + "( " + boost::str( boost::format( "%|04X|" ) % static_cast< uint32_t >( pPacket->getSubType() & 0xFFFF ) ) + " )" ); - ( this->*( it->second ) )( pPacket, m_pSession->getPlayer() ); + ( this->*( it->second ) )( *pPacket, m_pSession->getPlayer() ); } else { diff --git a/src/servers/Server_Zone/GameConnection.h b/src/servers/Server_Zone/GameConnection.h index 49c43de2..a437ef71 100644 --- a/src/servers/Server_Zone/GameConnection.h +++ b/src/servers/Server_Zone/GameConnection.h @@ -12,7 +12,7 @@ #include "Forwards.h" -#define DECLARE_HANDLER( x ) void x( Packets::GamePacketPtr pInPacket, Entity::PlayerPtr pPlayer ) +#define DECLARE_HANDLER( x ) void x( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) namespace Core { namespace Network { @@ -28,7 +28,7 @@ class GameConnection : public Connection { private: - typedef void ( GameConnection::* Handler )( Packets::GamePacketPtr pInPacket, Entity::PlayerPtr pPlayer ); + typedef void ( GameConnection::* Handler )( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ); typedef std::map< uint16_t, Handler > HandlerMap; typedef std::map< uint16_t, std::string > HandlerStrMap; diff --git a/src/servers/Server_Zone/InventoryHandler.cpp b/src/servers/Server_Zone/InventoryHandler.cpp index 95c3e13e..766f98c7 100644 --- a/src/servers/Server_Zone/InventoryHandler.cpp +++ b/src/servers/Server_Zone/InventoryHandler.cpp @@ -54,15 +54,15 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::inventoryModifyHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::inventoryModifyHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t seq = pInPacket->getValAt< uint32_t >( 0x20 ); - uint8_t action = pInPacket->getValAt< uint8_t >( 0x24 ); - uint8_t fromSlot = pInPacket->getValAt< uint8_t >( 0x30 ); - uint8_t toSlot = pInPacket->getValAt< uint8_t >( 0x44 ); - uint16_t fromContainer = pInPacket->getValAt< uint16_t >( 0x2C ); - uint16_t toContainer = pInPacket->getValAt< uint16_t >( 0x40 ); + uint32_t seq = inPacket.getValAt< uint32_t >( 0x20 ); + uint8_t action = inPacket.getValAt< uint8_t >( 0x24 ); + uint8_t fromSlot = inPacket.getValAt< uint8_t >( 0x30 ); + uint8_t toSlot = inPacket.getValAt< uint8_t >( 0x44 ); + uint16_t fromContainer = inPacket.getValAt< uint16_t >( 0x2C ); + uint16_t toContainer = inPacket.getValAt< uint16_t >( 0x40 ); GamePacketNew< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); ackPacket.data().sequence = seq; @@ -70,7 +70,7 @@ void Core::Network::GameConnection::inventoryModifyHandler( Core::Network::Packe pPlayer->queuePacket( ackPacket ); - g_log.debug( pInPacket->toString() ); + g_log.debug( inPacket.toString() ); g_log.debug( "InventoryAction: " + std::to_string( action ) ); // TODO: other inventory operations need to be implemented diff --git a/src/servers/Server_Zone/PacketHandlers.cpp b/src/servers/Server_Zone/PacketHandlers.cpp index 1ebd516f..8770d992 100644 --- a/src/servers/Server_Zone/PacketHandlers.cpp +++ b/src/servers/Server_Zone/PacketHandlers.cpp @@ -53,24 +53,24 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::fcInfoReqHandler( Core::Network::Packets::GamePacketPtr pInPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::fcInfoReqHandler( const Core::Network::Packets::GamePacket& inPacket, + Core::Entity::PlayerPtr pPlayer ) { GamePacketPtr pPe( new GamePacket( 0xDD, 0x78, pPlayer->getId(), pPlayer->getId() ) ); pPe->setValAt< uint8_t >( 0x48, 0x01 ); queueOutPacket( pPe ); } -void Core::Network::GameConnection::setSearchInfoHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::setSearchInfoHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t inval = pInPacket->getValAt< uint32_t >( 0x20 ); - uint32_t inval1 = pInPacket->getValAt< uint32_t >( 0x24 ); - uint64_t status = pInPacket->getValAt< uint64_t >( 0x20 ); + uint32_t inval = inPacket.getValAt< uint32_t >( 0x20 ); + uint32_t inval1 = inPacket.getValAt< uint32_t >( 0x24 ); + uint64_t status = inPacket.getValAt< uint64_t >( 0x20 ); - uint8_t selectRegion = pInPacket->getValAt< uint8_t >( 0x31 ); + uint8_t selectRegion = inPacket.getValAt< uint8_t >( 0x31 ); - pPlayer->setSearchInfo( selectRegion, 0, pInPacket->getStringAt( 0x32 ) ); + pPlayer->setSearchInfo( selectRegion, 0, inPacket.getStringAt( 0x32 ) ); pPlayer->setOnlineStatusMask( status ); @@ -96,7 +96,7 @@ void Core::Network::GameConnection::setSearchInfoHandler( Core::Network::Packets true ); } -void Core::Network::GameConnection::reqSearchInfoHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::reqSearchInfoHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcInitSearchInfo > searchInfoPacket( pPlayer->getId() ); @@ -106,14 +106,14 @@ void Core::Network::GameConnection::reqSearchInfoHandler( Core::Network::Packets queueOutPacket( searchInfoPacket ); } -void Core::Network::GameConnection::linkshellListHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::linkshellListHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcLinkshellList > linkshellListPacket( pPlayer->getId() ); queueOutPacket( linkshellListPacket ); } -void Core::Network::GameConnection::updatePositionHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::updatePositionHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { // if the player is marked for zoning we no longer want to update his pos @@ -148,10 +148,10 @@ void Core::Network::GameConnection::updatePositionHandler( Core::Network::Packet uint16_t bit16 : 1; } IPC_OP_019AB; - uint16_t flags = pInPacket->getValAt( 0x28 ); + uint16_t flags = inPacket.getValAt( 0x28 ); memcpy( &IPC_OP_019AB, &flags, 2 ); - uint32_t flags1 = pInPacket->getValAt( 0x24 ); + uint32_t flags1 = inPacket.getValAt( 0x24 ); memcpy( &IPC_OP_019A, &flags1, 4 ); //g_log.Log(LoggingSeverity::debug, "" + boost::lexical_cast((int)IPC_OP_019AB.bit1) @@ -182,17 +182,17 @@ void Core::Network::GameConnection::updatePositionHandler( Core::Network::Packet //pInPacket->debugPrint(); bool bPosChanged = false; - if( ( pPlayer->getPos().x != pInPacket->getValAt< float >( 0x2c ) ) || - ( pPlayer->getPos().y != pInPacket->getValAt< float >( 0x30 ) ) || - ( pPlayer->getPos().z != pInPacket->getValAt< float >( 0x34 ) ) ) + if( ( pPlayer->getPos().x != inPacket.getValAt< float >( 0x2c ) ) || + ( pPlayer->getPos().y != inPacket.getValAt< float >( 0x30 ) ) || + ( pPlayer->getPos().z != inPacket.getValAt< float >( 0x34 ) ) ) bPosChanged = true; - if( !bPosChanged && pPlayer->getRotation() == pInPacket->getValAt< float >( 0x20 ) ) + if( !bPosChanged && pPlayer->getRotation() == inPacket.getValAt< float >( 0x20 ) ) return; - pPlayer->setRotation( pInPacket->getValAt< float >( 0x20 ) ); - pPlayer->setPosition( pInPacket->getValAt< float >( 0x2c ), - pInPacket->getValAt< float >( 0x30 ), - pInPacket->getValAt< float >( 0x34 ) ); + pPlayer->setRotation( inPacket.getValAt< float >( 0x20 ) ); + pPlayer->setPosition( inPacket.getValAt< float >( 0x2c ), + inPacket.getValAt< float >( 0x30 ), + inPacket.getValAt< float >( 0x34 ) ); pPlayer->setSyncFlag( PlayerSyncFlags::Position ); @@ -203,9 +203,9 @@ void Core::Network::GameConnection::updatePositionHandler( Core::Network::Packet if( !pPlayer->hasInRangeActor() ) return; - uint8_t unk = pInPacket->getValAt< uint8_t >( 0x29 ); + uint8_t unk = inPacket.getValAt< uint8_t >( 0x29 ); - uint16_t moveType = pInPacket->getValAt< uint16_t >( 0x28 ); + uint16_t moveType = inPacket.getValAt< uint16_t >( 0x28 ); uint8_t unk1 = 0; uint8_t unk2 = 0; @@ -291,10 +291,10 @@ void Core::Network::GameConnection::updatePositionHandler( Core::Network::Packet -void Core::Network::GameConnection::zoneLineHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::zoneLineHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t zoneLineId = pInPacket->getValAt< uint32_t >( 0x20 ); + uint32_t zoneLineId = inPacket.getValAt< uint32_t >( 0x20 ); pPlayer->sendDebug( "Walking ZoneLine " + std::to_string( zoneLineId ) ); @@ -336,10 +336,10 @@ void Core::Network::GameConnection::zoneLineHandler( Core::Network::Packets::Gam } -void Core::Network::GameConnection::discoveryHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::discoveryHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t ref_position_id = pInPacket->getValAt< uint32_t >( 0x20 ); + uint32_t ref_position_id = inPacket.getValAt< uint32_t >( 0x20 ); auto pQR = g_database.query( "SELECT id, map_id, discover_id " "FROM discoveryinfo " @@ -365,7 +365,7 @@ void Core::Network::GameConnection::discoveryHandler( Core::Network::Packets::Ga } -void Core::Network::GameConnection::playTimeHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::playTimeHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcPlayTime > playTimePacket( pPlayer->getId() ); @@ -374,7 +374,7 @@ void Core::Network::GameConnection::playTimeHandler( Core::Network::Packets::Gam } -void Core::Network::GameConnection::initHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::initHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { // init handler means this is a login procedure @@ -384,10 +384,10 @@ void Core::Network::GameConnection::initHandler( Core::Network::Packets::GamePac } -void Core::Network::GameConnection::blackListHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::blackListHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint8_t count = pInPacket->getValAt< uint8_t >( 0x21 ); + uint8_t count = inPacket.getValAt< uint8_t >( 0x21 ); GamePacketNew< FFXIVIpcBlackList > blackListPacket( pPlayer->getId() ); blackListPacket.data().sequence = count; @@ -399,10 +399,10 @@ void Core::Network::GameConnection::blackListHandler( Core::Network::Packets::Ga } -void Core::Network::GameConnection::pingHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::pingHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - int32_t inVal = pInPacket->getValAt< int32_t >( 0x20 ); + int32_t inVal = inPacket.getValAt< int32_t >( 0x20 ); PingPacket pingPacket( pPlayer, inVal ); queueOutPacket( pingPacket ); @@ -410,7 +410,7 @@ void Core::Network::GameConnection::pingHandler( Core::Network::Packets::GamePac } -void Core::Network::GameConnection::finishLoadingHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::finishLoadingHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { // player is done zoning @@ -431,12 +431,12 @@ void Core::Network::GameConnection::finishLoadingHandler( Core::Network::Packets pPlayer->getCurrentZone()->changeActorPosition( pPlayer ); } -void Core::Network::GameConnection::socialListHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::socialListHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint8_t type = pInPacket->getValAt< uint8_t >( 0x2A ); - uint8_t count = pInPacket->getValAt< uint8_t >( 0x2B ); + uint8_t type = inPacket.getValAt< uint8_t >( 0x2A ); + uint8_t count = inPacket.getValAt< uint8_t >( 0x2B ); if( type == 0x02 ) { // party list @@ -489,13 +489,13 @@ void Core::Network::GameConnection::socialListHandler( Core::Network::Packets::G } -void Core::Network::GameConnection::chatHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::chatHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - std::string chatString( pInPacket->getStringAt( 0x3a ) ); + std::string chatString( inPacket.getStringAt( 0x3a ) ); - uint32_t sourceId = pInPacket->getValAt< uint32_t >( 0x24 ); + uint32_t sourceId = inPacket.getValAt< uint32_t >( 0x24 ); if( chatString.at( 0 ) == '@' ) { @@ -504,7 +504,7 @@ void Core::Network::GameConnection::chatHandler( Core::Network::Packets::GamePac return; } - ChatType chatType = static_cast( pInPacket->getValAt< uint8_t >( 0x38 ) ); + ChatType chatType = static_cast( inPacket.getValAt< uint8_t >( 0x38 ) ); //ToDo, need to implement sending GM chat types. ChatPacket chatPacket( pPlayer, chatType, chatString ); @@ -539,7 +539,7 @@ void Core::Network::GameConnection::chatHandler( Core::Network::Packets::GamePac // currently we wait for the session to just time out after logout, this can be a problem is the user tries to // log right back in. // Also the packet needs to be converted to an ipc structure -void Core::Network::GameConnection::logoutHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::logoutHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcLogout > logoutPacket( pPlayer->getId() ); diff --git a/src/servers/Server_Zone/SkillHandler.cpp b/src/servers/Server_Zone/SkillHandler.cpp index b6e262cf..5ebda338 100644 --- a/src/servers/Server_Zone/SkillHandler.cpp +++ b/src/servers/Server_Zone/SkillHandler.cpp @@ -48,14 +48,14 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::skillHandler( Core::Network::Packets::GamePacketPtr pInPacket, +void Core::Network::GameConnection::skillHandler( const Core::Network::Packets::GamePacket& inPacket, Core::Entity::PlayerPtr pPlayer ) { - uint32_t action = pInPacket->getValAt< uint32_t >( 0x24 ); - uint32_t useCount = pInPacket->getValAt< uint32_t >( 0x28 ); + uint32_t action = inPacket.getValAt< uint32_t >( 0x24 ); + uint32_t useCount = inPacket.getValAt< uint32_t >( 0x28 ); - uint64_t targetId = pInPacket->getValAt< uint64_t >( 0x30 ); + uint64_t targetId = inPacket.getValAt< uint64_t >( 0x30 ); if( action < 1000000 ) // normal action { From ee28a61ae1726968136aa8c54bb3683b8bfdead7 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 17:36:40 +0200 Subject: [PATCH 3/8] Fixed headers in Eventhandlers.cpp --- src/servers/Server_Zone/EventHandlers.cpp | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/src/servers/Server_Zone/EventHandlers.cpp b/src/servers/Server_Zone/EventHandlers.cpp index 7d914f33..2a8ac0f5 100644 --- a/src/servers/Server_Zone/EventHandlers.cpp +++ b/src/servers/Server_Zone/EventHandlers.cpp @@ -1,22 +1,13 @@ #include #include -#include #include #include #include - #include "GameConnection.h" - #include "Session.h" -#include "Zone.h" -#include "ZonePosition.h" -#include "InitUIPacket.h" -#include "PingPacket.h" -#include "MoveActorPacket.h" -#include "ChatPacket.h" #include "ServerNoticePacket.h" #include "ActorControlPacket142.h" #include "ActorControlPacket143.h" @@ -24,25 +15,15 @@ #include "EventStartPacket.h" #include "EventFinishPacket.h" #include "PlayerStateFlagsPacket.h" - - -#include "GameCommandHandler.h" +#include "ScriptManager.h" #include "Player.h" -#include "Inventory.h" - -#include "Globals.h" #include "Forwards.h" #include "EventHelper.h" -#include "Action.h" -#include "ActionTeleport.h" -#include "ActionCast.h" - - -extern Core::GameCommandHandler g_gameCommandMgr; +extern Core::Scripting::ScriptManager g_scriptMgr; using namespace Core::Common; using namespace Core::Network::Packets; From 61be1ec2c30731be7c8d638a78ab20dee5dc0a69 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 17:39:08 +0200 Subject: [PATCH 4/8] Fixed compiler warning in eventhandlers --- src/servers/Server_Zone/EventHandlers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/EventHandlers.cpp b/src/servers/Server_Zone/EventHandlers.cpp index 2a8ac0f5..0969ad5e 100644 --- a/src/servers/Server_Zone/EventHandlers.cpp +++ b/src/servers/Server_Zone/EventHandlers.cpp @@ -68,7 +68,7 @@ void Core::Network::GameConnection::eventHandler( const Core::Network::Packets:: std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onEmote( pPlayer, actorId, eventId, emoteId ) ) + if( !g_scriptMgr.onEmote( pPlayer, actorId, eventId, static_cast< uint8_t >( emoteId ) ) ) abortEventFunc( pPlayer, actorId, eventId ); break; } From 94637b6795fdb3cf94696d9b7fce20a0dc49d336 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 17:45:45 +0200 Subject: [PATCH 5/8] Removal of redundant namespace qualifiers --- src/servers/Server_Zone/ActionHandler.cpp | 4 +- src/servers/Server_Zone/CFHandlers.cpp | 45 ++++---------- src/servers/Server_Zone/EventHandlers.cpp | 4 +- src/servers/Server_Zone/GMCommandHandlers.cpp | 8 +-- src/servers/Server_Zone/InventoryHandler.cpp | 4 +- src/servers/Server_Zone/PacketHandlers.cpp | 60 +++++++++---------- src/servers/Server_Zone/SkillHandler.cpp | 8 ++- 7 files changed, 56 insertions(+), 77 deletions(-) diff --git a/src/servers/Server_Zone/ActionHandler.cpp b/src/servers/Server_Zone/ActionHandler.cpp index a6f0fa60..220fa8e4 100644 --- a/src/servers/Server_Zone/ActionHandler.cpp +++ b/src/servers/Server_Zone/ActionHandler.cpp @@ -54,8 +54,8 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::actionHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 ); uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 ); diff --git a/src/servers/Server_Zone/CFHandlers.cpp b/src/servers/Server_Zone/CFHandlers.cpp index 357bd0ca..5a8eb88f 100644 --- a/src/servers/Server_Zone/CFHandlers.cpp +++ b/src/servers/Server_Zone/CFHandlers.cpp @@ -1,61 +1,38 @@ #include #include -#include + #include #include -#include + #include -#include - - #include "GameConnection.h" #include "Session.h" -#include "Zone.h" -#include "ZonePosition.h" -#include "ServerZone.h" -#include "ZoneMgr.h" -#include "InitUIPacket.h" -#include "PingPacket.h" -#include "MoveActorPacket.h" -#include "ChatPacket.h" #include "ServerNoticePacket.h" #include "ActorControlPacket142.h" #include "ActorControlPacket143.h" #include "ActorControlPacket144.h" -#include "EventStartPacket.h" -#include "EventFinishPacket.h" + #include "PlayerStateFlagsPacket.h" -#include "GameCommandHandler.h" - #include "Player.h" -#include "Inventory.h" #include "Forwards.h" -#include "EventHelper.h" -#include "Action.h" -#include "ActionTeleport.h" extern Core::Logger g_log; -extern Core::Db::Database g_database; -extern Core::ServerZone g_serverZone; -extern Core::ZoneMgr g_zoneMgr; -extern Core::Data::ExdData g_exdData; -extern Core::GameCommandHandler g_gameCommandMgr; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::cfDutyInfoRequest( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::cfDutyInfoRequest( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcCFDutyInfo > dutyInfoPacket( pPlayer->getId() ); queueOutPacket( dutyInfoPacket ); @@ -65,8 +42,8 @@ void Core::Network::GameConnection::cfDutyInfoRequest( const Core::Network::Pack } -void Core::Network::GameConnection::cfRegisterDuty( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfRegisterDuty( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer) { // TODO use for loop for this auto contentId1 = inPacket.getValAt< uint16_t >( 46 ); @@ -89,14 +66,14 @@ void Core::Network::GameConnection::cfRegisterDuty( const Core::Network::Packets queueOutPacket( cfCancelPacket ); } -void Core::Network::GameConnection::cfRegisterRoulette( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfRegisterRoulette( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer) { pPlayer->sendDebug("Roulette register"); } -void Core::Network::GameConnection::cfDutyAccepted( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer) +void Core::Network::GameConnection::cfDutyAccepted( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer) { pPlayer->sendDebug("TODO: Duty accept"); } diff --git a/src/servers/Server_Zone/EventHandlers.cpp b/src/servers/Server_Zone/EventHandlers.cpp index 0969ad5e..ae0028d0 100644 --- a/src/servers/Server_Zone/EventHandlers.cpp +++ b/src/servers/Server_Zone/EventHandlers.cpp @@ -29,8 +29,8 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::eventHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint16_t eventHandlerId = inPacket.getValAt< uint16_t >( 0x12 ); diff --git a/src/servers/Server_Zone/GMCommandHandlers.cpp b/src/servers/Server_Zone/GMCommandHandlers.cpp index c0041075..fed7cbfe 100644 --- a/src/servers/Server_Zone/GMCommandHandlers.cpp +++ b/src/servers/Server_Zone/GMCommandHandlers.cpp @@ -92,8 +92,8 @@ enum GmCommand Jump = 0x025E, JumpNpc = 0x025F, }; -void Core::Network::GameConnection::gm1Handler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); uint32_t param1 = inPacket.getValAt< uint32_t >( 0x24 ); @@ -338,8 +338,8 @@ void Core::Network::GameConnection::gm1Handler( const Core::Network::Packets::Ga } -void Core::Network::GameConnection::gm2Handler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); std::string param1 = inPacket.getStringAt( 0x34 ); diff --git a/src/servers/Server_Zone/InventoryHandler.cpp b/src/servers/Server_Zone/InventoryHandler.cpp index 766f98c7..93734275 100644 --- a/src/servers/Server_Zone/InventoryHandler.cpp +++ b/src/servers/Server_Zone/InventoryHandler.cpp @@ -54,8 +54,8 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::inventoryModifyHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::inventoryModifyHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t seq = inPacket.getValAt< uint32_t >( 0x20 ); uint8_t action = inPacket.getValAt< uint8_t >( 0x24 ); diff --git a/src/servers/Server_Zone/PacketHandlers.cpp b/src/servers/Server_Zone/PacketHandlers.cpp index 8770d992..57adfcae 100644 --- a/src/servers/Server_Zone/PacketHandlers.cpp +++ b/src/servers/Server_Zone/PacketHandlers.cpp @@ -53,16 +53,16 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::fcInfoReqHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketPtr pPe( new GamePacket( 0xDD, 0x78, pPlayer->getId(), pPlayer->getId() ) ); pPe->setValAt< uint8_t >( 0x48, 0x01 ); queueOutPacket( pPe ); } -void Core::Network::GameConnection::setSearchInfoHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::setSearchInfoHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t inval = inPacket.getValAt< uint32_t >( 0x20 ); uint32_t inval1 = inPacket.getValAt< uint32_t >( 0x24 ); @@ -96,8 +96,8 @@ void Core::Network::GameConnection::setSearchInfoHandler( const Core::Network::P true ); } -void Core::Network::GameConnection::reqSearchInfoHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::reqSearchInfoHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcInitSearchInfo > searchInfoPacket( pPlayer->getId() ); searchInfoPacket.data().onlineStatusFlags = pPlayer->getOnlineStatusMask(); @@ -106,15 +106,15 @@ void Core::Network::GameConnection::reqSearchInfoHandler( const Core::Network::P queueOutPacket( searchInfoPacket ); } -void Core::Network::GameConnection::linkshellListHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::linkshellListHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcLinkshellList > linkshellListPacket( pPlayer->getId() ); queueOutPacket( linkshellListPacket ); } -void Core::Network::GameConnection::updatePositionHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::updatePositionHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { // if the player is marked for zoning we no longer want to update his pos if( pPlayer->isMarkedForZoning() ) @@ -291,8 +291,8 @@ void Core::Network::GameConnection::updatePositionHandler( const Core::Network:: -void Core::Network::GameConnection::zoneLineHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::zoneLineHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t zoneLineId = inPacket.getValAt< uint32_t >( 0x20 ); @@ -336,8 +336,8 @@ void Core::Network::GameConnection::zoneLineHandler( const Core::Network::Packet } -void Core::Network::GameConnection::discoveryHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::discoveryHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t ref_position_id = inPacket.getValAt< uint32_t >( 0x20 ); @@ -365,8 +365,8 @@ void Core::Network::GameConnection::discoveryHandler( const Core::Network::Packe } -void Core::Network::GameConnection::playTimeHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::playTimeHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcPlayTime > playTimePacket( pPlayer->getId() ); playTimePacket.data().playTimeInMinutes = pPlayer->getPlayTime() / 60; @@ -374,8 +374,8 @@ void Core::Network::GameConnection::playTimeHandler( const Core::Network::Packet } -void Core::Network::GameConnection::initHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::initHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { // init handler means this is a login procedure pPlayer->setIsLogin( true ); @@ -384,8 +384,8 @@ void Core::Network::GameConnection::initHandler( const Core::Network::Packets::G } -void Core::Network::GameConnection::blackListHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::blackListHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint8_t count = inPacket.getValAt< uint8_t >( 0x21 ); @@ -399,8 +399,8 @@ void Core::Network::GameConnection::blackListHandler( const Core::Network::Packe } -void Core::Network::GameConnection::pingHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::pingHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { int32_t inVal = inPacket.getValAt< int32_t >( 0x20 ); PingPacket pingPacket( pPlayer, inVal ); @@ -410,8 +410,8 @@ void Core::Network::GameConnection::pingHandler( const Core::Network::Packets::G } -void Core::Network::GameConnection::finishLoadingHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::finishLoadingHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { // player is done zoning pPlayer->setLoadingComplete( true ); @@ -431,8 +431,8 @@ void Core::Network::GameConnection::finishLoadingHandler( const Core::Network::P pPlayer->getCurrentZone()->changeActorPosition( pPlayer ); } -void Core::Network::GameConnection::socialListHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint8_t type = inPacket.getValAt< uint8_t >( 0x2A ); @@ -489,8 +489,8 @@ void Core::Network::GameConnection::socialListHandler( const Core::Network::Pack } -void Core::Network::GameConnection::chatHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { std::string chatString( inPacket.getStringAt( 0x3a ) ); @@ -539,8 +539,8 @@ void Core::Network::GameConnection::chatHandler( const Core::Network::Packets::G // currently we wait for the session to just time out after logout, this can be a problem is the user tries to // log right back in. // Also the packet needs to be converted to an ipc structure -void Core::Network::GameConnection::logoutHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::logoutHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { GamePacketNew< FFXIVIpcLogout > logoutPacket( pPlayer->getId() ); logoutPacket.data().flags1 = 0x02; diff --git a/src/servers/Server_Zone/SkillHandler.cpp b/src/servers/Server_Zone/SkillHandler.cpp index 5ebda338..b4a8a2a9 100644 --- a/src/servers/Server_Zone/SkillHandler.cpp +++ b/src/servers/Server_Zone/SkillHandler.cpp @@ -48,8 +48,8 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -void Core::Network::GameConnection::skillHandler( const Core::Network::Packets::GamePacket& inPacket, - Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) { uint32_t action = inPacket.getValAt< uint32_t >( 0x24 ); @@ -61,7 +61,9 @@ void Core::Network::GameConnection::skillHandler( const Core::Network::Packets:: { std::string actionIdStr = boost::str( boost::format( "%|04X|" ) % action ); pPlayer->sendDebug( "---------------------------------------" ); - pPlayer->sendDebug( "ActionHandler ( " + actionIdStr + " | " + g_exdData.m_actionInfoMap[action].name + " | " + std::to_string( targetId ) + " )" ); + pPlayer->sendDebug( "ActionHandler ( " + actionIdStr + " | " + + g_exdData.m_actionInfoMap[action].name + + " | " + std::to_string( targetId ) + " )" ); pPlayer->queuePacket( ActorControlPacket142( pPlayer->getId(), ActorControlType::ActionStart, 0x01, action ) ); From e4d2c3464c9b1b824161a82a7be655ec6c9b994b Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 17 Aug 2017 18:12:29 +0200 Subject: [PATCH 6/8] Removal of outdated Globals.h --- .../Server_Zone/GameCommandHandler.cpp | 10 ++++++-- src/servers/Server_Zone/Globals.h | 18 -------------- src/servers/Server_Zone/SkillHandler.cpp | 24 ++++++------------- 3 files changed, 15 insertions(+), 37 deletions(-) delete mode 100644 src/servers/Server_Zone/Globals.h diff --git a/src/servers/Server_Zone/GameCommandHandler.cpp b/src/servers/Server_Zone/GameCommandHandler.cpp index 33c9e39d..ad23260e 100644 --- a/src/servers/Server_Zone/GameCommandHandler.cpp +++ b/src/servers/Server_Zone/GameCommandHandler.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include #include "GameCommand.h" #include "GameCommandHandler.h" @@ -15,20 +17,24 @@ #include "ActorControlPacket143.h" #include "InitUIPacket.h" #include "GameConnection.h" - +#include "ScriptManager.h" #include "Player.h" #include "BattleNpc.h" #include "Zone.h" -#include "Globals.h" #include "ServerZone.h" #include "StatusEffect.h" #include "Session.h" #include +extern Core::Db::Database g_database; +extern Core::Scripting::ScriptManager g_scriptMgr; +extern Core::Data::ExdData g_exdData; +extern Core::Logger g_log; +extern Core::ServerZone g_serverZone; // instanciate and initialize commands Core::GameCommandHandler::GameCommandHandler() diff --git a/src/servers/Server_Zone/Globals.h b/src/servers/Server_Zone/Globals.h deleted file mode 100644 index 12261f48..00000000 --- a/src/servers/Server_Zone/Globals.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _GLOBALS_H -#define _GLOBALS_H - -#include "ZoneMgr.h" -#include -#include -#include "ServerZone.h" -#include "ScriptManager.h" -#include - -extern Core::Logger g_log; -extern Core::Db::Database g_database; -extern Core::ServerZone g_serverZone; -extern Core::ZoneMgr g_zoneMgr; -extern Core::Scripting::ScriptManager g_scriptMgr; -extern Core::Data::ExdData g_exdData; - -#endif \ No newline at end of file diff --git a/src/servers/Server_Zone/SkillHandler.cpp b/src/servers/Server_Zone/SkillHandler.cpp index b4a8a2a9..d03b9a28 100644 --- a/src/servers/Server_Zone/SkillHandler.cpp +++ b/src/servers/Server_Zone/SkillHandler.cpp @@ -1,48 +1,38 @@ #include #include -#include +#include #include #include +#include #include - #include "GameConnection.h" #include "Session.h" -#include "Zone.h" -#include "ZonePosition.h" -#include "InitUIPacket.h" -#include "PingPacket.h" -#include "MoveActorPacket.h" -#include "ChatPacket.h" #include "ServerNoticePacket.h" #include "ActorControlPacket142.h" #include "ActorControlPacket143.h" #include "ActorControlPacket144.h" -#include "EventStartPacket.h" -#include "EventFinishPacket.h" -#include "PlayerStateFlagsPacket.h" +#include "PlayerStateFlagsPacket.h" #include "GameCommandHandler.h" #include "Player.h" -#include "Inventory.h" - -#include "Globals.h" #include "Forwards.h" -#include "EventHelper.h" - #include "Action.h" #include "ActionTeleport.h" #include "ActionCast.h" +#include "ScriptManager.h" -extern Core::GameCommandHandler g_gameCommandMgr; +extern Core::Scripting::ScriptManager g_scriptMgr; +extern Core::Data::ExdData g_exdData; +extern Core::Logger g_log; using namespace Core::Common; using namespace Core::Network::Packets; From d7c5c4f23e5cb03df6799fa4ebbb37be4f6e733b Mon Sep 17 00:00:00 2001 From: Minho Kang Date: Fri, 18 Aug 2017 11:52:59 +0900 Subject: [PATCH 7/8] Add /bigobj switch for MSVC This fix an some error when building for x64 --- src/servers/Server_Common/CMakeLists.txt | 3 ++- src/servers/Server_Lobby/CMakeLists.txt | 3 ++- src/servers/Server_REST/CMakeLists.txt | 3 ++- src/servers/Server_Zone/CMakeLists.txt | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/servers/Server_Common/CMakeLists.txt b/src/servers/Server_Common/CMakeLists.txt index 1661ac65..db70187d 100644 --- a/src/servers/Server_Common/CMakeLists.txt +++ b/src/servers/Server_Common/CMakeLists.txt @@ -8,7 +8,7 @@ if(UNIX) include_directories("/usr/include/mysql/") message(STATUS "Setting GCC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - + find_package(Boost ${SAPPHIRE_BOOST_VER} COMPONENTS log log_setup thread date_time filesystem system) if(Boost_FOUND) set(BOOST_LIBRARY_DIR ${Boost_LIBRARY_DIR}) @@ -26,6 +26,7 @@ else() message(STATUS "Setting MSVC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external/${SAPPHIRE_BOOST_FOLDER_NAME}) message(STATUS "Using boost in /libraries/external") diff --git a/src/servers/Server_Lobby/CMakeLists.txt b/src/servers/Server_Lobby/CMakeLists.txt index 53b2d556..2330c06f 100644 --- a/src/servers/Server_Lobby/CMakeLists.txt +++ b/src/servers/Server_Lobby/CMakeLists.txt @@ -16,7 +16,7 @@ if(UNIX) include_directories("/usr/include/mysql/") message(STATUS "Setting GCC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - + find_package(Boost ${SAPPHIRE_BOOST_VER} COMPONENTS log log_setup thread date_time filesystem system) if(Boost_FOUND) set(BOOST_LIBRARY_DIR ${Boost_LIBRARY_DIR}) @@ -36,6 +36,7 @@ else() message(STATUS "Setting MSVC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external/${SAPPHIRE_BOOST_FOLDER_NAME}) message(STATUS "Using boost in /libraries/external") diff --git a/src/servers/Server_REST/CMakeLists.txt b/src/servers/Server_REST/CMakeLists.txt index 80252299..74f4c019 100644 --- a/src/servers/Server_REST/CMakeLists.txt +++ b/src/servers/Server_REST/CMakeLists.txt @@ -16,7 +16,7 @@ if(UNIX) include_directories("/usr/include/mysql/") message(STATUS "Setting GCC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - + find_package(Boost ${SAPPHIRE_BOOST_VER} COMPONENTS log log_setup thread date_time filesystem system) if(Boost_FOUND) set(BOOST_LIBRARY_DIR ${Boost_LIBRARY_DIR}) @@ -36,6 +36,7 @@ else() message(STATUS "Setting MSVC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external/${SAPPHIRE_BOOST_FOLDER_NAME}) message(STATUS "Using boost in /src/lib") diff --git a/src/servers/Server_Zone/CMakeLists.txt b/src/servers/Server_Zone/CMakeLists.txt index ebc36ef3..a948aaa4 100644 --- a/src/servers/Server_Zone/CMakeLists.txt +++ b/src/servers/Server_Zone/CMakeLists.txt @@ -16,7 +16,7 @@ if(UNIX) include_directories("/usr/include/mysql/") message(STATUS "Setting GCC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - + find_package(Boost ${SAPPHIRE_BOOST_VER} COMPONENTS log log_setup thread date_time filesystem system) if(Boost_FOUND) set(BOOST_LIBRARY_DIR ${Boost_LIBRARY_DIR}) @@ -36,6 +36,7 @@ else() message(STATUS "Setting MSVC flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external/${SAPPHIRE_BOOST_FOLDER_NAME}) message(STATUS "Using boost in /libraries/external") From 78b5a13f8ac721cf780e85f60d5c2baef2003717 Mon Sep 17 00:00:00 2001 From: Minho Kang Date: Fri, 18 Aug 2017 21:14:09 +0900 Subject: [PATCH 8/8] Fix segfault on 64bit Upper portion of address data got lost when converting to int32_t and segfault when accessing them. This commit contains fix for it. --- src/servers/Server_Lobby/blowfish.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_Lobby/blowfish.cpp b/src/servers/Server_Lobby/blowfish.cpp index 236be5d9..5b830e5b 100644 --- a/src/servers/Server_Lobby/blowfish.cpp +++ b/src/servers/Server_Lobby/blowfish.cpp @@ -104,7 +104,7 @@ void BlowFish::initialize (BYTE key[], int32_t keybytes) int32_t v10 = keybytes; - int32_t v9 = (uintptr_t)key; + uintptr_t v9 = (uintptr_t)key; int32_t v8 = 0; int32_t v11 = 0; do {