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

📄 gameresourcemanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/LoginPoint.bin");	
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/LoginPoint.txt");	
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int n =0;
	while(1)
	{
		if(file.IsEOF())
			break;
		pLogin[n].Kind = file.GetWord();
		file.GetString(pLogin[n].MapName);
		pLogin[n].MapNum = file.GetWord();
		pLogin[n].Map_SubKind = file.GetByte();
		pLogin[n].CurPoint.x = file.GetFloat();
		pLogin[n].CurPoint.y = 0;
		pLogin[n].CurPoint.z = file.GetFloat();
		pLogin[n].chx_num = file.GetWord();
		++n;
	}

	return TRUE;
}

#ifdef _MAPSERVER_
BOOL CGameResourceManager::CheckCorrectLoginPoint(VECTOR3* pos)
{
	static float maxdist = 1000;
	for( int i = 0; i < MAX_POINT_NUM; i++)
	{
		if(m_LoginPoint[i].MapNum == GetLoadMapNum())
		{
			float dist = CalcDistanceXZ(pos,&m_LoginPoint[i].CurPoint);
			if(dist < maxdist)	//烙狼
				return TRUE;
		}
	}
	for( i = 0; i < MAX_POINT_NUM; i++)
	{
		if(m_MapChangeArea[i].MoveMapNum == GetLoadMapNum())
		{
			float dist = CalcDistanceXZ(pos,&m_MapChangeArea[i].MovePoint);
			if(dist < maxdist)	//烙狼
				return TRUE;
		}
	}
	
	return FALSE;
}


