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

📄 horse.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	Spr* RiderSpr=GetSpriteData(SexType,HSRIDER,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,Color2);
	PutCompressedImageCharRGB(LocateX,LocateY,RiderSpr,Color2);
	PutCompressedImageCharRGB(LocateX,LocateY,RiderGradeSpr,Color2);
//	if (ch->direction!=DIRECTION_DOWN&&ch->direction!=DIRECTION_RIGHTDOWN&&ch->direction!=DIRECTION_LEFTDOWN)
//		PutCompressedImageCharRGB(LocateX,LocateY,RiderMantleSpr,Color2);
}

inline void cHorseRider::DrawRiderFX(LPCHARACTER ch,int Trans,int Operation)	// 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* 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)
//		PutCompressedImageFX(LocateX,LocateY,RiderMantleSpr,Trans,Operation);
	PutCompressedImageFX(LocateX,LocateY,RiderSpr,Trans,Operation);
	PutCompressedImageFX(LocateX,LocateY,RiderGradeSpr,Trans,Operation);
}

inline void cHorseRider::DrawRiderVoid(LPCHARACTER ch)
{
//	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* RiderGradeSpr=&RiderGradePic[RiderGrade][SexType][RiderKind][ch->direction][Frame];	// 裹困楷魂俊 巩力 积辫.

	PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),RiderSpr);
//	PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand%5-2),RiderGradeSpr);
}

inline void cHorseRider::DrawHorse(LPCHARACTER ch)
{
	int HorseGrade=CheckHorseGrade(ch);
	int HorseKind=CheckHorseKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];

	Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
	Spr* HorseSaddleSpr=GetSpriteData(0,HSSADDLE,HorseKind,ch->direction,Frame);
	Spr* HorseGradeSpr=NULL;

	if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];

	switch (HorseKind)
	{
	case 0 :
	case 1 :	PutCompressedImageShadow(LocateX,LocateY,HorseSpr);
				PutCompressedImage(LocateX,LocateY,HorseSpr);
				PutCompressedImage(LocateX,LocateY,HorseSaddleSpr);
				PutCompressedImage(LocateX,LocateY,HorseGradeSpr);
				break;
	case 2 :
				PutCompressedImageFX(LocateX,LocateY,HorseSpr,3,2);
				PutCompressedImage(LocateX,LocateY,HorseSaddleSpr);
				PutCompressedImage(LocateX,LocateY,HorseGradeSpr);
				break;
	}

	
}

inline void cHorseRider::DrawHorseColor(LPCHARACTER ch,DWORD Color1,DWORD Color2)
{
	int HorseGrade=CheckHorseGrade(ch);
	int HorseKind=CheckHorseKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];

	Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
	Spr* HorseGradeSpr=NULL;

	if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];

	PutCompressedImageShadow(LocateX,LocateY,HorseSpr);
	PutCompressedImageCharRGB(LocateX,LocateY,HorseSpr,Color2);
	PutCompressedImageCharRGB(LocateX,LocateY,HorseGradeSpr,Color2);
}

inline void cHorseRider::DrawHorseFX(LPCHARACTER ch,int Trans,int Operation)
{
	int HorseGrade=CheckHorseGrade(ch);
	int HorseKind=CheckHorseKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];

	Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
	Spr* HorseGradeSpr=NULL;

	if (HorseGrade>=0) HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];

	PutCompressedImageFX(LocateX,LocateY,HorseSpr,Trans,Operation);
	PutCompressedImageFX(LocateX,LocateY,HorseGradeSpr,Trans,Operation);
}

inline void cHorseRider::DrawHorseVoid(LPCHARACTER ch)
{
//	int HorseGrade=CheckHorseGrade(ch);
	int HorseKind=CheckHorseKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int Frame=HorseRiderAniTable[CheckSex(ch)][HorseKind][ch->nCurrentAction].cFrame[ch->nCurrentFrame];

	Spr* HorseSpr=GetSpriteData(0,HSHORSE,HorseKind,ch->direction,Frame);
//	Spr* HorseGradeSpr=&HorseGradePic[HorseKind][HorseGrade][ch->direction][Frame];

	PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),HorseSpr);
//	PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),HorseGradeSpr);
}

inline void cHorseRider::DrawFX(LPCHARACTER ch,int Trans,int Operation)
{
	int SexType=CheckSex(ch);
	int WeaponKind=CheckWeaponKind(ch);
	int GuardKind=CheckGuardKind(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* Weapon=NULL;
	Spr* Guard=NULL;
	
	if (ch->peacests==1)
	{
		if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
		if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
	}

	int tempDirection=ch->direction;
	if (WeaponKind==5 || WeaponKind==13)			// 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
	{
		tempDirection=DIRECTION_UP;
	}

	switch (tempDirection)
	{
	case DIRECTION_UP			:		
									DrawHorseFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);
									DrawRiderFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);	break;
	case DIRECTION_RIGHTUP		:
	case DIRECTION_RIGHT		:
	case DIRECTION_RIGHTDOWN	:
									PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);
									DrawHorseFX(ch,Trans,Operation);
									DrawRiderFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);	break;
	case DIRECTION_DOWN			:		
									DrawHorseFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);
									DrawRiderFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);	break;
	case DIRECTION_LEFTDOWN		:		
	case DIRECTION_LEFT			:
	case DIRECTION_LEFTUP		:		
									PutCompressedImageFX(LocateX,LocateY,Weapon,Trans,Operation);
									DrawHorseFX(ch,Trans,Operation);
									DrawRiderFX(ch,Trans,Operation);
									PutCompressedImageFX(LocateX,LocateY,Guard,Trans,Operation);	break;
	}
}

