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

📄 dbsocket.cpp

📁 韩国英雄王座倒闭后流出来部分源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	//	--------------------------------------------------------------------------------
	//	立加 辆丰 且 PLAYER甫 掘澜 [20 Byte肺 傈价]
	//	--------------------------------------------------------------------------------
	char *pPlayerID	=	pDBPacket->strPacket;	
	_LPSOCKET_FD	pClosePlayerFD = 	g_pMap->Find_Player( pPlayerID );

	//	--------------------------------------------------------------------------------
	//	秦寸 PLYAER甫 茫酒辑 立加 辆丰 矫糯 
	//	--------------------------------------------------------------------------------
	if( pClosePlayerFD )
	{	

		if( strcmp( pPlayerID,	pClosePlayerFD->pPlayer->m_strPlayerID	)	)
		{
			ErrorMsg( "(X) Character Logout failed %s / %s",pPlayerID, pClosePlayerFD->pPlayer->m_strPlayerID );

			g_lpDBSock->WorldSend_PlayerClose( pPlayerID ); 
			return;
		}
		else
		{
			ErrorMsg( "(X) Logout character find successful  %s ",pPlayerID );
		}
	
		//	----------------------------------------------------------------------------
		//	Connect父等	 版快
		//	----------------------------------------------------------------------------
		if(	pClosePlayerFD->PlayerStatus == CONNECT_LOGIN)
		{
			pClosePlayerFD->pPlayer->Player_Close();

			g_lpDBSock->WorldSend_PlayerClose( pClosePlayerFD->pPlayer->m_strPlayerID ); 
			
			// 泪矫饶 促矫 立加窍扼绊 坷幅 皋技瘤 傈价 
			g_pServer->PacketSend_PlayerIn( pClosePlayerFD,	0, MSG_PLAYERIN_RECONNECT	);	
			g_pServer->CloseClient( pClosePlayerFD );

			return;		
		}


		g_pServer->PlayerLogOut( pClosePlayerFD );			//	Player Logout贸府

		g_pServer->CloseClient( pClosePlayerFD );
	}
	//	--------------------------------------------------------------------------------
	//	秦寸 PLAYER甫 茫瘤 给茄 版快
	//	--------------------------------------------------------------------------------
	else
	{	
		g_lpDBSock->WorldSend_PlayerClose( pPlayerID );			//	pSocketFD 鞘夸 咯何 魄沥 
	}
}



