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

📄 sealstone.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		t = g_curr_time;
	}	
	else return;
		
	for( nation = N_VYSEUS ; nation <= N_ZYPERN ; nation ++ )
	{			
		if( SealStone[ nation].warlefttime ) // 傈里急器甫 茄惑怕俊辑 .
		{		
			for( j = 0 ; j < MAX_SEALSTONE_NATION_ ; j ++)
			{	
				if( SealStone[ antination[ nation]].status[ j] ) break;
			}	
			if( j == MAX_SEALSTONE_NATION_ ) // 惑措规狼 搬拌籍捞 葛滴 何寂脸促搁.
			{	
				// 铰府...
				SendResultNationWar( SSR_VICTORY, nation, SSR_FAIL, antination[ nation]  );

				SealStone[				nation].warlefttime	= 0;
				SealStone[	antination[nation]].warlefttime	= 0;
				SealStone[				nation].waraftertime = g_curr_time + SEALSTONE_WAR_AFTERTIME_;
				SealStone[	antination[nation]].waraftertime = g_curr_time + SEALSTONE_WAR_AFTERTIME_;
			}	
		}		
	}	
}		
		
		
void SendSealStoneBlock( void )
{										
	t_packet p;						
	int i;						
	int ret;					
						
	ret = ReturnNation2NationRelation( N_VYSEUS, N_ZYPERN );
								
	switch( ret )					
	{												
		// 利惫啊..							
	case NATION_RELATION_ENEMY_ :	p.h.header.type = CMD_STEALSTONE_BREAKABLE;
									
								
		break;							
		// 悼竿包拌俊辑绰 甘阑 刚绢哎荐 绝促. 
	case NATION_RELATION_FRIEND_:	if( g_hour >= 22 || g_hour < 2 ) p.h.header.type = CMD_STEALSTONE_NON_BREAKABLE_PEACE;
									else p.h.header.type = CMD_STEALSTONE_NON_BREAKABLE;
		break;								
													
	default :	return;				
	}													
											
	p.h.header.size = 0;									
											
	for(i = 0; i < LOGIN_MAX_CONNECTIONS; ++ i)
			if( connections[i].server_check )					
				QueuePacket( connections, i, &p, 1 );
}											
											
										
// 20盒付促.. 谎妨霖促.					
void CheckSealStoneBlock( void )		
{								
	static DWORD t;				
	static int   oldh;						
					
	if( g_curr_time	- t > 20*60 || oldh != g_hour )
	{									
		t = g_curr_time;			
		oldh = g_hour;	
	}							
	else return;			
								
	SendSealStoneBlock();				
}				
 		
		
void CheckNationWar( void )
{		
	CheckSealStoneBlock();

	//CheckReGenTime();		
	CheckSealStoneStatus();	
	//CheckWarLeftTime();		
}		

//////////////////////////////////////////////////////////////////////////////

/******************************************************************************************************
扁 瓷 : 弥家狼 惫啊惑怕甫 汲沥茄促.  扁夯利栏肺 葛电惫啊绰 利措惫啊捞促.
牢 磊 : 绝澜
搬 苞 : 
*******************************************************************************************************/
int InitNationRelation( void )
{
	int i,j;

	for( i = 0 ; i < MAX_NATION_ ; i ++)
	{
		for( j = 0 ; j < MAX_NATION_ ; j ++)
		{
			if( i == j ) NationRelation[i][j].relation = NATION_RELATION_NO_; 
			else NationRelation[i][j].relation = NATION_RELATION_ENEMY_;
		}
	}

	return 1;
}				
				
				
/******************************************************************************************************
扁	瓷 : 泅犁 惫啊埃狼 包拌甫 府畔茄促. 
牢	磊 : int a_nation, b_nation : 包拌甫 汲沥且 惫啊 ( 惫啊内靛,  3: 官捞辑胶, 4:磊捞戚 ... )
			
搬	苞 : 0 : 公包拌    1: 利措包拌     2: 蛆仿包拌    3: 林辆包拌( a:林 b:辆)
*******************************************************************************************************/
int ReturnNation2NationRelation( int anation, int bnation )
{		
	if( anation > MAX_NATION_ ) return 0;
	if( bnation > MAX_NATION_ ) return 0;
		
	t_NationRelation *ta, *tb;
	ta = &NationRelation[anation][bnation];
	tb = &NationRelation[bnation][anation];
		
	if( ta->year &&
	  ( (double)ta->year* 365*24*60*60 +	(double)ta->yday* 24*60*60 +	(double)ta->hour* 60*60 +	ta->howlong <
		(double)g_year	* 365*24*60*60 +	(double)g_yday	* 24*60*60 +	(double)g_hour	* 60*60 ) )	
	{	
		ta->relation = ta->oldrelation;
		tb->relation = tb->oldrelation;
		tb->year = 0;
		ta->year = 0;
	}	
	else
	{	
		if( g_hour >= 22 || g_hour < 2 ) 
		{			
			return	ta->relation;
		}			
		else
		{	
			return NATION_RELATION_FRIEND_;
		}	
	}		
				
	return ta->relation;
}		
		
		
int SetNation2NationRelation( int a_nation, int b_nation, int relation, int year, int yday, int hour, DWORD howlong )
{		
	if( a_nation > MAX_NATION_ ) return NATION_RELATION_FAIL_NO_NATION_;
	if( b_nation > MAX_NATION_ ) return NATION_RELATION_FAIL_NO_NATION_;
		
	switch( relation )
	{	
		case NATION_RELATION_ENEMY_			:	
			break;		
		
		case NATION_RELATION_FRIEND_		:	
					if( relation == NationRelation[a_nation][b_nation].relation )
					{
						return NATION_RELATION_SAME_FAIL_;
					}
					if( g_hour >= 22 || g_hour < 2 )	// 泅犁绰 傈里吝捞扁 锭巩俊 捞矫埃俊绰 惫备埃 包拌甫 汲沥且荐 绝促. 
					{
						return NATION_RELATION_FAIL_;
					}	
			break;		
		case NATION_RELATION_MASTER_SERVANT_:
			break;		
	}					
						
	t_NationRelation *t;
	t = &NationRelation[a_nation][b_nation];
					
	t->oldrelation	= t->relation;
	t->relation		= relation; 
	t->year			= year; 
	t->yday			= yday;	
	t->hour			= hour; 
	t->howlong		= howlong; 
						
	t = &NationRelation[b_nation][a_nation];
	t->oldrelation	= t->relation;
	t->relation		= relation; 
	t->year			= year; 
	t->yday			= yday;	
	t->hour			= hour;	
	t->howlong		= howlong; 
						
	return NATION_RELATION_SUCCESS_;
}


