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

📄 servertoolview.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{
	OnDblClickServerList(&m_lcDist,DISTRIBUTE_SERVER);

	*pResult = 0;
}

void CServerToolView::OnDblclkListcontrolAgent(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnDblClickServerList(&m_lcAgent,AGENT_SERVER);

	*pResult = 0;
}

void CServerToolView::OnDblclkListcontrolMurim(NMHDR* pNMHDR, LRESULT* pResult) 
{
//	OnDblClickServerList(&m_lcMurim,MURIM_SERVER);
	
	*pResult = 0;
}

void CServerToolView::OnDblclkListcontrolMap(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnDblClickServerList(&m_lcMap,MAP_SERVER);

	*pResult = 0;
}

void CServerToolView::OnRdblClickServerList(CListCtrl* pListCtrl,WORD ServerKind)
{	
	int count = pListCtrl->GetSelectedCount();
	int nItem = -1;
	char servernum[256];
	CServer* pServer;

	if( count > 1 )
	{
		if( MessageBox( "Change Server's State Which Is Selected?", "On/Off", MB_OKCANCEL ) == IDOK )
		{
			CString str;
			m_cbServerSet.GetWindowText( str );
			CServerSet* pServerSet = SERVERSETMNG->GetServerSet( (char*)(LPCTSTR)str );
			if( pServerSet )
			{
				for( int i = 0; i < count; ++i )
				{
					nItem = pListCtrl->GetNextItem( nItem, LVNI_SELECTED );
					pListCtrl->GetItemText( nItem, 3, servernum, 256 );

					pServer = pServerSet->GetServer( ServerKind, atoi( servernum ) );
					if( pServer->m_nState == eServerState_Off )
						pServer->DoServerOn();
					else if( pServer->m_nState == eServerState_On )	// On
						pServer->DoServerOff();
					else if( pServer->m_nState == eServerState_AbNormal )
						pServer->DoKillServer();
				}
			}
		}
	}
}

void CServerToolView::OnRdblclkListcontrolDist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnRdblClickServerList(&m_lcDist,DISTRIBUTE_SERVER);

	*pResult = 0;
}

void CServerToolView::OnRdblclkListcontrolAgent(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnRdblClickServerList(&m_lcAgent,AGENT_SERVER);
	
	*pResult = 0;
}

void CServerToolView::OnRdblclkListcontrolMurim(NMHDR* pNMHDR, LRESULT* pResult) 
{
//	OnRdblClickServerList(&m_lcMurim,MURIM_SERVER);
	
	*pResult = 0;
}

void CServerToolView::OnRdblclkListcontrolMap(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnRdblClickServerList(&m_lcMap,MAP_SERVER);
	
	*pResult = 0;
}

