📄 chrskilldata.cpp
字号:
// ChrSkillData.cpp : implementation file
//
#include "stdafx.h"
#include "rmtool.h"
#include "ChrSkillData.h"
#include "CharacterView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChrSkillData dialog
CChrSkillData::CChrSkillData(CWnd* pParent /*=NULL*/)
: CDialog(CChrSkillData::IDD, pParent)
{
//{{AFX_DATA_INIT(CChrSkillData)
m_nSkillType = -1;
//}}AFX_DATA_INIT
}
void CChrSkillData::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChrSkillData)
DDX_Radio(pDX, IDC_SKILL_TYPE, m_nSkillType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChrSkillData, CDialog)
//{{AFX_MSG_MAP(CChrSkillData)
ON_BN_CLICKED(IDC_SKILL_TYPE, OnSkillType)
ON_BN_CLICKED(IDC_SKILL_TYPE1, OnSkillType1)
ON_BN_CLICKED(IDC_SKILL_TYPE2, OnSkillType2)
ON_BN_CLICKED(IDC_SAVE, OnSave)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChrSkillData message handlers
int handle[ 42 ] = { IDC_SKILL_EDIT_0, IDC_SKILL_EDIT_1, IDC_SKILL_EDIT_2, IDC_SKILL_EDIT_3, IDC_SKILL_EDIT_4,
IDC_SKILL_EDIT_5, IDC_SKILL_EDIT_6, IDC_SKILL_EDIT_7, IDC_SKILL_EDIT_8, IDC_SKILL_EDIT_9,
IDC_SKILL_EDIT_10, IDC_SKILL_EDIT_11, IDC_SKILL_EDIT_12, IDC_SKILL_EDIT_13, IDC_SKILL_EDIT_14,
IDC_SKILL_EDIT_15, IDC_SKILL_EDIT_16, IDC_SKILL_EDIT_17, IDC_SKILL_EDIT_18, IDC_SKILL_EDIT_19,
IDC_SKILL_EDIT_20, IDC_SKILL_EDIT_21, IDC_SKILL_EDIT_22, IDC_SKILL_EDIT_23, IDC_SKILL_EDIT_24,
IDC_SKILL_EDIT_25, IDC_SKILL_EDIT_26, IDC_SKILL_EDIT_27, IDC_SKILL_EDIT_28, IDC_SKILL_EDIT_29,
IDC_SKILL_EDIT_30, IDC_SKILL_EDIT_31, IDC_SKILL_EDIT_32, IDC_SKILL_EDIT_33, IDC_SKILL_EDIT_34,
IDC_SKILL_EDIT_35, IDC_SKILL_EDIT_36, IDC_SKILL_EDIT_37, IDC_SKILL_EDIT_38, IDC_SKILL_EDIT_39,
IDC_SKILL_EDIT_40, IDC_SKILL_EDIT_41 };
int handle_rare_count[ 42 ] = { IDC_RARE_COUNT_0, IDC_RARE_COUNT_1, IDC_RARE_COUNT_2, IDC_RARE_COUNT_3, IDC_RARE_COUNT_4,
IDC_RARE_COUNT_5, IDC_RARE_COUNT_6, IDC_RARE_COUNT_7, IDC_RARE_COUNT_8, IDC_RARE_COUNT_9,
IDC_RARE_COUNT_10, IDC_RARE_COUNT_11, IDC_RARE_COUNT_12, IDC_RARE_COUNT_13, IDC_RARE_COUNT_14,
IDC_RARE_COUNT_15, IDC_RARE_COUNT_16, IDC_RARE_COUNT_17, IDC_RARE_COUNT_18, IDC_RARE_COUNT_19,
IDC_RARE_COUNT_20, IDC_RARE_COUNT_21, IDC_RARE_COUNT_22, IDC_RARE_COUNT_23, IDC_RARE_COUNT_24,
IDC_RARE_COUNT_25, IDC_RARE_COUNT_26, IDC_RARE_COUNT_27, IDC_RARE_COUNT_28, IDC_RARE_COUNT_29,
IDC_RARE_COUNT_30, IDC_RARE_COUNT_31, IDC_RARE_COUNT_32, IDC_RARE_COUNT_33, IDC_RARE_COUNT_34,
IDC_RARE_COUNT_35, IDC_RARE_COUNT_36, IDC_RARE_COUNT_37, IDC_RARE_COUNT_38, IDC_RARE_COUNT_39,
IDC_RARE_COUNT_40, IDC_RARE_COUNT_41};
int handle_day[ 42 ] = { IDC_RARE_DAY_0, IDC_RARE_DAY_1, IDC_RARE_DAY_2, IDC_RARE_DAY_3, IDC_RARE_DAY_4,
IDC_RARE_DAY_5, IDC_RARE_DAY_6, IDC_RARE_DAY_7, IDC_RARE_DAY_8, IDC_RARE_DAY_9,
IDC_RARE_DAY_10, IDC_RARE_DAY_11, IDC_RARE_DAY_12, IDC_RARE_DAY_13, IDC_RARE_DAY_14,
IDC_RARE_DAY_15, IDC_RARE_DAY_16, IDC_RARE_DAY_17, IDC_RARE_DAY_18, IDC_RARE_DAY_19,
IDC_RARE_DAY_20, IDC_RARE_DAY_21, IDC_RARE_DAY_22, IDC_RARE_DAY_23, IDC_RARE_DAY_24,
IDC_RARE_DAY_25, IDC_RARE_DAY_26, IDC_RARE_DAY_27, IDC_RARE_DAY_28, IDC_RARE_DAY_29,
IDC_RARE_DAY_30, IDC_RARE_DAY_31, IDC_RARE_DAY_32, IDC_RARE_DAY_33, IDC_RARE_DAY_34,
IDC_RARE_DAY_35, IDC_RARE_DAY_36, IDC_RARE_DAY_37, IDC_RARE_DAY_38, IDC_RARE_DAY_39,
IDC_RARE_DAY_40, IDC_RARE_DAY_41};
int handle_month[ 42 ] = { IDC_RARE_MONTH_0, IDC_RARE_MONTH_1, IDC_RARE_MONTH_2, IDC_RARE_MONTH_3, IDC_RARE_MONTH_4,
IDC_RARE_MONTH_5, IDC_RARE_MONTH_6, IDC_RARE_MONTH_7, IDC_RARE_MONTH_8, IDC_RARE_MONTH_9,
IDC_RARE_MONTH_10, IDC_RARE_MONTH_11, IDC_RARE_MONTH_12, IDC_RARE_MONTH_13, IDC_RARE_MONTH_14,
IDC_RARE_MONTH_15, IDC_RARE_MONTH_16, IDC_RARE_MONTH_17, IDC_RARE_MONTH_18, IDC_RARE_MONTH_19,
IDC_RARE_MONTH_20, IDC_RARE_MONTH_21, IDC_RARE_MONTH_22, IDC_RARE_MONTH_23, IDC_RARE_MONTH_24,
IDC_RARE_MONTH_25, IDC_RARE_MONTH_26, IDC_RARE_MONTH_27, IDC_RARE_MONTH_28, IDC_RARE_MONTH_29,
IDC_RARE_MONTH_30, IDC_RARE_MONTH_31, IDC_RARE_MONTH_32, IDC_RARE_MONTH_33, IDC_RARE_MONTH_34,
IDC_RARE_MONTH_35, IDC_RARE_MONTH_36, IDC_RARE_MONTH_37, IDC_RARE_MONTH_38, IDC_RARE_MONTH_39,
IDC_RARE_MONTH_40, IDC_RARE_MONTH_41};
BOOL CChrSkillData::OnInitDialog()
{
CDialog::OnInitDialog();
m_pApp = (CRMToolApp*)AfxGetApp();
m_nSkillType = 0;
for( int i=0; i<42; i++ )
{
::ShowWindow(::GetDlgItem(m_hWnd, handle_rare_count[i]), SW_HIDE);
::ShowWindow(::GetDlgItem(m_hWnd, handle_month[i]), SW_HIDE);
::ShowWindow(::GetDlgItem(m_hWnd, handle_day[i]), SW_HIDE);
}
GetDlgItem(IDC_STATIC_RSP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH3)->ShowWindow(SW_HIDE);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CChrSkillData::RefreshData()
{
UpdateData();
CCharacterView* pView = (CCharacterView*)GetParent();
switch(m_nSkillType)
{
//SkillExp
case 0:
{
for(int i=0; i<42; i++ )
{
SetDlgItemInt( handle[i], pView->m_ChrInfoEtc.skillexp[ i ] );
::ShowWindow(::GetDlgItem(m_hWnd, handle_rare_count[i]), SW_HIDE);
::ShowWindow(::GetDlgItem(m_hWnd, handle_month[i]), SW_HIDE);
::ShowWindow(::GetDlgItem(m_hWnd, handle_day[i]), SW_HIDE);
}
GetDlgItem(IDC_STATIC_RSP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_DAY3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH3)->ShowWindow(SW_HIDE);
}
break;
//Rare Success Probability
case 1:
{
LPSKILLEXP pSkillExp;
for(int i=0; i<42; i++ )
{
pSkillExp = (LPSKILLEXP)&pView->m_ChrInfoEtc.skillexp[ i ];
SetDlgItemInt( handle[i], pSkillExp->skillexp );
SetDlgItemInt( handle_rare_count[i], pSkillExp->rare );
::ShowWindow(::GetDlgItem(m_hWnd, handle_rare_count[i]), SW_SHOW);
::ShowWindow(::GetDlgItem(m_hWnd, handle_month[i]), SW_HIDE);
::ShowWindow(::GetDlgItem(m_hWnd, handle_day[i]), SW_HIDE);
}
GetDlgItem(IDC_STATIC_RSP)->SetWindowText("R_SP");
GetDlgItem(IDC_STATIC_RSP)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_RSP3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_MONTH3)->ShowWindow(SW_HIDE);
}
break;
//MakeCount, Day, Month
case 2:
{
LPSKILLEXP2 pSkillExp;
for(int i=0; i<42; i++ )
{
pSkillExp = (LPSKILLEXP2)&pView->m_ChrInfoEtc.skillexp[ i ];
SetDlgItemInt( handle[i], pSkillExp->skillexp );
SetDlgItemInt( handle_rare_count[i], pSkillExp->makecount );
SetDlgItemInt( handle_day[i], pSkillExp->day );
SetDlgItemInt( handle_month[i], pSkillExp->month );
::ShowWindow(::GetDlgItem(m_hWnd, handle_rare_count[i]), SW_SHOW);
::ShowWindow(::GetDlgItem(m_hWnd, handle_month[i]), SW_SHOW);
::ShowWindow(::GetDlgItem(m_hWnd, handle_day[i]), SW_SHOW);
}
GetDlgItem(IDC_STATIC_RSP)->SetWindowText("Count");
GetDlgItem(IDC_STATIC_RSP)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_MONTH)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_RSP2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_MONTH2)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_RSP3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_DAY3)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_MONTH3)->ShowWindow(SW_SHOW);
}
break;
}
}
void CChrSkillData::OnSkillType()
{
// TODO: Add your control notification handler code here
m_nSkillType = 0;
RefreshData();
}
void CChrSkillData::OnSkillType1()
{
// TODO: Add your control notification handler code here
m_nSkillType = 1;
RefreshData();
}
void CChrSkillData::OnSkillType2()
{
// TODO: Add your control notification handler code here
m_nSkillType = 2;
RefreshData();
}
void CChrSkillData::OnSave()
{
// TODO: Add your control notification handler code here
if( !RIGHT(MASK_21) ) return;
if( MessageBox( "Do you want to SAVE Skill_Date", "Skill_Data", MB_YESNO ) != IDYES) return;
CCharacterView* pView = (CCharacterView*)GetParent();
if( strcmp(g_CurDbName[ pView->m_nCurDbIndex ], g_NationAccount.szDragon_DB_DefaultName[pView->m_nCurDbIndex]) )
//if( strcmp(g_CurDbName[ pView->m_nCurDbIndex ], DEFAULT_GAME_DB) )
{
MessageBox("Don't Change In Backup DB Data!");
return;
}
UpdateData();
switch(m_nSkillType)
{
//SkillExp
case 0:
{
for(int i=0; i<42; i++ )
{
pView->m_ChrInfoEtc.skillexp[ i ] = GetDlgItemInt( handle[i] );
}
}
break;
case 1:
{
SkillExp SkillExp;
for(int i=0; i<42; i++ )
{
SkillExp.skillexp = GetDlgItemInt( handle[i] );
SkillExp.rare = GetDlgItemInt( handle_rare_count[i] );
memcpy(&pView->m_ChrInfoEtc.skillexp[ i ], &SkillExp, sizeof(SkillExp));
}
}
break;
case 2:
{
SkillExp2 SkillExp;
for(int i=0; i<42; i++ )
{
SkillExp.skillexp = GetDlgItemInt( handle[i] );
SkillExp.makecount = GetDlgItemInt( handle_rare_count[i] );
SkillExp.day = GetDlgItemInt( handle_day[i] );
SkillExp.month = GetDlgItemInt( handle_month[i] );
memcpy(&pView->m_ChrInfoEtc.skillexp[ i ], &SkillExp, sizeof(SkillExp));
}
}
break;
}
//历厘窍扁
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Update chr_info set skill_exp=? where [name]='%s'",pView->m_szCurCharName);
int nColumn = 1;
DWORD dwParamOffset = 0;
DBBINDING* pBinding = g_pDb->CreateParamInfo((BYTE)nColumn); if(!pBinding) { MessageBox("Failed CreateParamInfo"); return; }
pBinding[0].obValue = dwParamOffset;
pBinding[0].cbMaxLen = sizeof(pView->m_ChrInfoEtc.skillexp);
pBinding[0].wType = DBTYPE_BYTES;
dwParamOffset += sizeof(pView->m_ChrInfoEtc.skillexp);
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, pView->m_ChrInfoEtc.skillexp, (BYTE)nColumn, (BYTE)CON);
if(!ret)
{
MessageBox("Have no Character!");
return;
}
else if(ret < 0)
{
MessageBox("fail to update chr_info_binary!");
return;
}
g_pDb->ReleaseParamInfo(pBinding, (BYTE)CON);
//for Extensionlog
WriteLog();
//
#ifdef RM_LOG_MODE
CString str; str.Format("CChrSkillData :: Saved skilldata info(%s)",pView->m_szCurCharName);
m_pApp->LogChar(pView->m_nCurServerSet, str);
#endif
}
void CChrSkillData::WriteLog()
{//for Extensionlog
CCharacterView* pView = (CCharacterView*)GetParent();
if( pView->m_pcLogMgr != NULL )
{
pView->m_pcLogMgr->CheckChrInfoEtc_SkillData( pView->m_ChrInfoEtc );
pView->m_pcLogMgr->SetChrInfo_SkillData( pView->m_ChrInfoEtc );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -