diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-12-02 15:57:03 +0100 |
| commit | 45a5b6a9f04d2f605e7141b8da6e9cfa24711e07 (patch) | |
| tree | 5d0f5890d888610ad4cf598db9c47e831a41eb35 /src/server/game/Guilds/Guild.cpp | |
| parent | 9daaa99ed49fc4ed63007bc932a411d33b5b7ef8 (diff) | |
Core/Calendar: Implement different timezone support for ingame calendar
Closes #8390
Closes #29427
(cherry picked from commit b888b1b09f71a8b8b4a9d45c804a1f164fb65ac3)
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 672f5888ec1..568194d1f04 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -19,6 +19,7 @@ #include "AccountMgr.h" #include "Bag.h" #include "CalendarMgr.h" +#include "CalendarPackets.h" #include "CharacterCache.h" #include "Chat.h" #include "Config.h" @@ -1794,7 +1795,8 @@ void Guild::SendInfo(WorldSession* session) const { WorldPackets::Guild::GuildInfoResponse guildInfo; guildInfo.GuildName = m_name; - guildInfo.CreateDate = m_createdDate; + guildInfo.CreateDate.SetUtcTimeFromUnixTime(m_createdDate); + guildInfo.CreateDate += session->GetTimezoneOffset(); guildInfo.NumMembers = int32(m_members.size()); guildInfo.NumAccounts = m_accountsNumber; @@ -2163,34 +2165,32 @@ void Guild::BroadcastPacket(WorldPacket const* packet) const void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank) { - uint32 count = 0; - - WorldPacket data(SMSG_CALENDAR_FILTER_GUILD); - data << uint32(count); // count placeholder + WorldPackets::Calendar::CalendarEventInitialInvites packet(true); for (auto const& [guid, member] : m_members) { // not sure if needed, maybe client checks it as well - if (count >= CALENDAR_MAX_INVITES) + if (packet.Invites.size() >= CALENDAR_MAX_INVITES) { if (Player* player = session->GetPlayer()) sCalendarMgr->SendCalendarCommandResult(player->GetGUID(), CALENDAR_ERROR_INVITES_EXCEEDED); return; } + if (member.GetGUID() == session->GetPlayer()->GetGUID()) + continue; + uint32 level = sCharacterCache->GetCharacterLevelByGuid(member.GetGUID()); + if (level < minLevel || level > maxLevel) + continue; - if (member.GetGUID() != session->GetPlayer()->GetGUID() && level >= minLevel && level <= maxLevel && member.IsRankNotLower(minRank)) - { - data.appendPackGUID(member.GetGUID().GetRawValue()); - data << uint8(0); // unk - ++count; - } - } + if (!member.IsRankNotLower(minRank)) + continue; - data.put<uint32>(0, count); + packet.Invites.emplace_back(member.GetGUID(), level); + } - session->SendPacket(&data); + session->SendPacket(packet.Write()); } // Members handling |
