예제 #1
0
void WorldSession::HandleBattleGroundPlayerPositionsOpcode( WorldPacket &recv_data )
{

    if(!GetPlayer()->InBattleGround())
        return;

    BattleGround* bg = sBattleGroundMgr.GetBattleGround(GetPlayer()->GetBattleGroundId());
    if(!bg)
        return;

    std::list<Player*> ListToSend;

    for(std::list<Player*>::iterator i = bg->GetPlayersBegin(); i != bg->GetPlayersEnd(); ++i)
    {
        if((*i) != GetPlayer())
            ListToSend.push_back(*i);
    }

    WorldPacket data(MSG_BATTLEGROUND_PLAYER_POSITIONS, (4+16*ListToSend.size()+1));
    data << uint32(ListToSend.size());
    for(std::list<Player*>::iterator itr=ListToSend.begin();itr!=ListToSend.end();++itr)
    {
        data << (uint64)(*itr)->GetGUID();
        data << (float)(*itr)->GetPositionX();
        data << (float)(*itr)->GetPositionY();
    }
    data << uint8(0);
    SendPacket(&data);
}