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

📄 serverdlg2.cpp

📁 决战帝王1.5武神降临对喜爱决战的玩家共享研究用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			pSocket->ProcessData();

			if (++proccount >= 20 )
			{
				proccount = 0;
				Sleep(1);
			}
		}

	
	}

	return 0;
}
*/

// 肺弊牢 胶饭靛 窃荐...
//DWORD WINAPI WorkerLoginThread(LPVOID lp )
//unsigned __stdcall WorkerLoginThread( void *lp )
UINT WorkerLoginThread( void *lp )
{
	LOGINOUTTHREADDATA *pLIOTD;

	CPtrList LocalLoginData;
	int nLocalLoginDataCount = 0;

	for (;;)
	{
		if ( nLoginDataCount < 1 )
		{
			Sleep(1);
			continue;
		}

		EnterCriticalSection( &m_CS_LoginData );

		while( nLoginDataCount >= 1 )
		{
			pLIOTD = (LOGINOUTTHREADDATA *)RecvLoginData.RemoveHead();
			nLoginDataCount = RecvLoginData.GetCount();

			LocalLoginData.AddTail(pLIOTD);
			nLocalLoginDataCount = LocalLoginData.GetCount();
		}

		LeaveCriticalSection( &m_CS_LoginData );

		while( nLocalLoginDataCount >= 1 )
		{
			pLIOTD = (LOGINOUTTHREADDATA*)LocalLoginData.RemoveHead();
			nLocalLoginDataCount = LocalLoginData.GetCount();

			if ( pLIOTD == NULL ) continue;

			USER *pUser = NULL;
			pUser = g_pUserList->GetUserUid(pLIOTD->UID);
			if ( pUser == NULL )
			{
				delete pLIOTD;
				Sleep(1);
				continue;
			}

//			EnterCriticalSection(&m_CS_SqlDataProcess);
			if ( pUser && pUser->m_SockFlag == 1 )
			{
				switch(pLIOTD->CODE)
				{
					case ACCOUNT_LOGIN_REQ:
						pUser->AccountLoginReq(pLIOTD->ID);
						break;

					case GAME_START_REQ:
						pUser->GameStart(pLIOTD->ID);
						break;

					case RESTART_REQ:
						pUser->RestartReq(pLIOTD->ID);
						break;
				}
			}
//			LeaveCriticalSection(&m_CS_SqlDataProcess);
			delete pLIOTD;
			Sleep(1);
		}

/*
		EnterCriticalSection( &m_CS_LoginData );
		pLIOTD = (LOGINOUTTHREADDATA *)RecvLoginData.RemoveHead();
		nLoginDataCount = RecvLoginData.GetCount();
		LeaveCriticalSection( &m_CS_LoginData );

		if ( pLIOTD == NULL ) continue;

		
		pUser = g_pUserList->GetUserUid(pLIOTD->UID);
		if ( pUser == NULL )
		{
			delete pLIOTD;
			Sleep(1);
			continue;
		}

		EnterCriticalSection(&m_CS_SqlDataProcess);
		if ( pUser && pUser->m_SockFlag == 1 )
		{
			switch(pLIOTD->CODE)
			{
				case ACCOUNT_LOGIN_REQ:
					pUser->AccountLoginReq(pLIOTD->ID);
					break;

				case GAME_START_REQ:
					pUser->GameStart(pLIOTD->ID);
					break;

				case RESTART_REQ:
					pUser->RestartReq(pLIOTD->ID);
					break;
			}
		}
		LeaveCriticalSection(&m_CS_SqlDataProcess);
		delete pLIOTD;
		Sleep(1);
*/
	}

	return 0;
}