// network ----------------------------------------------------------------------------------------
void CServerToolView::NetworkMsgParse( int ServerSet, BYTE Category, BYTE Protocol, void* pMsg )
{
	switch( Category ) 
	{
	case MP_RMTOOL_CONNECT:
		{
#ifdef _CHINA
			--m_LoginDlg.m_nReceiveCount;
#endif
			switch( Protocol )
			{
			case MP_RMTOOL_CONNECT_ACK:
				{
					TMSG_OPERATOR_LOGIN* msg = (TMSG_OPERATOR_LOGIN*)pMsg;

#ifdef _CHINA
					if( m_LoginDlg.m_nReceiveCount > 0 )
						return;
#endif
					if( msg->sOper.wOperPower == eOperPower_Master ||
						msg->sOper.wOperPower == eOperPower_Monitor )
					{
						m_LoginDlg.m_bConnect = TRUE;
						m_LoginDlg.EndDialog(IDOK);

						EnableToolFromLevel( msg->sOper.wOperPower );
						
						SERVERSETMNG->DoServerSetRefresh( "All Server" );
					}
					else
					{
						m_LoginDlg.LoginError( 99 );
						return;
					}
				}
				break;

			case MP_RMTOOL_CONNECT_NACK:
				{
					TMSG_WORD* msg = (TMSG_WORD*)pMsg;
					m_LoginDlg.LoginError( msg->wData );
					return;
				}
				break;
				
			case MP_CHECKIP_ERROR:
				{
					if( MessageBox( "Tool Is Off For A Wrong IP Address", "Error!!", MB_OK ) == IDOK )
					{
						GetParentFrame()->PostMessage( WM_CLOSE );
						return;
					}
				}
				break;
			}
		}
		break;

	case MP_MORNITORTOOL:
		{
#ifdef _CHINA
			if( m_nToolLevel == eOperPower_Master || m_nToolLevel == eOperPower_Monitor )
			{
			}
			else
				return;
#endif
			switch( Protocol )
			{
			case MP_MORNITORTOOL_MAPSERVERSTATE_ACK:		// all state
				{
					MSGMONITORTOOLALLSTATE* pmsg = (MSGMONITORTOOLALLSTATE*)pMsg;
					SERVERSTATE* pState = NULL;

					for( int i = 0; i < pmsg->num; ++i )
					{
						pState = &pmsg->serverState[i];
						SetServerState( ServerSet, pState );
					}					
				}
				break;

			case MP_MORNITORTOOL_MAPSERVERSTATE_NOTIFY:		// one state
				{
					MSGSERVERSTATE* pmsg = (MSGSERVERSTATE*)pMsg;
					SetServerState( ServerSet, &pmsg->serverState );
				}
				break;			

			case MP_MORNITORTOOL_DISCONNECT_ALLUSER_ACK:
				{
					MSGSERVERSTATE* pmsg = (MSGSERVERSTATE*)pMsg;
					NetworkAllUserDisconnect( ServerSet, &pmsg->serverState );
				}
				break;
				
			case MP_MORNITORTOOL_QUERY_VERSION_ACK:
				{
					MSGNOTICE* pmsg = (MSGNOTICE*)pMsg;
					NetworkQueryVersion( ServerSet, pmsg->Msg );
					UpdateServerControl();
				}
				break;
			case MP_MORNITORTOOL_CHANGE_VERSION_ACK:
				{
					MSGNOTICE* pmsg = (MSGNOTICE*)pMsg;
					NetworkChangeVersion( ServerSet, pmsg->Msg );	
					UpdateServerControl();
				}
				break;
			case MP_MORNITORTOOL_QUERY_MAXUSER_ACK:
				{
					MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
					NetworkQueryMaxUser( ServerSet, pmsg->dwData );					
					UpdateServerControl();
				}
				break;
			case MP_MORNITORTOOL_CHANGE_MAXUSER_ACK:
				{
					MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
					NetworkChangeMaxUser( ServerSet, pmsg->dwData );					
					UpdateServerControl();
				}
				break;
			case MP_MORNITORTOOL_CHANGE_USERLEVEL_ACK:
				{
					MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;	
					NetworkUserLevel( ServerSet, pmsg->dwData );
					UpdateServerControl();
				}
				break;
				
			case MP_MORNITORTOOL_MSSTATEALL_ACK:
				{
					if( m_pMSInfoDlg )
					if( m_pMSInfoDlg->m_bInit )
					{
						MSGMSSTATEALL* pmsg = (MSGMSSTATEALL*)pMsg;
						m_pMSInfoDlg->SetMSStateAll( ServerSet, pmsg );
					}
				}
				break;

			case MP_MORNITORTOOL_CHECK_AUTOPATCH_ACK:
				{
					if( m_pMSInfoDlg )
					if( m_pMSInfoDlg->m_bInit )
					{
						MSGMSSTATE* pmsg = (MSGMSSTATE*)pMsg;
						m_pMSInfoDlg->SetAutoPatchState( ServerSet, &pmsg->MSState );		
					}
				}
				break;

			case MP_MORNITORTOOL_QUERY_AUTOPATCHVERSION_ACK:
				{
					if( m_pMSInfoDlg )
					if( m_pMSInfoDlg->m_bInit )
					{
						MSGMSSTATE* pmsg = (MSGMSSTATE*)pMsg;
						m_pMSInfoDlg->SetAutoPatchVersion( ServerSet, &pmsg->MSState );		
					}
				}
				break;
				
			case MP_MORNITORTOOL_QUERY_CHANNELINFO_ACK:
				{
					if( m_pUserCountDlg )
					if( m_pUserCountDlg->m_bInit )
					{
						MSG_CHANNEL_INFO_MORNITOR* pmsg = (MSG_CHANNEL_INFO_MORNITOR*)pMsg;
						m_pUserCountDlg->SetChannelData( ServerSet, pmsg );
					}
				}
				break;
			}

//			UpdateServerControl();
			UpdateServerMonitor();			
		}
		break;
	}
}

