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

📄 gameresourcemanager.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		pList->AttackRate				= new DWORD[2];
		pList->SkillInfo				= new CSkillInfo*[2];
			
		pList->AttackIndex[0]			= file.GetWord();
		pList->AttackIndex[1]			= file.GetWord();
		pList->SkillInfo[0]				= SKILLMGR->GetSkillInfo((WORD)pList->AttackIndex[0]);
		pList->SkillInfo[1]				= SKILLMGR->GetSkillInfo((WORD)pList->AttackIndex[1]);
		pList->AttackRate[0]			= file.GetWord();
		pList->AttackRate[1]			= file.GetWord();

		pList->MinDropMoney				= file.GetDword();// 弥家捣 咀荐	
		pList->MaxDropMoney				= file.GetDword();// 弥措 捣 咀荐	
		ASSERT(pList->MaxDropMoney >= pList->MinDropMoney);
		pList->DropRate[eMONEY]			= file.GetWord();// 捣 犬伏(%)	
		pList->DropRate[eITEM1]			= file.GetWord();// 酒捞袍 犬伏(%)	
		pList->DropRate[eITEM2]			= file.GetWord();// 酒捞袍 犬伏(%)	
		pList->DropRate[eITEM3]			= file.GetWord();// 酒捞袍 犬伏(%)	
		pList->DropRate[eNOITEM]			= file.GetWord();// 畴袍 犬伏(%)	

		for(int n=0;n<eDROPITEMKIND_MAX;++n)
			pList->CurDropRate[n] = pList->DropRate[n];

		pList->ItemListNum1				= file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋	
		pList->ItemListNum2				= file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋	
		pList->ItemListNum3				= file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋	

		pList->MaxDropItemNum			= file.GetByte();// 弥措酒捞袍 肮荐

		pList->fRunawayLifeRate			= file.GetFloat();
		pList->RunawayRate				= file.GetWord();
		pList->RunawayHelpRate			= file.GetWord();
		pList->RunawayDistance			= file.GetWord();	//????

		pList->Talk1					= file.GetWord();				// 措荤 1
		pList->Talk2					= file.GetWord();				
		pList->Talk3					= file.GetWord();

		pList->HelpRequestCondition		= file.GetWord();
		pList->HelpRequestDistance		= file.GetWord();
		pList->HelpRequestTargetNum		= file.GetWord();

		pList->RecallCondition			= file.GetWord();
		pList->RecallObjectID			= file.GetWord();
		pList->RecallObjectNum			= file.GetWord();

		pList->InitHelpType				= file.GetWord();
		pList->bHearing					= file.GetBool();
		pList->HearingDistance			= file.GetDword();

		ASSERT(!m_SMonsterListTable.GetData(pList->MonsterKind));
		m_SMonsterListTable.Add(pList, pList->MonsterKind);

		++n;
	}

	return TRUE;
}

BOOL CGameResourceManager::LoadNpcList(NPC_LIST* pNpcList)
{
	CMHFile fp;
#ifdef _FILE_BIN_
	fp.Init("./Resource/NpcList.bin", "rb");
#else
	fp.Init("./Resource/NpcList.txt", "rt");
#endif
	int idx = 0;
	if(!fp.IsInited()) return FALSE;
	while(1)
	{
		if(fp.IsEOF())
			break;
		
		pNpcList[idx].NpcKind = fp.GetWord();
		fp.GetString(pNpcList[idx].Name);
		pNpcList[idx].ModelNum = fp.GetWord();
		pNpcList[idx].JobKind = fp.GetWord();
		
		idx++;
	}

	fp.Release();
	
#ifdef _SERVER_RESOURCE_FIELD_
	SetNpcListLoadFlag(TRUE);
#endif
	
	return TRUE;
}

BOOL CGameResourceManager::LoadMapChangeArea(MAPCHANGE_INFO* pMapChangeArea)
{
	char filename[64];
	CMHFile file;
#ifdef _FILE_BIN_
	sprintf(filename,"./Resource/MapChange.bin");	
	if(!file.Init(filename, "rb"))
		return FALSE;
#else
	sprintf(filename,"./Resource/MapChange.txt");	
	if(!file.Init(filename, "rt"))
		return FALSE;
#endif

	int n =0;
	while(1)
	{
		if(file.IsEOF())
			break;
		
		pMapChangeArea[n].Kind = file.GetWord();
		file.GetString(pMapChangeArea[n].CurMapName);
		file.GetString(pMapChangeArea[n].ObjectName);
		pMapChangeArea[n].CurMapNum = file.GetWord();
		pMapChangeArea[n].MoveMapNum = file.GetWord();
		pMapChangeArea[n].CurPoint.x = file.GetFloat();
		pMapChangeArea[n].CurPoint.y = 0;
		pMapChangeArea[n].CurPoint.z = file.GetFloat();
		pMapChangeArea[n].MovePoint.x = file.GetFloat();
		pMapChangeArea[n].MovePoint.y = 0;
		pMapChangeArea[n].MovePoint.z = file.GetFloat();
		pMapChangeArea[n].chx_num = file.GetWord();
		
		++n;
	}

	return TRUE;
}

BOOL CGameResourceManager::LoadLoginPoint(LOGINPOINT_INFO* pLogin)
{
	char filename[64];
	CMHFile file;
#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].MapLoginPointNum = file.GetByte();
		if(pLogin[n].MapLoginPointNum == 0)
		{
			MessageBox(NULL,"LoginPointNum is Zero!!!",0,0);
		}
		if(pLogin[n].MapLoginPointNum > 10)
		{
			MessageBox(NULL,"LoginPointNum is too big!!!",0,0);
		}
		for(int i=0;i<pLogin[n].MapLoginPointNum;++i)
		{
			pLogin[n].CurPoint[i].x = file.GetFloat();
			pLogin[n].CurPoint[i].y = 0;
			pLogin[n].CurPoint[i].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())
		{
			for(int n=0;n<m_LoginPoint[i].MapLoginPointNum;++n)
			{
				float dist = CalcDistanceXZ(pos,&m_LoginPoint[i].CurPoint[n]);
				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
		{
			int rl = rand() % LoginPoint->MapLoginPointNum;
			pos.x = LoginPoint->CurPoint[rl].x;
			pos.y = 0;
			pos.z = LoginPoint->CurPoint[rl].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));
}

void CGameResourceManager::GetRegenPointFromEventMap( VECTOR3& pos,VECTOR3& RandPos,WORD LoginIndex,WORD MapchangeIndex,DWORD dwTeam)
{
	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
		{
			int rl = dwTeam - 1;
			pos.x = LoginPoint->CurPoint[rl].x;
			pos.y = 0;
			pos.z = LoginPoint->CurPoint[rl].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)
	{

⌨️ 快捷键说明

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