// 肺弊牢 胶饭靛 窃荐...
//DWORD WINAPI WorkerLogoutThread(LPVOID lp )
//unsigned __stdcall WorkerLogoutThread( void *lp )
UINT WorkerLogoutThread( void *lp )
{
	LOGINOUTTHREADDATA *pLIOTD;

	CPtrList LocalLogoutData;
	int nLocalDataCount = 0;

	for (;;)
	{
		if ( nLogoutDataCount < 1 )
		{
			Sleep(1);
			continue;
		}

		EnterCriticalSection( &m_CS_LogoutData );

		while( nLogoutDataCount >= 1 )
		{
			pLIOTD = (LOGINOUTTHREADDATA *)RecvLogoutData.RemoveHead();
			nLogoutDataCount = RecvLogoutData.GetCount();

			LocalLogoutData.AddTail( pLIOTD );
			nLocalDataCount = LocalLogoutData.GetCount();
		}

		LeaveCriticalSection( &m_CS_LogoutData );

		while( nLocalDataCount >= 1 )
		{
			pLIOTD = (LOGINOUTTHREADDATA*)LocalLogoutData.RemoveHead();
			nLocalDataCount = LocalLogoutData.GetCount();

			if ( pLIOTD == NULL ) continue;

			USER *pUser = NULL;
			pUser = g_pUserList->GetUserUid(pLIOTD->UID);
			if ( pUser == NULL )
			{
				delete pLIOTD;
				Sleep(1);
				continue;
			}

//			EnterCriticalSection(&m_CS_SqlDataProcess);
			if ( pUser )
				pUser->SockCloseProcess();
//			LeaveCriticalSection(&m_CS_SqlDataProcess);
			delete pLIOTD;
			//Sleep(1);
		}

/*
		EnterCriticalSection( &m_CS_LogoutData );
		pLIOTD = (LOGINOUTTHREADDATA *)RecvLogoutData.RemoveHead();
		nLogoutDataCount = RecvLogoutData.GetCount();
		LeaveCriticalSection( &m_CS_LogoutData );

		if ( pLIOTD == NULL ) continue;

		pUser = g_pUserList->GetUserUid(pLIOTD->UID);
		if ( pUser == NULL )
		{
			delete pLIOTD;
			Sleep(1);
			continue;
		}

		EnterCriticalSection(&m_CS_SqlDataProcess);
		if ( pUser )
			pUser->SockCloseProcess();
		LeaveCriticalSection(&m_CS_SqlDataProcess);
		delete pLIOTD;
		Sleep(1);
*/
	}

	return 0;
}

