⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 characterview.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:

	//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 + -