config.cpp

来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C++ 代码 · 共 456 行

CPP
456
字号
#include "stdafx.h"
#include "config.h"
#include "resource.h"
#include "manager.h"
#include "MasterServer.h"


CConfig::CConfig()
{
}

CConfig::~CConfig()
{
}


CMSConfig::CMSConfig()
{
}

CMSConfig::~CMSConfig()
{
}

LRESULT CALLBACK CMSConfig::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		g_cMasterServer.GetManager()->m_cpConfig[M_MASTERSERVER]->LoadINI(hDlg);
		SendMessage(GetDlgItem(hDlg, IDC_CM_DBLIST), LB_SETCURSEL, 0, 0);
		break;

	case WM_DESTROY:
		g_cMasterServer.GetManager()->m_hDlg = NULL;
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
			g_cMasterServer.GetManager()->m_cpConfig[M_MASTERSERVER]->SaveINI(hDlg);
			break;
		case IDCANCEL:
			DestroyWindow(hDlg);
			break;

		case IDC_CM_BLOCKADD:
			if(!SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKIP), IPM_ISBLANK, 0, 0))
			{
				DWORD dwAddr;
				IN_ADDR in_addr;
				char szBlock[LEN_BUFFER+1];
				char szNote[LEN_BUFFER+1];

				SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKIP), IPM_GETADDRESS, 0, (LPARAM)&dwAddr);

				in_addr.s_net = FIRST_IPADDRESS(dwAddr);
				in_addr.s_host = SECOND_IPADDRESS(dwAddr);
				in_addr.s_lh = THIRD_IPADDRESS(dwAddr);
				in_addr.s_impno = FOURTH_IPADDRESS(dwAddr);

				if(GetDlgItemText(hDlg, IDC_CM_BLOCKNOTE, szNote, LEN_BUFFER))
					sprintf(szBlock, "%s  %s", inet_ntoa(in_addr), szNote);
				else
					strcpy(szBlock, inet_ntoa(in_addr));

				SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKLIST), LB_ADDSTRING, 0, (LPARAM)szBlock);
			}
			break;

		case IDC_CM_BLOCKDEL:
			{
				int iSelection = SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKLIST), LB_GETCURSEL, 0, 0);
				if(iSelection == LB_ERR)
					break;

				SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKLIST), LB_DELETESTRING, iSelection, 0);
			}
			break;

		case IDC_CM_DSN:
			if(HIWORD(wParam) == 768)
			{
				HWND hListBox = GetDlgItem(hDlg, IDC_CM_DBLIST);
				int iSelection = SendMessage(hListBox, LB_GETCURSEL, 0, 0);

				if(iSelection == LB_ERR)
					break;

				char id[LEN_ID+1];
				char database[LEN_SVRNAME+1];
				char line[LEN_BUFFER+1];
				DWORD dwAddr;

				SendMessage(GetDlgItem(hDlg, IDC_CM_DSN), IPM_GETADDRESS, 0, (LPARAM)&dwAddr);
				GetDlgItemText(hDlg, IDC_CM_DSA, id, LEN_ID);
				GetDlgItemText(hDlg, IDC_CM_DBN, database, LEN_SVRNAME);

				id[LEN_ID] = NULL;
				database[LEN_SVRNAME] = NULL;

				IN_ADDR in_addr;
				in_addr.s_net = FIRST_IPADDRESS(dwAddr);
				in_addr.s_host = SECOND_IPADDRESS(dwAddr);
				in_addr.s_lh = THIRD_IPADDRESS(dwAddr);
				in_addr.s_impno = FOURTH_IPADDRESS(dwAddr);

				sprintf(line, "%s  %s  %s", database, inet_ntoa(in_addr), id);
				SendMessage(hListBox, LB_DELETESTRING, iSelection, 0);
				SendMessage(hListBox, LB_INSERTSTRING, iSelection, (LPARAM)line);
				SendMessage(hListBox, LB_SETCURSEL, iSelection, 0);
			}
			break;

		case IDC_CM_DSP:
			if(HIWORD(wParam) == EN_UPDATE)
			{
				HWND hPwdListBox = GetDlgItem(hDlg, IDC_CM_PWDLIST);
				int iSelection = SendMessage(GetDlgItem(hDlg, IDC_CM_DBLIST), LB_GETCURSEL, 0, 0);

				if(iSelection == LB_ERR)
					break;

				char pwd[LEN_PWD+1];
				GetDlgItemText(hDlg, IDC_CM_DSP, pwd, LEN_PWD);

				pwd[LEN_PWD] = NULL;

				SendMessage(hPwdListBox, LB_DELETESTRING, iSelection, 0);
				SendMessage(hPwdListBox, LB_INSERTSTRING, iSelection, (LPARAM)pwd);
				SendMessage(hPwdListBox, LB_SETCURSEL, iSelection, 0);
			}
			break;

		case IDC_CM_DSA:
		case IDC_CM_DBN:
			if(HIWORD(wParam) == EN_UPDATE)
			{
				HWND hListBox = GetDlgItem(hDlg, IDC_CM_DBLIST);
				int iSelection = SendMessage(hListBox, LB_GETCURSEL, 0, 0);

				if(iSelection == LB_ERR)
					break;

				char id[LEN_ID+1];
				char database[LEN_SVRNAME+1];
				char line[LEN_BUFFER+1];
				DWORD dwAddr;

				SendMessage(GetDlgItem(hDlg, IDC_CM_DSN), IPM_GETADDRESS, 0, (LPARAM)&dwAddr);
				GetDlgItemText(hDlg, IDC_CM_DSA, id, LEN_ID);
				GetDlgItemText(hDlg, IDC_CM_DBN, database, LEN_SVRNAME);

				id[LEN_ID] = NULL;
				database[LEN_SVRNAME] = NULL;

				IN_ADDR in_addr;
				in_addr.s_net = FIRST_IPADDRESS(dwAddr);
				in_addr.s_host = SECOND_IPADDRESS(dwAddr);
				in_addr.s_lh = THIRD_IPADDRESS(dwAddr);
				in_addr.s_impno = FOURTH_IPADDRESS(dwAddr);

				sprintf(line, "%s  %s  %s", database, inet_ntoa(in_addr), id);
				SendMessage(hListBox, LB_DELETESTRING, iSelection, 0);
				SendMessage(hListBox, LB_INSERTSTRING, iSelection, (LPARAM)line);
				SendMessage(hListBox, LB_SETCURSEL, iSelection, 0);
			}
			break;
		}
		break;
	}
	
   	return FALSE;
}

