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

📄 rmtool.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			//Character Template Load
			POSITION pos = GetFirstDocTemplatePosition();
			pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
			pDocTemplate->OpenDocumentFile(NULL);
			pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
			pDocTemplate->OpenDocumentFile(NULL);			
		}
		break;

	default:	break;
	}

//	DBSCHEMA catalog[20];
//	g_pDb->QueryDBCatalog(catalog, 20, DRAGON_DB);

//	DBSCHEMA table[150];
//	g_pDb->QueryDBTable(table, 150, DRAGON_DB);

	return TRUE;

}


/////////////////////////////////////////////////////////////////////////////
// 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)
		// No message handlers
	//}}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()

// App command to run the dialog
void CRMToolApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
// CRMToolApp message handlers


BOOL CRMToolApp::InitDatabase()
{
	CoInitialize(NULL);		//COM 扼捞宏矾府甫 檬扁拳 		

	HRESULT hr = ::CoCreateInstance(
			CLSID_OLEDBTHREAD,
			NULL,
			CLSCTX_INPROC_SERVER,
			IID_OLEDBTHREAD,
			(void**)&g_pDb);

	if (FAILED(hr))
	{
		MessageBox(NULL,"Cannot create IID_OLEDBTHREAD","Error",NULL);
		return 0;
	}

	return TRUE;

}

int CRMToolApp::ExitInstance() 
{
	// TODO: Add your specialized code here and/or call the base class
	if(g_pNet)	
	{
		g_pNet->CloseConnection(0);
		g_pNet->ReleaseNetwork();
		g_pNet->Release();
	}

	if(g_pFt)	
		g_pFt->Release();		//Release甫 救窍聪 皋葛府啊 货绰焙..ぱ_-;;
		
	if(g_pDb)	
	{
		//Error this~!!!!
		g_pDb->ReleaseDBConnection(0);	//牢磊啊 0捞搁 葛电 Connection Release...
		g_pDb->Release();
	}
	
//	::CoFreeUnusedLibraries();
	::CoUninitialize();
	return CWinApp::ExitInstance();
}



BOOL CRMToolApp::InitFTModule()
{

	CoInitialize(NULL);		//COM 扼捞宏矾府甫 檬扁拳 		

	HRESULT hr = ::CoCreateInstance(
			CLSID_FILETRANSFER,
			NULL,
			CLSCTX_INPROC_SERVER,
			IID_FILETRANSFER,
			(void**)&g_pFt);

	if (FAILED(hr))
	{
		MessageBox(NULL,"Cannot create IID_FILETRANSFER","Error",NULL);
		return FALSE;
	}

/*
	g_pFt->Connect("203.248.248.229",25378);
	
	for(int i=0; i<20 ; i++)
	{
	PACKET_FILE_COPY packet(3, 5000, 1, "MapserverDummy2.chm");
	g_pFt->Send((char*)&packet, packet.GetPacketSize());
	}

	g_pFt->CloseClientSocket();
*/

	return TRUE;
}

BOOL CRMToolApp::InitClientNet()
{
	HRESULT hr = ::CoCreateInstance(
			CLSID_CLIENTNET,
			NULL,
			CLSCTX_INPROC_SERVER,
			IID_ICLIENTNET,
			(void**)&g_pNet);

	if (FAILED(hr))
	{
		MessageBox(NULL,"Cannot create IID_ICLIENTNET","Error",NULL);
		return FALSE;
	}
	g_pNet->CreateNetwork(m_pMainWnd->GetSafeHwnd());
//	int ret = g_pNet->ConnectToServer("211.174.52.133",25378);
	return TRUE;//020303 lsw
}

