// GameDBToolDlg.cpp : ±¸Çö ÆÄÀÏ // #include "stdafx.h" #include "GameDBTool.h" #include "GameDBToolDlg.h" #include ".\gamedbtooldlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // ÀÀ¿ë ÇÁ·Î±×·¥ Á¤º¸¿¡ »ç¿ëµÇ´Â CAboutDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. class CAboutDlg : public CDialog { public: CAboutDlg(); // ´ëÈ­ »óÀÚ µ¥ÀÌÅÍ enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV Áö¿ø // ±¸Çö protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CGameDBToolDlg ´ëÈ­ »óÀÚ CGameDBToolDlg::CGameDBToolDlg(CWnd* pParent /*=NULL*/) : CDialog(CGameDBToolDlg::IDD, pParent) , m_LastPosX(_T("")) , m_LastPosY(_T("")) , m_LastPosZ(_T("")) , m_SavePosX(_T("")) , m_SavePosY(_T("")) , m_SavePosZ(_T("")) , m_UID(_T("")) , m_CID(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CGameDBToolDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_USER_LIST, m_UserList); DDX_Control(pDX, IDC_CHAR_LIST, m_CharList); DDX_Control(pDX, IDC_LOG, m_Log); DDX_Text(pDX, IDC_LAST_POSX, m_LastPosX); DDX_Text(pDX, IDC_LAST_POSY, m_LastPosY); DDX_Text(pDX, IDC_LAST_POSZ, m_LastPosZ); DDX_Text(pDX, IDC_SAVE_POSX, m_SavePosX); DDX_Text(pDX, IDC_SAVE_POSY, m_SavePosY); DDX_Text(pDX, IDC_SAVE_POSZ, m_SavePosZ); DDX_Text(pDX, IDC_UID, m_UID); DDX_Text(pDX, IDC_CID, m_CID); } BEGIN_MESSAGE_MAP(CGameDBToolDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_COMMAND(ID_CONNECT, OnConnect) ON_COMMAND(ID_DISCONNECT, OnDisconnect) ON_COMMAND(ID_USER_INSERT, OnUserInsert) ON_COMMAND(ID_USER_DELETE, OnUserDelete) ON_COMMAND(ID_ADMIN_INSERT, OnAdminInsert) ON_COMMAND(ID_ADMIN_DELETE, OnAdminDelete) ON_COMMAND(ID_CHAR_INSERT, OnCharInsert) ON_COMMAND(ID_CHAR_DELETE, OnCharDelete) ON_COMMAND(ID_CHAR_UPDATE, OnCharUpdate) ON_COMMAND(ID_USER_SEARCH, OnUserSearch) ON_COMMAND(ID_CHAR_SEARCH, OnCharSearch) ON_BN_CLICKED(IDC_CLEAR_LOG, OnBnClickedClearLog) ON_NOTIFY(NM_RCLICK, IDC_USER_LIST, OnNMRclickUserList) ON_NOTIFY(NM_RCLICK, IDC_CHAR_LIST, OnNMRclickCharList) ON_NOTIFY(LVN_KEYDOWN, IDC_USER_LIST, OnLvnKeydownUserList) ON_NOTIFY(LVN_KEYDOWN, IDC_CHAR_LIST, OnLvnKeydownCharList) ON_NOTIFY(NM_CLICK, IDC_CHAR_LIST, OnNMClickCharList) ON_NOTIFY(NM_CLICK, IDC_USER_LIST, OnNMClickUserList) ON_BN_CLICKED(IDC_RESET_POS, OnBnClickedResetPos) ON_BN_CLICKED(IDC_UPDATE_CHAR, OnBnClickedUpdateChar) ON_WM_KEYDOWN() ON_BN_CLICKED(IDC_UPDATE_USER, OnBnClickedUpdateUser) ON_COMMAND(ID_USER_UPDATE, OnUserUpdate) ON_WM_DESTROY() ON_WM_CTLCOLOR() END_MESSAGE_MAP() // CGameDBToolDlg ¸Þ½ÃÁö 󸮱â BOOL CGameDBToolDlg::OnInitDialog() { CDialog::OnInitDialog(); // ½Ã½ºÅÛ ¸Þ´º¿¡ "Á¤º¸..." ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù. // IDM_ABOUTBOX´Â ½Ã½ºÅÛ ¸í·É ¹üÀ§¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // ÀÌ ´ëÈ­ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ­ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. SetIcon(m_hIcon, TRUE); // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. SetIcon(m_hIcon, FALSE); // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. m_pFileOpen = new FileOpen(m_hWnd); if(NULL == m_pFileOpen) return FALSE; m_UserList.SetColumn(); m_CharList.SetColumn(); m_SearchType = SearchType::None; memset(m_SearchData, 0, MAX_PATH); m_SearchUID = 0; m_SearchCID = 0; m_AlignType = AlignType::ASC; memset(m_AlignData, 0, MAX_PATH); m_Log.LogPrint("[ÃʱâÈ­] ÃʱâÈ­ ¿Ï·á."); return TRUE; // ÄÁÆ®·Ñ¿¡ ´ëÇÑ Æ÷Ä¿½º¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ» °æ¿ì TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù. } void CGameDBToolDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // ´ëÈ­ »óÀÚ¿¡ ÃÖ¼ÒÈ­ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é // ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼­/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â // ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù. void CGameDBToolDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅØ½ºÆ® SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // Ŭ¶óÀÌ¾ðÆ® »ç°¢Çü¿¡¼­ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù. int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù. dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // »ç¿ëÀÚ°¡ ÃÖ¼ÒÈ­µÈ âÀ» ²ô´Â µ¿¾È¿¡ Ä¿¼­°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼­ // ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. HCURSOR CGameDBToolDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CGameDBToolDlg::UpdateUserTable() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* const int MaxRow = 200; USERINFO_TABLE UserInfo[MaxRow]; int StartRow; int RowCounter, Rows; char Query[256] = ""; switch(m_SearchType) { case SearchType::None: return; case SearchType::UID: // °Ë»ö UID ¼³Á¤ SetSearchUID(atoi(m_SearchData)); sprintf(Query, "Select * from UserInfo where UID='%d'", m_SearchUID); break; case SearchType::UIDBelow: SetSearchUID(atoi(m_SearchData)); sprintf(Query, "Select * from UserInfo where UID<'%d'", m_SearchUID); break; case SearchType::UIDAbove: SetSearchUID(atoi(m_SearchData)); sprintf(Query, "Select * from UserInfo where UID>'%d'", m_SearchUID); break; case SearchType::CID: case SearchType::Name: sprintf(Query, "Select * from UserInfo where Char1='%d' or Char2='%d' or Char3='%d'", m_SearchCID, m_SearchCID, m_SearchCID); break; case SearchType::CIDBelow: case SearchType::CIDAbove: case SearchType::LevelBelow: case SearchType::LevelAbove: sprintf(Query, "Select * from UserInfo where UID='%d'", m_SearchUID); break; default: return; } switch(m_AlignType) { case AlignType::ASC: sprintf(Query, "%s order by %s asc", Query, m_AlignData); break; case AlignType::DESC: sprintf(Query, "%s order by %s desc", Query, m_AlignData); break; } m_Log.LogPrint("[À¯Àú °Ë»ö]--------------------------------------------------------------------------------------------------------------------"); m_Log.LogPrint("°Ë»ö ½ÃÀÛ : %s", Query); m_UserList.DeleteAllItems(); ZeroMemory(&UserInfo, sizeof(USERINFO_TABLE) * MaxRow); for(StartRow = 0;; StartRow += MaxRow) { if(CDBSingleObject::GetInstance().Select( Query, (void**)&UserInfo, sizeof(USERINFO_TABLE), StartRow, MaxRow, &Rows)) { for(RowCounter = 0; RowCounter < Rows; RowCounter++) { if(0 != m_AdminDB.GetAdminLevel(UserInfo[RowCounter].UID)) { m_UserList.AddUserRow(&UserInfo[RowCounter], true); } else { m_UserList.AddUserRow(&UserInfo[RowCounter], false); } } if(1 == Rows) { SetSearchUID(UserInfo[0].UID); } } else { m_Log.LogPrint("[À¯Àú °Ë»ö] °Ë»öÁß ¿¡·¯ ¹ß»ý : %s", CDBSingleObject::GetInstance().GetErrorString()); UpdateData(FALSE); return; } if(Rows < MaxRow) break; } m_Log.LogPrint("[À¯Àú °Ë»ö] °Ë»ö ¿Ï·á"); UpdateData(FALSE); */ } void CGameDBToolDlg::AddUserToList(DWORD CID_In) { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* const int MaxRow = 200; USERINFO_TABLE UserInfo[MaxRow]; int StartRow; int RowCounter, Rows; char Query[256] = ""; sprintf(Query, "Select * from UserInfo where Char1='%d' or Char2='%d' or Char3='%d'", CID_In, CID_In, CID_In); // ¹«Á¶°Ç À¯¾ÆÀ̵ð·Î DESC Á¤·Ä strcat(Query, "order by UID desc"); m_Log.LogPrint("[À¯Àú °Ë»ö]--------------------------------------------------------------------------------------------------------------------"); m_Log.LogPrint("°Ë»ö ½ÃÀÛ : %s", Query); ZeroMemory(&UserInfo, sizeof(USERINFO_TABLE) * MaxRow); for(StartRow = 0;; StartRow += MaxRow) { if(CDBSingleObject::GetInstance().Select( Query, (void**)&UserInfo, sizeof(USERINFO_TABLE), StartRow, MaxRow, &Rows)) { for(RowCounter = 0; RowCounter < Rows; RowCounter++) { if(0 != m_AdminDB.GetAdminLevel(UserInfo[RowCounter].UID)) { m_UserList.AddUserRow(&UserInfo[RowCounter], true); } else { m_UserList.AddUserRow(&UserInfo[RowCounter], false); } } if(1 == Rows) { SetSearchUID(UserInfo[0].UID); } } else { m_Log.LogPrint("[À¯Àú °Ë»ö] °Ë»öÁß ¿¡·¯ ¹ß»ý : %s", CDBSingleObject::GetInstance().GetErrorString()); UpdateData(FALSE); return; } if(Rows < MaxRow) break; } m_Log.LogPrint("[À¯Àú °Ë»ö] °Ë»ö ¿Ï·á"); UpdateData(FALSE); */ } void CGameDBToolDlg::UpdateCharTable() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* const int MaxRow = 200; CHAR_INFOST CharInfo[MaxRow]; int StartRow; int RowCounter, Rows; char Query[256] = ""; switch(m_SearchType) { case SearchType::None: return; case SearchType::UID: // °Ë»ö CID ¼³Á¤ SetSearchCID(0); return; case SearchType::CID: SetSearchCID(atoi(m_SearchData)); // GetCharInfo ÇÁ·Î½ÃÁ®¿Í °°Àº ±â´É sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where UID='%d'", m_SearchCID); break; case SearchType::CIDBelow: SetSearchCID(atoi(m_SearchData)); sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where UID<'%d'", m_SearchCID); break; case SearchType::CIDAbove: SetSearchCID(atoi(m_SearchData)); sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where UID>'%d'", m_SearchCID); break; case SearchType::Name: sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where Name='%s'", m_SearchData); break; case SearchType::Level: sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where Level='%s'", m_SearchData); break; case SearchType::LevelBelow: sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where Level<'%s'", m_SearchData); break; case SearchType::LevelAbove: sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where Level>'%s'", m_SearchData); break; default: return; } switch(m_AlignType) { case AlignType::ASC: sprintf(Query, "%s order by %s asc", Query, m_AlignData); break; case AlignType::DESC: sprintf(Query, "%s order by %s desc", Query, m_AlignData); break; } m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö]-------------------------------------------------------------------------------------------------------------------"); m_Log.LogPrint("°Ë»ö ½ÃÀÛ : select * from CharInfo %s", &Query[155]); m_CharList.DeleteAllItems(); ZeroMemory(&CharInfo, sizeof(CHAR_INFOST) * MaxRow); for(StartRow = 0;; StartRow += MaxRow) { if(CDBSingleObject::GetInstance().Select( Query, (void**)&CharInfo, sizeof(CHAR_INFOST), StartRow, MaxRow, &Rows)) { for(RowCounter = 0; RowCounter < Rows; RowCounter++) { m_CharList.AddCharRow(&CharInfo[RowCounter]); } if(1 == Rows) { SetSearchCID(CharInfo[0].UID); } } else { m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö] °Ë»öÁß ¿¡·¯ ¹ß»ý : %s", CDBSingleObject::GetInstance().GetErrorString()); UpdateData(FALSE); return; } if(Rows < MaxRow) break; } m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö] °Ë»ö ¿Ï·á"); UpdateData(FALSE); */ } void CGameDBToolDlg::AddCharToList(DWORD CID_In) { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* const int MaxRow = 200; CHAR_INFOST CharInfo[MaxRow]; int StartRow; int RowCounter, Rows; char Query[256] = ""; sprintf(Query, "Select UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp from CharInfo where UID='%d'", CID_In); switch(m_AlignType) { case AlignType::ASC: sprintf(Query, "%s order by UID asc", Query); break; case AlignType::DESC: sprintf(Query, "%s order by UID desc", Query); break; } m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö]-------------------------------------------------------------------------------------------------------------------"); m_Log.LogPrint("°Ë»ö ½ÃÀÛ : select * from CharInfo %s", &Query[155]); ZeroMemory(&CharInfo, sizeof(CHAR_INFOST) * MaxRow); for(StartRow = 0;; StartRow += MaxRow) { if(CDBSingleObject::GetInstance().Select( Query, (void**)&CharInfo, sizeof(CHAR_INFOST), StartRow, MaxRow, &Rows)) { for(RowCounter = 0; RowCounter < Rows; RowCounter++) { m_CharList.AddCharRow(&CharInfo[RowCounter]); } if(1 == Rows) { SetSearchCID(CharInfo[0].UID); } } else { m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö] °Ë»öÁß ¿¡·¯ ¹ß»ý : %s", CDBSingleObject::GetInstance().GetErrorString()); UpdateData(FALSE); return; } if(Rows < MaxRow) break; } m_Log.LogPrint("[ij¸¯ÅÍ °Ë»ö] °Ë»ö ¿Ï·á"); UpdateData(FALSE); */ } void CGameDBToolDlg::UpdateCharPos(DWORD CID_In) { CHAR_POS CharPos = {0,}; if(!DBComponent::GameDB::GetCharPos(CDBSingleObject::GetInstance(), CID_In, &CharPos)) { m_Log.LogPrint("[ij¸¯ÅÍ À§Ä¡] %d °Ë»öÁß ¿¡·¯ ¹ß»ý : %s", CID_In, CDBSingleObject::GetInstance().GetErrorString()); } else { m_LastPosX.Format("%f", CharPos.LastPoint.fPointX); m_LastPosY.Format("%f", CharPos.LastPoint.fPointY); m_LastPosZ.Format("%f", CharPos.LastPoint.fPointZ); m_SavePosX.Format("%f", CharPos.SavePoint.fPointX); m_SavePosY.Format("%f", CharPos.SavePoint.fPointY); m_SavePosZ.Format("%f", CharPos.SavePoint.fPointZ); } UpdateData(FALSE); } void CGameDBToolDlg::OnConnect() { if(!CDBSingleObject::GetInstance().Connect(CDBSingleObject::Class_GameDB)) { m_Log.LogPrint("[¿¬°á] Á¢¼Ó¿¡ ½ÇÆÐ Çß½À´Ï´Ù. %s", CDBSingleObject::GetInstance().GetErrorString()); } else { m_Log.LogPrint("[¿¬°á] Á¢¼Ó¿¡ ¼º°ø Çß½À´Ï´Ù."); if(m_AdminDB.Initialize()) { m_Log.LogPrint("[¾îµå¹Î] ÃʱâÈ­ ¼º°ø Çß½À´Ï´Ù."); } } UpdateData(FALSE); } void CGameDBToolDlg::OnDisconnect() { if(CDBSingleObject::GetInstance().DisconnectDataSource()) { m_Log.LogPrint("[²÷±â] Á¢¼ÓÀ» ÇØÁö Çß½À´Ï´Ù."); } UpdateData(FALSE); } void CGameDBToolDlg::OnUserInsert() { // TODO: À¯Àú Ãß°¡ } void CGameDBToolDlg::OnUserDelete() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* POSITION Pos; int Index; char strUID[256] = ""; DWORD UserID = 0; Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUID, 256)) { UserID = atoi(strUID); m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ½ÃÀÛ %d", UserID); if(!DBComponent::GameDB::DeleteUser(CDBSingleObject::GetInstance(), UserID)) { m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ½ÇÆÐ %d : %s", UserID, CDBSingleObject::GetInstance().GetErrorString()); } m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ¿Ï·á %d", UserID); } } UpdateUserTable(); UpdateCharTable(); */ } void CGameDBToolDlg::OnAdminInsert() { POSITION Pos; int Index; char strUserID[100] = ""; DWORD UserID = 0; Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUserID, 256)) { UserID = atoi(strUserID); if(!DBComponent::GameDB::InsertAdmin(CDBSingleObject::GetInstance(), UserID)) { m_Log.LogPrint("[¾îµå¹Î Ãß°¡] ¾îµå¹Î Ãß°¡ ½ÇÆÐ %d : %s", UserID, CDBSingleObject::GetInstance().GetErrorString()); } else { m_Log.LogPrint("[¾îµå¹Î Ãß°¡] ¾îµå¹Î Ãß°¡ ¼º°ø %d", UserID); } } } UpdateUserTable(); } void CGameDBToolDlg::OnAdminDelete() { POSITION Pos; int Index; char strUserID[100] = ""; DWORD UserID = 0; Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUserID, 256)) { UserID = atoi(strUserID); if(!DBComponent::GameDB::DeleteAdmin(CDBSingleObject::GetInstance(), UserID)) { m_Log.LogPrint("[¾îµå¹Î »èÁ¦] ¾îµå¹Î »èÁ¦ ½ÇÆÐ %d : %s", UserID, CDBSingleObject::GetInstance().GetErrorString()); } else { m_Log.LogPrint("[¾îµå¹Î »èÁ¦] ¾îµå¹Î »èÁ¦ ¼º°ø %d", UserID); } } } UpdateUserTable(); } void CGameDBToolDlg::OnCharInsert() { // TODO: ij¸¯ÅÍ Ãß°¡ } void CGameDBToolDlg::OnCharDelete() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* POSITION Pos; int Index; char strCID[256] = ""; DWORD CharID = 0; Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCID, 256)) { CharID = atoi(strCID); m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ½ÃÀÛ %d", CharID); if(!DBComponent::GameDB::DeleteChar(CDBSingleObject::GetInstance(), CharID)) { m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ½ÇÆÐ %d : %s", CharID, CDBSingleObject::GetInstance().GetErrorString()); } m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ¿Ï·á %d", CharID); } } UpdateUserTable(); UpdateCharTable(); */ } void CGameDBToolDlg::OnCharUpdate() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* POSITION Pos; int Index; CHAR_INFOST CharInfo = {0,}; CHAR_POS CharPos = {0,}; unsigned short Equip[15] = {0,}; UpdateData(TRUE); Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetCharRow(Index, &CharInfo)) { m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ ¾÷µ¥ÀÌÆ® ½ÃÀÛ %d", CharInfo.UID); // TODO : ij¸¯ÅÍ Àåºñ ó¸® // ij¸¯ÅÍ Á¤º¸ ¾÷µ¥ÀÌÆ® if(!DBComponent::GameDB::UpdateCharInfo(CDBSingleObject::GetInstance(), CharInfo.UID, &CharInfo, Equip, 15)) { m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ Á¤º¸ ¾÷µ¥ÀÌÆ® ½ÇÆÐ %d", CharInfo.UID); } else { m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ Á¤º¸ ¾÷µ¥ÀÌÆ® ¼º°ø %d", CharInfo.UID); } // ij¸¯ÅÍ À§Ä¡ ¾÷µ¥ÀÌÆ® CharPos.LastPoint.fPointX = (float)atof(m_LastPosX.GetBuffer(0)); CharPos.LastPoint.fPointY = (float)atof(m_LastPosY.GetBuffer(0)); CharPos.LastPoint.fPointZ = (float)atof(m_LastPosZ.GetBuffer(0)); CharPos.SavePoint.fPointX = (float)atof(m_SavePosX.GetBuffer(0)); CharPos.SavePoint.fPointY = (float)atof(m_SavePosY.GetBuffer(0)); CharPos.SavePoint.fPointZ = (float)atof(m_SavePosZ.GetBuffer(0)); if(!DBComponent::GameDB::UpdateCharPos(CDBSingleObject::GetInstance(), CharInfo.UID, &CharPos)) { m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ À§Ä¡ ¾÷µ¥ÀÌÆ® ½ÇÆÐ %d", CharInfo.UID); } else { m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ À§Ä¡ ¾÷µ¥ÀÌÆ® ¼º°ø %d", CharInfo.UID); } m_Log.LogPrint("[ij¸¯ÅÍ ¾÷µ¥ÀÌÆ®] ij¸¯ÅÍ ¾÷µ¥ÀÌÆ® ¿Ï·á %d", CharInfo.UID); UpdateCharTable(); } } UpdateData(FALSE); */ } void CGameDBToolDlg::OnUserSearch() { CUserSearch dlg; dlg.DoModal(); UpdateUserTable(); } void CGameDBToolDlg::OnCharSearch() { CCharSearch dlg; dlg.DoModal(); UpdateCharTable(); UpdateUserTable(); } void CGameDBToolDlg::OnBnClickedClearLog() { m_Log.ResetContent(); } void CGameDBToolDlg::OnNMRclickUserList(NMHDR *pNMHDR, LRESULT *pResult) { POSITION Pos; int Index; char strChar1[256] = ""; char strChar2[256] = ""; char strChar3[256] = ""; Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); m_CharList.DeleteAllItems(); if(m_UserList.GetItemText(Index, 1, strChar1, 256)) { AddCharToList(atoi(strChar1)); } if(m_UserList.GetItemText(Index, 2, strChar2, 256)) { AddCharToList(atoi(strChar2)); } if(m_UserList.GetItemText(Index, 3, strChar3, 256)) { AddCharToList(atoi(strChar3)); } m_CID = ""; m_UID = ""; UpdateData(FALSE); } *pResult = 0; } void CGameDBToolDlg::OnNMRclickCharList(NMHDR *pNMHDR, LRESULT *pResult) { POSITION Pos; int Index; char strCID[256] = ""; Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); m_UserList.DeleteAllItems(); if(m_CharList.GetItemText(Index, 0, strCID, 256)) { DWORD CharID = atoi(strCID); AddUserToList(CharID); UpdateCharPos(CharID); m_CID.Format("%d", CharID); m_UID.Format("%d", m_SearchUID); UpdateData(FALSE); } } *pResult = 0; } void CGameDBToolDlg::OnLvnKeydownUserList(NMHDR *pNMHDR, LRESULT *pResult) { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* LPNMLVKEYDOWN pKeyDown = reinterpret_cast(pNMHDR); POSITION Pos; int Index; unsigned long UserID; char strUserID[256]; if(pKeyDown->wVKey == VK_DELETE) // ij¸¯ÅÍ »èÁ¦ { m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ½ÃÀÛ"); int DeleteCount = 0; Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { while(Pos) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUserID, 256)) { UserID = atoi(strUserID); if(!DBComponent::GameDB::DeleteUser(CDBSingleObject::GetInstance(), UserID)) { m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ½ÇÆÐ %d : %s", UserID, CDBSingleObject::GetInstance().GetErrorString()); break; } else { m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ ¼º°ø %d", UserID); } ++DeleteCount; } } } m_Log.LogPrint("[À¯Àú »èÁ¦] À¯Àú »èÁ¦ Á¾·á. %d¸í »èÁ¦", DeleteCount); UpdateUserTable(); UpdateCharTable(); } else if(pKeyDown->wVKey == 65) // ¿µÀÚ Ã¢ ¶ç¿ì±â(S) { Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUserID, 256)) { UserID = atoi(strUserID); if(0 != UserID) { m_Log.LogPrint("[¿µÀÚâ] ¿µÀÚâ ¶ç¿ì±â UID:%d", UserID); CAdmin dlg; dlg.SetUID(UserID); dlg.DoModal(); } } } } else if(pKeyDown->wVKey == 83) // â°í â ¶ç¿ì±â(S) { Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetItemText(Index, 0, strUserID, 256)) { UserID = atoi(strUserID); if(0 != UserID) { m_Log.LogPrint("[â°íâ] â°íâ ¶ç¿ì±â UID:%d", UserID); CCharStore dlg; dlg.SetUID(UserID); dlg.DoModal(); } } } } UpdateData(FALSE); *pResult = 0; */ } void CGameDBToolDlg::OnLvnKeydownCharList(NMHDR *pNMHDR, LRESULT *pResult) { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* LPNMLVKEYDOWN pKeyDown = reinterpret_cast(pNMHDR); POSITION Pos; int Index; unsigned long CharID; char strCharID[256]; unsigned long PartyID; char strPartyID[256]; if(pKeyDown->wVKey == VK_DELETE) { m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ½ÃÀÛ"); int DeleteCount = 0; Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { while(Pos) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCharID, 256)) { CharID = atoi(strCharID); if(!DBComponent::GameDB::DeleteChar(CDBSingleObject::GetInstance(), CharID)) { m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ½ÇÆÐ %d : %s", CharID, CDBSingleObject::GetInstance().GetErrorString()); break; } else { m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ ¼º°ø %d", CharID); } ++DeleteCount; } } } m_Log.LogPrint("[ij¸¯ÅÍ »èÁ¦] ij¸¯ÅÍ »èÁ¦ Á¾·á. %d¸í »èÁ¦", DeleteCount); UpdateCharTable(); UpdateUserTable(); } else if(pKeyDown->wVKey == 67) // Ä«ÇÇ ¶ç¿ì±â(C) { Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCharID, 256)) { CharID = atoi(strCharID); m_Log.LogPrint("[Ä«ÇÇâ] Ä«ÇÇâ ¶ç¿ì±â %d", CharID); CCharCopy dlg; dlg.SetCID(CharID); dlg.DoModal(); } } } else if(pKeyDown->wVKey == 73) // ¾ÆÀÌÅÛ Ã¢ ¶ç¿ì±â(I) { Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCharID, 256)) { CharID = atoi(strCharID); m_Log.LogPrint("[¾ÆÀÌÅÛ Ã¢] ¾ÆÀÌÅÛ Ã¢ ¶ç¿ì±â %d", CharID); CCharItem dlg; dlg.SetCID(CharID); dlg.DoModal(); } } } else if(pKeyDown->wVKey == 75) // ½ºÅ³ â ¶ç¿ì±â(K) { Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCharID, 256)) { CharID = atoi(strCharID); m_Log.LogPrint("[½ºÅ³Ã¢] ½ºÅ³Ã¢ ¶ç¿ì±â %d", CharID); CCharSkill dlg; dlg.SetCID(CharID); dlg.DoModal(); } } } else if(pKeyDown->wVKey == 78) // À̸§ ¶ç¿ì±â(N) { Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 0, strCharID, 256)) { CharID = atoi(strCharID); m_Log.LogPrint("[À̸§Ã¢] À̸§Ã¢ ¶ç¿ì±â %d", CharID); CCharName dlg; dlg.SetCID(CharID); dlg.DoModal(); UpdateCharTable(); } } } else if(pKeyDown->wVKey == 80) // ÆÄƼ â ¶ç¿ì±â(P) { Pos = m_CharList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_CharList.GetNextSelectedItem(Pos); if(m_CharList.GetItemText(Index, 10, strPartyID, 256)) { PartyID = atoi(strPartyID); if(0 != PartyID) { m_Log.LogPrint("[ÆÄƼâ] ÆÄƼâ ¶ç¿ì±â %d", PartyID); CCharParty dlg; dlg.SetPID(PartyID); dlg.DoModal(); } } } } UpdateData(FALSE); *pResult = 0; */ } void CGameDBToolDlg::OnNMClickUserList(NMHDR *pNMHDR, LRESULT *pResult) { CGameDBToolDlg::OnNMRclickUserList(pNMHDR, pResult); } void CGameDBToolDlg::OnNMClickCharList(NMHDR *pNMHDR, LRESULT *pResult) { CGameDBToolDlg::OnNMRclickCharList(pNMHDR, pResult); } void CGameDBToolDlg::OnBnClickedResetPos() { m_LastPosX = "2740"; m_LastPosY = "23"; m_LastPosZ = "606"; m_SavePosX = "2740"; m_SavePosY = "23"; m_SavePosZ = "606"; UpdateData(FALSE); } void CGameDBToolDlg::OnBnClickedUpdateChar() { OnCharUpdate(); } void CGameDBToolDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CDialog::OnKeyDown(nChar, nRepCnt, nFlags); } void CGameDBToolDlg::OnBnClickedUpdateUser() { OnUserUpdate(); } void CGameDBToolDlg::OnUserUpdate() { // TODO : ÄÄÆÄÀÏ ¿¡·¯°¡ ³ª¼­ ÁÖ¼® ó¸®ÇصӴϴÙ. ÇÊ¿äÇϽŠºÐÀÌ ¼öÁ¤ÇØÁÖ¼¼¿ä. (2005-01-26 by ·Îµò) /* POSITION Pos; int Index; USERINFO_TABLE UserInfo = {0,}; UpdateData(TRUE); Pos = m_UserList.GetFirstSelectedItemPosition(); if(Pos != NULL) { Index = m_UserList.GetNextSelectedItem(Pos); if(m_UserList.GetUserRow(Index, &UserInfo)) { m_Log.LogPrint("[À¯Àú ¾÷µ¥ÀÌÆ®] À¯Àú ¾÷µ¥ÀÌÆ® ½ÃÀÛ %d", UserInfo.UID); // À¯Àú Á¤º¸ ¾÷µ¥ÀÌÆ® if(!DBComponent::GameDB::UpdateUser(CDBSingleObject::GetInstance(), &UserInfo)) { m_Log.LogPrint("[À¯Àú ¾÷µ¥ÀÌÆ®] À¯Àú Á¤º¸ ¾÷µ¥ÀÌÆ® ½ÇÆÐ %d", UserInfo.UID); } else { m_Log.LogPrint("[À¯Àú ¾÷µ¥ÀÌÆ®] À¯Àú Á¤º¸ ¾÷µ¥ÀÌÆ® ¼º°ø %d", UserInfo.UID); } m_Log.LogPrint("[À¯Àú ¾÷µ¥ÀÌÆ®] À¯Àú ¾÷µ¥ÀÌÆ® ¿Ï·á %d", UserInfo.UID); UpdateUserTable(); } } UpdateData(FALSE); */ } void CGameDBToolDlg::OnDestroy() { CDialog::OnDestroy(); if(NULL != m_pFileOpen) delete m_pFileOpen; } HBRUSH CGameDBToolDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: ¿©±â¼­ DCÀÇ Æ¯¼ºÀ» º¯°æÇÕ´Ï´Ù. HBRUSH m_hBrush; m_hBrush = CreateSolidBrush(RGB( 255, 193, 193)); switch( nCtlColor ){ case CTLCOLOR_DLG: pDC->SetBkColor(RGB( 255, 255, 255)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; case CTLCOLOR_STATIC: pDC->SetBkColor(RGB( 255, 193, 193)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; default: return hbr; break; } }