All pastes #568485 Raw Edit

Something

public text v1 · immutable
·published 2007-06-15 15:47 UTC
rendered paste body
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;
}