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

📄 horse.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
#include "stdafx.h"
#include <io.h>

#include "gameproc.h"
#include "NetWork.h"
#include "menu.h"
#include "SmallMenu.h"
#include "map.h"
#include "LineCommand.h"
#include "tool.h"
#include "hong_sub.h"
#include "Horse.h"
#include "char.h"
#include "Battle.h"
using namespace battle;

#define CHECKSUM_ERROR_ANIMATIONDATA	20005

cHorseRider	g_HorseRider;

extern DWORD		g_curr_time;

char HorseWeaponConvertTable[2][38]=
{																									                     // 18锅 何磐 标惯  	
	{ 0, 0,-1,-1,-1, 4, 4, 6, 6,10, 8,10, 8, 9, 9,11,11,12,12,13,13,-1,-1,-1,-1,-1,17,17,17,17,17,17,18,19,20,21,22,23},
	{ 0, 0,-1,-1,-1, 4, 4, 5, 5, 6, 6,10, 8, 9, 9,10, 8,11,11,12,12,13,13,-1,-1,-1,17,17,17,17,17,17,18,19,20,21,22,23}	
};	// Sprite File

char HorseEffectWeaponConvertTable[2][10] =
{	//< CSD-031020																										                     // 18锅 何磐 标惯  	
	{-1, 0, 12, -1, 6, 9, 10, 11, -1, -1},
	{-1, 0, 12, 13, 6, 9, 10, 11, 13, 5}	
};	//> CSD-031020

extern int			convert565to555_LoadSprite(Spr *sp);
extern void			PutCompressedImage(int x, int y, Spr *sp );
extern BOOL			PutDeadEffectBottom(LPCHARACTER ch);
extern void			PutCompressedImageCharRGB( int x, int y, Spr *sp, DWORD RGB );
extern void			PutCompressedImageFX(int x, int y, Spr *sp, DWORD alpha, DWORD op);
extern void			PutCompressedImageVoid(int x, int y, Spr *sp );
extern void			PutCompressedImageShadow( int x, int y, Spr *sp );
extern int			IsDead( LPCHARACTER ch );






void InitHorseAniTable()
{
	g_HorseRider.LoadHorseRiderAniMationTable(0,0,"./char/hrAniTable0000.txt");
	g_HorseRider.LoadHorseRiderAniMationTable(0,1,"./char/hrAniTable0100.txt");
	g_HorseRider.LoadHorseRiderAniMationTable(0,2,"./char/hrAniTable0200.txt");
	g_HorseRider.LoadHorseRiderAniMationTable(1,0,"./char/hrAniTable0001.txt");
	g_HorseRider.LoadHorseRiderAniMationTable(1,1,"./char/hrAniTable0101.txt");
	g_HorseRider.LoadHorseRiderAniMationTable(1,2,"./char/hrAniTable0201.txt");
}

cHorseRider::cHorseRider()
{
}

cHorseRider::~cHorseRider()
{
	ClearSpriteAll();
}

int cHorseRider::LoadRiderSprite(int SexType,int SpriteKind)
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( RiderPicBuffer[SexType][SpriteKind] != NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/HR%03d%03d.spr",SexType,SpriteKind);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc( RiderPicBuffer[SexType][SpriteKind], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &RiderPic[SexType][SpriteKind][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);
			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( "%s File Error !!",tempFileName);
				ExitApplication(EA_LOAD_RIDER_SPR_DATA_SUB);
			}						
			fread( RiderPicBuffer[SexType][SpriteKind] + nOff, s->size, 1, fp);
			s->img = RiderPicBuffer[SexType][SpriteKind] + nOff;
			
			convert565to555_LoadSprite( s );
			
			nOff += size;		
		}
	}		
	fclose(fp);	
	return TRUE;
}

