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

📄 tool.cpp

📁 国内著名网络游戏dragon的客户端登陆用完整源码 配套一起上传的服务端部分可开服 无说明文档
💻 CPP
📖 第 1 页 / 共 5 页
字号:

void SetAnimationTxt( LPCHARACTER lpChar, HWND hDlg )
{	
	char temp[ FILENAME_MAX];
	int  i;
#ifdef _DEBUG
	sprintf (temp, "%d-%s", TempAnimationCount+1, AnimationName[ TempAnimationCount] );
#endif
	Edit_SetText ( GetDlgItem(hDlg, IDC_ANI_TITLE ), temp);
	
	SendMessage(GetDlgItem(hDlg, IDC_ANI_EDIT ), WM_SETTEXT, 0, (LPARAM)"");
	for( i = 0 ; i < lpChar->AnimationTable[ TempAnimationCount].nCount ; i ++)
	{
		sprintf( temp,"%5d     %5d  %5d     %5d     %5d     %5d      %5d\n", 
			lpChar->AnimationTable[ TempAnimationCount].cFrame[ i]+1,
			lpChar->AnimationTable[ TempAnimationCount].dx[ i],
			lpChar->AnimationTable[ TempAnimationCount].dy[ i],
			lpChar->AnimationTable[ TempAnimationCount].attackf[ i],
			lpChar->AnimationTable[ TempAnimationCount].wave[ i],
			lpChar->AnimationTable[ TempAnimationCount].height[ i],
			lpChar->AnimationTable[ TempAnimationCount].effect[ i] );
		
		Edit_ReplaceSel(GetDlgItem(hDlg, IDC_ANI_EDIT ), (LPARAM)temp);
	}	
}	//> CSD-031014	



void PutClipBoard( char *s )
{	
	int len = strlen( s );
	HGLOBAL  hGlobalMemory;
	char *pGlobalMemory;
	
	hGlobalMemory = GlobalAlloc( GHND, len + 1 );
	if( hGlobalMemory )
	{
		pGlobalMemory = (char *)GlobalLock( hGlobalMemory );
		strcpy( pGlobalMemory, s );
		GlobalUnlock( hGlobalMemory );
		OpenClipboard( g_hwndMain );
		EmptyClipboard();
		SetClipboardData( CF_TEXT, hGlobalMemory );
		CloseClipboard();
		GlobalFree( hGlobalMemory );
	}
}	


extern int g_bToolViewPlusEquip;	// NEW_CHAR YGI		