BOOL CMSConfig::LoadINI(HWND hDlg)
{
	CONFIG sConfig;

	sConfig.sys_port_tcp = GetPrivateProfileInt("CONFIG", "TCP_PORT", 0, MSINIT);
	sConfig.sys_port_udp = GetPrivateProfileInt("CONFIG", "UDP_PORT", 0, MSINIT);
	sConfig.sys_maxuser = GetPrivateProfileInt("CONFIG", "MAX_USER", 0, MSINIT);
	sConfig.sys_maxlocal = GetPrivateProfileInt("CONFIG", "MAX_LOCAL", 0, MSINIT);
	sConfig.sys_cgiproc = GetPrivateProfileInt("CONFIG", "MAX_CGIPROC", 1, MSINIT);
	sConfig.sys_frame = GetPrivateProfileInt("CONFIG", "FS_FRAME", 120, MSINIT);
	sConfig.sys_block_cnt = GetPrivateProfileInt("CONFIG", "CNT_BLOCK_IP", 0, MSINIT);

	sConfig.sys_version_hi = GetPrivateProfileInt("GAME", "VERSION_HI", 0, MSINIT);
	sConfig.sys_version_lo = GetPrivateProfileInt("GAME", "VERSION_LO", 0, MSINIT);

	SetDlgItemInt(hDlg, IDC_CM_TCPPORT, sConfig.sys_port_tcp, TRUE);
	SetDlgItemInt(hDlg, IDC_CM_UDPPORT, sConfig.sys_port_udp, TRUE);
	SetDlgItemInt(hDlg, IDC_CM_MAXCLIENT, sConfig.sys_maxuser, TRUE);
	SetDlgItemInt(hDlg, IDC_CM_MAXLOCAL, sConfig.sys_maxlocal, TRUE);
	SetDlgItemInt(hDlg, IDC_CM_FRAME, sConfig.sys_frame, TRUE);

	char itemfile[LEN_FILENAME+1];
	char version[8];
	sprintf(version, "%03d.%03d", sConfig.sys_version_hi, sConfig.sys_version_lo);
	SetDlgItemText(hDlg, IDC_CM_VERSION, version);

	GetPrivateProfileString("GAME", "WEAPON_ITEMFILE", NULL, itemfile, sizeof(itemfile), MSINIT);
	SetDlgItemText(hDlg, IDC_CM_WEAPONFILE, itemfile);
	GetPrivateProfileString("GAME", "ASSIST_ITEMFILE", NULL, itemfile, sizeof(itemfile), MSINIT);
	SetDlgItemText(hDlg, IDC_CM_ASSISTFILE, itemfile);
	GetPrivateProfileString("GAME", "MECHANIC_ITEMFILE", NULL, itemfile, sizeof(itemfile), MSINIT);
	SetDlgItemText(hDlg, IDC_CM_MECHANICFILE, itemfile);

	int i;
	char line[LEN_BUFFER+1];
	char source[LEN_SVRNAME+1];
	char database[LEN_SVRNAME+1];
	char id[LEN_ID+1];
	char pwd[LEN_PWD+1];
	char ip[LEN_IP+1];
	char note[LEN_TITLE+1];
	IN_ADDR in_addr;

	i=0;
	while(i < MAX_CONNECTION_DB)
	{
		GetPrivateProfileString("LIST_CONNECTION_DB", itoa(i, id, 10), NULL, line, sizeof(line), MSINIT);
		sscanf(line, "%s %s %s %s", database, source, id, pwd);
		sprintf(line, "%s  %s  %s", database, source, id);
		in_addr.s_addr = inet_addr(source);

		SendMessage(GetDlgItem(hDlg, IDC_CM_DSN), IPM_SETADDRESS, 0, (LPARAM)MAKEIPADDRESS(in_addr.s_net, in_addr.s_host, in_addr.s_lh, in_addr.s_impno));
		SendMessage(GetDlgItem(hDlg, IDC_CM_DBLIST), LB_ADDSTRING, 0, (LPARAM)line);
		SendMessage(GetDlgItem(hDlg, IDC_CM_PWDLIST), LB_ADDSTRING, 0, (LPARAM)pwd);

		SetDlgItemText(hDlg, IDC_CM_DSA, id);
		SetDlgItemText(hDlg, IDC_CM_DSP, pwd);
		SetDlgItemText(hDlg, IDC_CM_DBN, database);

		++i;
	}

	i=0;
	while(i < sConfig.sys_block_cnt)
	{
		GetPrivateProfileString("LIST_BLOCK_IP", itoa(i, id, 10), NULL, line, sizeof(line), MSINIT);

		note[0] = NULL;
		sscanf(line, "%s %s", ip, note);

		if(note[0])
		{
			sprintf(line, "%s  %s", ip, note);
			SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKLIST), LB_ADDSTRING, 0, (LPARAM)line);
		}
		else
			SendMessage(GetDlgItem(hDlg, IDC_CM_BLOCKLIST), LB_ADDSTRING, 0, (LPARAM)ip);

		++i;
	}

	return TRUE;
}