//DWORD WINAPI WorkerSQLThread(LPVOID lp )
//unsigned __stdcall WorkerSQLThread( void *lp )
UINT WorkerSQLThread( void *lp )
{
	SQLDATAPACKET *pSDP;
	CPtrList LocalSqlData;
	int nLocalDataCount = 0;

	for (;;)
	{
		if ( nSqlDataCount < 1 )
		{
			Sleep(1);
			continue;
		}


		EnterCriticalSection( &m_CS_SqlData );

		while( nSqlDataCount >= 1 )
		{
			pSDP = (SQLDATAPACKET *)RecvSqlData.RemoveHead();
			nSqlDataCount = RecvSqlData.GetCount();

			LocalSqlData.AddTail( pSDP );
		}

		LeaveCriticalSection( &m_CS_SqlData );

		nLocalDataCount = LocalSqlData.GetCount();

		while( nLocalDataCount >= 1 )
		{
			pSDP = (SQLDATAPACKET*)LocalSqlData.RemoveHead();
			nLocalDataCount = LocalSqlData.GetCount();

			if ( pSDP == NULL ) continue;

			USER *pUser = NULL;
			pUser = g_pUserList->GetUserUid(pSDP->UID);
			if ( pUser == NULL )
			{
				delete pSDP;
				Sleep(1);
				continue;
			}

			if (  pUser->m_SockFlag != 1 )
			{
				delete pSDP;
				Sleep(1);
				continue;
			}

//			EnterCriticalSection(&m_CS_SqlDataProcess);
			switch(pSDP->code)
			{
			case NEW_CHAR_REQ_WITH_THREAD:
				pUser->NewCharReq((TCHAR *)pSDP->pData);
				break;
			case GUILD_OPEN_REQ:
				pUser->NewGuild((TCHAR *)pSDP->pData);
				break;
			case DEL_GUILD_CHAR_REQ:
				pUser->DeleteGuildUser((TCHAR *)pSDP->pData);
				break;
			case GUILD_KICK_OUT:
				pUser->GuildKickOut((TCHAR *)pSDP->pData);
				break;
			case GUILD_MARK_ADD_REQ:
				pUser->GuildMarkAddReq((TCHAR *)pSDP->pData);
				break;
//			case GUILD_INVITE_USER_REQ:
//				pUser->GuildInvite((TCHAR *)pSDP->pData);
//				break;
			case GUILD_OFF_WITH_THREAD:
				pUser->GuildOff((TCHAR *)pSDP->pData);
				break;
			case GUILD_DISPERSE:
				pUser->GuildDisperse((TCHAR *)pSDP->pData);
				break;
			case DELETE_CHAR_REQ:
				pUser->DeleteCharReq((TCHAR *)pSDP->pData);
				break;

			case BBS_DELETE:
				pUser->BBSDelete((TCHAR *)pSDP->pData);
				break;
			case BBS_EDIT:
				pUser->BBSEdit((TCHAR *)pSDP->pData);
				break;
			case BBS_WRITE:
				pUser->BBSWrite((TCHAR *)pSDP->pData);
				break;
			case BBS_NEXT:
				pUser->BBSNext((TCHAR *)pSDP->pData);
				break;
			case BBS_READ:
				pUser->BBSRead((TCHAR *)pSDP->pData);
				break;
			case DB_GUILD_ITEM_MOVE_REQ:
				pUser->GuildItemMoveReq((TCHAR *)pSDP->pData);
				break;
			case DB_GUILD_WHEREHOUSE_EVENT_REQ:
				pUser->GuildWharehouseOpenReq();
				break;
			case DB_USER_COUNT:
				{
					COM *pCom = g_pMainDlg->GetCOM();
					if ( pCom )
					{
						pCom->UpdateUserCount();
					}
				}
				break;
			case DB_USER_DEAD:
				pUser->UpdateUserDeadLog((TCHAR *)pSDP->pData);
				break;
			//yskang 0.1 龋莫[局莫]
			case LOVE_NAME_RESULT:
				pUser->InsertLoveName((TCHAR *)pSDP->pData);
				break;
			default: break;
			};
//			LeaveCriticalSection(&m_CS_SqlDataProcess);

			delete pSDP;
			Sleep(1);
		}


/*
		EnterCriticalSection( &m_CS_SqlData );
		pSDP = (SQLDATAPACKET *)RecvSqlData.RemoveHead();
		nSqlDataCount = RecvSqlData.GetCount();
		LeaveCriticalSection( &m_CS_SqlData );

		if ( pSDP == NULL ) continue;

	
		pUser = g_pUserList->GetUserUid(pSDP->UID);
		if ( pUser == NULL )
		{
			delete pSDP;
			Sleep(1);
			continue;
		}

		if (  pUser->m_SockFlag != 1 )
		{
			delete pSDP;
			Sleep(1);
			continue;
		}

		EnterCriticalSection(&m_CS_SqlDataProcess);
		switch(pSDP->code)
		{
		case NEW_CHAR_REQ_WITH_THREAD:
			pUser->NewCharReq((TCHAR *)pSDP->pData);
			break;
		case GUILD_OPEN_REQ:
			pUser->NewGuild((TCHAR *)pSDP->pData);
			break;
		case DEL_GUILD_CHAR_REQ:
			pUser->DeleteGuildUser((TCHAR *)pSDP->pData);
			break;
		case GUILD_KICK_OUT:
			pUser->GuildKickOut((TCHAR *)pSDP->pData);
			break;
		case GUILD_MARK_ADD_REQ:
			pUser->GuildMarkAddReq((TCHAR *)pSDP->pData);
			break;
		case GUILD_INVITE_USER_REQ:
			pUser->GuildInvite((TCHAR *)pSDP->pData);
			break;
		case GUILD_OFF_WITH_THREAD:
			pUser->GuildOff((TCHAR *)pSDP->pData);
			break;
		case GUILD_DISPERSE:
			pUser->GuildDisperse((TCHAR *)pSDP->pData);
			break;
		case DELETE_CHAR_REQ:
			pUser->DeleteCharReq((TCHAR *)pSDP->pData);
			break;

		case BBS_DELETE:
			pUser->BBSDelete((TCHAR *)pSDP->pData);
			break;
		case BBS_EDIT:
			pUser->BBSEdit((TCHAR *)pSDP->pData);
			break;
		case BBS_WRITE:
			pUser->BBSWrite((TCHAR *)pSDP->pData);
			break;
		case BBS_NEXT:
			pUser->BBSNext((TCHAR *)pSDP->pData);
			break;
		case BBS_READ:
			pUser->BBSRead((TCHAR *)pSDP->pData);
			break;
		case DB_GUILD_ITEM_MOVE_REQ:
			pUser->GuildItemMoveReq((TCHAR *)pSDP->pData);
			break;
		case DB_GUILD_WHEREHOUSE_EVENT_REQ:
			pUser->GuildWharehouseOpenReq();
			break;
		case DB_USER_COUNT:
			{
				COM *pCom = g_pMainDlg->GetCOM();
				if ( pCom )
				{
					pCom->UpdateUserCount();
				}
			}
			break;
		};
		LeaveCriticalSection(&m_CS_SqlDataProcess);

		delete pSDP;
		Sleep(1);
*/
	}

	return 0;
}

