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

📄 playerinfo.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	{
		_PKCHAOCHART_	*pPKChaoChartMap = ( _PKCHAOCHART_ *)it->second;
		if( !pPKChaoChartMap )	continue;
		
		if( m_nAlign <=	pPKChaoChartMap->nMAXALIGN  &&
			m_nAlign >=	pPKChaoChartMap->nMINALIGN	)
		{
			m_pPKChao	=	pPKChaoChartMap;
		}
	}


	if(m_pPKChao == NULL)
	{
		ErrorMsg( "(X) m_pPKChao Is NULL (%s) (%d)" ,m_strPlayerID  , m_nAlign);
	}

	//	--------------------------------------------------------------------------------
	//	Default Quest
	//	--------------------------------------------------------------------------------
	if( ! SetActiveQuest( 0 ) )
	{
		ErrorMsg( "(X) NullQuest Create Error" );
	}



	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	荤侩磊狼 QUEST单捞鸥甫 涝仿矫糯
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_Quest(_LPZW_QUESTLIST_REP pActiveQuest)
{
	//	--------------------------------------------------------------------------------
	//	秦寸 QUEST甫 吝汗登绰 版快 
	//	--------------------------------------------------------------------------------	
	CActiveQuest  *pAtiveQuest	=	(CActiveQuest  *)m_ActiveQuest.Find(  pActiveQuest->dwQuestIndex );	
	if(	pAtiveQuest )	return false;	
	
	//	--------------------------------------------------------------------------------
	//	秦寸 QUEST狼 粮犁咯何甫 魄沥
	//	--------------------------------------------------------------------------------
	CQuest	*pQuest =  g_pQuestEngine->GetQuest( pActiveQuest->dwQuestIndex );
	if( !pQuest )	return false;

	pAtiveQuest = (CActiveQuest *)g_pServerMem->ActiveQuest_Pop();

	pAtiveQuest->SetInit( pQuest, this, pActiveQuest);		
	m_ActiveQuest.Insert( pActiveQuest->dwQuestIndex , pAtiveQuest );	

	//
	//	秦寸 颇萍涅胶飘 沥焊甫 涝仿矫糯
	//
	if( pAtiveQuest->GetType() == QUEST_PARTY )
	{
		m_dwPartyQuest	=	pActiveQuest->dwQuestIndex;			
	
		if( GetLocationMapType()  == MAP_EVENT )		
			SetChannel( m_dwPartyHandle );
	}
		
	return true;
}



////////////////////////////////////////////////////////////////////////////////////////
//	2004.11.01 by kuma - 颇萍涅胶飘 沥焊 犬牢...
//
////////////////////////////////////////////////////////////////////////////////////////
int PlayerInfo::GetPartyQuestCount()
{


	int nRet = 0;

	MAP_VOIDPTR::iterator itEnd = m_ActiveQuest.End() ;
	for ( MAP_VOIDPTR::iterator it = m_ActiveQuest.Begin(); it != itEnd ; it++)
	{
		CActiveQuest *pActiveQuest	= (CActiveQuest *)it->second;
		if ( pActiveQuest )
		{
			if( pActiveQuest->GetType() == QUEST_PARTY )
				nRet++;
		}		
	}

	return nRet;


}



////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::PartyQuestChannel_Init()
{
	int _nPartyQuestNum = GetPartyQuestCount();

	if ( _nPartyQuestNum > 0 )
	{
		if ( _nPartyQuestNum != 1 )
		{
			ErrorMsg( "PARTY QUEST NUMBER = %d", _nPartyQuestNum );
		}

		MAP_VOIDPTR::iterator itEnd = m_ActiveQuest.End() ;
		for ( MAP_VOIDPTR::iterator it = m_ActiveQuest.Begin(); it != itEnd ; it++)
		{
			CActiveQuest *pActiveQuest	= (CActiveQuest *)it->second;
			if ( pActiveQuest )
			{
				if( pActiveQuest->GetType() == QUEST_PARTY )
				{
					m_dwPartyQuest	=	(int)(it->first);

					if( GetLocationMapType()  == MAP_EVENT )					
						SetChannel( m_dwPartyHandle );					

					return;
				}
			}		
		}
	}
	
	m_dwPartyQuest = 0;

	SetChannel( 0 );
}



////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::SendToLobby(_LPZP_PLAYERBASE_REP	pPlayerBase)
{
	MatchClear() ;
	m_dwMatchSEQ = 0 ;
	
	m_nMapID = g_pMap->_LOBBY_.dwMapID ;

	pPlayerBase->wX = g_pMap->_LOBBY_.StartPoint.x*100 + 50 ;
	pPlayerBase->wY = g_pMap->_LOBBY_.StartPoint.y*100 + 50 ;

	//	秦寸 Map Layer甫掘篮 -> Map Search肺 函版 矫糯
	m_nMapLayer	= 0;

	for( int i=0; i < g_pMap->m_nMaxLayer; i ++ )
	{
		if(	g_pMap->GetMapID( i )  == m_nMapID )
		{
			m_nMapLayer	=	i;
			break;
		}
	}
}