//-------------------------------------------------------------------------------------------------
void CServerToolView::SetServerState( int setindex, SERVERSTATE* pstate )
{
	int flag = -1;
	// 辑滚 沥焊
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );
	if( pServerSet )
	{
		CServer* pServer = pServerSet->GetServer( pstate );
		if( pServer )
		{
#ifdef _CHINA
			if( m_nToolLevel == eOperPower_Master )
				pServer->m_dwUserCount = pstate->UserCount;
			else
				pServer->m_dwUserCount = 0;
#endif
			flag = pServer->SetState( pstate->ServerState );			
		}

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
	if( flag != -1 )
	{
		m_cbServerSet.SetCurSel( flag + 1);
		OnSelchangeComboServerset();
	}
}

void CServerToolView::NetworkQueryVersion( int setindex, char* version )
{
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );

	if( pServerSet )
	{
		if( strcmp( pServerSet->m_sClientExeVersion, version ) != 0 )
		{
			strcpy( pServerSet->m_sClientExeVersion, version );
			pServerSet->WriteClientExeVersion( version );

			char temp[256];
			wsprintf( temp, "%s's Version Is %s.", pServerSet->m_sServerSetName, pServerSet->m_sClientExeVersion );
			if( gMsgOption.bExeVer )
				MessageBox( temp, "Version", MB_OK );
		}

		UpdateData( FALSE );

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
}

void CServerToolView::NetworkChangeVersion( int setindex, char* version )
{
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );
	if( pServerSet )
	{
		strcpy( pServerSet->m_sClientExeVersion, version );
		pServerSet->WriteClientExeVersion( version );

		char temp[256];
		wsprintf( temp, "%s's Version Is %s.", pServerSet->m_sServerSetName, pServerSet->m_sClientExeVersion );
		if( gMsgOption.bExeVer )
			MessageBox( temp, "Version", MB_OK );

		UpdateData( FALSE );

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
}

void CServerToolView::NetworkQueryMaxUser( int setindex, DWORD maxuser )
{
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );

	if( pServerSet )
	{
		if( pServerSet->m_dwMaxUser != maxuser )
		{
			pServerSet->m_dwMaxUser = maxuser;

			char temp[256];
			wsprintf( temp, "%s's MaxUser Is %d.", pServerSet->m_sServerSetName, pServerSet->m_dwMaxUser );
			if( gMsgOption.bMaxUser )
				MessageBox( temp, "MaxUser", MB_OK );
		
			UpdateData( FALSE );
		}

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
}

void CServerToolView::NetworkChangeMaxUser( int setindex, DWORD maxuser )
{
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );
	if( pServerSet )
	{
		pServerSet->m_dwMaxUser = maxuser;

		char temp[256];
		wsprintf( temp, "%s's MaxUser Is %d.", pServerSet->m_sServerSetName, pServerSet->m_dwMaxUser );
		if( gMsgOption.bMaxUser )
			MessageBox( temp, "MaxUser", MB_OK );

		UpdateData( FALSE );

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
}

void CServerToolView::NetworkUserLevel( int setindex, DWORD userlevel )
{
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );
	if( pServerSet )
	{
		if( pServerSet->m_nUserLevel != (int)userlevel )
		{
			pServerSet->SetUserLevel( userlevel );

			char temp[256];
			wsprintf( temp, "%s's UserLevel Is %s.", pServerSet->m_sServerSetName, pServerSet->m_sUserLevel );
			if( gMsgOption.bUserLevel )
				MessageBox( temp, "UserLevel", MB_OK );
		}
		if( userlevel != 0 )
			m_cbUserLevel.SetCurSel( userlevel-1 );

		UpdateData( FALSE );

		pServerSet->m_dwMsgCheckTime = GetTickCount();
	}
}