////////////////////////////////////////////////////////////////////////////////////////
//	WORLD SERVER -> PLAYER	IN	(PLAYER BASE)
//
//	-	Return Code甫 Define巩栏肺 盒府矫糯
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerIn(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
	_LPDBPACKET		pWorldPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD		= (_LPSOCKET_FD)pWorldPacket->pSocketFD;


	if( !IsSocketValidity(pSocketFD ))	return;


	//	--------------------------------------------------------------------------------
	//	WORLD SERVER狼 牢刘 搬苞 犬牢 
	//
	//	0	:	WORLD	SERVER	牢刘 角菩
	//	1	:	WORLD	SERVER	牢刘 己傍 
	//	2	:	WORLD	SERVER	汗备 MODE
	//	MAP	SERVER立加 阂啊 矫 馆券 [Client Side俊辑 Connection Close]
	//	--------------------------------------------------------------------------------
	char * lpData				= pWorldPacket->strPacket;
	
	//	DEF_KUMA_CHINA
	if ( lpData == NULL )
		return;

	BYTE nResult = (BYTE)*lpData;		//	PLAYERIN_ASK狼览翠 掘澜  [BYTE]
	lpData += 1;

	//	--------------------------------------------------------------------------------
	//	牢刘 角菩且 版快 World Server俊辑 PLAYER OUT Mes 鞘夸 咯何 Checking
	//	--------------------------------------------------------------------------------
	switch( nResult )	
	{	
	//	WORLD SERVER 牢刘 己傍 
	case 1	:	g_pServer->PacketSend_PlayerIn( pSocketFD,	1, NULL								);	break ;	

	//	World Server 牢刘 角菩 
	case 0 	:	g_pServer->PacketSend_PlayerIn( pSocketFD,	0, MSG_PLAYERIN_CANNTFINDPLAYER		);	return;	

	case 3	:	

	//	World Server Recovery Mode
	case 4	:	g_pServer->PacketSend_PlayerIn( pSocketFD,	0, MSG_PLAYERIN_RECONNECT			);	return;	
	
	//	World Server 啊钱 
	case 5	:	g_pServer->PacketSend_PlayerIn( pSocketFD,	0, MSG_PLAYERIN_WORLDSERVERFULL		);	return;	

#ifdef DEF_NPCCARD
// NPC CARD BUY 累诀吝捞促..
	case 10 :   g_pServer->PacketSend_PlayerIn( pSocketFD,	0, NPCCARD_BLOCK_BUY		);	return;	
// NPC CARD SELL 累诀吝捞促..
	case 11 :   g_pServer->PacketSend_PlayerIn( pSocketFD,	0, NPCCARD_BLOCK_BUY		);	return;	
#endif
		
	default	:	return;
	}

	_LPZP_PLAYERBASE pPlayerBase = (_LPZP_PLAYERBASE) lpData ;	//	PLAYER BASE 沥焊甫 掘澜	


	//	坷幅 皋矫瘤 贸府 
	pSocketFD->pPlayer->Init_PlayerBase(pSocketFD, pPlayerBase );

#ifdef DEF_CHINES_FREEUSER
	lpData += sizeof(_ZP_PLAYERBASE);
	_LPZP_PLAYERIN_ASK	pPlayerIn		= (_LPZP_PLAYERIN_ASK)lpData;
	pSocketFD->pPlayer->m_nBillCode		= pPlayerIn->nBillCode;

	ErrorMsg( "BILL : %s - %d", pSocketFD->pPlayer->m_strAccountID, pSocketFD->pPlayer->m_nBillCode);
#endif
}


#ifdef DEF_NPCCARD

////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_NPCCardInfo(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
	_LPDBPACKET		pDBPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD	= (_LPSOCKET_FD)pDBPacket->pSocketFD;

	_LPZW_NPCCARDINFO_REP pNPCCardInfo = (_LPZW_NPCCARDINFO_REP)pDBPacket->strPacket;
	_LPSOCKET_FD	pPlayerFD = 	g_pMap->Find_Player( pNPCCardInfo->m_szAccount );


//#ifdef DEF_LOGOUT_TO_WORLD
//	if ( pPlayerFD == NULL )
//	{
//		char strTempPlayer[22] ={0,} ;	
//	
//		memcpy( strTempPlayer, pNPCCardInfo->m_szAccount, 20 );
//
//		pPlayerFD = (_LPSOCKET_FD)g_pMap->m_MapTempPlayerID.Find( strupr( strTempPlayer ) );
//	}
//#endif 

	if ( pPlayerFD )
	{
		switch( pNPCCardInfo->m_nResult )
		{
		// NPC CARD BUY 1盒饶 立加 辆丰 茄促.
		case 12:
			g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_BUY				);
		break;
		// NPC CARD BUY 己傍茄霸 乐促
		case 13:
			if ( pPlayerFD->pPlayer )
				pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_BUY;
		break;
		// NPC CARD SELL 1盒饶 立加 辆丰 茄促.
		case 14:
			g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_SELL				);
		break;
		// NPC CARD SELL 己傍茄霸 乐促
		case 15:
			if ( pPlayerFD->pPlayer )
				pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_SELL;
		break;
		// NPC CARD SELL 己傍茄霸 乐促( 柯扼牢惑俊辑 舅妨林磊 )
		case 16:
			g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_SELL				);
		break;
		// NPC CARD BUY FAIL : FOR NOT ENOUGH TRA
		case 17:
			if ( pPlayerFD->pPlayer )
				pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_BUYFAIL_TRA;
		break;
		}
	}	
}

#endif


