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

📄 taticinitdlg.cpp

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

#include "stdafx.h"
#include "rmtool.h"
#include "TaticInitDlg.h"
#include "CharMgrView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTaticInitDlg dialog


CTaticInitDlg::CTaticInitDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTaticInitDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTaticInitDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT

}


void CTaticInitDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);

	// 阿 牧飘费阑 秦寸 函荐俊 拱赴促.
	UINT	ComboLevelID = IDC_COMBO_LEVEL_0;
	UINT	ButtonID = IDC_MOVE_0;
	UINT	ExpmaxID = IDC_EXP_MAX_0;
	UINT	ExpID = IDC_EXP_0;
	UINT	StepID = IDC_STEP_0;
	for(int i = 0; i < MAX_TACTICS; i++)
	{
		DDX_Control(pDX, ComboLevelID + i, m_ctrlComboLevel[i]);	// 霓焊 牧飘费阑 ID俊 拱府扁
		DDX_Control(pDX, ButtonID + i, m_ctrlBtnMove[i]);	// 滚瓢 牧飘费阑 ID俊 拱府扁
		DDX_Text(pDX, ExpmaxID + i, m_dwExpMax[i]);	// EXP_MAX 咆胶飘甫 ID俊 拱府扁
		DDX_Text(pDX, ExpID + i, m_dwExp[i]);	// EXP 咆胶飘甫 ID俊 拱府扁
		DDX_Text(pDX, StepID + i, m_nStep[i]);	// EXP_STEP 咆胶飘甫 ID俊 拱府扁
	}
	
	//{{AFX_DATA_MAP(CTaticInitDlg)
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTaticInitDlg, CDialog)
	//{{AFX_MSG_MAP(CTaticInitDlg)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_0, OnSelchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_0, OnEditchangeComboLevel)
	ON_BN_CLICKED(IDC_MOVE_0, OnMove)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_1, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_2, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_3, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_4, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_5, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_6, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_7, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_8, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_9, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_10, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_11, OnSelchangeComboLevel)
	ON_CBN_SELCHANGE(IDC_COMBO_LEVEL_12, OnSelchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_1, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_2, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_3, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_4, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_5, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_6, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_7, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_8, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_9, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_10, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_11, OnEditchangeComboLevel)
	ON_CBN_EDITCHANGE(IDC_COMBO_LEVEL_12, OnEditchangeComboLevel)
	ON_BN_CLICKED(IDC_MOVE_1, OnMove)
	ON_BN_CLICKED(IDC_MOVE_2, OnMove)
	ON_BN_CLICKED(IDC_MOVE_3, OnMove)
	ON_BN_CLICKED(IDC_MOVE_4, OnMove)
	ON_BN_CLICKED(IDC_MOVE_5, OnMove)
	ON_BN_CLICKED(IDC_MOVE_6, OnMove)
	ON_BN_CLICKED(IDC_MOVE_7, OnMove)
	ON_BN_CLICKED(IDC_MOVE_8, OnMove)
	ON_BN_CLICKED(IDC_MOVE_9, OnMove)
	ON_BN_CLICKED(IDC_MOVE_10, OnMove)
	ON_BN_CLICKED(IDC_MOVE_11, OnMove)
	ON_BN_CLICKED(IDC_MOVE_12, OnMove)
	ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTaticInitDlg message handlers

BOOL CTaticInitDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitCombo();	// ComboBox 檬扁拳

	for(int i = 0; i < MAX_TACTICS; i++)
	{
		m_nStep[i] = 0;
		m_dwExpMax[i] = DEFAULT_TACTIC_VALUE;
		m_dwExp[i] = 0;
	}
	UpdateData( FALSE );

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTaticInitDlg::InitCombo()
{
	// 阿 霓焊冠胶狼 檬扁拳
	char temp[0xff];
	for(int i = 0; i < MAX_TACTICS; i++)
	{
		for(int j = 1; j < MAX_TACTIC_LEVEL; j++)	// 1何磐 199鳖瘤 蜡瓤窍促 200 篮 X
		{

			m_ctrlComboLevel[i].AddString(_itoa(j,temp,10));
		}
		m_ctrlComboLevel[i].SetCurSel(0);
	}
}

