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

📄 3droledata.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 5 页
字号:
BOOL C3DRoleData::GetTransformJumpAble(int nLook)
{
	int nAmount = m_setTransFormInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		if(m_setTransFormInfo[i].nLook == nLook)
		{
			return m_setTransFormInfo[i].bCanJump;
		}
	}
	return false;
}
//---------------------------------------------------------------------
int C3DRoleData::GetTransformAdditiveSize(int nLook)
{
	int nAmount = m_setTransFormInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		if(m_setTransFormInfo[i].nLook == nLook)
		{
			return m_setTransFormInfo[i].nAddSize;
		}
	}
	return 0;
}
//---------------------------------------------------------------------

BOOL C3DRoleData::CreateTransFormInfo()
{
	this->DestroyTransFormInfo();
	m_setTransFormInfo.clear();
	CONST char INI_FILE[] = "ini/AdditiveSize.ini";
	char szTitle[64];
	char szSubtitle[64];

	// get header info
	strcpy(szTitle, "Header");
	strcpy(szSubtitle, "Amount");
	int nAmount = 0;
	::IniDataGet(INI_FILE, szTitle, szSubtitle, nAmount, true);
	for(int i = 0; i < nAmount; i ++)
	{
		// get Index
		int nIndex = 0;
		strcpy(szTitle, "Header");
		sprintf(szSubtitle, "Index%d", i);
		::IniDataGet(INI_FILE, szTitle, szSubtitle, nIndex, true);
	
		// get look ...
		sprintf(szTitle, "Transform%d", nIndex);
		strcpy(szSubtitle, "Look");
		int nLook;
		::IniDataGet(INI_FILE, szTitle, szSubtitle, nLook, true);

		// get size ...
		int nSize;
		strcpy(szSubtitle, "AdditiveSize");
		::IniDataGet(INI_FILE, szTitle, szSubtitle, nSize, true);
		CTransformInfo info;
		info.nLook = nLook;
		info.nAddSize = nSize;

		strcpy(szSubtitle, "Jump");
		char szJump[256];
		::IniStrGet(INI_FILE, szTitle, szSubtitle, szJump, true);
		if(strcmp(szJump, "ON") == 0)
			info.bCanJump = true;
		else
			info.bCanJump = false;

		int nScale;
		strcpy(szSubtitle, "Scale");
		::IniDataGet(INI_FILE, szTitle, szSubtitle, nScale, true);
		info.nScale = nScale;
		info.nIndex = nIndex;
		m_setTransFormInfo.push_back(info);
	}
		
	return true;
}
//---------------------------------------------------------------------
void C3DRoleData::DestroyTransFormInfo()
{
	m_setTransFormInfo.clear();
}
//---------------------------------------------------------------------
CTransformInfo* C3DRoleData::GetTransformInfo(int nIndex)
{
	int nAmount = m_setTransFormInfo.size();
	for(int i = 0; i < nAmount; i ++)
	{
		if(m_setTransFormInfo[i].nIndex == nIndex)
			return &m_setTransFormInfo[i];
	}
	return NULL;
}
//---------------------------------------------------------------------

BOOL C3DRoleData::CreateMonsterInfo(void)
{
	CONST CHAR INI_FILE[] = "ini/Monster.ini";
	FILE* fp = fopen(INI_FILE, "r");
	if (!fp)
	{
		::ErrorOut("error on open %s.", INI_FILE);
		return false;
	}

	while(true)
	{		
		// scan title
		char szLine[1024] = "";
		if (EOF == fscanf(fp, "%s\n", szLine))
			break;

		DWORD dwType = 0;
		if (1 != sscanf(szLine, "[%d]", &dwType))
			continue;

		if (dwType == 0 )
			continue;

		// get info ...
		CMonsterInfo* pInfo = new CMonsterInfo;
		if (!pInfo)
			break;
		memset(pInfo, 0L, sizeof(CMonsterInfo));


		BOOL bSucRead = true;
		char szTitle[_MAX_STRING] = "";

		pInfo->idType = dwType;

		if(!fscanf(fp, "Name=%s\n", pInfo->szMonster))
		{
			strcpy(pInfo->szMonster, "NULL");
		}		
		bSucRead &= fscanf(fp, "SizeAdd=%d\n", &pInfo->nAddSize);
		bSucRead &= fscanf(fp, "ZoomPercent=%d\n", &pInfo->nZoomPercent);
		bSucRead &= fscanf(fp, "MaxLife=%d\n", &pInfo->nMaxLife);
		bSucRead &= fscanf(fp, "Level=%d\n", &pInfo->nLevel);
		bSucRead &= fscanf(fp, "WhiteBlack=%d\n", &pInfo->nWhiteBlack);

		int nData;
		bSucRead &= fscanf(fp, "Defy=%d\n", &nData);
		bSucRead &= fscanf(fp, "Defence=%d\n", &nData);
		bSucRead &= fscanf(fp, "MDefence=%d\n", &nData);
		if(!fscanf(fp, "DisappearEffect=%s\n", pInfo->szDisappearEffect))
		{
			strcpy(pInfo->szDisappearEffect, "NULL");
			strcpy(pInfo->szDisappearSound, "NULL");
		}		
		else if(!fscanf(fp, "DisappearSound=%s\n", pInfo->szDisappearSound))
		{
			strcpy(pInfo->szDisappearSound, "NULL");
		}
		if (!bSucRead)
		{
			::ErrorOut("error data: %s of %s", szTitle, INI_FILE);
			break;
		}

		m_setMonsterInfo.push_back(pInfo);
	}

	fclose(fp);
	return true;
}

//---------------------------------------------------------------------
const CMonsterInfo* C3DRoleData::GetMonsterInfo(const char* pszMonster)
{
	if (!pszMonster && strlen(pszMonster)>16)
		return NULL;

	int nInfoAmount = m_setMonsterInfo.size();
	for (int i=nInfoAmount-1; i>=0; i--)
	{
		CMonsterInfo* pInfo = m_setMonsterInfo[i];
		if (pInfo && 0 == strcmp(pszMonster, pInfo->szMonster))
			return pInfo;
	}

	return NULL;
}
//---------------------------------------------------------------------
const CMonsterInfo* C3DRoleData::GetMonsterInfo(DWORD idType)
{
	if (idType == 0)
		return NULL;
	
	int nInfoAmount = m_setMonsterInfo.size();
	for (int i=nInfoAmount-1; i>=0; i--)
	{
		CMonsterInfo* pInfo = m_setMonsterInfo[i];
		if (pInfo && idType == pInfo->idType)
			return pInfo;
	}
	
	return NULL;
}

//---------------------------------------------------------------------
BOOL C3DRoleData::CreateActionMapEffectInfo()
{
	const char szIniFile[] = "ini/ActionMap3DEffect.ini";
	FILE* fp = fopen(szIniFile, "r");
	if (!fp)
	{
		::ErrorOut("error on open %s.", szIniFile);
		return false;
	}
	while(true)
	{		
		// scan title
		char szLine[1024] = "";
		if (EOF == fscanf(fp, "%s\n", szLine))
			break;
		
		// get info ...	
		char szTitle[_MAX_STRING] = "";
		if (1 != sscanf(szLine, "[%s]", szTitle))
			continue;

		ActionMapEffectInfo* pInfo = new ActionMapEffectInfo;
		MYASSERT (pInfo);
		BOOL bSucRead = true;
		bSucRead &= fscanf(fp, "Index=%d\n", &pInfo->idx);
		bSucRead &= fscanf(fp, "Effect=%s\n", &pInfo->szEffect);		
		bSucRead &= fscanf(fp, "ShowTime=%d\n", &pInfo->nShowTime);
		bSucRead &= fscanf(fp, "Rotate=%d\n", &pInfo->bRotate);
		if(!fscanf(fp, "Type=%d\n", &pInfo->nType))
			pInfo->nType = 0;
		
		if (!bSucRead)
		{
			::ErrorOut("error data: %s of %s", szTitle, szIniFile);
			break;
		}
		// keep it
		m_setMapEffectInfo.push_back(pInfo);		
	}
	
	fclose(fp);
	return true;
}

//---------------------------------------------------------------------
void C3DRoleData::DestroyActionMapEffectInfo()
{
	int nInfos = m_setMapEffectInfo.size();
	for (int i=nInfos-1; i>=0; i--)
	{
		ActionMapEffectInfo* pInfo = m_setMapEffectInfo[i];
		SAFE_DELETE(pInfo);
	}

	m_setMapEffectInfo.clear();
}

