diff options
| author | Heihachi <gamehacker953@gmail.com> | 2014-10-18 23:01:30 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-10-18 23:34:18 +0100 |
| commit | 15a9c6729ee274044b2ba78f8b9ad3c167c94bd1 (patch) | |
| tree | 4ddfb8e940ef3af710a2cfe1901f8281def34e1f /src | |
| parent | f21b55068c1df170211cea3b66057790c68bd761 (diff) | |
Scripts/Commands: Implement mutehistory command for GM's with requested improvements
Closes #13350
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Accounts/RBAC.h | 2 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/Language.h | 7 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 66 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 2 | ||||
| -rw-r--r-- | src/server/shared/Database/Implementation/LoginDatabase.cpp | 2 | ||||
| -rw-r--r-- | src/server/shared/Database/Implementation/LoginDatabase.h | 3 |
6 files changed, 79 insertions, 3 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index afaf1999d45..efbbf61c2ff 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -535,7 +535,7 @@ enum RBACPermissions RBAC_PERM_COMMAND_RELOAD_CONDITIONS = 629, RBAC_PERM_COMMAND_RELOAD_CONFIG = 630, RBAC_PERM_COMMAND_RELOAD_BATTLEGROUND_TEMPLATE = 631, - RBAC_PERM_UNUSED_632 = 632, // unused + RBAC_PERM_COMMAND_MUTEHISTORY = 632, RBAC_PERM_COMMAND_RELOAD_CREATURE_LINKED_RESPAWN = 633, RBAC_PERM_COMMAND_RELOAD_CREATURE_LOOT_TEMPLATE = 634, RBAC_PERM_COMMAND_RELOAD_CREATURE_ONKILL_REPUTATION = 635, diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index f7db4e0f9bd..33abd7ae288 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1111,7 +1111,12 @@ enum TrinityStrings LANG_COMMAND_INST_SET_BOSS_STATE = 5057, LANG_COMMAND_INST_GET_BOSS_STATE = 5058, - // Room for more Trinity strings 5059-9999 + // Mutehistory commands + LANG_COMMAND_MUTEHISTORY = 5059, + LANG_COMMAND_MUTEHISTORY_EMPTY = 5060, + LANG_COMMAND_MUTEHISTORY_OUTPUT = 5061, + + // Room for more Trinity strings 5062-9999 // Level requirement notifications LANG_SAY_REQ = 6604, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index ccfb32a2e09..f8400406bdc 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -74,6 +74,7 @@ public: { "maxskill", rbac::RBAC_PERM_COMMAND_MAXSKILL, false, &HandleMaxSkillCommand, "", NULL }, { "movegens", rbac::RBAC_PERM_COMMAND_MOVEGENS, false, &HandleMovegensCommand, "", NULL }, { "mute", rbac::RBAC_PERM_COMMAND_MUTE, true, &HandleMuteCommand, "", NULL }, + { "mutehistory", rbac::RBAC_PERM_COMMAND_MUTEHISTORY, true, &HandleMuteInfoCommand, "", NULL }, { "neargrave", rbac::RBAC_PERM_COMMAND_NEARGRAVE, false, &HandleNearGraveCommand, "", NULL }, { "pinfo", rbac::RBAC_PERM_COMMAND_PINFO, true, &HandlePInfoCommand, "", NULL }, { "playall", rbac::RBAC_PERM_COMMAND_PLAYALL, false, &HandlePlayAllCommand, "", NULL }, @@ -1849,6 +1850,12 @@ public: stmt->setString(2, muteBy.c_str()); stmt->setUInt32(3, accountId); LoginDatabase.Execute(stmt); + stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE); + stmt->setUInt32(0, accountId); + stmt->setUInt32(1, notSpeakTime); + stmt->setString(2, muteBy.c_str()); + stmt->setString(3, muteReasonStr.c_str()); + LoginDatabase.Execute(stmt); std::string nameLink = handler->playerLink(targetName); if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD) && !target) @@ -1908,6 +1915,65 @@ public: return true; } + // mutehistory command + static bool HandleMuteInfoCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char *nameStr = strtok((char*)args, ""); + if (!nameStr) + return false; + + std::string accountName = nameStr; + if (!AccountMgr::normalizeString(accountName)) + { + handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName.c_str()); + handler->SetSentErrorMessage(true); + return false; + } + + uint32 accountId = AccountMgr::GetId(accountName); + if (!accountId) + { + handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName.c_str()); + return false; + } + + return HandleMuteInfoHelper(accountId, accountName.c_str(), handler); + } + + // helper for mutehistory + static bool HandleMuteInfoHelper(uint32 accountId, char const* accountName, ChatHandler *handler) + { + PreparedStatement *stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO); + stmt->setUInt16(0, accountId); + PreparedQueryResult result = LoginDatabase.Query(stmt); + + if (!result) + { + handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_EMPTY, accountName); + return true; + } + + handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY, accountName); + do + { + Field* fields = result->Fetch(); + + // we have to manually set the string for mutedate + time_t sqlTime = fields[0].GetUInt32(); + struct tm* timeinfo; + char buffer[80]; + + // set it to string + timeinfo = localtime_r(&sqlTime); + strftime(buffer, sizeof(buffer),"%Y-%m-%d %I:%M%p", timeinfo); + + handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_OUTPUT, buffer, fields[1].GetUInt32(), fields[2].GetCString(), fields[3].GetCString()); + } while (result->NextRow()); + return true; + } static bool HandleMovegensCommand(ChatHandler* handler, char const* /*args*/) { diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 93f9519993e..4ac415d7cfd 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4020,7 +4020,7 @@ public: SetBonusValueForEffect(EFFECT_0, 5, aurEff); break; default: - TC_LOG_ERROR("spells", "SpellId %d couldn't be processed in spell_gen_mixology_bonus", GetId()); + TC_LOG_ERROR("spells", "SpellId %u couldn't be processed in spell_gen_mixology_bonus", GetId()); break; } amount += bonus; diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp index a2b9091a8d5..34144417a6e 100644 --- a/src/server/shared/Database/Implementation/LoginDatabase.cpp +++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp @@ -111,4 +111,6 @@ void LoginDatabaseConnection::DoPrepareStatements() PrepareStatement(LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS, "SELECT permissionId, granted FROM rbac_account_permissions WHERE accountId = ? AND (realmId = ? OR realmId = -1) ORDER BY permissionId, realmId", CONNECTION_SYNCH); PrepareStatement(LOGIN_INS_RBAC_ACCOUNT_PERMISSION, "INSERT INTO rbac_account_permissions (accountId, permissionId, granted, realmId) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE granted = VALUES(granted)", CONNECTION_ASYNC); PrepareStatement(LOGIN_DEL_RBAC_ACCOUNT_PERMISSION, "DELETE FROM rbac_account_permissions WHERE accountId = ? AND permissionId = ? AND (realmId = ? OR realmId = -1)", CONNECTION_ASYNC); + PrepareStatement(LOGIN_INS_ACCOUNT_MUTE, "INSERT INTO account_muted VALUES (?, UNIX_TIMESTAMP(), ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO, "SELECT mutedate, mutetime, mutereason, mutedby FROM account_muted WHERE guid = ? ORDER BY mutedate ASC", CONNECTION_SYNCH); } diff --git a/src/server/shared/Database/Implementation/LoginDatabase.h b/src/server/shared/Database/Implementation/LoginDatabase.h index d37149c6a76..c0caaaaf21a 100644 --- a/src/server/shared/Database/Implementation/LoginDatabase.h +++ b/src/server/shared/Database/Implementation/LoginDatabase.h @@ -127,6 +127,9 @@ enum LoginDatabaseStatements LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS, LOGIN_INS_RBAC_ACCOUNT_PERMISSION, LOGIN_DEL_RBAC_ACCOUNT_PERMISSION, + + LOGIN_INS_ACCOUNT_MUTE, + LOGIN_SEL_ACCOUNT_MUTE_INFO, MAX_LOGINDATABASE_STATEMENTS }; |
