当前位置: 首页>>代码示例>>C++>>正文


C++ InvitePlayerToQueue函数代码示例

本文整理汇总了C++中InvitePlayerToQueue函数的典型用法代码示例。如果您正苦于以下问题:C++ InvitePlayerToQueue函数的具体用法?C++ InvitePlayerToQueue怎么用?C++ InvitePlayerToQueue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了InvitePlayerToQueue函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: InvitePlayerToWar

// Called when a player enters the zone
void Battlefield::HandlePlayerEnterZone(Player* player, uint32 /*zone*/)
{
    // If battle is started,
    // If not full of players > invite player to join the war
    // If full of players > announce to player that BF is full and kick him after a few second if he desn't leave
    if (IsWarTime())
    {
        if (m_PlayersInWar[player->GetTeamId()].size() + m_InvitedPlayers[player->GetTeamId()].size() < m_MaxPlayer) // Vacant spaces
            InvitePlayerToWar(player);
        else // No more vacant places
        {
            /// @todo Send a packet to announce it to player
            m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = time(NULL) + 10;
            InvitePlayerToQueue(player);
        }
    }
    else
    {
        // If time left is < 15 minutes invite player to join queue
        if (m_Timer <= m_StartGroupingTimer)
            InvitePlayerToQueue(player);
    }

    // Add player in the list of player in zone
    m_players[player->GetTeamId()].insert(player->GetGUID());
    OnPlayerEnterZone(player);
}
开发者ID:Regigicas,项目名称:TrinityCore434,代码行数:28,代码来源:Battlefield.cpp

示例2: InvitePlayerToWar

void Battlefield::HandlePlayerEnterZone(Player* player, uint32 /*zone*/)
{
    // If battle is start,
    //   if it not fully > invite player to join the war
    //   if it fully > announce to player that BF is full and kick after few second if he dont leave
    if (IsWarTime())
    {
        if (m_PlayersInWar[player->GetTeamId()].size() + m_InvitedPlayers[player->GetTeamId()].size() < m_MaxPlayer)  //Not fully
            InvitePlayerToWar(player);
        else                                                //Full
        {
            //TODO:Send packet for announce it to player
            m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = time(NULL) + 10;
            InvitePlayerToQueue(player);
        }
    }
    else
    {
        //If time left is <15 minutes invite player to join queue
        if (m_Timer <= m_StartGroupingTimer)
            InvitePlayerToQueue(player);
    }

    //Add player in list of player in zone
    m_players[player->GetTeamId()].insert(player->GetGUID());
    OnPlayerEnterZone(player);                                 //for scripting
}
开发者ID:AtVirus,项目名称:SkyFireEMU,代码行数:27,代码来源:Battlefield.cpp

示例3: InvitePlayerToQueue

