Skip to content

Commit 777976c

Browse files
committed
Add command to view guild log.
1 parent 961832a commit 777976c

4 files changed

Lines changed: 75 additions & 0 deletions

File tree

src/game/Chat/Chat.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ ChatCommand * ChatHandler::getCommandTable()
448448
{ "uninvite", SEC_GAMEMASTER, true, &ChatHandler::HandleGuildUninviteCommand, "", nullptr },
449449
{ "rank", SEC_GAMEMASTER, true, &ChatHandler::HandleGuildRankCommand, "", nullptr },
450450
{ "rename", SEC_BASIC_ADMIN, true, &ChatHandler::HandleGuildRenameCommand, "", nullptr },
451+
{ "showlog", SEC_GAMEMASTER, true, &ChatHandler::HandleGuildShowLogCommand, "", nullptr },
451452
{ nullptr, 0, false, nullptr, "", nullptr }
452453
};
453454

@@ -3894,6 +3895,15 @@ std::string ChatHandler::GetNameLink(Player* chr) const
38943895
return playerLink(chr->GetName());
38953896
}
38963897

3898+
std::string ChatHandler::GetNameLink(uint32 guidLow) const
3899+
{
3900+
std::string name;
3901+
if (sObjectMgr.GetPlayerNameByGUID(ObjectGuid(HIGHGUID_PLAYER, guidLow), name))
3902+
return playerLink(name);
3903+
else
3904+
return playerLink(std::to_string(guidLow));
3905+
}
3906+
38973907
std::string ChatHandler::GetItemLink(ItemPrototype const* pItem) const
38983908
{
38993909
if (m_session)

src/game/Chat/Chat.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class ChatHandler
127127

128128
std::string playerLink(std::string const& name) const { return m_session ? "|cffffffff|Hplayer:"+name+"|h["+name+"]|h|r" : name; }
129129
std::string GetNameLink(Player* chr) const;
130+
std::string GetNameLink(uint32 guidLow) const;
130131
std::string GetItemLink(ItemPrototype const* pItem) const;
131132

132133
GameObject* GetGameObjectWithGuid(uint32 lowguid,uint32 entry);
@@ -542,6 +543,7 @@ class ChatHandler
542543
bool HandleGuildRankCommand(char* args);
543544
bool HandleGuildDeleteCommand(char* args);
544545
bool HandleGuildRenameCommand(char* args);
546+
bool HandleGuildShowLogCommand(char* args);
545547

546548
bool HandleGroupAddItemCommand(char* args);
547549
bool HandleGroupReviveCommand(char* args);

src/game/Commands/MiscCommands.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,47 @@ bool ChatHandler::HandleGuildRenameCommand(char* args)
520520
return true;
521521
}
522522

523+
bool ChatHandler::HandleGuildShowLogCommand(char* args)
524+
{
525+
if (!args || !*args)
526+
return false;
527+
528+
char* guildName = ExtractQuotedArg(&args);
529+
if (!guildName)
530+
return false;
531+
532+
Guild* target = sGuildMgr.GetGuildByName(guildName);
533+
if (!target)
534+
{
535+
SendSysMessage(LANG_GUILD_NOT_FOUND);
536+
SetSentErrorMessage(true);
537+
return false;
538+
}
539+
540+
if (target->GetGuildEventLog().empty())
541+
{
542+
SendSysMessage("Guild log is empty.");
543+
return true;
544+
}
545+
546+
time_t now = time(nullptr);
547+
SendSysMessage("Showing guild log:");
548+
for (auto const& itr : target->GetGuildEventLog())
549+
{
550+
time_t timeSinceEvent = now - itr.timestamp;
551+
PSendSysMessage("- Type: %s%s%s, Player1: %s, Player2: %s, Time: %s%s%s ago",
552+
m_session ? "|cff00ff00" : "",
553+
GuildEventLogTypeToString(itr.eventType),
554+
m_session ? "|r" : "",
555+
GetNameLink(itr.playerGuid1).c_str(),
556+
GetNameLink(itr.playerGuid2).c_str(),
557+
m_session ? "|cffffffff" : "",
558+
secsToTimeString(timeSinceEvent, true).c_str(),
559+
m_session ? "|r" : "");
560+
}
561+
return true;
562+
}
563+
523564
bool ChatHandler::HandleInstanceBindingMode(char* args)
524565
{
525566
Player* player = GetSession()->GetPlayer();

src/game/Guild/Guild.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,27 @@ enum GuildEventLogTypes
163163
GUILD_EVENT_LOG_LEAVE_GUILD = 6,
164164
};
165165

166+
inline char const* GuildEventLogTypeToString(uint8 type)
167+
{
168+
switch (type)
169+
{
170+
case GUILD_EVENT_LOG_INVITE_PLAYER:
171+
return "Invite";
172+
case GUILD_EVENT_LOG_JOIN_GUILD:
173+
return "Join";
174+
case GUILD_EVENT_LOG_PROMOTE_PLAYER:
175+
return "Promote";
176+
case GUILD_EVENT_LOG_DEMOTE_PLAYER:
177+
return "Demote";
178+
case GUILD_EVENT_LOG_UNINVITE_PLAYER:
179+
return "Uninvite";
180+
case GUILD_EVENT_LOG_LEAVE_GUILD:
181+
return "Leave";
182+
}
183+
return "UNKNOWN";
184+
}
185+
186+
166187
enum GuildEmblem
167188
{
168189
ERR_GUILDEMBLEM_SUCCESS = 0,
@@ -323,6 +344,7 @@ class Guild
323344
void LoadGuildEventLogFromDB();
324345
void DisplayGuildEventLog(WorldSession* session);
325346
void LogGuildEvent(uint8 eventType, ObjectGuid playerGuid1, ObjectGuid playerGuid2 = ObjectGuid(), uint8 newRank = 0);
347+
std::list<GuildEventLogEntry> const& GetGuildEventLog() const { return m_GuildEventLog; }
326348
ObjectGuid GetGuildInviter(ObjectGuid playerGuid) const;
327349

328350
protected:

0 commit comments

Comments
 (0)