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

📄 nationsys.cpp

📁 DragonRaja Client source version 1.4+ this source allow players join in (Hades Warfield or Monsters
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	MemAlloc( SquadPicBuffer, sprfilelength );
	for( i = 0 ; i < 3 ; i ++)
	{			
		for( j = 0 ; j < 5 ; j ++)
		{				
			s = &SquadPic[i][j];
			fread( &size, 4,1, fp);
			if( size== 0 )	
			{				
				s->xl = 0;	
				s->yl = 0;	
				s->size = 0;
				s->img = NULL;
				continue;	
			}				
							
			fread( &(s->xl),	sizeof( short ), 1, fp);
			fread( &(s->yl),	sizeof( short ), 1, fp);
			//s->yl ++;		
			fread( &(s->ox),	sizeof( short ), 1, fp);
			fread( &(s->oy),	sizeof( short ), 1, fp);
			fread( &(s->size),sizeof( unsigned int ), 1, fp);
							
			if( nOff + s->size >= sprfilelength ) 
			{						
				JustMsg( lan->OutputMessage(6,51),FileName, i+1, j );
				ExitApplication(EA_LOAD_LOACL_SQUAD_SPR_DATA);
			}						
			fread( SquadPicBuffer + nOff, s->size, 1, fp);
			s->img = SquadPicBuffer + nOff;
							
			convert565to555_LoadSprite( s );
							
			nOff += size;		
		}		
	}			
	fclose(fp);	
	return sprfilelength;	
}

void DeleteSquadPic()
{
	MemFree( SquadPicBuffer );
}

// Global Function
bool InitNation()					
{
	if (!LoadSquadPic("./char/WarSquad.spr")) 
	{
		JustMsg( "./char/WarSquad.spr Error!!");
		return false;
	}


	if (!LoadLocalWarInfoPic("./data/LWInfo.dat")) 
	{
		JustMsg( "./data/LWInfo.dat Error!!");
		return false;	// LTS LOCALWAR
	}
	InitSitDownData();			// LTS SITDOWN BUG
	/*if (!LoadChairPic("./char/092000.spr")) 
	{
		JustMsg( "./char/092.spr 颇老俊 巩力啊 乐嚼聪促.");
		return false;				// LTS SITDOWN
	}*/
	g_pNation=new cNation;
	if (g_pNation==NULL) return false;

	g_pDontManager=new CDontManager;
	if (g_pDontManager==NULL)
		return false;
	else
		g_pDontManager->LoadData();
	return true;
}

void CloseNation()
{
	DeleteSquadPic();
	FreeLocalWarInfoPicBuffer();				// LTS LOCALWAR
	FreeChairPicBuffer();						// LTS SITDOWN
	SAFE_DELETE(g_pNation);
	SAFE_DELETE(g_pDontManager);
}

// Very often Call Function
int CheckNationStatus(int StatusNo)
{
	int WarfieldNo=-1;
	if (g_pNation->GetStatus(0)==StatusNo) WarfieldNo=0;
	if (g_pNation->GetStatus(1)==StatusNo) WarfieldNo=1;
	if (g_pNation->GetStatus(2)==StatusNo) WarfieldNo=2;
	if (g_pNation->GetNewStatus(0)==StatusNo) WarfieldNo=3;
	//< LTH-040226-KO 汲盔傈里磐 捞饶 傈里磐 惑怕 馆券. 1.4 器窃
	if (g_pNation->GetNewStatus(WI_HADES_WARFIELD) == StatusNo) WarfieldNo = WI_HADES_WARFIELD;
	//> LTH-040226-KO
    return WarfieldNo;
}

/**
 * @fn		CheckWarfieldStatus().
 * @brief	阿 傈里磐狼 惑怕甫 葛滴 炼荤窍咯 馆券.
 * @param	int nStatusNo. 炼荤 且 惑怕 蔼.
 * @param	BYTE aWarfieldStatus[WI_MAX_WARFIELD]. 阿 傈里磐狼 惑炔 馆券 厘家.
 * @return	void.
 */
