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

📄 smallmenu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			fRMoveMenu=0;
			SMenu[MN_PARTY].x=480;
			SMenu[MN_PARTY].bActive=FALSE;
			MenuStack.DelMenu(MN_PARTY);
			if(nPartyState != nPartyOther || nPartyState)
			{
				if(nPartyState) 
				{
					SMenu[nPartyState].bActive=FALSE;  // 皋春甫 厚 劝己栏肺 父电饶
					//					MenuStack.DelMenu(nPartyState);
				}
				if(nPartyOther) 
				{
					SMenu[nPartyOther].bActive=TRUE;  // 眉农等 皋春甫 劝己拳 矫挪促.
					//					MenuStack.PutMenu(nPartyOther);
				}
			}
			nPartyState = 0;
			nPartyOther=0;
		}
		cRMoveMenu++;
		break;
	case	MN_GM_2ND_SKILL://010708 lsw 咯扁辑 啊悼 !
		{
			SMenu[MN_GM_2ND_SKILL].bActive=TRUE;
			SMenu[MN_GM_2ND_SKILL].x=SCREEN_WIDTH-64*cRMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
			if(cRMoveMenu == 5 )
			{
				cRMoveMenu=0;
				fRMoveMenu=0;
				RightClose();
				SMenu[MN_GM_2ND_SKILL].bActive=TRUE;
				if( nItemOther ) 
				{
					SMenu[nItemOther].bActive = TRUE; // 酒捞袍苞 鞍捞 栋具窍绰 皋春啊 乐促搁 鞍捞 夺促.
					nItemOther = 0;
					LeftMenuClose();
				}
				MenuStack.PutMenu(MN_GM_2ND_SKILL);
				break;
			}
			cRMoveMenu++;
			break;   //捞犯霸 秦辑 付快胶 涝仿阑 阜绰促.
		}
	default :	fRMoveMenu=0; break;
	}	
}

void CallSmallMenu(int menu, int pre, int sound)
{
	SetChatMode(CM_COMMAND,true);//021001 lsw //牢磐其捞胶 哆搁 公炼扒 盲泼芒 摧绰促
	EWndMgr.ClearAllTxt();//021001 lsw
	
	if (SMenu[MN_NATION_WAR_RESULT].bActive)
	{
		return;
	}

	if (menu) 
	{
		if (SMenu[menu].bActive)
		{
			return;		// 鞍篮 皋春啊 栋 乐阑 版快 府畔...
		}
		
		CloseAllMenu();		// 葛电 皋春甫 摧绊...
		SMenu[menu].bActive = TRUE;

		if (pre)
		{
			SMenu[menu].nTemp = pre; // default 0
		}

		y_MenuFocus = menu;
		
		if (sound != SN_MENU_OPEN)
		{
			MP3(sound);
		}
		else 
		{
			switch (menu)
			{
			case MN_MEM_BOOK:
				{
					MP3(SN_MAGIC_BOOK_OPEN);
					break;
				}
			case MN_QUEST_INDEX:				
			case MN_LEARN_MAGIC_BOOK:
				{
					MP3(SN_GET_BOOK);
					break;
				}
			case MN_DIVIDE_ITEM:
			case MN_DISTANCE_TABLE:
			case MN_STORE_SIGN:
				{
					MP3(SN_BOX_OPEN);
					break;
				}
			case MN_NATION_BATTLE_BBS:
				{
					MP3(50);
					break;
				}
			case MN_NATION_DONEBOX:
				{
					MP3(67);
					break;
				}
			case MN_NATION_WAR_START:
				{
					MP3(67);
					break;
				}
			default:
				{
					MP3(SN_MENU_OPEN);
					break;
				}
			}
		}
	}
	else
	{
		is_mainmenu_active = 0;
		y_MenuFocus = 0;
	}

	is_mainmenu_active = false;
	SoundOn = false;
}

void PrintMoney(SMENU *SubMenu, int j, DWORD result, int BoxSize)
{
	SetHangulAlign( TA_RIGHT );
	int x = SubMenu->x+SubMenu->nField[j].x+BoxSize;
	int y = SubMenu->y+SubMenu->nField[j].y;
	if( result < 1000)
	{
		Hprint2( x, y, g_DestBackBuf,"%u", result);
	}
	else if(result < 1000000)
	{
		DWORD first, second;
		first = result / 1000 ; 
		second = result % 1000 ;
		Hprint2( x, y, g_DestBackBuf,"%u,%03u", first, second);
	}
	else// if(result < 1000000000 )
	{
		DWORD first, second, third;
		first = result / 1000000;
		second = (result - first * 1000000) / 1000;
		third = result - first * 1000000 - second*1000;
		Hprint2( x,y, g_DestBackBuf,"%u,%03u,%03u", first, second, third);
	}
}


