From 9af1ac1b5e05db6098869e0c9641e63706e1e227 Mon Sep 17 00:00:00 2001 From: Perize Date: Wed, 22 Nov 2017 00:29:42 +0900 Subject: [PATCH 1/2] Add a perform handler --- src/servers/Server_Common/Network/PacketDef/Ipcs.h | 2 ++ .../Network/PacketDef/Zone/ServerZoneDef.h | 6 ++++++ src/servers/Server_Zone/Network/GameConnection.cpp | 4 +++- src/servers/Server_Zone/Network/GameConnection.h | 2 ++ .../Server_Zone/Network/Handlers/PacketHandlers.cpp | 11 +++++++++++ 5 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/servers/Server_Common/Network/PacketDef/Ipcs.h b/src/servers/Server_Common/Network/PacketDef/Ipcs.h index da8be023..9f7cadc8 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -136,6 +136,7 @@ namespace Packets { IPCTYPE_UNK_320 = 0x0207, // updated 4.1 IPCTYPE_UNK_322 = 0x0209, // updated 4.1 + PerformNote = 0x0252, }; // TODO: Include structures for the individual packet segment types @@ -198,6 +199,7 @@ namespace Packets { ReqEquipDisplayFlagsChange = 0x014C, // updated 4.1 ?? + PerformNoteHandler = 0x0160, }; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h index d5cb7675..9c5ac0ac 100644 --- a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1314,6 +1314,12 @@ struct FFXIVIpcMount : FFXIVIpcBasePacket }; +struct FFXIVIpcPerformNote : FFXIVIpcBasePacket +{ + uint8_t data[32]; +}; + + } /* Server */ } /* Packets */ } /* Network */ diff --git a/src/servers/Server_Zone/Network/GameConnection.cpp b/src/servers/Server_Zone/Network/GameConnection.cpp index 3c0584ca..75834479 100644 --- a/src/servers/Server_Zone/Network/GameConnection.cpp +++ b/src/servers/Server_Zone/Network/GameConnection.cpp @@ -92,7 +92,9 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive, setZoneHandler( ClientZoneIpcType::CFRegisterRoulette, "CFRegisterRoulette", &GameConnection::cfRegisterRoulette ); setZoneHandler( ClientZoneIpcType::CFCommenceHandler, "CFDutyAccepted", &GameConnection::cfDutyAccepted); - setZoneHandler( ClientZoneIpcType::ReqEquipDisplayFlagsChange, "ReqEquipDisplayFlagsChange",&GameConnection::reqEquipDisplayFlagsHandler); + setZoneHandler( ClientZoneIpcType::ReqEquipDisplayFlagsChange, "ReqEquipDisplayFlagsChange", &GameConnection::reqEquipDisplayFlagsHandler ); + + setZoneHandler( ClientZoneIpcType::PerformNoteHandler, "PerformNoteHandler", &GameConnection::performNoteHandler ); setChatHandler( ClientChatIpcType::TellReq, "TellReq", &GameConnection::tellHandler); diff --git a/src/servers/Server_Zone/Network/GameConnection.h b/src/servers/Server_Zone/Network/GameConnection.h index d89ae491..c319acb1 100644 --- a/src/servers/Server_Zone/Network/GameConnection.h +++ b/src/servers/Server_Zone/Network/GameConnection.h @@ -118,6 +118,8 @@ public: DECLARE_HANDLER( reqEquipDisplayFlagsHandler ); + DECLARE_HANDLER( performNoteHandler ); + DECLARE_HANDLER( tellHandler ); }; diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 1942df5b..269ffb9e 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -596,3 +596,14 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa pTargetPlayer->queueChatPacket( tellPacket ); } + +void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) +{ + GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( pPlayer->getId() ); + + uint8_t inVal = inPacket.getValAt< uint8_t >( 20 ); + memcpy( &performPacket.data().data[0], &inVal, 32 ); + + pPlayer->sendToInRangeSet( performPacket ); +} From 01060e20c9ed834f18fee36c1cfef5da97b0cce7 Mon Sep 17 00:00:00 2001 From: Perize Date: Wed, 22 Nov 2017 10:13:49 +0900 Subject: [PATCH 2/2] Fix typo --- src/servers/Server_Common/Network/PacketDef/Ipcs.h | 3 ++- src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/servers/Server_Common/Network/PacketDef/Ipcs.h b/src/servers/Server_Common/Network/PacketDef/Ipcs.h index 265a17b9..587bb96d 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -136,7 +136,8 @@ namespace Packets { IPCTYPE_UNK_320 = 0x0207, // updated 4.1 IPCTYPE_UNK_322 = 0x0209, // updated 4.1 - ActorGauge = 0x249 + ActorGauge = 0x0249, + PerformNote = 0x0252, }; diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 16e03a02..4aaea8d7 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -604,7 +604,7 @@ void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacke { GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( pPlayer->getId() ); - uint8_t inVal = inPacket.getValAt< uint8_t >( 20 ); + uint8_t inVal = inPacket.getValAt< uint8_t >( 0x20 ); memcpy( &performPacket.data().data[0], &inVal, 32 ); pPlayer->sendToInRangeSet( performPacket );