Ejemplo n.º 1
0
void Channel::KickOrBan(uint64 good, const char *badname, bool ban)
{
    uint32 sec = 0;
    Player *gplr = objmgr.GetPlayer(good);
    if(gplr)
        sec = gplr->GetSession()->GetSecurity();

    if(!IsOn(good))
    {
        WorldPacket data;
        MakeNotOn(&data);
        SendToOne(&data,good);
    }
    else if(!players[good].moderator && sec < SEC_GAMEMASTER)
    {
        WorldPacket data;
        MakeNotModerator(&data);
        SendToOne(&data,good);
    }
    else
    {
        Player *bad = objmgr.GetPlayer(badname);
        if(bad == NULL || !IsOn(bad->GetGUID()))
        {
            WorldPacket data;
            MakeNotOn(&data,badname);
            SendToOne(&data,good);
        }
        else if(sec < SEC_GAMEMASTER && bad->GetGUID() == m_ownerGUID && good != m_ownerGUID)
        {
            WorldPacket data;
            MakeNotOwner(&data);
            SendToOne(&data,good);
        }
        else
        {
            bool changeowner = (m_ownerGUID == bad->GetGUID());

            WorldPacket data;

            if(ban && !IsBanned(bad->GetGUID()))
            {
                banned.push_back(bad->GetGUID());
                MakeBanned(&data,good,bad->GetGUID());
            }
            else
                MakeKicked(&data,good,bad->GetGUID());

            SendToAll(&data);
            players.erase(bad->GetGUID());

            if(changeowner)
            {
                uint64 newowner = players.size() > 0 ? good : false;
                SetOwner(newowner);
            }
        }
    }
}
Ejemplo n.º 2
0
void Channel::KickOrBan(Player *good, const char *badname, bool ban)
{
	WorldPacket data;
	if(!IsOn(good))
	{
		MakeNotOn(&data);
		SendToOne(&data,good);
	}
	else if(!players[good].moderator && good->GetSession()->GetSecurity() < 2)
	{
		MakeNotModerator(&data);
		SendToOne(&data,good);
	}
	else
	{
		Player *bad = objmgr.GetPlayer(badname);
		if(bad == NULL || !IsOn(bad))
		{
			MakeNotOn(&data,badname);
			SendToOne(&data,good);
		}
		else if(good->GetSession()->GetSecurity() < 2 && bad == owner && good != owner)
		{
			MakeNotOwner(&data);
			SendToOne(&data,good);
		}
		else
		{
			bool changeowner = (owner == bad);

			if(ban && !IsBanned(bad->GetGUID()))
			{
				banned.push_back(bad->GetGUID());
				MakeBanned(&data,good,bad);
			}
			else
				MakeKicked(&data,good,bad);	

			SendToAll(&data);
			players.erase(bad);

			if (!constant && changeowner)
			{
				Player *newowner = players.size() > 0 ? good : NULL;
				SetOwner(newowner);
			}
		}
	}
}