⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 party.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:

	SetPartyExpMatrix();			//	颇萍 版氰摹 盒硅伏 拌魂 
}


////////////////////////////////////////////////////////////////////////////////////////
//	SEND 颇萍 盔 函版	MSG
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Send_Refresh(_LPZW_PARTYREFRESH_REP pPacket)
{
	for( int i=0; i < MAX_PARTY_NUM ; i ++ )
	{
//		if(!m_pPartySocket[i]										)	continue;
//		if( m_pPartySocket[i]->dwMagicNum	!=	MAGIC_NUM			)	continue;
//		if( m_pPartySocket[i]->bClose								)	continue;
		if( !IsSocketValidity( m_pPartySocket[i] )	)	continue;
		
		g_pServer->PacketSend_PartyRefresh( m_pPartySocket[i], pPacket );
	}
}


////////////////////////////////////////////////////////////////////////////////////////
//	颇萍 LIST 沥焊甫 傈价窃
//	
//	-	颇萍盔 困摹 沥焊甫 UPDATE矫糯 
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_List( _LPSOCKET_FD pSocket )
{
	//	--------------------------------------------------------------------------------
	//	颇萍盔狼 困摹甫 茫酒辑 Update矫糯
	//	--------------------------------------------------------------------------------
	for( int i=0; i < MAX_PARTY_NUM ; i ++ )
	{
		if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq	)	continue;		
		if( !IsSocketValidity( m_pPartySocket[i] )						)	continue;
		if( !m_pPartySocket[i]->pPlayer									)	continue;
		
		m_pPartyMember->PARTYLIST[i].nX			=	m_pPartySocket[i]->pPlayer->m_Tile.x;
		m_pPartyMember->PARTYLIST[i].nY			=	m_pPartySocket[i]->pPlayer->m_Tile.y;

		m_pPartyMember->PARTYLIST[i].dwHP		=	m_pPartySocket[i]->pPlayer->m_nHP;
		m_pPartyMember->PARTYLIST[i].dwMaxHP	=	m_pPartySocket[i]->pPlayer->m_nMaxHP ;
	}

	//	--------------------------------------------------------------------------------
	//	秦寸 颇萍盔俊霸 皋矫瘤 傈价
	//	--------------------------------------------------------------------------------
	if( pSocket )
	{		
		g_pServer->PacketSend_PartyList( pSocket, m_pPartyMember );		
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_FightzoneTeleport(short nLayer,_LPZW_FIGHTZONERESERVE pPacket, _POINT p , short nTeam )
{
	_LPCMATCH lpMatch =  g_lpFightzoneManager->Find_Match(pPacket->dwMatchSEQ);
	if (lpMatch == NULL) return ;

	for( int i = 0 ; i < MAX_PARTY_NUM ; i ++ )
	{
		if( !IsSocketValidity( m_pPartySocket[i] )			)	continue;
		if( !m_pPartySocket[i]->pPlayer						)	continue;

		//	府歹窍绊 鞍瘤 臼栏搁 
		if( m_pPartySocket[i]->pPlayer->m_nMapLayer  !=  nLayer  ) continue ;


		// 荤捧吝捞 酒聪搁
		if (m_pPartySocket[i]->pPlayer->m_dwMatchSEQ == 0 )
		{
			m_pPartySocket[i]->pPlayer->m_dwMatchSEQ = pPacket->dwMatchSEQ   ;
			m_pPartySocket[i]->pPlayer->m_nTeam = nTeam ;
			m_pPartySocket[i]->pPlayer->m_bIsFightZone = true ;
			m_pPartySocket[i]->pPlayer->m_bIsFightMode = false ;
			m_pPartySocket[i]->pPlayer->m_nUsePotion	  = pPacket->lpInfor.UsePotion ;
		
			ErrorMsg("(FZ) PlayerTeleport (%s) Match(%d) Killed(%d) Member(%d) TeamCount(%d) Team(%d)",
			m_pPartySocket[i]->pPlayer->m_strPlayerID, m_pPartySocket[i]->pPlayer->m_dwMatchSEQ
			,  lpMatch->m_lpFightZone->KilledCount[m_pPartySocket[i]->pPlayer->m_nTeam], lpMatch->m_lpFightZone->MemberCount[m_pPartySocket[i]->pPlayer->m_nTeam] 
			,  lpMatch->m_lpFightZone->sTeamCount ,m_pPartySocket[i]->pPlayer->m_nTeam);

			lpMatch->JoinTeam(m_pPartySocket[i],nTeam ) ;
			
			g_pServer->Teleport(m_pPartySocket[i], p ) ;
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//	
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_FightzoneMapMove(short sLayer, int nMapSeq,  _POINT p ,DWORD	dwMatchSeq, short nTeam)
{
	
	for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
	{
		if( !IsSocketValidity( m_pPartySocket[i] )				)	continue;
		if( !m_pPartySocket[i]->pPlayer							)	continue;		
		if( m_pPartySocket[i]->pPlayer->m_nMapLayer  !=  sLayer )	continue;	//	府歹窍绊 鞍瘤 臼栏搁 
		
		//	----------------------------------------------------------------------------
		//	荤捧吝捞 酒聪搁
		//	----------------------------------------------------------------------------
		if (m_pPartySocket[i]->pPlayer->m_dwMatchSEQ == 0  )
		{
			m_pPartySocket[i]->pPlayer->m_dwMatchSEQ	=	dwMatchSeq;
			m_pPartySocket[i]->pPlayer->m_nTeam			=	nTeam ;

			g_pServer->MapMove(m_pPartySocket[i], nMapSeq, p ) ;
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//	颇萍 LIST 沥焊甫 傈价窃
//	
//	-	颇萍盔 困摹 沥焊甫 UPDATE矫糯 
////////////////////////////////////////////////////////////////////////////////////////
void CParty::Party_List()
{
	//	--------------------------------------------------------------------------------
	//	颇萍盔狼 困摹甫 茫酒辑 Update矫糯
	//	--------------------------------------------------------------------------------
	for( int i=0; i < MAX_PARTY_NUM ; i ++ )
	{
		if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq	)	continue;
		if( !IsSocketValidity( m_pPartySocket[i] )						)	continue;
		if( !m_pPartySocket[i]->pPlayer)									continue;
		
		m_pPartyMember->PARTYLIST[i].nX		=	m_pPartySocket[i]->pPlayer->m_Tile.x;
		m_pPartyMember->PARTYLIST[i].nY		=	m_pPartySocket[i]->pPlayer->m_Tile.y;

		m_pPartyMember->PARTYLIST[i].dwHP	=	m_pPartySocket[i]->pPlayer->m_nHP;
		m_pPartyMember->PARTYLIST[i].dwMaxHP=	m_pPartySocket[i]->pPlayer->m_nMaxHP;
	}

	//	--------------------------------------------------------------------------------
	//	颇萍盔俊霸 秦寸 颇萍 沥焊 傈价
	//	--------------------------------------------------------------------------------
	for(i = 0 ; i < MAX_PARTY_NUM ; ++i )
	{
		if( m_pPartyMember->PARTYLIST[i].dwMapID != _Module.m_nMapSeq	)	continue;
		if( !IsSocketValidity( m_pPartySocket[i] )						)	continue;

		g_pServer->PacketSend_PartyList( m_pPartySocket[i], m_pPartyMember );	
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//	PARTY MASTER咯何 魄沥
//
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsMaster( DWORD	pPlayerHandle  )
{	
	if( m_pPartyMember->PARTYLIST[0].dwPlayerHandle == pPlayerHandle )	
		return true ;
	
	return false; 
}

////////////////////////////////////////////////////////////////////////////////////////
//	FULL PARTY 咯何 魄沥
//
//	-	7.21 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsParyFull()
{
	return ( m_pPartyMember->nCount == MAX_PARTY_NUM );
}


////////////////////////////////////////////////////////////////////////////////////////
//	ALL CLASS PARTY咯何 魄沥
//
//	-	7.22 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsAllClass()
{
	return ( m_sClassCount == MAX_CHARACTERTYPE_NUM );
}


////////////////////////////////////////////////////////////////////////////////////////
//	葛电 颇萍盔捞 鞍篮 甘俊 粮犁 咯何 魄沥
//	10.08 by kuma
////////////////////////////////////////////////////////////////////////////////////////
bool CParty::bIsAllInMap()
{
	if( m_pPartyMember->nCount >  MAX_PARTY_NUM )	return false;

	for( int i = 1; i < m_pPartyMember->nCount; i ++ )
	{
		
		if( m_pPartyMember->PARTYLIST[0].dwMapID != m_pPartyMember->PARTYLIST[i].dwMapID )
			return false;

		//	霸烙 肺爹 吝牢 版快 
		if( !IsPlayerConnect( m_pPartySocket[i] )	)
		{
			return false;
		}
	}

	return true;	
}



////////////////////////////////////////////////////////////////////////////////
//	泅犁 颇萍 涅胶飘甫 爱绊 乐绰单.. 
//	颇萍俊 颇萍 涅胶飘啊 乐绰瘤 茄锅 八荤秦焊磊..
//  颇萍 付胶磐 捞芭唱 颇萍 付胶磐客 颇萍 涅胶飘啊 促福搁 岿靛辑滚俊 犬牢 秦焊磊..( 2004.10.29 )
////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_CheckAliveQuest( _LPSOCKET_FD pSocket )
{
	if ( m_pPartyMember->PARTYLIST[0].dwPlayerHandle == pSocket->pPlayer->m_dwHandle )
		return;

	if ( m_pPartyMember->PARTYLIST[0].dwPlayerHandle )
	{
		if ( IsSocketValidity( m_pPartySocket[0] ) )
		{
			if ( pSocket->pPlayer->m_dwPartyQuest == m_pPartySocket[0]->pPlayer->m_dwPartyQuest )
				return;				
		}

		ErrorMsg( "Quest Alive Check : M(%d) P(%d)", m_pPartyMember->PARTYLIST[0].dwPlayerHandle, pSocket->pPlayer->m_dwPartyQuest );

		g_lpDBSock->WorldSend_PartyQuestIsAlive( pSocket, 
												 pSocket->pPlayer->m_dwPartyHandle, 
												 m_pPartyMember->PARTYLIST[0].dwPlayerHandle, 
												 pSocket->pPlayer->m_dwPartyQuest  );
	}
}



#define PARTYQUEST_REQUEST_FIRST		23001
#define PARTYQUEST_REQUEST_END			23004
/////////////////////////////////////////////////////////////////////
//	From WorldServer
//	PartyMasetr Handle, PartMaster 狼 泅犁 颇萍 涅胶飘 沥焊 
/////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_IsAliveQuest( _LPSOCKET_FD pSocket, DWORD dwMaster, DWORD dwMasterPartyQuest )
{
	//	颇萍 付胶磐啊 颇萍 涅胶飘甫 爱绊 乐瘤 臼促...
	if ( dwMasterPartyQuest == 0 )
	{
		if ( pSocket->pPlayer->m_dwPartyQuest == 0 )
			return;

		ErrorMsg( "Quest Change : M(%d) P(%d)", dwMasterPartyQuest, pSocket->pPlayer->m_dwPartyQuest );

		//	泅犁 颇萍盔篮 颇萍 涅胶飘甫 爱绊 乐促...
		//	涅胶飘甫 绝局具 摆促..
		if ( pSocket->pPlayer->m_dwPartyQuest )
		{
			CActiveQuest  *pQuest	=	(CActiveQuest*)pSocket->pPlayer->m_ActiveQuest.Find(  pSocket->pPlayer->m_dwPartyQuest );	
			if ( pQuest )
			{
				pSocket->pPlayer->QuestDelete( pQuest );
				pQuest->ExecuteTriggerMissionStop();	
			}	
		}
	}
	else
	{
		if ( pSocket->pPlayer->m_dwPartyQuest == dwMasterPartyQuest )
			return;

		ErrorMsg( "Quest Change : M(%d) P(%d)", dwMasterPartyQuest, pSocket->pPlayer->m_dwPartyQuest );		
		
		// 颇萍盔篮 绝绊 颇萍 付胶磐绰 颇萍 涅胶飘啊 乐促.
		if ( ( pSocket->pPlayer->m_dwPartyQuest == 0 ) &&
			 ( dwMasterPartyQuest >= PARTYQUEST_REQUEST_FIRST )  &&
			 ( dwMasterPartyQuest <= PARTYQUEST_REQUEST_END ) )
		{
			pSocket->pPlayer->QuestRequest( dwMasterPartyQuest, false );
		}
		// 颇萍盔苞 颇萍付胶磐 颇萍 涅胶飘啊 撇府促..
		else if ( ( pSocket->pPlayer->m_dwPartyQuest >= PARTYQUEST_REQUEST_FIRST ) &&
				  ( pSocket->pPlayer->m_dwPartyQuest <= PARTYQUEST_REQUEST_END ) &&	
				  ( dwMasterPartyQuest >= PARTYQUEST_REQUEST_FIRST )  &&			 
				  ( dwMasterPartyQuest <= PARTYQUEST_REQUEST_END ) )
		{
			CActiveQuest  *pQuest	=	(CActiveQuest*)pSocket->pPlayer->m_ActiveQuest.Find(  pSocket->pPlayer->m_dwPartyQuest );	
			if ( pQuest )
			{
				pSocket->pPlayer->QuestDelete( pQuest );
				pQuest->ExecuteTriggerMissionStop();	
			}

			pSocket->pPlayer->QuestRequest( dwMasterPartyQuest, false );
		}
	}
}


///////////////////////////////////////////////////////////////
//	return : 颇萍 付胶磐 涅胶飘 酒捞叼
//	*pSameMap : 鞍篮 甘辑滚俊 乐促
///////////////////////////////////////////////////////////////
DWORD CParty::Get_MasterPartyQuest(int* pSameMap)
{
	*pSameMap = 1;

	// 颇萍 付胶磐啊 鞍篮 甘辑滚俊 绝促
	// 岿靛 辑滚俊 舅酒 毫具 茄促.
	if( !IsSocketValidity( m_pPartySocket[0] )	)	
	{
		*pSameMap = 0;
		return true;
	}

	return m_pPartySocket[0]->pPlayer->m_dwPartyQuest;
}



////////////////////////////////////////////////////////////////////////////////////////
//	颇萍 涅胶飘 函版 荤亲阑 促弗 甘辑滚俊 乐绰 颇萍盔甸俊霸 舅妨林绰 何盒 
//	From WorldServer
//  btType			PARTYQUEST_REQUEST			(BYTE)0x01
//					PARTYQUEST_ABANDON			(BYTE)0x02
//					PARTYQUEST_TELEPORT			(BYTE)0x03
//	pPartyHandle	: 颇萍 勤甸
//	pPlayerHandle	: 颇萍 干滚 勤甸
//	pPartyQuest		: 
//					PARTYQUEST_REQUEST			pParam1 = PartyQuest Index
//					PARTYQUEST_ABANDON			pParam1 = PartyQuest Index
//					PARTYQUEST_TELEPORT			pParam1 = Mapid, pParam2 = x, pParam3 = y 
////////////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_Map_Change( _LPZW_PARTYQUESTMAPCHANGE_REP pPacket )
{
	for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
	{
		if( m_pPartyMember->PARTYLIST[i].dwPlayerHandle	== pPacket->dwPlayerHandle )
		{
			if( !IsSocketValidity( m_pPartySocket[i] )	)	
				return;			

			// 颇萍 涅胶飘 角青
			if ( pPacket->btType == PARTYQUEST_REQUEST )
			{		
				CActiveQuest  *pQuest	=	(CActiveQuest*)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find( pPacket->dwParam1 );	

				if ( pQuest )
					return;

				if ( m_pPartySocket[i]->pPlayer->m_dwPartyQuest == 0 )
					m_pPartySocket[i]->pPlayer->QuestRequest( pPacket->dwParam1, false );
			}
			// 颇萍 涅胶飘 器扁
			else if ( pPacket->btType == PARTYQUEST_ABANDON )
			{				
				CActiveQuest  *pQuest	=	(CActiveQuest*)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find( pPacket->dwParam1 );

				if ( pQuest == NULL )
					return;

				if ( m_pPartySocket[i]->pPlayer->m_dwPartyQuest == pPacket->dwParam1 )
				{
					m_pPartySocket[i]->pPlayer->QuestDelete( pQuest );
					pQuest->ExecuteTriggerMissionStop();
				}
			}
			// 颇萍 涅胶飘 颇萍盔 碍力 捞悼
			else if ( pPacket->btType == PARTYQUEST_TELEPORT )
			{
				m_pPartySocket[i]->pPlayer->Quest_Teleport( pPacket->dwParam1, pPacket->dwParam2, pPacket->dwParam3 );
			}

			return;
		}
	}
}

bool CParty::PartyQuest_MemberExist( DWORD dwPlayer )
{
	//	秦寸 颇萍盔狼 SOCKET FD甫 掘澜	
	for( int i = 0; i < MAX_PARTY_NUM; i ++ )
	{
		if( m_pPartyMember->PARTYLIST[i].dwPlayerHandle == dwPlayer )
			return true;
	}

	return false;
}



////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 颇萍盔 漂沥 
//
//	-	犬厘 累诀 : 促弗 甘俊 立加茄 颇萍盔鳖瘤 楷悼 矫糯
////////////////////////////////////////////////////////////////////////////////////////
void CParty::PartyQuest_Teleport( int pQuestIndex, int pMapID, _POINT pPoint)
{
	if ( !IsSocketValidity( m_pPartySocket[0] ) )
		return;

	for( int i = 0; i < MAX_PARTY_NUM ; i ++ )
	{
		if( !IsSocketValidity( m_pPartySocket[i] )	)	continue;	
		
		CActiveQuest  *pAtiveQuest	=	(CActiveQuest  *)m_pPartySocket[i]->pPlayer->m_ActiveQuest.Find(  pQuestIndex );	
		if(	!pAtiveQuest ) continue;
		
		m_pPartySocket[i]->pPlayer->Quest_Teleport( pMapID, pPoint.x, pPoint.y );


		//	----------------------------------------------------------------------------
		//	鞍篮 甘俊辑 捞悼矫 
		//	----------------------------------------------------------------------------
/*
		if( m_pPartySocket[i]->pPlayer->GetMapID() == pMapID )
		{
			g_pServer->Teleport(m_pPartySocket[i], pPoint ) ;

			m_pPartySocket[i]->pPlayer->Quest_Teleport( pMapID, pPoint.x, pPoint.y );
		}		
		//	----------------------------------------------------------------------------
		//	促弗 甘栏肺 捞悼矫
		//	----------------------------------------------------------------------------
		else
		{
			g_pServer->MapMove(m_pPartySocket[i], pMapID, pPoint );
		}
*/
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//	秦寸 颇萍盔俊霸 包访 QUEST REQUEST MSG甫 傈价
//
//	-	颇萍盔 QUEST狼 巩力肺 牢窍咯 颇萍盔 何磐 皋矫瘤 傈价 饶
//		颇萍 付胶磐俊霸 皋矫瘤甫 傈价窃
//
//	*	颇萍 付胶磐父 惯悼矫懦荐 乐澜	(包访 肺流 八配)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -