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

📄 datacovertdlg1.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	// 开始加载商店数据
	char szTitle[64];
	char szSubTitle[64];
	int nData = 0;

	// 取得商店数量
	int nItemTotel = 0;
	DWORD dwShopAmount;
	strcpy(szTitle, "Header");
	strcpy(szSubTitle, "Amount");
	if(!::IniDataGet(szFile, szTitle, szSubTitle, nData))
	{
		this->AddMsg("取商店数量出错,操作停止!");
		fclose(fp);
		return;
	}
	dwShopAmount = nData;
	fwrite(&dwShopAmount, sizeof(DWORD), 1, fp);
	for(DWORD i = 0; i < dwShopAmount; i ++)
	{
		// 取得商店ID
		sprintf(szTitle, "Shop%d", i);
		strcpy(szSubTitle, "ID");
		if(!::IniDataGet(szFile, szTitle, szSubTitle, nData))
		{
			sprintf(szMsg, "取商店%d ID出错,操作停止。", i);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		OBJID idShop = nData;
		fwrite(&idShop, sizeof(OBJID), 1, fp);

		// 取得商店名
		char szShopName[_MAX_NAMESIZE];
		strcpy(szSubTitle, "Name");
		if(!::IniStrGet(szFile, szTitle, szSubTitle, szShopName))
		{
			sprintf(szMsg, "取商店%d Name出错,操作停止。", i);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		fwrite(szShopName, sizeof(char), _MAX_NAMESIZE, fp);

		// 取得商店类型
		strcpy(szSubTitle, "Type");
		if(!::IniDataGet(szFile, szTitle, szSubTitle, nData))
		{
			sprintf(szMsg, "取商店%d TYPE出错,操作停止。", i);
			this->AddMsg(szMsg);
			fclose(fp);
			return;
		}
		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 = 119;
	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++)
	{
		if (EOF == fscanf(fp, "%u\n", &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))

⌨️ 快捷键说明

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