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

📄 datacovertdlg.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		}
		fwrite(&nData, sizeof(int), 1, fp);

		// 取得商品数量
		strcpy(szSubTitle, "ItemAmount");
		if(!::IniDataGet(szFile, szTitle, szSubTitle, nData))
		{
			sprintf(szMsg, "取商店%d ItemAmount出错,操作停止。", i);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		DWORD dwItemAmount = nData;
		fwrite(&dwItemAmount, sizeof(DWORD), 1, fp);

		// 取得商品ID
		for(DWORD dwItemCounter = 0; dwItemCounter < dwItemAmount; dwItemCounter ++)
		{
			sprintf(szSubTitle, "Item%d", dwItemCounter);
			if(!::IniDataGet(szFile, szTitle, szSubTitle, nData))
			{
				sprintf(szMsg, "取商店%d Item%d出错,操作停止。", i, dwItemCounter);
				this->AddMsg(szMsg);
				fclose(fp);
				return;
			}
			OBJID idItem = nData;
			
			fwrite(&idItem, sizeof(OBJID), 1, fp);
			nItemTotel ++;
		}
	}
	sprintf(szMsg, "转换操作完成,一共有%d个商店,%d种物品!", dwShopAmount, nItemTotel);
	this->AddMsg(szMsg);
	sprintf(szMsg, "生成文件存储于%s!", szDFile);
	this->AddMsg(szMsg);
	return;
}

//-------------------------------------------------------------------


void CDataCovertDlg::OnMenuitemAutoallot() 
{
	// TODO: Add your command handler code here
	char szMsg[128];
	char szIniFile[]="ini/AutoAllot.ini";
	char szDataFile[]="ini/AutoAllot.dat";
	FILE* fpIni = fopen(szIniFile, "r");
	if(!fpIni)
	{
		sprintf(szMsg, "打开文件%s失败!请确认文件存在并不被锁定!", szIniFile);
		this->AddMsg(szMsg);
		return;
	}
	FILE* fpData = fopen(szDataFile, "wb");
	if(!fpData)
	{
		sprintf(szMsg, "打开文件%s失败!请确认文件不被锁定!", szDataFile);
		fclose(fpIni);
		this->AddMsg(szMsg);
		return;
	}

	char szTitle[64]="Header";
	char szSubTitle[256];
	strcpy(szSubTitle, "ProfessionAmount");
	// 取职业数量
	int nData;
	if(!::IniDataGet(szIniFile, szTitle, szSubTitle, nData))
	{
		fclose(fpIni);
		fclose(fpData);
		this->AddMsg("取职业数量失败,请检查Ini格式!");
		return;
	}
	DWORD dwProfessionAmount = (DWORD)nData;

	// 取等级数量
	strcpy(szSubTitle, "LevelAmount");
	if(!::IniDataGet(szIniFile, szTitle, szSubTitle, nData))
	{
		fclose(fpIni);
		fclose(fpData);
		this->AddMsg("取等级数量失败,请检查Ini格式!");
		return;
	}
	DWORD dwLevelAmount = (DWORD)nData;
	// 写职业数量等级数量
	fwrite(&dwProfessionAmount, sizeof(DWORD), 1, fpData);
	fwrite(&dwLevelAmount, sizeof(DWORD), 1, fpData);

	// 生成索引
	int i, j;
	for(i = 0; i < (int)dwProfessionAmount; i ++)
	{
		sprintf(szTitle, "Profession%d", i);
		strcpy(szSubTitle, "ProfessionType");
		if(!::IniDataGet(szIniFile, szTitle, szSubTitle, nData))
		{
			sprintf(szMsg, "取%s职业类型出错!", szTitle);
			this->AddMsg(szMsg);
			fclose(fpIni);
			fclose(fpData);
			return;
		}
		DWORD dwData = nData;
		fwrite(&dwData, sizeof(DWORD), 1, fpData);
	}
	
	// 生成数据
	for(i = 0; i < (int)dwProfessionAmount; i++)
	{
		//定位fp
		sprintf(szTitle, "[Profession%d]", i);
		while(true)
		{
			char szLine[512];
			if(EOF == fscanf(fpIni, "%s\n", szLine))
			{
				sprintf(szMsg, "定位职业%d出错!", i);
				this->AddMsg(szMsg);
				fclose(fpIni);
				fclose(fpData);
				return;
			}
			if(strcmp(szLine, szTitle) == 0)
			{
				fscanf(fpIni, "%s\n", szLine);
				break;
			}
		}

		for(j = 0; j < (int)dwLevelAmount; j++)
		{
			int nMyData[4];
			int nNum = fscanf(fpIni, "%d %d %d %d %d\n", &nMyData[0], &nMyData[1], &nMyData[2], &nMyData[3], &nMyData[4]);
			if(nNum != 5 || nMyData[0] != j+1)
			{
				sprintf(szMsg, "定位职业%d, 等级%d出错!", i, j+1);
				this->AddMsg(szMsg);
				fclose(fpIni);
				fclose(fpData);
				return;
			}
			DWORD dwData;
			for(int k = 0; k < 4; k ++)
			{
				dwData = (DWORD)nMyData[k+1];
				fwrite(&dwData, sizeof(DWORD), 1, fpData);
			}
		}
	}
	sprintf(szMsg, "完成数据转换,数据存储于%s中!", szDataFile);
	this->AddMsg(szMsg);
	
	fclose(fpIni);
	fclose(fpData);
}
//-------------------------------------------------------------------