void CServerToolView::NetworkAllUserDisconnect( int setindex, SERVERSTATE* pstate )
{
	// 辑滚 沥焊
	CServerSet* pServerSet = SERVERSETMNG->GetServerSet( setindex );
	if( pServerSet )
	{
		CServer* pServer = pServerSet->GetServer( pstate );
		if( pServer )
			pServer->m_bDisconnectUser = FALSE;
	}
}

void CServerToolView::Disconnect( int serverset )
{
	m_bReconnect = TRUE;
	++m_dwDisconNum;
}

// menu -------------------------------------------------------------------------------------------
void CServerToolView::OnFileMasOpen() 
{
//	ReConnectToMAS();
}

void CServerToolView::ReadIniFile( char* filename )
{
	m_wRefreshTime = 30;
	m_wWriteCountTime = 30;

	CMHFile file;
	char temp[256];
	strcpy( temp, GetDataDirectory() );
	strcat( temp, filename );

	if( !file.Init( temp, "rt", MHFILE_FLAG_DONOTDISPLAY_NOTFOUNDERROR ) )
		return;

	while( !file.IsEOF() )
	{
		strcpy( temp, strupr(file.GetString()) );

		if( temp[0] == '/' ) 
		{
			file.GetLine( temp, 256 );
			continue;
		}
		
		if( strcmp( temp, "*REFRESHTIME" ) == 0 )
		{
			m_wRefreshTime = file.GetWord();
		}
		else if( strcmp( temp, "*WRITETIME" ) == 0 )
		{
			m_wWriteCountTime = file.GetWord();
		}
	}
	file.Release();
}

void CServerToolView::OnClickListcontrolDist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnClickServerList(&m_lcDist,DISTRIBUTE_SERVER);

	*pResult = 0;
}

void CServerToolView::OnClickListcontrolAgent(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnClickServerList(&m_lcAgent,AGENT_SERVER);
	
	*pResult = 0;
}

void CServerToolView::OnClickListcontrolMap(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnClickServerList(&m_lcMap,MAP_SERVER);
	
	*pResult = 0;
}

void CServerToolView::OnClickServerList(CListCtrl* pListCtrl,WORD ServerKind)
{
	POSITION pos = pListCtrl->GetFirstSelectedItemPosition();

	if( pos )
	{
		m_nKill = ServerKind;
		m_btnTServer.EnableWindow( TRUE );
	}
	else
	{
		m_nKill = 0;
		m_btnTServer.EnableWindow( FALSE );
	}
}

void CServerToolView::OnButtonTerminateserver() 
{
	if( m_nKill == 0 )
		return;

	CListCtrl* pListCtrl = NULL;
	POSITION pos = NULL;
	int nServerKind = 0;
	switch( m_nKill )
	{
	case DISTRIBUTE_SERVER:
		{
			pos = m_lcDist.GetFirstSelectedItemPosition();
			pListCtrl = &m_lcDist;
			nServerKind = DISTRIBUTE_SERVER;
		}
		break;
	case AGENT_SERVER:
		{
			pos = m_lcAgent.GetFirstSelectedItemPosition();
			pListCtrl = &m_lcAgent;
			nServerKind = AGENT_SERVER;
		}
		break;
	case MAP_SERVER:
		{
			pos = m_lcMap.GetFirstSelectedItemPosition();
			pListCtrl = &m_lcMap;
			nServerKind = MAP_SERVER;
		}
		break;
	}

	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( nServerKind, atoi( servernum ) );
			if( pServer )
			{
				temp.Format( "Terminate %s's %sServer?", str, pServer->m_sName );
				if( MessageBox( temp, "Turn Off", MB_OKCANCEL ) == IDOK )
					pServer->DoKillServer();
			}
		}
	}
}

void CServerToolView::OnButtonOption() 
{
	m_MsgBoxOption.DoModal();		
}

⌨️ 快捷键说明

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