void CGameResourceManager::GetRegenPoint(VECTOR3& pos,VECTOR3& RandPos,WORD LoginIndex,WORD MapchangeIndex)
{
	if(MapchangeIndex)
	{
		MAPCHANGE_INFO* changeinfo = GetMapChangeInfo(MapchangeIndex);
		if(!changeinfo)
		{
			char temp[128];
			sprintf(temp,"MapChangePoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
			ASSERTMSG(0,temp);
			pos.x = 25000;
			pos.y = 0;
			pos.z = 25000;
		}
		else
		{
			if(changeinfo->MoveMapNum != GAMERESRCMNGR->GetLoadMapNum())
				MapchangeIndex = 0;
			else
			{
				pos.x = changeinfo->MovePoint.x;
				pos.y = 0;
				pos.z = changeinfo->MovePoint.z;
			}
		}
	}
	if(MapchangeIndex == 0)
	{
		LOGINPOINT_INFO* LoginPoint = GetLoginPointInfoFromMapNum(GAMERESRCMNGR->GetLoadMapNum());//LoginIndex);
		if(!LoginPoint)
		{
			char temp[128];
			sprintf(temp,"LoginPoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
			ASSERTMSG(0,temp);
			pos.x = 25000;
			pos.y = 0;
			pos.z = 25000;
		}
		else
		{
			pos.x = LoginPoint->CurPoint.x;
			pos.y = 0;
			pos.z = LoginPoint->CurPoint.z;
		}
	}
	
	int temp;
	temp = rand() % 500 - 250;
	RandPos.x = pos.x + temp;
	temp = rand() % 500 - 250;
	RandPos.z = pos.z + temp;
	RandPos.y = 0;

	ASSERT(!(pos.x == 0 && pos.z == 0));
}
#endif

//-----------------------------------------------------------------------------------------------------------//
//		辑滚父 荤侩窍绰 何盒
#ifdef _SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//

void CGameResourceManager::GetMonsterStats(WORD wMonsterKind, monster_stats * stats)
{
/*	stats->AttributeAttackMin1 = GetMonsterInfo(wMonsterKind)->Attack1Property;
	stats->AttributeAttackMax1 = GetMonsterInfo(wMonsterKind)->Attack2Property;
	stats->AttributeAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack1Property;
	stats->AttributeAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2Property;*/

	stats->Attack1OccurProportion = (WORD)GetMonsterListInfo(wMonsterKind)->AttackRate[0];				// 傍拜1 惯积 犬伏
	stats->PhysicalAttackMin1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMin;						// 傍拜1 弥家 傍拜仿
	stats->PhysicalAttackMax1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMax;
//	stats->PhysicalAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMin;						// 傍拜1 弥家 傍拜仿
//	stats->PhysicalAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMax;
	// 规绢
	stats->PhysicalDefense = GetMonsterListInfo(wMonsterKind)->PhysicalDefense;
	stats->AttributeResist = GetMonsterListInfo(wMonsterKind)->AttribResist;
}

BOOL CGameResourceManager::LoadNpcRegen(NPC_REGEN pNpcRegen[MAX_NPC_GROUPNUM][MAX_NPC_REGEN_NUM])
{
	char filename[64];
	char value[64] = {0,};
	CMHFile file;
#ifdef _FILE_BIN_
	sprintf(filename,"./Resource/NpcRegen.bin");	
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"./Resource/NpcRegen.txt");	
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int n =0;
	WORD Group = 1;
	WORD count = 1;
	
	while(1)
	{
		if(file.IsEOF())
			break;
		if(Group > MAX_NPC_GROUPNUM || n > MAX_NPC_REGEN_NUM) break;

		if(count > MONSTERGROUPUNIT)
		{
			count = 1;
			n = 1;
			Group++;
			m_TotalNpcGroupCount++;
		}
		pNpcRegen[Group][n].MapNum = file.GetWord();
		if(pNpcRegen[Group][n].MapNum == 0)
			break;

		pNpcRegen[Group][n].NpcKind = file.GetWord();
		file.GetString(pNpcRegen[Group][n].Name);
		pNpcRegen[Group][n].NpcIndex = (WORD)file.GetDword();
		pNpcRegen[Group][n].Pos.x = file.GetFloat();
		pNpcRegen[Group][n].Pos.y = 0;
		pNpcRegen[Group][n].Pos.z = file.GetFloat();
		pNpcRegen[Group][n].Angle = file.GetFloat();
		count++;
		n++;
		if(n > m_MaxNpcRegenCount)
			m_MaxNpcRegenCount = n;
	}
	SetNpcRegenLoadFlag(TRUE);
	return TRUE;
}


void CGameResourceManager::SetLoadMapNum(WORD Mapnum)
{
	m_LoadingMapNum = Mapnum;
}

//-----------------------------------------------------------------------------------------------------------//
#endif //_SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
BOOL CGameResourceManager::LoadExpPoint()
{
	char filename[64];
	CMHFile file;
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/characterExpPoint.bin");	
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/characterExpPoint.txt");	
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int idx =0;
	while(1)
	{
		if(idx > MAX_CHARACTER_LEVEL_NUM-1) break;
		if(file.IsEOF())
			break;
		file.GetWord();												// 饭骇
		m_CharacterExpPoint[idx] = file.GetExpPoint();				// 版氰摹
		idx++;
	}

	file.Release();
	return TRUE;	
}
BOOL CGameResourceManager::LoadPlayerxMonsterPoint()
{
#ifdef _FILE_BIN_
	CMHFile file;
	int idx = 0;
	if( !file.Init( "Resource/PlayerxMonsterPoint.bin", "rb") )
		return FALSE;
	while(1)
	{
		if(idx > MAX_PLAYERLEVEL_NUM - 1) break;

		char value[64] = {0,};

		// MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1  1篮 gap捞 0老版快锭巩俊
		for(int levelgap = 0 ; levelgap < MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 ; levelgap++)
		{
			m_PLAYERxMONSTER_POINT[idx][levelgap] = file.GetInt();
		}
		idx++;
	}
	file.Release();
#else
	FILE * fp = NULL;
	int idx = 0;
	fp = fopen("Resource/PlayerxMonsterPoint.txt", "rt");
	if(!fp) return FALSE;
	while(1)
	{
		if(idx > MAX_PLAYERLEVEL_NUM - 1) break;

		char value[64] = {0,};

		// MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1  1篮 gap捞 0老版快锭巩俊
		for(int levelgap = 0 ; levelgap < MAX_MONSTERLEVELPOINTRESTRICT_NUM + MONSTERLEVELRESTRICT_LOWSTARTNUM + 1 ; levelgap++)
		{
			fscanf(fp, "%s", value);
			m_PLAYERxMONSTER_POINT[idx][levelgap] = atoi(value);
		}
		idx++;
	}
	fclose(fp);
#endif
	return TRUE;
}

EXPTYPE CGameResourceManager::GetPLAYERxMONSTER_POINT(LEVELTYPE level,int levelgap)
{
	ASSERT(0 < level && level < 255);	// 255 is temp Max Level of Mon
	ASSERT(-MONSTERLEVELRESTRICT_LOWSTARTNUM <= levelgap && 
			levelgap <= MAX_MONSTERLEVELPOINTRESTRICT_NUM );

	return m_PLAYERxMONSTER_POINT[level-1][levelgap+MONSTERLEVELRESTRICT_LOWSTARTNUM];
}
//-----------------------------------------------------------------------------------------------------------//
//		辑滚父 荤侩窍绰 何盒
#ifdef _SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//

//-----------------------------------------------------------------------------------------------------------//
#endif //_SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//

BOOL CGameResourceManager::LoadTacticStartInfoList() 
{
	CMHFile file;
	char filename[64];

	TACTICSTART_INFO Info;
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/tacticstartinfo.bin");
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/tacticstartinfo.txt");
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int n =0;
	while(1)
	{
		if(file.IsEOF())
			break;

		Info.TacticID			= file.GetWord();
		file.GetString(Info.Name);
		Info.NeedMemberNum		= file.GetByte();
		Info.WaitingTime		= file.GetWord();
		Info.WaitingNaeryuk		= file.GetWord();
		Info.SuccessNaeryuk		= file.GetWord();
		Info.TacticStartEffect	= FindEffectNum(file.GetString());
		Info.SkillNum = file.GetWord();
		
		for(int i=0; i<6; ++i)
		{
			Info.PosX[i] = file.GetFloat();
			Info.PosZ[i] = file.GetFloat();
		}
		
		TACTICMGR->AddTacticStartInfo(&Info);
		++n;
	}
	file.Release();
	return TRUE;
}
 


//-----------------------------------------------------------------------------------------------------------//
//		努扼捞攫飘父 荤侩窍绰 何盒
#ifdef _CLIENT_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
void CGameResourceManager::DeletePreLoadData()
{
	//
	sPRELOAD_INFO* pPreLoadInfo = NULL;
	m_PreLoadDataTable.SetPositionHead();
	while( pPreLoadInfo = m_PreLoadDataTable.GetData() )
	{
		delete pPreLoadInfo;		
	}
	m_PreLoadDataTable.RemoveAll();	

	//
	PRELOADEFF* pEff = NULL;
	PTRLISTSEARCHSTART(m_PreLoadEfflist, PRELOADEFF*, pEff);
		m_PreLoadEfflist.Remove(pEff);
		delete pEff;
		pEff = NULL;
	PTRLISTSEARCHEND
	m_PreLoadEfflist.RemoveAll();
}


#include ".\Engine\EngineObject.h"		// for PreLoadObject()
void CGameResourceManager::PreLoadData()
{
//	DWORD n;
	// YH2DO 肺爹俊 措茄 犬沥 鞘夸

	/* 纳腐磐绰 呈公 腹酒辑 阜酒初澜
	//////////////////////////////////////////////////////////////////////////
	// 纳腐磐 Preload
	DIRECTORYMGR->SetLoadMode(eLM_Character);

	for(int job=0;job<eJOB_Max;++job)
	{
		CEngineObject::PreLoadObject(m_ModFileList[GENDER_MALE][job].BaseObjectFile);
		CEngineObject::PreLoadObject(m_ModFileList[GENDER_FEMALE][job].BaseObjectFile);
		
		for(n=0;n<m_ModFileList[GENDER_MALE][job].MaxModFile;++n)
			CEngineObject::PreLoadObject(m_ModFileList[GENDER_MALE][job].ModFile[n]);

		for(n=0;n<m_ModFileList[GENDER_FEMALE][job].MaxModFile;++n)
			CEngineObject::PreLoadObject(m_ModFileList[GENDER_FEMALE][job].ModFile[n]);
	}

	for(n=0;n<m_HairModList[GENDER_MALE].MaxModFile;++n)
		CEngineObject::PreLoadObject(m_HairModList[GENDER_MALE].ModFile[n]);
	
	for(n=0;n<m_HairModList[GENDER_FEMALE].MaxModFile;++n)
		CEngineObject::PreLoadObject(m_HairModList[GENDER_FEMALE].ModFile[n]);
	//////////////////////////////////////////////////////////////////////////
	*/
	DIRECTORYMGR->SetLoadMode(eLM_Character);
	CEngineObject::PreLoadObject("Man.chx");
	CEngineObject::PreLoadObject("Woman.chx");

	/*
	//////////////////////////////////////////////////////////////////////////
	// Npc
	DIRECTORYMGR->SetLoadMode(eLM_Npc);

	for(n=0;n<m_MaxNpcChxList;++n)
		CEngineObject::PreLoadObject(m_NpcChxList[n].FileName);
	//////////////////////////////////////////////////////////////////////////
	*/
	
	DIRECTORYMGR->SetLoadMode(eLM_Root);
}

BOOL CGameResourceManager::LoadModFileList(MOD_LIST pModList[GENDER_MAX])
{
	CMHFile file;
	char filename[64];
	DWORD idx = 0;
	
	//////////////////////////////////////////////////////////////////////////
	// 巢磊
	idx = 0;
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/ModList_M.bin");
	if(!file.Init(filename,"rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/ModList_M.txt");
	if(!file.Init(filename,"rt"))
		return FALSE;
#endif
	
	// BaseObjectFile
	pModList[GENDER_MALE].BaseObjectFile = file.GetString();	
	
	pModList[GENDER_MALE].MaxModFile = file.GetDword();
	pModList[GENDER_MALE].ModFile = new StaticString[pModList[GENDER_MALE].MaxModFile];
	while(1)
	{
		if(idx >= pModList[GENDER_MALE].MaxModFile) break;
		pModList[GENDER_MALE].ModFile[idx] = file.GetString();
		
		++idx;
	}		
	file.Release();
	
	
	//////////////////////////////////////////////////////////////////////////
	// 咯磊
	idx = 0;
#ifdef _FILE_BIN_
	sprintf(filename,"Resource/ModList_W.bin");
	if(!file.Init(filename,"rb"))
		return FALSE;
#else
	sprintf(filename,"Resource/ModList_W.txt");
	if(!file.Init(filename,"rt"))
		return FALSE;
#endif
	
	// BaseObjectFile
	pModList[GENDER_FEMALE].BaseObjectFile = file.GetString();
	
	pModList[GENDER_FEMALE].MaxModFile = file.GetDword();
	pModList[GENDER_FEMALE].ModFile = new StaticString[pModList[GENDER_FEMALE].MaxModFile];
	while(1)
	{
		if(idx >= pModList[GENDER_FEMALE].MaxModFile) break;
		pModList[GENDER_FEMALE].ModFile[idx] = file.GetString();
				
		++idx;
	}		
	file.Release();

	return TRUE;
}
BOOL CGameResourceManager::LoadFaceModFileList(MOD_LIST pFaceModList[GENDER_MAX]) //pjscode
{
	//倔奔 包访
	CMHFile file;
	char filename[64];
	DWORD idx = 0;

		//////////////////////////////////////////////////////////////////////////
		// 巢磊
		idx = 0;
#ifdef _FILE_BIN_
		sprintf(filename,"Resource/FaceList_M.bin");		
		if(!file.Init(filename,"rb"))
			return FALSE;
#else
		sprintf(filename,"Resource/FaceList_M.txt");	
		if(!file.Init(filename,"r"))
			return FALSE;
#endif
		
		pFaceModList[GENDER_MALE].MaxModFile = file.GetDword();
		pFaceModList[GENDER_MALE].ModFile = new StaticString[pFaceModList[GENDER_MALE].MaxModFile];

		while(1)
		{
			if(idx >= pFaceModList[GENDER_MALE].MaxModFile) break;
			pFaceModList[GENDER_MALE].ModFile[idx] = file.GetString();

			++idx;
		}		
		file.Release();

		
		//////////////////////////////////////////////////////////////////////////
		// 咯磊
		idx = 0;
#ifdef _FILE_BIN_
		sprintf(filename,"Resource/FaceList_W.bin");
		if(!file.Init(filename,"rb"))
			return FALSE;
#else
		sprintf(filename,"Resource/FaceList_W.txt");
		if(!file.Init(filename,"rt"))
			return FALSE;
#endif
		
		pFaceModList[GENDER_FEMALE].MaxModFile = file.GetDword();
		pFaceModList[GENDER_FEMALE].ModFile = new StaticString[pFaceModList[GENDER_FEMALE].MaxModFile];

		
		while(1)
		{
			if(idx >= pFaceModList[GENDER_FEMALE].MaxModFile) break;
			pFaceModList[GENDER_FEMALE].ModFile[idx] = file.GetString();

			++idx;
		}		
	file.Release();
	
	return TRUE;
}

BOOL CGameResourceManager::LoadBodyModFileList(MOD_LIST pBodyModList[GENDER_MAX])
{
	CMHFile file;
	char filename[64];
	DWORD idx = 0;

		//////////////////////////////////////////////////////////////////////////
		// 巢磊
		idx = 0;
#ifdef _FILE_BIN_
		sprintf(filename,"Resource/BodyList_M.bin");		
		if(!file.Init(filename,"rb"))
			return FALSE;
#else
		sprintf(filename,"Resource/BodyList_M.txt");		
		if(!file.Init(filename,"rt"))
			return FALSE;
#endif
		pBodyModList[GENDER_MALE].MaxModFile = file.GetDword();
		pBodyModList[GENDER_MALE].ModFile = new StaticString[pBodyModList[GENDER_MALE].MaxModFile];

		while(1)
		{
			if(idx >= pBodyModList[GENDER_MALE].MaxModFile) break;
			pBodyModList[GENDER_MALE].ModFile[idx] = file.GetString();

⌨️ 快捷键说明

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