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

📄 chrguild.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
字号:
// ChrGuild.cpp : implementation file
//

#include "stdafx.h"
#include "rmtool.h"
#include "ChrGuild.h"
#include "CharacterView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChrGuild dialog


CChrGuild::CChrGuild(CWnd* pParent /*=NULL*/)
	: CDialog(CChrGuild::IDD, pParent)
{
	//{{AFX_DATA_INIT(CChrGuild)
	m_nGuildHead = 0;
	m_nKing = 0;
	m_nGuildCode = 0;
	m_nOperator = 0;
	m_nReporter = 0;
	m_nUn3 = 0;
	m_nUn4 = 0;
	m_nUn6 = 0;
	//}}AFX_DATA_INIT
}


void CChrGuild::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CChrGuild)
	DDX_Text(pDX, IDC_GUILDHEAD, m_nGuildHead);
	DDX_Text(pDX, IDC_KING, m_nKing);
	DDX_Text(pDX, IDC_GUILDCODE, m_nGuildCode);
	DDX_Text(pDX, IDC_OPERATOR, m_nOperator);
	DDX_Text(pDX, IDC_REPORTER, m_nReporter);
	DDX_Text(pDX, IDC_UN3, m_nUn3);
	DDX_Text(pDX, IDC_UN4, m_nUn4);
	DDX_Text(pDX, IDC_UN6, m_nUn6);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChrGuild, CDialog)
	//{{AFX_MSG_MAP(CChrGuild)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	ON_BN_CLICKED(IDC_BATTLE_SKILL_SAVE, OnBattleSkillSave)
	ON_BN_CLICKED(IDC_BATTLESKILL_RESET, OnBattleskillReset)
	ON_BN_CLICKED(IDC_BATTLESKILL_CLEAR, OnBattleskillClear)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChrGuild message handlers

BOOL CChrGuild::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_pApp = (CRMToolApp*)AfxGetApp();
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CChrGuild::OnSave() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_22) )	return;
	if( MessageBox( "Do you want to Save Guild Datas?", "Save", MB_YESNO) != IDYES)	return;

	CCharacterView* pView = (CCharacterView*)GetParent();
	
	UpdateData();
	//pView->m_ChrInfo.nation.guild_code = m_nGuildCode;

	pView->m_dwGuildCode			= m_nGuildCode;	//Changed Guild Code 030324
	//::MessageBoxPrintf( MB_OK, "鞘靛 %d, 历厘%d", m_nGuildCode , pView->m_dwGuildCode);	
	pView->m_ChrInfo.nation.guild_master = m_nGuildHead;
	pView->m_ChrInfo.nation.king = m_nKing;
	pView->m_ChrInfo.nation.counselor = m_nOperator;
	pView->m_ChrInfo.nation.reporter = m_nReporter;
	pView->m_ChrInfo.nation.ultra_nk3 = m_nUn3;
	pView->m_ChrInfo.nation.ultra_nk4 = m_nUn4;
	pView->m_ChrInfo.nation.ultra_nk6 = m_nUn6;
	


	//历厘窍扁 
	char szQuery[ 1024 ];
	WCHAR wszQuery[ 1024 ];
	
	sprintf(szQuery, "Update chr_info set nation=? 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_ChrInfo.nation);
	pBinding[0].wType = DBTYPE_I4;
	dwParamOffset += sizeof(pView->m_ChrInfo.nation);

	g_pDb->KSCToUnicode(szQuery,wszQuery);
	int ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, &pView->m_ChrInfo.nation, (BYTE)nColumn, (BYTE)CON);
	
	if(!ret) //ret==0
	{
		MessageBox("Have no Charater!");
		return; 
	}
	else if(ret < 0)
	{
		MessageBox("fail to update chr_info_binary!");
		return;
	}

	g_pDb->ReleaseParamInfo(pBinding, (BYTE)CON);

#ifndef OLD_GUILD_CODE // 030331 	
//	if( pView->CHANGE_LIMITED_RESET_FORGUILD <= pView->m_ChrInfo.reset )
//	{//reset蔼捞 矩朝 蔼捞搁 扁粮 辨靛内靛蔼阑 荤侩茄促. 
		sprintf(szQuery,"update chr_info set spritvalue = %d where [name]='%s'", pView->m_dwGuildCode, pView->m_szCurCharName);
		g_pDb->KSCToUnicode(szQuery, wszQuery);
		ret  = g_pDb->ExecuteSQL(wszQuery, (BYTE)CON);	

		sprintf(szQuery,"EXEC UP_RM_GUILD_MEMBER_LIST %d,%d,%s ", pView->m_dwGuildCode, m_nOperator, pView->m_szCurCharName);
		g_pDb->KSCToUnicode(szQuery, wszQuery);
		ret = g_pDb->ExecuteSQL(wszQuery, (BYTE)CON);

		if(ret < 0)
		{
			MessageBox("Query failed on EXEC UP_RM_GUILD_MEMBER_LIST!");
		}
