Merge remote-tracking branch 'origin/3.3.5' into 4.3.4
Conflicts: sql/base/auth_database.sql src/server/game/Instances/InstanceScript.h src/server/scripts/Northrend/isle_of_conquest.cpp src/server/shared/Database/Implementation/LoginDatabase.cpp src/server/shared/Database/Implementation/LoginDatabase.h
This commit is contained in:
@@ -73,6 +73,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 },
|
||||
@@ -1850,6 +1851,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)
|
||||
@@ -1909,6 +1916,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*/)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user