📄 datacovertdlg1.cpp
字号:
// 开始加载商店数据
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 + -