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

📄 chardatatable.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	if( wave <= 0 )								return 0;
//	if( wave > MAX_SOUND && wave != 9999 )		return 0;

	/////////////////////////// 40% 犬伏肺 家府巢 ////////////////////////
	//if( (wave>=66 && wave<=80) || (wave>=84 && wave<=98) || (wave>=267 && wave<=318)
	//	|| wave==132 || wave==134 || wave==135 || wave==136 ) //扁钦苞 厚疙 家府狼 版快
	//{
	//	if(rand()%5<2)
	//		return wave;
	//	else
	//		return 0;
	//}
	
	// wave 抛捞喉 亲格狼 蔼捞 9999牢 版快 某腐磐狼 厘馒等 厘厚 棺 NPC辆幅俊 蝶扼 舅嘎篮 瓤苞澜 免仿
	if(wave == 9999)
	{
		if( ch->type==SPRITETYPE_CHARACTER )									//PC Character
		{
			switch( ch->nCurrentAction )
			{
			case ACTION_ATTACK_ONESWORD1:		//茄颊傍拜1
			case ACTION_ATTACK_ONESWORD2:		//茄颊傍拜2
			case ACTION_ATTACK_BONG_DOWN:		//郴妨摹扁傍拜
			case ACTION_ATTACK_BONG_JJIRKI:		//骂福扁傍拜
			case ACTION_ATTACK_PENSING1:		//埔教傍拜1
			case ACTION_ATTACK_PENSING2:		//埔教傍拜2
			case ACTION_ATTACK_BONG_ROUND:		//戎滴福扁
			case ACTION_ATTACK_BOW:				//劝筋扁
			case ACTION_THROW:					//厚八带瘤扁
				return_Wave=ReturnPCAutoWave(ch, 0);	//秦寸 某腐磐啊 厘馒窍绊 乐绰 公扁俊 蝶扼 促弗 家府 府畔
				break;
			case ACTION_ATTACKED:				//嘎扁
				return_Wave=ReturnPCAutoWave(ch, 1);	//秦寸 某腐磐啊 厘馒窍绊 乐绰 焊龋备俊 蝶扼 促弗 家府 府畔
				break;
			}
		}
		
		else if( ch->type==SPRITETYPE_NPC || ch->type==SPRITETYPE_MONSTER )		//NPC Character
		{	
			switch( ch->nCurrentAction )
			{
			case MON1_BATTLE_ATTACK:				//茄颊傍拜
				return_Wave=ReturnNPCAutoWave(ch, 0);
				break;
			case MON1_ATTACKED:						//嘎扁	
				return_Wave=ReturnNPCAutoWave(ch, 1);
				break;
			}
		}
		return return_Wave;
	}

	// 8XXX牢 版快 -> 某腐狼 绊蜡澜牢 版快(漂沥 俊聪皋捞记捞 拌加 馆汗登绰 版快 漂沥 埃拜 付促 磊楷澜捞 免仿登霸 窍绰 风凭 / XXX->漂沥锅龋)
	if(wave/1000 == 8)
	{
		//int	gap = 5;					//绊蜡澜 敲饭捞矫 俊聪皋捞记 馆汗 冉荐
		int	wave_Natural = wave%1000;
				
		if(ch->naturalSound_Time < g_curr_time)		//促澜 磊楷澜阑 惯积矫懦 父怒 矫埃捞 版苞茄 版快
		{
			// 泅犁矫埃俊促 13~25檬 捞饶付促
			ch->naturalSound_Time = g_curr_time + 13 + ( rand()%13 );
			if(rand()%3==0)		return	wave_Natural;		//绊蜡澜
			else				return 0;
		}
	}
	
	// 33% 犬伏肺 家府 郴扁 7XXX
	if( wave/1000 == 7 )
	{
		if(rand()%3)
			return (wave%1000);
	}

	// 父窜困啊 1牢 版快:秦寸锅龋 捞饶 割锅掳 拳老鳖瘤 罚待 敲饭捞窍绰 版快
	if(wave/10000 == 1)					//玫窜困 箭磊:扁霖锅龋 捞饶 割锅掳 拳老鳖瘤, 归窜困 捞窍:角力 扁霖 荤款靛 锅龋
	{											
		BOOL	play_OnOff=TRUE;
		
		// 扁钦家府绰 绢录促 茄锅(50% 犬伏)
		switch( ch->nCurrentAction )
		{
		case ACTION_ATTACK_ONESWORD1:			//   5 茄颊傍拜 窜规
		case ACTION_ATTACK_ONESWORD2:			//   6 茄颊傍拜 2楷鸥
		case ACTION_ATTACK_BONG_DOWN:			//   7 豪, 帮豪,  傍拜( 剧颊 郴妨摹扁-赣府困俊辑 酒贰肺 )
		case ACTION_ATTACK_BONG_JJIRKI:			//   8 芒 傍 拜( 茄颊 骂福扁-绢柄 困俊辑 )
		case ACTION_ATTACK_BOW:					//   9 劝筋扁
		case ACTION_ATTACK_PENSING1:			//  11 咯磊:奇教傍拜 1 (辨霸 茄规 骂福扁)			巢磊:剧颊 困俊辑 措阿急栏肺 海扁
		case ACTION_ATTACK_PENSING2:			//  12 咯磊:奇教傍拜 2 (困俊辑 酒贰肺 郴妨 骂福扁)	巢磊:剧颊 辨霸 骂福扁
		case ACTION_THROW:						//  19 带瘤扁傍拜
		case ACTION_ATTACK_BONG_ROUND:			//  23 咯磊:豪,芒,帮豪 糠俊辑 戎滴福扁				巢磊:3楷鸥 骂福扁
			//if(rand()%2)	play_OnOff = FALSE;	//	50% 犬伏 利侩
			break;
		default:
			break;
		}
		
		if(play_OnOff)
		{
			int		wave_Real = (wave%1000);		//角力 荤款靛 锅龋
			int		conti = (wave%10000)/1000;		//霉锅掳 荤款靛 锅龋 捞饶 割锅掳鳖瘤
			//acer7
			if( conti )
				wave_Real = wave_Real + rand()%conti;	//角力 敲饭捞瞪 荤款靛 锅龋
			return wave_Real;
		}
	}
	return wave;
}	
///////////////////////////////////////////////////////////////////////////	
	
