ECryLobbyError SendToAll( CCryLobbyPacket* pPacket, CrySessionHandle h, SSessionNames &clients, bool bCheckConnectionState ) { ECryLobbyError result = eCLE_Success; ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); if (pLobby) { ICryMatchMaking *pMatchMaking = pLobby->GetMatchMaking(); if (pMatchMaking) { const unsigned int numClients = clients.m_sessionNames.size(); // Start from 1 since we don't want to send to ourselves (unless we're a dedicated server) const int startIndex = gEnv->IsDedicated() ? 0 : 1; for (unsigned int i = startIndex; (i < numClients) && (result == eCLE_Success); ++ i) { SSessionNames::SSessionName &client = clients.m_sessionNames[i]; if (!bCheckConnectionState || client.m_bFullyConnected) { result = pMatchMaking->SendToClient(pPacket, h, client.m_conId); } } } } return result; }
void CAntiCheatManager::HandleDelayedKicks(float dt) { for(int i = m_DelayedKickData.size() - 1; i >= 0; i--) { SDelayedKickData& rKickData = m_DelayedKickData[i]; const float fTimeUntilKick = rKickData.fKickCountdown - dt; if(fTimeUntilKick <= 0.0f) { ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); if (pLobby) { ICryMatchMaking *pMatchmaking = pLobby->GetMatchMaking(); if (pMatchmaking) { pMatchmaking->Kick(&rKickData.userId, rKickData.reason); } } m_DelayedKickData[i] = m_DelayedKickData[m_DelayedKickData.size()-1]; m_DelayedKickData.pop_back(); } else { rKickData.fKickCountdown = fTimeUntilKick; } } }
void CAntiCheatManager::KickPlayer(const CryUserID& userId, EDisconnectionCause reason, int nConfidence) { if (userId.IsValid()) { ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); if (pLobby) { ICryMatchMaking *pMatchmaking = pLobby->GetMatchMaking(); if (pMatchmaking) { pMatchmaking->Kick(&userId, reason); } } } }
//------------------------------------------------------------------------- void CGameBrowser::CancelSearching(bool feedback /*= true*/) { CryLogAlways("CGameBrowser::CancelSearching"); if (m_searchingTask != CryLobbyInvalidTaskID) { CryLog(" canceling search task %u", m_searchingTask); ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); pLobby->GetMatchMaking()->CancelTask(m_searchingTask); // Calling FinishedSearch will clear m_searchingTask } m_delayedSearchType = eDST_None; FinishedSearch(feedback, true); }
virtual void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo ) { switch (event) { case eFE_Initialize: { } break; case eFE_Activate: #if CRY_PLATFORM_DURANGO if(IsPortActive(pActInfo, EIP_Poll)) { size_t memberCountParty = Live::State::Party::Instance().GetPartyMembers()->size(); CryLogAlways("Partymembers: %d", memberCountParty); static MatchmakingUtils::INetworkingUser_impl s_networkingUser; ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); if (pLobby) { ICryMatchMaking *pMatchmaking = pLobby->GetMatchMaking(); if (pMatchmaking) { pMatchmaking->SetINetworkingUser(&s_networkingUser); } } HRESULT hr = MatchmakingUtils::InitiateSession( "PlayerSkillAutoEval", "", 0); } if(IsPortActive(pActInfo, EIP_Launch)) { MatchmakingUtils::SetLaunching(); } if(IsPortActive(pActInfo, EIP_Leave)) { MatchmakingUtils::QuitMatchmaking(); } #endif break; } }
void CAntiCheatManager::BanPlayer_Internal(uint16 channelId, float timeout, int nConfidence) { CGameLobby* pGameLobby = g_pGame->GetGameLobby(); if (pGameLobby) { CryUserID userId = pGameLobby->GetUserIDFromChannelID(channelId); if (userId.IsValid()) { ICryLobby *pLobby = gEnv->pNetwork->GetLobby(); if (pLobby) { ICryMatchMaking *pMatchmaking = pLobby->GetMatchMaking(); if (pMatchmaking) { pMatchmaking->Ban(&userId, timeout); } } } } }