////////////////////////////////////////////////////////////////////////////////////////
//	酒捞袍阑 焊晨 
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::SendPVPPrize_Item()
{

	//	--------------------------------------------------------------------------------
	//	秦寸 陛咀阑 岿靛 辑滚俊 焊晨
	//	--------------------------------------------------------------------------------
	if( m_nPrizeMoney != 0 )
	{
		if( !GoldMinus( m_nPrizeMoney )	)	return false;

		g_pServer->PacketSend_ChangeGold( m_pSocketFD );
	}


	_LPDBPACKET	pWorldPacket = g_pServerMem->WorldPacket_Pop();			



	pWorldPacket->dwCommand  =	ZW_FIGHTZONEITEM_SAVE ;
	pWorldPacket->pSocketFD  =	m_pSocketFD;

	char * lpData = pWorldPacket->strPacket ;

	_LPZW_FIGHTZONEITEM_SAVE lpPacket = (_LPZW_FIGHTZONEITEM_SAVE) lpData ;
	lpData += sizeof( _ZW_FIGHTZONEITEM_SAVE ) ;

	memset(lpPacket,0x0,sizeof(_ZW_FIGHTZONEITEM_SAVE)) ;

	lpPacket->dwGold		= m_nPrizeMoney ;
	lpPacket->dwHandle		= m_dwHandle ;
	lpPacket->dwMatchSEQ	= m_dwMatchSEQ ;
	lpPacket->nTeam			= m_nTeam ;

	//	--------------------------------------------------------------------------------
	//	秦寸 拱前阑 岿靛 辑滚俊 焊晨
	//	--------------------------------------------------------------------------------
	int	nWearCheck	=	0;
		
	MAP_VOIDPTR::iterator itEnd = m_MapPrize.End();
	for ( MAP_VOIDPTR::iterator it = m_MapPrize.Begin(); it != itEnd; it++)
	{
		CItem	*pItem	= (CItem *)it->second;	

		//	秦寸 Item厘馒 矫 
		if( pItem->IsWear()	)
		{
			///////////////////////////////////////////////////////////
			//	风凭 埃家拳 矫糯
			///////////////////////////////////////////////////////////
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
			_ItemMove(pItem,WHERE_INVENTORY) ;
#endif	

			pItem->m_nWHERE = WHERE_INVENTORY;			// 厘馒 酒捞袍阑 呕馒矫糯 
			int	bReturn = Inventory_PutOffUpdate( pItem );

			if(	bReturn > nWearCheck ) nWearCheck = bReturn;	
		}
		
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
		_DeleteItem(pItem) ;
#endif	


		if(	pItem->IsWorld() )
		{
			World_InvItemDelete( pItem->m_dwItemHandle );
		}


		m_MapInventory.Delete( pItem->m_dwItemHandle );
		g_pServer->PacketSend_InventoryDelete( m_pSocketFD, pItem->m_dwItemHandle );

		bool bOk = pItem->GetInventory( (_LP_PLAYERINVENTORY )lpData );

		lpData += sizeof(_PLAYERINVENTORY)  ;
		++lpPacket->sCount ;
	}

	m_MapTrade.Clear();					//	背券 拱前 Clear矫糯

	pWorldPacket->dwSize = sizeof(_ZW_FIGHTZONEITEM_SAVE) + lpPacket->sCount*sizeof(_PLAYERINVENTORY)    ;

	g_lpDBSock->bSend(pWorldPacket);


	//	--------------------------------------------------------------------------------
	//	背券 Item阑 馒侩 窍绊 乐绰 版快 
	//	--------------------------------------------------------------------------------
	switch( nWearCheck )
	{
	//	牢亥俊 乐绰 ITEM背券 矫 
	case 0	:	break;


	//	厘馒 酒捞袍 荐摹父 函版 蹬绰 版快 
	case 1	:	{
					Set_CalcAllStat();										//	秦寸 荐摹甫 促矫 拌魂 
					g_pServer->PacketSend_ChangePlayerBase( m_pSocketFD );	//	包访 贸府狼 埃家拳 累诀
				}		
				break;



	//	厘馒 酒捞袍 葛剧 + 荐摹 函版 蹬绰 版快 
	case 2	:	{
					Set_CalcAllStat();										//	秦寸 荐摹甫 促矫 拌魂 
					g_pServer->PacketSend_ChangePlayerBase( m_pSocketFD );	//	包访 贸府狼 埃家拳 累诀
					g_pServer->PacketSend_PlayerUpdate( m_pSocketFD );		//	AOI郴狼 函版等 纳腐 沥焊甫 傈价 矫糯
				}
				break;
	}
	
	return true;
}



