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

📄 autopatchdlg.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	
	
	/////////////////////////////////////////////////////	SC_DOWNLOAD_ZIP
	fd_zip.pvExcuteContext		= (PVOID) FM_DOWNLOAD;
	fd_zip.bResume				= TRUE;
	lstrcpy( fd_zip.szRemoteFile, ld_zip.pszSearchFile);
	lstrcpy( fd_zip.szLocalFile, g_szCorumpatchFile);
	
	//	CorumFile阑 促款肺靛 茄促.
	iR = g_pFtp->DownloadFile( g_hSession, &fd_zip);
	_ASSERTE( iR == 0);
}
void OnDownLoad(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
	File_data* pfd = (File_data*)pvdata;
	
	
	if( pfd->CompletionError == CE_DOWNLOAD_PROGRESS )		//	ZIP 颇老 傈价 柳青惑炔篮 包缴 乐促.
	{	
		DWORD dwCurrentSize = pfd->dwTransferBytes;
		
		dwProLv = DWORD(PRO_RANGE_DN * ((float)(dwCurrentSize) / (float)(dwFileSizeMax)) );
		SendMessage( hPro_DN, PBM_SETPOS, dwProLv, 0);
		SetDlgItemInt( hDlg, IDC_STATIC_DN1, dwCurrentSize / 1024, FALSE );
	}
	
	if( pfd->CompletionError == CE_SUCCEED  )
	{
		DWORD dwCurrentSize = pfd->dwTransferBytes;
		
		dwProLv = DWORD(PRO_RANGE_DN * ((float)(dwCurrentSize) / (float)(dwCurrentSize)) );
		SendMessage( hPro_DN, PBM_SETPOS, dwProLv, 0);
		SetDlgItemInt( hDlg, IDC_STATIC_DN1, dwCurrentSize / 1024, FALSE );
		
		hWnd = GetDlgItem( hDlg, IDC_B_CANCEL);
		EnableWindow( hWnd, FALSE);
		
		g_pFtp->Shutdown(g_hSession);
		
		//
		Update_AS( hDlg, g_sz_Extract);
		//	促款肺靛 促捞倔肺弊 能飘费 HIDE.
		UpdateDialog_DownLoad( hDlg, FALSE );
		
		
		//
		//	拘绵阑 钱磊.
		bReturn = Extract_DownloadFile( hDlg, g_szCorumpatchFile );
		
		if( !bReturn )
		{
			//	拘绵 钱扁 角菩.
			MessageBox_Error ("Fail To Extract");
			EndDialog( hDlg, 1 );
			return;
		}
		
		// yh
		// 颇老阑 菩虐隆茄促.
		if(g_bUsingEnginePack)
		{
			StartPack3DData(hDlg);
		}
		else
		{
			bReturn = UpdateVersionInfoFile( CORUM_VERSION_INFO_FILE, newverFilename);
			
			//	New Version 免仿.
			GetVersionInfoFile( CORUM_VERSION_INFO_FILE, szVersion);
			szVersion[VERSION_TOTAL_LENGTH] = NULL;
			SetDlgItemText( hDlg, IDC_STATIC_VER2, szVersion);
			
			//
			Update_AS( hDlg, g_sz_Completed);
			
			// jsd
			// resource 弃歹狼 filelist历厘
			SaveFileList();
			//
			
			bReturn = RunCorum();
			if( !bReturn )
				MessageBox_Error ("Fail To Run Client");
			
			EndDialog( hDlg, 1 );
		}
	}
}
void OnRunProgram(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	bReturn = UpdateVersionInfoFile( CORUM_VERSION_INFO_FILE, newverFilename);

	//	New Version 免仿.
	GetVersionInfoFile( CORUM_VERSION_INFO_FILE, szVersion);
	szVersion[VERSION_TOTAL_LENGTH] = NULL;
	SetDlgItemText( hDlg, IDC_STATIC_VER2, szVersion);
	
	Update_AS( hDlg, g_sz_Completed);
	
	// jsd
	// resource 弃歹狼 filelist历厘
	SaveFileList();
	//

	bReturn = RunCorum();
	if( !bReturn )
	{
		MessageBox_Error ("Fail To Run Client");
	}
	
	EndDialog( hDlg, 1 );
}
/*
void OnTimer(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	//
	if( dwSession != (DWORD)wParam )
		return;
	
	
	//			乞闭 傈价伏.	( /sec )
	DWORD	dwCurrentTotal;
	DWORD	dwTranserPerSec;
	DWORD	dwRemained;
	DWORD	dwLargeValue;
	
	dwCurrentTotal = Fd.dwReceived_CurrentTotal;
	
	dwTranserPerSec	= ((float)dwCurrentTotal / 1024) /  (((float)((DWORD)lParam + 1)) * ((float)TIME_INTERVAL/1000));
	SetDlgItemInt( hDlg, IDC_STATIC_DN5, dwTranserPerSec, FALSE );
	
	if( dwCurrentTotal == 0 )
		return;
	
	dwRemained = (((float)Ff.dwFileSize / 1024) - ((float)dwCurrentTotal / 1024)) / dwTranserPerSec;
	
	if( dwRemained < (60 * 60) )
	{
		if( dwRtStatus != 1)
		{
			SetDlgItemText( hDlg, IDC_STATIC_DN8, (LPCTSTR)"min" );
			SetDlgItemText( hDlg, IDC_STATIC_DN10, (LPCTSTR)"sec" );
			
			dwRtStatus = 1;
		}
		dwLargeValue = dwRemained / 60;
		SetDlgItemInt( hDlg, IDC_STATIC_DN7, dwLargeValue, FALSE );
		SetDlgItemInt( hDlg, IDC_STATIC_DN9, dwRemained - (dwLargeValue * 60), FALSE );
		return;
	}
	
	if( dwRemained < (60 * 60 * 99) )
	{
		if( dwRtStatus != 2)
		{
			SetDlgItemText( hDlg, IDC_STATIC_DN8, (LPCTSTR)"hour" );
			SetDlgItemText( hDlg, IDC_STATIC_DN10, (LPCTSTR)"min" );
			
			dwRtStatus = 2;
		}
		dwLargeValue = dwRemained / (60 * 60);
		SetDlgItemInt( hDlg, IDC_STATIC_DN7, dwLargeValue, FALSE );
		SetDlgItemInt( hDlg, IDC_STATIC_DN9, (dwRemained / 60) - (dwLargeValue * 60), FALSE );
		return;
	}
}
*/
void OnConfirm(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam,LPVOID pvdata)
{
	File_data* pfd = (File_data*)pvdata;
	
	
	if( pfd->CompletionError == CE_DOWNLOAD_PROGRESS )
	{
		return;
	}
	
	if( pfd->CompletionError != CE_SUCCEED  )
		return;

	FILE* fpnew = fopen(newverFilename,"r");
	FILE* fpown = fopen(CORUM_VERSION_INFO_FILE,"r");
	if(fpnew == NULL || fpown == NULL)
	{
		MessageBox_Error ("Fail to Check New Version");
		EndDialog( hDlg, 1);
		
		if(fpnew)
			fclose(fpnew);
		if(fpown)
			fclose(fpown);
		
		return;
	}
	
	char temp1[256],temp2[256];
	fscanf(fpnew,"%s",temp1);
	fscanf(fpown,"%s",temp2);
	fclose(fpnew);
	fclose(fpown);
	
	DeleteFile(newverFilename);
	
	if(strcmp(temp1,temp2) == 0)	// 弥脚滚怜牢啊?
	{			
		Update_AS( hDlg, g_sz_Completed);
		
		//
		SetDlgItemText( hDlg, IDC_STATIC_VER2, "None");
		
		g_pFtp->Shutdown(g_hSession);

		bReturn = RunCorum();
		if( !bReturn )
		{
			//	内冯 备悼 角菩.
			MessageBox_Error ("Fail to Run Client.");
		}
		
		//	橇肺弊伐 辆丰.
		EndDialog( hDlg, 1);
		return;
	}
	else
	{	// 备滚怜, 啊厘 烤朝 滚怜阑 罐绰促.		
		/////////////////////////////////////////////////////	SC_DOWNLOAD_ZIP
		memcpy(g_szOldestFile,temp2,VERSION_HEADER_TEXT_LENGTH);
		sprintf(&g_szOldestFile[VERSION_HEADER_TEXT_LENGTH],"00000000.zip");
		
		/////////////////////////////////////////////////////	FM_GETFILELIST
		ld_zip.pvExcuteContext		= (PVOID) FM_GETFILELIST;
		ld_zip.dwFileMax			= FIND_DATA_MAX;
		ld_zip.pFile				= pwfd;
		ld_zip.pszSearchFile		= g_szOldestFile;
		
		iR = g_pFtp->GetList( g_hSession, &ld_zip);
		_ASSERTE( iR == 0);
	}
}

