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

📄 servercontrol.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		}
		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 CServerControl::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);
		//Machine
		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 CServerControl::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);
		//Machine
		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 CServerControl::OnLeftAll() 
{
	// TODO: Add your control notification handler code here
	c_AllList.DeleteAllItems();
	c_SelectList.DeleteAllItems();

	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();
}


int  g_SelectServerListSort[5] = {0,};		//5篮 漠烦 肮荐促.
void CServerControl::OnColumnclickSelectServerList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(g_SelectServerListSort[ pNMListView->iSubItem ] == ASC)
		g_SelectServerListSort[ pNMListView->iSubItem ] = DESC;
	else
		g_SelectServerListSort[ pNMListView->iSubItem ] = ASC;
	
	ListValue value;
	value.iSubItem = pNMListView->iSubItem;
	value.pListCtrl = &c_SelectList;
	value.iListCtrl = 2;		//2锅捞 SelectServerStatusList..

	ListView_SortItems(c_SelectList.m_hWnd, pfnCompare, &value);
	*pResult = 0;
}
int  g_AllServerListSort[5] = {0,};		//5篮 漠烦 肮荐促.
void CServerControl::OnColumnclickAllServerList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(g_AllServerListSort[ pNMListView->iSubItem ] == ASC)
		g_AllServerListSort[ pNMListView->iSubItem ] = DESC;
	else
		g_AllServerListSort[ pNMListView->iSubItem ] = ASC;
	
	ListValue value;
	value.iSubItem = pNMListView->iSubItem;
	value.pListCtrl = &c_AllList;
	value.iListCtrl = 3;		//3锅捞 AllServerStatusList..

	ListView_SortItems(c_AllList.m_hWnd, pfnCompare, &value);
	*pResult = 0;
}



void CServerControl::OnCheckAgent() 
{
	// TODO: Add your control notification handler code here
	if(m_CheckAgent)
	{
		m_CheckAgent = 0;
		MoveToAllEachServer(1);
	}
	else
	{
		m_CheckAgent = 1;
		MoveToSelectEachServer(1);
	}
	UpdateData(FALSE);
}

void CServerControl::OnCheckDbdemon() 
{
	// TODO: Add your control notification handler code here
	if(m_CheckDBDemon)
	{
		m_CheckDBDemon = 0;
		MoveToAllEachServer(2);
	}
	else
	{
		m_CheckDBDemon = 1;
		MoveToSelectEachServer(2);
	}

	UpdateData(FALSE);
}

void CServerControl::OnCheckMap() 
{
	// TODO: Add your control notification handler code here
	if(m_CheckMap)
	{
		m_CheckMap = 0;
		MoveToAllEachServer(3);
	}
	else
	{
		m_CheckMap = 1;
		MoveToSelectEachServer(3);
	}
	UpdateData(FALSE);
}

void CServerControl::MoveToSelectEachServer(int nServerType)
{
	int nItem,port,i=0,count=0;
	LVITEM item;
	char str[128];	
	char* type[4] = {"PROXY","AGENT","DBDEMON","MAP"};

	int num = c_AllList.GetItemCount();

	for(int k=0; k<num; k++)
	{
		nItem = k - count;
		c_AllList.GetItemText(nItem,3,str,128);

		if(!strcmp(str, type[ nServerType ]))
		{
			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);


			//nItem = nItem - count + 1;
			c_AllList.DeleteItem(nItem);
			count++;

			//盖 关栏肺 胶农费官 捞悼..
			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));
			

		}

	}

	CountConnectServer();
}

void CServerControl::MoveToAllEachServer(int nServerType)
{
	int nItem,port,i=0,count=0;
	LVITEM item;
	char str[128];	
	char* type[4] = {"PROXY","AGENT","DBDEMON","MAP"};

	int num = c_SelectList.GetItemCount();

	for(int k=0; k<num; k++)
	{
		nItem = k - count;
		c_SelectList.GetItemText(nItem,3,str,128);

		if(!strcmp(str, type[ nServerType ]))
		{
			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);
			//System
			item.mask = LVIF_TEXT;
			item.iSubItem = 5;
			item.pszText = str;
			c_AllList.SetItem(&item);

		

			//nItem = nItem - count + 1;
			c_SelectList.DeleteItem(nItem);
			count++;

			//盖 关栏肺 胶农费官 捞悼..
			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));
			

		}

	}

	CountConnectServer();
}

void CServerControl::OnReloadData() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_9) )	return;

	if( MessageBox( "GameServerData Update   Are You Sure??", "Sure??", MB_YESNO ) != IDYES )
		return;
		
	int num = c_SelectList.GetItemCount();

	if(num <= 0)
	{
		MessageBox("Select Reload Map!","Select Map Server",MB_OK);
		return;
	}

	int diff = 0, offset = 3;
	WORD wPort;
	char str[ 128 ];
	char packet[ 1024 ];
	packet[0] = PTCL_RM;
	packet[1] = MSG_RM_RELOAD_DATA;
	packet[2] = (char)num;

	for(int i=0; i<num; i++)
	{
		c_SelectList.GetItemText(i, 3, str, 128);		

⌨️ 快捷键说明

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