ItemAttr ExplainItemAttr;
void ItemExplain(ItemAttr item)
{
	ExplainItemAttr = item;
	return;	
}

void ItemExplain( int item )
{
	ExplainItemAttr = GenerateItem( item );
	return;
}

int ItemExplainAfterMenuDisplay( int prev )			// 唱吝俊 汲疙阑 剁款促.
{
	if (Hero != NULL && Hero->viewtype == VIEWTYPE_OBSERVE_)
	{	//< CSD-TW-030618
		return 0;
	}	//> CSD-TW-030618

	int ret=0;
	static ItemAttr ExplainItem_back = ExplainItemAttr;
	
	if( (ExplainItem_back.item_no != ExplainItemAttr.item_no) || ( ExplainItem_back.attr[IATTR_DURATION] != ExplainItemAttr.attr[IATTR_DURATION] ))				// 付瘤阜 橇饭烙俊 汲疙茄锅 歹 嘛扁
	{
		if( ExplainItem_back.item_no && !ExplainItemAttr.item_no )
		{
			ItemAttr temp = ExplainItemAttr;
			ExplainItemAttr = ExplainItem_back;
			ExplainItem_back = temp;
		}
		else ExplainItem_back = ExplainItemAttr;
	}
	
	ItemAttr &item = ExplainItemAttr;
	if( prev || !item.item_no ) 
	{
		memset( &item, 0, sizeof( ItemAttr ) );
		return 0;
	}
	
	ExplainItem2( 0, 0, &item );
	memset( &item, 0, sizeof( ItemAttr ) );
	return 1;
	
}

void MagicExplain(int num)
{
	if( !y_MenuFocus && (g_MouseItemType != 1) && num)
	{
		const BOOL bSpell = SCharacterData.nCharacterData[SPELL];
		magic[num].Explain(Hero->x-Mapx+20,Hero->y-Mapy-80,bSpell);
	}
}

void PrintDate(SMENU* SubMenu , int j, DWORD time, int width)
{
	char date[20];
	
	int year;
	int month;
	int day;
	
	year = (int) (time / 1000 / 3600 / 24 / 360); time %= (DWORD) (1000.0 * 3600.0 * 24.0 * 360.0);
	month = (int) (time / 1000 / 3600 / 24 / 30); time %= (DWORD) (1000.0 * 3600.0 * 24.0 * 30.0);
	day = (int) (time / 1000 / 3600 / 24);
	
	wsprintf(date, "%4d:%02d:%02d\0", year, month, day);
	SetHangulAlign( TA_CENTER )	;
	int p = (int)(width / 2 +0.5);
	Hprint2( SubMenu->x+SubMenu->nField[j].x+p, SubMenu->y+SubMenu->nField[j].y, g_DestBackBuf,"%s", date);
}


void PrintText(SMENU* SubMenu, int j, char *str, int width)
{
	SetHangulAlign( TA_CENTER );
	int p = (int) ( width/2 +0.5 );
	Hprint2( SubMenu->x+SubMenu->nField[j].x+p, SubMenu->y+SubMenu->nField[j].y, g_DestBackBuf,"%s", str);
}

bool IsMenuActive()								// 劝己拳等 皋春救俊 付快胶啊 乐绰瘤甫 魄窜
{
	return g_MouseInMenu;
}


inline void LeftClose() // 哭率 芒 葛滴 摧扁 ( 婆 窍绊.. )
{
	SMenu[MN_STATUS].bActive=FALSE;
	SMenu[MN_ABILITY].bActive=FALSE;
	SMenu[MN_ARIGEMENT].bActive=FALSE;
	SMenu[MN_TACTICS].bActive=FALSE;
	MenuStack.DelMenu(MN_STATUS);
	MenuStack.DelMenu(MN_ABILITY);
	MenuStack.DelMenu(MN_ARIGEMENT);
	MenuStack.DelMenu(MN_TACTICS);
}

inline void RightClose()   //坷弗率 芒 肯傈洒 促 磷老锭..
{
	SMenu[MN_ITEM].bActive=FALSE;
	SMenu[MN_PARTY].bActive=FALSE;
	MenuStack.DelMenu(MN_ITEM);
	MenuStack.DelMenu(MN_PARTY);
}