BOOL InitEngine()
{
	SelectGFunc();

	HRESULT hr;
	
	g_hExecutiveHandle = LoadLibrary("SS3DExecutiveForMuk.dll");
	CREATE_INSTANCE_FUNC        pFunc;
	pFunc = (CREATE_INSTANCE_FUNC)GetProcAddress(g_hExecutiveHandle,"DllCreateInstance");
	hr = pFunc((void**)&g_pExecutive);
	if (hr != S_OK)
	{		
		MessageBox(NULL,"Executive积己 角菩","Error",MB_OK);
		return FALSE;
	}
	
	// geometry DLL狼 捞抚, renderer DLL狼 捞抚阑 持绢林搁 executive啊 舅酒辑 积己,檬扁拳秦霖促.
	if(g_pExecutive->InitializeFileStorageWithoutRegistry("SS3DFileStorage.dll",
		12000,4096,128,FILE_ACCESS_METHOD_ONLY_FILE,NULL,0) == FALSE)
		return FALSE;

	return TRUE;
}

BOOL AddDataToPackFile(CStrClass pakname,CStrClass dir)
{
	I4DyuchiFileStorage* pFS;
	g_pExecutive->GetFileStorage(&pFS);
	
	void* pPakFile = pFS->MapPackFile((char*)(LPCTSTR)pakname);
	if(pPakFile == NULL)
		return FALSE;
	
	BOOL rt = pFS->LockPackFile(pPakFile,0);
	if(rt == FALSE)
		return FALSE;

	char CurDir[MAX_PATH];
	GetCurrentDirectory(MAX_PATH,CurDir);
	BOOL bSD = SetCurrentDirectory(dir);
	
	CDirectoryName dirname(NULL,NULL);
	dirname.LoadChild();
	SetCurrentDirectory(CurDir);

	dirname.SetPositionHead();
	DWORD kind;
	CStrClass filename;
	CStrClass tname;
	while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
	{
		if(kind != GETNEXTFILENAME_FILE)
			continue;
		if(filename == "")
			continue;

		tname = dir + "\\" + filename;
				
		if(pFS->InsertFileToPackFile(pPakFile,(char*)(LPCTSTR)tname) == FALSE)
			return FALSE;
	}
	BOOL unlock = pFS->UnlockPackFile(pPakFile,PackingCallBackFunc);
	if(unlock == FALSE)
		return FALSE;
	pFS->UnmapPackFile(pPakFile);
	pFS->Release();

	return TRUE;
}

