Core/Packets: updated CMSG_PLAYED_TIME, SMSG_PLAYED_TIME (#24674)

(cherry picked from commit 50b4a3a707)

# Conflicts:
#	src/server/game/Server/Packets/CharacterPackets.cpp
#	src/server/game/Server/Protocol/Opcodes.cpp
#	src/server/game/Server/WorldSession.h
#	src/server/scripts/Northrend/Nexus/Nexus/nexus.h

Co-authored-by: MitchesD <majklprofik@seznam.cz>
This commit is contained in:
ForesterDev
2020-05-21 15:55:30 +03:00
committed by GitHub
parent 247564a7ab
commit 84dad1b29b
4 changed files with 44 additions and 10 deletions

View File

@@ -947,16 +947,13 @@ void WorldSession::HandleSetActionBarToggles(WorldPacket& recvData)
GetPlayer()->SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, actionBar);
}
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.TriggerScriptEvent = packet.TriggerScriptEvent; // 0-1 - will not show in chat frame
SendPacket(playedTime.Write());
}
void WorldSession::HandleInspectOpcode(WorldPacket& recvData)

View File

@@ -40,3 +40,17 @@ WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
_worldPacket << uint8(Instant);
return &_worldPacket;
}
void WorldPackets::Character::PlayedTimeClient::Read()
{
_worldPacket >> TriggerScriptEvent;
}
WorldPacket const* WorldPackets::Character::PlayedTime::Write()
{
_worldPacket << uint32(TotalTime);
_worldPacket << uint32(LevelTime);
_worldPacket << uint8(TriggerScriptEvent);
return &_worldPacket;
}

View File

@@ -106,6 +106,28 @@ namespace WorldPackets
void Read() override { }
};
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;
uint32 TotalTime = 0;
uint32 LevelTime = 0;
bool TriggerScriptEvent = false;
};
}
}

View File

@@ -85,6 +85,7 @@ namespace WorldPackets
class ShowingCloak;
class ShowingHelm;
class PlayerLogout;
class PlayedTimeClient;
}
namespace Chat
@@ -586,7 +587,7 @@ class TC_GAME_API WorldSession
void SendBarberShopResult(BarberShopResult result);
// played time
void HandlePlayedTime(WorldPacket& recvPacket);
void HandlePlayedTime(WorldPackets::Character::PlayedTimeClient& packet);
// new
void HandleMoveUnRootAck(WorldPacket& recvPacket);