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

📄 kh_menu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					{
						g_Menu_Variable.m_pRune = new CRuneMenu;
					}
					else
					{
						g_Menu_Variable.m_pRune->m_nQuestStep = 0;
						g_Menu_Variable.m_pRune->m_nSelectRune = 0;
					}
					CallServer( CMD_GET_GHOST_QUEST_INFO );
					count = 0;
					SubMenu->nField[3].m_lpTemp= NULL;
				}

				SubMenu->nField[j].nSHideNomalCount = SCharacterData.m_nQuestStep+1;

				g_Menu_Variable.m_pRune->m_nQuestStep = SubMenu->nField[j].nSHideNomalStart;
				int step = g_Menu_Variable.m_pRune->m_nQuestStep;
				int rune_count = SCharacterData.m_nSelectRune;

				if( step == SCharacterData.m_nQuestStep )
				{
					if( rune_count == 24 )		// 菜 谩阑 版快 
					{
						int effect_def[] = { RUNE_EFFECT1, RUNE_EFFECT2, RUNE_EFFECT3, RUNE_EFFECT4 };
						FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 48, 163, 64, RUNE_IMG );		// 华魄 嘛绢 林扁
						int x = SubMenu->x+163; 
						int y = SubMenu->y+250;
						static count1[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5 };
						static count2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10 };				
						if( count < 10 && count1[count] < 5 )
						{
							Spr *s = GetSprOfMenu( RUNE_EFFECT_DEFAULT, count1[count] );
							if( s && s->img )
							{
								PutCompressedImageFX( x, y, s, 17, 2 );
								count ++;
							}
							else count = 10;
						}
						else if( count2[count-10] < 10 )
						{
							Spr *s = GetSprOfMenu( effect_def[step], count2[count-10] );
							if( s && s->img )
							{
								PutCompressedImageFX( x, y, s, 17, 2 );
								count++;
							}
						}
						else
						{
							// 付瘤阜 巴父 嘛绢 霖促.
							Spr *s = GetSprOfMenu( effect_def[step], 9 );
							if( s && s->img )
							{
								PutCompressedImageFX( x, y, s, 17, 2 );
							}
						}
						g_Menu_Variable.m_pRune->m_nSelectRune = 0;
					}
					else
					{
						for( int a=1; a<=rune_count; a++ )
						{
							FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 
								g_Menu_Variable.m_pRune->m_stRune[a].x,
								g_Menu_Variable.m_pRune->m_stRune[a].y,
								g_Menu_Variable.m_pRune->m_stRune[a].m_nLeftRuneImage,
								RUNE_IMG );
						}
					}
				}
				if( step < SCharacterData.m_nQuestStep )
				{
					for( int a=1; a<MAX_RUNE; a++ )
					{
						FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 
							g_Menu_Variable.m_pRune->m_stRune[a].x,
							g_Menu_Variable.m_pRune->m_stRune[a].y,
							g_Menu_Variable.m_pRune->m_stRune[a].m_nLeftRuneImage,
							RUNE_IMG );
					}
				}

				int step2image[] = { 0, 61, 62, 63 };
				if( step2image[step] )
				{
					FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 133, 105, step2image[step], RUNE_IMG );
				}
				break;
			}
		case FT_VIEW_RUNE_RIGHT :
			{
				int step = g_Menu_Variable.m_pRune->m_nQuestStep;
				int &rune = g_Menu_Variable.m_pRune->m_nSelectRune;
				
				static int old_step = step;
				if( old_step != step ) 
				{
					if( step == SCharacterData.m_nQuestStep )
						rune =SCharacterData.m_nSelectRune;
					else 
						rune = 24;

					old_step = step;
				}
				if( !g_Menu_Variable.m_clsRuneExplain ) 
					g_Menu_Variable.m_clsRuneExplain = new CRuneExplain;

				char *lpszText = (char*)SMenu[i].nField[3].m_lpTemp;
				static char *old_point = lpszText;
				if( old_point != SMenu[i].nField[3].m_lpTemp )
				{				
					old_point = lpszText;
					int nWidth = SMenu[i].nField[3].nRectImage;
					if( lpszText )
					{
						int &page_status = SMenu[i].work;
						int line = SMenu[i].key;
						WORD page;
						WORD page_max;
						GetWORDOfDWORD( (DWORD)page_status, page, page_max );
						
						page = 0;
						int line_max = GetLineRectTextPut( nWidth, lpszText );
						if( line )
						{
							page_max = (line_max-1) / line + 1;
						}
						else page_max = 1;
						page_status = (int )MAKELONG( page, page_max );
					}
				}

				if( rune ) 
				{
					FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 
						SMenu[i].nField[j].x,SMenu[i].nField[j].y,
						g_Menu_Variable.m_pRune->m_stRune[rune].m_nRightRuneImage,
						RUNE_IMG );

					SubMenu->nField[3].m_lpTemp= g_Menu_Variable.m_clsRuneExplain->m_szExplain[step][rune];
					Hcolor( FONT_COLOR_YELLOW );
					SetHangulFont(4);
					Hprint2( SMenu[i].x+SMenu[i].nField[j].x+50, SMenu[i].y+SMenu[i].nField[j].y+23, 
						NULL, g_Menu_Variable.m_clsRuneExplain->m_szTitle[step][rune] );
					SetHangulFont(2);
				}
				else if( step == SCharacterData.m_nQuestStep && SCharacterData.m_nSelectRune == 24 )
				{
					FieldTypeNomalPut( SMenu[i].x, SMenu[i].y, 
							SMenu[i].nField[j].x,SMenu[i].nField[j].y, step+25,		// 烽 捞固瘤 锅龋绰 28锅何磐
							RUNE_IMG );

					g_Menu_Variable.m_clsRuneExplain->LoadLuneText2( step );
					SubMenu->nField[3].m_lpTemp = (void *)g_Menu_Variable.m_clsRuneExplain->GetTitleExplain( step );
					Hcolor( FONT_COLOR_YELLOW );
					SetHangulFont(4);
					Hprint2( SMenu[i].x+SMenu[i].nField[j].x+50, SMenu[i].y+SMenu[i].nField[j].y+23, 
						NULL, g_Menu_Variable.m_clsRuneExplain->m_szTitle[step][rune] );
					SetHangulFont(2);
				}
				else 
				{
					SubMenu->nField[3].m_lpTemp = 0;
				}
				break;
			}		
		
		default: break;
	}
}