//< LTH-040414-KO.
void CheckWarfieldStatus(int nStatusNo, BYTE aWarfieldStatus[WI_MAX_WARFIELD])
{
	// 檬扁拳
	eNEO_WARFIELD_ID eNeoWarfieldId = (eNEO_WARFIELD_ID)0;
	for (; eNeoWarfieldId < WI_MAX_WARFIELD; eNeoWarfieldId = (eNEO_WARFIELD_ID)(eNeoWarfieldId + 1))
		aWarfieldStatus[eNeoWarfieldId] = (BYTE)FALSE;

	if (g_pNation->GetStatus(WI_MOUNTAIN_WARFIELD) == nStatusNo) 
		aWarfieldStatus[WI_MOUNTAIN_WARFIELD] = (BYTE)TRUE;
	if (g_pNation->GetStatus(WI_PLAIN_WARFIELD) == nStatusNo) 
		aWarfieldStatus[WI_PLAIN_WARFIELD] = (BYTE)TRUE;
	if (g_pNation->GetStatus(WI_ISLAND_WARFIELD) == nStatusNo)
		aWarfieldStatus[WI_ISLAND_WARFIELD] = (BYTE)TRUE;
	if (g_pNation->GetNewStatus(WI_SNOWY_WARFIELD - 3) == nStatusNo)
		aWarfieldStatus[WI_SNOWY_WARFIELD] = (BYTE)TRUE;
	if (g_pNation->GetNewStatus(WI_HADES_WARFIELD) == nStatusNo)
		aWarfieldStatus[WI_HADES_WARFIELD] = (BYTE)TRUE;
}
//> LTH-040414-KO

bool isNationWarfieldServer()
{
	if (MapInfo[MapNumber].port==WARFIELD_PORT1 ||
		MapInfo[MapNumber].port==WARFIELD_PORT2 ||
		MapInfo[MapNumber].port==WARFIELD_PORT3	) return true;
	return false;
}

bool isNewWarfieldServer()
{
	int Port=MapInfo[MapNumber].port;
	if (Port<BASE_NEW_WARFIELD_PORT||Port>=(BASE_NEW_WARFIELD_PORT+MAX_NEW_WARFIELD))
		return false;
	return true;
}

//< LTH-040226-KO 1.4 汲盔 傈里磐 捞饶狼 脚痹傈里磐牢瘤 厚背窍绰 窃荐
BOOL IsNeoWarfieldServer()
{
	INT nPort = MapInfo[MapNumber].port;
	if ((nPort < WP_HADES_WARFIELD) || (nPort >= WP_MAX_WARFIELD_PORT))
		return FALSE;
	return TRUE;
}	//> LTH-040226-KO

// LTH-040207-KO  1.4 菩摹 捞饶 货肺款 傈里磐 锅龋牢啊?
BOOL IsNeoWarfield(INT nWarfieldNo)
{
	if ((WI_HADES_WARFIELD > nWarfieldNo) || (WI_MAX_WARFIELD <= nWarfieldNo))
		return FALSE;
	return TRUE;
}
//> LTH-040226-KO

