コード例 #1
0
BOOL CClientCmdHandler::OnCmdNearByUpdate( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	UINT32 dwCount = 0;
	pBufferHelper->Read(dwCount);

	for(UINT32 i = 0; i < dwCount; i++)
	{
		UINT64 u64CharID = 0;

		pBufferHelper->Read(u64CharID);

		CPlayerObject *pObject = m_PlayerObjMgr.GetPlayer(u64CharID);
		if(pObject != NULL)
		{
			pObject->ReadFromBuffer(pBufferHelper);

			//printf("更新角色:%d, 坐标x = %f, z = %f", (UINT32)pObject->GetObjectID(), pObject->m_ObjectPos.x, pObject->m_ObjectPos.z);
		}
		else
		{
			//ASSERT_FAIELD;
		}
	}

	return TRUE;
}
コード例 #2
0
BOOL CWorldCmdHandler::OnCmdLeaveGameReq( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	StCharLeaveGameReq CharLeaveGameReq;

	pBufferHelper->Read(CharLeaveGameReq);

	if(CharLeaveGameReq.dwLeaveReason == LGR_Disconnect)
	{

	}
	else if(CharLeaveGameReq.dwLeaveReason == LGR_Quit)
	{

	}

	CPlayerObject *pPlayerObject = m_PlayerObjectMgr.GetPlayer(pBufferHelper->GetCommandHeader()->u64CharID);
	if(pPlayerObject == NULL)
	{
		ASSERT_FAIELD;
		return TRUE;
	}

	m_PlayerObjectMgr.ReleasePlayer(pPlayerObject->GetObjectID());

	return TRUE;
}
コード例 #3
0
BOOL CClientCmdHandler::OnCmdNearByAdd( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	UINT32 dwCount = 0;
	pBufferHelper->Read(dwCount);
	
	for(UINT32 i = 0; i < dwCount; i++)
	{
		UINT8 type = 0;

		pBufferHelper->Read(type);

		if(type != 1)
		{
			continue;
		}

		CPlayerObject *pObject = new CPlayerObject;

		pObject->ReadFromBuffer(pBufferHelper);

		m_PlayerObjMgr.AddPlayer(pObject);

		/*printf("添加角色:%d, 坐标x = %f, z = %f", (UINT32)pObject->GetObjectID(), pObject->m_ObjectPos.x, pObject->m_ObjectPos.z);*/
	}

	printf("-------周围队列的人数:%d------OnCmdNearByAdd---\n", m_PlayerObjMgr.size());

	return TRUE;
}
コード例 #4
0
ファイル: CommandHandler.cpp プロジェクト: ylmbtm/GameProject
BOOL CClientCmdHandler::OnCmdNearByUpdate( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	UINT32 dwCount = 0;
	pBufferHelper->Read(dwCount);

	for(UINT32 i = 0; i < dwCount; i++)
	{
		UINT64 u64CharID = 0;

		pBufferHelper->Read(u64CharID);

		CPlayerObject *pObject = m_PlayerObjMgr.GetPlayer(u64CharID);
		if(pObject != NULL)
		{
			pObject->ReadFromBuffer(pBufferHelper);

			printf("更新角色:%d, 坐标x = %f, z = %f\n", (UINT32)pObject->GetObjectID(), pObject->m_ObjectPos.x, pObject->m_ObjectPos.z);
		}
		else
		{
			ASSERT_FAIELD;
		}
	}

	((CTestClientDlg*)AfxGetMainWnd())->m_SceneView.Invalidate();

	return TRUE;
}
コード例 #5
0
BOOL CWorldCmdHandler::OnCmdDBLoadCharAck( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	StDBLoadCharInfoAck DBLoadCharInfoAck;
	pBufferHelper->Read(DBLoadCharInfoAck);

	CPlayerObject *pPlayerObject = m_PlayerObjectMgr.CreatePlayerByID(DBLoadCharInfoAck.u64CharID);
	if(pPlayerObject == NULL)
	{
		ASSERT_FAIELD;
		return TRUE;
	}

	pPlayerObject->LoadFromDBPcket(pBufferHelper);

	//继续往游戏服转移


	

	return TRUE;
}
コード例 #6
0
BOOL CWorldCmdHandler::OnCmdDBLoadCharAck( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	StDBLoadCharInfoAck DBLoadCharInfoAck;
	pBufferHelper->Read(DBLoadCharInfoAck);

	CPlayerObject *pPlayerObject = m_PlayerObjectMgr.CreatePlayerByID(DBLoadCharInfoAck.u64CharID);
	CHECK_AND_RETURN_ASSERT(pPlayerObject, TRUE);

	if(!pPlayerObject->LoadFromDBPacket(pBufferHelper))
	{
		ASSERT_FAIELD;
		return TRUE;
	}

	UINT32 dwGameSvrID = m_GameSvrMgr.GetServerIDBySceneID(pPlayerObject->m_dwSceneID);
	if(dwGameSvrID == 0)
	{
		ASSERT_FAIELD;
		return TRUE;
	}

	//继续往游戏服转移
	StSvrEnterSceneReq SvrEnterSceneReq;
	SvrEnterSceneReq.dwGameSvrID  = dwGameSvrID;
	SvrEnterSceneReq.dwProxySvrID = DBLoadCharInfoAck.dwProxySvrID;
	SvrEnterSceneReq.dwSceneID    = pPlayerObject->m_dwSceneID;
	SvrEnterSceneReq.u64CharID    = DBLoadCharInfoAck.u64CharID;

	CBufferHelper WriteHelper(TRUE, &m_WriteBuffer);
	WriteHelper.BeginWrite(CMD_SVR_ENTER_SCENE_REQ, CMDH_OTHER, SvrEnterSceneReq.dwSceneID, DBLoadCharInfoAck.u64CharID);
	WriteHelper.Write(SvrEnterSceneReq);

	pPlayerObject->SaveDataToPacket(&WriteHelper);

	WriteHelper.EndWrite();
	CGameService::GetInstancePtr()->SendCmdToConnection(SvrEnterSceneReq.dwGameSvrID, &m_WriteBuffer);

	return TRUE;
}
コード例 #7
0
ファイル: CommandHandler.cpp プロジェクト: ylmbtm/GameProject
BOOL CClientCmdHandler::OnCmdNearByAdd( UINT16 wCommandID, UINT64 u64ConnID, CBufferHelper *pBufferHelper )
{
	UINT32 dwCount = 0;
	pBufferHelper->Read(dwCount);

	printf("BEGIN---添加角色消息,添加人数:%d\n", dwCount);
	
	for(UINT32 i = 0; i < dwCount; i++)
	{
		CString strText;

		UINT8 type = 0;

		pBufferHelper->Read(type);

		if(type != 1)
		{
			continue;
		}

		CPlayerObject *pObject = new CPlayerObject;

		pObject->ReadFromBuffer(pBufferHelper);

		m_PlayerObjMgr.insert(std::make_pair(pObject->GetObjectID(), pObject));

		printf("添加角色:%d, 坐标x = %f, z = %f\n", (UINT32)pObject->GetObjectID(), pObject->m_ObjectPos.x, pObject->m_ObjectPos.z);

	}

	printf("END---添加角色消息\n");


	((CTestClientDlg*)AfxGetMainWnd())->m_SceneView.Invalidate();

	return TRUE;
}
コード例 #8
0
void CFreezePowerUp::CollideWith(CBaseObject* pOther, Vector &pos)
{
	if(pOther->getType() == SHIP && this->m_bIsGrabable)
	{
		std::vector<PhysicsData*>& players = CODEManager::Instance()->m_vPlayers;
		std::vector<PhysicsData*>::iterator it = players.begin();
		for(it; it != players.end(); it++){
			if((*it)->m_pOwner != pOther){
				CPlayerObject* other = dynamic_cast<CPlayerObject*>((*it)->m_pOwner);
				if(other->m_fPUJellyTime > 0.001){
					other->m_fPUJellyTime = 0;
				} else {
					other->AffectedByFreezePU();
				}
			}
		}

		CSound *pSound = (CSound *)CResourceManager::Instance()->GetResource("media/sounds/freeze_object.wav", RT_SOUND);
		if ( pSound )
			pSound->Play();
	}

	CPowerUp::CollideWith(pOther, Vector(pos));
}