void Pack3DData(void* p)
{
	CDirectoryName dirname(NULL,NULL);
	DWORD kind;
	CStrClass filename;
	CStrClass pakname,tname;
	BOOL bSuccess = TRUE;
	HWND hDlg = (HWND)p;

	char CurDir[MAX_PATH];
	CStrClass datafolder = "3DData\\";
	GetCurrentDirectory(MAX_PATH,CurDir);
	BOOL bSD = SetCurrentDirectory("3ddata");
	if(bSD == FALSE)
	{
		bSuccess = TRUE;
		goto packend;
	}
	
	dirname.LoadChild();

	SetCurrentDirectory(CurDir);
	if(InitEngine() == FALSE)
	{
		bSuccess = FALSE;
		goto packend;
	}
	
	dirname.SetPositionHead();
	while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
	{
		if(kind != GETNEXTFILENAME_DIRECTORY)
			continue;
		if(filename == "")
			continue;

		if(filename.Right(1) == "\\")
			filename = filename.Left(filename.GetLength()-1);
		
		pakname = filename + ".pak";
		tname = datafolder + filename;
		if(AddDataToPackFile(pakname,tname) == FALSE)
		{
			bSuccess = FALSE;
			goto packend;
		}
	}
	
	dirname.SetPositionHead();
	while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
	{
		if(kind != GETNEXTFILENAME_FILE)
			continue;
		if(filename == "")
			continue;

		tname = datafolder + filename;

		BOOL rt = DeleteFile(tname);
	}
	dirname.SetPositionHead();
	while((kind=dirname.GetNextFileName(&filename)) != GETNEXTFILENAME_END)
	{
		if(kind != GETNEXTFILENAME_DIRECTORY)
			continue;
		tname = datafolder + filename;
		RemoveDirectory(tname);
	}
	RemoveDirectory(datafolder);

packend:
	
	if(bSuccess)
		SendMessage(hDlg,WM_RUNPROGRAM,0,0);
	else
		SendMessage(hDlg,WM_RUNPROGRAM,0,0);

	return;
}

