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

📄 skill.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		break;
	case 3:		//Skill->眯阂
		InsertMagic( scr, scr, 214, -2, Mox, Moy, 0, 0 );			//Skill_眯阂 
		break;
	case 4:
		InsertMagic( scr, scr, 218, 0, Mox, Moy, 0, 0 );			//付过荤.楷陛贱荤 滚几备抚
		break;
	case 5:
		InsertMagic( scr, scr, 208, 0, Mox, Moy, 0, 0 );			//惑磊 凯菌阑矫 何厚飘乏 气颇
		break;
	case 6:
		InsertMagic( scr, scr, 215, -2, Mox, Moy, 0, 0 );			//淬陛龙-荐刘扁
		break;
	case 7:
		InsertMagic( scr, scr, 207, 0, Mox, Moy, 0, 0 );			//葛风/噶摹龙 胶颇农
		break;
	case 8:
		InsertMagic( scr, scr, 210, 0, Mox, Moy, 0, 0 );			//何剿倒 胶颇农
		break;
	case 9:
		InsertMagic( scr, scr, 216, 0, Mox, Moy, 0, 0 );			//奔兑/侩堡肺 楷扁(胶葛弊)
		break;
	case 10:
		InsertMagic( scr, scr, 217, -2, Mox, Moy, 0, 0 );			//厘累阂 
		break;
	case 11:
		InsertMagic( scr, scr, 219, rand()%6, Mox, Moy, 0, 0 );		//拱绊扁 荐搁困肺 顿绢棵扼坷扁
		break;
	case 12:
		InsertMagic( scr, scr, 226+rand()%5, rand()%6, Mox, Moy, 0, 0 );	//牢拱 见扁扁 瓤苞 5俺 菩畔(random 免仿)
		break;
*/		
		
		

static int startcirclemagic;
static int startcirclemagicID;

void StartCircleMagic( int id, int type )
{
	switch( type )
	{
	case 0 :	startcirclemagic = 50;
				startcirclemagicID = id;
		break;
	}
}


void  CircleMagic( void )
{		
	if( startcirclemagic == 0 ) return;
		
	int x, y;
		
	startcirclemagic--;
	if( startcirclemagic )
	{	
		LPCHARACTER ch = ReturnCharacterPoint( startcirclemagicID );
		if( ch == NULL ) return;
			
		x = (int )((20.+(50.))*cos((startcirclemagic *30)%360*3.1415/180.));
		y = (int )((10.+(50.))*sin((startcirclemagic *30)%360*3.1415/180.));
			
		InsertMagic( ch, ch, 213, 9, 0, 0, ch->x + x, ch->y + y);//, 0,0 );	
	}	
}		
		
		
		
		
									
