📄 datacovertdlg.cpp
字号:
}
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 + -