BOOL CMSConfig::SaveINI(HWND hDlg)
{
	char szLine[LEN_BUFFER+1];
	char szWord[6];
	char szFloat[8];
	char szItemFile[LEN_FILENAME+1];
	char szPwd[LEN_PWD+1];

	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_TCPPORT, szWord, 6);
	WritePrivateProfileString("CONFIG", "TCP_PORT", szWord, MSINIT);
	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_UDPPORT, szWord, 6);
	WritePrivateProfileString("CONFIG", "UDP_PORT", szWord, MSINIT);
	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_MAXCLIENT, szWord, 6);
	WritePrivateProfileString("CONFIG", "MAX_USER", szWord, MSINIT);
	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_MAXLOCAL, szWord, 6);
	WritePrivateProfileString("CONFIG", "MAX_LOCAL", szWord, MSINIT);
	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_FRAME, szWord, 6);
	WritePrivateProfileString("CONFIG", "FS_FRAME", szWord, MSINIT);

	GetDlgItemText(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_VERSION, szFloat, 8);
	char *pComma = strstr(szFloat, ".");
	if(!pComma)	return FALSE;
	*pComma = NULL;		++pComma;

	WritePrivateProfileString("GAME", "VERSION_HI", szFloat, MSINIT);
	WritePrivateProfileString("GAME", "VERSION_LO", pComma, MSINIT);

	GetDlgItemText(hDlg, IDC_CM_WEAPONFILE, szItemFile, LEN_FILENAME);
	WritePrivateProfileString("GAME", "WEAPON_ITEMFILE", szItemFile, MSINIT);
	GetDlgItemText(hDlg, IDC_CM_ASSISTFILE, szItemFile, LEN_FILENAME);
	WritePrivateProfileString("GAME", "ASSIST_ITEMFILE", szItemFile, MSINIT);
	GetDlgItemText(hDlg, IDC_CM_MECHANICFILE, szItemFile, LEN_FILENAME);
	WritePrivateProfileString("GAME", "MECHANIC_ITEMFILE", szItemFile, MSINIT);

	HWND hListBox = GetDlgItem(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_DBLIST);
	HWND hPwdListBox = GetDlgItem(g_cMasterServer.GetManager()->m_hDlg, IDC_CM_PWDLIST);
	int i=0;
	while(i < MAX_CONNECTION_DB)
	{
		SendMessage(hListBox, LB_GETTEXT, i, (LPARAM)szLine);
		SendMessage(hPwdListBox, LB_GETTEXT, i, (LPARAM)szPwd);
		sprintf(szLine + strlen(szLine), "  %s", szPwd);

		WritePrivateProfileString("LIST_CONNECTION_DB", itoa(i, szWord, 10), szLine, MSINIT);
		++i;
	}

	hListBox = GetDlgItem(hDlg, IDC_CM_BLOCKLIST);
	int nCount = SendMessage(hListBox, LB_GETCOUNT, 0, 0);
	WritePrivateProfileString("CONFIG", "CNT_BLOCK_IP", itoa(nCount, szWord, 10), MSINIT);

	while(nCount--)
	{
		SendMessage(hListBox, LB_GETTEXT, nCount, (LPARAM)szLine);

		WritePrivateProfileString("LIST_BLOCK_IP", itoa(nCount, szWord, 10), szLine, MSINIT);
		++i;
	}

	return TRUE;
}

