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

📄 playerinfo.cpp

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

#define QUEST_DONE_CHECK			20 * 1000 // 20檬
#define QUEST_DONE_CHECK_CNT		7

void PlayerInfo::CheckQuestStart( DWORD pQuestIdx )
{
	_QUEST_SUCCESS_INFO  *pQuestDone	=	(_QUEST_SUCCESS_INFO*)m_QuestDone.Find(  pQuestIdx );
	if ( pQuestDone == NULL )
	{
		_QUEST_SUCCESS_INFO *pQuestDone	= g_pServerMem->QuestSuccessInfo_Pop();
		if ( pQuestDone )
		{			
			m_QuestDone.Insert( pQuestIdx, pQuestDone );
			pQuestDone->nQuestDoneCnt	= 0;
			pQuestDone->dwQuestIdx		= pQuestIdx;
			pQuestDone->dwLastDoneTime  = 0;
		}
		else
			return;
	}

	pQuestDone->dwStartTime	= timeGetTime();
}

////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::CheckQuestDone( DWORD pQuestIdx, bool bSuccess )
{
	_QUEST_SUCCESS_INFO  *pQuest	=	(_QUEST_SUCCESS_INFO*)m_QuestDone.Find(  pQuestIdx );
	if ( pQuest == NULL )
		return;

	DWORD dwTime = timeGetTime();

	if ( ( dwTime - pQuest->dwStartTime ) <= QUEST_DONE_CHECK )
	{
		if ( ( pQuest->dwLastDoneTime != 0 ) &&
			( ( dwTime - pQuest->dwLastDoneTime ) <= QUEST_DONE_CHECK ) )
		{
			pQuest->nQuestDoneCnt += 1;

			if ( pQuest->nQuestDoneCnt > QUEST_DONE_CHECK_CNT )
			{
				// 购啊 捞惑窍促.... 老窜 肺弊 巢扁磊..
				g_lpLog->OnFunc[DEF_LOG_CHECKQUESTDONE].proc(DEF_LOG_CHECKQUESTDONE,this, NULL, NULL, pQuestIdx) ;			

				pQuest->nQuestDoneCnt = 0;
			}
		}

		pQuest->dwLastDoneTime = dwTime;
	}
}
#endif

////////////////////////////////////////////////////////////////////////////////////////
//	弥檬 霸烙 立加 矫档 
//
//	-	WORLD SERVER俊	立加 皋矫瘤 傈价 傈
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::Init_Login(_LPSOCKET_FD pSocketFD, _LPZP_PLAYERIN_ASK pPlayerIN)
{
	m_pSocketFD	=	pSocketFD;

	m_nSaveTick = 0 ;

	memcpy( m_strAccountID, pPlayerIN->strAccountId	, sizeof(m_strAccountID) );	//	Account	ID 涝仿
	memcpy( m_strPlayerID , pPlayerIN->strPlayerId	, sizeof(m_strPlayerID ) );	//	纳腐磐	ID 涝仿	

	m_nStart	=	pPlayerIN->nStart;											//	弥檬 立加咯何
																				//	0
																				//	1
		
//#ifdef DEF_LOGOUT_TO_WORLD
//
//	//	--------------------------------------------------------------------------------
//	//	PLAYER ID 殿废矫 措巩磊 函券饶 殿废
//	//	--------------------------------------------------------------------------------
//	char strTempPlayer[22] ={0,} ;	
//
//	memcpy( strTempPlayer, pPlayerIN->strPlayerId , 20 );
//
//	g_pMap->m_MapTempPlayerID.Delete(strupr( strTempPlayer ));
//
//	g_pMap->m_MapTempPlayerID.Insert( strupr( strTempPlayer ), pSocketFD );
//
//#else
	//	--------------------------------------------------------------------------------
	//	NOTENOTE: 吝汗 立加栏肺 牢茄 归挤阑 秦搬窍扁 困秦 荐沥窃 
	//	ACCOUNT ID殿废
	//	--------------------------------------------------------------------------------
	g_pMap->m_MapAccountID.Insert( pPlayerIN->strAccountId	, pSocketFD );


	//	--------------------------------------------------------------------------------
	//	PLAYER ID 殿废矫 措巩磊 函券饶 殿废
	//	--------------------------------------------------------------------------------
	char strTempPlayer[22] ={0,} ;	

	memcpy( strTempPlayer, pPlayerIN->strPlayerId , 20 );

	g_pMap->m_MapPlayerID.Insert( strupr( strTempPlayer ), pSocketFD );
// #endif // DEF_LOGOUT_TO_WORLD


	//	--------------------------------------------------------------------------------
	//	苞陛 包访 沥焊甫 涝仿矫糯	
	//	--------------------------------------------------------------------------------
#if defined(DEF_BILLING) || defined(DEF_CHINES_FREEUSER)
	m_nBillCode			=	pPlayerIN->nBillCode;			//	苞陛 内靛
	m_nConnectLocation	=	pPlayerIN->nConnectLocation;	//	立加 瘤开
#endif
}


