aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorAlex Dcnh <140754794+Wishmaster117@users.noreply.github.com>2025-08-25 22:55:27 +0100
committerGitHub <noreply@github.com>2025-08-25 23:55:27 +0200
commit0ed0e66ee00c5cf0ca48c6f8e5b10bf26ef15eb1 (patch)
treea54722002976069e7cacf4d156acfe5ea2d5a25d /src/server/scripts/Commands
parent2e26b18851f98d560421bb75a13fb5e425468743 (diff)
Core/Commands: Add .guild list GM command to list all guilds (#30930)
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_guild.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp
index 1518d0b5422..08fbaf49c23 100644
--- a/src/server/scripts/Commands/cs_guild.cpp
+++ b/src/server/scripts/Commands/cs_guild.cpp
@@ -33,6 +33,7 @@ EndScriptData */
#include "ObjectMgr.h"
#include "Player.h"
#include "RBAC.h"
+#include "Util.h"
#include <iomanip>
#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
@@ -56,6 +57,7 @@ public:
{ "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "" },
{ "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "" },
{ "info", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildInfoCommand, "" },
+ { "list", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildListCommand, "" },
};
static std::vector<ChatCommand> commandTable =
{
@@ -299,6 +301,37 @@ public:
handler->PSendSysMessage(LANG_GUILD_INFO_EXTRA_INFO, guild->GetInfo().c_str()); // Extra Information
return true;
}
+
+ static bool HandleGuildListCommand(ChatHandler* handler)
+ {
+ std::string_view titleAndSummaryColor = handler->IsConsole() ? ""sv : "|cff00ff00"sv;
+ std::string_view tableHeaderColor = handler->IsConsole() ? ""sv : "|cff00ffff"sv;
+ std::string_view resetColor = handler->IsConsole() ? ""sv : "|r"sv;
+
+ handler->PSendSysMessage(LANG_GUILD_LIST_TITLE, titleAndSummaryColor, resetColor);
+ handler->PSendSysMessage(LANG_GUILD_LIST_HEADER, tableHeaderColor, resetColor);
+
+ GuildMgr::GuildContainer const& guildStore = sGuildMgr->GetGuildStore();
+
+ for (auto const& [id, g] : guildStore)
+ {
+ std::string gmName;
+ if (!sCharacterCache->GetCharacterNameByGuid(g->GetLeaderGUID(), gmName))
+ gmName = "---";
+
+ handler->PSendSysMessage(LANG_GUILD_LIST_ROW,
+ id,
+ g->GetName().c_str(),
+ gmName.c_str(),
+ TimeToTimestampStr(g->GetCreatedDate()).c_str(),
+ g->GetMembersCount(),
+ g->GetBankMoney() / GOLD
+ );
+ }
+
+ handler->PSendSysMessage(LANG_GUILD_LIST_TOTAL, titleAndSummaryColor, guildStore.size(), resetColor);
+ return true;
+ }
};
void AddSC_guild_commandscript()