///////////////////////////////////////////////////////////////////////////	
int ReturnEffectAnimation( LPCHARACTER ch )		// LTS HORSERIDER ADD
{
	int effect;
	if (ch->HorseNo>0)
	{
		if (ch->animationType==ANIMATION_TYPE_MON1) effect=ch->AnimationTable[ ch->nCurrentAction].effect[ ch->nCurrentFrame];
		else effect=g_HorseRider.GetEffectWaveNo(ch);
	}
	else
	{
		effect=ch->AnimationTable[ ch->nCurrentAction].effect[ ch->nCurrentFrame];

    if (effect == 3)
    {
      int k =0;
    }
	}
	return effect;
}
	
int ReturnAttackWaveAnimation( LPCHARACTER ch )		// LTS HORSERIDER ADD
{	
	int wave;
	
	if (ch->HorseNo>0)
	{
		if (ch->animationType==ANIMATION_TYPE_MON1) wave=ch->AnimationTable[ ch->nCurrentAction].wave[ ch->nCurrentFrame];
		else wave=g_HorseRider.GetWaveNo(ch);
	}
	else
	{
		wave=ch->AnimationTable[ ch->nCurrentAction].wave[ ch->nCurrentFrame];
	}


	return wave;
}	
	
int ReturnAttackedWaveAnimation( LPCHARACTER ch )	// LTS HORSERIDER ADD
{	
	int wave;
	if (ch->HorseNo>0)
	{
		if (ch->animationType==ANIMATION_TYPE_MON1) wave=ch->AnimationTable[ ch->nCurrentAction].wave[ ch->nCurrentFrame];
		else wave=g_HorseRider.GetWaveNo(ch);
	}
	else
	{
		wave=ch->AnimationTable[ ch->nCurrentAction].wave[ ch->nCurrentFrame];
	}
	
	return wave;
}