HWND hProgressBar;
void StartPack3DData(HWND hDlg)
{	
	Update_AS( hDlg, g_sz_Packing);
	hProgressBar = GetDlgItem( hDlg, IDC_PROGRESS_EX);
	ShowWindow(hProgressBar,SW_SHOW);
	SendMessage( hProgressBar, PBM_SETRANGE32, 0, PRO_RANGE_EX);
	SendMessage( hProgressBar, PBM_SETPOS, 0, 0);

	_beginthread(Pack3DData,0,hDlg);
}

DWORD __stdcall PackingCallBackFunc(DWORD dwCurCount,DWORD dwTotalCount,void* pArg)
{
	PackingProcess = (PRO_RANGE_EX*dwCurCount) / dwTotalCount;	
	SendMessage( hProgressBar, PBM_SETPOS, PackingProcess, 0);
	return 0;
}

BOOL SaveFileList()
{
	DWORD count = 1;
	HANDLE hSrch;
	WIN32_FIND_DATA wfd;
	SYSTEMTIME time;
	char Dir[MAX_PATH];
	char filename[MAX_PATH];
	BOOL bResult = TRUE;
	
	GetWindowsDirectory( Dir, MAX_PATH );
	strcat( Dir, "\\mfl.dat" );
	FILE* fp = fopen( Dir, "w" );
	if( fp == NULL )
	{
		fclose( fp );
		return FALSE;
	}

	GetCurrentDirectory( MAX_PATH, filename );
	strcat( filename, "\\Resource\\*.bin" );
	hSrch = FindFirstFile( filename, &wfd );
	while( bResult )
	{
		FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
		fprintf( fp, "%d %s\t", count, wfd.cFileName );
		fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
		bResult = FindNextFile( hSrch, &wfd );
		++count;
	}
	
	bResult = TRUE;
	GetCurrentDirectory( MAX_PATH, filename );
	strcat( filename, "\\Resource\\SkillArea\\*.bsad" );
	hSrch = FindFirstFile( filename, &wfd );
	while( bResult )
	{
		FileTimeToSystemTime( &wfd.ftLastWriteTime, &time );
		fprintf( fp, "%d %s\t", count, wfd.cFileName );
		fprintf( fp, "%4d %02d %02d %02d %02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute );
		bResult = FindNextFile( hSrch, &wfd );
		++count;
	}

	fclose( fp );

	return TRUE;
}

⌨️ 快捷键说明

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