void Battlefield::InvitePlayersInZoneToQueue()
{
    for (uint8 team = 0; team < 2; ++team)
        for (GuidSet::const_iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
            if (Player* player = ObjectAccessor::FindPlayer(*itr))
                InvitePlayerToQueue(player);
}
开发者ID:Regigicas,项目名称:TrinityCore434,代码行数:7,代码来源:Battlefield.cpp

示例4: InvitePlayerToQueue

void Battlefield::InvitePlayersInZoneToQueue()
{
    for (uint8 team = 0; team < BG_TEAMS_COUNT; ++team)
        for (auto itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
            if (Player* player = ObjectAccessor::FindPlayer(*itr))
                InvitePlayerToQueue(player);
}
开发者ID:Refuge89,项目名称:TrinityCore,代码行数:7,代码来源:Battlefield.cpp

示例5: time

/**
  Function that adds a player to the players of the affected battlefield zones

  @param   player to add
  @param   whether zone is main outdoor pvp zone or a affected zone
*/
void Battlefield::HandlePlayerEnterZone(Player* player, bool isMainZone)
{
    OutdoorPvP::HandlePlayerEnterZone(player, isMainZone);

    // invite to group or queue
    if (!HasPlayer(player->GetObjectGuid()))
    {
        if (GetBattlefieldStatus() == BF_STATUS_IN_PROGRESS)
        {
            m_invitedPlayers[GetTeamIndexByTeamId(player->GetTeam())][player->GetObjectGuid()] = time(nullptr) + BF_TIME_TO_ACCEPT;
            player->GetSession()->SendBattlefieldWarInvite(m_battleFieldId, m_zoneId, BF_TIME_TO_ACCEPT);
        }
        else if (GetBattlefieldStatus() == BF_STATUS_COOLDOWN && m_timer < m_startInviteDelay)
            InvitePlayerToQueue(player);
    }

    // check if player is already marked as active
    BattlefieldPlayerDataMap::iterator itr = m_activePlayers.find(player->GetObjectGuid());
    if (itr == m_activePlayers.end())
        InitPlayerBattlefieldData(player);
    else
    {
        if (GetBattlefieldStatus() == BF_STATUS_IN_PROGRESS && itr->second->removeTime && m_startTime > itr->second->removeTime)
            SetupPlayerPosition(player);

        itr->second->removeTime = 0;
    }
}
开发者ID:lduguid,项目名称:mangos-wotlk,代码行数:34,代码来源:Battlefield.cpp

示例6: SendBattlefieldTimerUpdate

/**
  Battlefield update function
*/
void Battlefield::Update(uint32 diff)
{
    // update battlefield timer to everyone
    SendBattlefieldTimerUpdate();

    // global battlefield timer
    if (m_timer < diff)
    {
        if (m_status == BF_STATUS_COOLDOWN)
            StartBattle(m_zoneOwner);
        else if (m_status == BF_STATUS_IN_PROGRESS)
            EndBattle(m_zoneOwner);
    }
    else
        m_timer -= diff;

    // refresh battlefield players
    if (GetBattlefieldStatus() == BF_STATUS_IN_PROGRESS)
    {
        if (m_playersUpdateTimer < diff)
        {
            UpdateBattlefieldPlayers();
            m_playersUpdateTimer = 5000;
        }
        else
            m_playersUpdateTimer -= diff;
    }

    // invite all players in zone to queue
    if (GetBattlefieldStatus() == BF_STATUS_COOLDOWN && m_timer <= m_startInviteDelay && !m_playersInvited)
    {
        m_playersInvited = true;
        for (auto& m_zonePlayer : m_zonePlayers)
        {
            if (!m_zonePlayer.first)
                continue;

            Player* player = sObjectMgr.GetPlayer(m_zonePlayer.first);
            if (!player)
                continue;

            InvitePlayerToQueue(player);
        }
    }

    // kick all the players marked to leave
    if (GetBattlefieldStatus() == BF_STATUS_IN_PROGRESS)
    {
        for (auto& m_invitedPlayer : m_invitedPlayers)
        {
            for (std::map<ObjectGuid, time_t>::iterator itr = m_invitedPlayer.begin(); itr != m_invitedPlayer.end();)
            {
                if (itr->second < time(nullptr))
                {
                    if (Player* player = sObjectMgr.GetPlayer(itr->first))
                        player->GetSession()->SendBattlefieldLeaveMessage(m_battleFieldId, BATTLEFIELD_LEAVE_REASON_EXITED);

                    m_invitedPlayer.erase(itr++);
                }
                else
                    ++itr;
            }
        }
    }

    // check the queued players
    if (m_queueUpdateTimer < diff)
    {
        m_queueUpdateTimer = 30000;

        for (auto& m_queuedPlayer : m_queuedPlayers)
        {
            for (std::set<ObjectGuid>::iterator itr = m_queuedPlayer.begin(); itr != m_queuedPlayer.end();)
            {
                if (!sObjectMgr.GetPlayer(*itr, true))
                    m_queuedPlayer.erase(itr++);
                else
                    ++itr;
            }
        }
    }
    else
        m_queueUpdateTimer -= diff;
}
开发者ID:lduguid,项目名称:mangos-wotlk,代码行数:87,代码来源:Battlefield.cpp


注:本文中的InvitePlayerToQueue函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。