BOOL CRMToolApp::GetServerInfo()
{
	char path[ MAX_PATH ];
	__PATH
		char keyname[ 0xff ];							
//	sprintf(path,"%s\\Setup.ini",GetInstalledPath());
	
	

	
#ifndef __COMPACT__
	WCHAR sql[ 0xff ];
	QueryServerInfo rcvData[ MAX_SERVERNUM_PER_SERVERSET ];
	memset(rcvData, 0, sizeof(rcvData));
#endif

	int ServerSetIndex, ret; ServerSetIndex = 0, ret = 0;
	for(int i=1 ; i<= CURRENT_SERVERSET_NUM ; i++)
	{
		sprintf(keyname,"ServersetIndex%d",i);
 		m_ServerSetInfo[ i-1 ].nServerSetIndex  = ::GetPrivateProfileInt("ServerTool",keyname,0,path);		//ServerSetNum 罐酒柯促. 	
		sprintf(keyname,"ServersetName%d",i);
		::GetPrivateProfileString("ServerTool",keyname,"",m_ServerSetInfo[ i-1 ].szSetName ,
									sizeof(m_ServerSetInfo[ i-1 ].szSetName), path);	//ServerSetName 罐酒柯促. 


#ifndef __COMPACT__
		swprintf(sql,L"EXEC UP_RM_SERVER_INFO %d", m_ServerSetInfo[ i-1 ].nServerSetIndex);
		//ret = g_pDb->OpenRecord(sql, rcvData, 100, (BYTE)TOTAL_DB);//kyo
		ret = g_pDb->OpenRecord(sql, rcvData, 1024, (BYTE)TOTAL_DB);

		for(int k=0 ; k<ret ; k++)
		{
			memcpy(&m_ServerInfo[ i-1 ][ k ], &rcvData[ k ], sizeof(rcvData[0]));
		}

if( 20 == ::GetPrivateProfileInt("Admin","idCheck",-10,g_szSetupPath) )	//kyo
{
	LeaveLogInFile( "ret= %d ", ret);
	for(int k=0 ; k<ret ; k++)
	{
		LeaveLogInFile( "Get Type = %d,  index = %d ", m_ServerInfo[ i-1 ][ k ].ServerType, k);
	}
}


		if(ret < 0)	
		{
			MessageBox(NULL,"Failed query ServerInfo","Error",MB_OK);
			return FALSE;
		}
		else
			m_ServerSetInfo[ i-1 ].nServerNum = ret;
#endif

	}
	
	return TRUE;
}

BOOL CRMToolApp::LoadDefaultSetting()
{
	char path[ MAX_PATH ];
	__PATH
//	strcat(path,".\\Setup.ini");
//	sprintf(path,"%s\\Setup.ini",GetInstalledPath());

	char buffer[256];
	::GetCurrentDirectory(256, buffer);
//	MessageBox(NULL,buffer,NULL,NULL);

	CURRENT_SERVERSET_NUM = ::GetPrivateProfileInt("ServerTool","TotalServersetNum",0,path);
	m_DefaultView = ::GetPrivateProfileInt("Default","DefaultView",0,path);

	//捞芭绰 0捞 霓焊冠胶狼 "Select ServerSet" 1捞 惑侩 ..  2啊 2焙..   捞犯霸 唱啊磊..
	m_DefaultServerSetIndex = ::GetPrivateProfileInt("Default","DefaultServersetIndex",0,path);


	//GameServerData 版肺 包访 悸泼 阂矾坷扁 
	char Key[ 128 ];	char temp[ MAX_PATH ];
	::GetPrivateProfileString("PathInfo","GameServerDataServerIP","",m_szGameServerDataIp,16,path);
	::GetPrivateProfileString("PathInfo","ServerExecAddress","",m_szServerExecAddress,MAX_PATH,path);
	::GetPrivateProfileString("PathInfo","IniMakePath","",temp,MAX_PATH,path);
	m_szIniMakePath = temp;

	for(int i=1; i<=CURRENT_SERVERSET_NUM ; i++)
	{
		sprintf(Key,"GameServerDataPath%d",i);
		::GetPrivateProfileString("PathInfo",Key,"",m_szGameServerDataPath[ i-1 ], MAX_PATH, path);
		sprintf(Key,"RemoteGameServerDataPath%d",i);
		::GetPrivateProfileString("PathInfo",Key,"",m_szRemoteGameServerDataPath[ i-1 ], MAX_PATH, path);
		sprintf(Key,"DownloadPath%d",i);
		::GetPrivateProfileString("PathInfo",Key,"",m_szDownloadPath[ i-1 ],MAX_PATH,path);
	}

	::GetPrivateProfileString("PathInfo","GameServerUploadPath","",m_szUploadPath, sizeof(m_szUploadPath), path);
	
	return TRUE;
}

