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

📄 servertoolview.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	// total
	m_lcTotal.ShowWindow( !bShow );
	m_stTotal.ShowWindow( !bShow );

	// distribute zone
	m_stDist.ShowWindow( bShow );
	m_lcDist.ShowWindow( bShow );

	// agent zone
	m_stAgent.ShowWindow( bShow );
	m_lcAgent.ShowWindow( bShow );

	// map zone
	m_stMap.ShowWindow( bShow );
	m_lcMap.ShowWindow( bShow );

	m_btnTServer.ShowWindow( bShow );
}

// update -----------------------------------------------------------------------------------------
void CServerToolView::UpdateServerControl()
{
	UpdateUserCount();

	m_editMaxUser.SetWindowText( "MaxUser" );
	m_editVersion.SetWindowText( "Version" );
	m_cbUserLevel.SetCurSel( 0 );

	if( m_cbServerSet.GetCurSel() > 0 )
	{		
		CString str;
		m_cbServerSet.GetLBText( m_cbServerSet.GetCurSel(), str );

		CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
		if( pServerSet )
		{
			char temp[256];
			// MaxUser
			m_editMaxUser.SetWindowText( itoa((int)pServerSet->m_dwMaxUser, temp, 10) );
			// ClientExeVersion
			m_editVersion.SetWindowText( pServerSet->m_sClientExeVersion );

			// UserLevel
			m_cbUserLevel.SetCurSel( pServerSet->m_nUserLevel-1 );

			UpdateData( FALSE );
		}
	}
}

void CServerToolView::UpdateUserCount()
{
	if( m_cbServerSet.GetCurSel() > 0 )
	{
		CString str;
		m_cbServerSet.GetLBText( m_cbServerSet.GetCurSel(), str );

		CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
		if( pServerSet )
			m_stUserCount.Format( "%d", pServerSet->GetTotalUserCount() );
	}
	else
		m_stUserCount.Format( "%d", SERVERSETMNG->GetTotalUserCount() );

	UpdateData( FALSE );
}