////////////////////////////////////////////////////////////////////////////////////////
//	Player狼 包访 沥焊甫 檬扁拳 矫糯 
//
//	-	PLAYER INFO	STRUCT甫 涝仿 FUNCTION阑 劝侩
//	-	坷幅 皋矫瘤 贸府 立加  角菩 矫
//
//	-	酒瘤飘 甘 立加 矫 酒瘤飘 傈 荐青 咯何甫 魄窜窍咯 包访 涅胶飘甫 惯悼矫糯
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_PlayerBase(_LPSOCKET_FD	pSocketFD, _LPZP_PLAYERBASE_REP	pPlayerBase	)
{		
	//	--------------------------------------------------------------------------------
	//	Player狼 扁夯 沥焊甫 涝仿 矫糯 
	//	--------------------------------------------------------------------------------
	m_dwHandle					=	pPlayerBase->dwPlayerHandle;		//	Player Handle

	m_nCharacterType			=	pPlayerBase->nPlayerClass	%10;	//	檬扁 Setting蔼 沥焊甫 掘澜
	
	m_nJob						=	pPlayerBase->nPlayerClass;			//	流诀阑 殿废矫糯


	//	Player Visual沥焊甫 涝仿 矫糯 
	memcpy( _PLAYERINFO.strPlayerId , m_strPlayerID, sizeof( _PLAYERINFO.strPlayerId ) );


	_PLAYERINFO.dwPlayerHandle	=	pPlayerBase->dwPlayerHandle;		//	Player Handle	
	_PLAYERINFO.nPlayerClass	=	m_nJob;				//	Player Class
	

	m_nBaseStr					=	pPlayerBase->wSTR;					//	某腐磐狼 扁夯塞
	m_nBaseDex					=	pPlayerBase->wDEX;					//	某腐磐狼 扁夯 刮酶
	m_nBaseIntel				=	pPlayerBase->wINTEL;				//	某腐磐狼 扁夯 瘤仿
	m_nBaseLuck					=	pPlayerBase->wLUCK;					//	某腐磐狼 扁夯 款

	m_nLevel					=	pPlayerBase->dwLVL;					//	某腐磐狼 饭骇

	m_nAlign					=	pPlayerBase->nAlign;				//	己氢摹

	_PLAYERINFO.nAlign			=	pPlayerBase->nAlign;				//	己氢摹

	//	--------------------------------------------------------------------------------
	//	纳腐狼 捞傈  版氰摹甫 掘澜
	//
	//	-	酒贰客 鞍捞 荐沥饶 眠饶 Error Msg贸府 窍档废 窃
	//	--------------------------------------------------------------------------------
	_LEVEL_UP_  *pLeveUp	= g_Base.Find_LevelUp( m_nLevel - 1 );		//	Level Up 单捞鸥甫 掘澜 	
	
	if( pLeveUp )
	{
		m_nBaseExp = pLeveUp->dwEXPNEED;
	}
	else
	{
		ErrorMsg( "(X) Level(%d) %d No default experience info", m_nLevel, m_nLevel - 1 );
		return false ;
	}

	m_nExp		=	pPlayerBase->dwEXP;					//	某腐磐狼 版氰摹

	//	--------------------------------------------------------------------------------
	//	矫累 版氰摹啊 累篮 版快 
	//	--------------------------------------------------------------------------------
	if(	 m_nExp <	m_nBaseExp )
	{
		ErrorMsg( "(X)	%s experience less than default experience", m_strPlayerID );
		
		//	----------------------------------------------------------------------------
		//	秦寸 版氰摹狼 Level俊 嘎档废 Down阑 矫糯
		//	----------------------------------------------------------------------------
		while(1)
		{
			pLeveUp	= g_Base.Find_LevelUp( m_nLevel - 1 );		// Level Up 捞傈 单捞鸥甫 掘澜

			if( NULL == pLeveUp )
			{
				ErrorMsg( "(X) Level(%d) %d No default experience info", m_nLevel, m_nLevel - 1 );
				return false ;
			}
			
			if( pLeveUp->dwEXPNEED > m_nExp )
			{
				--m_nLevel;						//	Level Down矫糯
				m_nNextExp	=	pLeveUp->dwEXPNEED;
			}
			else
			{
				//	泅犁 Level狼 矫累 版氰摹
				//	包访 荐摹狼 八刘累诀捞 鞘夸窃
				if( pLeveUp->dwEXPNEED < m_nBaseExp  )
					m_nBaseExp = pLeveUp->dwEXPNEED;

				break;
			}
		}

		
	}
	
	//	--------------------------------------------------------------------------------
	//	促澜 版氰摹 沥焊甫 掘澜
	//	--------------------------------------------------------------------------------
	pLeveUp	= g_Base.Find_LevelUp( m_nLevel	 );	

	if( pLeveUp )
		m_nNextExp = pLeveUp->dwEXPNEED;
	else
		ErrorMsg( "(X) Have not Experience info after Level %d", m_nLevel );
	//	m_nNextExp					=	pPlayerBase->dwNEXTEXP;			//	促澜 饭骇 版氰摹

	
	//	饭骇 焊沥 累诀
	m_nLastLevel				=	pPlayerBase->dwLASTLVL;				//	某腐磐狼 饭骇(胶懦器牢飘 罐篮 锭鳖瘤 饭骇)

	m_nHP						=	pPlayerBase->dwHP;					//	某腐磐狼 眉仿
	m_nMP						=	pPlayerBase->dwMP;					//	某腐磐狼 付过仿

	m_nSkillPoint				=	pPlayerBase->dwSKILLPOINT;			//	某腐磐狼 胶懦 器牢飘
	m_nStatPoint				=	pPlayerBase->dwSTATPOINT;			//	某腐磐狼 胶湃 器牢飘


	//	pPlayerBase->wX;												//	Player X 困摹
	//	pPlayerBase->wY;												//	Player Y 困摹

	//
	//	荐沥 荤亲 :		m_nPartyType / 	m_sPartyClass俊 包访 沥焊涝仿 
	//
	//
#ifdef DEF_PARTYQUEST
	m_dwPartyHandle			=	pPlayerBase->dwPARTYIDX	;				//	颇萍狼 沥焊	[MAP 捞悼矫 狼固啊 乐澜]
#else

	if( !m_nStart )
	{										//	颇萍狼 沥焊	[MAP 捞悼矫 狼固啊 乐澜]
		Party_ClearHandle() ;
	}
	else
	{
		m_dwPartyHandle			=	pPlayerBase->dwPARTYIDX	;		//	颇萍狼 沥焊	[MAP 捞悼矫 狼固啊 乐澜]
	}
#endif


	if(m_dwPartyHandle != 0)
	{
		_PLAYERINFO.dwPartyHandle	= m_dwPartyHandle ;
	}

	m_dwGuildHandle				=	pPlayerBase->dwGUILDIDX;			//	辨靛 沥焊
	
	//	--------------------------------------------------------------------------------
	//	辨靛俊 啊涝等 版快贸府
	//	--------------------------------------------------------------------------------
	if(m_dwGuildHandle != 0)
	{
		memcpy(m_strGuildName, pPlayerBase->strGuildName, 20);							//	辨靛狼 捞抚
		memcpy(m_strGuildMark, pPlayerBase->strGuildMark, sizeof( m_strGuildMark ));	//	辨靛狼 付农 

		m_nGuildLevel				=   pPlayerBase->nGuildLevel;						//  辨靛郴狼 饭骇
		
		memcpy( _PLAYERINFO.strGuildName , m_strGuildName, sizeof( m_strGuildName ) );
		memcpy( _PLAYERINFO.strGuildMark , m_strGuildMark, sizeof( m_strGuildMark ) );
		_PLAYERINFO.nGuildLevel		=   m_nGuildLevel;			//  辨靛郴狼 饭骇

		_PLAYERINFO.dwGuildHandle	=	m_dwGuildHandle;

		Guild_PlayerIn(m_strGuildName) ;

		m_iContribute =	pPlayerBase->iContribute ;


#ifdef DEF_GUILDRANKDUB
		m_iGuildRank  = pPlayerBase->iGuildRank	;
#endif
	}

	m_nGold			=	pPlayerBase->dwGOLD;							//	爱绊 乐绰 陛狼 剧
	m_nBankGold		=	pPlayerBase->dwBANKGOLD;						//	芒绊俊 该扁 陛狼 剧 	
	m_nActiveSlot	=	pPlayerBase->nACTIVESLOT;						//	胶懦 窍窜 ICON急琶等 SLOT困摹		
	m_nAdminDiv		=	pPlayerBase->nDiv;								//	老馆 荤侩磊/GM备盒
	

	//	--------------------------------------------------------------------------------
	//	纳腐 LEVEL俊 秦寸登绰 MAX HP/MAXP MP/CM甫 掘澜 
	//	--------------------------------------------------------------------------------
	_INIT_STAT_ *pInitStat	= g_Base.Find_InitStat( m_nCharacterType );	//	檬扁 Setting蔼 沥焊甫 掘澜
	if( !pInitStat )	return	false;
	
	m_nBaseMaxHP	= pInitStat->wHP + pInitStat->wHPLVL * m_nLevel;	//	MAX HP
	m_nBaseMaxMP	= pInitStat->wMP + pInitStat->wMPLVL * m_nLevel;	//	MAX	MP

	m_nCM			= pInitStat->wCM;									//	CM
	
	//	--------------------------------------------------------------------------------
	//	纳腐捞 扁夯 葛嚼 Setting (Client傈价 单捞鸥 涝仿)
	//
	//	-	Base版氰摹绰 老 窜 涝仿 矫糯 眠饶 肺流 荐沥 鞘夸
	//		(MAP 捞悼 矫 版氰摹啊 肋给 钎矫 蹬绰 Bug惯积)
	//	--------------------------------------------------------------------------------
	pPlayerBase->dwLVL		=	m_nLevel;
	pPlayerBase->dwBASEEXP	=	m_nBaseExp;
	pPlayerBase->dwNEXTEXP	=	m_nNextExp;

	//	--------------------------------------------------------------------------------
	//	芒绊 TAB / 芒绊 鞠龋	(2004.04.21 Duke Kim眠啊)
	//	--------------------------------------------------------------------------------
	m_nBankTab				=	pPlayerBase->nBankTab;		//	荤侩 芒绊 TAB
	m_nBankLock				=	pPlayerBase->nBankLock;		//	芒绊 LOCK咯何


	//	--------------------------------------------------------------------------------
	//	芒绊 Password (Map Server/World Server荤侩)
	//	--------------------------------------------------------------------------------
	memcpy(	m_strBankPassword, pPlayerBase->strBankPassword, sizeof(pPlayerBase->strBankPassword) );

	//	--------------------------------------------------------------------------------
	//	蜡历甸俊霸绰 芒绊 菩胶况靛 沥焊甫 焊郴瘤 臼绰促. 
	//	--------------------------------------------------------------------------------
	memset(pPlayerBase->strBankPassword,0x0, sizeof(pPlayerBase->strBankPassword) ) ;

	//	--------------------------------------------------------------------------------
	//	ZP_PLAYERBASE_REP 沥焊甫 Client俊 傈价 矫糯 
	//	--------------------------------------------------------------------------------
	g_pServer->PacketSend_PlayerBase( m_pSocketFD, pPlayerBase );

	//	--------------------------------------------------------------------------------
	//	秦寸 Map Layer沥焊甫 掘澜 
	//	--------------------------------------------------------------------------------
	m_dwMatchSEQ			= pPlayerBase->dwMatchSEQ;
	m_nTeam					= pPlayerBase->nTeam;

	m_dwPKCount				= pPlayerBase->dwPKCount;
	m_dwPVPWin				= pPlayerBase->dwPVPWin;
	m_dwPVPLose				= pPlayerBase->dwPVPLose;

	m_nMapID				= pPlayerBase->nMapID;
	
	m_iPKPoint				= pPlayerBase->iPKPoint ;
	m_iPKWin				= pPlayerBase->iPKWin ;
	m_iPKWin				= pPlayerBase->iPKWin ;

	m_sAttackModeTime		= pPlayerBase->sAttackModeTime ;

	if(m_sAttackModeTime > 0 )
		_PLAYERINFO.bPlayerAttackMode = true ;
	
	//	
	//	秦寸 Map Layer甫掘篮 -> Map Search肺 函版 矫糯
	//	
	//	-	秦寸 风凭阑 Function栏肺 盒府矫糯
	//
	m_nMapLayer	=	0;

	for( int i=0; i < g_pMap->m_nMaxLayer; i ++ )
	{
		if(	g_pMap->GetMapID( i )  == m_nMapID )
		{
			m_nMapLayer	=	i;
			break;
		}
	}
	
	//
	//	Max Layer坷幅
	//
	if( m_nMapLayer >= MAX_MAPLAYER )	
	{
		ErrorMsg( "(X) Max Map Layer error %s", m_strPlayerID );
		m_nMapLayer		=	0;
	}
	
	

	//	--------------------------------------------------------------------------------
	//	荤捧厘 甘牢 版快绰 眉农 
	//	--------------------------------------------------------------------------------	
	if( g_pMap->IsFightMap( m_nMapLayer ) )
	{
		// 矫累 困摹啊 荤捧厘牢 版快 
		if (g_pMap->IsFightZone( m_nMapLayer, (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100 ))
		{
			// 泅犁 困摹啊 磊脚狼 荤捧厘捞 酒囱 版快 肺厚肺 埃促.
			if ( (m_dwMatchSEQ == 0) 
			 || (false == g_lpFightzoneManager->bLoginZone(pSocketFD ,m_dwMatchSEQ,m_nTeam,  (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100)))
			{
				SendToLobby(pPlayerBase) ;
			}
		}
	}

	
	//	--------------------------------------------------------------------------------
	//	困摹 蔼阑 涝仿 [眠饶 包访 困摹 矫累 风凭 荐沥]
	//
	//	-	历厘 困摹蔼捞 绝绰 版快 : Map狼 矫累 困摹俊辑 矫累 
	//	-	酒贰 风凭 八刘捞 鞘夸窃 力措肺 悼累 臼窍绰 巴栏肺 焊烙 
	//	--------------------------------------------------------------------------------
	if( pPlayerBase->wX == 0 && pPlayerBase->wY == 0 )
	{
		//	泅 困摹俊 粮犁 窍绰 版快 
		_PLAYERINFO.wX	=	g_pMap->MapConfig[m_nMapLayer].StartPoint.x;
		_PLAYERINFO.wY	=	g_pMap->MapConfig[m_nMapLayer].StartPoint.y;
	}
	//	历厘 困摹蔼捞 乐绰 版快 : 秦寸 困摹俊辑 矫累  
	else
	{
		// 矫累 困摹啊 捞悼 陛瘤 备开牢 版快 檬扁 困摹肺 捞悼 
		if( g_pMap->IsMoveable(	m_nMapLayer, (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100  ) )
		{	
			_PLAYERINFO.wX	=	pPlayerBase->wX;
			_PLAYERINFO.wY	=	pPlayerBase->wY;
		}
		else
		{
			_PLAYERINFO.wX	=	g_pMap->MapConfig[m_nMapLayer].StartPoint.x;
			_PLAYERINFO.wY	=	g_pMap->MapConfig[m_nMapLayer].StartPoint.y;
		}
	}

	//	--------------------------------------------------------------------------------
	//	己氢摹 包访 荐摹 涝仿
	//
	//	-	World Server DB俊 包访 Chao沥焊甫 眠饶 历厘矫挪饶 沥焊甫 掘澜
	//	-	鞘靛 犬厘饶 单捞鸥 粮犁矫 包访 亲格 PK C
	//	--------------------------------------------------------------------------------
	for ( MAP_VOIDPTR::iterator it = g_Base.m_PKChaoChart.Begin(); it != g_Base.m_PKChaoChart.End(); it++)

⌨️ 快捷键说明

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