本文整理汇总了C++中KPlayer::GetPlayerIndex方法的典型用法代码示例。如果您正苦于以下问题:C++ KPlayer::GetPlayerIndex方法的具体用法?C++ KPlayer::GetPlayerIndex怎么用?C++ KPlayer::GetPlayerIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KPlayer
的用法示例。
在下文中一共展示了KPlayer::GetPlayerIndex方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoTeamDelMemberNotify
BOOL QPlayerTeam::DoTeamDelMemberNotify(DWORD dwTeamID, int nGroupIndex, DWORD dwMemberID)
{
int nResult = false;
DWORD dwPlayerID = 0;
KPlayer* pPlayer = NULL;
S2C_TEAM_DEL_MEMBER_NOTIFY TeamDelMemberNotify;
QTeamBroadcast Func;
TeamDelMemberNotify.dwTeamID = dwTeamID;
TeamDelMemberNotify.nGroupIndex = nGroupIndex;
TeamDelMemberNotify.dwMemberID = dwMemberID;
pPlayer = g_cPlayerMgr.GetById(dwMemberID);
if (pPlayer)
{
QTeamModule::SendData(pPlayer->GetPlayerIndex(), TeamDelMemberNotify);
}
//else: 玩家可能不在本服务器上
// 为什么不把上面的这个Send纳入下面的循环? 因为这个玩家可能已经从列表中删除了,循环就遍历不到这个玩家.
Func.m_dwTeamID = dwTeamID;
Func.m_dwExceptID = dwMemberID;
Func.m_pvData = (void*)&TeamDelMemberNotify;
Func.m_uSize = sizeof(TeamDelMemberNotify);
g_cTeamServer.Traverse(Func);
nResult = true;
EXIT0:
return nResult;
}
示例2:
INT KNetConnectPlayer::OnClientLogin2( DWORD dwRoleId, const GUID& rConnGuid, INT nConnectId, BOOL bHidden /*= FALSE*/,BOOL bTinyTerminal)
{
INT nRetCode = FALSE;
KPlayer* pPlayer = NULL;
INT nPlayerIndex = 0;
pPlayer = g_cPlayerMgr.GetById(dwRoleId);
LOG_PROCESS_ERROR(pPlayer);
LOG_PROCESS_ERROR(pPlayer->GetGameState() == gsWaitForConnect);
LOG_PROCESS_ERROR(pPlayer->m_cPlayerServer.m_Guid == rConnGuid);
pPlayer->SetTinyTerminal(bTinyTerminal);
nPlayerIndex = pPlayer->GetPlayerIndex();
m_pnConnId2PlayerIndex[nConnectId] = nPlayerIndex;
m_pnPlayerIndex2ConnId[nPlayerIndex] = nConnectId;
m_mpAccount2Player[pPlayer->m_cPlayerServer.m_strAccount] = nPlayerIndex;
g_RelayClient.DoConfirmPlayerLoginRequest(dwRoleId);
pPlayer->SetGameState(gsWaitForPermit);
pPlayer->m_nTimer = 0;
nRetCode = TRUE;
EXIT0:
if (!nRetCode)
{
QLogPrintf(LOG_INFO, "Invalid Client: %d\n", nConnectId);
if (pPlayer)
QLogPrintf(LOG_INFO, "Player %d state %d\n", dwRoleId, pPlayer->GetGameState());
}
return nRetCode;
}
示例3: DoApplyJoinTeamRequest
BOOL QPlayerTeam::DoApplyJoinTeamRequest(DWORD dwLeader, const char cszApplySrc[])
{
int nResult = false;
int nRetCode = false;
KPlayer* pTeamLeader = NULL;
S2C_APPLY_JOIN_TEAM_REQUEST TeamApply;
pTeamLeader = g_cPlayerMgr.GetById(dwLeader);
PROCESS_ERROR(pTeamLeader);
PROCESS_ERROR(CanTeamProcess(pTeamLeader));
strncpy(TeamApply.szApplySrc, cszApplySrc, sizeof(TeamApply.szApplySrc));
TeamApply.szApplySrc[sizeof(TeamApply.szApplySrc) - 1] = '\0';
nRetCode = QTeamModule::SendData(pTeamLeader->GetPlayerIndex(), TeamApply);
PROCESS_ERROR(nRetCode);
nResult = true;
EXIT0:
return nResult;
}
示例4: DoInvitePlayerJoinTeamRequest
BOOL QPlayerTeam::DoInvitePlayerJoinTeamRequest(DWORD dwInviteDst, const char cszInviteSrc[])
{
int nResult = false;
int nRetCode = false;
KPlayer* pInviteDst = NULL;
S2C_INVITE_JOIN_TEAM_REQUEST TeamInvite;
pInviteDst = g_cPlayerMgr.GetById(dwInviteDst);
PROCESS_ERROR(pInviteDst);
PROCESS_ERROR(CanTeamProcess(pInviteDst));
strncpy(TeamInvite.szInviteSrc, cszInviteSrc, sizeof(TeamInvite.szInviteSrc));
TeamInvite.szInviteSrc[sizeof(TeamInvite.szInviteSrc) - 1] = '\0';
nRetCode = QTeamModule::SendData(pInviteDst->GetPlayerIndex(), TeamInvite);
PROCESS_ERROR(nRetCode);
nResult = true;
EXIT0:
return nResult;
}
示例5: Activate
BOOL KPlayerMgr::Activate()
{
static INT nPlayerIndex = 0;
m_timeActivate = KSysService::GameTime(NULL);
for (INT i = 0; i < KD_BATCH_PROCESS_PLAYER_MAX; ++i)
{
if (nPlayerIndex > m_cObjMgr.GetMaxCount())
{
nPlayerIndex = 0;
break;
}
nPlayerIndex = m_cObjMgr.NextUsedIndex(nPlayerIndex);
if (nPlayerIndex <= 0)
break;
KPlayer* pPlayer = m_cObjMgr.GetByIndex(nPlayerIndex);
QCONFIRM_RET_FALSE(pPlayer);
PLAYER_GAME_STATE eGameState = pPlayer->GetGameState();
switch (eGameState)
{
case emPLAYERSTATE_BEGIN: // kick out
break;
case gsPlaying:
OnRegularProcess(pPlayer);
break;
case gsWaitForConnect:
// 等待登陆倒计时
if (pPlayer->m_nTimer++ >= LOGIN_TIMEOUT)
{
QLogPrintf(
LOG_INFO, "Login timeout: acc = %s, role = %s\n",
pPlayer->m_cPlayerServer.GetAccount(), pPlayer->GetName()
);
g_cNetConnectPlayer.KickOutPlayer(pPlayer->GetPlayerIndex());
}
break;
case gsWaitForPermit:
case gsWaitForRoleData:
// 等待登陆倒计时
if (pPlayer->m_nTimer++ >= LOGIN_TIMEOUT)
{
QLogPrintf(
LOG_INFO, "Relay permission or query role data, kicking (%s, %d)\n",
pPlayer->GetName(), pPlayer->GetPlayerIndex()
);
g_cNetConnectPlayer.KickOutPlayer(pPlayer->GetPlayerIndex());
}
break;
case gsWaitForLoginLoading:
case gsWaitForNewMapLoading:
break;
case gsDeleting:
// 掉线倒计时
if (pPlayer->m_nTimer++ >= LOGOUT_WAITING_TIME/* || !pPlayer->m_bFightState*/)
{
//pPlayer->SavePosition();
//// 这里之所以调RemovePlayer是为了在Save之前触发Trap(如果有的话),Trap可能会涉及存盘角色数据
//g_pWorld->RemovePlayer(pPlayer);
//g_RelayClient.SaveRoleData(pPlayer);
//g_pWorld->m_FellowshipMgr.UnloadPlayerFellowship(pPlayer->m_dwID);
g_cNetConnectPlayer.KickOutPlayer(pPlayer->GetPlayerIndex());
}
break;
default:
break;
}
}
return TRUE;
}