BOOL CRMToolApp::LogInProxy()
{
	char path[ MAX_PATH ];

	__PATH
//	sprintf(path,"%s\\Setup.ini",GetInstalledPath());
//	char    ip[ MAX_SERVERSET_NUM ][ 16 ];	memset(ip,0,sizeof(ip));
//	WORD	port[ MAX_SERVERSET_NUM ];
	char	key[ 0xff ];

	for(int i=1; i<=CURRENT_SERVERSET_NUM ; i++)
	{
		sprintf(key,"proxy%d",i);
		::GetPrivateProfileString("ProxyServerInfo",key,"",m_ProxyIp[ i-1 ],16, path);
		sprintf(key,"port%d",i); 
		m_ProxyPort[ i-1 ] = (WORD)::GetPrivateProfileInt("ProxyServerInfo",key,0,path);
		
		//Proxy Server俊 肺弊牢 窍绊 牧池记 牢郸胶 历厘 
		m_nCI[ i-1 ] = (unsigned short)g_pNet->ConnectToServer(m_ProxyIp[ i-1 ], m_ProxyPort[ i-1 ]);//020303 lsw
		if(!m_nCI[ i-1 ])
		{
			char str[0xff];
			sprintf(str,"Fail to connect proxyserver, ConnectionIndex = %d",i-1);
			MessageBox(NULL,str,"Error",MB_OK);
			continue;
			//return FALSE;
		}

		//舅荐 绝绰 菩哦. 捞吧 焊具郴瘤. 促框巴捞 楷搬捞 等促. why???
		MANAGER_PACKET_HEADER packet;
		packet.wCMD = MANAGER_CLIENT_FIRST_PACKET_TYPE;
		packet.dwCRC = MANAGER_CLIENT_FIRST_PACKET_CRC;
		g_pNet->Send(m_nCI[ i-1 ], (char*)&packet, sizeof(packet));

		PACKET_RM_LOGIN LoginPacket(m_LogInfo.ID, m_LogInfo.Name);
		g_pNet->Send(m_nCI[ i-1 ], (char*)&LoginPacket, LoginPacket.GetPacketSize());
	}

	return TRUE;
}

void CRMToolApp::OpenServerTemplate()
{
	CMultiDocTemplate* pDocTemplate;

	//Server Template Load
	POSITION pos = GetFirstDocTemplatePosition();
	pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(pos);
	pDocTemplate->OpenDocumentFile(NULL);
}

int CRMToolApp::FindIndexByPort(int nServerSetIndex, WORD wPort)
{	
	//努扼捞攫飘聪瘪..  弊成 公侥窍霸 八祸窍磊..  ぱ_-;;  秦浆静扁 蓖满寸..ぱ.-
	for(int i=0; i<MAX_SERVERNUM_PER_SERVERSET ; i++)
	{
		if(m_ServerInfo[ nServerSetIndex ][i].Port == wPort)
			return i;
	}
	return 0;//020303 lsw
}

void CRMToolApp::DelTree(char *szFolderPath)
{
	//颇老疙 盖 场俊 \啊 嘿栏搁 救等寸..ぱ_-;;
	SHFILEOPSTRUCT FileOp = {0};
	char szTemp[MAX_PATH];

	strcpy(szTemp, szFolderPath);
	szTemp[strlen(szFolderPath) + 1] = NULL; 

	FileOp.hwnd = NULL;
	FileOp.wFunc = FO_DELETE;
	FileOp.pFrom = szTemp;
	FileOp.pTo = NULL;
	FileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI;
	FileOp.fAnyOperationsAborted = FALSE;
	FileOp.hNameMappings = NULL;
	FileOp.lpszProgressTitle = NULL;

	SHFileOperation(&FileOp);
}

