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

📄 datacovertdlg.cpp

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

#include "stdafx.h"
#include "DataCovert.h"
#include "DataCovertDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataCovertDlg dialog

CDataCovertDlg::CDataCovertDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDataCovertDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDataCovertDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CDataCovertDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDataCovertDlg)
	DDX_Control(pDX, IDC_LIST_MSG, m_ctrlListBox);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDataCovertDlg, CDialog)
	//{{AFX_MSG_MAP(CDataCovertDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_COMMAND(ID_MENUITEM_EXIT, OnMenuitemExit)
	ON_WM_KEYDOWN()
	ON_WM_CLOSE()
	ON_COMMAND(ID_MENUITEM_ABOUT, OnMenuitemAbout)
	ON_COMMAND(ID_MENUITEM_ITEMTYPE, OnMenuitemItemtype)
	ON_COMMAND(ID_MENUITEM_SHOPCOVERT, OnMenuitemShopcovert)
	ON_COMMAND(ID_MENUITEM_AUTOALLOT, OnMenuitemAutoallot)
	ON_COMMAND(ID_MENUITEM_CREATE_AUTO_ALLOT, OnMenuitemCreateAutoAllot)
	ON_COMMAND(ID_MENUITEM_LEVELEXP, OnMenuitemLevelexp)
	ON_COMMAND(ID_MENUITEM_ACTION, OnMenuitemAction)
	ON_COMMAND(ID_MENUITEM_USERHELPINFO_C, OnMenuitemUserhelpinfoC)
	ON_COMMAND(ID_MENUITEM_TIPS_C, OnMenuitemTipsC)
	ON_COMMAND(ID_MENUITEM_PETC, OnMenuitemPetc)
	ON_COMMAND(ID_MENUITEM_NAMELIST_C, OnMenuitemNamelistC)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDataCovertDlg message handlers

BOOL CDataCovertDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			
	SetIcon(m_hIcon, FALSE);		
	// TODO: Add extra initialization here
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CDataCovertDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else if((nID & 0xFFF0) ==  SC_CLOSE)
	{
		return;
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CDataCovertDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CDataCovertDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CDataCovertDlg::OnMenuitemExit() 
{
	// TODO: Add your command handler code here
	this->EndDialog(0);	
}

void CDataCovertDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CDataCovertDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	this->EndDialog(0);
	CDialog::OnClose();
}

void CDataCovertDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	CDialog::OnCancel();
}

