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

📄 smallmenu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			{
				AutoChangeEquip( 0 );
			}
			f_change_equip1 = true;
		}
	}
	else 
	{
		f_change_equip1 = false;
	}
	
	static bool f_change_equip2 = false;
	if(g_aCurrentKeys[DIK_F10] & 0x80 )
	{	
		if( !f_change_equip2 )
		{
			if( lcontrol )
			{
				EquipSaveFlag[1] = TRUE;
				for(int i=0;i<8;i++)
				{
					SaveArmor[1][i] = EquipItemAttr[i].item_no;
				}
			}
			else 
			{
				AutoChangeEquip( 1 );
			}
			f_change_equip2 = true;
		}
	}
	else 
	{
		f_change_equip2 = false;
	}
}

int AutoChangeEquip( int flag_key )		// f3, f4甫 喘范阑锭
{
	if( IsDead( Hero ) ) return 0;		// 磷菌阑锭 荤侩阑 给窍霸 茄促.
	if( !EquipSaveFlag[flag_key] ) return 0;
	
	if( Hero->ready_Magic == 1 ) return 0;
	ServerConnectMenuClose();		// 背券芒阑 辆丰 矫挪促.
	
	static DWORD time = g_curr_time-20;
	DWORD gab = g_curr_time-time;
	if( gab < 10 )
	{
		MP3( SN_WARNING );
		AddCurrentStatusMessage( 200, 20, 20, lan->OutputMessage(6,36), 10-gab );//010215 lsw
		return 0;
	}
	
	if( EquipItemAttr[WT_SHIELD].item_no )		// 刚历 规菩甫 绝矩促.
	{
		int a1, b1, c1;
		int ret = SearchEmpty( a1, b1, c1 );
		if( ret )
		{
			POS pos_s, pos_t;
			SetItemPos( EQUIP, WT_SHIELD, &pos_s );
			SetItemPos(INV, a1, b1, c1, &pos_t);
			SendMoveItem( EquipItemAttr[WT_SHIELD].item_no, pos_s, pos_t );
			
			CallItemVirtualFunction( VF_RELEASE_ITEM, EquipItemAttr[WT_SHIELD].item_no );
			
			InvItemAttr[a1][b1][c1] = EquipItemAttr[WT_SHIELD];
			memset( &EquipItemAttr[WT_SHIELD], 0, sizeof( ItemAttr ) );
			
			time = g_curr_time;
		}
	}
	
	for(int i=0;i<8;i++)
	{
		if(EquipItemAttr[i].item_no != SaveArmor[flag_key][i])
		{
			for(int a=0;a<3;a++)
			{
				for(int b=0;b<3;b++)
				{
					for(int c=0;c<8;c++)
					{
						if(SaveArmor[flag_key][i])
						{
							if( InvItemAttr[a][b][c].item_no == SaveArmor[flag_key][i] )
							{
								POS pos_s, pos_t;
								SetItemPos(INV, a, b, c, &pos_s);
								SetItemPos( EQUIP, i, &pos_t );
								SendMoveItem( InvItemAttr[a][b][c].item_no, pos_s, pos_t );
								
								CallItemVirtualFunction( VF_RELEASE_ITEM, EquipItemAttr[i].item_no );
								CallItemVirtualFunction( VF_EQUIP_ITEM, InvItemAttr[a][b][c].item_no );
								
								EquipItemAttr[i] = InvItemAttr[a][b][c];
								memset( &InvItemAttr[a][b][c], 0, sizeof( ItemAttr ) );
								time = g_curr_time;
								goto kein3;
							}
						}
						else
						{
							if( EquipItemAttr[i].item_no )
							{
								int a1, b1, c1;
								int ret = SearchEmpty( a1, b1, c1 );
								if( ret )
								{
									POS pos_s, pos_t;
									SetItemPos( EQUIP, i, &pos_s );
									SetItemPos(INV, a1, b1, c1, &pos_t);
									SendMoveItem( EquipItemAttr[i].item_no, pos_s, pos_t );
									
									CallItemVirtualFunction( VF_RELEASE_ITEM, EquipItemAttr[i].item_no );
									
									InvItemAttr[a1][b1][c1] = EquipItemAttr[i];
									memset( &EquipItemAttr[i], 0, sizeof( ItemAttr ) );
									
									time = g_curr_time;
								}
							}
							goto kein3;
						}
					}
				}
			}
		}
kein3: continue;
	}
	
	
	ChangeEquip( Hero, EquipItemAttr, WT_WEAPON );
	return 1;
}


void ChangeEquip( LPCHARACTER lpCharacter , ItemAttr *equip_item, int type ) //  8俺..
{
	int *a;
	int sprno;
	int changeflag = 0;
	int tno;
	
	g_SokSungFlag = 0;			// 加己 眉农
	for( int i=0; i<8; i++ )
	{
		if( EquipItemAttr[i].attr[IATTR_RARE_MAIN] )
		{
			g_SokSungFlag = 1;
			break;
		}
	}
	
	GetTatics();		// 货肺 馒侩茄 公扁狼 琶平阑 掘绢 柯促.
	if( lpCharacter== NULL ) return;
	
	if( SysInfo.notconectserver )
	{
		a = lpCharacter->accessory;
		sprno = lpCharacter->sprno;
		
		if( lpCharacter  == g_CharacterList.lpFirst )
		{
			tno = GetItemAttr(equip_item[WT_ARMOR].item_no, ITEMSHOW);
			if( tno != a[0] )
			{
				changeflag = 1;
				FreeHeroClothAccessoryDataOne( sprno, a[0] );
				LoadHeroClothAccessoryDataOne( sprno, tno );
				a[0] = tno;
			}
			
			tno = GetItemAttr(EquipItemAttr[WT_HELMET].item_no, ITEMSHOW);
			if( tno != a[1] )
			{
				changeflag = 1;
				FreeHeroClothAccessoryDataOne( sprno, a[1] );
				LoadHeroClothAccessoryDataOne( sprno, tno );
				a[1] = tno;
			}
			tno = GetItemAttr(EquipItemAttr[WT_WEAPON].item_no, ITEMSHOW);
			if( tno != a[2] )
			{
				changeflag = 1;
				FreeHeroClothAccessoryDataOne( sprno, a[2] );
				LoadHeroClothAccessoryDataOne( sprno, tno );
				a[2] = tno;
			}
			// 011030 KHS JJING
			if(  (( RareMain*)(&EquipItemAttr[WT_WEAPON].attr[ IATTR_RARE_MAIN]))->grade >=5 )
			{
				changeflag = 1;
				LoadHeroClothAccessoryDataOne( sprno, tno + 200);
			}
			if(  (( RareMain*)(&EquipItemAttr[WT_WEAPON].attr[ IATTR_RARE_MAIN]))->grade >=9 )
			{
				changeflag = 1;
				LoadHeroClothAccessoryDataOne( sprno, tno + 201);
			}
			
			tno = GetItemAttr(EquipItemAttr[WT_SHIELD].item_no, ITEMSHOW);
			if( tno != a[3] )
			{
				changeflag = 1;
				FreeHeroClothAccessoryDataOne( sprno, a[3] );
				LoadHeroClothAccessoryDataOne( sprno, tno );
				a[3] = tno;
			}
			
			// 011018 KHS  噶肚
			if( EquipItemAttr[WT_NECK].item_no != lpCharacter->mantle )
			{		
				changeflag = 1;
				FreeHeroClothAccessoryDataOne( sprno, GetItemAttr2( sprno, lpCharacter->mantle, ITEMSHOW ));
				tno = GetItemAttr2( sprno, EquipItemAttr[WT_NECK].item_no, ITEMSHOW );
				LoadHeroClothAccessoryDataOne( sprno, tno );
				lpCharacter->mantle = EquipItemAttr[WT_NECK].item_no;
			}		
		}			
		else
		{
		}
		
		if( changeflag )
		{
			//SendChangeEquip( Hero );		// 辑滚俊辑 磊眉 魄窜秦辑 焊郴霖促.
		}
		
		// 0 : 茄颊八.
		// 1 : 剧颊八.
		if( lpCharacter->accessory[2] != 0 ) 
		{
			int check;
			if( GetItemAttr( EquipItemAttr[WT_WEAPON].item_no, WEAR_ABLE ) == WEAR_TWO_HAND ) check = 1;
			else check = 0;
			
			switch( check )
			{
			case 0 : lpCharacter->basicAction = ACTION_BATTLE_NONE; 
				lpCharacter->basicWalk = ACTION_BATTLE_WALK_OWNHAND; 	
				break;
				
			case 1 :
				lpCharacter->basicAction = ACTION_BATTLE_NONE_TWOHAND;
				lpCharacter->basicWalk = ACTION_BATTLE_WALK_TWOHAND;
				break;
			}
		}
		else 
		{
			lpCharacter->basicAction = ACTION_NONE;
			lpCharacter->basicWalk = ACTION_BASIC_WALK; 
		}
	}
	
	SettingBasicActionSub( lpCharacter );
	
	
	if( type == WT_WEAPON )
	{
		//		GetItemAnimationNumber(aArmor_Inventory[WT_WEAPON], int &a, int &b, int &c, int &d, int &e, int &f, int &g)
	}
	
	
	///////////////////// AC 罐酒 坷扁 ////////////////////////
	if( SMenu[MN_STATUS].bActive )
	{
		CallServer( CMD_REQ_AC );
	}
	///////////////////// DMG 罐酒 坷扁 ////////////////////////
	if( SMenu[MN_STATUS].bActive )
	{
		CallServer( CMD_REQ_DMG );
	}
}	