//	}
#endif

	//for ExtensionLog
	WriteLog_Guild(); // 021130

#ifdef RM_LOG_MODE
	CString str;	str.Format("CChrGuild :: Saved guild/etc info(%s)",pView->m_szCurCharName);
	m_pApp->LogChar(pView->m_nCurServerSet, str);
#endif

}

void CChrGuild::RefreshData()
{
	CCharacterView* pView = (CCharacterView*)GetParent();
	
	//Changed GuildCode // 030324
	if( pView->CHANGE_LIMITED_RESET_FORGUILD > pView->m_ChrInfo.reset )
	{//reset蔼捞 矩朝 蔼捞搁 扁粮 辨靛内靛蔼阑 荤侩茄促. 
		m_nGuildCode = pView->m_ChrInfo.nation.guild_code;
	}
	else
		m_nGuildCode = pView->m_dwGuildCode;	

#ifdef OLD_GUILD_CODE // 030331 
	m_nGuildCode = pView->m_ChrInfo.nation.guild_code;
#endif


	m_nGuildHead = pView->m_ChrInfo.nation.guild_master;
	m_nKing = pView->m_ChrInfo.nation.king;
	m_nOperator = pView->m_ChrInfo.nation.counselor;
	m_nReporter = pView->m_ChrInfo.nation.reporter;
	m_nUn3 = pView->m_ChrInfo.nation.ultra_nk3;
	m_nUn4 = pView->m_ChrInfo.nation.ultra_nk4;
	m_nUn6 = pView->m_ChrInfo.nation.ultra_nk6;

	static int edit_id[] = { 
		IDC_EDIT1 , IDC_EDIT2 , IDC_EDIT3 , IDC_EDIT4 , IDC_EDIT5 , IDC_EDIT6,
		IDC_EDIT7 , IDC_EDIT8 , IDC_EDIT9 , IDC_EDIT10, IDC_EDIT11, IDC_EDIT12,
		IDC_EDIT13, IDC_EDIT14, IDC_EDIT15, IDC_EDIT16, IDC_EDIT17, IDC_EDIT18,
		IDC_EDIT19, IDC_EDIT20, IDC_EDIT21, IDC_EDIT22, IDC_EDIT23, IDC_EDIT24,
		IDC_EDIT25, IDC_EDIT26, IDC_EDIT27, IDC_EDIT28, IDC_EDIT29, IDC_EDIT30,
		IDC_EDIT31, IDC_EDIT32, IDC_EDIT33, IDC_EDIT34, IDC_EDIT35, IDC_EDIT36,
	};

	CString temp;
	for( int i=0; i<36; i++ )
	{
		temp.Format( "%d", pView->m_ChrInfoEtc.skill[115+i] );
		SetDlgItemText( edit_id[i], temp );
	}

	//Reserverd point 
	//int iReserved = (int)(pView->m_ChrInfo.guildname[ 16 ]);
	int iReserved = pView->m_ChrInfo.guildname[ 16 ];
	//ConvertLoad(
	//char蔼捞骨肺 0捞 历厘登瘤 臼绰促. 弊贰辑 历厘且锭 +1阑 秦辑 历厘秦蝶.
	//弊矾虐 锭巩俊 阂矾甸老锭 -1阑 茄促. 
	//_ASSERTE( iReserved > 0 );
	_ASSERTE( NULL != temp.GetBuffer(0) );
	//iReserved--;
	temp.Format( "%d", iReserved );
	SetDlgItemText( IDC_RESERVED_WARPOINT, temp );

	UpdateData(FALSE);
}

