bool ChatHandler::HandleLockAccountCommand(const char* args) { if (!*args) { SendSysMessage(LANG_COMMAND_ACCLOCKPARAMETER); return true; } std::string argstr = (char*)args; if (argstr == "on") { loginDatabase.PExecute( "UPDATE `account` SET `locked` = '1' WHERE `id` = '%d'",m_session->GetAccountId()); PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); return true; } if (argstr == "off") { loginDatabase.PExecute( "UPDATE `account` SET `locked` = '0' WHERE `id` = '%d'",m_session->GetAccountId()); PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); return true; } else SendSysMessage(LANG_BAD_VALUE); return true; } bool ChatHandler::HandlePVPCommand(const char * args) { Player *chr = m_session->GetPlayer(); if(chr->isInFlight()) { SendSysMessage(LANG_YOU_IN_FLIGHT); return true; } if(chr->isInCombat()) { SendSysMessage(LANG_YOU_IN_COMBAT); return true; } if (!*args) { SendSysMessage("Usage - .pvp enter or .pvp leave"); return true; } std::string argstr = (char*)args; if (argstr == "enter") { //add check to see if player has left arena QueryResult *result = sDatabase.PQuery("SELECT `in_arena` FROM `pvp_cmd_data` WHERE `id` = '%d'", chr->GetGUIDLow()); if(result) { Field *fields = result->Fetch(); uint32 inarena = fields[0].GetUInt32(); if (inarena == 1) { sDatabase.PExecute( "UPDATE SET `time` =%d WHERE `playerid`= %d", time(NULL), chr->GetGUIDLow()); sDatabase.PExecute( "UPDATE SET `in_arena` =0 WHERE `playerid`= %d", chr->GetGUIDLow()); SendSysMessage("You did not leave the arena, resetting cooldown"); return true; } PSendSysMessage("Teleporting you to STV Arena"); sDatabase.PExecute( "DELETE FROM `pvp_cmd_data` WHERE `playerid`= %d", chr->GetGUIDLow()); sDatabase.PExecute( "INSERT INTO `pvp_cmd_data` VALUES(%d, %d, 1, %f, %f, %f, %d)", chr->GetGUIDLow(), time(NULL), chr->GetPositionX(), chr->GetPositionZ(), chr->GetPositionY(), chr->GetMapId()); _player->TeleportTo(0, -13228.1, 227.833, 32.8926, 0); return true; } else if (argstr == "leave") { Player* _player = m_session->GetPlayer(); PSendSysMessage("Teleporting you out of Arena"); _player->TeleportTo(1, 16222.1, 16252.1, 12.5872, 0, true, true, true); return true; } else SendSysMessage("Usage - .pvp enter or .pvp leave"); return true; }