////////////////////////////////////////////////////////////////////////////////////////
//	WORLD SERVER -> PLAYER INVETORY
//
//	-	坷幅 贸府 风凭 眠啊
//	-	N俺肺 唱穿绢辑 Client俊 傈价窃
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerInvetory(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
	_LPDBPACKET		pWorldPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD		= (_LPSOCKET_FD)pWorldPacket->pSocketFD;

	//
	//	SOCKET 蜡瓤己 Checking
	//
	if( !IsSocketValidity(pSocketFD ))	return;


	//
	//	Wrod Server俊辑 罐篮 牢亥配府 涝仿 矫糯
	//
	char *lpReadData	=	pWorldPacket->strPacket;

	WORD *lpReadNum		=	(WORD *) lpReadData ;
	int	 nReadNum		=	(int)	(*lpReadNum);
	lpReadData			+=	sizeof(WORD)		;

	//
	//	牢亥配府 历厘 沥焊甫 掘澜 
	//
	EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );

		while ((nReadNum)-- > 0 )
		{
			//	Read等 Invetory沥焊甫 涝仿 矫糯
			_LP_PLAYERINVENTORY lpItem  = (_LP_PLAYERINVENTORY ) lpReadData ;	

			pSocketFD->pPlayer->Init_Inventory( lpItem );		

			lpReadData += sizeof(_PLAYERINVENTORY) ;	
		}
		

	#ifdef DEF_AZIT

	#else
		pSocketFD->pPlayer->m_dwPartyQuest = 0;
		pSocketFD->pPlayer->SetChannel( 0 );
	#endif



	LeaveCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );

#ifdef DEF_ITEMCOUNT_BADAJOA20041108_TEST
	ErrorMsg("Inv(%d) Equ(%d) Where(%d)  ",pSocketFD->pPlayer->m_sItemCount[WHERE_INVENTORY],pSocketFD->pPlayer->m_sItemCount[WHERE_EQUIPMENT],pSocketFD->pPlayer->m_sItemCount[WHERE_WAREHOUSE]  ) ;
#endif

	ErrorMsg( "LOGIN - Receve Inventory [%s]",	pSocketFD->pPlayer->m_strPlayerID );
}


////////////////////////////////////////////////////////////////////////////////////////
//	QUEST LIST
//
//	-	Active	Quest甫 涝仿矫糯
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_QuestList(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
	_LPDBPACKET		pWorldPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD		= (_LPSOCKET_FD)pWorldPacket->pSocketFD;

	//
	//	SOCKET 蜡瓤己 Checking
	//
	if( !IsSocketValidity(pSocketFD ))	return;

	//
	//	Wrod Server俊辑 罐篮 牢亥配府 涝仿 矫糯
	//
	char *lpReadData	=	pWorldPacket->strPacket;

	WORD *lpReadNum		=	(WORD *) lpReadData ;
	int	 nReadNum		=	(int)	(*lpReadNum);
	lpReadData			+=	sizeof(WORD)		;

	EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );

		while ((nReadNum)-- > 0 )
		{
			_LPZW_QUESTLIST_REP pQuest  = (_LPZW_QUESTLIST_REP ) lpReadData ;	

			pSocketFD->pPlayer->Init_Quest( pQuest );		

			lpReadData += sizeof( _ZW_QUESTLIST_REP) ;	
		}


	LeaveCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
}


