diff options
| author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-07-27 17:51:57 +0200 |
|---|---|---|
| committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-07-27 17:51:57 +0200 |
| commit | 0dcc22907114508141cbabbca69aeaa0791feb79 (patch) | |
| tree | 7c06ff9c085d0f10825f12951e41178de852f644 /src | |
| parent | 2eb69330b4f15e1fad6702a4829420c1a7f33208 (diff) | |
Core/Commands: Allow muting offline players - the mute will become effective on next player login.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Chat/Commands/Level2.cpp | 19 | ||||
| -rwxr-xr-x | src/server/game/Miscellaneous/Language.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSocket.cpp | 8 |
3 files changed, 20 insertions, 9 deletions
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 8625a0ac23a..ea7f17201d5 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -76,19 +76,24 @@ bool ChatHandler::HandleMuteCommand(const char* args) if (HasLowerSecurity (target, target_guid, true)) return false; - time_t mutetime = time(NULL) + notspeaktime*60; - if (target) + { + //! Target is online, mute will be in effect right away. + int64 mutetime = time(NULL) + notspeaktime * MINUTE; target->GetSession()->m_muteTime = mutetime; - - LoginDatabase.PExecute("UPDATE account SET mutetime = " UI64FMTD " WHERE id = '%u'", uint64(mutetime), account_id); - - if (target) + LoginDatabase.PExecute("UPDATE account SET mutetime = " SI64FMTD " WHERE id = '%u'", mutetime, account_id); ChatHandler(target).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notspeaktime, mutereasonstr.c_str()); + } + else + { + //! Target is offline, mute will be in effect starting from the next login. + int32 muteTime = -(notspeaktime * MINUTE); + LoginDatabase.PExecute("UPDATE account SET mutetime = %d WHERE id = %u", muteTime, account_id); + } std::string nameLink = playerLink(target_name); - PSendSysMessage(LANG_YOU_DISABLE_CHAT, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); + PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); return true; } diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index bd2c34aef5c..d160d42e19c 100755 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -267,7 +267,7 @@ enum TrinityStrings LANG_COMMAND_ADDVENDORITEMITEMS = 280, LANG_COMMAND_KICKSELF = 281, LANG_COMMAND_KICKMESSAGE = 282, - // 283, not used + LANG_COMMAND_DISABLE_CHAT_DELAYED = 283, LANG_COMMAND_WHISPERACCEPTING = 284, LANG_COMMAND_WHISPERON = 285, LANG_COMMAND_WHISPEROFF = 286, diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index fb152cfd331..8c854b7d30c 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -889,7 +889,13 @@ int WorldSocket::HandleAuthSession (WorldPacket& recvPacket) K.SetHexStr (fields[1].GetCString()); - time_t mutetime = time_t (fields[7].GetUInt64()); + int64 mutetime = fields[7].GetInt64(); + //! Negative mutetime indicates amount of seconds to be muted effective on next login - which is now. + if (mutetime < 0) + { + mutetime = time(NULL) + abs(mutetime); + LoginDatabase.PExecute("UPDATE account SET mutetime = " SI64FMTD " WHERE id = '%u'", mutetime, id); + } locale = LocaleConstant (fields[8].GetUInt8()); if (locale >= TOTAL_LOCALES) |
