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

📄 dragon.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//#include "Language.h" //010215 lsw 林籍贸府.


// 10505 KHS  //010605 lms
bool chinese_input;
void CheckChineseInput( HWND hwnd, LPARAM lParam )
{
	if( ( lParam & 0x00ff ) == 0x0004 )
	{	
		HRESULT hResult;

		chinese_input = true;

		if( g_DirectDrawInfo.lpClipper )
		{
			g_DirectDrawInfo.lpClipper->Release();	
			g_DirectDrawInfo.lpClipper = NULL;
		}

		hResult = g_DirectDrawInfo.lpDirectDraw->CreateClipper( 0, &g_DirectDrawInfo.lpClipper, NULL );
		if( hResult == DD_OK ) 
			g_DirectDrawInfo.lpClipper->SetHWnd( 0, g_hwndMain );
	}	
	else
	{	
		chinese_input = false;

		if( g_DirectDrawInfo.lpClipper )
		{
			g_DirectDrawInfo.lpClipper->Release();	
			g_DirectDrawInfo.lpClipper = NULL;
		}
	}	
}
														
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC	hDC;
    MINMAXINFO* pMinMax = NULL;
	
	if (EWndMgr.CheckSysKey( message, wParam ) == 0)
	{	//021001 lsw
		return 0;
	}
	
	switch (message)							
	{
	case WM_INPUTLANGCHANGE:
		{
			CheckChineseInput( hWnd, lParam );
			break;
		}
	case WM_COMMAND:
		{
			SystemMenuProcess ( wParam );	
			break;
		}
	case WM_INITMENU:
		{	//soto 030307
		#ifdef _DEBUG
			MainMenuSelected(wParam,lParam);
		#endif
			break;
		}	//soto End.
	case WM_CREATE:
		{
			SetCursor( NULL );
			SetTimer( hWnd, 13, 1000, NULL);
			break;
		}					
	case WM_TIMER:
		{
			if (wParam == 13)
			{
				g_curr_time++;
				g_packet_recv_send_checktime++;
			}

			break;
		}
	case WM_ACTIVATE:		
	case WM_ACTIVATEAPP:			
		{								
			switch (LOWORD(wParam))
			{							
			case WA_CLICKACTIVE:
				{
					g_bIsActive = TRUE;
					g_FrameMgr.InitTime();
					
					if (g_DirectDrawInfo.lpDirectDraw == NULL)
					{
						if (!InitDirectDraw(g_hwndMain, &g_DirectDrawInfo))
						{
							return 0;
						}
						
						EraseScreen(&g_DirectDrawInfo, RGB(0,0,0));
					}
					
					break;
				}
			case WA_INACTIVE:
				{
					g_bIsActive = FALSE;
					g_FrameMgr.InitTime();

					if (g_DirectDrawInfo.lpDirectDraw != NULL)
					{
						CleanupDirectDraw(&g_DirectDrawInfo);
					}

					break;
				}
			case WA_ACTIVE:
				{
					g_bIsActive = TRUE;

					if (g_DirectDrawInfo.lpDirectDraw == NULL)
					{
						if (!InitDirectDraw(g_hwndMain, &g_DirectDrawInfo))
						{
							return 0;
						}

						EraseScreen(&g_DirectDrawInfo, RGB(0,0,0));
						
						SetCursor(NULL);
					}

					break;
				}
			}
			
			SetAcquire(g_bIsActive);
			CheckingAccelator_Sub1();
			break;	
		}								
	case WM_GETMINMAXINFO:
		{								
			pMinMax = (MINMAXINFO*)lParam;
			pMinMax->ptMinTrackSize.x = SCREEN_WIDTH + GetSystemMetrics(SM_CXSIZEFRAME) * 2;
			pMinMax->ptMinTrackSize.y = SCREEN_HEIGHT + GetSystemMetrics(SM_CYSIZEFRAME) * 2 + GetSystemMetrics(SM_CYMENU);
			pMinMax->ptMaxTrackSize.x = pMinMax->ptMinTrackSize.x;
			pMinMax->ptMaxTrackSize.y = pMinMax->ptMinTrackSize.y;
			break;					
		}								
	case WM_MOVE:							
	case WM_SIZE:						
		{						
			if (g_bIsActive)
			{
				if (g_DirectDrawInfo.bFullscreen)
				{						
					SetRect(&g_DirectDrawInfo.rectPrimarySurface, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
				}									
				else									
				{								
					GetClientRect(hWnd, &g_DirectDrawInfo.rectPrimarySurface);
					ClientToScreen(hWnd, (LPPOINT)&g_DirectDrawInfo.rectPrimarySurface);
					ClientToScreen(hWnd, (LPPOINT)&g_DirectDrawInfo.rectPrimarySurface + 1);
				}									
			}

			break;										
		}													
	case WM_PAINT:								
		{	
			if (g_bIsActive)
			{
				hDC = BeginPaint(hWnd, &ps);
				EndPaint(hWnd, &ps);
			}

			break;
		}
	case WM_KEYDOWN:
		{		
			DoSomeThingWithKey( wParam, lParam );		// tool.cpp
			CheckCharacterFrameOrder( wParam, lParam );	// tool.cpp
			
			switch (wParam)
			{
			case VK_RETURN:		
				{
					if (!IsChatBoxActive())		// 0601 YGI
					{
						SetChatMode(CM_MESSAGE);
					}

					break;
				}
			}

			break;
		}
	case WM_CHAR:
		{
			switch (wParam)
			{
			case VK_RETURN:		
			case VK_TAB:		
				{
					return 0;
				}
			}

			break;
		}
	case WM_KEYUP://021008 lsw
		{
			const int nVirtKey = (int)wParam;	// virtual-key code 
			LPARAM lKeyData = lParam;			// key data
			
			switch (nVirtKey)
			{
			case VK_F1:
			case VK_F2:
			case VK_F3:
			case VK_F4:
			case VK_F5:
			case VK_F6:
			case VK_F7:
			case VK_F8:
				{
					::DoQuickmemoryByKeyInput(nVirtKey,false);
					return 0;
				}
			}

			break;
		}
	case WM_LBUTTONDOWN:
	case WM_LBUTTONUP:
	case WM_RBUTTONDOWN:
	case WM_RBUTTONUP:
	case WM_LBUTTONDBLCLK:
	case WM_RBUTTONDBLCLK:
		{		
			MouseProcess( message, wParam, lParam);
			break;	
		}	
	case WM_MOUSEMOVE:
		{
			MouseProcess( message, wParam, lParam);
			break;	
		}
	case MM_MCINOTIFY:			// MCI 烹瘤 皋矫瘤甫 罐绰促.
		{
			if (wParam == MCI_NOTIFY_SUCCESSFUL)    // 楷林啊 场车阑锭.
			{
				PlayBackMusic(g_hwndMain, CurMidi);
			}
			else if (CurMidi >= 0)
			{
				PlayBackMusic(g_hwndMain, CurMidi);
			}
			
			break;
		}
	case WM_DESTROY:
		{	
			PostQuitMessage( 0 );	
			break;					
		}								
	}		
	
	return DefWindowProc( hWnd, message, wParam, lParam );
}

void CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
{	//< CSD-CN-031215
	if (nTimerid == g_idSafeTimer)
	{ 	//< PowerZ-030116
		HWND hSafeWnd = g_sysSecurity.GetSafeWindowHandle();
		
		if (!IsWindow(hSafeWnd))
		{ 
			KillTimer(hWnd, g_idSafeTimer);
			PostMessage(hWnd, WM_CLOSE, 0, 0);
		}
	}	//> PowerZ-030116
}	//> CSD-CN-031215

BOOL LoadGameInfo( void )
{
	GetPrivateProfileString( "network", "host1", "", g_GameInfo.proxy_ip[0], sizeof( g_GameInfo.proxy_ip[0] ), g_szInfoFile );
	if ( g_GameInfo.proxy_ip[0][0]== 0 )
	{
		return	FALSE;
	}
	GetPrivateProfileString( "network", "host2", "", g_GameInfo.proxy_ip[1], sizeof( g_GameInfo.proxy_ip[1] ), g_szInfoFile );
	if ( g_GameInfo.proxy_ip[1][0]== 0 )
	{
		return	FALSE;
	}
	g_GameInfo.version = GetPrivateProfileInt( "network", "ver", 0, g_szInfoFile );
	if ( g_GameInfo.version == 0 )
	{
		return	FALSE;
	}
	else
	{
//	char temp[ MAX_PATH];
//	sprintf( temp, "%d", 400 );
//	WritePrivateProfileString( "network", "ver", temp, "dragon.ini" );
	}

	// 010711 YGI
	g_SelectServerIndex = GetPrivateProfileInt( "network", "ServerSet", 0, g_szInfoFile );

	//< kjy-040325 
	// 老胶 急琶 规瘤 敲贰弊甫 dragon.ini颇老肺何磐 涝仿罐绰促. 
	char szKeySelectYilse[50];
	memset( szKeySelectYilse, '\0', 50 );
	sprintf( szKeySelectYilse, "name%d_prevent_select_yilse", g_SelectServerIndex+1 );
	g_GameInfo.preventSelectYilse = GetPrivateProfileInt( "network", szKeySelectYilse, 0, g_szInfoFile );
	//> kjy-040325 


	//< CSD-040127
//#ifdef KOREA_LOCALIZING_
	g_GameInfo.proxy_port = 39204;
//#else
//	g_GameInfo.proxy_port = 9000;
//#endif
  	g_GameInfo.agent_port = 39201;
	//> CSD-040127
	return	TRUE;
}	
	