////////////////////////////////////////////////////////////////////////////////////////
//	QUEST GLOBAL VALUE	
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_QuestGlobalValue(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{

	_LPDBPACKET		pWorldPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD		= (_LPSOCKET_FD)pWorldPacket->pSocketFD;

	//	--------------------------------------------------------------------------------
	//	SOCKET 蜡瓤己 Checking
	//	--------------------------------------------------------------------------------
	if( !IsSocketValidity(pSocketFD ))	return;
		
	//	--------------------------------------------------------------------------------
	//	Global Value蔼阑 悸泼矫糯
	//	--------------------------------------------------------------------------------	
	pSocketFD->pPlayer->QuestGlobal_SetValueByWorld( (_LPZW_QUESTGLOBALVALUE_REP)pWorldPacket->strPacket );
	
}


////////////////////////////////////////////////////////////////////////////////////////
//	WORLD SERVER -> PLAYER SKILL
//
//	-	泅犁	Player Skill篮 70俺 捞惑 逞瘤 臼绰巴栏肺 啊沥	
//	-	SKILL涝仿风 单捞鸥 傈价
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerSkill(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
	_LPDBPACKET		pDBPacket	= (_LPDBPACKET)lpIOContext->buf;	
	_LPSOCKET_FD	pSocketFD	= (_LPSOCKET_FD)pDBPacket->pSocketFD;

	_LPDBSOCKET_FD	pDBSocket	= (_LPDBSOCKET_FD)lpIOContext->lpSocketContext;

	if( !IsSocketValidity( pSocketFD )		)	return;			//	SOCKET 八荤	
	
	//	--------------------------------------------------------------------------------
	//	SKILL 沥焊甫 掘澜
	//	--------------------------------------------------------------------------------
	char * lpReadData	= pDBPacket->strPacket;
	
	WORD *lpReadNum		= (WORD *) lpReadData ;
	int	nReadNum		= (int)(*lpReadNum);

	lpReadData			+= sizeof(WORD) ;

	//	--------------------------------------------------------------------------------
	//	Skill 包访 沥焊甫 Memory俊 历厘
	//	--------------------------------------------------------------------------------
	EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );

	while ((nReadNum)-- > 0 )
	{
		_LPZW_PLAYERSKILL_REP pSkill  = (_LPZW_PLAYERSKILL_REP) lpReadData ;


		pSocketFD->pPlayer->Init_PlayerSkill( pSkill );

		lpReadData += sizeof(_ZW_PLAYERSKILL_REP) ;
	}
		
	

	_LPZEMIPACKET lpSendPacket	=	g_pServerMem->ZemiPacket_Pop();

	//	--------------------------------------------------------------------------------
	//	牢亥配府 沥焊甫	Client沥焊甫 傈价
	//	--------------------------------------------------------------------------------
	char * cp	= lpSendPacket->strPacket;
	char * pTmpCount ;
	WORD wNum	= 0 ;
	WORD wSize	= 0 ;	

	MAP_VOIDPTR::iterator it	= pSocketFD->pPlayer->m_MapInventory.Begin();
	MAP_VOIDPTR::iterator itEnd = pSocketFD->pPlayer->m_MapInventory.End();

	while(true)
	{
		wNum = 0 ;
		memset(lpSendPacket, 0x0 , (sizeof( _ZEMIPACKET ))) ;

		cp = lpSendPacket->strPacket;

		// 酒捞袍狼 肮荐甫 历厘窍绰 厘家捞促.
		pTmpCount	= cp ;
		cp			+= sizeof(wNum) ;

		for (; it != itEnd; ++it)
		{
			CItem	*pItem = (CItem *)it->second;

			if ( !pItem )		continue;

			pItem->GetInventory( (_LP_PLAYERINVENTORY)cp );

#ifdef _DEBUG
			_LP_PLAYERINVENTORY p = (_LP_PLAYERINVENTORY)cp;

			if(p->wITEMIDX == 0 )
			{
				ErrorMsg("(X) p->wITEMIDX is 0 (%d) ",wNum ) ;
			}
#endif
			
			cp += sizeof(_PLAYERINVENTORY) ; 
			++wNum;

			//	/////////////////////////////////////////////
			//	12究	ITEM阑 傈价 窃 
			//	/////////////////////////////////////////////

			if(wNum == 11) 
			{	
				++it;	
				break ;		
			}
		}
		
		memcpy (pTmpCount, &wNum,sizeof(wNum) ) ;


		lpSendPacket->dwSize	= cp - lpSendPacket->strPacket ;
		lpSendPacket->dwCommand = ZP_INVENTORYLIST_REP ;
		
		g_pServer->Send_Single( pSocketFD , lpSendPacket);

		if(it == itEnd) break ;
	}	

	//	--------------------------------------------------------------------------------
	//	Guild SKILL沥焊甫 傈价窃 
	//	--------------------------------------------------------------------------------

	memset(lpSendPacket, 0x0 , (sizeof( _ZEMIPACKET ))) ;
		
	cp	= lpSendPacket->strPacket;	
	wNum	= 0 ;
	wSize	= 0 ;	

⌨️ 快捷键说明

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