// 咯矾 霓焊冠胶狼 急琶捞 官拆锭 龋免
void CTaticInitDlg::OnSelchangeComboLevel() 
{
	// TODO: Add your control notification handler code here
	// 器目胶绰 霓焊冠胶狼 酒捞袍捞骨肺 掘篮 器目胶狼 何葛绰 捞亥飘甫 蜡惯茄 霓焊冠胶
	CComboBox * pCombo = (CComboBox *)GetFocus()->GetParent();

	// 龋免等 仇狼 牢郸胶甫 茫绰促
	int nComboIndex = -1;
	for( int i = 0; i < MAX_TACTICS; i++)
	{
		if(pCombo == &m_ctrlComboLevel[i])
		{

			// i锅掳啊 捞仇捞 龋免等 仇捞促
			nComboIndex = i;
			break;
		}
	}

	// 弊凡府具 绝摆瘤父 窃 八荤茄促
	if(nComboIndex < 0)		return;

	char szTemp[ 16 ];
	int nIndex = m_ctrlComboLevel[nComboIndex].GetCurSel();
	m_ctrlComboLevel[nComboIndex].GetLBText( nIndex, szTemp );
	if(!strcmp(szTemp,""))	return;

	int nLevel = atoi(szTemp);
	if(nLevel > 255 || nLevel < 1)		// 涝仿蔼狼 捞惑蜡公甫 八荤
	{
		MessageBox("Not a Range In this Level");
		return;
	}

	// 捞惑绝捞 茫疽促 捞力 牢郸胶肺 公攫啊甫 且荐 乐促
	if(!GetExpFromTacticLevel(nLevel, m_dwExpMax[nComboIndex], m_nStep[nComboIndex]))
	{
		MessageBox("Can't Get Max Exp");
	}
	UpdateData( FALSE );
}

// 咯矾 霓焊冠胶狼 臂磊啊 官拆锭 龋免
void CTaticInitDlg::OnEditchangeComboLevel() 
{
	// TODO: Add your control notification handler code here
	// 器目胶绰 霓焊冠胶狼 酒捞袍捞骨肺 掘篮 器目胶狼 何葛绰 捞亥飘甫 蜡惯茄 霓焊冠胶
	CComboBox * pCombo = (CComboBox *)GetFocus()->GetParent();

	// 龋免等 仇狼 牢郸胶甫 茫绰促
	int nComboIndex = -1;
	for( int i = 0; i < MAX_TACTICS; i++)
	{
		if(pCombo == &m_ctrlComboLevel[i])
		{
			// i锅掳啊 捞仇捞 龋免等 仇捞促
			nComboIndex = i;
			break;
		}
	}

	// 弊凡府具 绝摆瘤父 窃 八荤茄促
	if(nComboIndex < 0)		return;

	char szTemp[ 16 ];
	m_ctrlComboLevel[i].GetWindowText(szTemp,16);
	if(!strcmp(szTemp,""))	return;

	int nLevel = atoi(szTemp);
	if(nLevel > 255 || nLevel < 1)		// 涝仿蔼狼 捞惑蜡公甫 八荤
	{
		MessageBox("Not a Range In this Level");
		return;
	}

	// 捞惑绝捞 茫疽促 捞力 牢郸胶肺 公攫啊甫 且荐 乐促
	if(!GetExpFromTacticLevel(nLevel, m_dwExpMax[nComboIndex], m_nStep[nComboIndex]))
	{
		MessageBox("Can't Get Max Exp");
	}
	UpdateData( FALSE );
}


// 咯矾 滚瓢狼 努腐矫 龋免
void CTaticInitDlg::OnMove() 
{
	// TODO: Add your control notification handler code here
	// 捞亥飘甫 蜡惯茄 滚瓢阑 茫绰促
	CButton * pCombo = (CButton *)GetFocus();

	// 龋免等 仇狼 牢郸胶甫 茫绰促
	int nComboIndex = -1;
	for( int i = 0; i < MAX_TACTICS; i++)
	{
		if(pCombo == &m_ctrlBtnMove[i])
		{
			// i锅掳啊 捞仇捞 龋免等 仇捞促
			nComboIndex = i;
			break;
		}
	}
	// 弊凡府具 绝摆瘤父 窃 八荤茄促
	if(nComboIndex < 0)		return;
	
	m_dwExp[nComboIndex] = m_dwExpMax[nComboIndex];
	
	UpdateData( FALSE );
}

// charTacQuest.h俊辑 垛绢吭促.
bool CTaticInitDlg::GetExpFromTacticLevel(int nLevel, DWORD &dwMaxExp, int &nStep)
{
	CCharMgrView* pView = (CCharMgrView*)GetParent(); 
	ExpFromTacticLevel Data;
	char szQuery[ 0xff ];
	WCHAR wszQuery[ 0xff ];

	sprintf(szQuery, "select exp_max, step from NPC_Lv2Exp where lv=%d" ,nLevel);
	g_pDb->KSCToUnicode(szQuery,wszQuery);

	int ret = g_pDb->OpenRecord(wszQuery, &Data, 1, (BYTE)CON); 

	if(ret < 1)
	{
		MessageBox("Fail to query GetExpFromTacticLevel!");
		return false;
	}

	dwMaxExp = Data.dwMaxExp;
	nStep = Data.dwStep;
	return true;
}

