📄 servertoolview.cpp
字号:
{
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 + -