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


C++ KPlayer::GetFightingHero方法代码示例

本文整理汇总了C++中KPlayer::GetFightingHero方法的典型用法代码示例。如果您正苦于以下问题:C++ KPlayer::GetFightingHero方法的具体用法?C++ KPlayer::GetFightingHero怎么用?C++ KPlayer::GetFightingHero使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在KPlayer的用法示例。


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

示例1: ProcessPackage

BOOL KPlayerServer::ProcessPackage(IKG_SocketStream* piSocket)
{
    BOOL                bResult         = false;
    int                 nRetCode        = 0;
    int                 nConnIndex      = -1;
    IKG_Buffer*         piBuffer        = NULL;
    BYTE*               pbyData         = NULL;
    unsigned            uDataLen        = 0;
    int                 nPackCount      = 0;
    BOOL                bShutDownFlag   = false;

    assert(piSocket);

    nConnIndex = (int)(ptrdiff_t)(piSocket->GetUserData());
    KGLOG_PROCESS_ERROR(nConnIndex >= 0 && nConnIndex < m_nMaxConnection);

    while (true)
    {
        KG_COM_RELEASE(piBuffer);

       /* if (nPackCount++ >= m_nMaxClientPackPerFrame)
        {
            KGLogPrintf(KGLOG_INFO, "Client send too many packs, connection: %d\n", nConnIndex);

            bShutDownFlag = true;
            break;
        }*/

        nRetCode = piSocket->Recv(&piBuffer);
        if (nRetCode == -2)
        {
            break;
        }

        if (nRetCode == -1)
        {
            KPlayer* pPlayer = GetPlayerByConnection(nConnIndex);
            int r = piSocket->GetLastError();

            if (pPlayer)
                KGLogPrintf(KGLOG_INFO, "Connection lost: %d, err:%d, player:%d\n", nConnIndex, r, pPlayer->m_dwID);
            else
                KGLogPrintf(KGLOG_INFO, "Connection lost: %d, err:%d\n", nConnIndex, r);

            bShutDownFlag = true;
            break;
        }

        KGLOG_PROCESS_ERROR(piBuffer);

        pbyData   = (BYTE*)piBuffer->GetData();
        KGLOG_PROCESS_ERROR(pbyData);

        uDataLen = piBuffer->GetSize();

        nRetCode  = CheckPackage(pbyData, uDataLen);
        if (!nRetCode)
        {
		    KGLogPrintf(KGLOG_INFO, "Pak error, connection: %d\n", nConnIndex);

            bShutDownFlag = true;
            break;
        }

        KPlayer*        pPlayer = GetPlayerByConnection(nConnIndex);
	    KC2S_Header*    pHeader = (KC2S_Header*)pbyData;

        if (m_bCloseFlag[pHeader->protocolID] != 0)
            continue;

        m_nC2STraffic += (int)uDataLen;

        m_C2SPakStat[pHeader->protocolID].dwPackCount++;
        m_C2SPakStat[pHeader->protocolID].uTotalSize += uDataLen;

        m_ConnectionDataList[nConnIndex].dwLastPingTime = m_dwTimeNow;

        if (pPlayer)
        {
            if (pPlayer->m_eGameStatus == gsPlaying)
            {
                // 帧数不可能比前面的还低, 帧数不可能超过服务端一定范围(客户端帧平衡算法决定的)
                if (
                    (pHeader->frame < pPlayer->m_nLastClientFrame) //|| 
                    //(pHeader->nFrame > g_pSO3World->m_nGameLoop + GAME_FPS / 2)
                )
                {
                    KGLogPrintf(
                        KGLOG_ERR, "Frame error(%d): last frame = %d, pak frame = %d , server frame = %d\n", 
                        nConnIndex, pPlayer->m_nLastClientFrame, pHeader->frame, g_pSO3World->m_nGameLoop
                    );

                    bShutDownFlag = true;
                    break;
                }

                KHero* pFightingHero = pPlayer->GetFightingHero();
                if (!pFightingHero)
                    continue;

//.........这里部分代码省略.........
开发者ID:zhengguo07q,项目名称:GameWorld,代码行数:101,代码来源:KPlayerServer.cpp


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