void CChrGuild::BattlePointSave()
{
	CCharacterView* pView = (CCharacterView*)GetParent();

	static int edit_id[] = { 
		IDC_EDIT1 , IDC_EDIT2 , IDC_EDIT3 , IDC_EDIT4 , IDC_EDIT5 , IDC_EDIT6,
		IDC_EDIT7 , IDC_EDIT8 , IDC_EDIT9 , IDC_EDIT10, IDC_EDIT11, IDC_EDIT12,
		IDC_EDIT13, IDC_EDIT14, IDC_EDIT15, IDC_EDIT16, IDC_EDIT17, IDC_EDIT18,
		IDC_EDIT19, IDC_EDIT20, IDC_EDIT21, IDC_EDIT22, IDC_EDIT23, IDC_EDIT24,
		IDC_EDIT25, IDC_EDIT26, IDC_EDIT27, IDC_EDIT28, IDC_EDIT29, IDC_EDIT30,
		IDC_EDIT31, IDC_EDIT32, IDC_EDIT33, IDC_EDIT34, IDC_EDIT35, IDC_EDIT36,
	};
	UpdateData(1);

	char temp[5];
	int value;
	for( int i=0; i<36; i++ )
	{
		GetDlgItemText( edit_id[i], temp, 5);
		value = atoi( temp );
		pView->m_ChrInfoEtc.skill[115+i] = (BYTE)value;
	}

	BYTE pNewData[200];
	int size = sizeof(BYTE)*200;
	memcpy(pNewData, &pView->m_ChrInfoEtc.skill, size);

	//Update 巩 
	char szQuery[ 1024 ];
	WCHAR wszQuery[ 1024 ];
	
	sprintf(szQuery, "Update chr_info set skill=? "
					"where [name]='%s'",pView->m_szCurCharName);

	int nColumn = 1;
	DBBINDING* pBinding = g_pDb->CreateParamInfo( (BYTE)nColumn, (BYTE)CON);	
	if(!pBinding) { MessageBox("Failed CreateParamInfo");	return;	}

	pBinding[0].obValue = 0;
	pBinding[0].cbMaxLen = size;
	pBinding[0].wType = DBTYPE_BYTES;

	g_pDb->KSCToUnicode(szQuery,wszQuery);
	int ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, pNewData, (BYTE)nColumn, (BYTE)CON);
	
	if(!ret)
	{
		MessageBox("Have no User!");
		return;
	}
	else if(ret < 0)
	{
		MessageBox("fail to update chr_info_binary!");
		return;
	}

	g_pDb->ReleaseParamInfo(pBinding, (BYTE)CON);
}

void CChrGuild::BattleReservedPointSave()
{
	CCharacterView* pView = (CCharacterView*)GetParent();

	CString temp;
	GetDlgItemText( IDC_RESERVED_WARPOINT, temp);

	int iReserved = atoi( temp.GetBuffer( 0 ) );
	//char iReserved = temp.GetBuffer( 0 );
	//iReserved ++;	//char俊 历厘窍绰单 0阑 持栏搁 救登聪瘪.. +1茄促. 
	pView->m_ChrInfo.guildname[ 16 ] = (BYTE)iReserved;
		
	//Update 巩 
	char szQuery[ 1024 ];
	WCHAR wszQuery[ 1024 ];
	int ret;
	DBBINDING* pBinding;
	//蔼阑 历厘茄促. 
	switch(g_iNation)
	{
	case NATION_JAPAN:
		{
			wchar_t pNewData[20];			
			pView->ConvertSave((char*)pView->m_ChrInfo.guildname, sizeof(pView->m_ChrInfo.guildname));			
			int isize = sizeof( pNewData);
			//::WideCharToMultiByte(CP_ACP, 0,pView->m_ChrInfo.guildname, -1,pNewData, 100, NULL, NULL);		
			//wsprintf( pNewData, "%s", pView->m_ChrInfo.guildname);
			g_pDb->KSCToUnicode( pView->m_ChrInfo.guildname, pNewData);
			sprintf(szQuery, "Update chr_info set guildname=? "
							"where [name]='%s'",pView->m_szCurCharName);

			int nColumn = 1;
			pBinding = g_pDb->CreateParamInfo( (BYTE)nColumn, (BYTE)CON);	
			if(!pBinding) { MessageBox("Failed CreateParamInfo");	return;	}

			
			pBinding[0].obValue = 0;
			pBinding[0].cbMaxLen = isize;
			pBinding[0].wType = DBTYPE_BYTES;
			

			g_pDb->KSCToUnicode(szQuery,wszQuery);
			//pView->ConvertSave((char*)pView->m_ChrInfo.guildname, sizeof(pView->m_ChrInfo.guildname));
			ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, pNewData, (BYTE)nColumn, (BYTE)CON);
			break;
		}
	default:	
		{
			BYTE pNewData[20];
			int isize = sizeof( pView->m_ChrInfo.guildname );		//Siev绰 20;
			pView->ConvertSave((char*)pView->m_ChrInfo.guildname, sizeof(pView->m_ChrInfo.guildname));
			memcpy(pNewData, &pView->m_ChrInfo.guildname, isize);

			
			sprintf(szQuery, "Update chr_info set guildname=? "
							"where [name]='%s'",pView->m_szCurCharName);

			int nColumn = 1;
			pBinding = g_pDb->CreateParamInfo( (BYTE)nColumn, (BYTE)CON);	
			if(!pBinding) { MessageBox("Failed CreateParamInfo");	return;	}

			
			pBinding[0].obValue = 0;
			pBinding[0].cbMaxLen = isize;
			pBinding[0].wType = DBTYPE_BYTES;
			

			g_pDb->KSCToUnicode(szQuery,wszQuery);
			//pView->ConvertSave((char*)pView->m_ChrInfo.guildname, sizeof(pView->m_ChrInfo.guildname));
			ret = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, pNewData, (BYTE)nColumn, (BYTE)CON);
			break;
		}
	}
	
	if(!ret)
	{
		MessageBox("Have no User!");
		return;
	}
	else if(ret < 0)
	{
		MessageBox("fail to update chr_info_binary!");
		return;
	}

	g_pDb->ReleaseParamInfo(pBinding, (BYTE)CON);

}

