aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorOdyssey <odysseyhyd@gmail.com>2014-08-28 23:03:26 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-08-28 23:04:52 +0100
commit8adde791d835a1b18755bb9708c6d8ae2f762755 (patch)
treeae01b42d6b26e17200d2652fca141ae01c43bcd9 /src/server/scripts/Commands
parent37c150a74bf57d68bf8de576dea5dd43f8691392 (diff)
Scripts/Commands: Implement .guild info command
Displays a information summary about the selected player guild or a given guildId or Name Closes #12949 Signed-off-by: DDuarte <dnpd.dd@gmail.com>
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_guild.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp
index 86213291367..0359cbbe379 100644
--- a/src/server/scripts/Commands/cs_guild.cpp
+++ b/src/server/scripts/Commands/cs_guild.cpp
@@ -44,6 +44,7 @@ public:
{ "uninvite", rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE, true, &HandleGuildUninviteCommand, "", NULL },
{ "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "", NULL },
{ "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "", NULL },
+ { "info", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildInfoCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
@@ -243,6 +244,63 @@ public:
handler->PSendSysMessage(LANG_GUILD_RENAME_DONE, oldGuildStr, newGuildStr);
return true;
}
+
+ static bool HandleGuildInfoCommand(ChatHandler* handler, char const* args)
+ {
+ Player* target;
+ uint32 guildId;
+ std::string guildName;
+ std::string guildMasterName;
+ Guild* guild;
+
+ if (!*args)
+ {
+ // Look for the guild of the selected player or ourselves
+ if (target = handler->getSelectedPlayerOrSelf())
+ guild = target->GetGuild();
+ else
+ // getSelectedPlayerOrSelf will return null if there is no session
+ // so target becomes nullptr if the command is ran through console
+ // without specifying args.
+ return false;
+ }
+ else if (guildId = atoi(args)) // Try searching by Id
+ guild = sGuildMgr->GetGuildById(guildId);
+ else
+ {
+ // Try to extract a guild name
+ char* tailStr = *args != '"' ? strtok(NULL, "") : (char*)args;
+ if (!tailStr)
+ return false;
+
+ char* guildStr = handler->extractQuotedArg((char*)args);
+ if (!guildStr)
+ return false;
+
+ guildName = guildStr;
+ guild = sGuildMgr->GetGuildByName(guildName);
+ }
+
+ if (!guild)
+ return false;
+
+ // Display Guild Information
+ handler->PSendSysMessage(LANG_GUILD_INFO_NAME, guild->GetName().c_str(), guild->GetId()); // Guild Id + Name
+ if (sObjectMgr->GetPlayerNameByGUID(guild->GetLeaderGUID(), guildMasterName))
+ handler->PSendSysMessage(LANG_GUILD_INFO_GUILD_MASTER, guildMasterName.c_str(), guild->GetLeaderGUID()); // Guild Master
+
+ // Format creation date
+ char createdDateStr[20];
+ time_t createdDate = guild->GetCreatedDate();
+ strftime(createdDateStr, 20, "%Y-%m-%d %H:%M:%S", localtime(&createdDate));
+
+ handler->PSendSysMessage(LANG_GUILD_INFO_CREATION_DATE, createdDateStr); // Creation Date
+ handler->PSendSysMessage(LANG_GUILD_INFO_MEMBER_COUNT, guild->GetMemberCount()); // Number of Members
+ handler->PSendSysMessage(LANG_GUILD_INFO_BANK_GOLD, guild->GetBankMoney() / 100 / 100); // Bank Gold (in gold coins)
+ handler->PSendSysMessage(LANG_GUILD_INFO_MOTD, guild->GetMOTD().c_str()); // Message of the Day
+ handler->PSendSysMessage(LANG_GUILD_INFO_EXTRA_INFO, guild->GetInfo().c_str()); // Extra Information
+ return true;
+ }
};
void AddSC_guild_commandscript()