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

📄 skill_lsw.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					{
						if(DIVIDE_ITEM == rit2->GetRButton()){r2count += Item.attr[IATTR_MUCH];}
						else{r2count++;}
					}
				}
				if( rit3 )
				{
					if(ino3 == Item.item_no)
					{
						if(DIVIDE_ITEM==rit3->GetRButton()){r3count += Item.attr[IATTR_MUCH];}
						else{r3count++;}
					}
				}
				if( rit4 )
				{
					if(ino4 == Item.item_no)
					{
						if(DIVIDE_ITEM==rit4->GetRButton()){r4count += Item.attr[IATTR_MUCH];}
						else{r4count++;}
					}
				}
			}
		}
	}
	return 0;
}

void RecvCMD_ADD_EFFECT(t_packet *p)
{
	const	WORD	wEffectNo		=p->u.AddEffect.wEffectNo;	// 荤侩等 付过狼 锅龋
	const	WORD	idTarget		=p->u.AddEffect.idTarget;	// 付过阑 荤侩茄 措惑磊
	const	DWORD	dwDuration		=p->u.AddEffect.wDuration*1000;	// 蜡瘤矫埃
	LPCHARACTER	ch = ReturnCharacterPoint(idTarget);
	if(ch)
	{
		InsertMagic(ch,ch,wEffectNo,0,ch->x,ch->y,ch->x,ch->y,0,0,0,g_ClientTime+dwDuration);
	}
}

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

	token = strtok(buf, "\t\n\r");	if( token == NULL ) return; const int iIndex = ItemFunction[i].iNo			= atoi(token);	
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(ItemFunction[iIndex].Name		,token,39);
	EatRearWhiteChar( ItemFunction[iIndex].Name );
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(ItemFunction[iIndex].NameAdd	,token,39);
	EatRearWhiteChar( ItemFunction[iIndex].NameAdd );

	token = strtok(NULL,"\t\n\r");	if( token == NULL ) return;memcpy(ItemFunction[iIndex].Exp		,token,49);
	EatRearWhiteChar( ItemFunction[iIndex].Exp );
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iExpMark	= atoi(token);	//020530 lsw
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iEffectNo	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iUpgradeAble	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iScrollNo	= atoi(token);	
	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iMakeRand[0]	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iMakeRand[1]	= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iMakeRand[2]	= atoi(token);	
	
	for(int x = 0; x<17;x++)
	{
		token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].GRADE[x]	= atoi(token);	
	}
	
	for(int y = 0; y<17;y++)
	{
		token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iTime[y]	= atoi(token);	
	}

	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iBuffer1		= atoi(token);	
	token = strtok(NULL,"\t\n\r");	if( token == NULL )	return;ItemFunction[iIndex].iBuffer2		= atoi(token);	

	return;
}

bool LoadItemFunctionTable()
{
	char buf[1024];
	FILE *fp ;
	char	filename[MAX_FILENAME],filenameBin[MAX_FILENAME];
	sprintf(filename, ".\\itemtable\\ItemFunction.txt");
	sprintf(filenameBin, ".\\itemtable\\ItemFunction.bin");
	if( fp= Fopen(filename, "rt") )
	{
		int i=0;
		while( !feof(fp) )
		{
			fgets(buf, 1023, fp);
			if( *buf == ';' ) continue;
			if(i> MAX_ITEM_FUNCTION-1 ) break;
				ReadItemFunctionTable(buf, i);
			i++;
		}
		fclose(fp);

		if(fp=Fopen( filenameBin, "wb" ) )
		{
			fwrite( ItemFunction, sizeof(t_ItemFunction)*MAX_ITEM_FUNCTION, 1, fp);
			fclose(fp);
		}
	 }
	else
	{
		if(fp=Fopen( filenameBin, "rb" ) )
		{
			fread( ItemFunction, sizeof(t_ItemFunction)*MAX_ITEM_FUNCTION, 1, fp);
			fclose(fp);
		}
		else return 0;
	}
	return 1;
}

