diff options
author | MitchesD <majklprofik@seznam.cz> | 2015-03-08 16:20:31 +0100 |
---|---|---|
committer | MitchesD <majklprofik@seznam.cz> | 2015-03-08 16:23:00 +0100 |
commit | 50b4a3a707a92f3d9bce85a3af335061b7a6290d (patch) | |
tree | 16a235584af39765bc011ba728016b2469e7ceaa | |
parent | 268e2a4b22637f02762c13d4316986c3cabf0262 (diff) |
Core/Packets: updated structure of CMSG_PLAYED_TIME, SMSG_PLAYED_TIME
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 22 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Nexus/Nexus/nexus.h | 2 |
6 files changed, 48 insertions, 13 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 7a983f7b847..2759b4f2f5e 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -965,16 +965,13 @@ void WorldSession::HandleSetActionBarToggles(WorldPackets::Character::SetActionB GetPlayer()->SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, packet.Mask); } -void WorldSession::HandlePlayedTime(WorldPacket& recvData) +void WorldSession::HandlePlayedTime(WorldPackets::Character::PlayedTimeClient& packet) { - uint8 unk1; - recvData >> unk1; // 0 or 1 expected - - WorldPacket data(SMSG_PLAYED_TIME, 4 + 4 + 1); - data << uint32(_player->GetTotalPlayedTime()); - data << uint32(_player->GetLevelPlayedTime()); - data << uint8(unk1); // 0 - will not show in chat frame - SendPacket(&data); + WorldPackets::Character::PlayedTime playedTime; + playedTime.TotalTime = _player->GetTotalPlayedTime(); + playedTime.LevelTime = _player->GetLevelPlayedTime(); + playedTime.TriggerEvent = packet.TriggerScriptEvent; // 0-1 - will not show in chat frame + SendPacket(playedTime.Write()); } void WorldSession::HandleWorldTeleportOpcode(WorldPacket& recvData) diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 5383002ad21..e5a415e6f7f 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -401,3 +401,18 @@ void WorldPackets::Character::SetActionBarToggles::Read() { _worldPacket >> Mask; } + +void WorldPackets::Character::PlayedTimeClient::Read() +{ + TriggerScriptEvent = _worldPacket.ReadBit(); +} + +WorldPacket const* WorldPackets::Character::PlayedTime::Write() +{ + _worldPacket << int32(TotalTime); + _worldPacket << int32(LevelTime); + _worldPacket.WriteBit(TriggerEvent); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index a381fa93e74..d281aa4b7ba 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -538,6 +538,28 @@ namespace WorldPackets uint8 Mask = 0; }; + + class PlayedTimeClient final : public ClientPacket + { + public: + PlayedTimeClient(WorldPacket&& packet) : ClientPacket(CMSG_PLAYED_TIME, std::move(packet)) { } + + void Read() override; + + bool TriggerScriptEvent = false; + }; + + class PlayedTime final : public ServerPacket + { + public: + PlayedTime() : ServerPacket(SMSG_PLAYED_TIME, 9) { } + + WorldPacket const* Write() override; + + int32 TotalTime = 0; + int32 LevelTime = 0; + bool TriggerEvent = false; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 107f77ad50f..41dd7ce4115 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -648,7 +648,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_SPELL_AUTOCAST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetSpellAutocastOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PET_STOP_ATTACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetStopAttack ); DEFINE_HANDLER(CMSG_PING, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess); - DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYED_TIME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePlayedTime ); + DEFINE_HANDLER(CMSG_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::PlayedTimeClient, &WorldSession::HandlePlayedTime); DEFINE_HANDLER(CMSG_PLAYER_LOGIN, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::PlayerLogin, &WorldSession::HandlePlayerLoginOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAYER_TIME_ADJUSTMENT_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_PLAY_DANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -1599,7 +1599,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_STABLE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_TAME_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PET_UPDATE_COMBO_POINTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYED_TIME, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_BOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_SKINNED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAYER_VEHICLE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 9c3daa319f8..b3103ce7b14 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -118,6 +118,7 @@ namespace WorldPackets class LogoutCancel; class LoadingScreenNotify; class SetActionBarToggles; + class PlayedTimeClient; enum class LoginFailureReason : uint8; } @@ -786,7 +787,7 @@ class WorldSession void SendUndeleteCharacterResponse(CharacterUndeleteResult result, WorldPackets::Character::CharacterUndeleteInfo const* undeleteInfo); // played time - void HandlePlayedTime(WorldPacket& recvPacket); + void HandlePlayedTime(WorldPackets::Character::PlayedTimeClient& packet); // new void HandleMoveUnRootAck(WorldPacket& recvPacket); diff --git a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h index 6123407575d..c48c7323301 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h +++ b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h @@ -22,7 +22,7 @@ #define DataHeader "NEX" uint32 const EncounterCount = 5; - + enum DataTypes { DATA_COMMANDER = 0, |