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

📄 serverpatch.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	char temp[ 0xff ];				
	
	int si = pView->m_nCurServerSet;	//ServerIndex(si)
	if(si < 0)		return;

	ServerInfo *pInfo = NULL;
	
	for(int i=0; i< m_pApp->m_ServerSetInfo[ si ].nServerNum ; i++)
	{
		
		pInfo = &m_pApp->m_ServerInfo[si][i];

		//辑滚疙 
		item.mask = LVIF_TEXT | LVIF_PARAM;
		item.pszText = pInfo->MapName;
		item.iItem = i;					//青锅龋 
		item.iSubItem = 0;				//凯锅龋 
		item.lParam = pInfo->Port;
		c_SelectList.InsertItem(&item);

		
		//Port 锅龋 
		item.mask = LVIF_TEXT;
		item.iSubItem = 1;
		item.pszText = _itoa(pInfo->Port, temp, 10);
		c_SelectList.SetItem(&item);

		//泅犁 惑怕 
		sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
		item.mask = LVIF_TEXT;
		item.iSubItem = 2;
		item.pszText = temp;
		c_SelectList.SetItem(&item);

		//辑滚鸥涝 
		item.mask = LVIF_TEXT;
		item.iSubItem = 3;
		switch(pInfo->ServerType)
		{
		case SERVER_TYPE_PROXY:		item.pszText = "PROXY";		break;
		case SERVER_TYPE_AGENT:		item.pszText = "AGENT";		break;
		case SERVER_TYPE_DBDEMON:	item.pszText = "DBDEMON";	break;
		case SERVER_TYPE_MAP:		item.pszText = "MAP";		break;
		}
		c_SelectList.SetItem(&item);

		//System
		item.mask = LVIF_TEXT;
		item.iSubItem = 4;
		item.pszText = pInfo->MachineName;
		c_SelectList.SetItem(&item);

		//Machine
		item.mask = LVIF_TEXT;
		item.iSubItem = 5;
		item.pszText = pInfo->Ip;
		c_SelectList.SetItem(&item);
	}
	CountConnectServer();
}

void CServerPatch::OnRight() 
{
	// TODO: Add your control notification handler code here
	int nItem,port,i=0,count=0;
	LVITEM item;
	char str[128];

	count = c_AllList.GetItemCount();

	while(count > 0)
	{
		nItem = c_AllList.GetNextItem( -1, LVNI_SELECTED );
		
		if( nItem < 0 ) break;

		port = atoi(c_AllList.GetItemText(nItem,1));

		i = c_SelectList.GetItemCount();
		c_AllList.GetItemText(nItem,0,str,128);
		//辑滚疙 
		item.mask = LVIF_TEXT | LVIF_PARAM;
		item.pszText = str;
		item.iItem = i;					//青锅龋 
		item.iSubItem = 0;				//凯锅龋 
		item.lParam = port;
		c_SelectList.InsertItem(&item);

		
		c_AllList.GetItemText(nItem,1,str,128);
		//Port 锅龋 
		item.mask = LVIF_TEXT;
		item.iSubItem = 1;
		item.pszText = str;
		c_SelectList.SetItem(&item);

		c_AllList.GetItemText(nItem,2,str,128);
		//泅犁 惑怕 
		item.mask = LVIF_TEXT;
		item.iSubItem = 2;
		item.pszText = str;
		c_SelectList.SetItem(&item);

		c_AllList.GetItemText(nItem,3,str,128);
		//辑滚鸥涝 
		item.mask = LVIF_TEXT;
		item.iSubItem = 3;
		item.pszText = str;
		c_SelectList.SetItem(&item);

		c_AllList.GetItemText(nItem,4,str,128);
		//System
		item.mask = LVIF_TEXT;
		item.iSubItem = 4;
		item.pszText = str;
		c_SelectList.SetItem(&item);

		c_AllList.GetItemText(nItem,5,str,128);
		//Ip
		item.mask = LVIF_TEXT;
		item.iSubItem = 5;
		item.pszText = str;
		c_SelectList.SetItem(&item);

	
		//盖 关栏肺 胶农费官 捞悼..
		POINT    point;
		CHeaderCtrl* pHeader = (CHeaderCtrl*)c_SelectList.GetDlgItem(0);
		RECT rect;
		pHeader->GetClientRect( &rect );
		int header = rect.bottom;
		c_SelectList.GetItemPosition(i, &point);
		c_SelectList.Scroll(CSize(0, point.y - header));

		c_AllList.DeleteItem(nItem);

        count--;
	}

	CountConnectServer();
}

