From 8c2f23e71d6b880b98c4ec30dbed7cf712b8eff1 Mon Sep 17 00:00:00 2001 From: collett Date: Thu, 25 Feb 2021 21:25:40 +0900 Subject: [PATCH] fix performing --- src/common/Common.h | 1 + src/common/Network/PacketDef/Ipcs.h | 4 ++-- .../Network/PacketDef/Zone/ServerZoneDef.h | 2 +- .../Network/Handlers/ClientTriggerHandler.cpp | 16 ++++++++++++++++ src/world/Network/Handlers/PacketHandlers.cpp | 2 +- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 273b6913..2a829de0 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -757,6 +757,7 @@ namespace Sapphire::Common BetweenAreas = 24, BoundByDuty = 28, + Performing = 40, WatchingCutscene = 50, // this is actually just a dummy, this id is different diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 14a88524..e76c7fcb 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -277,7 +277,7 @@ namespace Sapphire::Network::Packets ////////////////////////////////////////////////// DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui - PerformNote = 0x0286, // updated 4.3 + PerformNote = 0x0248, // updated 5.45 hotfixs PrepareZoning = 0x01EE, // updated 5.45 hotfix ActorGauge = 0x018E, // updated 5.45 hotfix @@ -415,7 +415,7 @@ namespace Sapphire::Network::Packets UpdatePositionInstance = 0x034E, // updated 5.45 hotfix - PerformNoteHandler = 0x029B, // updated 4.3 + PerformNoteHandler = 0x0336, // updated 5.45 hotfix WorldInteractionHandler = 0x02E4, // updated 5.45 hotfix Dive = 0x00F1, // updated 5.45 hotfix diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index ccf2324f..74126f05 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1851,7 +1851,7 @@ namespace Sapphire::Network::Packets::Server struct FFXIVIpcPerformNote : FFXIVIpcBasePacket< PerformNote > { - uint8_t data[32]; + uint8_t data[16]; }; struct FFXIVIpcHousingUpdateLandFlagsSlot : FFXIVIpcBasePacket< HousingUpdateLandFlagsSlot > diff --git a/src/world/Network/Handlers/ClientTriggerHandler.cpp b/src/world/Network/Handlers/ClientTriggerHandler.cpp index dba82de6..02b258d7 100644 --- a/src/world/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/world/Network/Handlers/ClientTriggerHandler.cpp @@ -496,6 +496,22 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFX player.sendDebug( "event battle p1: {0}, p11: {1}, p12: {2}, p2: {3}, p3: {4}, p4: {5}, p5: {6}", param1, param11, param12, param2, param3, param4, param5 ); break; } + case ClientTriggerType::OpenPerformInstrumentUI: + { + //param11 = instrument, 0 = end + player.sendDebug( "perform: {}", param11 ); + if( param11 == 0 ) + { + player.sendToInRangeSet( makeActorControl( player.getId(), ActorControl::SetStatus, 1, 0, 0, 0 ), true ); + player.unsetStateFlag( PlayerStateFlag::Performing ); + } + else + { + player.sendToInRangeSet( makeActorControl( player.getId(), ActorControl::SetStatus, 16, param11, 0, 0 ), true ); + player.setStateFlag( PlayerStateFlag::Performing ); + } + break; + } case ClientTriggerType::CameraMode: { if( param11 == 1 ) diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index da34f720..9b66f291 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -645,7 +645,7 @@ void Sapphire::Network::GameConnection::performNoteHandler( const Packets::FFXIV Entity::Player& player ) { auto performPacket = makeZonePacket< FFXIVIpcPerformNote >( player.getId() ); - memcpy( &performPacket->data().data[ 0 ], &inPacket.data[ 0x10 ], 32 ); + memcpy( &performPacket->data().data[ 0 ], &inPacket.data[ 0x10 ], 16 ); player.sendToInRangeSet( performPacket ); }