void CDataCovertDlg::OnMenuitemCreateAutoAllot() 
{
	// TODO: Add your command handler code here
	char szIniFile[]="ini/Test.ini";
	FILE* fp = fopen(szIniFile, "w");		
	if(!fp)
		return;
	fprintf(fp, "%s\n", "[Header]");
	fprintf(fp, "%s\n", "ProfessionAmount=31");
	fprintf(fp, "%s\n", "LevelAmount=120");

	fprintf(fp, "\n");
	fprintf(fp, "\n");
	fprintf(fp, "\n");

	for(int i = 0; i < 31; i ++)
	{

		fprintf(fp, "[Profession%d]\n", i);
		fprintf(fp, "ProfessionType=%d\n", i+1);

		for(int j = 0; j < 120; j ++)
		{
			fprintf(fp, "%d %d %d %d %d\n", j+1, j+1, j+2, j+3, 0+4);
					
		}
		fprintf(fp, "\n");
	}
	
	fclose(fp);
}

void CDataCovertDlg::OnMenuitemLevelexp() 
{
	// TODO: Add your command handler code here
	// 需要简单加密
	// 密码:"★就这样被你蒸熟"
	const int nMaxLevel = 200;
	DWORD dwExp[nMaxLevel];

	const char szPass[]="★就这样被你蒸熟★";
	char szAniFile[]="ini/LevelExp.ini";
	char szMsg[128];

	FILE* fp = fopen(szAniFile, "r");
	if(!fp)
	{
		sprintf(szMsg, "打开文件%s失败!请确认文件存在并不被锁定!", szAniFile);
		this->AddMsg(szMsg);
		return;
	}

	int nPasswordLength = strlen(szPass);
	for(int i = 0; i < nMaxLevel; i++)
	{
		DWORD nLev = 0;
		if (EOF == fscanf(fp, "%u %u\n",&nLev,&dwExp[i]))
		{
			sprintf(szMsg, "读取第%d行出错, 请检查相关文件!", i);
			this->AddMsg(szMsg);
			return;
		}

		// 开始加密
		dwExp[i] = dwExp[i]^szPass[i%nPasswordLength];		
	}
	fclose(fp);

	char szDataFile[]="ini/LevelExp.dat";
	fp = fopen(szDataFile, "wb");
	if(!fp)
	{
		sprintf(szMsg, "打开文件%s失败!请确认文件不被锁定!", szDataFile);
		this->AddMsg(szMsg);
		return;
	}

	// 写入
	fwrite(dwExp, sizeof(DWORD), nMaxLevel, fp);
	fclose(fp);

	sprintf(szMsg, "LevelExp转换成功,存储于%s。", szDataFile);
	this->AddMsg(szMsg);
}