/********************************************************************************************白挤(甘挤)俊辑 荤侩窍绰 窃荐
扁	瓷 :	惫啊埃狼 包拌甫 Loginserver肺 焊郴 霸烙辑滚俊 焊郴绢 葛电 霸烙挤(甘挤)捞 舅霸 茄促. 
			
牢	磊 : int a_nation, b_nation : 包拌甫 汲沥且 惫啊 ( 惫啊内靛,  3: 官捞辑胶, 4:磊捞戚 ... )
		int relation           : 0 : 公包拌    1: 利措包拌     2: 蛆仿包拌    3: 林辆包拌( a:林 b:辆)
		DWORD relationstart		:	割檬第俊 矫累且巴牢啊
		DWORD relationhowlong	:	割檬悼救 蜡瘤瞪巴牢啊? ( 0捞搁 公茄 )
			
搬	苞 : LoginServer俊 焊郴瘤搁, 促矫 霸烙挤(甘挤)栏肺 焊郴瘤哥, 促矫 Client鳖瘤 搬苞甫 焊郴林霸 等促. 
*******************************************************************************************************/
int SendNation2NationRelation( int a_nation, int b_nation, int relation, int year = 0, int yday = 0, int hour = 0, DWORD howlong = 0 )
{			
	t_packet p;
			
	if( relation == NATION_RELATION_FRIEND_ )
	{		
		if( year == 0 ) // 惫啊埃狼 1老埃狼 绒傈阑 茄促. 
		{	
			year = g_year;
			yday = g_yday;
			hour = g_hour;

			int shour = 24 - g_hour + 2;
			int smin  = 60 - g_min;
			
			howlong = 60*60*shour + smin * 60;
		}	
	}		
			
	p.h.header.type = CMD_NATION2NATION_RELATION;
	p.h.header.size = sizeof( t_nation2nation_relation );
			
		p.u.nation2nation_relation.a		= a_nation;
		p.u.nation2nation_relation.b		= b_nation;
		p.u.nation2nation_relation.relation = relation;
		p.u.nation2nation_relation.year		= year;
		p.u.nation2nation_relation.yday		= yday;
		p.u.nation2nation_relation.hour		= hour;
		p.u.nation2nation_relation.howlong	= howlong;
			
	QueuePacket( connections, LOGIN_SERVER_CONNECT, &p, 1 );

	return 1;
}			
			
/********************************************************************************************白挤(甘挤)俊辑 荤侩窍绰 窃荐
扁	瓷 : 惫啊埃狼 包拌甫 Loginserver肺 焊郴 霸烙辑滚俊 焊郴绢 葛电 霸烙挤(甘挤)捞 舅霸 茄促. 
		  
牢	磊 : int a_nation, b_nation : 包拌甫 汲沥且 惫啊 ( 惫啊内靛,  3: 官捞辑胶, 4:磊捞戚 ... )
		int relation           : 0 : 公包拌    1: 利措包拌     2: 蛆仿包拌    3: 林辆包拌( a:林 b:辆)
		DWORD relationstart		:	割檬第俊 矫累且巴牢啊
		DWORD relationhowlong	:	割檬悼救 蜡瘤瞪巴牢啊? ( 0捞搁 公茄 )

搬	苞 : LoginServer俊 焊郴瘤搁, 促矫 霸烙挤(甘挤)栏肺 焊郴瘤哥, 促矫 Client鳖瘤 搬苞甫 焊郴林霸 等促. 
*******************************************************************************************************/
void RecvNation2NationRelation( int cn, t_nation2nation_relation *tp )
{										
	t_packet p;
	int i;
	int ret;

	ret = SetNation2NationRelation( tp->a, tp->b, tp->relation, tp->year, tp->yday, tp->hour, tp->howlong );

	p.h.header.type = CMD_NATION2NATION_RELATION_RESULT;
	p.h.header.size = sizeof( t_nation2nation_relation_result );
			
	p.u.nation2nation_relation_result.why = ret;
			
	for( i = 0 ; i < LOGIN_MAX_CONNECTIONS ; i ++)
			if( connections[i].server_check )
				QueuePacket( connections, i, &p, 1 );
}
	







⌨️ 快捷键说明

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