bool isOurSquad(LPCHARACTER hero,LPCHARACTER ch)			// 011028 LTS
{
	if (!isNationWarfieldServer()&&!isNewWarfieldServer()) return true;

	if (hero->name_status.nation!=ch->name_status.nation)	//滴蜡历啊 促弗 唱扼捞搁 荤恩捞搁 
	{
		if (Hero->name_status.nation==NW_YL)	// 011019 LTS	// 林牢傍捞 老胶捞搁
		{
			if (ch->name_status.nation==NW_YL)	//措惑档 老胶捞搁 
			{
				if (hero->NWCharacter.YL_JoinNation==ch->NWCharacter.YL_JoinNation) return true; // 鞍篮 唱扼俊 炼牢沁促搁 快府何措
				else return false;	// 促弗唱扼俊 炼牢沁促搁 快府何措 酒丛
			}
			else	//林牢傍篮 老胶 措惑篮 老胶啊 酒聪促
			{
				if (hero->NWCharacter.YL_JoinNation==ch->name_status.nation) return true;   // Join茄 惫啊啊 鞍栏搁 鞍篮 祈
				else return false; // 炼牢茄 惫啊啊 促福搁 
			}
		}
		else	// Hero啊 老胶啊 捞聪促 
		{
			if (ch->name_status.nation==NW_YL)	//措惑捞 老胶捞搁 
			{
				if (Hero->name_status.nation==ch->NWCharacter.YL_JoinNation) return true;
				else return false;
			}
			else return false;	// 林牢傍档 措惑档 老胶啊 酒聪促. 
		}
	}
	else 
	{
		if (Hero->name_status.nation==NW_YL)	// 011019 LTS	// 林牢傍捞 老胶捞搁
		{
			if (ch->name_status.nation==NW_YL)	//措惑档 老胶捞搁 
			{
				if (hero->NWCharacter.YL_JoinNation==ch->NWCharacter.YL_JoinNation) return true; // 鞍篮 唱扼俊 炼牢沁促搁 快府何措
				else return false;	// 促弗唱扼俊 炼牢沁促搁 快府何措 酒丛
			}
			else	//林牢傍篮 老胶 措惑篮 老胶啊 酒聪促
			{
				if (hero->NWCharacter.YL_JoinNation==ch->name_status.nation) return true;   // Join茄 惫啊啊 鞍栏搁 鞍篮 祈
				else return false; // 炼牢茄 惫啊啊 促福搁 
			}
		}
		else return true;	// Hero啊 老胶啊 捞聪促 
	}
}


bool isAttacker()			// 傈里磐 甘俊辑父 啊瓷窍促.
{
	if (Hero->name_status.nation==NW_YL)
	{
		if (Hero->NWCharacter.YL_JoinNation==g_DefenceNation) return false;
		else return true;
	}
	if (Hero->name_status.nation==g_DefenceNation) return false;
	else return true;
}

bool isAttacker(LPCHARACTER ch)				// LTS DRAGON BUG
{
	if (ch->name_status.nation==NW_YL)
	{
		if (ch->NWCharacter.YL_JoinNation==g_DefenceNation) return false;
		else return true;
	}
	if (ch->name_status.nation==g_DefenceNation) return false;
	else return true;
}

bool isEnemy(LPCHARACTER ch1,LPCHARACTER ch2)	// LTS DRAGON BUG2
{
	if (isNewWarfieldServer())
	{
		int Nation1=ch1->name_status.nation;
		int Nation2=ch2->name_status.nation;
		if (Nation1==NW_YL)
			Nation1=ch1->NWCharacter.YL_JoinNation;
		if (Nation2==NW_YL)
			Nation2=ch2->NWCharacter.YL_JoinNation;

		if (Nation1==Nation2)
			return false;
		else
			return true;
	}
	else
	{
		if (isAttacker(ch1)==isAttacker(ch2)) return false;
		return true;
	}
}


int GetSquadNo()
{
	return Hero->NWCharacter.SquadNo;
}