UINT WorkerFortressThread( void *lp )
{
	FORTRESSDATAPACKET *pSDP;
	CPtrList LocalData;
	int nLocalDataCount = 0;

	for (;;)
	{
		if ( nFortressDataCount < 1 )
		{
			Sleep(1);
			continue;
		}


		EnterCriticalSection( &m_CS_FortressData );

		while( nFortressDataCount >= 1 )
		{
			pSDP = (FORTRESSDATAPACKET *)RecvFortressData.RemoveHead();
			nFortressDataCount = RecvFortressData.GetCount();

			LocalData.AddTail( pSDP );
		}

		LeaveCriticalSection( &m_CS_FortressData );

		nLocalDataCount = LocalData.GetCount();

		while( nLocalDataCount >= 1 )
		{
			pSDP = (FORTRESSDATAPACKET*)LocalData.RemoveHead();
			nLocalDataCount = LocalData.GetCount();

			if ( pSDP == NULL ) continue;

			CString strMsg = _T("");

			USER *pUser = NULL;
			CGuildFortress *pFort = NULL;

			int type = 0, i=0, mapindex = 0;

			if(pSDP->sFortressIndex < 0 || pSDP->sFortressIndex >= g_arGuildFortress.GetSize())
			{
				delete pSDP;
				Sleep(1);
				continue;
			}

			pFort = g_arGuildFortress[pSDP->sFortressIndex];

			if(!pFort)
			{
				delete pSDP;
				Sleep(1);
				continue;
			}

			if(pFort->m_lUsed != 1)			// 傍己傈捞 酒聪搁..肋给等 沥焊烙
			{
				delete pSDP;
				Sleep(1);
				continue;
			}

			strMsg.Format( IDS_USER_GET_FORTRESS_SUCCESS, pSDP->FORTRESS );

			for(i = 0; i < MAX_USER; i++)
			{
				pUser = g_pUserList->GetUserUid(i);
				if(pUser == NULL || pUser->m_state != STATE_GAMESTARTED) continue;

				if (  pUser->m_SockFlag == 1 )
				{
					type = pUser->CheckInvalidMapType();
					mapindex = pUser->GetGuildMapIndex(type);
					if(mapindex > -1)
					{												//辨靛傈捞 老绢唱绰 惑痢瘤开捞搁
						if(pFort->m_iZone == pUser->m_curz)
						{
							if(pFort->m_iGuildSid != pUser->m_dwGuild && pUser->m_tIsOP != TRUE )	pUser->TownPotal();				
							pUser->SendSystemMsg((LPTSTR)(LPCTSTR)strMsg, SYSTEM_ANNOUNCE, TO_ME);
						}
						else if(g_arMapTable[mapindex]->m_sStoreID == pFort->m_sFortressID)		
						{											// 规绢辨靛盔捞 酒聪搁 葛滴 付阑肺	
							if(pFort->m_iGuildSid != pUser->m_dwGuild && pUser->m_tIsOP != TRUE )	pUser->TownPotal();	
							pUser->SendSystemMsg((LPTSTR)(LPCTSTR)strMsg, SYSTEM_ANNOUNCE, TO_ME);

⌨️ 快捷键说明

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