rendered paste bodybool 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")
{
Player* _player = m_session->GetPlayer();
if (!_player) return false;
//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;
}
if (argstr == "leave")
{
Player* _player = m_session->GetPlayer();
if (!_player) return false;
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;
}