ItemAttr  *SearchEmpty()
{
	for(int a=0;a<3;a++)
		for(int b=0;b<3;b++)
			for(int c=0;c<8;c++)
				if(!InvItemAttr[a][b][c].item_no)
					return &InvItemAttr[a][b][c];
				return NULL;
}

int SearchEmpty(int &a, int &b, int &c)
{
	for(a=0;a<3;a++)
		for(b=0;b<3;b++)
			for(c=0;c<8;c++)
				if(!InvItemAttr[a][b][c].item_no)
					return 1;
				return 0;
}

int SearchEmptyBank(int &a, int &b, int &c)
{
	for(a=0;a<5;a++)
		for(b=0;b<3;b++)
			for(c=0;c<6;c++)
				if(!BankItemAttr[a][b][c].item_no)
					return 1;
				return 0;
}

int SearchEmptyQuickItem()
{
	for( int a=0; a<5; a++ )
	{
		if( !QuickItemAttr[a].item_no ) return a;
	}
	
	return -1;
}

int IsMagicWindowOn()
{
	return 0;
}

int ItemDrop()
{	//付快胶 扩率 滚瓢捞 棵扼哎锭 酒捞袍捞 付快胶客 楷搬夌绊 角力 霸烙胶农赴俊 甸绢啊 乐栏搁 酒捞袍阑 初绰促
	int kkk = IsMagicWindowOn();
	if( g_MouseItemType )
	{   //劝己拳等 皋春甸阑 眉农茄促
		if( g_MouseInMenu ){return kkk;}
		const int *m = ( is_mainmenu_active )?mainmenu:smallmenu;
		const int max = ( is_mainmenu_active )?MAX_MAIN:MAX_SMALL;
		
		for(int t=0;t<max;t++)
		{
			int menu = m[t];
			if(SMenu[menu].bActive)
			{
				RECT box;
				Spr *s = GetSprOfMenu( SMenu[menu].nImageType, SMenu[menu].nImageNumber );
				if( !s ) continue;
				SetRect(box, SMenu[menu].x, SMenu[menu].y, SMenu[menu].x+s->xl, SMenu[menu].y+s->yl);
				if(MouseInRectCheak(0,0, box)) return kkk; 
			}
		}
		if( g_MouseItemType == 1  && !g_DropOnHero )		// 酒捞袍老 版快父 辑滚 妮
		{
			if( IP_base.type != GROUND )
			{
				DropItemSound( HandItemAttr.item_no );
				SendDropItem( HandItemAttr.item_no, Mox, Moy, HandItemAttr.attr );
				g_MouseItemType=0;
				g_MouseItemNumber=0;
				DeleteItem( &HandItemAttr );
			}
		}
	}
	return kkk;
}


