aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-05-10 13:09:59 +0200
committerShauren <shauren.trinity@gmail.com>2021-05-10 13:09:59 +0200
commit3b95d3dcf95caa6df3f5b7897e8b29dbb1cb58e3 (patch)
treefe6ed60e3a9cb43f847a6adee6ed7a981e5f67fc /src/server/game/Guilds
parent5081b0c4993a261cbef7840846e78127a20d87e4 (diff)
Core/PacketIO: Fixed SMSG_GUILD_EVENT for empty MOTD broken after cd28423a4e813baf6833f38c93613a7f82a721f8
Closes #26522
Diffstat (limited to 'src/server/game/Guilds')
-rw-r--r--src/server/game/Guilds/Guild.cpp23
-rw-r--r--src/server/game/Guilds/Guild.h3
2 files changed, 20 insertions, 6 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 41fbf0661ad..690ecc14e52 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1894,7 +1894,7 @@ void Guild::SendLoginInfo(WorldSession* session)
{
WorldPackets::Guild::GuildEvent motd;
motd.Type = GE_MOTD;
- motd.Params[0] = m_motd.c_str();
+ motd.Params.emplace_back(m_motd);
session->SendPacket(motd.Write());
TC_LOG_DEBUG("guild", "SMSG_GUILD_EVENT [%s] MOTD", session->GetPlayerInfo().c_str());
@@ -2828,13 +2828,26 @@ void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const
_SendBankList(nullptr, tabId, false, &slots);
}
-void Guild::_BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, std::string_view param1, std::string_view param2, std::string_view param3) const
+void Guild::_BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid,
+ Optional<std::string_view> param1 /*= {}*/, Optional<std::string_view> param2 /*= {}*/, Optional<std::string_view> param3 /*= {}*/) const
{
WorldPackets::Guild::GuildEvent event;
event.Type = guildEvent;
- event.Params[0] = param1;
- event.Params[1] = param2;
- event.Params[2] = param3;
+ if (param1)
+ event.Params.push_back(*param1);
+
+ if (param2)
+ {
+ event.Params.resize(2);
+ event.Params[1] = *param2;
+ }
+
+ if (param3)
+ {
+ event.Params.resize(3);
+ event.Params[2] = *param3;
+ }
+
event.Guid = guid;
BroadcastPacket(event.Write());
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index d47948a462d..5b8b6d38ac8 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -20,6 +20,7 @@
#include "DatabaseEnvFwd.h"
#include "ObjectGuid.h"
+#include "Optional.h"
#include "SharedDefines.h"
#include <set>
#include <unordered_map>
@@ -820,6 +821,6 @@ class TC_GAME_API Guild
void _SendBankContentUpdate(uint8 tabId, SlotIds slots) const;
void _SendBankList(WorldSession* session = nullptr, uint8 tabId = 0, bool sendFullSlots = false, SlotIds* slots = nullptr) const;
- void _BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, std::string_view param1 = "", std::string_view param2 = "", std::string_view param3 = "") const;
+ void _BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, Optional<std::string_view> param1 = {}, Optional<std::string_view> param2 = {}, Optional<std::string_view> param3 = {}) const;
};
#endif