////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Check_PotionCount( DWORD dwItemIndex )
{
	int _nCnt = 0;

	void*	pTempInventory[10000]		= {0, };	
	
	int nCountInventory		= m_MapInventory.CopyTmpList( pTempInventory );

	for( int i= 0 ; i < nCountInventory ; ++i )
	{
		CItem * pItem	=	(CItem *)pTempInventory[i];
	
		if( !pItem )	continue;	

		if ( pItem->m_nWHERE == WHERE_INVENTORY )
		{
			if (	pItem->m_nType == ITEMTYPE_POISON_HEALING	|| 
					pItem->m_nType == ITEMTYPE_POISON_MANA		|| 
					pItem->m_nType == ITEMTYPE_POISON_STAMINA 
			) 
			{
			
				if ( pItem->m_dwItemIndex == dwItemIndex )
				{
					_nCnt += pItem->m_nCount;
					
					if ( _nCnt >= MAX_POTION_COUNT )
						return false;
				}

			}
		}
	}

	return true;
}





////////////////////////////////////////////////////////////////////////////////////////
//	WORD SERVER俊辑 罐篮 单捞鸥甫 涝仿 矫糯
//	
//	- 秦寸 酒捞袍阑 Setting矫糯
//	- SERVER坷幅肺 牢窍咯 吝汗栏肺 酒捞袍阑 厘馒 茄 版快 牢亥栏肺 磊悼栏肺 颗辫
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_Inventory(_LP_PLAYERINVENTORY pInventory)
{
	
	CItem	*pItem = g_pMap->Pool_Item_Pop();				

	if( !pItem )
	{
		ErrorMsg( "(X) Init_Inventory Item is Null");
		return false;
	}
	

	pItem->SetInventory( pInventory );							//	Item Inventory 单捞鸥甫 流立牢仿 矫糯 

#ifdef DEF_CHECK_QUESTDONE
	// WORD SERVER俊辑 nCount啊 WORD肺 棱囚乐绢辑.. 夸何盒 趣矫唱 秦辑 荐沥
	if ( pItem->m_nCount < 0 )
	{
		pItem->m_nCount = 0;
	}
#endif

	_BASE_ITEM_ *pBaseItem	= (_BASE_ITEM_ *)g_Base.m_BaseItem.Find( pItem->m_dwItemIndex );
	if ( pBaseItem )
	{
		bool bSlotTypeError = false;

		if ( pBaseItem->nSLOTTYPE != pItem->m_nSlotType )
		{
			bSlotTypeError = true;

			if ( m_nCharacterType == WARRIOR )
			{
				if ( ( pItem->m_nType == ITEMTYPE_WEAPON_ONEHANDSWORD ) ||
					 ( pItem->m_nType == ITEMTYPE_WEAPON_ONEHANDAXE ) )			// 茄颊八, 茄颊 档尝
				{
					if ( ( pItem->m_nSlotType == SLOT_RIGHT ) ||
						 ( pItem->m_nSlotType == SLOT_LEFT ) )
					{
						bSlotTypeError = false;
					}
				}
			}

			if ( pItem->m_nType == ITEMTYPE_DEFENSE_RING )
			{
				if ( ( pItem->m_nSlotType == SLOT_RINGLEFT ) ||
					 ( pItem->m_nSlotType == SLOT_RINGRIGHT ) ) 
				{
					bSlotTypeError = false;	
				}
			}

			if ( ( bSlotTypeError ) && ( pItem->m_nType != ITEMTYPE_ELEMENTALSTONE ) )
			{
				ErrorMsg( "(X) INVEN_INVALIDSOCKET : %s - Item(%d) - Slot(%d)", m_strPlayerID, pItem->m_dwItemIndex, pItem->m_nSlotType );				
				//pItem->m_wX				=	0;
				//pItem->m_wY				=	0;	

				pItem->m_nSlotType		=	pBaseItem->nSLOTTYPE;
			}			
		}
	}

#ifdef DEF_KUMA_GAMBLE

	if ( pItem->m_nWHERE == WHERE_GAMBLEVIEW )
	{
		pItem->m_nWHERE		=	WHERE_INVENTORY;
		pItem->m_wX			=	0;
		pItem->m_wY			=	0;

		m_nGambleState		= GAMBLE_STATE_NONE;
		m_pTmpGambleItem	= NULL;
	}

#endif


	if ( pItem->m_dwOwnHandle )
	{
		if ( pItem->m_nType == ITEMTYPE_USER_MANTLE )
		{
			if ( ( pItem->m_dwOwnHandle != m_dwHandle ) &&
				 ( pItem->m_nWHERE == WHERE_EQUIPMENT ) ) 
			{
				pItem->m_nWHERE			=	WHERE_INVENTORY;
				pItem->m_wX				=	0;
				pItem->m_wY				=	0;	
			}
		}
		else if ( pItem->m_nType == ITEMTYPE_GUILD_MANTLE )
		{
			if ( ( pItem->m_dwOwnHandle != m_dwGuildHandle ) &&
				 ( pItem->m_nWHERE == WHERE_EQUIPMENT ) ) 
			{
				pItem->m_nWHERE			=	WHERE_INVENTORY;
				pItem->m_wX				=	0;
				pItem->m_wY				=	0;	
			}
		}

⌨️ 快捷键说明

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