diff options
| author | Odyssey <odysseyhyd@gmail.com> | 2014-08-28 23:03:26 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-08-28 23:04:52 +0100 |
| commit | 8adde791d835a1b18755bb9708c6d8ae2f762755 (patch) | |
| tree | ae01b42d6b26e17200d2652fca141ae01c43bcd9 /src | |
| parent | 37c150a74bf57d68bf8de576dea5dd43f8691392 (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')
| -rw-r--r-- | src/server/game/Accounts/RBAC.h | 1 | ||||
| -rw-r--r-- | src/server/game/Guilds/Guild.h | 3 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/Language.h | 9 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_guild.cpp | 58 |
4 files changed, 70 insertions, 1 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 0a4ec3ab033..020ed1a686a 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -697,6 +697,7 @@ enum RBACPermissions RBAC_PERM_COMMAND_AHBOT_REBUILD = 791, RBAC_PERM_COMMAND_AHBOT_RELOAD = 792, RBAC_PERM_COMMAND_AHBOT_STATUS = 793, + RBAC_PERM_COMMAND_GUILD_INFO = 794, // custom permissions 1000+ RBAC_PERM_MAX diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 8c7b926a700..375d39cf232 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -657,6 +657,9 @@ public: std::string const& GetName() const { return m_name; } std::string const& GetMOTD() const { return m_motd; } std::string const& GetInfo() const { return m_info; } + uint32 GetMemberCount() const { return m_members.size(); } + time_t GetCreatedDate() const { return m_createdDate; } + uint64 GetBankMoney() const { return m_bankMoney; } bool SetName(std::string const& name); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 06c4a43a802..cb868097ac6 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -961,7 +961,14 @@ enum TrinityStrings LANG_AHBOT_QUALITY_YELLOW = 1174, LANG_AHBOT_ITEMS_AMOUNT = 1175, LANG_AHBOT_ITEMS_RATIO = 1176, - // Room for more level 3 1177-1199 not used + LANG_GUILD_INFO_NAME = 1177, + LANG_GUILD_INFO_GUILD_MASTER = 1178, + LANG_GUILD_INFO_CREATION_DATE = 1179, + LANG_GUILD_INFO_MEMBER_COUNT = 1180, + LANG_GUILD_INFO_BANK_GOLD = 1181, + LANG_GUILD_INFO_MOTD = 1182, + LANG_GUILD_INFO_EXTRA_INFO = 1183, + // Room for more level 3 1184-1199 not used // Debug commands LANG_CINEMATIC_NOT_EXIST = 1200, 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() |