int LoadingGameData()
{	// eLoadingGameDataStep 甫 荤侩
	static int s_iLoadingPos = LGDS_FIRST;
	
	switch (s_iLoadingPos)
	{
	case LGDS_FIRST:
		{
			LoadAttackRangeTable(0);
			LoadAttackRangeTable(1);

			if (SysInfo.notconectserver)
			{
				s_iLoadingPos = LGDS_STEP1;
				return s_iLoadingPos;
			}

			DWORD StartTime = ::timeGetTime();
			ListenCommand = CMD_NONE;
			
			while (true)
			{	
				DWORD Duration = ::timeGetTime( ) - StartTime;
				
				if (Duration > WAIT_TIME_RESPONSE_DURATION) // 030930 kyo
				{
					s_iLoadingPos = LGDS_FIRST;
					return -1;								
				}
				
				if (HandleRunning(&connections) <= 0)
				{																	
					Release(&connections);
					s_iLoadingPos = LGDS_FIRST;
					return -2;											
				}																		
				
				if (ListenCommand == CONNECT_REFUSE)
				{
					s_iLoadingPos = LGDS_FIRST;
					return -3;
				}
				
				if (ListenCommand == CMD_CONNECT_INFO)
				{
					s_iLoadingPos = LGDS_STEP1;	
					return s_iLoadingPos;
				}
			}

			break;
		}
	case LGDS_STEP1:
		{
			HandleRunning(&connections);
			g_Volume_Off = 1; // 肺爹捞 场朝 锭鳖瘤 硅版澜厩 捞寇狼 家府 救唱坷霸
			
			if (SysInfo.notconectserver)
			{
				if (!BuildCharacterList(&g_CharacterList))
				{
					JustMsg(lan->OutputMessage(6, 8)); //010215 lsw
				}
			}

			s_iLoadingPos = LGDS_STEP2;
			break;
		}
	case LGDS_STEP2:
		{
			MapBuild(&g_Map, MapName);	// map
			
			if (HandleRunning(&connections) <= 0)
			{
				Release(&connections);
				return -2;
			}

			s_iLoadingPos = LGDS_STEP3;
			break;
		}
	case LGDS_STEP3 :
		{
			LoadTOI(MapName);
			HandleRunning(&connections );
			BuildRoofHeader(&g_RoofHeader, MapName);					// rof
			HandleRunning(&connections);
			BuildEventList(MapName);									// ent
			HandleRunning(&connections);
			
			ReqTacSkillExp();	// 傈眉 琶平 荐摹 啊廉坷扁
			HandleRunning(&connections);
			AllReqSkillExp();	// 傈眉 胶懦 版氰摹 啊廉坷扁
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP4;
			break;
		}
	case LGDS_STEP4:		
		{
			LoadMapSource2( MapName );									// sou		
			HandleRunning( &connections);
			s_iLoadingPos = LGDS_STEP5;
			break;
		}
	case LGDS_STEP5: 
		{
			LoadCharSpriteData( "./char/000000.spr",  &CharBuf[0],  &CharBufLength[0], &CharSpr[0], LD_CHAR_SPRITE_ALL_LOAD);
			HandleRunning(&connections);
			s_iLoadingPos= LGDS_STEP6;
			break;
		}
	case LGDS_STEP6: 
		{
			LoadCharSpriteData( "./char/001000.spr",  &CharBuf[1],  &CharBufLength[1], &CharSpr[1], LD_CHAR_SPRITE_ALL_LOAD);
			LoadHeroClothAccessoryData( 104, 107 );
			
			char tempfilename[FILENAME_MAX];
			const int preloadcharsprite[21] = {29,30,37,38,46,72,79,1005,1006,1017,1018,1019,1020,1027,1028,1041,1060,1061,1075,1083,1092 };
						
			for (int i = 0; i < 21; ++i)
			{
				int tt = preloadcharsprite[i];
				sprintf(tempfilename, "./char/%06d.spr", tt);
				LoadCharSpriteData(tempfilename, &CharAccessoryBuf[tt/1000][tt%1000], &CharAccessoryBufLength[ tt/1000][tt%1000], &CharAccessorySpr[tt/1000][tt%1000], LD_CHAR_SPRITE_ALL_LOAD);
				HandleRunning(&connections);
			}
			
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP7;	
			break;
		}
	case LGDS_STEP7:
		{
			LoadClothOrderData();	
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP8;
			break;
		}
	case LGDS_STEP8 : 
		{
			LoadBrightData();			
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP9;
			break;
		}
	case LGDS_STEP9: 	
		{
			StartSetView(Hero);
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP10;
			break;
		}
	case LGDS_STEP10: 
		{
			LoadMenuData(1);
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP11;
			break;
		}
	case LGDS_STEP11: 
		{
			LoadMenuData(2);
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_STEP12;
			break;
		}
	case LGDS_STEP12:
		{
			LoadHongSkillTable();
			HandleRunning(&connections);
			LoadMenuData(5);
			HandleRunning(&connections);

			if (CurOpenHouse >= 0)
			{
				RecvRoofOpen(CurOpenHouse);
			}

			InitHpUpDown();
			HandleRunning(&connections);
			s_iLoadingPos = LGDS_FIRST;
			return LGDS_END; // 捞巴父 抗寇 贸府
		}
	}
	
	return s_iLoadingPos;
}

⌨️ 快捷键说明

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