//mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) { char* nameStr; char* delayStr; extractOptFirstArg((char*)args, &nameStr, &delayStr); if (!delayStr) return false; char *mutereason = strtok(NULL, "\r"); std::string mutereasonstr = "No reason"; if (mutereason != NULL) mutereasonstr = mutereason; Player* target; uint64 target_guid; std::string target_name; if (!extractPlayerTarget(nameStr, &target, &target_guid, &target_name)) return false; uint32 account_id = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) if (WorldSession* session = sWorld->FindSession(account_id)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); // must have strong lesser security level if (HasLowerSecurity (target, target_guid, true)) return false; 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 = " 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 = -int32(notspeaktime * MINUTE); LoginDatabase.PExecute("UPDATE account SET mutetime = %d WHERE id = %u", muteTime, account_id); } std::string nameLink = playerLink(target_name); PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); return true; }
//mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) { char* nameStr; char* delayStr; extractOptFirstArg((char*)args,&nameStr,&delayStr); if (!delayStr) return false; char *mutereason = strtok(NULL, "\r"); std::string mutereasonstr = "No reason"; if (mutereason != NULL) mutereasonstr = mutereason; Player* target; uint64 target_guid; std::string target_name; if (!extractPlayerTarget(nameStr,&target,&target_guid,&target_name)) return false; uint32 account_id = target ? target->GetSession()->GetAccountId() : sObjectMgr.GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) if (WorldSession* session = sWorld.FindSession(account_id)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); // must have strong lesser security level if (HasLowerSecurity (target,target_guid,true)) return false; time_t mutetime = time(NULL) + notspeaktime*60; if (target) target->GetSession()->m_muteTime = mutetime; LoginDatabase.PExecute("UPDATE account SET mutetime = " UI64FMTD " WHERE id = '%u'",uint64(mutetime), account_id); if (target) ChatHandler(target).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notspeaktime, mutereasonstr.c_str()); std::string nameLink = playerLink(target_name); PSendSysMessage(LANG_YOU_DISABLE_CHAT, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); return true; }
//mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) { std::string announce; char* nameStr; char* delayStr; extractOptFirstArg((char*)args, &nameStr, &delayStr); if (!delayStr) return false; char *mutereason = strtok(NULL, "\r"); std::string mutereasonstr = "No reason"; if (mutereason != NULL) mutereasonstr = mutereason; if(!mutereason) { PSendSysMessage("You must enter a reason of mute"); SetSentErrorMessage(true); return false; } Player* target; uint64 target_guid; std::string target_name; if (!extractPlayerTarget(nameStr, &target, &target_guid, &target_name)) return false; uint32 accountId = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) if (WorldSession* session = sWorld->FindSession(accountId)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); // must have strong lesser security level if (HasLowerSecurity (target, target_guid, true)) return false; PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); if (target) { // Target is online, mute will be in effect right away. int64 muteTime = time(NULL) + notspeaktime * MINUTE; target->GetSession()->m_muteTime = muteTime; stmt->setInt64(0, muteTime); 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 = -int32(notspeaktime * MINUTE); stmt->setInt64(0, muteTime); } stmt->setUInt32(1, accountId); LoginDatabase.Execute(stmt); std::string nameLink = playerLink(target_name); PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); announce = "The character '"; announce += nameStr; announce += "' was muted for "; announce += delayStr; announce += " minutes by the character '"; announce += m_session->GetPlayerName(); announce += "'. The reason is: "; announce += mutereason; HandleAnnounceCommand(announce.c_str()); return true; }
//mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) { std::string announce; char* nameStr; char* delayStr; extractOptFirstArg((char*)args,&nameStr,&delayStr); if (!delayStr) return false; char *mutereason = strtok(NULL, "\r"); std::string mutereasonstr = "Нет причины"; if (mutereason != NULL) mutereasonstr = mutereason; if(!mutereason) { PSendSysMessage("Вы должны ввести причину блокировки чата"); SetSentErrorMessage(true); return false; } Player* target; uint64 target_guid; std::string target_name; if (!extractPlayerTarget(nameStr,&target,&target_guid,&target_name)) return false; uint32 account_id = target ? target->GetSession()->GetAccountId() : sObjectMgr.GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) if (WorldSession* session = sWorld.FindSession(account_id)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); // must have strong lesser security level if (HasLowerSecurity (target,target_guid,true)) return false; time_t mutetime = time(NULL) + notspeaktime*60; if (target) target->GetSession()->m_muteTime = mutetime; LoginDatabase.PExecute("UPDATE account SET mutetime = " UI64FMTD " WHERE id = '%u'",uint64(mutetime), account_id); if (target) ChatHandler(target).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, notspeaktime, mutereasonstr.c_str()); std::string nameLink = playerLink(target_name); PSendSysMessage(LANG_YOU_DISABLE_CHAT, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); announce = "У игрока '"; announce += nameStr; announce += "' был отключён чат на "; announce += delayStr; announce += " минут персонажем '"; announce += m_session->GetPlayerName(); announce += "'. Причина: "; announce += mutereason; HandleAnnounceCommand(announce.c_str()); return true; }
//mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) { char* nameStr; char* delayStr; extractOptFirstArg((char*)args, &nameStr, &delayStr); if (!delayStr) return false; char *mutereason = strtok(NULL, "\r"); std::string mutereasonstr = "No reason"; if (mutereason != NULL) mutereasonstr = mutereason; mutereasonstr = mutereasonstr + " - Наказал - " + m_session->GetPlayer()->GetName(); Player* target; uint64 target_guid; std::string target_name; if (!extractPlayerTarget(nameStr, &target, &target_guid, &target_name)) return false; uint32 accountId = target ? target->GetSession()->GetAccountId() : sObjectMgr->GetPlayerAccountIdByGUID(target_guid); // find only player from same account if any if (!target) if (WorldSession* session = sWorld->FindSession(accountId)) target = session->GetPlayer(); uint32 notspeaktime = (uint32) atoi(delayStr); // must have strong lesser security level if (HasLowerSecurity (target, target_guid, true)) return false; PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); if (target) { // Target is online, mute will be in effect right away. int64 muteTime = time(NULL) + notspeaktime * MINUTE; target->GetSession()->m_muteTime = muteTime; stmt->setInt64(0, muteTime); 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 = -int32(notspeaktime * MINUTE); stmt->setInt64(0, muteTime); } stmt->setUInt32(1, accountId); LoginDatabase.Execute(stmt); std::string nameLink = playerLink(target_name); if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD)) sWorld->SendWorldText(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); else PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED, nameLink.c_str(), notspeaktime, mutereasonstr.c_str()); return true; }