void CTaticInitDlg::OnBtnSave() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_19) )	return;
	if( MessageBox( "Do you want to Save Tactic", "Tactic", MB_YESNO ) != IDYES) return;

	CCharMgrView* pView = (CCharMgrView*)GetParent();
	
	if( strcmp(g_CurDbName[ pView->m_nCurDbIndex ], g_NationAccount.szDragon_DB_DefaultName[pView->m_nCurDbIndex]) )
	{
		MessageBox("Don't Change In Backup DB Data!");
		return;
	}
	UpdateData();

	// 悸泼且 单捞鸥甸阑 啊廉柯促
	TACTICANDSTEP data;
	::memset(&data, 0L, sizeof(data));
	for(int i = 0; i < MAX_TACTICS; i++)
	{
		data.TacticExp[i] = m_dwExp[i];
		data.guildname[i+3] = m_nStep[i] + 1;	// 胶跑篮 1何磐 矫累
	}

	// 傈眉 捞抚阑 倒哥 累诀俊 甸绢埃促
	CString Str;	// 某腐磐 捞抚
	char	szQuery[0xff];		// 舅瘤? 孽府巩捞具
	WCHAR	wszQuery[0xff];		// 捞巴档 孽府巩
	char questdata[20];			// 鞘靛疙篮 guildname捞瘤父 荤角篮 questdata客 咆平 胶跑
	::memset(&questdata, 0L, sizeof(questdata));
	DBBINDING* pBinding = 0L;
	for( i = 0; i < pView->m_vChrNames.size(); i++)
	{
		// 辨靛 单捞鸥甫 啊廉客 官差搁 臼瞪 郴侩阑 汗荤秦柯促
		Str = pView->m_vChrNames[i];
		sprintf(szQuery, "Select [guildname] from chr_info where name = '%s'", Str.GetBuffer(Str.GetLength()));
		g_pDb->KSCToUnicode(szQuery, wszQuery);
		int result = g_pDb->OpenRecord( wszQuery, &questdata, 1, (BYTE)DRAGON_DB[ pView->m_nCurDbIndex ]);

		if(!result) //ret==0
		{
			// Have no Charater!	颇老肺 肺弊甫 巢辨鳖唱?
			//MessageBox("Have no Charater!");
//			return; 
		}
		else if(result < 0)
		{
			// fail to update chr_info_binary!	//捞巴档 颇老肺 巢辨鳖?
			//MessageBox("fail to update chr_info_binary!");
			return;
		}

		char * point = &questdata[0];
		memcpy(&data.guildname[0], point, 3);	// 胶跑狼 菊率 data 汗荤
		point = &questdata[16];
		memcpy(&data.guildname[16], point, 4);	// 胶跑狼 菊率 data 汗荤

		// 函荐官牢爹 矫累
		int nColumn = 2;
		DWORD	dwParamOffset = 0;	
		pBinding = g_pDb->CreateParamInfo( (BYTE)nColumn, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
		if(!pBinding) { MessageBox("Failed CreateParamInfo");	return;	}

		pBinding[0].obValue = dwParamOffset;	
		pBinding[0].cbMaxLen = sizeof(data.TacticExp);
		pBinding[0].wType = DBTYPE_BYTES;
		dwParamOffset += sizeof(data.TacticExp);

		pBinding[1].obValue = dwParamOffset;	
		pBinding[1].cbMaxLen = sizeof(data.guildname);
		pBinding[1].wType = DBTYPE_BYTES;
		dwParamOffset += sizeof(data.guildname);

		// UPDATE 角青阑 窍磊
		sprintf(szQuery, "Update chr_info set tac_skillexp=?, guildname=? "
			"where [name]='%s'", Str.GetBuffer(Str.GetLength()));
		g_pDb->KSCToUnicode(szQuery, wszQuery);
		result = g_pDb->ExecuteSQLByParam(wszQuery, pBinding, &data, (BYTE)nColumn, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
		
		if(!result) //ret==0
		{
			// Have no Charater!	颇老肺 肺弊甫 巢辨鳖唱?
			//MessageBox("Have no Charater!");
//			return; 
		}
		else if(result < 0)
		{
			// fail to update chr_info_binary!	//捞巴档 颇老肺 巢辨鳖?
			//MessageBox("fail to update chr_info_binary!");
			return;
		}
	}
}

int CTaticInitDlg::GetStep(DWORD dwExp)
{
	// 捞窃荐绰 父靛绰吝
	
	return 0;
}

⌨️ 快捷键说明

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