void RecvSkillInfo( t_server_skill_info *p )
{					
	int skillno, x, y, targettype, target_id;
	int id;
	LPCHARACTER ch = ReturnCharacterPoint( p->server_id );
	if( ch == NULL ) return;//
	
	id		  = p->server_id;
	x         = p->x;			
	y         = p->y;			
	skillno   = p->skillno;		
	targettype= p->targettype;	
	target_id = p->target_id;	
	
//	if( ch == Hero ) CursorNo( 1 );

	// 拳搁俊  矫傈窍绰巴阑 惑措规俊霸绰 焊咯林瘤 臼绰促.  ( Cursor )...
	if( ch != Hero )
	switch( skillno )
	{
		// stealing..
		case  1 :
		case  2 :
		case  3 :	break;

		case 19 : 	return;	//1007 zhh 壬摹扁父 巢俊霸 救 焊咯霖促

		default :	
					ChangeDirection( &ch->todir, ch->x, ch->y, x, y );
					//1006 zhh //1007 zhh
				//	AddSkillCursor( Hero, skillno, SkillTable[ skillno].Curser3, x, y, 1 );
				break;
	}				
					
	//AddSkillCursor( skilno, SkillTable[ skillno].Curser2, x, y, 3 );	
	if(SkillTable[ skillno].effect_wave!=0)
		PlayListAutoSounds( SkillTable[ skillno].effect_wave , 0, 0, 0 );
					
	/////////////////////////////////////// 捞痹绕 1226(堡盔) ///////////////////////////////////////		
	switch( skillno )
	{				
		//  Ghost Detect...
		case  1 :		
		case  2 :	
		case  3 :  StartCircleMagic( p->server_id, 0 );
			break;	
					
		case 6 :	InsertMagic( Hero, Hero, 212, 9, 0, 0, x, y-80);//, 0,0 );	
			return;

		case 7 :	InsertMagic( Hero, Hero, 212, 9, 0, 0, x, y-80);//, 0,0 );	
			return;

			// Reclaim
		case 21 :	
		case 24 :	
		case 32 :	
		case 36 :	
			//1006 zhh
		case 75 :	if( ch == Hero ) 
					{
						StopDoingSkillCursor( ch );
						//1006 zhh
						AddSkillCursor(  ch,  skillno, SkillTable[ skillno].Curser2,  x,  y,  2 );
					}
	 				PlayListAutoSounds( 2438, 0, 0, 0 );

			break;	
				
		//1017 zhh
		case 30:
		case 28 :	if( TileMap[ x/TILE_SIZE][y/TILE_SIZE].attr_river )	
						InsertMagic( Hero, Hero, 219, rand()%8, x, y, 0, 0 );		//拱绊扁 荐搁困肺 顿绢棵扼坷扁

					//1017 zhh
					if( ch == Hero ) 
					{
						StopDoingSkillCursor( ch );
						//1006 zhh
						AddSkillCursor(  ch,  skillno, SkillTable[ skillno].Curser2,  x,  y,  2 );
					}
			return;

		case 33 :	
			//1006 zhh
			if( ch == Hero ) 
				//1006 zhh
				AddSkillCursor(  ch,  skillno, SkillTable[ skillno].Curser2,  x,  y,  4 );
			break;


		case 25 : 
		case 35 :	//AddDetectTile( 0, x, y, RGB16( 0, 255, 0 )); 
					if( ch == Hero ) 
						//1006 zhh
						AddSkillCursor(  ch,  skillno, SkillTable[ skillno].Curser2,  x,  y,  4 );
					InsertMagic( Hero, Hero, 253, 9, 0, 0, x, y);//,0,0 );
			break;

			// MakeFire
		case 74 :  	InsertMagic( Hero, Hero, 210, 9, 0, 0, x, y);//, 0, 0 );
			return;

			//1011 zhh
		default:	if( ch == Hero ) 
					{						
						StopDoingSkillCursor( ch );
						//1006 zhh
						AddSkillCursor(  ch,  skillno, SkillTable[ skillno].Curser2,  x,  y,  2 );
					}
			break;
	
	}
}



//1024 zhh
//1019 zhh
void RecvSkillAnimalLore( t_packet *p )
{
	char temp[ FILENAME_MAX];	

	t_server_skill_animal_lore haha = p->u.server_skill_animal_lore;	
	
	switch(haha.result)
	{
	case 0:
		sprintf( temp," <%s>  HP  %d/%d", haha.name , haha.NowLife , haha.MaxLife );
		AddCurrentStatusMessage( 255,150,150, temp );
		break;
	case 1:	
		sprintf( temp," <%s>  HP  %d/%d", haha.name , haha.NowLife , haha.MaxLife );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Level:%d   Exp:%d", haha.name , haha.Level , haha.exp );
		AddCurrentStatusMessage( 255,150,150, temp );
		break;
	case 2:
		sprintf( temp," <%s>  HP  %d/%d", haha.name , haha.NowLife , haha.MaxLife );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Level:%d   Exp:%d", haha.name , haha.Level , haha.exp );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Loyalty:%d", haha.name , haha.loyalty );
		AddCurrentStatusMessage( 255,150,150, temp );
		break;
	case 3:		
		sprintf( temp," <%s>  HP  %d/%d", haha.name , haha.NowLife , haha.MaxLife );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Level:%d   Exp:%d", haha.name , haha.Level , haha.exp );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Loyalty:%d", haha.name , haha.loyalty );
		AddCurrentStatusMessage( 255,150,150, temp );
		sprintf( temp," <%s>  Damage:%d", haha.name ,haha.damage );
		AddCurrentStatusMessage( 255,150,150, temp );
		break;
	default:
		return ;
	}		
	::strcpy( Hero->szChatMessage, lan->OutputMessage(2,33) );
	Hero->ChatDelay = 50;
	SkillSettingClear();
}

void RecvOutPutMessage(t_packet *p )
{
	DWORD para1 = p->u.server_output_message.para1;
	DWORD para2 = p->u.server_output_message.para2;
	::AddCurrentStatusMessage( FONT_COLOR_ORANGE, lan->OutputMessage(para1,para2) );
}

void RecvSoundOut(t_packet *p )
{
	DWORD para1 = p->u.server_output_message.para1;
	DWORD para2 = p->u.server_output_message.para2;
	::MP3( para2 );
}



void RecvSkillResult( t_packet *p )
{		
	char temp[ FILENAME_MAX] = {0,};
	int result = p->u.server_skill_result.result;

	if( result == -999 )
	{
		::SkillSettingClear();
		::AddCurrentStatusMessage( 255,150,150, lan->OutputMessage(2,32) );
	}

	//////////////////////////////////// 捞痹绕 1226(堡盔) ////////////////////////////////////
	::InsertMagic( Hero, Hero, 250, (rand()%4) + 1, p->u.server_skill_result.x, p->u.server_skill_result.y, 0, 0);//, 0, 0);

	::PlayListAutoSounds( 2408, 0, 0, 0 );
	
	Hero->ChatDelay = 0;
/* 己傍  250,	1, 
//				2,
//				3,
//				4, 
//				5- 角菩...
//				6- 角菩...

		己傍 Wave锅龋 : 108
		角菩 Wave锅龋 : 109 */
	
	switch( p->h.header.type )
	{
	case CMD_SKILL_RESULT : 
		
		switch( p->u.server_skill_result.skillno )
		{
		case 1 :	//020320 lsw	绊胶飘焊扁 绊胶飘客 富窍扁 烹钦
		case 2 :
			{		
					Hero->bCanViewGhost = true;
					//1024 zhh
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,22),  result );
					SkillSettingClear();
				break;
			}

		case 105 : 
			{
				LPCHARACTER ch = ReturnCharacterPoint( result );

				//1024 zhh
				if( ch ) AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,24), ch->name );
			//	if( ch ) AddCurrentStatusMessage( 255,255,0 , "寸脚狼 堪盔栏肺  '%s'(阑)甫 磷澜俊辑 备秦 陈嚼聪促.", ch->name );

				SkillSettingClear();
				break;
			}

		case 5 :	
			{
				Hero->bCanViewTrap = true;
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,27),  result );//020401 LSW
				SkillSettingClear();
			}break;
		case 16 :
			{
				Hero->bCanViewBomb = true;
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,28),  result );//020401 LSW
				SkillSettingClear();
			}break;

		case 6  :   
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,141) );
				SkillSettingClear();
			}break;
		case 7 :
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,142) );
				SkillSettingClear();
			}break;
		case 17  :
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,144) );
				SkillSettingClear();
			}break;
		case 18 :	
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,145) );
				SkillSettingClear();
			}break;
		case 19 :
			{
				if( p->u.server_skill_result.result == 2 )  // 甸淖促. 
				{
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,146) );
				}
				else
				{
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,147) );
				//	AddCurrentStatusMessage( 255,255,0 , " 窍唱 壬煤嚼聪促." );
				}

				SkillSettingClear();
			}break;

		case 21 :	
			{
				sprintf( SkillOutputMessage, "%d", p->u.server_skill_result.result );
				GameStatusOutput( 7 );

				if(p->u.server_skill_result.result<100)
				{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,148),  p->u.server_skill_result.result);
				}
				else
				{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,139));
				}
				AddSkillGauge( SkillNo, p->u.server_skill_result.x, p->u.server_skill_result.y, p->u.server_skill_result.result );
			}break;

		case 22 :
			{
			switch( p->u.server_skill_result.result )
				{
					case 0 : AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,149) );
						break;
						//1024 zhh
					case 1 : AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,150) );
						break;
				}
				strcpy( Hero->szChatMessage, lan->OutputMessage(2,151) );
				Hero->ChatDelay = 50;
			}
			break;

		case 23 :
			{
				if(p->u.server_skill_result.result)
				{
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,152) );
				}
				else 
				{
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,153) );
				}
			}break;

		case 24 :   
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,154)); 
					SkillSettingClear();
			}break;
		case 25 :	
			{
				switch(rand()%2)
				{
					case 0 : sprintf( temp, lan->OutputMessage(2,155) ); break;
					case 1 : sprintf( temp, lan->OutputMessage(2,156), subMineType[p->u.server_skill_result.result] +2); break;
				}	
				strcpy( Hero->szChatMessage, temp );
				Hero->ChatDelay = 50;
				SkillSettingClear();
			}break;		
		case 26 :  	
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,157) );
				SkillSettingClear();
			}
			break;

		case 28 :  	
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,158) );
				SkillSettingClear();
			}break;
		case 30 :  	
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,159) );
				SkillSettingClear();
			}break;
		case 32 :   
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,160) );
				SkillSettingClear();
			}break;

		case 33 :
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,161) ,GetItemHanName( Skill_CursorCheckedItem->no )
					,GetItemHanName( Skill_CursorCheckedItem->no ));
				SkillSettingClear();
			}
			break;
		case 34 :   
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,162) );
				SkillSettingClear();
			}break;
		case 35 :	
			{
				sprintf( temp, lan->OutputMessage(2,163), subHubType[p->u.server_skill_result.result] + 2 );
				strcpy( Hero->szChatMessage, temp );
				Hero->ChatDelay = 50;
			}break;		


		case 36 :  
			{
				CItem *ti = ItemUnit(p->u.server_skill_result.result/1000,p->u.server_skill_result.result%1000);
				if( ti )
				{
					AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,164), ti->GetItemHanName() );
					SkillSettingClear();
				}
			}
			break;
		case 41 :   
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,165) );
				SkillSettingClear();
			}break;
		case 46 :
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,166) );
				SkillSettingClear();
			}break;
		case 59 :
			{ 
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,167) );
				SkillSettingClear();
			}break;
		case 58 :
			{ 
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,168) );
				SkillSettingClear();
			}break;

		case 54 :
			{ 
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,169) );
				SkillSettingClear();
			}break;
		case 65	:
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,170) );
				SkillSettingClear();
			}break;
		case 67	:
			{   
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,171) );
				SkillSettingClear();
			}break;
		case 69	:
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,172) );
				SkillSettingClear();
			}break;

		case 70	:
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,173) );
				SkillSettingClear();
			}break;
		case 71	:
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,174) );
				SkillSettingClear();
			}break;
		case 74 :
			{
				AddCurrentStatusMessage( 255,255,0 , lan->OutputMessage(2,175) );
				SkillSettingClear();
			}break;
		
		case 75 :   switch( rand()%4 )
					{	
						case 0 : sprintf( temp, lan->OutputMessage(2,176) );	break;
						case 1 : sprintf( temp, lan->OutputMessage(2,177) );	break;
						case 2 : sprintf( temp, lan->OutputMessage(2,178) );	break;
						case 3 : sprintf( temp, lan->OutputMessage(2,179) );	break;
					}	
					strcpy( Hero->szChatMessage, temp );
					Hero->ChatDelay = 50;

					if( p->u.server_skill_result.result == 200 )
					{
						AddCurrentStatusMessage( 180,214,82,lan->OutputMessage(2,180) );
					}
					else 
					{
						AddCurrentStatusMessage( 180,214,82,lan->OutputMessage(2,181), p->u.server_skill_result.result );
					}

					SkillSettingClear();
			break;	

		default :	
			{
				switch( rand()%3 )

⌨️ 快捷键说明

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