📄 chrbasic.cpp
字号:
_itoa(pView->m_ChrInfo.str, szTemp, 10);
m_ComboStr = szTemp;
_itoa(pView->m_ChrInfo.dex, szTemp, 10);
m_ComboDex = szTemp;
_itoa(pView->m_ChrInfo.con, szTemp, 10);
m_ComboCon = szTemp;
_itoa(pView->m_ChrInfo.wis, szTemp, 10);
m_ComboWis = szTemp;
_itoa(pView->m_ChrInfo.int1, szTemp, 10);
m_ComboInt = szTemp;
_itoa(pView->m_ChrInfo.movep, szTemp, 10);
m_ComboMovp = szTemp;
_itoa(pView->m_ChrInfo.char1, szTemp, 10);
m_ComboChar = szTemp;
_itoa(pView->m_ChrInfo.endu, szTemp, 10);
m_ComboEndu = szTemp;
_itoa(pView->m_ChrInfo.moral, szTemp, 10);
m_ComboMoral = szTemp;
_itoa(pView->m_ChrInfo.luck, szTemp, 10);
m_ComboLuck = szTemp;
_itoa(pView->m_ChrInfo.wsps, szTemp, 10);
m_ComboWsps = szTemp;
//UpdateData( );
UpdateData( FALSE );
//MaxExp kyo 020925
int nLevel = c_ComboLevel.GetCurSel() + 1;
SetMaxExp2Level( nLevel ,m_dwReset);
//kyo 020826 磊府捞悼 UpdateData关栏肺~~
int iDualClass = (int)pView->m_ChrInfo.guildname[1] + 1;
if( m_dwDualStep <= 0 )
iDualClass = 0;
c_ComboDualClass.SetCurSel( iDualClass );
}
void CChrBasic::OnSelchangeComboLevel()
{
// TODO: Add your control notification handler code here
int nLevel = c_ComboLevel.GetCurSel() + 1;
SetMaxExp2Level( nLevel, m_dwReset );
}
void CChrBasic::OnEditchangeComboLevel()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int nLevel = atoi( m_ComboLevel );
SetMaxExp2Level( nLevel,m_dwReset );
}
void CChrBasic::SetMaxExp2Level( int nLevel , const int nReset)
{
//_ASSERTE( nLevel > 0 && nLevel <= MAX_USER_LEVEL );
if( nLevel <= 0 || nLevel > MAX_USER_LEVEL )
{
AfxMessageBox( "Error : Exceed Level_Limit" );
return;
}
CCharacterView* pView = (CCharacterView*)GetParent();
char szTemp[ 10 ];
WCHAR query[ 0xff ];
RM_GET_EXP_FROM_LEVEL value;
if( pView->CHANGE_LIMITED_RESET_FORLEVEL<= nReset ) // 030307
{
swprintf(query, L"select step, exp_max from NPC_LV2Exp"
L" where lv = %d order by lv desc", nLevel);
}
else
{
swprintf(query, L"select step, exp_max from NPC_LV2Exp_old"
L" where lv = %d order by lv desc", nLevel);
}
#ifdef OLD_NPC2EXP // 030331
swprintf(query, L"select step, exp_max from NPC_LV2Exp where lv = %d order by lv desc", nLevel);
#endif
int ret = g_pDb->OpenRecord(query, &value, 1, (BYTE)DRAGON_DB[ pView->m_nCurDbIndex ]);
if(ret < 0)
MessageBox("Query Failed : RM_GET_LEVEL_FROM_EXP");
//kyo 020925 Edit : Add MaxExp EDIT_BOX
m_dwMaxExp = value.dwExpMax;
SetDlgItemInt( IDC_MAX_EXP, m_dwMaxExp);
/* previous
m_dwExp = value.dwExpMax;
SetDlgItemInt(IDC_EXP, m_dwExp);
*/
_itoa(nLevel, szTemp, 10);
SetDlgItemText(IDC_COMBO_LEVEL, szTemp);
m_ComboLevel = szTemp;
_itoa(value.dwStep, szTemp, 10);
SetDlgItemText(IDC_COMBO_LV_STEP, szTemp);
m_ComboLvStep = szTemp;
//UpdateData(FALSE);
}
void CChrBasic::OnEditchangeComboLvStep()
{
UpdateData(TRUE);
int nStep = atoi( m_ComboLvStep );
SetMaxExp2Step( nStep ,m_dwReset);
}
void CChrBasic::OnSelchangeComboLvStep()
{
// TODO: Add your control notification handler code here
CCharacterView* pView; pView = (CCharacterView*)GetParent();
int nStep = c_ComboLvStep.GetCurSel();
SetMaxExp2Step( nStep ,m_dwReset);
}
void CChrBasic::SetMaxExp2Step( int nStep , const int nReset)
{
//_ASSERTE( nStep > 0 && nStep <= MaX_USER_LEVEL_STEP );
if( nStep <= 0 || nStep > MaX_USER_LEVEL_STEP )
{
AfxMessageBox( "Error : Exceed Level_Step_Limit" );
return;
}
CCharacterView* pView = (CCharacterView*)GetParent();
char szTemp[ 10 ];
WCHAR query[ 0xff ];
RM_GET_LEVEL_FROM_STEP value;
swprintf(query, L"select top 1 lv,exp_max from NPC_LV2Exp where step = %d order by exp_max desc", nStep);
int ret = g_pDb->OpenRecord(query, &value, 1, (BYTE)CON );
if(ret < 0)
MessageBox("Query Failed : RM_GET_LEVEL_FROM_STEP");
//kyo 020925 Edit : Add MaxExp EDIT_BOX
m_dwMaxExp = value.dwExpMax;
SetDlgItemInt( IDC_MAX_EXP, m_dwMaxExp);
/* previous
m_dwExp = value.dwExpMax;
SetDlgItemInt(IDC_EXP, m_dwExp);
*/
_itoa(value.dwLevel, szTemp, 10);
SetDlgItemText(IDC_COMBO_LEVEL, szTemp);
m_ComboLevel = szTemp;
_itoa(nStep, szTemp, 10);
SetDlgItemText(IDC_COMBO_LV_STEP, szTemp);
m_ComboLvStep = szTemp;
//UpdateData(FALSE);
}
void CChrBasic::InitAbilityCombo(unsigned int class1, unsigned int step, BOOL reserve)
{
char szTemp[ 10 ];
char szReserve[ 10 ];
for(int i=0 ; i<m_pApp->m_nAbilityLimitCount ; i++)
{
if(m_pApp->m_AbilityLimit[ i ].pre_Class == class1 &&
m_pApp->m_AbilityLimit[ i ].Step == step)
{
//str
GetDlgItemText(IDC_COMBO_STR, szReserve, 10);
c_ComboStr.ResetContent();
unsigned int j =0;//020303 lsw
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Str ; j++)
c_ComboStr.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_STR, szReserve);
//con
GetDlgItemText(IDC_COMBO_CON, szReserve, 10);
c_ComboCon.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Con ; j++)
c_ComboCon.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_CON, szReserve);
//dex
GetDlgItemText(IDC_COMBO_DEX, szReserve, 10);
c_ComboDex.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Dex ; j++)
c_ComboDex.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_DEX, szReserve);
//wis
GetDlgItemText(IDC_COMBO_WIS, szReserve, 10);
c_ComboWis.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Wis ; j++)
c_ComboWis.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_WIS, szReserve);
//int
GetDlgItemText(IDC_COMBO_INT, szReserve, 10);
c_ComboInt.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Int ; j++)
c_ComboInt.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_INT, szReserve);
//movp
GetDlgItemText(IDC_COMBO_MOVP, szReserve, 10);
c_ComboMovp.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Movp ; j++)
c_ComboMovp.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_MOVP, szReserve);
//char
GetDlgItemText(IDC_COMBO_CHAR, szReserve, 10);
c_ComboChar.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Cha ; j++)
c_ComboChar.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_CHAR, szReserve);
//endu
GetDlgItemText(IDC_COMBO_ENDU, szReserve, 10);
c_ComboEndu.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Endu ; j++)
c_ComboEndu.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_ENDU, szReserve);
//moral
GetDlgItemText(IDC_COMBO_MORAL, szReserve, 10);
c_ComboMoral.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Mor ; j++)
c_ComboMoral.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_MORAL, szReserve);
//luck
GetDlgItemText(IDC_COMBO_LUCK, szReserve, 10);
c_ComboLuck.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].Luck ; j++)
c_ComboLuck.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_LUCK, szReserve);
//wsps
GetDlgItemText(IDC_COMBO_WSPS, szReserve, 10);
c_ComboWsps.ResetContent();
for(j=1 ; j<=m_pApp->m_AbilityLimit[ i ].WS ; j++)
c_ComboWsps.InsertString( j-1 , _itoa(j,szTemp,10) );
if(reserve) SetDlgItemText(IDC_COMBO_WSPS, szReserve);
return;
}
}
}
void CChrBasic::OnSelchangeComboClass()
{
// TODO: Add your control notification handler code here
/*
(0,"Worrior");
(1,"Thief");
(2,"Archery");
(3,"Wizard");
(4,"Priest");
*/
UpdateData();
int nIndex = c_ComboClass.GetCurSel();
InitAbilityCombo(nIndex, m_dwDualStep, TRUE);
}
void CChrBasic::OnButtonSave()
{
// TODO: Add your control notification handler code here
if( !RIGHT(MASK_17) ) return;
UpdateData();
CCharacterView *pView = (CCharacterView*)GetParent();
if(pView->m_szCurCharName == "" || pView->m_szCurLoginId == "")
return;
//kyo 020925
if( MessageBox( " Do You Realy Want To Save? ", "Save", MB_YESNO ) == IDNO )
return;
UpdateChrLogInfo(); //chr_log_info data 历厘
UpdateChrInfo();
//for Extensionlog // 021121
WriteLog();
#ifdef RM_LOG_MODE
CString str; str.Format("CChrBasic :: Saved basic info(%s)",pView->m_szCurCharName);
m_pApp->LogChar(pView->m_nCurServerSet, str);
#endif
}
void CChrBasic::WriteLog()
{//for Extensionlog
CCharacterView *pView = (CCharacterView*)GetParent();
//basicInfo犬牢
if( pView->m_pcLogMgr == NULL)
{
MessageBoxPrintf( MB_OK, "NULL CLogMgr In Basic" );
return;
}
pView->m_pcLogMgr->CheckChrInfo( pView->m_ChrInfo ); //货肺 官诧郴侩捞 乐栏搁 肺弊巢变促.
pView->m_pcLogMgr->SetChrInfo( pView->m_ChrInfo ); //官诧吧肺 update茄促
if( g_iNation == NATION_KOREA )
{
pView->m_pcLogMgr->CheckChrLogInfo( pView->m_ChrLogInfo);
pView->m_pcLogMgr->SetChrInfo_Log( pView->m_ChrLogInfo );
}
else
{
pView->m_pcLogMgr->CheckChrLogInfo( pView->m_ChrLogInfo2);
pView->m_pcLogMgr->SetChrInfo_Log2( pView->m_ChrLogInfo2 );
}
}
BOOL CChrBasic::UpdateChrLogInfo()
{
CCharacterView *pView = (CCharacterView*)GetParent();
g_pDb->KSCToUnicode(m_szRealName.GetBuffer(m_szRealName.GetLength()), pView->m_ChrLogInfo.Wname); //蜡历捞抚
//厚剐锅龋甫 官操霸 登搁???
strcpy(pView->m_ChrLogInfo.passwd, m_szPassword); //厚剐锅龋
g_pDb->KSCToUnicode(m_szJumin.GetBuffer(m_szJumin.GetLength()), pView->m_ChrLogInfo.Wjumin); //林刮锅龋
strcpy(pView->m_ChrLogInfo.email, m_szEmail); //eMail
g_pDb->KSCToUnicode(m_szPhone.GetBuffer(m_szPhone.GetLength()), pView->m_ChrLogInfo.Wphone); //傈拳锅龋
int nColumn = 6; //颇扼固磐 肮荐 瘤沥
DWORD dwParamOffset = 0; //颇扼固磐 Binding 沥焊 备炼眉俊辑 阿 颇扼固磐 Value甸狼 Offset
DBBINDING* pBinding = g_pDb->CreateParamInfo((WORD)nColumn); if(!pBinding) { MessageBox("Failed CreateParamInfo"); return FALSE; }
pBinding[0].obValue = dwParamOffset;
pBinding[0].cbMaxLen = sizeof(pView->m_ChrLogInfo.passwd);
pBinding[0].wType = DBTYPE_STR;
dwParamOffset += sizeof(pView->m_ChrLogInfo.passwd);
pBinding[1].obValue = dwParamOffset;
pBinding[1].cbMaxLen = sizeof(pView->m_ChrLogInfo.Wname);
pBinding[1].wType = DBTYPE_WSTR;
dwParamOffset += sizeof(pView->m_ChrLogInfo.Wname);
pBinding[2].obValue = dwParamOffset;
pBinding[2].cbMaxLen = sizeof(pView->m_ChrLogInfo.Wjumin);
pBinding[2].wType = DBTYPE_WSTR;
dwParamOffset += sizeof(pView->m_ChrLogInfo.Wjumin);
pBinding[3].obValue = dwParamOffset;
pBinding[3].cbMaxLen = sizeof(pView->m_ChrLogInfo.Wphone);
pBinding[3].wType = DBTYPE_WSTR;
dwParamOffset += sizeof(pView->m_ChrLogInfo.Wphone);
pBinding[4].obValue = dwParamOffset;
pBinding[4].cbMaxLen = sizeof(pView->m_ChrLogInfo.email);
pBinding[4].wType = DBTYPE_STR;
dwParamOffset += sizeof(pView->m_ChrLogInfo.email);
pBinding[5].obValue = dwParamOffset;
pBinding[5].cbMaxLen = sizeof(pView->m_ChrLogInfo.regday);
pBinding[5].wType = DBTYPE_DBTIMESTAMP;
dwParamOffset += sizeof(pView->m_ChrLogInfo.regday);
//--------------------------------------------------------------------------------------
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Update chr_log_info Set passwd=?, d_name=?, d_jumin=?, d_tel2=?,"
" d_email=?, d_regday=? where login_id='%s'",pView->m_szCurLoginId);
g_pDb->KSCToUnicode(szQuery,wszQuery);
int nRet;
if( IsChrloginfoInDrDB() )
{
nRet= g_pDb->ExecuteSQLByParam(wszQuery, pBinding, &pView->m_ChrLogInfo, (BYTE)nColumn, (BYTE)DRAGON_DB[ pView->m_nCurDbIndex ]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -