aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp13
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp8
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
4 files changed, 26 insertions, 9 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index e3192efff29..b6c4020634e 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -814,20 +814,17 @@ 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);
bool featureBit4 = true;
- data.Initialize(SMSG_FEATURE_SYSTEM_STATUS, 7); // checked in 4.2.2
+ WorldPacket data(SMSG_FEATURE_SYSTEM_STATUS, 7); // checked in 4.2.2
data << uint8(2); // unknown value
data << uint32(1);
data << uint32(1);
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index a5faef9a483..4aa09e4df74 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -286,3 +286,11 @@ void WorldPackets::Character::PlayerLogin::Read()
_worldPacket >> Guid;
_worldPacket >> FarClip;
}
+
+WorldPacket const* WorldPackets::Character::LoginVerifyWorld::Write()
+{
+ _worldPacket << int32(MapID);
+ _worldPacket << Pos.PositionXYZOStream();
+ _worldPacket << uint32(Reason);
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 8d07769ed5a..465b1ee8ffb 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -254,6 +254,18 @@ namespace WorldPackets
ObjectGuid Guid; ///< Guid of the player that is logging in
float FarClip = 0.0f; ///< Visibility distance (for terrain)
};
+
+ class LoginVerifyWorld final : public ServerPacket
+ {
+ public:
+ LoginVerifyWorld() : ServerPacket(SMSG_LOGIN_VERIFY_WORLD, 4 + 4 * 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ int32 MapID = -1;
+ Position Pos;
+ uint32 Reason = 0;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 12dc1fd096c..7d4cf5b8ec1 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1016,7 +1016,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIST_INVENTORY, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SETTIMESPEED, STATUS_UNHANDLED);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_UNHANDLED);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_CANCEL_ACK, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_COMPLETE, STATUS_UNHANDLED);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_RESPONSE, STATUS_UNHANDLED);