LPCHARACTER  ReturnCharacterID( int id )
{
	LPCHARACTER lpcharacter = 	Hero;
	while( lpcharacter != NULL )
	{
		if( lpcharacter->id == id ) return lpcharacter;
		lpcharacter = lpcharacter->lpNext;
	}

	return NULL;
}
	
LPCHARACTER ReturnCharacterPoint( int id )
{	
	LPCHARACTER lpcharacter = Hero;
	while( lpcharacter != NULL )
	{
		if( lpcharacter->id == id ) return lpcharacter;
		lpcharacter = lpcharacter->lpNext;
	}
	
	return NULL;
}	

int PlusMovePDisTance( LPCHARACTER ch, int dx )
{	
	int ddx, rest;

	if( dx == 0 ) return 0;

	ddx = ch->movp * dx / 50;
	rest = ddx * 50 / dx;

	ch->restdx += abs( ch->movp - rest );
	
	if( ch->restdx >= ch->movp )  
	{
		ch->restdx -= ch->movp;
		ddx ++;
	}

	ch->ddx = ddx;
	return ddx;
}	

void ReturnCharMoveDistance( LPCHARACTER ch, int *dist )
{
	switch( ch->animationType )
	{	
		case ANIMATION_TYPE_TEST  : 
		case ANIMATION_TYPE_MAN   :
		case ANIMATION_TYPE_WOMAN : switch( ch->nCurrentAction )
									{
										case ACTION_BATTLE_WALK_TWOHAND	://傈捧叭扁 2 ( 剧颊俊 八 )
										case ACTION_BATTLE_WALK_OWNHAND	://傈捧叭扁	
										case ACTION_BASIC_WALK			://扁夯叭扁		
											if (ch->HorseNo)										// LTS HORSERIDER
											{
												*dist=g_HorseRider.GetDistance(ch);
											}
											else
											{
												*dist = ch->AnimationTable[ ch->nCurrentAction].dx[ ch->nCurrentFrame];
											}
											*dist = PlusMovePDisTance( ch, *dist );
											return;
										case ACTION_RUN					://顿扁	 : 把扁狼 1.5硅..
											if (ch->HorseNo)										// LTS HORSERIDER
											{
												*dist=g_HorseRider.GetDistance(ch)*150/100;
											}
											else
											{
												*dist = (ch->AnimationTable[ ch->nCurrentAction].dx[ ch->nCurrentFrame])*150/100;
											}
											*dist = PlusMovePDisTance( ch, *dist );
											return;
									}	
			break;					
										
		case ANIMATION_TYPE_MON1  : switch( ch->nCurrentAction )
									{
										case MON1_BATTLE_WALK	://傈捧叭扁
												*dist = ch->AnimationTable[ ch->nCurrentAction].dx[ ch->nCurrentFrame];
												*dist = PlusMovePDisTance( ch, *dist );
												return;
									}	
			break;
	}	
}		
		
int IsDead( LPCHARACTER ch )
{		
	if( ch == NULL ) return 1;
	if( ch == Hero ) 
	{	
		return (SCharacterData.nCharacterHP <= 0);
	}	
	else 
	{	
		return ( ch->hp <= 0 );
	}	
		
	return 0;
}		

bool IsAttackAble( LPCHARACTER pTarget )
{
	if(pTarget->type == SPRITETYPE_CHARACTER && pTarget->IsCounselor())
	{ // 皋矫瘤 免仿 鞘夸
		return false;
	}
	if( pTarget->viewtype == VIEWTYPE_GHOST_ )
	{
		return false;
	}
	return true;
}
		