void CServerPatch::OnLeft() 
{
	int nItem,port,i=0,count=0;
	LVITEM item;
	char str[128];


	count = c_SelectList.GetItemCount();

	while(count > 0)
	{
		nItem = c_SelectList.GetNextItem( -1, LVNI_SELECTED );
		
		if( nItem < 0 ) break;

		port = atoi(c_SelectList.GetItemText(nItem,1));

		i = c_AllList.GetItemCount();
		c_SelectList.GetItemText(nItem,0,str,128);
		//辑滚疙 
		item.mask = LVIF_TEXT | LVIF_PARAM;
		item.pszText = str;
		item.iItem = i;					//青锅龋 
		item.iSubItem = 0;				//凯锅龋 
		item.lParam = port;
		c_AllList.InsertItem(&item);

		
		c_SelectList.GetItemText(nItem,1,str,128);
		//Port 锅龋 
		item.mask = LVIF_TEXT;
		item.iSubItem = 1;
		item.pszText = str;
		c_AllList.SetItem(&item);

		c_SelectList.GetItemText(nItem,2,str,128);
		//泅犁 惑怕 
		item.mask = LVIF_TEXT;
		item.iSubItem = 2;
		item.pszText = str;
		c_AllList.SetItem(&item);

		c_SelectList.GetItemText(nItem,3,str,128);
		//辑滚鸥涝 
		item.mask = LVIF_TEXT;
		item.iSubItem = 3;
		item.pszText = str;
		c_AllList.SetItem(&item);

		c_SelectList.GetItemText(nItem,4,str,128);
		//System
		item.mask = LVIF_TEXT;
		item.iSubItem = 4;
		item.pszText = str;
		c_AllList.SetItem(&item);

		c_SelectList.GetItemText(nItem,5,str,128);
		//Ip
		item.mask = LVIF_TEXT;
		item.iSubItem = 5;
		item.pszText = str;
		c_AllList.SetItem(&item);


		//盖 关栏肺 胶农费官 捞悼..
		POINT    point;
		CHeaderCtrl* pHeader = (CHeaderCtrl*)c_AllList.GetDlgItem(0);
		RECT rect;
		pHeader->GetClientRect( &rect );
		int header = rect.bottom;
		c_AllList.GetItemPosition(i, &point);
		c_AllList.Scroll(CSize(0, point.y - header));

		c_SelectList.DeleteItem(nItem);

		count--; 
	}

	CountConnectServer();
}

void CServerPatch::OnLeftAll() 
{
	// TODO: Add your control notification handler code here
	c_AllList.DeleteAllItems();
	c_SelectList.DeleteAllItems();

	//m_pApp = (CRMToolApp*)AfxGetApp();		//App努贰胶 器牢磐 悸泼 
	CServerView* pView = (CServerView*)GetParent();
	
	LVITEM item;
	char temp[ 0xff ];				
	
	int si = pView->m_nCurServerSet;	//ServerIndex(si)
	if(si < 0)		return;

	ServerInfo *pInfo = NULL;
	
	for(int i=0; i< m_pApp->m_ServerSetInfo[ si ].nServerNum ; i++)
	{
		
		pInfo = &m_pApp->m_ServerInfo[si][i];

		//辑滚疙 
		item.mask = LVIF_TEXT | LVIF_PARAM;
		item.pszText = pInfo->MapName;
		item.iItem = i;					//青锅龋 
		item.iSubItem = 0;				//凯锅龋 
		item.lParam = pInfo->Port;
		c_AllList.InsertItem(&item);

		
		//Port 锅龋 
		item.mask = LVIF_TEXT;
		item.iSubItem = 1;
		item.pszText = _itoa(pInfo->Port, temp, 10);
		c_AllList.SetItem(&item);

		//泅犁 惑怕 
		sprintf(temp,"%c",m_pApp->m_StatusSymbol[ pInfo->dwStatus ]);
		item.mask = LVIF_TEXT;
		item.iSubItem = 2;
		item.pszText = temp;
		c_AllList.SetItem(&item);

		//辑滚鸥涝 
		item.mask = LVIF_TEXT;
		item.iSubItem = 3;
		switch(pInfo->ServerType)
		{
		case SERVER_TYPE_PROXY:		item.pszText = "PROXY";		break;
		case SERVER_TYPE_AGENT:		item.pszText = "AGENT";		break;
		case SERVER_TYPE_DBDEMON:	item.pszText = "DBDEMON";	break;
		case SERVER_TYPE_MAP:		item.pszText = "MAP";		break;
		}
		c_AllList.SetItem(&item);

		//System
		item.mask = LVIF_TEXT;
		item.iSubItem = 4;
		item.pszText = pInfo->MachineName;
		c_AllList.SetItem(&item);

		//Machine
		item.mask = LVIF_TEXT;
		item.iSubItem = 5;
		item.pszText = pInfo->Ip;
		c_AllList.SetItem(&item);

	}

	CountConnectServer();
}

void CServerPatch::OnShutDown() 
{
	if( !RIGHT(MASK_11) )	return;

	// TODO: Add your control notification handler code here
	
	CServerView *pView = (CServerView*)GetParent();
	_ASSERTE( pView !=  NULL );
	if( pView->m_bIsUMS	== true)
	{
		AfxMessageBox( "Release Check box [UMS] " );
		return;		
	}
	UpdateData(true);
	if(m_nRadioShutDown == 4 && c_SelectList.GetItemCount() == 0)
	{
		MessageBox("Select Servers To Down!","Serverdown");
		return;
	}


	if(MessageBox("Are You sure to Serverdown?","Serverdown",MB_YESNO) == IDNO)
		return;
	else
		MessageBox("Please Check (X)mark!","Serverdown",MB_YESNO);

	
	
	int count = 0;
	PACKET_SHUTDOWN_SUBSERVER packet(0);	//0锅捞 Proxy, 1锅捞 Agent, 2锅捞 DBDemon, 3锅捞 Map 
	switch(m_nRadioShutDown)
	{
	case 0:	//Map
		{
			packet.bServerType = 3;	
			g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());

			#ifdef RM_LOG_MODE
			CString str;	str.Format("ServerPatch :: Shutdown Server! -> Server: Map");
			m_pApp->LogServer(pView->m_nCurServerSet, str);
			#endif
		}
		break;		
	case 1:	//Agent
		{
			packet.bServerType = 1;	
			g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());

			#ifdef RM_LOG_MODE
			CString str;	str.Format("ServerPatch :: Shutdown Server! -> Server: Agent");
			m_pApp->LogServer(pView->m_nCurServerSet, str);
			#endif
		}
		break;		
	case 2: //DBDemon
		{
			packet.bServerType = 2;	
			g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());

			#ifdef RM_LOG_MODE
			CString str;	str.Format("ServerPatch :: Shutdown Server! -> Server: DBDemon");
			m_pApp->LogServer(pView->m_nCurServerSet, str);
			#endif
		}
		break;		
	case 3:	//Proxy		
		{
			packet.bServerType = 0;	
			g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());

			MessageBox("Proxy server is Down. You cann't Get a Infomation of servers."
						"Please Reconnect to [Connect]button","Proxy down",MB_OK);

			//Connect Button 劝己拳 
			pView->m_szConnectInfo = "Disconnected";
			pView->UpdateData(FALSE);
			pView->c_ProxyConnect.EnableWindow(TRUE);

			//X钎 钎矫  
			pView->m_ServerStatusDlg.RefreshSomeItem(3001, FALSE);
			pView->m_ServerControlDlg.RefreshSomeItem(3001, FALSE);
			RefreshSomeItem(3001, FALSE);

			//Proxy 沥焊 官操绊..
			for(int i=0; i< m_pApp->m_ServerSetInfo[ pView->m_nCurServerSet ].nServerNum; i++)
			{
				if(m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].Port == 3001)
				{
					m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].dwStatus = 0;
					m_pApp->m_ServerInfo[ pView->m_nCurServerSet ][ i ].dwNumOfUser = 0; 
					break;
				}
			}

			#ifdef RM_LOG_MODE
			CString str;	str.Format("ServerPatch :: Shutdown Server! -> Server: Proxy");
			m_pApp->LogServer(pView->m_nCurServerSet, str);
			#endif

		}
		break;		

	case 4:	//Selected	
		{
			char str[128];
			char packet2[ 0xff ];	memset(packet2,0,0xff);
			int offset = 3;

			count = c_SelectList.GetItemCount();

			packet2[0] = PTCL_RM;
			packet2[1] = MSG_RM_SHUTDOWN_SERVER;
			packet2[2] = (char)count;
			
			for(int i=0 ; i<count ; i++)
			{
				c_SelectList.GetItemText(i, 3, str, 128);
				if(strcmp(str,"PROXY"))
				{
					c_SelectList.GetItemText(i, 1, str, 128);
					WORD wPort = (WORD)atoi(str);

					memcpy(packet2 + offset, &wPort, sizeof(WORD)); 
					offset += sizeof(WORD);
				}
				else
				{
					packet.bServerType = 0;	
					g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
				}
			}

			g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], packet2, offset);

#ifdef RM_LOG_MODE
	CString str2;	str2.Format("ServerPatch :: Shutdown Server!(Applied: %d) -> Server:%d", count, m_nRadioShutDown);
	m_pApp->LogServer(pView->m_nCurServerSet, str2);
#endif
		}
		break;		
	}



}

void CServerPatch::OnServerExecute() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_12) )	return;

	if(MessageBox("Select Servers To Execute.","Server Execute",MB_YESNO) == IDNO)
		return;
	else
		MessageBox("Please Check (O)mark!","Server Execute",MB_YESNO);
	
	UpdateData(TRUE);
	CServerView *pView = (CServerView*)GetParent();


	CString szTemp, szTemp2;
	szTemp = m_pApp->m_szDownloadPath[ pView->m_nCurServerSet ];
	
	char drive = szTemp.GetAt(0);
	szTemp2 = szTemp.Mid(3, szTemp.GetLength() - 3);
	
	//促弗累诀甸肺 牢秦 老何 Listener狼 促款肺靛 版肺啊 函版登菌阑 啊瓷己捞 乐栏骨肺 老褒利栏肺 嘎苗林磊..
	PACKET_SET_DOWNLOAD_PATH packet(drive, szTemp2.GetBuffer(szTemp2.GetLength()));		
	
	g_pNet->Send(GetConnection(),(char*)&packet, packet.GetPacketSize());

		char str[128];
		char packet2[ 0xff ];	memset(packet2,0,0xff);
		
		int count = c_SelectList.GetItemCount();
		int filelen = m_szExeName.GetLength(); 

		packet2[0] = PTCL_RM;
		packet2[1] = MSG_RM_EXECUTE_SERVER;
		packet2[2] = (char)filelen;
		memcpy(packet2+3, m_szExeName.GetBuffer( filelen ), filelen);
		
		packet2[ 3 + filelen ] = (char)count;
		int offset = 4 + filelen;

		for(int i=0 ; i<count ; i++)
		{
			c_SelectList.GetItemText(i, 3, str, 128);
			
			//橇废矫 辑滚肺狼 楷搬捞 酒匆 版快
			if(strcmp(str,"PROXY"))
			{
				c_SelectList.GetItemText(i, 3, str, 128);
				
				if(!strcmp("PROXY",str))
					packet2[ offset ] = 0;
				else if(!strcmp("AGENT",str))
					packet2[ offset ] = 1;
				else if(!strcmp("DBDEMON",str))
					packet2[ offset ] = 2;
				else if(!strcmp("MAP",str))
					packet2[ offset ] = 3;
				offset += 1;

				c_SelectList.GetItemText(i, 1, str, 128);
				WORD wPort = (WORD)atoi(str);

				memcpy(packet2 + offset, &wPort, sizeof(WORD)); 
				offset += sizeof(WORD);
			}
			else	//Proxy 辑滚牢 版快 
			{
				CServerView *pView = (CServerView*)GetParent();

				//Proxy Listener俊 流立 立加 
				//g_pFt->CloseClientSocket();			
				if(!g_pFt->Connect(m_pApp->m_ProxyIp[ pView->m_nCurServerSet ], LISTENER_CONNECT_PORT))
				{
					MessageBox("Can not connect to ProxyListener!","Error");
					continue;
				}

⌨️ 快捷键说明

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