//---------------------------------------------------------------------
const ActionMapEffectInfo* C3DRoleData::GetActionMapEffect (int nLook, int nAction, int nTerrain) const
{
	int nInfos = m_setMapEffectInfo.size();
	for (int i=nInfos-1; i>=0; i--)
	{
		ActionMapEffectInfo* pInfo = m_setMapEffectInfo[i];
		MYASSERT (pInfo);

		DWORD idx = nLook*1000000+nAction*1000+nTerrain;
		if (pInfo->idx == idx)
			return pInfo;

		// wildcard
		const int nWildCard = 999;

		idx = nWildCard*1000000+nAction*1000+nTerrain;
		if (pInfo->idx == idx)
			return pInfo;

		idx = nLook*1000000+nWildCard*1000+nTerrain;
		if (pInfo->idx == idx)
			return pInfo;

		idx = nLook*1000000+nAction*1000+nWildCard;
		if (pInfo->idx == idx)
			return pInfo;
	}

	return NULL;
}

//---------------------------------------------------------------------
void C3DRoleData::UpdateMy3DEffectInfo()
{
	CONST CHAR INI_FILE[] = "ini/3DEffect.ini";		
	FILE* fp = fopen(INI_FILE, "w");
	if (!fp)
	{
		::ErrorOut("error on open %s.", INI_FILE);
		return;
	}
	for(int i = 0; i < m_setMy3DEffectInfo.size(); i ++)
	{
		CMy3DEffectInfo* pInfo = m_setMy3DEffectInfo[i];
		fprintf(fp, "[%s]\n", pInfo->szIndex);
		fprintf(fp, "Amount=%u\n", pInfo->nAmount);
		for (int j=0; j<pInfo->nAmount; j++)
		{
			fprintf(fp, "EffectId%d=%u\n", j, pInfo->idEffect[j]);
			fprintf(fp, "TextureId%d=%u\n", j, pInfo->idTexture[j]);
			fprintf(fp, "ASB%d=%d\n", j, pInfo->nASB[j]);
			fprintf(fp, "ADB%d=%d\n", j, pInfo->nADB[j]);
		}
		fprintf(fp, "Delay=%d\n", pInfo->nDelay);
		fprintf(fp, "LoopTime=%d\n", pInfo->nLoopTime);

		fprintf(fp, "FrameInterval=%d\n", pInfo->nFrameInterval);
		fprintf(fp, "LoopInterval=%d\n", pInfo->nLoopInterval);
		fprintf(fp, "OffsetX=%d\n", pInfo->nOffsetX);
		fprintf(fp, "OffsetY=%d\n", pInfo->nOffsetY);
		fprintf(fp, "OffsetZ=%d\n", pInfo->nOffsetZ);
		
		fprintf(fp, "\n");
		fprintf(fp, "\n");
		fprintf(fp, "\n");
		
	}
	fclose(fp);
}
//---------------------------------------------------------------------
void C3DRoleData::CreateMy3DEffectInfo()
{
	CONST CHAR INI_FILE[] = "ini/3DEffect.ini";		
	FILE* fp = fopen(INI_FILE, "r");
	if (!fp)
	{
		::ErrorOut("error on open %s.", INI_FILE);
		return;
	}

	while(true)
	{
		// scan title
		char szLine[1024] = "";
		if (EOF == fscanf(fp, "%s\n", szLine))
			break;

		char szTitle[_MAX_STRING] = "";
		if (1 != sscanf(szLine, "[%s]", szTitle))
			continue;

		szTitle[strlen(szTitle)-1] = '\0';

		// get info ...
		CMy3DEffectInfo* pInfo = new CMy3DEffectInfo;
		MYASSERT (pInfo);
		memset(pInfo, 0L, sizeof(CMy3DEffectInfo));

		strcpy(pInfo->szIndex, szTitle);

		BOOL bSuc = true;
		bSuc &= fscanf(fp, "Amount=%d\n", &pInfo->nAmount);
		if (!bSuc)
		{
			::ErrorOut("error part amount data: %s of %s", szTitle, INI_FILE);
			break;
		}

		for (int i=0; i<pInfo->nAmount; i++)
		{
			char szIndex[256] = "";

			sprintf(szIndex, "EffectId%d=%s\n", i, "%d");
			bSuc &= fscanf(fp, szIndex, &pInfo->idEffect[i]);

			sprintf(szIndex, "TextureId%d=%s\n", i, "%d");
			bSuc &= fscanf(fp, szIndex, &pInfo->idTexture[i]);

			sprintf(szIndex, "ASB%d=%s\n", i, "%d");
			if(!fscanf(fp, szIndex, &pInfo->nASB[i]))
			{
				pInfo->nASB[i] = 5;
			}
			sprintf(szIndex, "ADB%d=%s\n", i, "%d");
			if(!fscanf(fp, szIndex, &pInfo->nADB[i]))
			{
				pInfo->nADB[i] = 6;
			}
		}

		bSuc &= fscanf(fp, "Delay=%d\n", &pInfo->nDelay);
		bSuc &= fscanf(fp, "LoopTime=%d\n", &pInfo->nLoopTime);
		bSuc &= fscanf(fp, "FrameInterval=%d\n", &pInfo->nFrameInterval);
		bSuc &= fscanf(fp, "LoopInterval=%d\n", &pInfo->nLoopInterval);
		bSuc &= fscanf(fp, "OffsetX=%d\n", &pInfo->nOffsetX);
		bSuc &= fscanf(fp, "OffsetY=%d\n", &pInfo->nOffsetY);
		if(!fscanf(fp, "OffsetZ=%d\n", &pInfo->nOffsetZ))
		{
			pInfo->nOffsetZ = 0;
		}
		if (!fscanf(fp, "ShapeAir=%d\n", &pInfo->nShapeAir) )
		{
			pInfo->nShapeAir = 0;
		}
		if (!bSuc)
		{
			::ErrorOut("error data: %s of %s", szTitle, INI_FILE);
			break;
		}

		m_setMy3DEffectInfo.push_back(pInfo);
	}

	fclose(fp);
}

