void WorldSession::HandleArenaJoinOpcode(WorldPacket &recv_data) { if(!_player->IsInWorld()) return; CHECK_PACKET_SIZE(recv_data, 11); sLog.outString("BATTLEGROUND: Recieved CMSG_ARENA_JOIN"); uint64 unk1; uint8 arenatype; // 0 - 2vs2 , 1 - 3vs3, 2 - 5vs5 uint16 unk2; recv_data >> unk1 >> arenatype >> unk2; // dunno yet how to handle this. Battleground *bg = sBattlegroundMgr.GetBattlegroundByInstanceID(0,5); // search for the first instance for now... if(!bg) return; WorldPacket *pkt = sBattlegroundMgr.BuildBattlegroundStatusPacket(0, 5, 1, 1, 0x00FFFF00, 0); // put w8ting status. SendPacket(pkt); delete pkt; if(bg->HasFreeSlots(sBattlegroundMgr.GenerateTeamByRace(GetPlayer()->getRace()))) { GetPlayer()->m_bgBattlegroundID = bg->GetID(); pkt = sBattlegroundMgr.BuildBattlegroundStatusPacket(0, 5, 1, 2, 120, 0); // ask for player to join SendPacket(pkt); delete pkt; } }
void WorldSession::HandleBattleMasterJoinOpcode(WorldPacket &recv_data) { if(!_player->IsInWorld()) return; CHECK_PACKET_SIZE(recv_data, 17); sLog.outString("BATTLEGROUND: Recieved CMSG_BATTLEMASTER_JOIN"); uint64 guid; uint32 BattleGroundType; uint32 instance; uint8 unk; recv_data >> guid >> BattleGroundType >> instance >> unk; WorldPacket *pkt = sBattlegroundMgr.BuildBattlegroundStatusPacket(0, BattleGroundType, (instance==0 ? 1 : instance), 1, 0x00FFFF00, 0); SendPacket(pkt); delete pkt; Battleground *bg = sBattlegroundMgr.GetBattlegroundByInstanceID(instance,BattleGroundType); if(!bg) return; if(bg->HasFreeSlots(sBattlegroundMgr.GenerateTeamByRace(GetPlayer()->getRace()))) { GetPlayer()->m_bgBattlegroundID = bg->GetID(); pkt = sBattlegroundMgr.BuildBattlegroundStatusPacket(0, BattleGroundType, (instance==0 ? 1 : instance), 2, 120, 0); SendPacket(pkt); delete pkt; } }