[JX] Source code - Phân loại máy chủ như VinaGame
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Kết quả 1 đến 5 của 5
  1. #1
    Moderator
    Ngày tham gia
    Aug 2011
    Bài viết
    313
    Thanks
    2
    Thanked 727 Times in 151 Posts

    Source code - Phân loại máy chủ như VinaGame

    Cái này làm cũng lâu rồi, bữa nay dọn lại máy tình cờ thấy, cũng không biết làm gì với nó nữa nên mang lên share chơi . Và do văn chương không được bay bướm nên túm váy lại là xin mạn phép được vào thẳng chủ đề .

    Hàng có sẵn (Copy and replace ):

    Note: Những đoạn đã được thay đổi hoặc thêm vào đều được ưu tiên tô một màu đỏ chói .

    UiSelServer.h
    Code:
    /*****************************************************************************************
    //	½çÃæ--Ñ¡ÔñÓÎÏ··þÎñÆ÷´°¿Ú
    //	Copyright : Kingsoft 2002
    //	Author	:   Wooy(Wu yue)
    //	CreateTime:	2002-8-12
    ------------------------------------------------------------------------------------------
    *****************************************************************************************/
    #pragma once
    #include "../Elem/WndList.h"
    #include "../Elem/WndScrollBar.h"
    #include "../Elem/WndShowAnimate.h"
    
    class KUiSelServer : protected KWndShowAnimate
    {
    public:
    	static KUiSelServer* OpenWindow();				//´ò¿ª´°¿Ú£¬·µ»ØΨһµÄÒ»¸öÀà¶ÔÏóʵÀý
    	static void			 CloseWindow(bool bDestroy);//¹Ø±Õ´°¿Ú
    private:
    	KUiSelServer();
    	~KUiSelServer();
    	void	Initialize();						//³õʼ»¯
    	void	LoadScheme(const char* pScheme);	//ÔØÈë½çÃæ·½°¸
    	int		WndProc(unsigned int uMsg, unsigned int uParam, int nParam);	//´°¿Úº¯Êý
    	void	OnLogin();
    	void	OnCancel();
    	int		OnKeyDown(unsigned int uKey);
    	void	OnClickButton(KWndButton* pBtn);
    	void	GetList();
    	void	PaintWindow();
    
    private:
    	static KUiSelServer* m_pSelf;
    private:
    	struct KLoginServer* m_pServList;
    
    	KWndList		m_List;
    	KWndScrollBar	m_ScrollBar;
    	KWndButton		m_Login;
    	KWndButton		m_Cancel;
    	char			m_szLoginBg[32];
    	KWndText32		m_RegionName;
    	KWndList		m_IpList;
    
    	bool			m_bSelRegion;
    	int				m_nRegionIndex;
    };
    UiSelServer.cpp
    Code:
    /*****************************************************************************************
    //	½çÃæ--Ñ¡ÔñÓÎÏ··þÎñÆ÷´°¿Ú
    //	Copyright : Kingsoft 2002
    //	Author	:   Wooy(Wu yue)
    //	CreateTime:	2002-8-12
    *****************************************************************************************/
    #include "KWin32.h"
    #include "KIniFile.h"
    #include "../Elem/WndMessage.h"
    #include "../Elem/Wnds.h"
    #include "../UiShell.h"
    #include "UiInit.h"
    #include "UiLoginBg.h"
    #include "UiConnectInfo.h"
    #include "UiSelServer.h"
    #include "../UiSoundSetting.h"
    #include "../UiBase.h"
    #include "../../Login/Login.h"
    #include <crtdbg.h>
    
    #define	SCHEME_INI_SELSERV				"Ñ¡·þÎñÆ÷.ini"
    #define	SERVER_LIST_FILE				"\\Settings\\ServerList.ini"
    
    KUiSelServer* KUiSelServer::m_pSelf = NULL;
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£º¹¹Ô캯Êý
    //--------------------------------------------------------------------------
    KUiSelServer::KUiSelServer()
    {
    	m_pServList = NULL;
    	m_szLoginBg[0] = 0;
    	m_bSelRegion = true;
    	m_nRegionIndex = 0;
    }
    
    KUiSelServer::~KUiSelServer()
    {
    	m_List.SetContent(NULL, 0, 0, 0);
    	if (m_pServList)
    	{
    		free(m_pServList);
    		m_pServList = NULL;
    	}
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£º´ò¿ª´°¿Ú£¬·µ»ØΨһµÄÒ»¸öÀà¶ÔÏóʵÀý
    //--------------------------------------------------------------------------
    KUiSelServer* KUiSelServer::OpenWindow()
    {
    	if (m_pSelf == NULL)
    	{
    		m_pSelf = new KUiSelServer;
    		if (m_pSelf)
    			m_pSelf->Initialize();
    	}
    	if (m_pSelf)
    	{
    		UiSoundPlay(UI_SI_POPUP_OUTGAME_WND);
    		KUiLoginBackGround::SetConfig(m_pSelf->m_szLoginBg);
    		m_pSelf->m_bSelRegion = true;
    		m_pSelf->GetList();
    		m_pSelf->Show();
    	}
    	return m_pSelf;
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£º¹Ø±Õ´°¿Ú
    //--------------------------------------------------------------------------
    void KUiSelServer::CloseWindow(bool bDestroy)
    {
    	if (m_pSelf)
    	{
    		if (bDestroy)
    		{
    			m_pSelf->Destroy();
    			m_pSelf = NULL;
    		}
    		else
    		{
    			m_pSelf->Hide();
    		}
    	}
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£º³õʼ»¯
    //--------------------------------------------------------------------------
    void KUiSelServer::Initialize()
    {
    	AddChild(&m_List);
    	AddChild(&m_ScrollBar);
    	AddChild(&m_Login);
    	AddChild(&m_Cancel);
    	AddChild(&m_RegionName);
    	AddChild(&m_IpList);
    
    	m_List.SetScrollbar(&m_ScrollBar);
    
    	char Scheme[256];
    	g_UiBase.GetCurSchemePath(Scheme, 256);
    	LoadScheme(Scheme);
    	Wnd_AddWindow(this, WL_TOPMOST);
    }
    
    void KUiSelServer::GetList()
    {
    	m_List.SetContent(NULL, 0, 0, 0);
    	m_IpList.SetContent(NULL, 0, 0, 0);
    	if (m_pServList)
    	{
    		free(m_pServList);
    		m_pServList = NULL;
    	}
    
    	int nCount, nSel;
    	if (m_bSelRegion)
    	{
    		m_pServList = g_LoginLogic.GetServerRegionList(nCount, m_nRegionIndex);
    		if (m_pServList)
    		{
    			m_List.SetContent((BYTE*)m_pServList, nCount, sizeof(KLoginServer), 0);
    			m_List.SetCurSel(m_nRegionIndex);
    		}
    	}
    	g_LoginLogic.LoadLoginChoice();
    	m_pServList = g_LoginLogic.GetServerList(m_nRegionIndex, nCount, nSel);
    	if (m_pServList)
    	{
    		m_IpList.SetContent((BYTE*)m_pServList, nCount, sizeof(KLoginServer), 0);
    		m_IpList.SetCurSel(nSel);
    	}
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£ºÔØÈë´°¿ÚµÄ½çÃæ·½°¸
    //--------------------------------------------------------------------------
    void KUiSelServer::LoadScheme(const char* pScheme)
    {
    	char		Buff[128];
    	KIniFile	Ini;
    	sprintf(Buff, "%s\\%s", pScheme, SCHEME_INI_SELSERV);
    	if (Ini.Load(Buff))
    	{
    		KWndShowAnimate::Init(&Ini, "Main");
    		m_List     .Init(&Ini, "List");
    		m_ScrollBar.Init(&Ini, "Scroll");
    		m_Login    .Init(&Ini, "Login");
    		m_Cancel   .Init(&Ini, "Cancel");
    		m_RegionName.Init(&Ini, "NameBigger");
    		m_IpList.Init(&Ini, "IpList");
    
    		Ini.GetString("Main", "LoginBg", "", m_szLoginBg, sizeof(m_szLoginBg));
    	}
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£º´°¿Úº¯Êý
    //--------------------------------------------------------------------------
    int KUiSelServer::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
    {
    	int	nRet = 0;
    	switch(uMsg)
    	{
    	case WND_N_BUTTON_CLICK:
    		OnClickButton((KWndButton*)(KWndWindow*)uParam);
    		break;
    	case WND_N_SCORLLBAR_POS_CHANGED:
    		m_List.SetTopItemIndex(nParam);
    		break;
    	case WM_KEYDOWN:
    		nRet = OnKeyDown(uParam);
    		break;
    	case WND_N_LIST_ITEM_D_CLICK:
    		if (nParam >= 0 && uParam == (unsigned int)(KWndWindow*)&m_IpList)
    			OnLogin();
    		break;
    	default:
    		nRet = KWndShowAnimate::WndProc(uMsg, uParam, nParam);
    	}
    	return nRet;
    }
    
    void KUiSelServer::PaintWindow()
    {
    	KWndShowAnimate::PaintWindow();
    	int nCount, nSel;
    	if (m_List.GetCurSel() != m_nRegionIndex)
    	{
    		m_nRegionIndex = m_List.GetCurSel();
    		if (m_nRegionIndex > 0)
    		{
    			KIniFile	File;
    			if (File.Load(SERVER_LIST_FILE))
    			{
    				char	szKey[32], szBuffer[32];
    				sprintf(szKey, "Region_%d", m_nRegionIndex);
    				File.GetString("List", szKey, "", szBuffer, sizeof(szBuffer));
    				if (szBuffer)
    					m_RegionName.SetText(szBuffer);
    			}
    		}
    		g_LoginLogic.LoadLoginChoice();
    		m_pServList = g_LoginLogic.GetServerList(m_nRegionIndex, nCount, nSel);
    		if (m_pServList)
    		{
    			m_IpList.SetContent((BYTE*)m_pServList, nCount, sizeof(KLoginServer), 0);
    			m_IpList.SetCurSel(nSel);
    		}
    		else
    			m_IpList.SetContent(NULL, 0, 0, 0);
    	}
    }
    
    int KUiSelServer::OnKeyDown(unsigned int uKey)
    {
    	int	nRet = 1;
    	KWndWindow* pToActive = NULL;
    	switch (uKey)
    	{
    	case VK_RETURN:
    		if (m_Cancel.IsButtonActive())
    			OnCancel();
    		else
    			OnLogin();
    		break;
    	case VK_ESCAPE:
    		OnCancel();
    		break;
    	case VK_LEFT:
    		if (m_Login.IsButtonActive() == 0)
    			pToActive = &m_Login;
    		break;
    	case VK_RIGHT:
    		if (m_Cancel.IsButtonActive() == 0)
    			pToActive = &m_Cancel;
    		break;
    	case VK_UP:
    		nRet = m_List.GetCurSel();
    		if (nRet  > 0)
    			m_List.SetCurSel(nRet - 1);
    		else if (nRet < 0)
    			m_List.SetCurSel(0);
    		m_ScrollBar.SetScrollPos(m_List.GetTopItemIndex());
    		nRet = 1;
    		break;
    	case VK_DOWN:
    		nRet = m_List.GetCurSel();
    		if (nRet < m_List.GetCount() - 1)
    			m_List.SetCurSel(nRet + 1);
    		else if (nRet < 0)
    			m_List.SetCurSel(0);
    		m_ScrollBar.SetScrollPos(m_List.GetTopItemIndex());
    		nRet = 1;
    		break;
    	default:
    		nRet = 0;
    		break;
    	}
    	if (pToActive)
    		pToActive->SetCursorAbove();
    	return nRet;
    }
    
    void KUiSelServer::OnClickButton(KWndButton* pBtn)
    {
    	if (pBtn == &m_Login)
    		OnLogin();
    	else if(pBtn == &m_Cancel)
    		OnCancel();
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£ºµÇ½ÓÎÏ·ÊÀ½ç·þÎñÆ÷
    //--------------------------------------------------------------------------
    void KUiSelServer::OnLogin()
    {
    	int nSelServer = m_IpList.GetCurSel();
    	if (m_pServList && nSelServer >= 0)
    	{
    		g_LoginLogic.SetAccountServer(m_pServList[nSelServer]);
    		g_LoginLogic.CreateConnection(m_pServList[nSelServer].Address);
    		KUiConnectInfo::OpenWindow(CI_MI_CONNECTING, LL_S_WAIT_INPUT_ACCOUNT);
    		CloseWindow(false);
    	}
    }
    
    //--------------------------------------------------------------------------
    //	¹¦ÄÜ£ºÈ¡Ïû
    //--------------------------------------------------------------------------
    void KUiSelServer::OnCancel()
    {
    	CloseWindow(true);
    	KUiInit::OpenWindow(false, false);
    }

    Cuối cùng tất nhiên không thể thiếu 500 đồng ảnh đề mô :


    [Only registered and activated users can see links. ]

    [Only registered and activated users can see links. ]

    Nếu có thiếu xót gì anh chị em cứ bổ sung cho nhau ở bên dưới, tết nhất lười online nên cũng không giúp được gì nhiều .
    Khách viếng thăm hãy cùng trungviet xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 12 Users Say Thank You to trungviet For This Useful Post:

    assaa (06-02-14), dojladeoji (04-02-14), Edward_Newgate (04-02-14), emyeusss7 (30-05-14), hungvoi94 (04-02-14), jxvietnam (04-02-14), kakashi43 (21-09-15), lzlsky301 (04-02-14), rongdatbg (28-05-14), satthupro95 (10-03-14), thanhtunghk (04-02-14), z0nkazu04 (13-09-19)

  3. #2
    Thành Viên lzlsky301's Avatar
    Ngày tham gia
    Nov 2011
    Đang ở
    The Moon
    Bài viết
    366
    Thanks
    85
    Thanked 230 Times in 76 Posts

    Ðề: Source code - Phân loại máy chủ như VinaGame

    - Quá ngon :U. Mở hàng tết cái nào
    Khách viếng thăm hãy cùng lzlsky301 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Moderator
    Ngày tham gia
    May 2009
    Đang ở
    Nơi rất xa
    Bài viết
    2,479
    Thanks
    572
    Thanked 1,848 Times in 503 Posts

    Ðề: Source code - Phân loại máy chủ như VinaGame

    Thank bạn nhé, tối về làm thử ...
    Trích dẫn Gửi bởi lzlsky301 [Only registered and activated users can see links. ]
    - Quá ngon :U. Mở hàng tết cái nào
    thím này bữa giờ có hàng gì ngon thì show lên đê :T
    Khách viếng thăm hãy cùng jxvietnam xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Thành Viên
    Ngày tham gia
    Jun 2012
    Đang ở
    Coder
    Bài viết
    257
    Thanks
    980
    Thanked 96 Times in 32 Posts

    Ðề: Source code - Phân loại máy chủ như VinaGame

    Ủa nhớ ko nhầm là trung việt làm chiến quốc thui mà
    Bữa nay sang JX lun rùi hả
    Khách viếng thăm hãy cùng khungboktvn xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên lzlsky301's Avatar
    Ngày tham gia
    Nov 2011
    Đang ở
    The Moon
    Bài viết
    366
    Thanks
    85
    Thanked 230 Times in 76 Posts

    Ðề: Source code - Phân loại máy chủ như VinaGame

    Trích dẫn Gửi bởi jxvietnam [Only registered and activated users can see links. ]
    Thank bạn nhé, tối về làm thử ...

    thím này bữa giờ có hàng gì ngon thì show lên đê :T
    - Có hàng gì đâu . Toàn củ chuối không à
    Khách viếng thăm hãy cùng lzlsky301 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 

Các Chủ đề tương tự

  1. [KT] [Share Code] Web kiếm thế giao diện Vinagame .Update.
    Bởi Mr.QuangHuy trong diễn đàn Releases
    Trả lời: 30
    Bài viết cuối: 20-08-13, 03:47 PM
  2. [JX] Source code phân biệt kênh chát
    Bởi radise trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)
    Trả lời: 9
    Bài viết cuối: 15-05-13, 08:38 PM
  3. [JX] Cần Giúp Về Source Code
    Bởi Win32 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 6
    Bài viết cuối: 08-02-13, 03:29 PM
  4. [KT] [Share Code] Web kiếm thế giao diện Vinagame
    Bởi Mr.QuangHuy trong diễn đàn Releases
    Trả lời: 3
    Bài viết cuối: 25-03-12, 12:19 PM
  5. Xin Code Auto Nạp Thẻ Và Check Thẻ Vinagame
    Bởi kieuhanhinfo trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 7
    Bài viết cuối: 14-03-12, 02:37 AM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 11:08 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.