BOOL MenuFocus(int menu)	//皋春 刀痢牢瘤 魄窜
{
	if(y_MenuFocus)
	{
		if(y_MenuFocus != menu)
		{
			return true;
			switch(menu)           
			{                   
			case MN_MAININTERFACE :
			case MN_STATUS :
			case MN_ABILITY :
			case MN_ITEM :
			case MN_ARIGEMENT :
			case MN_MAKECHARACTER_CHEAK3 :
			case MN_MAKECHARACTER_ABILITY :
			case MN_TACTICS:
				return TRUE;
			default : break;
			}
		}
		else return false;
	}
	return FALSE;
}


void PutMouseItemCheck()
{
	if( g_MouseItemType && !MouseDrag && !HandItemOn && !LButtonDown )
	{
		if( g_MouseItemType==1 )
		{
			switch ( IP_base.type )
			{
			case  EQUIP:{	
				int a, b, c;
				if( SearchEmpty(a, b, c) )
				{
					InvItemAttr[a][b][c] = HandItemAttr;
					POS pos_s, pos_t;
					SetItemPos(HAND, &pos_s);
					SetItemPos(INV, a, b, c, &pos_t);
					SendMoveItem( HandItemAttr.item_no, pos_s, pos_t, false );
				}
				else
				{
					SendDropItem( HandItemAttr.item_no, Hero->x, Hero->y, HandItemAttr.attr );
				}
				break;
						}
				
						/*				case  EQUIP:	if(GetItemAttr(HandItemAttr.item_no, WEAR_ABLE) == WearAble[IP_base.p3] && !EquipItemAttr[IP_base.p3].item_no)		// 公扁 酒捞袍 芒俊辑 都绢辰 酒捞袍
						{
						POS s; 
						EquipItemAttr[IP_base.p3]= HandItemAttr;
						
						  SetItemPos(HAND, &s);
						  SendMoveItem( HandItemAttr.item_no, s, IP_base );
						  }
						  else
						  {
						  int a, b, c;
						  if( SearchEmpty(a, b, c) )
						  {
						  InvItemAttr[a][b][c] = HandItemAttr;
						  POS pos_s, pos_t;
						  SetItemPos(HAND, &pos_s);
						  SetItemPos(INV, a, b, c, &pos_t);
						  SendMoveItem( HandItemAttr.item_no, pos_s, pos_t );
						  }
						  else
						  {
						  SendDropItem( HandItemAttr.item_no, Hero->x, Hero->y, HandItemAttr.attr );
						  }
						  }
						  break;		
				*/
			case QUICK :	if(GetItemAttr(HandItemAttr.item_no, WEAR_ABLE) == WEAR_BELT)		// 窜绵 酒捞袍 芒俊辑 都绢辰 酒捞袍
							{
								QuickItemAttr[IP_base.p3] = HandItemAttr;
								POS s; 
								SetItemPos(HAND, &s);
								SendMoveItem(HandItemAttr.item_no,s, IP_base, false);
							}
				else
				{
					int a, b, c;
					if( SearchEmpty(a, b, c) )
					{
						InvItemAttr[a][b][c] = HandItemAttr;
						POS pos_s, pos_t;
						SetItemPos(HAND, &pos_s);
						SetItemPos(INV, a, b, c, &pos_t);
						
						SendMoveItem( HandItemAttr.item_no,pos_s, pos_t, false );
					}
					else
					{
						SendDropItem( HandItemAttr.item_no, Hero->x, Hero->y, HandItemAttr.attr );
					}
				}
				break;		
				
			case BANK :{
				BankItemAttr[IP_base.p1][IP_base.p2][IP_base.p3] = HandItemAttr;
				POS pos_s;
				SetItemPos(HAND, &pos_s);
				SendMoveItem( HandItemAttr.item_no,pos_s, IP_base , false);
				break;
					   }
			case GROUND : {
				int a, b, c;
				int kind = GetItemAttr(HandItemAttr.item_no, ITEM_KIND);
				if( kind == IK_NEW_MONEY )
				{
					if( SearchNewCoinItem( a, b, c ) )
					{
						POS pos_s, pos_t;
						SetItemPos(HAND, &pos_s);
						SetItemPos(INV, a,b,c, &pos_t);
						SendMoveItem( HandItemAttr.item_no, pos_s, pos_t, false );
						//ChangeItemAttr( &InvItemAttr[a][b][c], CIA_MUCH, HandItemAttr.attr[IATTR_MUCH], 0 );
						break;
					}
				}
				else if( kind == IK_MONEY  )
				{
					if( SearchCoinItem( a, b, c ) )
					{
						POS pos_s, pos_t;
						SetItemPos(HAND, &pos_s);
						SetItemPos(INV, a,b,c, &pos_t);
						SendMoveItem( HandItemAttr.item_no, pos_s, pos_t, false );
						//ChangeItemAttr( &InvItemAttr[a][b][c], CIA_MUCH, HandItemAttr.attr[IATTR_MUCH], 0 );
						break;
					}
				}
				else if( GetItemAttr( HandItemAttr.item_no, DO_RBUTTON )==DIVIDE_ITEM && SearchItemPosByNumber( &HandItemAttr, a, b, c ) )
				{
					POS pos_s, pos_t;
					SetItemPos(HAND, &pos_s);
					SetItemPos(INV, a, b, c, &pos_t);
					SendMoveItem( HandItemAttr.item_no, pos_s, pos_t , false);
					//ChangeItemAttr( &InvItemAttr[a][b][c], CIA_MUCH, HandItemAttr.attr[IATTR_MUCH], 0 );
					break;
				} 
				if( SearchEmpty(a, b, c) )
				{
					InvItemAttr[a][b][c] = HandItemAttr;
					POS pos_s, pos_t;
					SetItemPos(HAND, &pos_s);
					SetItemPos(INV, a, b, c, &pos_t);
					SendMoveItem( HandItemAttr.item_no, pos_s, pos_t, false );
				}
				else
				{
					SendDropItem( HandItemAttr.item_no, Hero->x, Hero->y, HandItemAttr.attr );
				}
				break;
						  }
			default : {
				if( InvItemAttr[IP_base.p1][IP_base.p2][IP_base.p3].item_no )
				{
					int a, b, c;
					if( SearchEmpty(a, b, c) )
					{
						InvItemAttr[a][b][c] = HandItemAttr;
						POS pos_s, pos_t;
						SetItemPos(HAND, &pos_s);
						SetItemPos(INV, a, b, c, &pos_t);
						SendMoveItem( HandItemAttr.item_no, pos_s, pos_t , false);
					}
					else
					{
						SendDropItem( HandItemAttr.item_no, Hero->x, Hero->y, HandItemAttr.attr );
					}
				}
				else
				{
					InvItemAttr[IP_base.p1][IP_base.p2][IP_base.p3] = HandItemAttr;
					POS pos_s;
					SetItemPos(HAND, &pos_s);
					SendMoveItem( HandItemAttr.item_no, pos_s, IP_base , false);
					break;
				}
					  }
			}
		}
		g_MouseItemNumber = 0;
		g_MouseItemType = 0;
		//		SetItemPos(HAND, &IP_base);
		DeleteItem( &HandItemAttr );
		g_DropOnHero = false;
	}
	
}

