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 ); +}