aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp13
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h12
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;
+ };
}
}