void CChrGuild::OnBattleSkillSave() 
{
	//鼻茄 眉农
	if( !RIGHT(MASK_23) )	return;

	if( MessageBox( "Do you want to Save Combat Skill?", "Save", MB_YESNO) != IDYES)	return;
	BattlePointSave();
	BattleReservedPointSave();
	
	//for ExtensionLog
	WriteLog_BattleSkill();

}

void CChrGuild::OnBattleskillReset() 
{
	// TODO: Add your control notification handler code here
	
	CString temp;
	GetDlgItemText( IDC_RESERVED_WARPOINT, temp);
	
	int iReserved = atoi( temp.GetBuffer( 0 ) );	//巢篮 傈捧胶懦蔼
	int iWritedPoint = ClearBattlePoint();			//敬 傈捧胶瓶蔼

	CString szAfterReset;
	szAfterReset.Format( "%d", iReserved+iWritedPoint );
	SetDlgItemText( IDC_RESERVED_WARPOINT, szAfterReset );

}

void CChrGuild::OnBattleskillClear() 
{
	// TODO: Add your control notification handler code here
	ClearBattlePoint();
}

int CChrGuild::ClearBattlePoint()
{
	int edit_id[] = { 
		IDC_EDIT1 , IDC_EDIT2 , IDC_EDIT3 , IDC_EDIT4 , IDC_EDIT5 , IDC_EDIT6,
		IDC_EDIT7 , IDC_EDIT8 , IDC_EDIT9 , IDC_EDIT10, IDC_EDIT11, IDC_EDIT12,
		IDC_EDIT13, IDC_EDIT14, IDC_EDIT15, IDC_EDIT16, IDC_EDIT17, IDC_EDIT18,
		IDC_EDIT19, IDC_EDIT20, IDC_EDIT21, IDC_EDIT22, IDC_EDIT23, IDC_EDIT24,
		IDC_EDIT25, IDC_EDIT26, IDC_EDIT27, IDC_EDIT28, IDC_EDIT29, IDC_EDIT30,
		IDC_EDIT31, IDC_EDIT32, IDC_EDIT33, IDC_EDIT34, IDC_EDIT35, IDC_EDIT36,
	};	

	int iReserved = 0;
	CString szPoint;
	for( int i=0; i < 36; i++)
	{
		GetDlgItemText( edit_id[i], szPoint );
		iReserved += atoi( szPoint.GetBuffer(0) );
		SetDlgItemText( edit_id[i], "0" );
	}
	
	return iReserved;
}

void CChrGuild::WriteLog_Guild()
{
	CCharacterView *pView = (CCharacterView*)GetParent();
	
	if( pView->m_pcLogMgr == NULL)
	{
		MessageBoxPrintf( MB_OK, "NULL CLogMgr In Guild" );
		return;
	}
	
	pView->m_pcLogMgr->CheckChrGuildInfo( pView->m_ChrInfo, pView->m_dwGuildCode );	//货肺 官诧郴侩捞 乐栏搁 肺弊巢变促.
	pView->m_pcLogMgr->SetChrInfo( pView->m_ChrInfo );			//官诧吧肺 update茄促	
	pView->m_pcLogMgr->SetGuildCode( pView->m_dwGuildCode );
}

void CChrGuild::WriteLog_BattleSkill()
{
	CCharacterView *pView = (CCharacterView*)GetParent();
	
	if( pView->m_pcLogMgr == NULL)
	{
		MessageBoxPrintf( MB_OK, "NULL CLogMgr In Guild" );
		return;
	}

	pView->m_pcLogMgr->CheckChrBattleSkill( pView->m_ChrInfoEtc );			//傈捧胶懦
	pView->m_pcLogMgr->SetChrInfo_BattleSkill( pView->m_ChrInfoEtc);			

	//CString temp;
	//GetDlgItemText( IDC_RESERVED_WARPOINT, temp);
	//int iReserved = atoi( temp.GetBuffer( 0 ) );

	pView->m_pcLogMgr->CheckChrBattleReserved( ((int)pView->m_ChrInfo.guildname[16]-1) );	//抗距器牢飘 捞芭尔 谍芭 -1捞たぉし 厚背づ
	//pView->m_pcLogMgr->CheckChrBattleReserved( iReserved );	//抗距器牢飘
	//pView->m_pcLogMgr->SetChrInfo_ReservedPoint( pView->m_ChrInfo.guildname[16] );
	pView->m_pcLogMgr->SetChrInfo( pView->m_ChrInfo );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -