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

📄 skill_lsw.cpp

📁 DragonRaja Client source version 1.4+ this source allow players join in (Hades Warfield or Monsters
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	char buf[1024];
	FILE *fp ;
	char	filename[MAX_FILENAME],filenameBin[MAX_FILENAME];
	sprintf(filename, ".\\data\\CombatSkillExplain.txt");
	sprintf(filenameBin, ".\\data\\CombatSkillExplain.bin");

#ifdef _DEBUG	// 031110 YGI
	if( fp= Fopen(filename, "rt") )
	{
		int i=0;
		while( !feof(fp) )
		{
			fgets(buf, 1023, fp);
			if( *buf == ';' ) continue;
			if(i> MAX_COMBAT_SKILL_EXPLAIN-1 ) break;
				ReadCombatSkillExplain(buf, i);
			i++;
		}
		fclose(fp);

		if(fp=Fopen( filenameBin, "wb" ) )
		{
			fwrite( CombatSkillExplain, sizeof(t_CombatSkillExplain)*MAX_COMBAT_SKILL_EXPLAIN, 1, fp);
			fclose(fp);
		}
	 }
	else
#endif
	{
		if(fp=Fopen( filenameBin, "rb" ) )
		{
			fread( CombatSkillExplain, sizeof(t_CombatSkillExplain)*MAX_COMBAT_SKILL_EXPLAIN, 1, fp);
			fclose(fp);
		}
		else return 0;
	}
	return 1;
}


inline void ReadCombatSkillGroupExplain(char * buf,int i)
{
	char *token;

	token = strtok(buf, "\t\n\r");	if( token == NULL ) return;
	const int iIndex = CombatSkillGroupExplain[i].iNo				= atoi(token);	
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iGroupNo		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iGroupNo		= atoi(token);	

	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;
	memcpy(CombatSkillGroupExplain[iIndex].EngName	,token,30);
	EatRearWhiteChar( CombatSkillGroupExplain[iIndex].EngName);
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;
	memcpy(CombatSkillGroupExplain[iIndex].LocalName,token,	30);
	EatRearWhiteChar( CombatSkillGroupExplain[iIndex].LocalName);

	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[0]		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[1]		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[2]		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[3]		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[4]		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;CombatSkillGroupExplain[iIndex].iSkillId[5]		= atoi(token);	

	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;
	memcpy(CombatSkillGroupExplain[iIndex].Explain,token,	100);
	EatRearWhiteChar( CombatSkillGroupExplain[iIndex].Explain);
	ConvertSpecialWord(CombatSkillGroupExplain[iIndex].Explain,"\n",'\n');
	ConvertSpecialWord(CombatSkillGroupExplain[iIndex].Explain,"\t",'\t');
	ConvertSpecialWord(CombatSkillGroupExplain[iIndex].Explain,"\r",'\r');
	
	return;
}

bool LoadCombatSkillGroupExplain()
{
	char buf[1024];
	FILE *fp ;
	char	filename[MAX_FILENAME],filenameBin[MAX_FILENAME];
	sprintf(filename, ".\\data\\CombatSkillGroupExplain.txt");
	sprintf(filenameBin, ".\\data\\CombatSkillGroupExplain.bin");
	
#ifdef _DEBUG	//< BBD 031214	咆胶飘绰 叼滚弊葛靛父 佬磊
	if( fp= Fopen(filename, "rt") )
	{
		int i=0;
		while( !feof(fp) )
		{
			fgets(buf, 1023, fp);
			if( *buf == ';' ) continue;
			if(i> MAX_COMBAT_SKILL_GROUP_EXPLAIN-1 ) break;
				ReadCombatSkillGroupExplain(buf, i);
			i++;
		}
		fclose(fp);

		if(fp=Fopen( filenameBin, "wb" ) )
		{
			fwrite( CombatSkillGroupExplain, sizeof(t_CombatSkillGroupExplain)*MAX_COMBAT_SKILL_GROUP_EXPLAIN, 1, fp);
			fclose(fp);
		}
	 }
	else
#endif	//> BBD 031214	咆胶飘绰 叼滚弊葛靛父 佬磊
	{
		if(fp=Fopen( filenameBin, "rb" ) )
		{
			fread( CombatSkillGroupExplain, sizeof(t_CombatSkillGroupExplain)*MAX_COMBAT_SKILL_GROUP_EXPLAIN, 1, fp);
			fclose(fp);
		}
		else return 0;
	}
	return 1;
}

void DrawRareExplain(const int iExplainX, const int iExplainY, const int iRareIndex, const int iRareType)
{
	int iCount = 0;
	const int iLineGab = 24;
	const int trans = 20;
	const int iWidth = 130;

	Spr *back_spr = GetSprOfMenu( MAIN_ETC, 55 );
	SetHangulAlign( TA_LEFT);

	char *txt;
	
	switch(iRareType)
	{
	case 0:
		{
			txt = ItemRare[iRareIndex].Explain;
		}break;
	case 2:
	case 3:
	case 4:
		{
			txt = ItemFunction[iRareIndex].Exp;
		}break;
	default:
		{
			return;
		}break;
	}
	
	const int line	= GetLineRectTextPut( iWidth,txt );

	for( int i = 0; i<line; i++ )
	{
		FieldTypeNomalPutFx( iExplainX, iExplainY+iLineGab*(iCount+i), 0,0, 71, 10, 1 );
	}

	Hcolor( FONT_COLOR_YELLOW );
	RectTextPut(iExplainX+8,iExplainY+8,iWidth,txt); 
}

void DrawCombatSkillExplain(const int iExplainX, const int iExplainY, const int iCSIndex)
{
	SetHangulAlign(TA_LEFT);
	const int iWidth = TXT_BG_NORMAL_WIDTH;
	const int iCSkillIndex = CombatSkill[iCSIndex].iSkillNo;
	
	int iCount = 0;
	int iReultLineCount = 0;
	
	int iBlankGab = 0;
	int iReultBlankSize = 0;
	
	const int iLineGab = TxtOut.GetLineGab();
	const int iBlankGabSize = TxtOut.GetBlankGabSize();
	
	LPCombatSkillExplain pCSE  = &CombatSkillExplain[iCSkillIndex];

	//庆歹弊覆
	TxtOut.Init(COLOR_BLACK,TXT_BG_NORMAL_WIDTH);
	TxtOut.PutTextHeaderBGImg(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth);

	//傈捧胶懦 捞抚
	Hcolor(FONT_COLOR_RARE_MAIN);
	iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,411),pCSE->LocalName);
	iCount += iReultLineCount;

	iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
	iBlankGab+=iReultBlankSize;

	//Class 臂磊 + //努贰胶 汲疙 捞抚
	Hcolor(FONT_COLOR_BLIGHT_GREEN2);
	iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,421),pCSE->ClassName);
	Hcolor(FONT_COLOR_RARE_MAIN);
	RectTextPut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,lan->OutputMessage(0,420));
	iCount += iReultLineCount;

	//琶平 汲疙 捞抚
	Hcolor(FONT_COLOR_BLIGHT_GREEN2);
	iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,lan->OutputMessage(0,417),pCSE->WeaponTactic);
	iCount += iReultLineCount;
	
	iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
	iBlankGab+=iReultBlankSize;

	//弊成 汲疙
	Hcolor(FONT_COLOR_WHITE);
	iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,pCSE->Explain);
	iCount += iReultLineCount;

	iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
	iBlankGab+=iReultBlankSize;

	if(1)//努贰胶 硅快扁 啊瓷 窍搁
	{	//How To Use
	//	Hcolor(FONT_COLOR_RARE_MAIN);
		Hcolor(FONT_COLOR_BLIGHT_ORANGE);
		iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,418));
		iCount += iReultLineCount;
		//荤侩规过
		Hcolor(FONT_COLOR_BLIGHT_ORANGE);
		iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,pCSE->Use);
		iCount += iReultLineCount;
		
		iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
		iBlankGab+=iReultBlankSize;

		const int iSkillLv = SCharacterData.SkillId[iCSkillIndex];
	
		Hcolor(FONT_COLOR_RARE_MAIN);
		if(iSkillLv)//
		{
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,412),iSkillLv);
			iCount += iReultLineCount;	
			Hcolor(FONT_COLOR_RARE_MAIN);
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,lan->OutputMessage(0,413),pCSE->iLvCp[iSkillLv-1]);
			iCount += iReultLineCount;
			//硅奎阑锭 饭骇俊 蝶弗 扁瓷
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,pCSE->MicroExplain[iSkillLv-1]);//Micro explain//硅凯捞扁 锭巩俊 iSkillLv+1 秦 霖促
			iCount += iReultLineCount;
			
			iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
			iBlankGab+=iReultBlankSize;
		}
		else//酒流 救 硅奎阑锭
		{
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,414));
			iCount += iReultLineCount;
				
			iReultBlankSize = TxtOut.RcBlankOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,1);
			iBlankGab+=iReultBlankSize;
		}

		if(3 > iSkillLv)//促澜 饭骇 包访 沥焊//促澜饭骇捞 3焊促 累绊 0 焊促 目具 茄促// 恐衬 . 促澜 饭骇 捞聪鳖
		{
			//Next Lv
			Hcolor(FONT_COLOR_SOLID_RED);
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,415),iSkillLv+1);//Next Level
			iCount += iReultLineCount;

			//Need Lv
			Hcolor(FONT_COLOR_SOLID_RED);
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,lan->OutputMessage(0,416),pCSE->iNeedLv[iSkillLv]);//Require 
			iCount += iReultLineCount;

			if((iSkillLv+1) > SCharacterData.SkillId[iCSkillIndex])
			Hcolor(FONT_COLOR_SOLID_RED);
			iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,8,pCSE->MicroExplain[iSkillLv]);//Micro explain
			iCount += iReultLineCount;

		}
	}
	else //努贰胶 促福霸
	{
		Hcolor(FONT_COLOR_RED);
		iReultLineCount = TxtOut.RcTXTOut(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth,0,lan->OutputMessage(0,422));
		iCount += iReultLineCount;
	}
	//部府弊覆
	TxtOut.PutTextTailBGImg(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth);
}

void DrawCombatSkillGroupExplain(const int iExplainX, const int iExplainY, const int iGroupNo, const int iGroupType)
{
	SetHangulAlign(TA_LEFT);
	const int iWidth = TXT_BG_SHORT_WIDTH;
	int iIndex = (iGroupNo-1)*2 +(iGroupType);
	int iCount = 0;
	const int iLineGab = TxtOut.GetLineGab();
	int iReultLineCount = 0;
	int iBlankGab = 0;
	const int iBlankGabSize = 3;

	LPCombatSkillGroupExplain pCSGE  = &CombatSkillGroupExplain[iIndex];

	//庆歹弊覆
	TxtOut.Init(COLOR_BLACK,TXT_BG_SHORT_WIDTH);
	TxtOut.PutTextHeaderBGImg(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth);

	Hcolor(FONT_COLOR_GREEN);
	iReultLineCount = TxtOut.RcTXTOut( iExplainX, iExplainY+iLineGab*iCount,iWidth,0, "< %s >", pCSGE->LocalName);  //临埃拜篮 15捞促
	iCount+=iReultLineCount;

	Hcolor(FONT_COLOR_WHITE);
	iReultLineCount = TxtOut.RcTXTOut( iExplainX, iExplainY+iLineGab*iCount, iWidth,0, pCSGE->Explain);
	iCount+=iReultLineCount;

	//庆歹弊覆
	TxtOut.PutTextTailBGImg(iExplainX,iExplainY+iBlankGab+iLineGab*iCount,iWidth);
}

inline void ReadFunctionGroup(char * buf,int i)
{
	char *token;

	token = strtok(buf, "\t\n\r");	if( token == NULL ) return;const int iIndex = RareGroup[1][i].no	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(RareGroup[1][iIndex].name		,token,39);
	EatRearWhiteChar( RareGroup[1][iIndex].name );
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[0].rare,token,	39);
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[0].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[0].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[0].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[1].rare	,token,	39);
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[1].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;RareGroup[1][iIndex].rareset[1].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[1].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[2].rare	,token,	39);
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[2].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[2].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[2].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(RareGroup[1][iIndex].rareset[3].rare	,token,	39);		
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[3].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[3].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[3].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[4].rare	,token,	39);	
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[4].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[4].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;RareGroup[1][iIndex].rareset[4].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[5].rare	,token,	39);	
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[5].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[5].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[5].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[6].rare	,token,	39);	
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[6].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;RareGroup[1][iIndex].rareset[6].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[6].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].rareset[7].rare	,token,	39);	
	EatRearWhiteChar( RareGroup[1][iIndex].rareset[7].rare);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[7].rare_num		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].rareset[7].rare_rate	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(RareGroup[1][iIndex].group_buffer_1	,token,	39);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].group_buffer_2	,token,	39);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;memcpy(RareGroup[1][iIndex].group_buffer_3	,token,	39);
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_4		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_5		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;RareGroup[1][iIndex].group_buffer_6		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_7		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_8		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_9		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;RareGroup[1][iIndex].group_buffer_10	= atoi(token);	
 
	return;
}

void RareGroupSet()
{
	int i1 = 1,i2 = 1,	i3 = 1,	i4 = 1;
	for (;i1 < MAX_RARE_GROUP;i1++)
	{
		const int iGroupSet = RareGroup[1][i1].group_buffer_10;
		switch(iGroupSet)
		{
		case 2:
			{
				RareGroup[iGroupSet][i2] = RareGroup[1][i1];
				i2

⌨️ 快捷键说明

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