void CDataCovertDlg::OnOK() 
{
	// TODO: Add extra validation here
//	return;	
	CDialog::OnOK();
}

void CDataCovertDlg::OnMenuitemAction() 
{
	// TODO: Add your command handler code here
	char szIniFile[]="ini/Action.ini";
	char szMsg[256];
	FILE* fp = fopen(szIniFile, "r");
	if (!fp)
	{
		sprintf(szMsg, "打开%s错误,程序退出!", szIniFile);
		this->AddMsg(szMsg);
		return;
	}
	DWORD dwAmount=0;
	while(true)
	{
		char szLine[1024] = "";
		if (EOF == fscanf(fp, "%s\n", szLine))
			break;

		OBJID id = ID_NONE;
		DWORD dwData;
		if (2 == sscanf(szLine, "%u=%u", &id, &dwData))
		{
			dwAmount ++;	
		}
	}
	fclose(fp);

	char szDataFile[]="ini/Action.dat";
	FILE* fpData = fopen(szDataFile, "wb");
	if(!fp)
	{
		sprintf("打开%s错误,程序退出!", szDataFile);
		this->AddMsg(szMsg);
		return;
	}
	fwrite(&dwAmount, sizeof(DWORD), 1, fpData);

	struct 
	{
		DWORD	dwCheck1;
		DWORD	dwActionIndex;
		DWORD	dwCheck2;
		DWORD	dwTimeInterval;
		DWORD	dwCheck3;
	}ActionFileImage;


	fp = fopen(szIniFile, "r");
	if (!fp)
	{
		sprintf("打开%s错误,程序退出!", szIniFile);
		this->AddMsg(szMsg);
		return;
	}
	DWORD dwCounter = 0;
	while(true)
	{
		char szLine[1024] = "";
		if (EOF == fscanf(fp, "%s\n", szLine))
			break;

		DWORD dwIndex;
		DWORD dwTimeInterval;
		if (2 == sscanf(szLine, "%u=%u", &dwIndex, &dwTimeInterval))
		{
			DWORD dwCheck1 = dwIndex * 2 + dwTimeInterval + dwCounter;
			DWORD dwCheck2 = dwCounter*dwCheck1 + dwIndex*dwTimeInterval - dwCounter;
			DWORD dwCheck3 = dwCheck1*dwIndex + dwCheck2*7 + dwTimeInterval*dwCounter;
			ActionFileImage.dwActionIndex = dwIndex;
			ActionFileImage.dwTimeInterval = dwTimeInterval;
			ActionFileImage.dwCheck1 = dwCheck1;
			ActionFileImage.dwCheck2 = dwCheck2;
			ActionFileImage.dwCheck3 = dwCheck3;
			fwrite(&ActionFileImage, sizeof(ActionFileImage), 1, fpData);
			dwCounter ++;
		}
	}
	fclose(fp);

	fclose(fpData);

/*
	// ActionInfo
	for(int i = 0; i < nAmount; i++)
	{
		int nActionIndex;
		sprintf(szTitle, "Action%d", i);
		sprintf(szSubTitle, "Index");
		if(!::IniDataGet(szIniFile, szTitle, szSubTitle, nActionIndex))
		{
			sprintf("打开%s->%s->%s错误,程序退出!", szIniFile, szTitle, szSubTitle);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		DWORD dwTimeInterval;
		int nData;
		sprintf(szSubTitle, "TimeInterval");
		if(!::IniDataGet(szIniFile, szTitle, szSubTitle, nData))
		{
			sprintf("打开%s->%s->%s错误,程序退出!", szIniFile, szTitle, szSubTitle);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		dwTimeInterval = nData;
		DWORD dwCheck1 = nActionIndex * 2 + dwTimeInterval + i;
		DWORD dwCheck2 = i*dwCheck1 + nActionIndex*dwTimeInterval - i;
		DWORD dwCheck3 = dwCheck1*nActionIndex + dwCheck2*7 + dwTimeInterval*i;
		ActionFileImage.nActionIndex = nActionIndex;
		ActionFileImage.dwTimeInterval = dwTimeInterval;
		ActionFileImage.dwCheck1 = dwCheck1;
		ActionFileImage.dwCheck2 = dwCheck2;
		ActionFileImage.dwCheck3 = dwCheck3;
		fwrite(&ActionFileImage, sizeof(ActionFileImage), 1, fp);
	}
	fclose(fp);
*/
	sprintf(szMsg, "成功转换%s,共有动作%d个,生成文件位于%s!", szIniFile, dwAmount, szDataFile);
	this->AddMsg(szMsg);
}


