aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Chat/Commands/Level2.cpp19
-rwxr-xr-xsrc/server/game/Miscellaneous/Language.h2
-rwxr-xr-xsrc/server/game/Server/WorldSocket.cpp8
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)