inline void cHorseRider::DrawRGBColor(LPCHARACTER ch,DWORD Color1,DWORD Color2)
{
	int SexType=CheckSex(ch);
	int WeaponKind=CheckWeaponKind(ch);
	int GuardKind=CheckGuardKind(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* Weapon=NULL;
	Spr* Guard=NULL;

	if (ch->peacests==1)
	{
		if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
		if (GuardKind>=0) Guard=GetSpriteData(SexType,HSWEAPON,GuardKind,ch->direction,Frame);
	}

	int tempDirection=ch->direction;
	if (WeaponKind==5 || WeaponKind==13)			// 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
	{
		tempDirection=DIRECTION_UP;
	}

	switch (tempDirection)
	{
	case DIRECTION_UP			:	
									DrawHorseColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);
									DrawRiderColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2);		break;
	case DIRECTION_RIGHTUP		:
	case DIRECTION_RIGHT		:
	case DIRECTION_RIGHTDOWN	:
									PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);
									DrawHorseColor(ch,Color1,Color2);
									DrawRiderColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2);		break;
	case DIRECTION_DOWN			:	
									DrawHorseColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2); 
									DrawRiderColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);		break;
	case DIRECTION_LEFTDOWN		:	
	case DIRECTION_LEFT			:
	case DIRECTION_LEFTUP		:		
									PutCompressedImageCharRGB(LocateX,LocateY,Weapon,Color2); 
									DrawHorseColor(ch,Color1,Color2);
									DrawRiderColor(ch,Color1,Color2);
									PutCompressedImageCharRGB(LocateX,LocateY,Guard,Color2);		break;
	}
}

inline void cHorseRider::DrawVoid(LPCHARACTER ch)
{
	int SexType=CheckSex(ch);
	int WeaponKind=CheckWeaponKind(ch);
	int GuardKind=CheckGuardKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int HorseNo=CheckHorseKind(ch);
	int Frame=HorseRiderAniTable[SexType][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
	Spr* Weapon=NULL;
	Spr* Guard=NULL;

	if (ch->peacests==1)
	{
		if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
		if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
	}

	int tempDirection=ch->direction;
	if (WeaponKind==5 || WeaponKind==13)			// 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
	{
		tempDirection=DIRECTION_UP;
	}

	switch (ch->direction)
	{
	case DIRECTION_UP			:	
									DrawHorseVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);
									DrawRiderVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon);		break;
	case DIRECTION_RIGHTUP		:
	case DIRECTION_RIGHT		:
	case DIRECTION_RIGHTDOWN	:
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);
									DrawHorseVoid(ch);
									DrawRiderVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon);		break;
	case DIRECTION_DOWN			:	
									DrawHorseVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon); 
									DrawRiderVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);		break;
	case DIRECTION_LEFTDOWN		:	
	case DIRECTION_LEFT			:
	case DIRECTION_LEFTUP		:	
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Weapon); 
									DrawHorseVoid(ch);
									DrawRiderVoid(ch);
									PutCompressedImageVoid(LocateX+(rand()%5-2),LocateY+(rand()%5-2),Guard);		break;
	}
}

inline void cHorseRider::Draw1(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second)
{
	DrawHorse(ch);
	PutCompressedImage(LocateX,LocateY,First);
	DrawRider(ch);
	PutCompressedImage(LocateX,LocateY,Second);
}
inline void cHorseRider::DrawRGB1(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second,DWORD Color)
{
	DrawHorseColor(ch,0,Color);
	PutCompressedImageCharRGB(LocateX,LocateY,First,Color);
	DrawRiderColor(ch,0,Color);
	PutCompressedImageCharRGB(LocateX,LocateY,Second,Color);
}

inline void cHorseRider::Draw2(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second)
{
	PutCompressedImage(LocateX,LocateY,First);
	DrawHorse(ch);
	DrawRider(ch);
	PutCompressedImage(LocateX,LocateY,Second);
}
inline void cHorseRider::DrawRGB2(LPCHARACTER ch,int LocateX,int LocateY,Spr* First,Spr* Second,DWORD Color)
{
	PutCompressedImageCharRGB(LocateX,LocateY,First,Color);
	DrawHorseColor(ch,0,Color);
	DrawRiderColor(ch,0,Color);
	PutCompressedImageCharRGB(LocateX,LocateY,Second,Color);
}