bool DoButtonCheckOfMenu_kh( int i, int j )		// 滚瓢 努腐矫
{
	switch( SMenu[i].nField[j].nType )
	{
	
	case FT_QUEST_SCROLL : {
								; 
								int type = SMenu[i].nField[j].nWillDo;
								
								if( type )		// right
								{
									SMenu[i].work++;
									if( SMenu[i].work > QUEST_COUNT-1 ) 
									{
										SMenu[i].work = QUEST_COUNT-1;
										MP3( SN_WARNING );
									}
									// max 贸府甫 秦拎具 茄促. 其捞瘤 梅 蔼捞 绝栏搁 涅胶飘 夸没 
								
								}
								else			// left
								{
									SMenu[i].work--;
									if( SMenu[i].work < 0 ) 
									{
										SMenu[i].work = 0;
										MP3( SN_WARNING );
									}
								}
								break;
							   }

		case FT_QUEST_OK : {
							CallSmallMenu(MN_QUEST_INDEX); 
							SendReqQuestIndex( 0 );
							break;
							}

		case FT_QUEST_INDEX_SCROLL : {
									; 
									int page = SMenu[i].work;
									int max_quest_one_page = SMenu[i].key;
									int type = SMenu[i].nField[j].nWillDo;
									int PGCT = max_quest_one_page*page; // 阿 其捞瘤 贸澜..
									
									if( QUEST_COUNT-1 <= SMenu[i].work) break;
												
									
									if( type )		// right
									{
										
										SMenu[i].work++;

										// max 贸府
										if( SMenu[i].work  > (QUEST_COUNT-1) / max_quest_one_page  ) {
											SMenu[i].work = (QUEST_COUNT-1) / max_quest_one_page ;
											MP3( SN_WARNING );
										}
										if((PGCT/SMenu[i].key) == (QUEST_COUNT-1)/SMenu[i].key){
											SendReqQuestIndex( SMenu[i].work );		//涅胶飘 何福扁		// 第肺 倒啡促啊 菊栏肺 哎锭, // 0810 YGI
										}									
									}
									else			// left
									{
										
										SMenu[i].work--;
										if( SMenu[i].work < 0 ) 
										{
											SMenu[i].work = 0;
											MP3( SN_WARNING );
										}
										
									}
									break;
									}
		
		case FT_QUEST_INDEX : {
								int PGCT = SMenu[i].work*SMenu[i].key;	// 阿 其捞瘤 贸澜..
								int clickY = ( g_pointMouseY - ( SMenu[i].y+ 40 ) ) / QUEST_TEXT_DEVISION;
								//  付快胶 穿弗 镑狼蔼捞 逞绢 柯促. 
								//GetLineRectTextPut( )
								int willdo = SMenu[i].nField[j].nWillDo;
								
								if( willdo == 0 )
								{
									if( QUEST_COUNT > clickY+PGCT){
										SMenu[MN_QUEST].bActive = true;
										SMenu[MN_QUEST].work = clickY+PGCT; 
										SMenu[MN_QUEST].nTemp = MN_QUEST_INDEX;
										SMenu[MN_QUEST_INDEX].bActive = false;
										y_MenuFocus = MN_QUEST;
									}
								}
								else 
								{
									if( QUEST_COUNT > clickY+3+PGCT){
										SMenu[MN_QUEST].bActive = true;
										SMenu[MN_QUEST].work = clickY+(SMenu[i].key/2)+PGCT; 
										SMenu[MN_QUEST].nTemp = MN_QUEST_INDEX;
										SMenu[MN_QUEST_INDEX].bActive = false;
										y_MenuFocus = MN_QUEST;
									}
								}

								break;
							   }
		case FT_COLOR_CHANGE_GAUGE :
			{

				break;
			}
		case FT_VIEW_RUNE_LEFT :
			{
				int step = g_Menu_Variable.m_pRune->m_nQuestStep;
				int rune_count = SCharacterData.m_nSelectRune;

				RECT rect;
				if( step == SCharacterData.m_nQuestStep && rune_count == 24 ) break;

				for( int a=1; a<=rune_count; a++ )
				{
					SetRect( &rect, g_Menu_Variable.m_pRune->m_stRune[a].x, g_Menu_Variable.m_pRune->m_stRune[a].y,
						g_Menu_Variable.m_pRune->m_stRune[a].x+38, g_Menu_Variable.m_pRune->m_stRune[a].y+37 );
					if( MouseInRectCheak( SMenu[i].x, SMenu[i].y, rect ) )
					{
						g_Menu_Variable.m_pRune->m_nSelectRune = a;
						break;
					}
				}
				break;
			}
			
		default: 
			return false;
			break;
	}
	return true;
}

⌨️ 快捷键说明

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