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

📄 chrskilldata.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 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 + -