void CServerToolView::UpdateServerMonitor()
{
	CServerSet* pServerSet = NULL;
	CServer* pServer = NULL;
	LV_ITEM lvitem;
	char temp[256];
	int i = 0;
	int index = m_cbServerSet.GetCurSel();
	
	if( index == 0 )	// All Server
	{
		m_lcTotal.DeleteAllItems();
		
		for( i = 1; i < m_cbServerSet.GetCount(); ++i )
		{
			m_cbServerSet.GetLBText( i, temp );
			pServerSet = SERVERSETMNG->GetServerSet( temp );
			if( pServerSet )
			{
				pServer = pServerSet->GetServer( DISTRIBUTE_SERVER, 0 );
				if( pServer )
				{
					lvitem.iItem = m_lcTotal.GetItemCount();		// 青
					
					lvitem.iSubItem = 0;
					lvitem.mask = LVIF_TEXT | LVIF_STATE;
					lvitem.stateMask = LVIS_STATEIMAGEMASK;
					lvitem.state = INDEXTOSTATEIMAGEMASK( pServer->m_nState );
					lvitem.pszText = pServer->m_sState;
					
					m_lcTotal.InsertItem( &lvitem );
					m_lcTotal.SetItemText( lvitem.iItem, 1, itoa( pServerSet->GetTotalUserCount(), temp, 10 ) );
					m_lcTotal.SetItemText( lvitem.iItem, 2, pServerSet->m_sServerSetName );
					m_lcTotal.SetItemText( lvitem.iItem, 3, itoa( pServerSet->m_nServerSet, temp, 10 ) );
				}
			}

			m_stUserCount.Format( "%d", SERVERSETMNG->m_dwTotalUserCount );
		}
	}
	else
	{
		// delete item
		m_lcDist.DeleteAllItems();
		m_lcAgent.DeleteAllItems();
//		m_lcMurim.DeleteAllItems();
		m_lcMap.DeleteAllItems();
		
		m_cbServerSet.GetLBText( index, temp );
		pServerSet = SERVERSETMNG->GetServerSet( temp );
		if( pServerSet == NULL ) return;
		
		// distribute
		CListCtrl* pListCtrl;
		vector<CServer*>::iterator iter = pServerSet->m_vecServer.begin();
		for(;iter != pServerSet->m_vecServer.end();++iter)
		{
			pServer = (*iter);
			switch(pServer->m_nServerKind)
			{
			case DISTRIBUTE_SERVER:	pListCtrl = &m_lcDist;	break;
			case AGENT_SERVER:	pListCtrl = &m_lcAgent;	break;
//			case MURIM_SERVER:	pListCtrl = &m_lcMurim;	break;
			case MAP_SERVER:	pListCtrl = &m_lcMap;	break;
			default:
				continue;
			}

			lvitem.iItem = pListCtrl->GetItemCount();		// 青
			
			lvitem.iSubItem = 0;
			lvitem.mask = LVIF_TEXT | LVIF_STATE;
			lvitem.stateMask = LVIS_STATEIMAGEMASK;
			lvitem.state = INDEXTOSTATEIMAGEMASK( pServer->m_nState );
			lvitem.pszText = pServer->m_sState;
			
			pListCtrl->InsertItem( &lvitem );
			pListCtrl->SetItemText( lvitem.iItem, 1, itoa( pServer->m_dwUserCount, temp, 10 ) );
			pListCtrl->SetItemText( lvitem.iItem, 2, pServer->m_sName );
			pListCtrl->SetItemText( lvitem.iItem, 3, itoa( pServer->m_nServerNum, temp, 10 ) );
			pListCtrl->SetItemText( lvitem.iItem, 4, pServer->m_sIP );
			pListCtrl->SetItemText( lvitem.iItem, 5, itoa( pServer->m_nPort, temp, 10 ) );		
		}
	}
	UpdateData( FALSE );
}

void CServerToolView::UpdateCommand()
{
}

// Server Control ---------------------------------------------------------------------------------
void CServerToolView::OnSelchangeComboServerset() 
{
	if( m_cbServerSet.GetCurSel() > 0 )
		ShowServerMonitor( TRUE );
	else
		ShowServerMonitor( FALSE );

	UpdateServerControl();
	UpdateServerMonitor();
}

void CServerToolView::OnButtonServerOn() 
{
	if( m_nToolLevel != eOperPower_Master )	return;

	CString str, temp;
	m_cbServerSet.GetWindowText( str );

	temp.Format( "Turn On %s Server?", str );
	if( MessageBox( temp, "Turn On", MB_OKCANCEL ) == IDOK )
	{
		SERVERSETMNG->DoServerSetOn( (char*)(LPCTSTR)str );
		m_bServerOff = FALSE;

		LOG( "Button ServerOn : %s", (char*)(LPCTSTR)str );
	}
}

void CServerToolView::OnButtonServerOff() 
{
	if( m_nToolLevel != eOperPower_Master )	return;

	CString str, temp;
	m_cbServerSet.GetWindowText( m_strAutoPatch );

	temp.Format( "Turn Off %s Server?", m_strAutoPatch );
	if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
//		SERVERSETMNG->DoServerSetOff( (char*)(LPCTSTR)m_strAutoPatch );
	{
		SERVERSETMNG->DoAllUserDisconnect( (char*)(LPCTSTR)m_strAutoPatch );
		m_bServerOff = TRUE;

		m_dwServerOffTime = 0;

		LOG( "Button ServerOff(AllUserDisconnect) : %s", (char*)(LPCTSTR)m_strAutoPatch );
	}
}

void CServerToolView::OnButtonServerRefresh() 
{
/*	CString str;
	m_cbServerSet.GetWindowText( str );

//	SERVERSETMNG->DoServerSetRefresh( (char*)(LPCTSTR)str );
	SERVERSETMNG->DoQueryUserCount();
*/
	ReConnectToMAS();

	LOG( "Button Refresh : Reconnect To MAS!!" );
}

void CServerToolView::OnButtonServerUserout() 
{
/*	CString str, temp;
	m_cbServerSet.GetWindowText( str );

	temp.Format( "%s甫(阑) Turn Off 窍矫摆嚼聪鳖?", str );
	if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
		SERVERSETMNG->DoAllUserDisconnect( (char*)(LPCTSTR)str );
*/
}

void CServerToolView::OnButtonVersionChange() 
{
	if( m_nToolLevel != eOperPower_Master )	return;

	CString str, temp, version;
	m_cbServerSet.GetWindowText( str );
	m_editVersion.GetWindowText( version );	

	temp.Format( "Change %s's Version To %s?", str, version );
	if( MessageBox( temp, "Version Change", MB_OKCANCEL ) == IDOK )
	{		
		SERVERSETMNG->DoChangeClientExeVersion( (char*)(LPCTSTR)str, (char*)(LPCTSTR)version );

		LOG( "Button VersionChange : %s", (char*)(LPCTSTR)version );
	}
}

void CServerToolView::OnButtonMaxuserChange() 
{	
	if( m_nToolLevel != eOperPower_Master )	return;

	CString str, temp, maxuser;
	m_cbServerSet.GetWindowText( str );
	m_editMaxUser.GetWindowText( maxuser );
	DWORD user = (DWORD)atoi( (const char*)(LPCTSTR)maxuser );

	temp.Format( "Change %s's MaxUser To %s?", str, maxuser );
	if( MessageBox( temp, "MaxUser Change", MB_OKCANCEL ) == IDOK )
	{		
		SERVERSETMNG->DoChangeMaxUser( (char*)(LPCTSTR)str, user );

		LOG( "Button MaxUserChange : %d", user );
	}
}

void CServerToolView::OnButtonUserlevel() 
{
	CString str;
	m_cbServerSet.GetWindowText( str );

	CString user[7] = { "God", "Programmer", "Developer", "GM", "SuperUser", "User", "SubUser" };
	int level = m_cbUserLevel.GetCurSel();
	
	char temp[256];
	wsprintf( temp, "Change %s's UserLevel To %s?", str, user[level] );
	if( MessageBox( temp, "UserLevel", MB_OKCANCEL ) == IDOK )
	{
		SERVERSETMNG->DoChangeUserLevel( (char*)(LPCTSTR)str, level+1 );

		LOG( "Button UserLevelChange : %d", level+1 );
	}
}

void CServerToolView::OnButtonAutopatch() 
{
	if( m_nToolLevel != eOperPower_Master )	return;

	if( m_pMSInfoDlg )
		m_pMSInfoDlg->SetFocus();
	else
	{
		m_pMSInfoDlg = new CMSInfoDlg;
		m_pMSInfoDlg->Create( (CMainFrame*)AfxGetMainWnd() );
		m_pMSInfoDlg->ShowWindow( SW_SHOW );
	}	
}


void CServerToolView::OnButtonUsercount() 
{
	if( m_nToolLevel != eOperPower_Master )
		return;

	if( m_pUserCountDlg )
		m_pUserCountDlg->SetFocus();
	else
	{
		m_pUserCountDlg = new CUserCount;
		m_pUserCountDlg->Create( (CMainFrame*)AfxGetMainWnd() );
		m_pUserCountDlg->ShowWindow( SW_SHOW );
	}	
}

// 鞘夸绝阑瘤档...
void CServerToolView::OnButtonOffmsgbox() 
{
	CString str, temp;
	m_cbServerSet.GetWindowText( str );

	temp.Format( "Turn Off %s's AssertMsgBox?", str );
	if( MessageBox( temp, "Assert MsgBox Off", MB_OKCANCEL ) == IDOK )
	{
		SERVERSETMNG->DoAssertMsgBox( (char*)(LPCTSTR)str, FALSE );
	}
}