void CDataCovertDlg::OnMenuitemUserhelpinfoC() 
{
	// TODO: Add your command handler code here
	this->AddMsg("UserHelpInfo.ini>>>>UserHelpInfo.dat");
	const char szIniFile[] = "ini/UserHelpInfo.ini";
	char	szTitle[64];
	char	szSubTitle[64];
	char	szStr[512];
	int		nData;
	int		i;
	string	str;
	//Part1: header ...
	DWORD dwInfoAmount = 0;
	strcpy(szTitle, "Header");
	strcpy(szSubTitle, "HelpInfoAmount");
	::IniDataGet(szIniFile, szTitle, szSubTitle, nData);
	dwInfoAmount = nData;

	//Part2: default info ...
	UserHelpInfo* pInfo = new UserHelpInfo;
	MYASSERT(pInfo);
	DWORD dwStrAmount = 0;
	strcpy(szTitle, "DefaultInfo");
	strcpy(szSubTitle, "HelpLineAmount");
	::IniDataGet(szIniFile, szTitle, szSubTitle, nData);
	dwStrAmount = nData;
	for(i = 0; i < dwStrAmount; i ++)
	{
		sprintf(szSubTitle, "Line%d", i);
		::IniStrGet(szIniFile, szTitle, szSubTitle, szStr);
		str = szStr;
		pInfo->m_setStr.push_back(str);
	}
	m_setUserHelpInfo.push_back(pInfo);

	//Part3: text ...
	for(i = 0; i < dwInfoAmount; i ++)
	{
		UserHelpInfo* pInfo = new UserHelpInfo;
		MYASSERT(pInfo);

		sprintf(szTitle, "HelpInfo%d", i);

		strcpy(szSubTitle, "Profession");
		::IniDataGet(szIniFile, szTitle, szSubTitle, nData);
		pInfo->nProfession = nData;

		strcpy(szSubTitle, "MinLevel");
		::IniDataGet(szIniFile, szTitle, szSubTitle, nData);
		pInfo->nMinLevel = nData;

		strcpy(szSubTitle, "MaxLevel");
		::IniDataGet(szIniFile, szTitle, szSubTitle, nData);
		pInfo->nMaxLevel = nData;

		strcpy(szSubTitle,"Sex");
		::IniDataGet(szIniFile,szTitle,szSubTitle,nData);
		pInfo->nSex = nData;
		
		strcpy(szSubTitle,"MapId");
		::IniDataGet(szIniFile,szTitle,szSubTitle,nData);
		pInfo->nMapId = nData;

		strcpy(szSubTitle,"Status");
		::IniDataGet(szIniFile,szTitle,szSubTitle,nData);
		pInfo->nStatus = nData;

		strcpy(szSubTitle,"StatusLevel");
		::IniDataGet(szIniFile,szTitle,szSubTitle,nData);
		pInfo->nStatusLevel = nData;

		strcpy(szSubTitle,"ItemTypeId");
		::IniDataGet(szIniFile,szTitle,szSubTitle,nData);
		pInfo->nItemType = nData;

		strcpy(szSubTitle,"MagicId");

⌨️ 快捷键说明

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