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

📄 playerinfo.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		else // 2005-2-15 badajoa 噶配啊 酒囱 促弗 酒捞袍档 利侩登霸 窍扁困秦辑 
		{
			if ( ( pItem->m_dwOwnHandle != m_dwHandle ) &&
				 ( pItem->m_nWHERE == WHERE_EQUIPMENT ) ) 
			{
				pItem->m_nWHERE			=	WHERE_INVENTORY;
				pItem->m_wX				=	0;
				pItem->m_wY				=	0;	
			}
		}
	}			 



#ifdef DEF_ITEMCOUNT_BADAJOA20041108
	if(pItem->m_nWHERE >= WHERE_INVENTORY &&  pItem->m_nWHERE < WHERE_MAX)
	{		
		m_sItemCount[pItem->m_nWHERE] += pItem->m_nSLOTWIDTH * pItem->m_nSLOTHEIGHT ;


		
#ifdef DEF_ITEMCOUNT_DEL

		if ( pItem->m_nWHERE == WHERE_WAREHOUSE )
		{
#ifdef DEF_CHINES_FREEUSER
			if ( IsFreeUser() )
			{
				if ( pItem->m_nTabNum > 1 )
				{
					g_pMap->Pool_Item_Push( pItem, 3 );
					return false;	
				}
			}			
#endif
			
		}
		else if ( pItem->m_nWHERE == WHERE_INVENTORY )
		{
			if ( m_sItemCount[pItem->m_nWHERE] > ( 10*8 + CHINESE_ALLOW_OVERLAPITEM ) )											
			{
				g_pMap->Pool_Item_Push( pItem, 3 );
				return false;
			}
		}

		if ( ( (int)(pItem->m_wX) < 0 ) || ( (int)(pItem->m_wY) < 0 ) )
		{
			pItem->m_wX = 0;
			pItem->m_wY = 0;
		}

		if ( pItem->m_nWHERE == WHERE_INVENTORY )
		{
			if ( ( (pItem->m_wX + pItem->m_nSLOTWIDTH) > 8 ) || ( (pItem->m_wY + pItem->m_nSLOTHEIGHT) > 10 ) )
			{
				pItem->m_wX = 0;
				pItem->m_wY = 0;
			}
		}
#endif
	}

#endif

	pItem->m_ItemLocation	=	SERVER_WORLD;					//	World Server俊辑 涝仿 罐澜 单捞鸥牢 版快
	pItem->m_ItemOpration	=	WORLD_NOTHING;

	bool bOK = m_MapInventory.Insert( pItem->m_dwItemHandle,	pItem );	//	Map 秦寸 郴开阑 楷搬 
	
	if( bOK )
	{	
		Init_PutOnUpdate( pItem );								//	Player 馒侩 沥焊甫 Update矫糯
	}
	else
	{	
		//	Player Inventory 吝汗等 版快 Error Msg贸府 
		ErrorMsg( "(X) initialize Inventory Error:(%s) Handle=(%d)(%d)", m_strPlayerID,	pItem->m_dwItemHandle,pInventory->dwSEQ );

		g_pMap->Pool_Item_Push( pItem, 3 );

		return false;
	}

	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	檬扁 SKILL单捞鸥甫 涝仿 矫糯 
//	
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_PlayerSkill(_LPZW_PLAYERSKILL_REP pSkill )
{	
	CEnchant *pEnchant = (CEnchant*)g_pMap->Pool_Skill_Pop();

	pEnchant->SetPlayerSkill( pSkill );
	
	m_MapSkill.Insert( pEnchant->m_dwSkillHandle, pEnchant );

#ifdef DEF_SKILLCHECK_BADAJOA20050504
	m_MapSkillIdx.Insert( pEnchant->m_wSkillIndex , pEnchant );
#endif 
	
	return	true;
}