void CServerToolView::OnButtonOnmsgbox() 
{
	CString str, temp;
	m_cbServerSet.GetWindowText( str );

	temp.Format( "Turn On %s's AssertMsgBox?", str );
	if( MessageBox( temp, "Assert MsgBox On", MB_OKCANCEL ) == IDOK )
	{
		SERVERSETMNG->DoAssertMsgBox( (char*)(LPCTSTR)str, TRUE );
	}
}

void CServerToolView::ReConnectToMAS() 
{
	m_bReconnect = FALSE;
	
	NETWORK->Release();

	if( SERVERSETMNG->Init( "MASList.ini" ) )
	{	
		NETWORK->Init(this->GetParentFrame()->m_hWnd );
//------------------------------------------------------------------------------------
		m_cbServerSet.ResetContent();
		m_cbCmdServerSet.ResetContent();
		m_cbServerSet.AddString( "All Server" );
		m_cbCmdServerSet.AddString( "All Server" );

		DWORD tick = GetTickCount();
		CServerSet* pServerSet = NULL;
		int count = 0;
		for( int i = 0; i < SERVERSETMNG->GetMaxServerSet(); ++i )
		{
			pServerSet = SERVERSETMNG->GetServerSet( i );
			if( pServerSet )
			{
				if( !NETWORK->ConnectToServer( i, pServerSet->m_sMASIP, pServerSet->m_nMASPort ) )
				{
					pServerSet->Release();
				}
				else
				{
					pServerSet->m_dwMsgCheckTime = tick;

					m_cbServerSet.AddString( pServerSet->m_sServerSetName );
					m_cbCmdServerSet.AddString( pServerSet->m_sServerSetName );

					++count;
				}
			}
		}

		m_cbServerSet.SetCurSel( 0 );
		m_cbCmdServerSet.SetCurSel( 0 );
//------------------------------------------------------------------------------------

		if( count )
		{				
			EnableServerControl( FALSE );
			EnableServerMonitor( FALSE );
			EnableCommand( FALSE );
			EnableToolFromLevel( m_nToolLevel );

			UpdateServerControl();
			OnSelchangeComboServerset();	// UpdateServerMonitor()

			SERVERSETMNG->DoQueryClientExeVersion();
			SERVERSETMNG->DoQueryMaxUser();		
			SERVERSETMNG->DoQueryUserLevel();
			SERVERSETMNG->DoQueryUserCount();
			SERVERSETMNG->DoServerSetRefresh( "All Server" );
		}
		else
		{
			MessageBox( "Can't Connect To MAS!!", "Error!!", MB_OK );
			GetParentFrame()->PostMessage( WM_CLOSE );
		}
	}

	UpdateData( FALSE );
}

// Command ----------------------------------------------------------------------------------------
void CServerToolView::OnButtonNotify() 
{
	if( m_bNotify )
	{
		if( MessageBox( "Stop To Send Notification Message?", "Confirm!!", MB_OKCANCEL ) == IDOK )
		{
			m_btnNotify.SetBitmap( m_bmpGray );			
		}
		else
			return;
	}
	else
	{
		if( m_strCurFileName == "" || m_strCurFileName == "None" )
		{
			MessageBox( "First, You Have To Edit Notification File!!", "Error!!" );
			return;
		}
		else
		{
			if( MessageBox( "Send Notification Message?", "Confirm!!", MB_OKCANCEL ) == IDOK )
			{
				m_btnNotify.SetBitmap( m_bmpGreen );

				CString str;
				m_editRepeatNum.GetWindowText( str );
				m_nRepeatNum = atoi( (LPCTSTR)str );
				m_RepeatEdit.GetWindowText( str );
				m_nRepeatTime = atoi( (LPCTSTR)str );
				m_nCheckTime = m_nRepeatTime;

				m_NotifyMessage.SetRepeatNum( m_nRepeatNum );
			}
			else
				return;
		}
	}

	m_bNotify = !m_bNotify;
}

void CServerToolView::OnButtonNotifyEdit() 
{
/*	m_NotifyDlg.Init( m_strCurFileName, &m_NotifyMessage );
	if( m_NotifyDlg.DoModal() == IDOK )
	{
		m_strCurFileName = m_NotifyDlg.m_strCurFileName;

		if( m_strCurFileName != "None" && m_strCurFileName != "" )
		{
			m_NotifyMessage.Open( (char*)((LPCTSTR)m_strCurFileName) );

			m_editRepeatNum.EnableWindow( TRUE );
			m_RepeatEdit.EnableWindow( TRUE );
		}

		UpdateData( FALSE );
	}
*/
	CFileDialog dlg( TRUE, NULL, "*.txt", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
					 "txt 颇老 (*.txt)|*.txt||", NULL );

	if( dlg.DoModal() == IDOK )
	{
		m_strCurFileName = dlg.GetFileName();
		m_NotifyMessage.Open( (char*)(LPCTSTR)m_strCurFileName );

		m_editRepeatNum.EnableWindow( TRUE );
		m_RepeatEdit.EnableWindow( TRUE );
	}
}

void CServerToolView::OnChangeEditMessage() 
{
	if( m_MessageEdit.m_bReturn )
	{
		CString str, temp, msg, setname;
		m_MessageEdit.GetWindowText( str );
		
		int length = 0;
		if( length = str.GetLength() )
		{			
			
			temp.Format( "Send Notification Message?\n\n\"%s\"", str );
			if( MessageBox( temp, "Message", MB_OKCANCEL ) == IDOK )
			{
				m_cbCmdServerSet.GetLBText( m_cbCmdServerSet.GetCurSel(), setname );
				
				LOG( "Send Notice : \"%s\"", (char*)(LPCTSTR)str );
				
				msg = "";
				msg += str;			
				SERVERSETMNG->DoSendMessage( (char*)(LPCTSTR)setname, (char*)((LPCTSTR)msg) );
				
				m_MessageEdit.SetWindowText( "" );			
			}
		}
		
		m_MessageEdit.m_bReturn = FALSE;
	}
}

void CServerToolView::OnButtonCommandSend() 
{
}

// Server Monitor ---------------------------------------------------------------------------------
void CServerToolView::OnDblClickServerList(CListCtrl* pListCtrl,WORD ServerKind)
{	
	POSITION pos = pListCtrl->GetFirstSelectedItemPosition();

	if( pos )
	{
		int nItem = pListCtrl->GetNextSelectedItem( pos );
		char servernum[256];
		pListCtrl->GetItemText( nItem, 3, servernum, 256 );

		CString str, temp;
		m_cbServerSet.GetWindowText( str );		// serverset name

		CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
		if( pServerSet )
		{
			CServer* pServer = pServerSet->GetServer( ServerKind, atoi( servernum ) );
			if( pServer )
			{
				switch( pServer->m_nState )
				{
				case eServerState_On:
					{
						temp.Format( "Turn Off %s's %sServer?", str, pServer->m_sName );
						if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
							pServer->DoServerOff();
					}
					break;

				case eServerState_Off:
					{
						temp.Format( "Turn On %s's %sServer?", str, pServer->m_sName );
						if( MessageBox( temp, "Turn On", MB_OKCANCEL ) == IDOK )
							pServer->DoServerOn();
					}
					break;

				case eServerState_AbNormal:
					{
						temp.Format( "Turn Off %s's %sServer?", str, pServer->m_sName );
						if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
							pServer->DoKillServer();
//							pServer->DoServerOff();
					}
					break;
				}
			}
		}
	}
}
void CServerToolView::OnDblclkListcontrolDist(NMHDR* pNMHDR, LRESULT* pResult) 

⌨️ 快捷键说明

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