📄 characterview.cpp
字号:
//Black_list俊 火涝茄促.
if( FALSE_RETURN == InsertBlackList( m_szCurLoginId, m_szCurCharName ) ) return;
//Refresh茄促.
OnEnterFindID();
}
int CCharacterView::DeleteCharacterInCHR_LOG_INFO( CString szId, CString szName)
{
_ASSERTE( szId.GetBuffer(0) != NULL );
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
int ret=0;
sprintf(szQuery, "select RTRIM(name1),RTRIM(name2),RTRIM(name3),"
"RTRIM(name4) from chr_log_info where login_id='%s'", szId.GetBuffer(0) );
g_pDb->KSCToUnicode(szQuery,wszQuery);
memset(&m_szAllCharName,0,sizeof(m_szAllCharName));
switch( g_iNation ) // 030102 kyo chr_log_info狼 name1... 狼 屈侥捞 char捞 酒匆 版快 default肺
{
case NATION_KOREA:
{
ret = g_pDb->OpenRecord(wszQuery, &m_szAllCharName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]); // 怕惫侩捞骨肺 林籍贸府窃
}break;
default:
{
wchar_name w_Allname;
memset(&w_Allname, 0, sizeof( w_Allname) );
//罐酒坷绰 磊丰屈狼 蔼捞 char牢啊 wchar牢啊甫 舅酒郴搁. 歹宽 祈茄单.//kyo
ret = g_pDb->OpenRecord(wszQuery, &w_Allname, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
::WideCharToMultiByte(CP_ACP, 0, w_Allname.name1,-1, m_szAllCharName.name1, 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, w_Allname.name2,-1, m_szAllCharName.name2, 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, w_Allname.name3,-1, m_szAllCharName.name3, 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, w_Allname.name4,-1, m_szAllCharName.name4, 100, NULL, NULL);
}break;
}
//int ret = g_pDb->OpenRecord(wszQuery, &m_szAllCharName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
//Add
if(ret < 0)
{
MessageBox("Query ERROR!! TableName: chr_log_info, Type: Select");
return FALSE_RETURN;
}
else if(!ret)
{
MessageBox("Query Failed!! No Character. TableName: chr_log_info, Type: Select");
return FALSE_RETURN;
}
if( !strcmp(m_szAllCharName.name1, szName.GetBuffer(0)) ) sprintf(m_szAllCharName.name1,"<NULL>");
else if( !strcmp(m_szAllCharName.name2, szName.GetBuffer(0)) ) sprintf(m_szAllCharName.name2,"<NULL>");
else if( !strcmp(m_szAllCharName.name3, szName.GetBuffer(0)) ) sprintf(m_szAllCharName.name3,"<NULL>");
else if( !strcmp(m_szAllCharName.name4, szName.GetBuffer(0)) ) sprintf(m_szAllCharName.name4,"<NULL>");
//update
sprintf(szQuery, "Update chr_log_info set name1=?, name2=?, name3=?, name4=? "
"where login_id='%s'",szId.GetBuffer(0) );
int nColumn = 4;
DBBINDING* pBinding = g_pDb->CreateParamInfo( (BYTE)nColumn, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
if(!pBinding) { MessageBox("Failed CreateParamInfo"); return FALSE_RETURN; }
DWORD dwParamOffset = 0;
int size = sizeof( m_szAllCharName.name1 );
pBinding[0].obValue = dwParamOffset;
pBinding[0].cbMaxLen = size;
pBinding[0].wType = DBTYPE_STR;
dwParamOffset += size;
pBinding[1].obValue = dwParamOffset;
pBinding[1].cbMaxLen = size;
pBinding[1].wType = DBTYPE_STR;
dwParamOffset += size;
pBinding[2].obValue = dwParamOffset;
pBinding[2].cbMaxLen = size;
pBinding[2].wType = DBTYPE_STR;
dwParamOffset += size;
pBinding[3].obValue = dwParamOffset;
pBinding[3].cbMaxLen = size;
pBinding[3].wType = DBTYPE_STR;
dwParamOffset += size;
g_pDb->KSCToUnicode(szQuery,wszQuery);
ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, &m_szAllCharName , (BYTE)nColumn, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
if(!ret)
{
MessageBox("Have no User!");
return FALSE_RETURN;
}
else if(ret < 0)
{
MessageBox("Query ERROR!! TableName: chr_log_info, Type: Update");
return FALSE_RETURN;
}
g_pDb->ReleaseParamInfo(pBinding, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
return TRUE;
}
int CCharacterView::DeleteCharacterInCHR_INFO( CString szName )
{
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Delete from chr_info where name='%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)DRAGON_DB[ m_nCurDbIndex ] );
if(ret <= 0)
{
MessageBox("Query Failed!! Have No Name In chr_info");
return FALSE_RETURN;
}
return TRUE;
}
int CCharacterView::DeleteCharacterInCHR_INFO2( CString szName )
{
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Delete from chr_info2 where name='%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)DRAGON_DB[ m_nCurDbIndex ] );
if(ret <= 0)
{
MessageBox("Query Failed!! Have No Name In chr_info2");
return FALSE_RETURN;
}
return TRUE;
}
int CCharacterView::DeleteCharacterInFRIEND_LIST( CString szName )
{
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Delete from friend_list where name='%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)DRAGON_DB[ m_nCurDbIndex ] );
//friend_list啊 绝栏荐档 乐栏聪瘪.
if(ret < 0)
{
MessageBox("Query Failed!! Have No Name In friend_list");
return FALSE_RETURN;
}
return 0;
}
int CCharacterView::DeleteCharacterInGUILD_MEMBER_LIST( CString szName )
{
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
sprintf(szQuery, "Delete from guild_member_list where name='%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)DRAGON_DB[ m_nCurDbIndex ] );
//GuildList俊 绝栏荐档 乐栏聪瘪. 俊矾牢 版快父 犬牢茄促.
if(ret < 0)
{
MessageBox("Query Failed!! Have No Name In gulid_list");
return FALSE_RETURN;
}
return 0;
}
#define CHARACTER_NAME_SIZE 20
bool CCharacterView::CheckDeleteCharacter( CString szName )
{
_ASSERTE( szName.GetBuffer(0) != NULL );
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
char szChacaterName[ CHARACTER_NAME_SIZE ];
//chr_log_info绰 DeleteCharacterInCHR_LOG_INFO窃荐俊辑 刚历 犬牢窍骨肺 促弗巴父 犬牢窍搁 等促.
//chr_info俊 name啊 乐绰啊?
sprintf( szQuery, "select RTRIM(name) from chr_info where name = '%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode( szQuery, wszQuery );
int ret = g_pDb->OpenRecord(wszQuery, &szChacaterName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
if( ret <= 0 )
{
#ifdef _DEBUG_
AfxMessageBox( "Have No Result: select [name] from chr_info where name" );
#endif _DEBUG_
goto _Err_Query;
}
//chr_info2俊 name啊 乐绰啊?
sprintf( szQuery, "select RTRIM(name) from chr_info2 where name = '%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode( szQuery, wszQuery );
ret = g_pDb->OpenRecord(wszQuery, &szChacaterName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
if( ret <= 0 )
{
#ifdef _DEBUG_
AfxMessageBox( "Have No Result: select RTRIM(name) from chr_info2 where name" );
#endif _DEBUG_
goto _Err_Query;
}
//friend_list俊 name啊 乐绰啊?
sprintf( szQuery, "select RTRIM(name) from friend_list where name = '%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode( szQuery, wszQuery );
ret = g_pDb->OpenRecord(wszQuery, &szChacaterName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
//绝阑荐档 乐栏聪瘪 俊矾父 眉农茄促.
if( ret < 0 )
{
#ifdef _DEBUG_
AfxMessageBox( "Have No Result: select RTRIM(name) from friend_list where name" );
#endif _DEBUG_
goto _Err_Query;
}
//guild_list俊 name捞 乐绰啊?
sprintf( szQuery, "select RTRIM(name) from guild_member_list where name = '%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode( szQuery, wszQuery );
ret = g_pDb->OpenRecord(wszQuery, &szChacaterName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
// guild_member_list俊 name啊 绝栏荐档 乐蝶.
if( ret < 0 )
{
#ifdef _DEBUG_
AfxMessageBox( "Have No Result: select RTRIM(name) from guild_member_list where name" );
#endif _DEBUG_
goto _Err_Query;
}
//Black_list俊 name捞 绝绰啊!!
sprintf( szQuery, "select RTRIM(name) from Black_list where name = '%s'", szName.GetBuffer(0) );
g_pDb->KSCToUnicode( szQuery, wszQuery );
ret = g_pDb->OpenRecord(wszQuery, &szChacaterName, 1, (BYTE)DRAGON_DB[ m_nCurDbIndex ]);
if( ret > 0 )
{
#ifdef _DEBUG_
AfxMessageBox( "AlreadyHave A Result!!!: select RTRIM(name) from Black_list where name" );
#endif _DEBUG_
goto _Err_Query;
}
return TRUE;
_Err_Query:
AfxMessageBox( "Query Failed: CheckDeleteCharacter()" );
return FALSE;
}
int CCharacterView::InsertBlackList( CString szId, CString szName)
{
_ASSERTE( szId.GetBuffer(0) != NULL );
_ASSERTE( szName.GetBuffer(0) != NULL );
//QueryBasicInfo俊辑 m_chrInfo肺 某腐磐 沥焊甫 历厘窍看扁锭巩俊 捞吧 捞侩窍咯 BlackLIst俊 蔼阑 Insert茄促.
char szQuery[ 1024 ];
WCHAR wszQuery[ 1024 ];
//昏力窍绰 蜡历...
sprintf(szQuery, "insert into Black_List (Name,LoginId,RMLoginName, RMLoginID,[Level]) values ('%s',"
"'%s','%s','%s',%d)", szName.GetBuffer(0), szId.GetBuffer(0), m_pApp->m_LogInfo.Name, m_pApp->m_LogInfo.ID, m_ChrInfo.lev );
g_pDb->KSCToUnicode(szQuery,wszQuery);
int ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)DRAGON_DB[ m_nCurDbIndex ] );
if(ret <= 0)
{
MessageBox("Query Failed!! Don't Insert into Black_list");
return FALSE_RETURN;
}
return 0;
}
void CCharacterView::OnRefreshCharacter()
{
// TODO: Add your control notification handler code here
if( !RIGHT(MASK_2) ) return;
int nIndex;
nIndex = c_ComboCharName.GetCurSel();
m_WareDlg.RefreshData(); // 021128 kyo //芒绊绰 蜡历捞抚 乐绊 绝绊客 惑包 决蝶.
CCharacterView::OnSelchangeComboName();
// UpdateData();
// OnEnterFindID();
UpdateData(FALSE);
}
void CCharacterView::InitForLog()
{
UpdateData(FALSE);
//if( !IsBadReadPtr( m_pcLogMgr , sizeof(CLogMgr)) )
// delete m_pcLogMgr;
//m_pcLogMgr = new CLogMgr( m_ChrInfo, m_ChrInfoBinary, m_ChrInfoEtc, m_ChrInfo2, m_ChrLogInfo);
m_pcLogMgr->InitVariable( m_ChrInfo, m_ChrInfoBinary, m_ChrInfoEtc, m_ChrLogInfo, m_ChrInfo.guildname[16] , m_dwGuildCode);
m_pcLogMgr->SetUserIdName( m_ComboCharName, m_szCurLoginId );
//m_pcLogMgr->SetUserIdName( m_szCurCharName, m_szCurLoginId );
CString rServer, rDb;
if( 0 > c_ServerSet.GetCurSel() ) return;
c_ServerSet.GetLBText( c_ServerSet.GetCurSel(), rServer );
//OnSelchangeComboDb();
if( 0>c_ComboDb.GetCurSel() ) return;
c_ComboDb.GetLBText( c_ComboDb.GetCurSel(), rDb );
m_pcLogMgr->SetServerDB( rServer, rDb );
}
void CCharacterView::SetChrInfo( chr_info &chr, chr_infoUNI &chrUNI)
{
chr.class1 =chrUNI.class1;
chr.spell =chrUNI.spell;
chr.reset =chrUNI.reset;
chr.lev =chrUNI.lev;
chr.exp =chrUNI.exp;
chr.nut1 =chrUNI.nut1;
chr.nut2 =chrUNI.nut2;
chr.nut3 =chrUNI.nut3;
chr.mana =chrUNI.mana;
chr.hp =chrUNI.hp;
chr.hungry =chrUNI.hungry;
chr.str =chrUNI.str;
chr.con =chrUNI.con;
chr.dex =chrUNI.dex;
chr.wis =chrUNI.wis;
chr.int1 =chrUNI.int1;
chr.movep =chrUNI.movep;
chr.char1 =chrUNI.char1;
chr.endu =chrUNI.endu;
chr.moral =chrUNI.moral;
chr.luck =chrUNI.luck;
chr.wsps =chrUNI.wsps;
chr.reserved_point =chrUNI.reserved_point;
chr.nation =chrUNI.nation;
chr.ladderscore =chrUNI.ladderscore;
chr.BankMoney =chrUNI.BankMoney;
chr.LastLoan =chrUNI.LastLoan;
chr.fame =chrUNI.fame ;
::WideCharToMultiByte(CP_ACP, 0, chrUNI.login_id,-1, &chr.login_id[0], 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, chrUNI.guildname,-1, chr.guildname, 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, chrUNI.MapName,-1, &chr.MapName[0], 100, NULL, NULL);
}
void CCharacterView::SetChrLogInfo( chr_log_info &chrlog, chr_log_infoUNI_jp &chrlog_jp )
{
wcscpy( chrlog.Wname, chrlog_jp.Wname );
wcscpy( chrlog.Wjumin, chrlog_jp.Wjumin );
wcscpy( chrlog.Wphone, chrlog_jp.Wphone );
::WideCharToMultiByte(CP_ACP, 0, chrlog_jp.email,-1, &chrlog.email[0], 100, NULL, NULL);
::WideCharToMultiByte(CP_ACP, 0, chrlog_jp.passwd,-1, &chrlog.passwd[0], 100, NULL, NULL);
memcpy( (void*)&(chrlog.regday) , (void*)&(chrlog_jp.regday), sizeof( DBTIMESTAMP) );
memcpy( (void*)&(chrlog.Wjumin) , (void*)&(chrlog_jp.Wjumin), 15);
}
void CCharacterView::OnKickoffUser()
{
// TODO: Add your control notification handler code here
if( !RIGHT(MASK_17) ) return;
// if( 0>=m_szFindID.GetLength() )
// {
// return;
// }
if( MessageBox( " Do You Realy Want to KICK The User? ", "Kick", MB_YESNO ) == IDNO )
return;
/*
PACKET_KICKOFF_USER packet;
packet.bPtcl = PTCL_RM;
packet.bHeader = MSG_RM_KICKOFF_USER;
//_ASSERTE( m_szFindID.GetLength() >= 20 );
strcpy( packet.szUserID, m_szFindID.GetBuffer(0) );
//g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, sizeof(packet) );
//g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, sizeof(packet.szUserID) );
//c_SelectList
g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, 22 );
*/
PACKET_KICKOFF_USERALL packet;
packet.bPtcl = PTCL_RM;
packet.bHeader = MSG_RM_KICKOFF_USER_ALL;
g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, 2);
OnRefreshCharacter();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -