aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-21 12:25:22 +0100
committerShauren <shauren.trinity@gmail.com>2023-12-02 15:57:03 +0100
commit45a5b6a9f04d2f605e7141b8da6e9cfa24711e07 (patch)
tree5d0f5890d888610ad4cf598db9c47e831a41eb35 /src/server/game/Guilds/Guild.cpp
parent9daaa99ed49fc4ed63007bc932a411d33b5b7ef8 (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.cpp30
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