CLSConfig::CLSConfig()
{
}

CLSConfig::~CLSConfig()
{
}

LRESULT CALLBACK CLSConfig::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		g_cMasterServer.GetManager()->m_cpConfig[M_LOBBYSERVER]->LoadINI(hDlg);
		break;

	case WM_DESTROY:
		g_cMasterServer.GetManager()->m_hDlg = NULL;
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
		case IDCANCEL:
			DestroyWindow(hDlg);
			break;
		}
		break;
	}
	
   	return FALSE;
}

BOOL CLSConfig::LoadINI(HWND hDlg)
{
	return TRUE;
}

BOOL CLSConfig::SaveINI(HWND hDlg)
{
	return TRUE;
}

CGSConfig::CGSConfig()
{
}

CGSConfig::~CGSConfig()
{
}

LRESULT CALLBACK CGSConfig::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		g_cMasterServer.GetManager()->m_cpConfig[M_GAMESERVER]->LoadINI(hDlg);
		break;

	case WM_DESTROY:
		g_cMasterServer.GetManager()->m_hDlg = NULL;
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
		case IDCANCEL:
			DestroyWindow(hDlg);
			break;
		}
		break;
	}

   	return FALSE;
}

BOOL CGSConfig::LoadINI(HWND hDlg)
{
	return TRUE;
}

BOOL CGSConfig::SaveINI(HWND hDlg)
{
	return TRUE;
}


CPSConfig::CPSConfig()
{
}

CPSConfig::~CPSConfig()
{
}

LRESULT CALLBACK CPSConfig::DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
	case WM_INITDIALOG:
		g_cMasterServer.GetManager()->m_cpConfig[M_PATCHSERVER]->LoadINI(hDlg);
		break;

	case WM_DESTROY:
		g_cMasterServer.GetManager()->m_hDlg = NULL;
		break;

	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
		case IDCANCEL:
			DestroyWindow(hDlg);
			break;
		}
		break;
	}

   	return FALSE;
}

BOOL CPSConfig::LoadINI(HWND hDlg)
{
	return TRUE;
}

BOOL CPSConfig::SaveINI(HWND hDlg)
{
	return TRUE;
}

⌨️ 快捷键说明

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