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

📄 horse.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				{
					ch->diedelay	=  3;	// 荤扼瘤绰悼累阑 玫玫洒...
					ch->dieani		= 80;	// 32焊促 累栏搁  荤扼柳促.
					ch->dieanitype  =  0;	// 
				}
			}
			else	//辑滚客 楷搬等 版快
#endif
			{
				if( ch->blood_Set == false && ch->dieani == 0 )
				{
					ch->diedelay	= 3;
					ch->dieani		= 80;
					ch->blood_Set	= true;
				}
			}
		}
	}
}

void cHorseRider::CheckMoveAnimation(LPCHARACTER ch)
{
	int HorseNo=CheckHorseKind(ch);
	if (ch->nCurrentFrame>=HorseRiderAniTable[CheckSex(ch)][HorseNo][ ch->nCurrentAction].nCount )
	{
		if( !IsDead(ch) && (ch->pathcount > 2 || ch->moveFlag == TRUE) )
		{
			CharDoAni_Moving(ch, ch->movetype );
		}
		else
		{
			ch->nCurrentFrame =0;
		}
	}
}


void cHorseRider::CheckAttackAnimation(LPCHARACTER ch)
{
	int HorseNo=CheckHorseKind(ch);
	if (ch->nCurrentFrame>=HorseRiderAniTable[CheckSex(ch)][HorseNo][ ch->nCurrentAction].nCount )
	{
		if( !IsDead(ch) && (ch->pathcount > 2 || ch->moveFlag == TRUE) )
		{
			CharDoAni_Moving(ch, ch->movetype );
		}
		else
		{
			ch->changeActionFlag	= 0;
			ch->nCurrentAction		= ch->basicAction;
			ch->nCurrentFrame		= 0;
			ch->offset.x = 0; ch->offset.y = 0;

			if (ch->nActiveCombat == SHARK_MISSILE)
			{
				ch->attackanimationON = 0;
			}
		}
	}
}

int cHorseRider::GetDistance(LPCHARACTER ch)
{
	int HorseNo=CheckHorseKind(ch);
	return HorseRiderAniTable[CheckSex(ch)][HorseNo][ ch->nCurrentAction].dx[ ch->nCurrentFrame];
}

inline void cHorseRider::FreeRiderSprite(int SexType,int SpriteKind)
{
	MemFree(RiderPicBuffer[SexType][SpriteKind]);
}

inline void cHorseRider::ClearRiderSprite()
{
	for (int i=0;i<HSEX_TYPE_MAX;i++)
	{
		for (int j=0;j<HRIDER_TYPE_MAX;j++)
		{
			FreeRiderSprite(i,j);
		}
	}
}

inline void cHorseRider::FreeRiderBandSprite(int SexType,int SpriteKind)
{
	MemFree(RiderBandPicBuffer[SexType][SpriteKind]);
}

inline void cHorseRider::ClearRiderBandSprite()
{
	for (int i=0;i<HSEX_TYPE_MAX;i++)
	{
		for (int j=0;j<HRIDER_TYPE_MAX;j++)
		{
			FreeRiderBandSprite(i,j);
		}
	}
}


inline void cHorseRider::FreeHorseSprite(int SpriteKind)
{
	MemFree(HorsePicBuffer[SpriteKind]);
}

inline void cHorseRider::ClearHorseSprite()
{
	for (int i=0;i<HHORSE_TYPE_MAX;i++)
	{
		FreeHorseSprite(i);
	}
}

inline void cHorseRider::FreeHorseSaddleSprite(int SpriteKind)
{
	MemFree(HorseSaddlePicBuffer[SpriteKind]);
}

inline void cHorseRider::ClearHorseSaddleSprite()
{
	for (int i=0;i<HHORSE_TYPE_MAX;i++)
	{
		FreeHorseSaddleSprite(i);
	}
}

inline void cHorseRider::FreeWeaponSprite(int SexType,int SpriteKind)
{
	MemFree(WeaponPicBuffer[SexType][SpriteKind]);
}

inline void cHorseRider::ClearWeaponSprite()
{
//	for (int i=0;i<HSEX_TYPE_MAX;i++)
//	{
		for (int j=0;j<HWEAPON_TYPE_MAX;j++)
		{
			FreeWeaponSprite(0,j);
			FreeWeaponSprite(1,j);
		}
//	}
}

inline void cHorseRider::FreeGuardSprite(int SexType,int SpriteKind)
{
	MemFree(GuardPicBuffer[SexType]);
}

inline void cHorseRider::ClearGuardSprite()
{
//	for (int i=0;i<HSEX_TYPE_MAX;i++)
//	{
//		for (int j=0;j<HGUARD_TYPE_MAX;j++)
//		{
			//FreeGuardSprite(i,j);
	FreeGuardSprite(0,0);
//		}
//	}
}