bool CanViewGhost(CHARACTER *ch)
{
	if(ch->bCanViewGhost)
	{
		if( g_ClientTimeNoGap < ch->dwCanViewGhostTime)
		{
			return true;	
		}
	}
	return false;
}

bool	CanViewMagicTrap(CHARACTER *ch)
{
	if(ch->bCanViewMagicTrap)
	{
		if( g_ClientTimeNoGap < ch->dwCanViewMagicTrapTime )
		{
			return true;	
		}
	}
	return false;
}

bool	CanViewTrap(CHARACTER *ch)
{
	if(ch->bCanViewTrap)
	{
		if( g_ClientTimeNoGap < ch->dwCanViewTrapTime )
		{
			return true;
		}
	}
	return false;
}

bool	CanViewBomb(CHARACTER *ch)//Trap 0
{
	if( ch->bCanViewBomb )
	{
		if( g_ClientTimeNoGap < ch->dwCanViewBombTime)
		{
			return true;
		}
	}
	return false;
}

void InitHeroCanView()
{
	Hero->bCanViewGhost			= 0;
	Hero->bCanViewMagicTrap		= 0;
	Hero->bCanViewBomb			= 0;
	Hero->bCanViewTrap			= 0;
}

//堡盔 悸泼 窍绰 窃荐 
void SetDayLight(const short int nValue)
{
	DayLightControl = nValue;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////// 傈捧 胶懦
/////////////////////////////////////////////////////// 傈捧 胶懦 Point

int GetCombatSkillIndexStart(const int iGroupNo,const int iGroupType)
{
	return (iGroupNo-1)*12 +(iGroupType-1)*6 +1;
}

int SkillIdToCombatSkillIconImage(const int iSkilNo,const bool bIsMain)
{
	if(!bIsMain)
	{
		return (iSkilNo-iCSCovertSkillID);//i绰 胶懦 逞滚绊 iCSCovertSkillID锅 何磐 矫累捞聪鳖 iCSCovertSkillID甫 力寇茄促 捞固瘤 弓篮芭俊 36 锅何磐 货肺款芭扼辑 +35 茄促
	}
	
	return (iSkilNo-iCSCovertSkillID)+36;//i绰 胶懦 逞滚绊 iCSCovertSkillID锅 何磐 矫累捞聪鳖 iCSCovertSkillID甫 力寇茄促
}

int GetKnowCSGroupType(const int iGroupNo)//弊缝逞滚甫 啊瘤绊 唱狼 弊缝鸥涝阑 馆券茄促. 弊缝捞 酒公巴档 绝栏搁 0阑 馆券
{
	switch(iGroupNo)
	{
		case 1:		case 2:		case 3:
			break;
		default:
			JustMsg("GetKnowCSGroupType俊 弊缝蔼捞 捞惑钦聪促");
			break;
	}
	const int iGroup1Start	= iCSCovertSkillID+(iGroupNo-1)*12;//1锅 弊缝何磐 矫累窍聪鳖
	const int iGroup1End	= iGroup1Start+5;	
	const int iGroup2Start	= iGroup1End+1;	
	const int iGroup2End	= iGroup2Start +5;	
	int iGroupTypeSum1 = 0, iGroupTypeSum2 =0 ,i = 0;
	
	for(i = iGroup1Start; i <=iGroup1End; i++)
	{
		iGroupTypeSum1 += SCharacterData.SkillId[i];
	}
	for(i = iGroup2Start; i <=iGroup2End; i++)
	{
		iGroupTypeSum2 += SCharacterData.SkillId[i];
	}

	if( iGroupTypeSum1 > iGroupTypeSum2)
	{
		return 1;
	}
	if( iGroupTypeSum2 > iGroupTypeSum1)
	{
		return 2;
	}
	return 0;
}

void SetCSPButtonType(const int iSelectedGroupButton)//困俊 3俺 乐绰 弊缝 滚瓢阑 穿福绰芭 弊 滚瓢狼 nWillDo 蔼捞 滚瓢捞 啊柳 弊缝 蔼捞促
{//何弗 弊缝阑 啊瘤绊 郴啊 捞 弊缝鸥涝阑 急琶 秦具 窍绰啊?, 捞固 硅况辑 诀弊饭捞靛 窜拌牢啊甫 惶酒 滚瓢阑 沥府茄促
//窜瘤 滚瓢 劝己拳父 氓烙柳促	
	switch(GetKnowCSGroupType(iSelectedGroupButton))
	{
	case 0://弊缝 急琶傈
		{
			SMenu[MN_COMBAT_SKILL_POINT].nImageNumber	=	9;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
			//OK		01
			SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_NONE;//厚劝己
			//DONE		03
			SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//劝己
			
			SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_NONE;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_NONE;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_NONE;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_NONE;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_NONE;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_NONE;//劝己

			//弊缝 急琶 胶懦1	02	//nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
			SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_SHOW_SPECIAL_WILLDO_AUTO_PUT;//劝己
			//弊缝 急琶 胶懦2	02
			SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_SHOW_SPECIAL_WILLDO_AUTO_PUT;//劝己
			//器牢飘 诀			01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
			SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_NONE;//劝己

			SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType  = FT_CS_GROUP_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType  = FT_CS_GROUP_EXPLAIN;
			
			SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType  = FT_CS_EXPLAIN;

			SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType  = FT_CS_EXPLAIN;
			SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType  = FT_CS_EXPLAIN;
			}break;
	default://弊缝捞 乐促
		{
			SMenu[MN_COMBAT_SKILL_POINT].nImageNumber	=	0;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
			//OK		01
			SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
			//DONE		03
			SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_NONE;//劝己
			
			SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_CS_ICON;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_CS_ICON;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_CS_ICON;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_CS_ICON;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_CS_ICON;//劝己
			SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_CS_ICON;//劝己

			//弊缝 急琶 胶懦1	02	//nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
			SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_NONE;//劝己
			//弊缝 急琶 胶懦2	02
			SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_NONE;//劝己
			//器牢飘 诀			01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
			SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_CSP_POINT_UP;//劝己

			SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType  = FT_NONE;

			SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType  = FT_NONE;

			SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType  = FT_NONE;
			SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType  = FT_NONE;
		}break;
	}
}

void SetCSPButtonTypeWhenSelectGroupType()
{//滚瓢阑 悸泼 茄促
	SMenu[MN_COMBAT_SKILL_POINT].nImageNumber	=	0;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
	//OK		01
	SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
	//CANCEL	02
	SMenu[MN_COMBAT_SKILL_POINT].nField[2].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
	//DONE		03
	SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_NONE;//劝己
	
	SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_CS_ICON;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_CS_ICON;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_CS_ICON;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_CS_ICON;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_CS_ICON;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_CS_ICON;//劝己

	//弊缝 急琶 胶懦1	02	//nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
	SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_NONE;//劝己
	//弊缝 急琶 胶懦2	02
	SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_NONE;//劝己
	//器牢飘 诀			01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
	SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_CSP_POINT_UP;//劝己

	SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType = FT_NONE;//劝己
	
	SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType = FT_NONE;//劝己

	SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType = FT_NONE;//劝己
	SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType = FT_NONE;//劝己
}

void SetCSPGroupButtonImage(const int iSelected)//弊缝 滚瓢 捞固瘤 悸泼
{
	SFIELD *f = &SMenu[MN_COMBAT_SKILL_POINT].nField[4];
	switch(GetKnowCSGroupType(1))
	{ 
	case 1:
		{
			f->nImageNumber	=	12;
			f->nRectImage	=	11;
		}break;

⌨️ 快捷键说明

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