////////////////////////////////////////////////////////////////////////////////////////
//	檬扁 Guild SKILL单捞鸥甫 涝仿 矫糯 
//	
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_GuildSkill(_LPZW_GUILDSKILL_REP pGuildEnchant )
{	
	CGuildSkill *pGuildSkill = (CGuildSkill *)g_pServerMem->m_GuildSkillPool->Alloc() ;

	pGuildSkill->SetGuildSkill( pGuildEnchant );

	m_MapGuildSkill.Insert( pGuildSkill->m_wSkillIndex , pGuildSkill );
	
	return	true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	霸烙 矫累 单捞鸥 傈价
//	
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::Init_Game()
{
	Set_CalcAllStat();										//	秦寸 荐摹甫 促矫 拌魂窍咯 馆康 矫糯


	g_pServer->PacketSend_PlayerList( m_pSocketFD );		//	Player 立加 沥焊甫 傈价 矫糯		
	
#ifdef DEF_NOSENDSELLITEMLIST

#else
	g_pServer->PacketSend_SellList( m_pSocketFD );			//	NPC啊 魄概窍绰 ITEM沥焊甫 Client俊 傈价
#endif
	
	//	--------------------------------------------------------------------------------
	//	泅犁 困摹 茄 Map ID沥焊甫 逞辫
	//	--------------------------------------------------------------------------------
	m_LinkPoint.x	= 0;
	m_LinkPoint.y	= 0;

	ChangeStatus( STATUS_STAY) ;

	//	--------------------------------------------------------------------------------
	//	ZP_PLAYERSTART_REP 沥焊甫 Client俊 傈价 矫糯
	//	--------------------------------------------------------------------------------
	g_pServer->PacketSend_PlayerStart( m_pSocketFD );	
	
	ErrorMsg( "LOGIN - Init Game [%s]",	m_strPlayerID );


	//	--------------------------------------------------------------------------------
	//	QUEST狼 Timer沥焊甫 Client俊 傈价矫糯
	//	--------------------------------------------------------------------------------
	CActiveQuest *pActiveQuest	;

	void*	TempQuest[100]	=	{0, };
	int		nCountQuest		=	0;

	//	--------------------------------------------------------------------------------
	//	Active Quest List
	//	--------------------------------------------------------------------------------
	nCountQuest	=	m_ActiveQuest.CopyTmpList( TempQuest );

	for( int i=0; i < nCountQuest ; i ++ )
	{
		pActiveQuest	=	(CActiveQuest *)TempQuest[i];

		pActiveQuest->SendInitTimer();
	}

	//	--------------------------------------------------------------------------------
	//	纳腐 弥檬 立加 矫 付阑俊辑绰 HP/MP甫 盲况淋 
	//	--------------------------------------------------------------------------------
	if( !m_nStart )
	{
		m_Tile.x	=	(WORD)_PLAYERINFO.wX  / 100;
		m_Tile.y	=	(WORD)_PLAYERINFO.wY  / 100;

#ifdef CHINESE_VERSION
		//Jason 2004-08-23-china no charge for hp in china.
#else
		if (g_pMap->IsSafeZone( m_nMapLayer, m_Tile) )
			Recharge();
		else
			RechargeHP(300);
#endif
	}
	
	

#ifdef DEF_LOG_MAPINOUT
	g_lpLog->OnFunc[DEF_LOG_MAPIN].proc(DEF_LOG_MAPIN, this, NULL, NULL, m_nMapID) ;
#endif

	//	--------------------------------------------------------------------------------	
	// 霸烙 立加阑 DB俊 扁废 矫糯
	//	--------------------------------------------------------------------------------
	DB_PlayerGameIn();



	//	
	//	弥檬 立加矫 捞亥飘 甘俊 立加茄 版快 惯葛绢肺 困摹甫 捞悼矫糯
	//
	if( !m_nStart && GetLocationMapType() == MAP_EVENT )
	{

		//
		//	包访 风凭俊 措茄 弥利拳 累诀捞 鞘夸	
		//
		//	捞悼瞪 POINT甫 掘澜 
		//
		BYTE nTempMapID	=	g_pMap->GetMapID( m_nMapLayer );

		_MOVEMAP_ *pMoveMap = ( _MOVEMAP_ *)g_Base.m_LinkMap.Find( nTempMapID );

		bool bMoveMap = false;

		if( pMoveMap )
		{
			if( pMoveMap->dwMapID != nTempMapID )
				bMoveMap = true;
		}
			
		//
		//	悼老 MAP栏肺 捞悼矫 
		//
		//	-	Link Point甫 劝侩窍档废 荐沥
		//
		if( !bMoveMap )
		{
			m_LinkPoint = 	 g_pMap->MapConfig[ m_nMapLayer ].StartPoint ;
		}
		//
		//	促弗 MAP栏肺 捞悼 矫
		//
		else
		{
			m_nMapID		=	pMoveMap->dwMapID;	
			m_LinkPoint.x	=	pMoveMap->wX;
			m_LinkPoint.y	=	pMoveMap->wY;
		}
		
		g_pServer->PlayerLogOut(m_pSocketFD );
	}


#ifdef DEF_AZIT

	//
	//	酒瘤飘 甘俊 立加窍绰 版快
	//
	//	-	秦寸 辨靛啊 酒瘤飘客 包拌 绝绰 版快 贸府	(包访 风凭阑 犬厘 矫糯)
	//
	if( !m_nStart && GetLocationMapType() == MAP_AZIT )
	{	

		Azit *pAzit = _Module.m_pAzitManager->FindAzit(GetChannel());	
		
		if( pAzit )
		{
			//
			//	档己栏肺 捞悼 矫糯
			//
			m_nMapID		=	19;	
			m_LinkPoint.x	=	21750;
			m_LinkPoint.y	=	18150;

			g_pServer->PlayerLogOut(m_pSocketFD );
		}
	}

#endif
}

////////////////////////////////////////////////////////////////////////////////////////
//	Item捞 Inventory肺 眠啊登绰 版快 
//
//	-	鞘靛俊辑 酒捞袍阑 林款 版快 
//	-	磊扁啊 滚赴巴 凛扁
//	-	ITEM阑 荤绰 版快 
//
//	pX / pY蔼捞 肋给等 蔼捞 坷绰 版快 坷幅 贸府
//
//	* 吝夸 Item牢 版快 历厘 矫糯
//
//	酒贰 肺流吝 历厘 肺流狼 痢八捞 鞘夸窃
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Inventory_Add(CItem *pItem, WORD pX, WORD pY )
{	
	//	 青扯狼 X,Y蔼阑 涝仿矫糯 
	pItem->m_nWHERE		=	WHERE_INVENTORY;		//	呕馒 矫糯	
	pItem->m_wX			=	pX;	
	pItem->m_wY			=	pY;

	pItem->m_nAliveTime	= 0;

	if( pItem->IsWorld() )
	{
		pItem->m_ItemOpration	=	WORLD_UPDATE;

		//	吝夸 Item牢 版快 DB楷魂  
		if(	pItem->IsValuable()	)
		{
			World_InvItemUpdate( pItem );
		}
	}
	else
	{
		pItem->m_ItemOpration	=	WORLD_INSERT;

		//	吝夸 Item牢 版快 DB楷魂 
		if(	pItem->IsValuable()	)
		{
			World_InvItemInsert( pItem );
		}
	}

#ifdef DEF_ITEMCOUNT_BADAJOA20041108
	_AddItem(pItem) ;
#endif
	
	m_MapInventory.Insert(	pItem->m_dwItemHandle,	pItem );	//	Map 秦寸 郴开阑 楷搬
	
	return true;
}


////////////////////////////////////////////////////////////////////////////////////////
//	
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Inventory_Add(CItem *pItem, BYTE pWhere, WORD pX, WORD pY)
{
	//	 青扯狼 X,Y蔼阑 涝仿矫糯 
	pItem->m_nWHERE		=	pWhere;		//	呕馒 矫糯	
	pItem->m_wX			=	pX;	
	pItem->m_wY			=	pY;

	pItem->m_nAliveTime	= 0;



	if( pItem->IsWorld() )
	{
		pItem->m_ItemOpration	=	WORLD_UPDATE;

		//	吝夸 Item牢 版快 DB楷魂  
		if(	pItem->IsValuable()	)
		{
			World_InvItemUpdate( pItem );
		}
	}
	else
	{
		pItem->m_ItemOpration	=	WORLD_INSERT;

		//	吝夸 Item牢 版快 DB楷魂 
		if(	pItem->IsValuable()	)
		{
			World_InvItemInsert( pItem );
		}
	}

#ifdef DEF_ITEMCOUNT_BADAJOA20041108
	_AddItem(pItem) ;
#endif
	
	m_MapInventory.Insert(	pItem->m_dwItemHandle,	pItem );	//	Map 秦寸 郴开阑 楷搬
	
	return true;
}



////////////////////////////////////////////////////////////////////////////////////////
//	Item馒侩矫 Player狼 沥焊甫 Update矫糯
//	------------------------------------------------------------------------------------
//	1. Client俊 傈价且 Item沥焊甫 Setting矫糯 	
//	2. 郴何 单捞鸥甫 Setting矫糯 
//	------------------------------------------------------------------------------------
//
//	Return Value	Explain
//	------------------------------------------------------------------------------------
//		-1		:	Error 惯积 
//		0		:	厘馒 臼蹬绰 版快
//		1		:	厘馒 矫 荐摹父 函版
//		2		:	厘馒 矫	荐摹 棺 葛嚼 函版
//
//
//	-	技飘 酒捞袍 厘馒 咯何 魄沥
//	
////////////////////////////////////////////////////////////////////////////////////////
int PlayerInfo::Inventory_PutOnUpdate( CItem *pItem )
{	
	//	--------------------------------------------------------------------------------
	//	酒捞袍 犬牢 
	//	-	SLOT TYPE捞 啊瘤绊 乐绰 SLOT焊促 奴 版快
	//	--------------------------------------------------------------------------------
	if( !pItem										)	return -1;
	if( pItem->m_nSlotType > DEF_EQUIPMENTSLOTTYPE	)	return -1;	

	//	--------------------------------------------------------------------------------
	//	酒捞袍阑 厘馒窍瘤 臼篮 版快	
	//	--------------------------------------------------------------------------------
	if( pItem->m_nWHERE != WHERE_EQUIPMENT )	return 0;
	

	////////////////////////////////////////////////////////////////////////////////////
	//	剧颊 公扁牢 版快 捞傈 公扁甫 呕馒 矫糯 
	////////////////////////////////////////////////////////////////////////////////////
	if ( pItem->m_nSlotType == SLOT_TOWHAND )
	{
		//	----------------------------------------------------------------------------
		//	坷弗颊 公扁 檬扁拳 
		//	----------------------------------------------------------------------------
		if( m_pEquipments[ SLOT_RIGHT ]  )
		{
			//	厘馒 郴何 沥焊 檬扁拳 
			m_pEquipments[ SLOT_RIGHT ]->m_nWHERE = WHERE_INVENTORY;
			m_pEquipments[ SLOT_RIGHT ]	=	NULL;

			//	Visual 沥焊 檬扁拳 
			_PLAYERINFO.wRightWeapon	= 0;	
			_PLAYERINFO.nRightOption	= 0;
		}

		//	----------------------------------------------------------------------------
		//	哭颊 公扁 檬扁拳 
		//	----------------------------------------------------------------------------
		if( m_pEquipments[ SLOT_LEFT ] )
		{
			//	厘馒 郴何 沥焊 檬扁拳 
			m_pEquipments[ SLOT_LEFT ]->m_nWHERE = WHERE_INVENTORY;

⌨️ 快捷键说明

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