From 97405ceb017e213e21ec3e30caba1c7ca6512adb Mon Sep 17 00:00:00 2001 From: ForesterDev <11771800+ForesterDev@users.noreply.github.com> Date: Mon, 6 Apr 2020 17:18:36 +0400 Subject: Core/PacketIO: Updated SMSG_LOGIN_VERIFY_WORLD (#24395) (cherry picked from commit 7256c7c2c76aa07409d129c5dcab208ab93dbd46) Co-authored-by: Shauren --- src/server/game/Handlers/CharacterHandler.cpp | 13 +++++-------- src/server/game/Server/Packets/CharacterPackets.cpp | 7 +++++++ src/server/game/Server/Packets/CharacterPackets.h | 12 ++++++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 111cfedaad8..44ebbf6091d 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -738,19 +738,16 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) pCurrChar->GetMotionMaster()->Initialize(); pCurrChar->SendDungeonDifficulty(false); - WorldPacket data(SMSG_LOGIN_VERIFY_WORLD, 20); - data << pCurrChar->GetMapId(); - data << pCurrChar->GetPositionX(); - data << pCurrChar->GetPositionY(); - data << pCurrChar->GetPositionZ(); - data << pCurrChar->GetOrientation(); - SendPacket(&data); + WorldPackets::Character::LoginVerifyWorld loginVerifyWorld; + loginVerifyWorld.MapID = pCurrChar->GetMapId(); + loginVerifyWorld.Pos = pCurrChar->GetPosition(); + SendPacket(loginVerifyWorld.Write()); // load player specific part before send times LoadAccountData(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA), PER_CHARACTER_CACHE_MASK); SendAccountDataTimes(PER_CHARACTER_CACHE_MASK); - data.Initialize(SMSG_FEATURE_SYSTEM_STATUS, 2); // added in 2.2.0 + WorldPacket data(SMSG_FEATURE_SYSTEM_STATUS, 2); // added in 2.2.0 data << uint8(2); // unknown value data << uint8(0); // enable(1)/disable(0) voice chat interface in client SendPacket(&data); diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 78a5e4f2849..52d52ea3c53 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -26,3 +26,10 @@ void WorldPackets::Character::ShowingHelm::Read() { _worldPacket >> ShowHelm; } + +WorldPacket const* WorldPackets::Character::LoginVerifyWorld::Write() +{ + _worldPacket << int32(MapID); + _worldPacket << Pos; + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index e7da51f5a96..b0fad2c3663 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -19,6 +19,7 @@ #define CharacterPackets_h__ #include "Packet.h" +#include "Position.h" namespace WorldPackets { @@ -43,6 +44,17 @@ namespace WorldPackets bool ShowHelm = false; }; + + class LoginVerifyWorld final : public ServerPacket + { + public: + LoginVerifyWorld() : ServerPacket(SMSG_LOGIN_VERIFY_WORLD, 4 + 4 * 4) { } + + WorldPacket const* Write() override; + + int32 MapID = -1; + TaggedPosition Pos; + }; } } -- cgit v1.2.3