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

📄 kh_menu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// menu.cpp
#include "stdafx.h"
#include <ddraw.h>
#include "Hangul.h"
#include "dragon.h"
#include "Menu.h"
#include "Hong_Sprite.h"
#include "SmallMenuSet.h"
#include "stdio.h"
#include "directsound.h"
#include "directinput.h"
#include "Char.h"
// #include "network.h"
#include "SmallMenu.h"
#include "Hong_Sub.h"
#include "Effect.h"
#include "map.h"
#include "tool.h"
#include "MenuSet.h"
#include "skill.h"
#include "Item.h"
#include "MenuNetwork.h"
#include "MouseCursor.h"
#include "gameproc.h"
#include "kh_cpp.h"
#include "chardatatable.h"


void CallKhMenuProc( int menu, int field )		// 拳搁 免仿 // 概春啊 惯积窍绰 镑捞扼 被捞 风橇 倒副 鞘夸 绝澜 
{
	SMENU *SubMenu = &SMenu[menu];
	int j = field;
	int i = menu;

	switch( SMenu[menu].nField[field].nType )
	{

		case FT_QUEST_SCROLL : {	
												
									// 涅胶飘 抛捞喉 单捞磐甫 佬绢 柯促.........................................
									if( quest_text[0].name[0] == 0 ) {
										LoadQuestTable("./data/quest.txt","./data/questpic.txt","./data/questpic.bin");
									}
									// 付快胶啊 喘妨柳锭狼 鸥老拳 谅钎蔼阑 涵凯俊 持绢 弊蔼阑 函荐俊 持绰促. ...
									int quest_num1 = quest_num[SubMenu->work];
									// 弊覆 嘛绰 风凭 
									//弊覆捞 割厘 观俊 绝绰 包拌肺 
									//FieldTypeNomalPut( SubMenu->x, SubMenu->y, 57, 34, quest_num1+2, SubMenu->nField[j].nImageType );
									//窍唱肺 弓阑荐档 乐栏骨肺 FieldTypeNomalPut( SubMenu->x, SubMenu->y, 80, 70, 6+涅胶飘 锅龋, SubMenu->nField[j].nImageType );
									
									//  付快胶啊 荤阿屈 救俊辑 喘妨瘤搁.......................................................
									if( SubMenu->nField[j].fLButtonDown ){
										FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
									}
									// 付快胶啊 荤阿屈 困俊 棵扼 坷搁......................................................... 
									else if( SubMenu->nField[j].fRectMouse ){
										FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType );
									}
									
									// 巩磊甫 嘛绰促. 
									Hcolor(40,30,20);
									
									// 涅胶飘 弊覆 阂矾坷扁 
									if(quest_text[quest_num1-1].picnum ){
										Spr *s = &quest_text[quest_num1-1].sq;
										if( !s->img )
											LoadSpriteOnlyOne( s,quest_text[quest_num1-1].picture);
											PutCompressedImage(SubMenu->x+57+63, SubMenu->y+34+80, s );
									}

									//父距俊 己傍茄 涅胶飘 老锭 
									if(end_quest[SubMenu->work]){
										Hcolor( 0,0,200);
										SetHangulFont(4);
										HprintBold( SubMenu->x+70,SubMenu->y+110,RGB(250,100,80),RGB(80,30,250),lan->OutputMessage(6,54));//010215 lsw
										SetHangulFont(2);
									}
									//涅胶飘 割锅掳?
									Hprint2( SubMenu->x+50,SubMenu->y+50, g_DestBackBuf, "%d", SubMenu->work+1 );
									//柳楼 涅胶飘 锅龋 
									//Hprint2( SubMenu->x+150,SubMenu->y+50, g_DestBackBuf, "QUEST %d", quest_text[quest_num1].num );
									
									//涅胶飘 
									Hcolor(11,11,11);
									if(quest_num1 == 0){
										// 涅胶飘啊 绝阑锭 酒聪 康锅老锭 	
										Hprint2( SubMenu->x+230, SubMenu->y+70, g_DestBackBuf, lan->OutputMessage(6,55) );//;sw
									}
									else {
										SetHangulFont(4);
										HprintBold( SubMenu->x+230, SubMenu->y+50,RGB(200,200,200),RGB(80,80,80), quest_text[quest_num1].name);
										//Hprint2( SubMenu->x+230, SubMenu->y+50, g_DestBackBuf, "%s",quest_text[quest_num1].name );
										SetHangulFont(2);
										RectTextPut( SubMenu->x+230, SubMenu->y+100, 110, quest_text[quest_num1].ch );
									}
									
									//page 荐 
									Hcolor(77,208,109);
									Hprint2( SubMenu->x+105,SubMenu->y+200, g_DestBackBuf, "CURRENT PAGE %d", SubMenu->work+1 );
									Hprint2( SubMenu->x+230,SubMenu->y+200, g_DestBackBuf, "TOTAL PAGE %d",  QUEST_COUNT);
									
									break;
							   }
		
		case FT_QUEST_OK : {
									;
									if( SubMenu->nField[j].fLButtonDown ){
										FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
									}
									else if( SubMenu->nField[j].fRectMouse ){
										FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType );
									}
									break;
							   }
		
		case FT_QUEST_INDEX_SCROLL : { //  付快胶啊 荤阿屈 救俊辑 喘妨瘤搁.......................................................
										//Hprint2( SubMenu->x+38, 150, g_DestBackBuf, "%d", quest_text[quest_num[quest_num1]].num );
										;
										// 泅犁 其捞瘤啊 配呕 其捞瘤客 鞍阑 版快 right 滚瓢篮 救 喘府霸 茄促.
										// 泅犁 其捞瘤啊 贸澜老 版快 left 滚瓢篮 救 喘府霸 茄促.
										// //捞锭 荤款靛绰 MP3( SN_WARNING );
										if( SubMenu->nField[j].fLButtonDown ){
											FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
										}
						
										// 付快胶啊 荤阿屈 困俊 棵扼 坷搁......................................................... 
										else if( SubMenu->nField[j].fRectMouse ){
											FieldTypeNomalPut( SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType );
										}
										break;
									 }
		
		case FT_QUEST_INDEX : {
									// 付快胶 谅钎蔼阑 鸥老拳 茄促.(Y 蔼父..) ..................................
									;
									int max_quest_one_page = SubMenu->key;
									int page = SubMenu->work;
									int	tempY = ( g_pointMouseY - ( SubMenu->y+40) ) / QUEST_TEXT_DEVISION;
									
									// 涅胶飘 抛捞喉 单捞磐甫 佬绢 柯促.
									if( quest_text[0].name[0] == 0 ) 
									{ 
										LoadQuestTable("./data/quest.txt","./data/questpic.txt","./data/questpic.bin");
									}
								
									//涅胶飘啊 逞绢 柯促 
									//弊府绊 抄饶 酒贰俊 嘛腮促.
									//quest_num[QUEST_COUNT] = QUEST_GIVE;
									// 父距俊 荤阿屈俊 甸菌栏搁 -> 
									//	涅胶飘 牢郸胶 免仿 ==> 锅龋客 捞抚 免仿
									//	1. 哭率 其捞瘤俊 7俺 坷弗率 其捞瘤俊 7俺 免仿.
									//	2. 郴啊 罐篮 醚 涅胶飘 鳖瘤, 弊府绊 茄其捞瘤俊 14父 免仿
									//	3. 其捞瘤甫 逞扁搁 弊 逞变单 何磐 免仿( 其捞瘤绰  page 函荐俊 甸绢乐促 )
									//	4. 矫累 涅胶飘 锅龋绰 其捞瘤客 茄其捞瘤寸 免仿且荐 乐绰 涅胶飘狼 蚌捞促.
									//		( page * max_quest_one_page )
									//	5. 付快胶啊 啊鳖捞 啊搁 祸阑 官层霖促.
									
									int rect_mouse = SubMenu->nField[j].fRectMouse;
									int willdo = SubMenu->nField[j].nWillDo;
									int PGCT = max_quest_one_page*page; // 阿 其捞瘤 贸澜..

									Hcolor(77,208,109);
									Hprint2( SubMenu->x+105, SubMenu->y+200, g_DestBackBuf, "CURRENT PAGE %d", (PGCT/SubMenu->key) +1);
									Hprint2( SubMenu->x+230, SubMenu->y+200, g_DestBackBuf, "TOTAL PAGE %d",  (QUEST_COUNT-1)/SubMenu->key+1);
									Hcolor(11,11,11);
								
									for( int a = 0; a<max_quest_one_page/2; a++ )
									{
										int i= PGCT+a+willdo*max_quest_one_page/2;
										if( i > QUEST_COUNT-1 ) break;
										// 弊覆 嘛扁 
										if( willdo == 0 ){
											if( i == tempY+PGCT && rect_mouse ) {
												if(end_quest[i]){Hcolor( 240,0,0);}
												else Hcolor( 240,224,208);
											}
											else Hcolor(11,11,11);
											//Hprint2(SubMenu->x+38 , 150, g_DestBackBuf, "%d", quest_text[quest_num].num );
											Hprint2( SubMenu->x+60, 140+(a*QUEST_TEXT_DEVISION), g_DestBackBuf, "%d", i+1 );
											//RectTextPut( SubMenu->x+80,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), 110, quest_text[quest_num[i]].name );
											if(quest_num[i] == 0){
												//涅胶飘啊 康锅老锭 贸府 
												Hprint2( SubMenu->x+80,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), g_DestBackBuf, lan->OutputMessage(6,55) );//010215 lsw
											}
											else {
												RectTextPut( SubMenu->x+80,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), 110, quest_text[quest_num[i]].name );
											}
										}
										else
										{
											if( a == tempY && rect_mouse/*(g_pointMouseX > SubMenu->x+210 && g_pointMouseX < SubMenu->x+340)*/) {
												if(end_quest[i]){Hcolor( 240,0,0);}
												else Hcolor( 240,224,208);
											}
											else Hcolor(11,11,11);
											Hprint2( SubMenu->x+230, 140+(a*QUEST_TEXT_DEVISION), g_DestBackBuf, "%d", i+1 );
											//RectTextPut( SubMenu->x+250,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), 110, quest_text[quest_num[i]].name );
											if(quest_num[i] == 0){
												//涅胶飘啊 康锅老锭 贸府
												Hprint2( SubMenu->x+250,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), g_DestBackBuf, lan->OutputMessage(6,55) );//010215 lsw
											}
											else {
												RectTextPut( SubMenu->x+250,SubMenu->y+40+(a*QUEST_TEXT_DEVISION), 110, quest_text[quest_num[i]].name );
											}
											
										}
										
									}								 
								
																
									break;
							   }
		
		case FT_COLOR_CHANGE_GAUGE :	
			{ 
				if( !SubMenu->CheakType )
				{
					if( g_Menu_Variable.m_stRGB )
					{
						delete g_Menu_Variable.m_stRGB;
					}

					g_Menu_Variable.m_stRGB = new k_char_rgb;
					SubMenu->CheakType = 1;
				}

				if(SMenu[i].key == 1 && j == 4){
					FieldTypeNomalPut(SMenu[i].x, SMenu[i].y, 0, 0, 1, SMenu[i].nImageType);
				}

				int start, end; 
				int *pGab;
				switch( j )			// field 锅龋啊 4锅何磐 矫累
				{
					case 4 : switch(SMenu[MN_CHARACTER_COLOR_CHANGE].key)
							 {
								case 0: pGab= &SCharacterData.body_r; break;
								case 1: pGab= &SCharacterData.cloth_r; break;
							 }
							 break;
					case 5 : switch(SMenu[MN_CHARACTER_COLOR_CHANGE].key)
							 {
								case 0: pGab = &SCharacterData.body_g; break;
								case 1: pGab = &SCharacterData.cloth_g; break;
							 }
							 break;
					case 6 : switch(SMenu[MN_CHARACTER_COLOR_CHANGE].key)
							 {
								case 0: pGab = &SCharacterData.body_b; break;
								case 1: pGab = &SCharacterData.cloth_b; break;
							 }
							 break;
				}

				// 箭磊肺 钎泅窍扁
				Hprint2( SubMenu->x+SubMenu->nField[j].x,SubMenu->y+SubMenu->nField[j].y, g_DestBackBuf, "%d", (*pGab) );
				
				int width = 98;
				// 阜措肺 钎泅窍扁
				int gab= (int)((*pGab)/ 255.0f*width+0.5f);
				end = gab;
				start = 75;		// 阜措啊 矫累窍绰 x 谅钎

				if(SMenu[i].nField[j].fLButtonDown)	 
					end = g_pointMouseX - (SMenu[i].x+start);
				if(end < 0 ) 
				{
					gab--;
					gab = __max( gab, 0 );
				}
				else if(end > width) 
				{
					gab++;
					gab = __min( gab, width );
				}
				else gab = end;

				for(int x=start;x<gab+start;x++)
					FieldTypeNomalPut(SMenu[i].x, SMenu[i].y, x, SMenu[i].nField[j].y+4, SMenu[i].nField[j].nImageNumber);

				(*pGab) = (int) (gab/(float)width * 255.0f + 0.5);
				
				static old_gab[2][3];
				if( old_gab[SMenu[MN_CHARACTER_COLOR_CHANGE].key][j-4] != gab )
				{
					Hero->bodycolor = ReturnBlendRGB( SCharacterData.body_r, SCharacterData.body_g, SCharacterData.body_b );
					Hero->clothcolor= ReturnBlendRGB( SCharacterData.cloth_r, SCharacterData.cloth_g, SCharacterData.cloth_b );
					old_gab[SMenu[MN_CHARACTER_COLOR_CHANGE].key][j-4] = gab;
				}
				break;
			}
		case FT_SKIN_MONEY : 
			{
				// 力格 嘛扁
				if( SubMenu->key )
					FieldTypeNomalPut(SMenu[i].x, SMenu[i].y, 0, 0, 12, SMenu[i].nField[j].nImageType );
				
				// 捣 嘛扁
				if( !SubMenu->work ) break;
				FieldTypeNomalPut(SMenu[i].x, SMenu[i].y, SMenu[i].nField[j].x, SMenu[i].nField[j].y, SMenu[i].nField[j].nImageNumber,SMenu[i].nField[j].nImageType);

				SetHangulAlign( TA_RIGHT );
				Hprint2( SubMenu->x+SubMenu->nField[j].rCheakBox.right,SubMenu->y+SubMenu->nField[j].rCheakBox.top+1, g_DestBackBuf, "%d", NPC_Lev_Ref[Hero->lv].nDyeingPrice);

				break;
			}

		case FT_VIEW_RUNE_LEFT :
			{
				int &count = SubMenu->nField[j].nSHideNomalNumber;
				if( !SubMenu->CheakType )
				{
					//SubMenu->CheakType = 1;
					if( !g_Menu_Variable.m_pRune )

⌨️ 快捷键说明

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