void PutMouseItem()
{
	if( g_MouseItemType==1 )
	{
		if( MouseItemInRectOn && !SMenu[MN_ITEM].bActive ) MouseItemInRectOn = 0;
		if( MouseDrag || HandItemOn || LButtonDown )
		{
			if( MouseItemInRectOn )
				PutItemIcon(MouseItemInRect.x, MouseItemInRect.y, HandItemAttr.item_no);
			else if( (HandItemAttr.item_no / 1000) == POTION )	
			{
				//MP3( SN_TOUCH_POTION );
				PutItemIconAni(g_pointMouseX, g_pointMouseY, HandItemAttr.item_no);
			}
			else	PutItemIcon(g_pointMouseX, g_pointMouseY, HandItemAttr.item_no);
		}
		ItemExplain( HandItemAttr );
	}
	else if( g_MouseItemType == PARTY )
	{
		PutCharImage( g_pointMouseX-30, g_pointMouseY-35, mouse_ch.m_ImageNo, 0, FS_SMALL, 0, mouse_ch.m_Gender );
	}
	
	
	if(MessageOn)		// 盖付瘤阜俊 皋矫瘤 贸府 
	{
		kein_TextPut(249, 20+352, Message);
	}
	
	ItemExplainAfterMenuDisplay(0);			// 盖付瘤阜俊 酒捞袍 焊咯林扁
}

bool IsRightWindowOpen()
{
	int rightmenu[] = {	
		MN_ITEM,
			MN_

⌨️ 快捷键说明

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