inline void cHorseRider::FreeRiderGradeSprite(int SexType,int SpriteKind,int GradeType)
{
	MemFree(RiderGradePicBuffer[SexType][SpriteKind][GradeType]);
}

inline void cHorseRider::ClearRiderGradeSprite()
{
	for (int i=0;i<HSEX_TYPE_MAX;i++)
	{
		for (int j=0;j<HHORSE_TYPE_MAX;j++)
		{
			for (int k=0;k<HGRADE_MAX;k++)
			{
				FreeRiderGradeSprite(i,j,k);
			}
		}
	}
}

inline void cHorseRider::FreeHorseGradeSprite(int SpriteKind,int GradeType)
{
	MemFree(HorseGradePicBuffer[SpriteKind][GradeType]);
}

inline void cHorseRider::ClearHorseGradeSprite()
{
	for (int i=0;i<HHORSE_TYPE_MAX;i++)
	{
		for (int j=0;j<HHORSE_GRADE_MAX;j++)
		{
			FreeHorseGradeSprite(i,j);
		}
	}
}

inline void cHorseRider::FreeRiderMantleSprite(int SexType)
{
	MemFree(RiderMantlePicBuffer[SexType]);

}
inline void	cHorseRider::ClearRiderMantleSprite()
{
	FreeRiderMantleSprite(0);
	FreeRiderMantleSprite(1);
}


void cHorseRider::ClearSpriteAll()
{
	ClearRiderSprite();
	ClearHorseSprite();
	ClearWeaponSprite();
	ClearGuardSprite();
	ClearRiderGradeSprite();
	ClearHorseGradeSprite();
	ClearRiderMantleSprite();
}

inline int cHorseRider::CheckSex(LPCHARACTER ch)
{
	return ch->sprno;
}

inline int cHorseRider::CheckRiderKind(LPCHARACTER ch)			// 背眉 
{
	return ch->RiderNo-1;
}

inline int cHorseRider::CheckHorseKind(LPCHARACTER ch)			// 背眉
{
	switch (ch->HorseNo)
	{
	case 0 :
	case 1 :
	case 2 :
	case 3 : return ch->HorseNo-1; break;
	default : return 0;
	}
}

inline int cHorseRider::CheckWeaponKind(LPCHARACTER ch)		// 背眉
{	//< CSD-031020
	int	Accessory=ch->accessory[2];						// 61篮 公扁狼 矫累锅龋 

	if (Accessory>=61&&Accessory<93)
	{
		Accessory-=61;										// 0锅何磐 
	}
	else
	if (Accessory>=121&&Accessory<127)
	{
		Accessory-=121;										// 0锅何磐
		Accessory+=32;										// 咯扁何磐 标惯单捞磐
	}
	else if (Accessory >= 160 && Accessory < 170)
	{
		Accessory -= 160;
		return HorseEffectWeaponConvertTable[CheckSex(ch)][Accessory];
	}
	else if (Accessory >= 170 && Accessory < 180)
	{
		Accessory -= 170;
		return HorseEffectWeaponConvertTable[CheckSex(ch)][Accessory];
	}
	else 
	{
		return -1;
	}

	return HorseWeaponConvertTable[CheckSex(ch)][Accessory];
}	//> CSD-031020

inline int cHorseRider::CheckGuardKind(LPCHARACTER ch)		// 背眉
{
	int	Accessory=ch->accessory[3]-87;						// 87篮 规菩狼 矫累锅龋 

/*	if (Accessory<0||Accessory>6) 
	{
		MessageBox(NULL,"Error!!","Shield Sprite Number Error...",MB_OK);
		return 0;
	}*/
	if (Accessory<0) return -1;
	return 0;
}

inline int cHorseRider::CheckRiderGrade(LPCHARACTER ch)		// 背眉
{
	return ch->RiderGrade-1;
}

inline int cHorseRider::CheckHorseGrade(LPCHARACTER ch)		// 背眉
{
	return ch->HorseGrade-1;
}

inline Spr* cHorseRider::GetSpriteData(int SexType,int SpriteType,int SpriteKind,int Direction,int Frame)
{
	switch(SpriteType)
	{
	case HSRIDER	: return &RiderPic[SexType][SpriteKind][Direction][Frame];
	case HSRBAND	: return &RiderBandPic[SexType][SpriteKind][Direction][Frame];
	case HSHORSE	: return &HorsePic[SpriteKind][Direction][Frame];
	case HSSADDLE	: return &HorseSaddlePic[SpriteKind][Direction][Frame];
	case HSWEAPON	: return &WeaponPic[SexType][SpriteKind][Direction][Frame];
	case HSSHEILD	: return &GuardPic[SexType][Direction][Frame];
	}
	return NULL;
}

inline void cHorseRider::PutConfusion(LPCHARACTER ch)
{
	DWORD Color1 = ReturnBlendRGB( 255, 0, 0);
	DWORD Color2 = ReturnBlendRGB( 255, 100, 100);

	DrawRGBColor(ch,Color1,Color2);
}

inline void cHorseRider::PutCurse(LPCHARACTER ch)
{
	int Trans=5;
	int Operation=2;

	DrawFX(ch,Trans,Operation);
}

inline void cHorseRider::PutFrozen(LPCHARACTER ch)
{
	DWORD Color1 = ReturnBlendRGB(0, 0, 255);
	DWORD Color2 = ReturnBlendRGB(100, 100, 255);

	DrawRGBColor(ch,Color1,Color2);
}

inline void cHorseRider::PutGhost(LPCHARACTER ch)
{
	int Trans=10;
	int Operation=1;

	DrawFX(ch,Trans,Operation);
}

inline void cHorseRider::PutGreen(LPCHARACTER ch)
{
	DWORD	//color = ReturnBlendRGB( 116,254,178 );
			//color = ReturnBlendRGB( 192,251,148 );
			Color2 = ReturnBlendRGB( 125,251,226 );

	DrawRGBColor(ch,0,Color2);
}

inline void cHorseRider::PutPoison(LPCHARACTER ch)
{
	DWORD Color1 = ReturnBlendRGB( 0,255, 0);
	DWORD Color2 = ReturnBlendRGB( 100, 255, 100);

	DrawRGBColor(ch,Color1,Color2);
}

inline void cHorseRider::PutRed(LPCHARACTER ch)
{
	DWORD Color2 = ReturnBlendRGB( 255,100,100 );

	DrawRGBColor(ch,0,Color2);
}

inline void cHorseRider::PutSlow(LPCHARACTER ch)
{
	DWORD Color1 = ReturnBlendRGB( 255, 255, 0);
	DWORD Color2 = ReturnBlendRGB( 255, 255, 100);

	DrawRGBColor(ch,Color1,Color2);
}

inline void cHorseRider::PutStone(LPCHARACTER ch)
{
	DWORD Color1 = ReturnBlendRGB( 100, 100, 100);
	DWORD Color2 = ReturnBlendRGB( 100, 100, 100);

	DrawRGBColor(ch,Color1,Color2);
}

inline void cHorseRider::PutTransparency(LPCHARACTER ch)
{
	if (ch==Hero)
	{
		int Trans=6;
		int Operation=1;

		DrawFX(ch,Trans,Operation);
	}
	else
	{
		DrawVoid(ch);
	}
}

inline void cHorseRider::DrawRider(LPCHARACTER ch)			// LTS HORSERIDER ADD
{
	int RiderGrade=CheckRiderGrade(ch);
	int	SexType=CheckSex(ch);
	int RiderKind=CheckRiderKind(ch);		
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int HorseNo=CheckHorseKind(ch);
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];

	Spr* RiderSpr=GetSpriteData(SexType,HSRIDER,RiderKind,ch->direction,Frame);
	Spr* RiderBandSpr=GetSpriteData(SexType,HSRBAND,RiderKind,ch->direction,Frame);
	Spr* RiderGradeSpr=NULL;
	Spr* RiderMantleSpr=NULL;

//	if (ch->mantlecolor!=0&&ch->mantlecolor!=65535) RiderMantleSpr=&RiderMantlePic[SexType][ch->direction][Frame];
	
	if (RiderGrade>=0) RiderGradeSpr=&RiderGradePic[SexType][RiderKind][RiderGrade][ch->direction][Frame];	// 裹困楷魂俊 巩力 积辫.

//	if (ch->direction==DIRECTION_DOWN||ch->direction==DIRECTION_RIGHTDOWN||ch->direction==DIRECTION_LEFTDOWN)
//		PutCompressedImageCharRGB(LocateX,LocateY,RiderMantleSpr,ch->mantlecolor);
//	PutCompressedImage(LocateX,LocateY,RiderMantleSpr);
	PutCompressedImage(LocateX,LocateY,RiderSpr);
	PutCompressedImageCharRGB(LocateX,LocateY,RiderBandSpr, ch->bodycolor);
	PutCompressedImage(LocateX,LocateY,RiderGradeSpr);
//	if (ch->direction!=DIRECTION_DOWN&&ch->direction!=DIRECTION_RIGHTDOWN&&ch->direction!=DIRECTION_LEFTDOWN)
//		PutCompressedImageCharRGB(LocateX,LocateY,RiderMantleSpr,ch->mantlecolor);
//	PutCompressedImage(LocateX,LocateY,RiderMantleSpr);
}

inline void cHorseRider::DrawRiderColor(LPCHARACTER ch,DWORD Color1,DWORD Color2)
{
	int RiderGrade=CheckRiderGrade(ch);
	int	SexType=CheckSex(ch);
	int RiderKind=CheckRiderKind(ch);		
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int HorseNo=CheckHorseKind(ch);
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];


⌨️ 快捷键说明

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