void MoveMenu()
{
	cLMoveMenu = 5;
	cRMoveMenu = 5;
	switch(fLMoveMenu)
	{
	case MM_STATUS_OPEN :   SMenu[MN_STATUS].bActive=TRUE;
								SMenu[MN_STATUS].x=-320+64*cLMoveMenu; 
								if(cLMoveMenu == 5 )
								{
									MenuStack.PutMenu(MN_STATUS);
									cLMoveMenu=0;
									fLMoveMenu=0;
									break;
								}
								cLMoveMenu++;
								break;   
								
	case MM_STATUS_CLOSE : 	SMenu[MN_STATUS].x=0-64*cLMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
								if(cLMoveMenu == 5 )
								{
									cLMoveMenu=0;
									fLMoveMenu=0;
									SMenu[MN_STATUS].bActive=FALSE;
									MenuStack.DelMenu(MN_STATUS);
									break;
								}
								cLMoveMenu++;
								break;
	case MM_ABILITY_CLOSE : SMenu[MN_ABILITY].x=0-64*cLMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
								if(cLMoveMenu == 5 )
								{
									cLMoveMenu=0;
									fLMoveMenu=0;
									SMenu[MN_ABILITY].x=0;
									SMenu[MN_ABILITY].bActive=FALSE;
									MenuStack.DelMenu(MN_ABILITY);
									break;
								}
								cLMoveMenu++;
								break;
	case MM_ARIGEMENT_CLOSE :   SMenu[MN_ARIGEMENT].x=0-64*cLMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
		if(cLMoveMenu == 5 )
		{
			cLMoveMenu=0;
			fLMoveMenu=0;
			SMenu[MN_ARIGEMENT].x=0;
			SMenu[MN_ARIGEMENT].bActive=FALSE;
			MenuStack.DelMenu(MN_ARIGEMENT);
			break;
		}
		cLMoveMenu++;
		break;
		
	case MM_TACTICS_CLOSE :   SMenu[MN_TACTICS].x=0-64*cLMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
		if(cLMoveMenu == 5 )
		{
			cLMoveMenu=0;
			fLMoveMenu=0;
			SMenu[MN_TACTICS].x=0;
			SMenu[MN_TACTICS].bActive=FALSE;
			MenuStack.DelMenu(MN_TACTICS);
			break;
		}
		cLMoveMenu++;
		break;
	default	:	fLMoveMenu=0; break;
		
	}
	
	
	switch(fRMoveMenu)
	{
	case MM_ITEM_OPEN :   
		{
			SMenu[MN_ITEM].bActive=TRUE;
			SMenu[MN_ITEM].x=SCREEN_WIDTH-64*cRMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
			if(cRMoveMenu == 5 )
			{
				cRMoveMenu=0;
				fRMoveMenu=0;
				RightClose();
				SMenu[MN_ITEM].bActive=TRUE;	
				if( nItemOther ) 
				{
					SMenu[nItemOther].bActive = TRUE; // 酒捞袍苞 鞍捞 栋具窍绰 皋春啊 乐促搁 鞍捞 夺促.
					//					nItemOther = 0;
					LeftMenuClose();
				}
				MenuStack.PutMenu(MN_ITEM);
				break;
			}
			cRMoveMenu++;
			break;   //捞犯霸 秦辑 付快胶 涝仿阑 阜绰促.
		}
	case MM_ITEM_CLOSE :   
		SMenu[MN_ITEM].x=480+64*cRMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
		if(cRMoveMenu == 5 )
		{
			cRMoveMenu=0;
			fRMoveMenu=0;
			SMenu[MN_ITEM].x=480;
			SMenu[MN_ITEM].bActive=FALSE;
			if( nItemOther ) 
			{
				SMenu[nItemOther].bActive = false;
				nItemOther = 0;
			}
			if(SMenu[MN_BANK_CUSTODY].bActive)
			{
				SMenu[MN_BANK_CUSTODY].bActive = FALSE;
				//				SmallMenuClose();		MN_BANK_CUSTODY ==> 胶隔 皋春啊 酒匆铂
			}			
			MenuStack.DelMenu(MN_ITEM);
			break;
		}
		cRMoveMenu++;
		break;
		
		// 颇萍 皋春 框流捞搁辑 殿厘
	case MM_PARTY_OPEN :   
		SMenu[MN_PARTY].bActive=TRUE;
		SMenu[MN_PARTY].x=SCREEN_WIDTH-64*cRMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
		if(cRMoveMenu == 5 )
		{
			cRMoveMenu=0;
			fRMoveMenu=0;
			//			RightClose();
			SMenu[nPartyState].bActive=FALSE;
			//			MenuStack.DelMenu(nPartyState);
			SMenu[MN_PARTY].bActive=TRUE;
			MenuStack.PutMenu(MN_PARTY);
			break;
		}
		cRMoveMenu++;
		break;   //捞犯霸 秦辑 付快胶 涝仿阑 阜绰促.
		
		// 颇萍 皋春 框流捞搁辑 硼厘
	case MM_PARTY_CLOSE :   
		if(nPartyState) SMenu[nPartyState].bActive=TRUE;  //刚历 傈俊 栋乐菌带 皋春甫 劝己拳 矫虐绊
		SMenu[MN_PARTY].x=480+64*cRMoveMenu;  //32绰 鸥老农扁, 茄锅俊 鸥老农扁究 捞悼捞促.
		if(cRMoveMenu == 5)
		{
			cRMoveMenu=0;

⌨️ 快捷键说明

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