//-------------------------------------------------------------------
void CDataCovertDlg::AddMsg(char* pszMsg)
{
	const int nMaxLines = 25;
	if(!pszMsg)
		return;
	if(m_ctrlListBox.GetCount() > nMaxLines)
		m_ctrlListBox.DeleteString(0);
	m_ctrlListBox.AddString(pszMsg);
}
//-------------------------------------------------------------------
void CDataCovertDlg::OnMenuitemAbout() 
{
	// TODO: Add your command handler code here
	this->AddMsg("####游戏数据转换工具(1.0) 如有任何操作疑问或错误请和黄宇航联系!####");
}
//-------------------------------------------------------------------
#include "ItemData.h"
void CDataCovertDlg::OnMenuitemItemtype() 
{
	// TODO: Add your command handler code here
	char szFile[]="ini/itemtype.ini";
	this->AddMsg("开始转换ItemType数据!");
	FILE* fp = fopen(szFile, "r");
	char szMsg[1024];
	if(!fp)
	{
		sprintf(szMsg, "打开文件:%s出错,操作停止。请确认文件是否存在或被锁定!", szFile);
		this->AddMsg(szMsg);
		return;
	}

	// 取记录数量
	unsigned int uRecordAmount;
	int nReturn = fscanf(fp, "Amount=%u\n", &uRecordAmount);
	if(nReturn <= 0)
	{
		this->AddMsg("读取记录数量失败,操作停止!");
		fclose(fp);
		return;
	}
	ItemTypeInfo* pInfo = new ItemTypeInfo[uRecordAmount];
	if(!pInfo)
	{
		this->AddMsg("分配记录临时内存失败,操作停止!");
		fclose(fp);
		return;
	}

	// 加载记录
	DWORD i = 0;
	
	for(i = 0; i < uRecordAmount; i++)
	{
		int	nData[50] = {0};
		char	szName[16] = "";
		char	szDesc[128] = "";
		nReturn = fscanf(fp, "%u %s %u %u %u %u %u %u %u %u %u %u %u %u %u %d %d %d %d %d %d %u %u %u %u %u %u %u %u %u %u %u %u %d %u %s\n", 
			&nData[0],
			szName,
			&nData[1],
			&nData[2],
			&nData[3],
			&nData[4],
			&nData[5],
			&nData[6],
			&nData[7],
			&nData[8],
			&nData[9],
			&nData[10],
			&nData[11],
			&nData[12],
			&nData[13],
			&nData[14],
			&nData[15],
			&nData[16],
			&nData[17],
			&nData[18],
			&nData[19],
			&nData[20],
			&nData[21],
			&nData[22],
			&nData[23],
			&nData[24],
			&nData[25],
			&nData[26],
			&nData[27],
			&nData[28],
			&nData[29],
			&nData[30],
			&nData[31],
			&nData[32],
			&nData[33],
			szDesc
			);

		if (nReturn != 36)
		{
			sprintf(szMsg, "读取第%u条记录出错,操作停止!", i);
			this->AddMsg(szMsg);
			fclose(fp);
			delete[] pInfo;
			return;
		}

		ItemTypeInfo* pMyInfo = pInfo + i;
		pMyInfo->uID						=	(DWORD)nData[0];
		strcpy(pMyInfo->szName, szName);
		pMyInfo->ucRequiredProfession		=	(unsigned char)nData[1];
		pMyInfo->ucRequiredWeaponSkill		=	(unsigned char)nData[2];
		pMyInfo->ucRequiredLevel			=	(unsigned char)nData[3];
		pMyInfo->ucRequiredSex				=	(unsigned char)nData[4];
		pMyInfo->usRequiredForce			=	(unsigned short)nData[5];
		pMyInfo->usRequiredSpeed			=	(unsigned short)nData[6];
		pMyInfo->usRequiredHealth 			=	(unsigned short)nData[7];
		pMyInfo->usRequiredSoul 			=	(unsigned short)nData[8];
		pMyInfo->ucMonopoly					=	(unsigned char)nData[9];
		pMyInfo->usWeight					=	(unsigned short)nData[10];
		pMyInfo->uPrice						=	nData[11];
		pMyInfo->uLuck						=	nData[12];
		pMyInfo->usMaxAttack				=	(short)nData[13];
		pMyInfo->usMinAttack				=	(short)nData[14];
		pMyInfo->usDefense					=	(short)nData[15];
		pMyInfo->usDexterity				=	(short)nData[16];
		pMyInfo->usDodge					=	(short)nData[17];
		pMyInfo->sLife						=	(short)nData[18];
		pMyInfo->sMana						=	(short)nData[19];
		pMyInfo->usAmount					=	(unsigned short)nData[20];
		pMyInfo->usAmountLimit				=	(unsigned short)nData[21];
		pMyInfo->ucStatus					=	(unsigned char)nData[22];
		pMyInfo->ucGem1						=	(unsigned char)nData[23];
		pMyInfo->ucGem2						=	(unsigned char)nData[24];
		pMyInfo->ucMagic1					=	(unsigned char)nData[25];
		pMyInfo->ucMagic2					=	(unsigned char)nData[26];
		pMyInfo->ucMagic3					=	(unsigned char)nData[27];
		pMyInfo->usMagicAttack				=	(unsigned short)nData[28];
		pMyInfo->usMagicDefence				=	(unsigned short)nData[29];
		pMyInfo->usRange					=	(unsigned short)nData[30];
		pMyInfo->usAttackSpeed				=	(unsigned short)nData[31];
		pMyInfo->usHitarte					=	nData[32];
		pMyInfo->usTarget					=   (unsigned short)nData[33];
		strcpy(pMyInfo->szDesc, szDesc);
	}	
	fclose(fp);
	
	// 打开目标文件
	char szDFile[]="ini/itemtype.dat";
	fp = fopen(szDFile, "wb");
	if(!fp)
	{
		sprintf(szMsg, "打开文件:%s出错,操作停止。请确认文件是否被锁定!", szDFile);
		this->AddMsg(szMsg);
		delete[] pInfo;
		return;
	}

	// 写数量
	fwrite(&uRecordAmount, sizeof(unsigned int), 1, fp);
	// 写索引
	for(i = 0; i < uRecordAmount; i++)
	{
		ItemTypeInfo* pMyInfo = pInfo + i;
		fwrite(&pMyInfo->uID, sizeof(unsigned int), 1, fp);
	}
	// 写记录
	fwrite(pInfo, sizeof(ItemTypeInfo), uRecordAmount, fp);

	sprintf(szMsg, "ItemType数据转换成功,文件写入%s,共有%u个记录。", szDFile, uRecordAmount);
	this->AddMsg(szMsg);
	fclose(fp);
	delete[] pInfo;
}
//-------------------------------------------------------------------

void CDataCovertDlg::OnMenuitemShopcovert() 
{
	// TODO: Add your command handler code here
	char szFile[]="ini/Shop.ini";
	char szDFile[]="ini/Shop.dat";
	char szMsg[128];
	FILE* fp = fopen(szDFile, "wb");
	if(!fp)
	{
		sprintf(szMsg, "打开文件:%s出错,操作停止。请确认文件是否被锁定!", szDFile);
		this->AddMsg(szMsg);
		return;
	}
	this->AddMsg("开始转换Shop数据!");	

	// 开始加载商店数据
	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;

⌨️ 快捷键说明

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