diff --git a/data/sql/updates/pending_db_world/rev_1515920217003409800.sql b/data/sql/updates/pending_db_world/rev_1515920217003409800.sql new file mode 100644 index 000000000..4231f9f8c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1515920217003409800.sql @@ -0,0 +1,5 @@ +INSERT INTO version_db_world (`sql_rev`) VALUES ('1515920217003409800'); + +DELETE FROM `command` WHERE `name` = 'guild info'; +INSERT INTO `command` (`name`, `security`, `help`) VALUES +('guild info', 2, 'Shows information about the target''s guild or a given Guild Id or Name.'); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 9c3a093e2..0c6445cba 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1161,7 +1161,7 @@ bool Guild::Create(Player* pLeader, std::string const& name) m_info = ""; m_motd = "No message set."; m_bankMoney = 0; - m_createdDate = ::time(NULL); + m_createdDate = sWorld->GetGameTime(); _CreateLogHolders(); #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index c2f66ffe7..dd8eddcc2 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -747,6 +747,7 @@ public: // pussywizard uint64 GetTotalBankMoney() const { return m_bankMoney; } uint32 GetMemberCount() const { return m_members.size(); } + time_t GetCreatedDate() const { return m_createdDate; } // Bank tabs void SetBankTabText(uint8 tabId, std::string const& text); diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index 638943060..910af5707 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -31,7 +31,8 @@ public: { "delete", SEC_GAMEMASTER, true, &HandleGuildDeleteCommand, "" }, { "invite", SEC_GAMEMASTER, true, &HandleGuildInviteCommand, "" }, { "uninvite", SEC_GAMEMASTER, true, &HandleGuildUninviteCommand, "" }, - { "rank", SEC_GAMEMASTER, true, &HandleGuildRankCommand, "" } + { "rank", SEC_GAMEMASTER, true, &HandleGuildRankCommand, "" }, + { "info", SEC_GAMEMASTER, true, &HandleGuildInfoCommand, "" } }; static std::vector commandTable = { @@ -180,6 +181,44 @@ public: uint8 newRank = uint8(atoi(rankStr)); return targetGuild->ChangeMemberRank(targetGuid, newRank); } + + static bool HandleGuildInfoCommand(ChatHandler* handler, char const* args) + { + Guild* guild = nullptr; + + if (args && args[0] != '\0') + { + if (isNumeric(args)) + guild = sGuildMgr->GetGuildById(strtoull(args, nullptr, 10)); + else + guild = sGuildMgr->GetGuildByName(args); + } + else if (Player* target = handler->getSelectedPlayerOrSelf()) + guild = target->GetGuild(); + + if (!guild) + return false; + + // Display Guild Information + handler->PSendSysMessage(LANG_GUILD_INFO_NAME, guild->GetName().c_str(), guild->GetId()); // Guild Id + Name + std::string guildMasterName; + if (sObjectMgr->GetPlayerNameByGUID(guild->GetLeaderGUID(), guildMasterName)) + handler->PSendSysMessage(LANG_GUILD_INFO_GUILD_MASTER, guildMasterName.c_str(), GUID_LOPART(guild->GetLeaderGUID())); // Guild Master + + // Format creation date + char createdDateStr[20]; + time_t createdDate = guild->GetCreatedDate(); + tm localTm; + ACE_OS::localtime_r(&createdDate, &localTm); + strftime(createdDateStr, 20, "%Y-%m-%d %H:%M:%S", &localTm); + + 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->GetTotalBankMoney() / 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()