//---------------------------------------------------------------------
const CMy3DEffectInfo* C3DRoleData::GetMy3DEffectInfo(const char* pszIndex)
{
	if (!pszIndex)
		return false;

	int nAmount = m_setMy3DEffectInfo.size();
	for (int i=nAmount-1; i>=0; i--)
	{
		CMy3DEffectInfo* pInfo = m_setMy3DEffectInfo[i];
		if (pInfo && 0 == strcmp(pInfo->szIndex, pszIndex))
			return pInfo;
	}

	return NULL;
}

//---------------------------------------------------------------------
void C3DRoleData::DestroyMy3DEffectInfo()
{
	int nAmount = m_setMy3DEffectInfo.size();
	for (int i=nAmount-1; i>=0; i--)
	{
		CMy3DEffectInfo* pInfo = m_setMy3DEffectInfo[i];
		SAFE_DELETE (pInfo);
	}

	m_setMy3DEffectInfo.clear();
}
//---------------------------------------------------------------------
void C3DRoleData::CreateEffectLookSetInfo()
{
	const char szIniFile[] = "ini/EffectLookSet.ini"; 
	FILE* fp = fopen(szIniFile, "r");
	if(fp)
	{
		char szLine[1024];
		while(NULL != fgets(szLine, 1023, fp))
		{
			if(strlen(szLine) <= 0)
				continue;
			if(szLine[0] == ';')
				continue;
			char szTitle[_MAX_STRING] = "";
			if (1 != sscanf(szLine, "[%s]", szTitle))
				continue;
			
			BOOL bSuc = true;
			EffectLookSetInfo* pInfo = new EffectLookSetInfo;
			bSuc &= fscanf(fp, "Look=%d\n", &pInfo->dwLook);
			bSuc &= fscanf(fp, "DefaultX=%d\n", &pInfo->nDefaultX);
			bSuc &= fscanf(fp, "DefaultY=%d\n", &pInfo->nDefaultY);
			bSuc &= fscanf(fp, "DefaultZ=%d\n", &pInfo->nDefaultZ);
			bSuc &= fscanf(fp, "Amount=%d\n", &pInfo->nAmount);
			
			if (!bSuc)
			{
				::ErrorOut("error data: %s of %s", szTitle, szIniFile);
				break;
			}

			for(int i=0;i<pInfo->nAmount;i++)

⌨️ 快捷键说明

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