BOOL CALLBACK CheckAnimationProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{											
	LPCHARACTER lpChar = Hero->lpNext;
	char		temp[FILENAME_MAX];
	static int oldsprno;
	int i,j;			
	FILE *fp;			
	int  ScreenX;		
	RECT rect, grect;		
	int	*ac= lpChar->accessory;
	int old[4]; 
	switch(Message)		
	{						
	case WM_INITDIALOG:	sprintf (temp, "%d", lpChar->sprno );
		Edit_SetText (GetDlgItem(hDlg, IDC_CHAR_NO ), temp);
		oldsprno = lpChar->sprno;
		sprintf(temp, "%d", lpChar->mutant);
		Edit_SetText(GetDlgItem(hDlg, EDT_CHAR_MUTANT), temp);
		sprintf (temp, "%d", lpChar->basicAction+1);
		Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_BASIC ), temp);
		tool_AnimationEditTotalSpriteNo = 0;
		tool_AnimationEditCurFrame = 0;
		sprintf( temp, "%d", tool_AnimationEditCurFrame +1 );
		Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
		
		if( oldsprno <= 1 )
		{
			sprintf (temp, "%d", ac[0] );
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC0), temp);
			sprintf (temp, "%d", ac[1]);
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC1), temp);
			sprintf (temp, "%d", ac[2]);
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC2), temp);
			sprintf (temp, "%d", ac[3]);
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC3), temp);
		}
		
		
		CheckAnimationHwnd = GetDlgItem(hDlg, IDC_ANI_EDIT );
		
		ScreenX = GetSystemMetrics(SM_CXSCREEN);
		//ShowWindow( CheckAnimationHwnd, SW_HIDE);
		GetWindowRect( hDlg, &rect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
		GetWindowRect( g_hwndMain, &grect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
		MoveWindow( hDlg, grect.right+1, 0, rect.right, rect.bottom, true);
		TempAnimationCount = 0;
		SetAnimationTxt( lpChar, hDlg );
		
		Button_SetCheck( GetDlgItem( hDlg, IDC_PLUS_EQUIP ), 1 );
		Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_HEADER), 0);
		Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_BODY), 0);
		Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_WEAPON), 0);
		Button_SetCheck(GetDlgItem(hDlg, CHK_EFFECT_ONE), 0);
		Button_SetCheck(GetDlgItem(hDlg, CHK_EFFECT_TWO), 0);
		return TRUE;	
		
	case WM_PAINT:		
		break;			
		
	case WM_COMMAND:	
		switch( LOWORD( wParam )) 
		{		
			
			/////////////////////////////////////////////////////////
		case IDC_PLUS_EQUIP :
			{
				g_bToolViewPlusEquip = Button_GetCheck( GetDlgItem( hDlg, IDC_PLUS_EQUIP ) );
				EndOfAnimationFlag = 0;
				while( EndOfAnimationFlag != 3 )
				{
					GameTestProc( &g_DirectDrawInfo );
				}
				
				break;
			}
			
		case IDC_CHANGE_EQUIP :
			
			if( lpChar->sprno <= 1 )
			{
				if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_NO ) )
				{
					lpChar->basicAction = ACTION_NONE; 
					lpChar->basicWalk	= ACTION_BASIC_WALK; 
				}
				if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_ONESWORD ) )
				{
					lpChar->basicAction = ACTION_BATTLE_NONE; 
					lpChar->basicWalk	= ACTION_BATTLE_WALK_OWNHAND; 	
				}
				if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_TWOSWORD ) )
				{	
					lpChar->basicAction = ACTION_BATTLE_NONE_TWOHAND;
					lpChar->basicWalk = ACTION_BATTLE_WALK_TWOHAND;
				}
				if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_PENSING ) )
				{	
					lpChar->basicAction = ACTION_ATTACK_PENSWORD2;
					lpChar->basicWalk = ACTION_BATTLE_WALK_OWNHAND;
				}
				if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_BONG ) )
				{	
					lpChar->basicAction = ACTION_BATTLE_NONE;
					lpChar->basicWalk = ACTION_BATTLE_WALK_OWNHAND;
				}
				
				
				Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC0 ), temp, 9);
				old[0] = ac[0]; ac[0] = atoi (temp);
				Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC1 ), temp, 9);
				old[1] = ac[1]; ac[1] = atoi (temp);
				Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC2 ), temp, 9);
				old[2] = ac[2]; ac[2] = atoi (temp);
				Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC3 ), temp, 9);
				old[3] = ac[3]; ac[3] = atoi (temp);
				
				
				if( old[0] != ac[0] )
				{
					FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] );
					LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]);
					FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] +1);
					LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+1);
					
					//FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0]+200 );			// NEW_CHAR YGI
					//LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+200);
					//FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] +201);
					//LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+201);
				}
				if( old[1] != ac[1] )
				{
					FreeHeroClothAccessoryDataOne( lpChar->sprno, old[1] );
					LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[1]);
				}
				if( old[2] != ac[2] )
				{
					FreeHeroClothAccessoryDataOne( lpChar->sprno, old[2] );
					LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[2]);
				}
				if( old[3] != ac[3] )
				{
					FreeHeroClothAccessoryDataOne( lpChar->sprno, old[3] );
					LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[3]);
				}
			}
			else
			{
				JustMsg( "阁胶磐唱 NPC绰 厘厚甫 厘馒且荐 绝嚼聪促. " );
			}
			
			break;
			
			///////////////////////////////////////////////////////////////
			
			
		case ID_ANIMATION_LOAD  : 
			{
				LoadChacterAnimationData_Tool(lpChar);
				
				break;
			}
		case ID_ANIMATION_SAVE	:	
			{
				sprintf( temp, "./char_test/%03dAniTable.txt", lpChar->sprno );
				//				sprintf( temp, "t.txt", lpChar->sprno );
				
				fp = Fopen( temp, "wt" );
				
				for( i = 0 ; i < lpChar->TotalAni; i ++)
				{
#ifdef _DEBUG
					fprintf( fp, "#%s\n", AnimationName[i] );
#endif
					
					for( j = 0 ; j < lpChar->AnimationTable[i].nCount ; j ++)
					{
						fprintf( fp, "%d %3d %3d %3d %3d %3d %3d  0  0  0  0\n", 
							lpChar->AnimationTable[i].cFrame[ j]+1,
							lpChar->AnimationTable[i].dx[ j],
							lpChar->AnimationTable[i].dy[ j],
							lpChar->AnimationTable[i].attackf[ j],
							lpChar->AnimationTable[i].wave[ j],
							lpChar->AnimationTable[i].height[ j],
							lpChar->AnimationTable[i].effect[ j] );
					}
					fprintf( fp, "\n\n\n" );
				}
				
				fclose(fp);
				
				JustMsg( "%d 锅 某腐磐狼 Animation Data甫 历厘钦聪促. \n \n[%s]", lpChar->sprno, temp );
				
				break;
			}		
			
		case IDC_CHARACTER_LOAD :
			{
				lpChar->animationType	= ANIMATION_TYPE_TEST;
				lpChar->peacests = 1;
				
				Edit_GetText(GetDlgItem(hDlg, IDC_CHAR_NO), temp, 9);
				lpChar->sprno = atoi(temp);
				
				Edit_GetText(GetDlgItem(hDlg, EDT_CHAR_MUTANT), temp, 9);
				lpChar->mutant = atoi(temp);
				
				sprintf( temp, "./char_test/%03d000.spr", lpChar->sprno );
				if( CharBuf[lpChar->sprno] != NULL ) {	FreeCharacterSpriteData( CharBuf[lpChar->sprno] ); CharBuf[lpChar->sprno] = 0; }
				tool_AnimationEditTotalSpriteNo = LoadCharSpriteData( temp,  &CharBuf[lpChar->sprno], &CharBufLength[lpChar->sprno], &CharSpr[ lpChar->sprno], LD_CHAR_SPRITE_ALL_LOAD );
				LoadChacterAnimationData_Tool( lpChar );
				
				const int nMutant = lpChar->mutant;
				const int nSprNo = lpChar->sprno;
				
				for (int i = 0; i < MAX_CHARACTOR_PART_; i++)
				{
					if (CharLayerBuf[nSprNo][i][nMutant] == NULL)
					{
						char szBuffer[FILENAME_MAX];
						sprintf(szBuffer, "./char_test/%03d%01d%02d.spr", nSprNo, i, nMutant);
						LoadCharSpriteData(szBuffer, 
							&CharLayerBuf[nSprNo][i][nMutant],
							&CharLayerBufLength[nSprNo][i][nMutant],
							&CharLayerSpr[nSprNo][i][nMutant], 
							LD_CHAR_SPRITE_ALL_LOAD);
						CharLayerBufCount[nSprNo][i][nMutant] = 1;
					}
				}
				
				TempAnimationCount = 0;
				SetAnimationTxt( lpChar, hDlg );
				
				if( lpChar->sprno <= 1 )
				{
					sprintf (temp, "%d", ac[0]);	Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC0 ), temp);
					sprintf (temp, "%d", ac[1]);	Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC1 ), temp);
					sprintf (temp, "%d", ac[2]);	Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC2 ), temp);
					sprintf (temp, "%d", ac[3]);	Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC3 ), temp);
				}
				tool_AnimationEditCurFrame = 0;
				sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
				Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
				
				
				break;
			}
		case IDC_NEXT_ANIMATION :	if( TempAnimationCount < lpChar->TotalAni - 1 ) 
									{
										GetAnimationTxt( lpChar, CheckAnimationHwnd );
										TempAnimationCount ++;
										SetAnimationTxt( lpChar, hDlg );
									}
			break;	
			
		case IDC_PRI_ANIMATION	:	if( TempAnimationCount > 0  ) 
									{
										GetAnimationTxt( lpChar, CheckAnimationHwnd );
										TempAnimationCount --;
										SetAnimationTxt( lpChar, hDlg );
									}								
			break;
			
		case IDC_PLAY_ANIMATION : 	Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_BASIC ), temp, 9);
			lpChar->basicAction = atoi (temp)-1;
			
			Edit_GetText( GetDlgItem(hDlg, IDC_CHAR_NO ), temp, 9);
			lpChar->sprno = atoi(temp);
			GetAnimationTxt( lpChar, CheckAnimationHwnd );
			lpChar->nCurrentAction = TempAnimationCount;
			lpChar->nCurrentFrame = 0;
			lpChar->animationType	= ANIMATION_TYPE_TEST;
			AnimationEditWorkStartFlag = TRUE;
			
			EndOfAnimationFlag = 0;
			while( EndOfAnimationFlag != 3 )
			{
				GameTestProc( &g_DirectDrawInfo );
			}
			
			break;
			
			
			
		case IDC_BUTTON1 : lpChar->direction = DIRECTION_DOWN;		; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON2 : lpChar->direction = DIRECTION_LEFTDOWN;  ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON3 : lpChar->direction = DIRECTION_LEFT;		; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON4 : lpChar->direction = DIRECTION_LEFTUP;	; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON5 : lpChar->direction = DIRECTION_UP;		; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON6 : lpChar->direction = DIRECTION_RIGHTUP;	; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON7 : lpChar->direction = DIRECTION_RIGHT;		; GameTestProc( &g_DirectDrawInfo ); return TRUE;
		case IDC_BUTTON8 : lpChar->direction = DIRECTION_RIGHTDOWN;	; GameTestProc( &g_DirectDrawInfo ); return TRUE;
			
			
		case IDC_FRAME_DOWN :	tool_AnimationEditCurFrame --; 
			if( tool_AnimationEditCurFrame < 0 ) 
			{
				tool_AnimationEditCurFrame = tool_AnimationEditTotalSpriteNo/8 -1;
			}
			sprintf( temp, "%d", tool_AnimationEditCurFrame+1 );
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
			;
			GameTestProc( &g_DirectDrawInfo );
			sprintf( temp, " %3d       0       0       0       0       0\n", tool_AnimationEditCurFrame );
			PutClipBoard( temp );
			return TRUE;
			
		case IDC_FRAME_UP   :	tool_AnimationEditCurFrame ++; 
			if( tool_AnimationEditCurFrame >=  tool_AnimationEditTotalSpriteNo/8 ) 
			{
				tool_AnimationEditCurFrame = 0;
			}
			sprintf( temp, "%d", tool_AnimationEditCurFrame +1 );
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
			sprintf( temp, " %3d       0       0       0       0       0\n", tool_AnimationEditCurFrame );
			PutClipBoard( temp );
			;
			GameTestProc( &g_DirectDrawInfo );
			return TRUE;
		case IDC_FRAME_DOWN2 :	tool_AnimationEditCurFrame -=10; 
			if( tool_AnimationEditCurFrame < 0 ) 
			{
				tool_AnimationEditCurFrame = tool_AnimationEditTotalSpriteNo/8 -1;
			}
			sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
			;
			GameTestProc( &g_DirectDrawInfo );
			sprintf( temp, " %3d       0       0       0       0       0\n", tool_AnimationEditCurFrame );
			PutClipBoard( temp );
			return TRUE;
			
		case IDC_FRAME_UP2  :	tool_AnimationEditCurFrame +=10; 
			if( tool_AnimationEditCurFrame >=  tool_AnimationEditTotalSpriteNo/8 ) 
			{
				tool_AnimationEditCurFrame = 0;
			}
			sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
			Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
			;
			GameTestProc( &g_DirectDrawInfo );
			sprintf( temp, " %3d       0       0       0       0       0\n", tool_AnimationEditCurFrame );
			PutClipBoard( temp );
			return TRUE;
		case IDCANCEL :		
			{
				EndDialog(hDlg, LOWORD(wParam));	
				
				lpChar->position.x = lpChar->x / TILE_SIZE;
				lpChar->position.y = lpChar->y / TILE_SIZE;
				int tx = lpChar->position.x - 10;
				if( tx < 0 ) tx = 0;		
				int ty = lpChar->position.y - 7;
				if( ty < 0 ) ty = 0;		
				RECT	rect;				
				rect.left	= tx;			
				rect.top	= ty;			
				rect.right	= tx + 20;		
				rect.bottom = ty + 11;		
				
				;
				SetHeroPosition(0);
				
				return (TRUE);
			}
			}		
			break;		
	}				
	
	return FALSE;	
}					

void CheckAnimationEdit( HWND hwnd, HINSTANCE hInstance)
{	
	HINSTANCE  hinst;
	hinst = LoadLibrary("riched32.dll");
	DialogBox( hInstance, MAKEINTRESOURCE( IDD_DIALOG_ANIMATION_EDIT ), NULL, (DLGPROC)CheckAnimationProc );
	FreeLibrary( hinst );
}					


/////////////////////////////////////////////////////////////////////////////////////
///  捞亥飘 锅龋 涝仿..


BOOL CALLBACK InputEventNoProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{											
	char		temp[FILENAME_MAX];
	static int mx, my;
	
	switch(Message)		
	{						

⌨️ 快捷键说明

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