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

📄 sealstone.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			SealStone[				nation].regentime  = 0;
			SealStone[	antination[nation]].regentime  = 0;

			SendEndOfReGenTime();
		}	
	}
}	
	
//	傈傈器绊啊 等第俊 ,葛电 搬拌籍捞 柄脸绰啊?
void CheckSealStoneStatus( void )
{		
	int nation, j;	
	static DWORD t;
		
	if( g_curr_time - t > 10 )
	{	
		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_;
			}	
		}		
	}	
}		
		
extern cNation* g_pNation;	// LTS LOCALWAR		
extern int g_LocalWarBegin;	// 011215 LTS
extern bool isNationManageServer();		// 011216 LTS

void SendSealStoneBlock( void )			// 011217 LTS
{	//< CSD-030723
	const int ret = ReturnNation2NationRelation(N_VYSEUS, N_ZYPERN);

	t_packet p;

	switch (ret)
	{												
	case NATION_RELATION_ENEMY_:
		{
			p.h.header.type = CMD_STEALSTONE_BREAKABLE;
			break;
		}
	case NATION_RELATION_FRIEND_:
		{
			CWarStartInfo* pWarStartInfo = g_pNation->GetWarStartInfo();

			if (pWarStartInfo != NULL)
			{
				if (pWarStartInfo->IsActive())
				{
					p.h.header.type = CMD_STEALSTONE_NON_BREAKABLE_PEACE;
				}
				else
				{
					p.h.header.type = CMD_STEALSTONE_NON_BREAKABLE;
				}
			}
			
			break;
		}
	default:	
		{
			return;
		}
	}					
	
	p.u.LocalWar.CommonDataC.Data=g_LocalWarBegin;
	p.h.header.size = sizeof(t_CommonDataC);
		
	SERVER_DATA *pData = g_pServerTable->GetOwnServerData();

	if( pData->wPort == NATION_MANAGE_SERVER )
	{	
		if (NULL != g_pNation)		// LTS NEW LOCALWAR
		{
			switch(p.h.header.type)
			{
			case CMD_STEALSTONE_BREAKABLE: 
				{
					g_pNation->SetLocalWarStatus2(1);
					break;
				}
			case CMD_STEALSTONE_NON_BREAKABLE:
			case CMD_STEALSTONE_NON_BREAKABLE_PEACE:
				{
					g_pNation->SetLocalWarStatus2(0);
					break;
				}
			}
			p.u.LocalWar.CommonDataC.Data = g_LocalWarBegin;
		}

		g_pUserManager->SendPacket(&p); // CSD-031213
		SealStoneBreakable = p.h.header.type;
		g_pServerTable->BroadCastToEveryServer((char*)&p, (sizeof(t_header) + p.h.header.size),  SERVER_TYPE_MAP);
	}
}	//> CSD-030723												

void CheckSealStoneBlock( void )
{	//< CSD-030804
	if (g_pServerTable == NULL)
	{
		return;
	}

	if (!isNationManageServer())
	{
		return;	// 011216 LTS			
	}

	if (!g_pNation)
	{
		return; // 011216 LTS
	}

	static DWORD t;
	static int oldh;
	static int nCount;
	
	if (g_curr_time	- t > 60 || oldh != g_hour) // LTS LOCALWAR
	{
		CWarStartInfo* pWarStartInfo = g_pNation->GetWarStartInfo();

		if (pWarStartInfo != NULL)
		{
			pWarStartInfo->Execute();
		}

		if (++nCount >= 10 || oldh != g_hour)
		{
			nCount = 0;
			SendSealStoneBlock();
		}

		t = g_curr_time;
		oldh = g_hour;
	}
}	//> CSD-030804
	
extern bool UpdateNationWarData();	// 010904 LTS // 傈里磐 甘狼 诀单捞飘 
extern void UpdateEventLocalWarTime();	// 020115 LTS
	
// 020620 YGI
void CheckNationWar( void )
{	
	UpdateNationWarData();  // 010904 LTS
	UpdateEventLocalWarTime();	// 020115 LTS
	if( g_MapPort != NATION_MANAGE_SERVER ) return;
	CheckSealStoneBlock();
	CheckSealStoneStatus();	
}	
	
//////////////////////////////////////////////////////////////////////////////
	
/******************************************************************************************************
扁 瓷 : 弥家狼 惫啊惑怕甫 汲沥茄促.  扁夯利栏肺 葛电惫啊绰 利措惫啊捞促.
牢 磊 : 绝澜
搬 苞 : 
*******************************************************************************************************/
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 )		// 011217 LTS
{	//< CSD-030723
	if( anation > MAX_NATION ) return 0;
	if( bnation > MAX_NATION ) return 0;
		
	t_NationRelation* ta = &NationRelation[anation][bnation];
	t_NationRelation* 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
	{	
		CWarStartInfo* pWarStartInfo = g_pNation->GetWarStartInfo();

		if (pWarStartInfo != NULL && pWarStartInfo->IsActive())
		{
			return NATION_RELATION_ENEMY_;
		}

		return NATION_RELATION_FRIEND_;
	}
	
	return ta->relation;
}	//> CSD-030723
	
int SetNation2NationRelation( int a_nation, int b_nation, int relation, int year, int yday, int hour, DWORD howlong )	// 011217 LTS
{	//< CSD-030723
	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_FRIEND_:
		{
			if (relation == NationRelation[a_nation][b_nation].relation)
			{
				return NATION_RELATION_SAME_FAIL_;
			}

			CWarStartInfo* pWarStartInfo = g_pNation->GetWarStartInfo();

			if (pWarStartInfo != NULL && pWarStartInfo->IsActive())
			{
				return NATION_RELATION_FAIL_;
			}

			break;
		}
	case NATION_RELATION_ENEMY_:
	case NATION_RELATION_MASTER_SERVANT_:
		{
			break;		
		}
	}					

	return NATION_RELATION_SUCCESS_;
}	//> CSD-030723
		
/********************************************************************************************白挤(甘挤)俊辑 荤侩窍绰 窃荐
扁	瓷 : 惫啊埃狼 包拌甫 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].dwAgentConnectionIndex )
			if( connections[i].server_check )
				QueuePacket( connections, i, &p, 1 );
}
	







⌨️ 快捷键说明

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