inline int cHorseRider::DirectionChange(LPCHARACTER ch,int WeaponKind)
{
	if (!CheckSex(ch)) return ch->direction;
	if (WeaponKind==5||WeaponKind==13) // 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.
	{
		switch(ch->direction)
		{
		case DIRECTION_UP			:	// 漠阑 力老 唱吝俊 弊赴促.
		case DIRECTION_LEFT			:	// 漠阑 力老 唱吝俊 弊赴促.
		case DIRECTION_LEFTUP		:	// 漠阑 力老 唱吝俊 弊赴促
		case DIRECTION_RIGHTUP		:	// 漠阑 力老 唱吝俊 弊赴促.
		case DIRECTION_RIGHT		:	// 漠阑 力老 唱吝俊 弊赴促.
										return DIRECTION_UP;
										break;
		case DIRECTION_DOWN			:	// 漠阑 力老 刚历弊赴促.
		case DIRECTION_RIGHTDOWN	:	// 漠阑 力老 刚历 弊赴促.
		case DIRECTION_LEFTDOWN		:	// 漠阑 力老 刚历 弊赴促.
										return DIRECTION_DOWN;
										break;
		}
	}
	else return ch->direction;
	return ch->direction;
}

inline void cHorseRider::DrawAction(LPCHARACTER ch)
{
	if( (ch->blood_Set == true || ch->dieani!=0 ) && ch->nCurrentAction==ACTION_DIE ) PutDeadEffectBottom(ch);

	int SexType=CheckSex(ch);
	int WeaponKind=CheckWeaponKind(ch);
	int GuardKind=CheckGuardKind(ch);
	int LocateX=ch->x-Mapx;
	int LocateY=ch->y-Mapy;
	int HorseNo=CheckHorseKind(ch);
	int Frame=HorseRiderAniTable[SexType][HorseNo][ch->nCurrentAction].cFrame[ch->nCurrentFrame];
	Spr* Weapon=NULL;
	Spr* Guard=NULL;
	DWORD Color=0;

	if (ch->peacests==1)
	{
		if (WeaponKind>=0) Weapon=GetSpriteData(SexType,HSWEAPON,WeaponKind,ch->direction,Frame);
		if (GuardKind>=0) Guard=GetSpriteData(SexType,HSSHEILD,GuardKind,ch->direction,Frame);
	}

	int tempDirection=DirectionChange(ch,WeaponKind);							// 剧颊八篮 傈捧 叭扁啊 颊困肺 棵扼柯促.	

	if (ch==g_GameInfo.lpcharacter)
	{
		if (ch==Hero) Color=ReturnBlendRGB( 125,251,226 );
		else Color=ReturnBlendRGB( 255,100,100 );
	}

	switch (tempDirection)							// 规菩锭巩俊 嘛绰 鉴辑甫 崔府茄促.
	{
	case DIRECTION_UP			:	
									if (Color) DrawRGB1(ch,LocateX,LocateY,Guard,Weapon,Color);
									else Draw1(ch,LocateX,LocateY,Guard,Weapon);
									break;
	case DIRECTION_RIGHTUP		:
	case DIRECTION_RIGHT		:
	case DIRECTION_RIGHTDOWN	:
									if (Color) DrawRGB2(ch,LocateX,LocateY,Guard,Weapon,Color);
									else Draw2(ch,LocateX,LocateY,Guard,Weapon);
									break;
	case DIRECTION_DOWN			:	
									if (Color) DrawRGB1(ch,LocateX,LocateY,Weapon,Guard,Color);
									else Draw1(ch,LocateX,LocateY,Weapon,Guard);
									break;
	case DIRECTION_LEFTDOWN		:	
	case DIRECTION_LEFT			:
	case DIRECTION_LEFTUP		:		
									if (Color) DrawRGB2(ch,LocateX,LocateY,Weapon,Guard,Color);
									else Draw2(ch,LocateX,LocateY,Weapon,Guard);
									break;
	}
}

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

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

void cHorseRider::DrawHorseRider(LPCHARACTER ch)
{
	switch (ch->viewtype)
	{	//< CSD-030509
	case VIEWTYPE_NORMAL_			: DrawAction(ch);					break;
	case VIEWTYPE_CONFUSION_		: PutConfusion(ch);					break;
	case VIEWTYPE_POISON_			: PutPoison(ch);					break;
	case VIEWTYPE_STONE_			: PutStone(ch);						break;
	case VIEWTYPE_SLOW_				: PutSlow(ch);						break;
	case VIEWTYPE_FROZEN_			: PutFrozen(ch);					break;
	case VIEWTYPE_CURSE_			: PutCurse(ch);						break;
	case VIEWTYPE_TRANSPARENCY_		: PutTransparency(ch);				break;
	case VIEWTYPE_GHOST_			: PutGhost(ch);						break;
	}	//> CSD-030509	
}


⌨️ 快捷键说明

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