本文整理汇总了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;
//.........这里部分代码省略.........