From 7998448574a7e86aad58e382a3c3a6600cbbf051 Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:09:56 +0900 Subject: [PATCH 1/3] Fix a perform handler --- src/servers/Server_Common/Network/GamePacket.h | 18 ++++++++++++------ .../Network/Handlers/PacketHandlers.cpp | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/servers/Server_Common/Network/GamePacket.h b/src/servers/Server_Common/Network/GamePacket.h index d98f0316..a10a43fb 100644 --- a/src/servers/Server_Common/Network/GamePacket.h +++ b/src/servers/Server_Common/Network/GamePacket.h @@ -45,31 +45,37 @@ public: template T getValAt( uint16_t pos ) const { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); return *reinterpret_cast< const T* >( &m_dataBuf[0] + pos ); } void setBytesAt( uint16_t offset, uint8_t * bytes, uint16_t length ) { - assert(m_segHdr.size > offset); + assert( m_segHdr.size > offset ); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + offset ), bytes, length ); } const char * getStringAt( uint16_t pos ) const { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); return reinterpret_cast< const char* >( &m_dataBuf[0] + pos ); } void setStringAt( uint16_t pos, const std::string& str ) { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + pos ), str.c_str(), str.length() ); } - uint8_t * getData() + const uint8_t * getData() const { - return reinterpret_cast< uint8_t* >( &m_dataBuf[0] ); + return reinterpret_cast< const uint8_t* >( &m_dataBuf[0] ); + } + + const uint8_t * getDataAt(uint16_t pos) const + { + assert(m_segHdr.size > pos); + return reinterpret_cast< const uint8_t* >(&m_dataBuf[0] + pos); } void setHeader( uint16_t size, uint16_t type, uint32_t id1, uint32_t id2, uint16_t subType, uint32_t unknown = 0xFED2E000 ); diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 0f397f2a..dcb5e6e0 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -603,8 +603,8 @@ void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacke { GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); - uint8_t inVal = inPacket.getValAt< uint8_t >( 0x20 ); - memcpy( &performPacket.data().data[0], &inVal, 32 ); + auto inVal = inPacket.getDataAt(0x20); + memcpy( &performPacket.data().data[0], inVal, 32 ); player.sendToInRangeSet( performPacket ); } From ebfe0b4a60e16ed3966c497df8c3a179f1d7a28f Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:14:06 +0900 Subject: [PATCH 2/3] Fix formatting --- src/servers/Server_Common/Network/GamePacket.h | 4 ++-- src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/servers/Server_Common/Network/GamePacket.h b/src/servers/Server_Common/Network/GamePacket.h index a10a43fb..6fcc584e 100644 --- a/src/servers/Server_Common/Network/GamePacket.h +++ b/src/servers/Server_Common/Network/GamePacket.h @@ -74,8 +74,8 @@ public: const uint8_t * getDataAt(uint16_t pos) const { - assert(m_segHdr.size > pos); - return reinterpret_cast< const uint8_t* >(&m_dataBuf[0] + pos); + assert( m_segHdr.size > pos ); + return reinterpret_cast< const uint8_t* >( &m_dataBuf[0] + pos ); } void setHeader( uint16_t size, uint16_t type, uint32_t id1, uint32_t id2, uint16_t subType, uint32_t unknown = 0xFED2E000 ); diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index dcb5e6e0..d3734e6f 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -603,7 +603,7 @@ void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacke { GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); - auto inVal = inPacket.getDataAt(0x20); + auto inVal = inPacket.getDataAt( 0x20 ); memcpy( &performPacket.data().data[0], inVal, 32 ); player.sendToInRangeSet( performPacket ); From 654e20384dc54c761f83c7d473963ce326afe212 Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:55:55 +0900 Subject: [PATCH 3/3] Use zonepacketnew instead --- src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index d3734e6f..4fc80e64 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -601,7 +601,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacket& inPacket, Entity::Player& player ) { - GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); + ZoneChannelPacket< FFXIVIpcPerformNote > performPacket( player.getId() ); auto inVal = inPacket.getDataAt( 0x20 ); memcpy( &performPacket.data().data[0], inVal, 32 );