void LoadLevelExpTable( void )
{		
	FILE  *fp;
	int		i;
	char    crc, crc1=0;

	fp = Fopen( "./data/levelexp.bin", "rb" ); // CSD-030306

	if( fp )
	{	
		fread( NPC_Lev_Ref, sizeof( NPCLev_to_Exp ), Num_Of_NPC_Lev, fp );
		fread( &crc, 1, 1, fp );
		fclose(fp);
		
		char *tt = (char *)NPC_Lev_Ref;
		for( i = 0 ; i  < sizeof( NPCLev_to_Exp )*Num_Of_NPC_Lev ; i ++)
		{	
			crc1 += *tt;
			*tt -=( 100 + i );
			tt ++;
		}
		if( CheckSumError == 0 ) 
		{
			CheckSumError = abs( crc1 - crc );
			if( CheckSumError ) JustMsg( "LevelUpTable Error" );
		}
	}	
}		

extern void SendAction(int i,int Direction);			// LTS ACTION 
void SendSmileFace( int smileno )
{
	t_packet p;
	
	p.h.header.type = CMD_SMILE_FACE;
	{
		p.u.client_smile_face.smileno = smileno;
	}
	p.h.header.size = sizeof( t_client_smile_face );

	/*//kyo
	switch(smileno)
	{
	case 1:
	case 6:
	case 7:
		{
			SendAction(ACTION_ANGER,Hero->direction);
		}break;
	case 0:
	case 4:
		{
			SendAction(ACTION_VICTORY,Hero->direction);
		}break;
	}
	*/

	QueuePacket( &p, 1 );

	Hero->smiledelay = 120;
	Hero->smileno = smileno;
}

 
void RecvSmileFace( int id, int smileno )
{	
	LPCHARACTER ch = ReturnCharacterPoint( id );
	if( ch == NULL ) return;

	if( smileno < 0 || smileno > 7 ) return;

	ch->smiledelay = 120;
	ch->smileno = smileno;
}





//-----------------------------------------------------------------------------------

/*

extern SystemInfo	system_info;

void PlaySoundWalkingWater( LPCHARACTER ch, int anino )
{
	int waveno;
	int vol;
	int left;

	if( ch == Hero )
	{
		waveno = ReturnAttackWaveAnimation( ch );
		if( waveno )
		{
			vol = system_info.sound;

			switch( anino )
			{
				case ACTION_BATTLE_WALK_OWNHAND	://傈捧叭扁
				case ACTION_BATTLE_WALK_TWOHAND	://傈捧叭扁 2 ( 剧颊俊 八 )
				case ACTION_BASIC_WALK			://扁夯叭扁

					waveno = 1144;


			// 促练幅( 奴仇 ) 
			// 促练幅(吝埃仇 )
			// 促练幅( 累篮仇 )
			// 措屈
			// 奴惯
			// 吝埃惯
			// 累篮惯

			case ACTION_RUN					://顿扁
					waveno = 1146;
			}

			// 顿扁 
			//檬家屈
			// 例兑芭覆
			// 扁绢皑
			// 蜡飞窍鞭
			// 浇贰烙 
		}

	
	}
	else
	{
		vol = system_info.sound / 2;


		switch( ch->sprno )
		{
			// 促练幅( 奴仇 ) 
			// 促练幅(吝埃仇 )
			// 促练幅( 累篮仇 )
			// 措屈
			// 奴惯
			// 吝埃惯
			// 累篮惯
			// 顿扁 
			//檬家屈
			// 例兑芭覆
			// 扁绢皑
			// 蜡飞窍鞭
			// 浇贰烙 
		}

	}


	SetVolumeOne( waveno, vol );


}





*/







⌨️ 快捷键说明

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