From 23c288489f0a18472409b4384924d8f5b61343bc Mon Sep 17 00:00:00 2001 From: Biscuit Date: Sun, 14 Oct 2018 12:52:06 +1100 Subject: [PATCH 1/2] Update GMCommand 1 and 2 Defs --- .../Network/PacketDef/Zone/ClientZoneDef.h | 14 +++++++--- .../Network/Handlers/GMCommandHandlers.cpp | 26 +++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/common/Network/PacketDef/Zone/ClientZoneDef.h b/src/common/Network/PacketDef/Zone/ClientZoneDef.h index c5552526..f973bfa7 100644 --- a/src/common/Network/PacketDef/Zone/ClientZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ClientZoneDef.h @@ -15,16 +15,22 @@ struct FFXIVIpcGmCommand1 : /* 0000 */ uint32_t commandId; /* 0004 */ uint32_t param1; /* 0008 */ uint32_t param2; - /* 000C */ uint8_t unknown_C[0xC]; - /* 0018 */ uint32_t param3; + /* 000C */ uint32_t param3; + /* 0010 */ uint32_t param4; + /* 0014 */ uint32_t unknown1; + /* 0018 */ uint32_t target; }; struct FFXIVIpcGmCommand2 : FFXIVIpcBasePacket< GMCommand2 > { /* 0000 */ uint32_t commandId; - /* 0004 */ char unk_4[0x10]; - /* 0014 */ char param1[0x20]; + /* 0004 */ uint32_t param1; + /* 0008 */ uint32_t param2; + /* 000C */ uint32_t param3; + /* 0010 */ uint32_t param4; + /* 0014 */ char target[0x20]; + /* 0034 */ uint32_t unknown1; }; struct FFXIVIpcClientTrigger : diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 7a9a23f3..b0e9d0eb 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -98,16 +98,19 @@ void Core::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_R const auto& param1 = packet.data().param1; const auto& param2 = packet.data().param2; const auto& param3 = packet.data().param3; + const auto& param4 = packet.data().param4; + const auto& target = packet.data().target; auto pLog = g_fw.get< Logger >(); pLog->debug( player.getName() + " used GM1 commandId: " + std::to_string( commandId ) + ", params: " + std::to_string( param1 ) + ", " + - std::to_string( param2 ) + ", " + std::to_string( param3 ) ); + std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) + + ", target: " + std::to_string( target ) ); Core::Entity::ActorPtr targetActor; - if( player.getId() == param3 ) + if( player.getId() == target ) { targetActor = player.getAsPlayer(); } @@ -116,7 +119,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_R auto inRange = player.getInRangeActors(); for( auto& actor : inRange ) { - if( actor->getId() == param3 ) + if( actor->getId() == target ) targetActor = actor; } } @@ -506,11 +509,18 @@ void Core::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_R const auto packet = ZoneChannelPacket< Client::FFXIVIpcGmCommand2 >( inPacket ); const auto& commandId = packet.data().commandId; - const auto& param1 = std::string( packet.data().param1 ); + const auto& param1 = packet.data().param1; + const auto& param2 = packet.data().param2; + const auto& param3 = packet.data().param3; + const auto& param4 = packet.data().param4; + const auto& target = std::string( packet.data().target ); - pLog->debug( player.getName() + " used GM2 commandId: " + std::to_string( commandId ) + ", params: " + param1 ); + pLog->debug( player.getName() + " used GM2 commandId: " + std::to_string( commandId ) + + ", params: " + std::to_string( param1 ) + ", " + + std::to_string( param2 ) + ", " + std::to_string( param3 ) + ", " + std::to_string( param4 ) + + ", target: " + target ); - auto targetSession = pServerZone->getSession( param1 ); + auto targetSession = pServerZone->getSession( target ); Core::Entity::CharaPtr targetActor; if( targetSession != nullptr ) @@ -519,13 +529,13 @@ void Core::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_R } else { - if( param1 == "self" ) + if( target == "self" ) { targetActor = player.getAsPlayer(); } else { - player.sendUrgent( "Player " + param1 + " not found on this server." ); + player.sendUrgent( "Player " + target + " not found on this server." ); return; } } From c224967480ab5d27c8b3d50a68dae9b7c98ba2d0 Mon Sep 17 00:00:00 2001 From: Biscuit Date: Sun, 14 Oct 2018 13:03:15 +1100 Subject: [PATCH 2/2] Fix /playtime --- src/common/Network/PacketDef/Ipcs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index c2d9c6dd..6d1f142b 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -64,6 +64,7 @@ enum ServerZoneIpcType : /////////////////////////////////////////////////// ChatBanned = 0x006B, + Playtime = 0x006C, // updated 4.4 Logout = 0x0077, // updated 4.4 CFNotify = 0x0078, CFMemberStatus = 0x0079, @@ -78,7 +79,6 @@ enum ServerZoneIpcType : - Playtime = 0x00F5, // updated 4.3 Chat = 0x00F4, // updated 4.4 SocialList = 0x00FB, // updated 4.4