diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 12 |
3 files changed, 24 insertions, 8 deletions
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<Position::XYZO> Pos; + }; } } |