int cHorseRider::LoadRiderBandSprite(int SexType,int SpriteKind)
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( RiderBandPicBuffer[SexType][SpriteKind] != NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/RB%03d%03d.spr",SexType,SpriteKind);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc( RiderBandPicBuffer[SexType][SpriteKind], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &RiderBandPic[SexType][SpriteKind][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);
			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( "%s File Error !!",tempFileName);
				ExitApplication(EA_LOAD_RIDER_BAND_SPR_DATA_SUB);
			}						
			fread( RiderBandPicBuffer[SexType][SpriteKind] + nOff, s->size, 1, fp);
			s->img = RiderBandPicBuffer[SexType][SpriteKind] + nOff;
			
			convert565to555_LoadSprite( s );
			
			nOff += size;		
		}
	}		
	fclose(fp);	
	return TRUE;
}

int cHorseRider::LoadRiderMantleSprite(int SexType)					// Mantle Data
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( RiderMantlePicBuffer[SexType]!=NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/RM%03d.spr",SexType);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc(RiderMantlePicBuffer[SexType], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &RiderMantlePic[SexType][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);
			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( "%s File Error !!",tempFileName);
				ExitApplication(EA_LOAD_RIDER_MANTLE_SPR_DATA_SUB);
			}						
			fread( RiderMantlePicBuffer[SexType] + nOff, s->size, 1, fp);
			s->img = RiderMantlePicBuffer[SexType] + nOff;
			
			convert565to555_LoadSprite( s );
			
			nOff += size;		
		}
	}		
	fclose(fp);	
	return TRUE;
}


int cHorseRider::LoadRiderGradeSprite(int SexType,int SpriteKind,int GradeKind)
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( RiderGradePicBuffer[SexType][SpriteKind][GradeKind] != NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/RGR%02d%02d%02d.spr",SexType,SpriteKind,GradeKind);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc(RiderGradePicBuffer[SexType][SpriteKind][GradeKind], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &RiderGradePic[SexType][SpriteKind][GradeKind][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);
			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( "%s File Error !!",tempFileName);
				ExitApplication(EA_LOAD_RIDER_GRADE_SPR_DATA_SUB);
			}						
			fread( RiderGradePicBuffer[SexType][SpriteKind][GradeKind] + nOff, s->size, 1, fp);
			s->img = RiderGradePicBuffer[SexType][SpriteKind][GradeKind] + nOff;
			
			convert565to555_LoadSprite( s );
			
			nOff += size;		
		}
	}		
	fclose(fp);	
	return TRUE;
}


int cHorseRider::LoadHorseSprite(int SpriteKind)
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( HorsePicBuffer[SpriteKind] != NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/H%03d.spr",SpriteKind);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc( HorsePicBuffer[SpriteKind], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &HorsePic[SpriteKind][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);
			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( "%s File Error !!",tempFileName);
				ExitApplication(EA_LOAD_HORSE_SPR_DATA_SUB);
			}						
			fread( HorsePicBuffer[SpriteKind] + nOff, s->size, 1, fp);
			s->img = HorsePicBuffer[SpriteKind] + nOff;
			
			convert565to555_LoadSprite( s );
			
			nOff += size;		
		}
	}		
	fclose(fp);	
	return TRUE;
}

int cHorseRider::LoadHorseSaddleSprite(int SpriteKind)
{
	FILE *fp;
	short no;
	DWORD sprfilelength, size;
	DWORD nOff = 0;
	int   i,j;
	Spr*  s;
	int length;
	char tempFileName[MAX_PATH];

	if( HorseSaddlePicBuffer[SpriteKind] != NULL )
	{
		return FALSE;
	}

	sprintf(tempFileName,"./char/HS%03d.spr",SpriteKind);
	
	fp=Fopen(tempFileName,"rb" );
	if (fp==NULL)
	{
		return FALSE;
	}
			
	fread( &no, 2,1, fp);
	fseek( fp, no * 4, SEEK_CUR ); 
	length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;

	MemAlloc( HorseSaddlePicBuffer[SpriteKind], sprfilelength );
	for (i=0;i<8;i++)
	{			
		for (j=0;j<75;j++)
		{
			s = &HorseSaddlePic[SpriteKind][i][j];
			fread( &size, 4,1, fp);
			if( size== 0 )	
			{				
				s->xl = 0;	

⌨️ 快捷键说明

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