Пример #1
0
bool CManageClient::IsAccepted(in_addr_t ip) const {
    if(m_AllowOrDeny){   //true is black,false is white
        if(IsInBlackList(ip))
            return false;
        else
            return true;
    }
    else{
        return IsInWhiteList(ip);
    }
}
Пример #2
0
BATTLE_FIELD_RESULT_CODE KBattleFieldManager::CanJoinQueue(DWORD dwRoleID, KQUEUE* pQueue, DWORD dwGroupID)
{
    BATTLE_FIELD_RESULT_CODE    nResult         = bfrcFailed;
    BOOL                        bRetCode        = false;
    KRole*                      pRole           = NULL;
    DWORD                       dwForceMask     = 0;
    int                         nJoinedQueue    = 0;

    pRole = g_pSO3GameCenter->m_RoleManager.GetRole(dwRoleID);
    KGLOG_PROCESS_ERROR(pRole);

    bRetCode = CheckJoinTime(pQueue->dwMapID);
    KG_PROCESS_ERROR_RET_CODE(bRetCode, bfrcTimeError);

    bRetCode = IsInBlackList(dwRoleID);
    KG_PROCESS_ERROR_RET_CODE(!bRetCode, bfrcInBlackList);

    KG_PROCESS_ERROR_RET_CODE(
        pRole->m_byLevel >= pQueue->nMinJoinLevel && pRole->m_byLevel <= pQueue->nMaxJoinLevel, bfrcLevelError
    );

    KGLOG_PROCESS_ERROR(pRole->m_dwForceID < sizeof(DWORD) * CHAR_BIT);
    KGLOG_PROCESS_ERROR(dwGroupID < MAX_BATTLE_SIDE);

    dwForceMask = (1 << pRole->m_dwForceID);
    KG_PROCESS_ERROR_RET_CODE(pQueue->dwForcMask[dwGroupID] & dwForceMask, bfrcForceError);

    if (pRole->m_eCamp != cNeutral)
    {
        KG_PROCESS_ERROR_RET_CODE(pQueue->eCampRequire[dwGroupID] == pRole->m_eCamp, bfrcCampError);
    }

    KG_PROCESS_ERROR_RET_CODE(pRole->m_dwMapID != pQueue->dwMapID, bfrcNotInSameMap);

    nJoinedQueue = CountRoleJoinedQueue(dwRoleID);
    KG_PROCESS_ERROR_RET_CODE(nJoinedQueue < MAX_QUEUE_PER_PLAYER, bfrcTooManyJoin);

    nResult = bfrcSuccess;
Exit0:
    return nResult;
}