BOOL CRMToolApp::InitDragonDB()
{
	int result = 0;
	//char szDb[ 0xff ];
	WCHAR wszDb[ 0xff ];
	
	//惑侩 DragonDB 立加 
	WCHAR wszAddress[ 128 ];

	for( int i = 0 ; i < CURRENT_SERVERSET_NUM ; i++ )
	{

		DRAGON_DB[i] = g_pDb->CreateDBConnection();

		//sprintf(szDb,"%s",g_NationAccount.szDragon_DB_DefaultName[ i ] );
		//g_pDb->KSCToUnicode(szDb, wszDb);
		g_pDb->KSCToUnicode( g_NationAccount.szDragon_DB_DefaultName[ i ], wszDb);
		g_pDb->KSCToUnicode( g_NationAccount.szDragon_DB_Address[ i ], wszAddress );

		result = g_pDb->Initialize(wszAddress, wszDb ,g_NationAccount.szDragon_Account,
									g_NationAccount.szDragon_Password, (BYTE)DRAGON_DB[i] );
		
		if(result < 0)
		{
			char szBuffer1[ 0xff ];
			::WideCharToMultiByte(CP_ACP, 0, wszAddress,-1, szBuffer1,  100, NULL, NULL);
			CString szSendMsg;
			szSendMsg.Format( "Failed  Connection to GameDatabase In %s", szBuffer1 );
			AfxMessageBox( szSendMsg );

			g_pDb->ReleaseDBConnection( (BYTE)DRAGON_DB[i] );

			//kyo
			DRAGON_DB[i] = -1;
			//return FALSE;
		}
	}

	//Ability 茄拌摹 Query
	m_nAbilityLimitCount = g_pDb->OpenRecord(L"select * from ability_limit order by step , pre_Class asc", m_AbilityLimit, MAX_ABILITY_DATA, 
								(BYTE)DRAGON_DB[ GET_GAMEDATABASE_INIT ] ); // 盖付瘤阜铂肺 秦蝶.
	
	if(m_nAbilityLimitCount < 0)
		AfxMessageBox("Fail to load RM_ABILITY_LIMIT");
	
	//Level, Levelstep 弥措蔼 Query
	NPC_LV2EXP_MAX_VALUE value;
	
	int ret = g_pDb->OpenRecord(L"select MAX(lv) as [level] , MAX(step) as step from npc_lv2exp", &value, 1, 
								(BYTE)(DRAGON_DB[ GET_GAMEDATABASE_INIT ]) );

	if(ret < 0)
		AfxMessageBox("Fail to load RM_GET_MAX_VALUE");
	
	//m_nMaxLevel = value.dwMaxLevel;
	m_nMaxLevel = MAX_CHARACTER_LEVEL;// 303007
	m_nMaxLevelStep = value.dwMaxStep;


	//阿阿狼 辑滚悸狼 MapInfo Loading
	for(i=0; i< CURRENT_SERVERSET_NUM; i++)
	{
		if( g_iNation == NATION_JAPAN )
		{
			ret = g_pDb->OpenRecord(L"select RTRIM(mapfile), RTRIM(LTRIM(mapname)), nation from map_info", m_MapInfoUNI[ i ], 100, (BYTE)DRAGON_DB[ i ]);
			SetMapInfo( m_MapInfo[i], m_MapInfoUNI[i] );
		}
		else
		{
			ret = g_pDb->OpenRecord(L"select RTRIM(mapfile), RTRIM(LTRIM(mapname)), nation from map_info", m_MapInfo[ i ], 100, (BYTE)DRAGON_DB[ i ]);
		}

		if(ret < 0)
			AfxMessageBox("Fail to load RM_GET_MAP_NAME");
	    else if(ret > 0)	
			m_nMapCount[ i ] = ret;
	}

	//阿阿狼 辑滚悸狼 DBSchema 肺爹 
	for(i=0; i< CURRENT_SERVERSET_NUM; i++)
	{
		ret = g_pDb->QueryDBCatalog(m_DbSchema[i], 50, (BYTE)DRAGON_DB[ i ]);

		if(ret < 0)
			AfxMessageBox("Fail to load DBSCHEMA");
	    else if(ret > 0)	
			m_nDbCount[ i ]  = ret;
	}

// 021115 怕惫巩力

///



	return TRUE;
}


BOOL CRMToolApp::LogServer( int nServerSet, CString szInfo)
{
//	if(m_LogInfo.LoginType == 10000)
//		return TRUE;
#ifdef RM_LOG_MODE
	char szQuery[ 1024 ];
	WCHAR wszQuery[ 1024 ];

	//kyo now
	sprintf(szQuery,"EXEC UP_RM_LOG '%s',%d,'%s','%s'",m_LogInfo.ID, nServerSet + 100, m_szLocalAddress, szInfo);
	//sprintf(szQuery,"EXEC UP_RM_LOG '%s',%d,'%s','%s'",m_LogInfo.ID, m_LogInfo.LoginType, m_szLocalAddress, szInfo);
	g_pDb->KSCToUnicode(szQuery,wszQuery);
	
	//int reval = (BYTE)g_pDb->ExecuteSQL(wszQuery,TOTAL_DB);
	return g_pDb->ExecuteSQL(wszQuery,(BYTE)TOTAL_DB);
#endif

	return true;
}

bool DecoadFile( char *filename, void *pData, int size )
{
	CHSEL_STREAM m_hsel;
	FILE *fp = fopen( filename, "rb" );
	if( !fp ) return false;
	
	int nVersion = 0;
	fread( (void*)(&nVersion), sizeof(int), 1, fp ); 
	
	if (m_hsel.GetVersion() != nVersion)  return false;
	HselInit deinit;
	fread( (void*)(&deinit), sizeof(HselInit), 1, fp );
	if (!m_hsel.Initial(deinit))  return false;
	fread( pData, 1, size, fp );
	m_hsel.Decrypt((char *)pData, size);
	fclose( fp );
	return true;
}

⌨️ 快捷键说明

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