Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
203 lines
5.4 KiB
C++
203 lines
5.4 KiB
C++
// AddBlockUserDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "AddBlockUserDlg.h"
|
|
#include "UserCharTreeView.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "CharacterDoc.h"
|
|
#include "PacketManager.h"
|
|
#include ".\addblockuserdlg.h"
|
|
|
|
// CAddBlockUserDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CAddBlockUserDlg, CDialog)
|
|
CAddBlockUserDlg::CAddBlockUserDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CAddBlockUserDlg::IDD, pParent)
|
|
, m_lpParent(pParent)
|
|
{
|
|
}
|
|
|
|
CAddBlockUserDlg::~CAddBlockUserDlg()
|
|
{
|
|
}
|
|
|
|
void CAddBlockUserDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_BA_SERVER_CB, m_ctrlServerGroupCb);
|
|
DDX_Control(pDX, IDC_BA_SELALL_CHK, m_ctrlAllChk);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CAddBlockUserDlg, CDialog)
|
|
ON_CBN_SELCHANGE(IDC_BLOCK_TYPE, OnCbnSelchangeBlockType)
|
|
ON_BN_CLICKED(IDC_BA_SELALL_CHK, OnBnClickedBaSelallChk)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CAddBlockUserDlg 메시지 처리기입니다.
|
|
|
|
BOOL CAddBlockUserDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CUserCharTreeView* lpTreeDlg = static_cast<CUserCharTreeView*>(m_lpParent);
|
|
CUserCharTreeView::BLOCK_INFO BlockInfo = lpTreeDlg->GetLastBlockInfo();
|
|
|
|
ServerGroupComboSet(m_ctrlServerGroupCb, false);
|
|
|
|
// 대상 그룹 셋팅 (체크 콤보 박스)
|
|
CString strServerName;
|
|
CCharacterDoc::GetInstance().GetServerName(BlockInfo.m_dwServerGroup, strServerName);
|
|
if (0 != strServerName.CompareNoCase("UNKNOWN"))
|
|
{
|
|
m_ctrlServerGroupCb.SetCheck(m_ctrlServerGroupCb.FindString(-1, strServerName), true);
|
|
m_ctrlServerGroupCb.EnableWindow(false);
|
|
m_ctrlAllChk.EnableWindow(false);
|
|
}
|
|
|
|
// 대상 캐릭명 셋팅
|
|
SetDlgItemText(IDC_BLOCK_NAME, BlockInfo.m_szCharacterName);
|
|
|
|
CComboBox* lpBlockTermCb = static_cast<CComboBox*>(GetDlgItem(IDC_BLOCK_TYPE));
|
|
|
|
// 블럭 기간 콤보 셋팅
|
|
lpBlockTermCb->AddString(GetLocalString("IDC_BLOCKADD_06"));
|
|
lpBlockTermCb->AddString(GetLocalString("IDC_BLOCKADD_07"));
|
|
|
|
SetWindowText(GetLocalString("WND_BLOCKADD"));
|
|
|
|
SetUIString(this->m_hWnd, IDC_BLOCKADD_01, "IDC_BLOCKADD_01");
|
|
SetUIString(this->m_hWnd, IDC_BLOCKADD_02, "IDC_BLOCKADD_02");
|
|
SetUIString(this->m_hWnd, IDC_BLOCKADD_03, "IDC_BLOCKADD_03");
|
|
SetUIString(this->m_hWnd, IDC_BLOCKADD_04, "IDC_BLOCKADD_04");
|
|
SetUIString(this->m_hWnd, IDC_BLOCKADD_05, "IDC_BLOCKADD_05");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CAddBlockUserDlg::OnOK()
|
|
{
|
|
CUserCharTreeView* lpTreeDlg = static_cast<CUserCharTreeView*>(m_lpParent);
|
|
CUserCharTreeView::BLOCK_INFO BlockInfo = lpTreeDlg->GetLastBlockInfo();
|
|
|
|
CDateTimeCtrl* lpDateCtrl = static_cast<CDateTimeCtrl*>(GetDlgItem(IDC_BLOCK_DATE));
|
|
CComboBox* lpBlockTermCb = static_cast<CComboBox*>(GetDlgItem(IDC_BLOCK_TYPE));
|
|
|
|
unsigned char cBlockTarget, cBlockTerm = 0;
|
|
|
|
// 블럭 대상
|
|
if(BlockInfo.ACCOUNT == BlockInfo.m_cType)
|
|
{
|
|
cBlockTarget = PktAdminMgr::PktAddBlockUser::TARGET_ACCOUNT;
|
|
}
|
|
else if(BlockInfo.CHARACTER == BlockInfo.m_cType)
|
|
{
|
|
cBlockTarget = PktAdminMgr::PktAddBlockUser::TARGET_CHARACTER;
|
|
}
|
|
|
|
// 블럭 기간
|
|
if(CB_ERR == lpBlockTermCb->GetCurSel())
|
|
{
|
|
Report(GetLocalString("MSG_0093"), CAUTION);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if(TEMP_BLOCK == lpBlockTermCb->GetCurSel())
|
|
{
|
|
cBlockTerm = PktAdminMgr::PktAddBlockUser::TERM_TEMPORARY;
|
|
}
|
|
else if((PERMANANT_BLOCK == lpBlockTermCb->GetCurSel()))
|
|
{
|
|
cBlockTerm = PktAdminMgr::PktAddBlockUser::TERM_PERMANANT;
|
|
}
|
|
}
|
|
|
|
// 블럭 기간 (실제 날짜)
|
|
TCHAR szFinishDate[20], szDescription[31];
|
|
szFinishDate[0] = szDescription[0] = 0;
|
|
|
|
COleDateTime StartBlockTime = COleDateTime::GetCurrentTime();
|
|
|
|
COleDateTime FinishBlockTime;
|
|
lpDateCtrl->GetTime(FinishBlockTime);
|
|
|
|
COleDateTimeSpan TimeSpan = FinishBlockTime - StartBlockTime;
|
|
|
|
// 24시간 이내에 있는 시간은 왠지 모르게 계산을 못한다 ㅡ.ㅡ 10일-9일을 하면 날수가 0이다 젠장
|
|
long BlockDays = TimeSpan.GetDays() + 1;
|
|
if((StartBlockTime.GetDay() == FinishBlockTime.GetDay()) && (1 == BlockDays))
|
|
{
|
|
--BlockDays;
|
|
}
|
|
else if(StartBlockTime > FinishBlockTime)
|
|
{
|
|
Report(GetLocalString("MSG_0094"), CAUTION);
|
|
return;
|
|
}
|
|
|
|
GetDlgItemText(IDC_BLOCK_REASON, szDescription, sizeof(szDescription));
|
|
_sntprintf(szFinishDate, sizeof(szFinishDate), _T("%d"), BlockDays);
|
|
|
|
if((0 < _tcslen(szFinishDate)) && (0 < _tcslen(szDescription)) && (30 > _tcslen(szDescription)))
|
|
{
|
|
|
|
for (int nIndex = 0; nIndex < m_ctrlServerGroupCb.GetCount(); ++nIndex)
|
|
{
|
|
if (TRUE == m_ctrlServerGroupCb.GetCheck(nIndex))
|
|
{
|
|
CString strServerName;
|
|
unsigned long dwServerIndex = 10000;
|
|
|
|
m_ctrlServerGroupCb.GetLBText(nIndex, strServerName);
|
|
CCharacterDoc::GetInstance().GetServerIndex(strServerName, dwServerIndex);
|
|
|
|
CPacketMgr::GetInstance()->SendPktBlockUser((unsigned char)dwServerIndex,
|
|
BlockInfo.m_dwUID, BlockInfo.m_szCharacterName, cBlockTarget, cBlockTerm, szFinishDate, szDescription);
|
|
}
|
|
}
|
|
|
|
EndDialog(true);
|
|
}
|
|
else
|
|
{
|
|
Report(GetLocalString("MSG_0095"), CAUTION);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void CAddBlockUserDlg::OnCbnSelchangeBlockType()
|
|
{
|
|
CComboBox* lpBlockTermCb = static_cast<CComboBox*>(GetDlgItem(IDC_BLOCK_TYPE));
|
|
|
|
if(NULL == lpBlockTermCb)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(TEMP_BLOCK == lpBlockTermCb->GetCurSel())
|
|
{
|
|
GetDlgItem(IDC_BLOCK_DATE)->EnableWindow(true);
|
|
}
|
|
else if(PERMANANT_BLOCK == lpBlockTermCb->GetCurSel())
|
|
{
|
|
GetDlgItem(IDC_BLOCK_DATE)->EnableWindow(false);
|
|
}
|
|
}
|
|
|
|
void CAddBlockUserDlg::OnBnClickedBaSelallChk()
|
|
{
|
|
bool bChk = false;
|
|
m_ctrlServerGroupCb.EnableWindow(true);
|
|
|
|
if (BST_CHECKED == m_ctrlAllChk.GetCheck())
|
|
{
|
|
bChk = true;
|
|
m_ctrlServerGroupCb.EnableWindow(false);
|
|
}
|
|
|
|
m_ctrlServerGroupCb.SelectAll(bChk);
|
|
} |