void DrawSquadPic(int x,int y,LPORDERTABLE o,LPCHARACTER ch)	// 011019 LTS	// LTS HORSERIDER
{
	//if (!isNationWarfieldServer()) return;
	//if (!g_bWarBegin) return;
	if (ch->viewtype!=VIEWTYPE_TRANSPARENCY_&&ch->viewtype!=VIEWTYPE_GHOST_)	// 捧疙捞芭唱 磷绢乐绰仇篮 力寇 
	{
		int NationIndex=GetNationIndex(ch->name_status.nation);

		if (isNationWarfieldServer())
		{
			if (ch->NWCharacter.isCommander) PutCompressedImage(x,y,&SquadPic[NationIndex][4]);		// 荤飞包捞搁..
			else if (ch->NWCharacter.SquadNo) PutCompressedImage(x,y,&SquadPic[NationIndex][ch->NWCharacter.SquadNo-1]);	// 何措捞搁..
			else
			{
				if (ch->name_status.nation==NW_YL)
				{
					if (ch->NWCharacter.YL_JoinNation==NW_BY)		// 官捞侩捍捞搁....
					{
						PutCompressedImage(x,y,&SquadPic[0][0]);
					}
					if (ch->NWCharacter.YL_JoinNation==NW_ZY)	
					{
						PutCompressedImage(x,y,&SquadPic[1][0]);	// 磊捞 侩捍捞搁..
					}
				}
			}
		}
		if (isNewWarfieldServer())
		{
			if (g_bWarBegin)
			{
				int Nation=ch->name_status.nation;
				if (Nation==NW_YL) Nation=ch->NWCharacter.YL_JoinNation;
				switch(Nation)
				{
				case NW_BY : PutCompressedImage(x,y,&SquadPic[0][0]); break;
				case NW_ZY : PutCompressedImage(x,y,&SquadPic[1][0]); break;
				}
			}
		}
	}
}

void WarMenuOpen()	// 牢磐其捞胶 傈里包府家 皋春 坷锹 
{
	MP3(50);
	CallSmallMenu( MN_NATION_BATTLE_BBS );
}

void GetTime(DWORD RemainTime,WORD& Hour,WORD& Min,WORD& Sec)		// 011020 LTS
{
	DWORD temp;
	Hour=WORD(RemainTime / 3600);
	temp=DWORD(RemainTime % 3600);
	Min=WORD(temp / 60);
	Sec=WORD(temp % 60);
}

void ShowCommanderInfo()
{
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,151), FALSE); //"============= 荤飞包 皋矫瘤 ============="
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,152), FALSE); //"/*1 郴侩 : 荤飞包捞 何措厘俊霸 皋矫瘤甫 焊尘 锭"
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,153), FALSE); //"/*2 郴侩 : 荤飞包捞 何措 傈眉俊霸 皋矫瘤甫 焊尘 锭"
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,154), FALSE); //"/*3 郴侩 : 荤飞包捞 傈里磐 救俊 乐绰 磊惫刮俊霸 皋矫瘤甫 焊尘 锭"
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,155), FALSE); //"/*4 郴侩 : 荤飞包捞 磊惫刮 傈眉俊霸 皋矫瘤甫 焊尘 锭"
}			// 010924 LTS

void ShowSquadInfo()
{
	char Message[100];
	sprintf(Message,lan->OutputMessage(0,157),Hero->NWCharacter.SquadNo); //"寸脚篮 **[[力 %d 何措]]** 俊 家加蹬 乐嚼聪促."
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,156), FALSE); //"============== 何措   家加 =============="
	AddCurrentStatusMessage( 255,255,0, Message, FALSE);
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,158), FALSE); //"0 何措绰 酒公 何措俊档 家加蹬瘤 臼篮 巴阑 唱鸥忱聪促."
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,159), FALSE); //"============== 何措 皋矫瘤 =============="
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,160), FALSE); // "/*1 郴侩 : 何措厘捞 荤飞包俊霸 皋矫瘤甫 焊尘 锭"
	AddCurrentStatusMessage( 255,255,0, lan->OutputMessage(0,161), FALSE); //"/*  郴侩 : 何措盔捞 磊脚捞 家加等 何措盔俊霸 皋矫瘤甫 焊尘 锭"
}

void ReturnNationName(int Nation,char* Message)
{
	switch (Nation)
	{
	case 3 : sprintf(Message,lan->OutputMessage(0,205)); break; //"官捞辑胶"
	case 4 : sprintf(Message,lan->OutputMessage(0,206)); break; //"磊捞戚"
	case 6 : sprintf(Message,lan->OutputMessage(0,207)); break; //"老胶"
	}
}

void ReturnWarfieldName(int WarfieldNo,char* Message)
{
	switch (WarfieldNo)
	{
	case 0 : sprintf(Message,lan->OutputMessage(0,208)); break; //"魂吝傈里磐"

⌨️ 快捷键说明

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