www.pudn.com > 2007071212243513681.rar > Dialog2.cpp


// Dialog2.cpp : 实现文件 
// 
 
#include "stdafx.h" 
#include "fun.h" 
#include "Dialog2.h" 
#include "CallFun.h" 
 
// CDialog2 对话框 
 
IMPLEMENT_DYNAMIC(CDialog2, CDialog) 
CDialog2::CDialog2(CWnd* pParent /*=NULL*/) 
	: CDialog(CDialog2::IDD, pParent) 
	, m_iHPPoint(30) 
	, m_iMPPoint(30) 
	, m_iSHPPoint(40) 
	, m_iDZPoint(50) 
	, m_bHasInit(false) 
	, m_dwHPCount(0) 
	, m_dwMPCount(0) 
{ 
	::InitializeCriticalSection(&m_cs); 
} 
 
CDialog2::~CDialog2() 
{ 
	KillTimer(2); 
	::DeleteCriticalSection(&m_cs); 
} 
 
void CDialog2::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	DDX_Text(pDX, IDC_HPEDT, m_iHPPoint); 
	DDX_Text(pDX, IDC_MPEDT, m_iMPPoint); 
	DDX_Text(pDX, IDC_SHPEDT, m_iSHPPoint); 
	DDX_Text(pDX, IDC_DZEDT, m_iDZPoint); 
	DDX_Control(pDX, IDC_MPSPIN, m_mpspin); 
	DDX_Control(pDX, IDC_HPSPIN, m_hpspin); 
	DDX_Control(pDX, IDC_SHPSPIN, m_shpspin); 
	DDX_Control(pDX, IDC_DZSPIN, m_dzspin); 
	DDX_Control(pDX, IDC_HPCMB, m_hpcmb); 
	DDX_Control(pDX, IDC_MPCMB, m_mpcmb); 
	DDX_Control(pDX, IDC_HPCHK, m_hpchk); 
	DDX_Control(pDX, IDC_MPCHK, m_mpchk); 
	DDX_Control(pDX, IDC_SHPCHK, m_shpchk); 
	DDX_Control(pDX, IDC_DZCHK, m_dzchk); 
	DDX_Control(pDX, IDC_GETCHK, m_GetChk); 
	DDX_Control(pDX, IDC_JN1CHK, m_Jn1Chk); 
	DDX_Control(pDX, IDC_JN2CHK, m_Jn2Chk); 
	DDX_Control(pDX, IDC_JN3CHK, m_Jn3Chk); 
	DDX_Control(pDX, IDC_TM1CHK, m_Tm1Chk); 
	DDX_Control(pDX, IDC_TM2CHK, m_Tm2Chk); 
	DDX_Control(pDX, IDC_GETCMB, m_GetCmb); 
	DDX_Control(pDX, IDC_JN1CMB, m_Jn1Cmb); 
	DDX_Control(pDX, IDC_JN2CMB, m_Jn2Cmb); 
	DDX_Control(pDX, IDC_JN3CMB, m_Jn3Cmb); 
	DDX_Control(pDX, IDC_TM1CMB, m_Tm1Cmb); 
	DDX_Control(pDX, IDC_TM2CMB, m_Tm2Cmb); 
	DDX_Control(pDX, IDC_StatCHK, m_StatChk); 
	DDX_Control(pDX, IDC_TM1IN, m_Tm1In); 
	DDX_Control(pDX, IDC_TM2IN, m_Tm2In); 
} 
 
 
BEGIN_MESSAGE_MAP(CDialog2, CDialog) 
	ON_EN_CHANGE(IDC_HPEDT, OnEnChangeHpedt) 
	ON_EN_CHANGE(IDC_MPEDT, OnEnChangeMpedt) 
	ON_EN_CHANGE(IDC_SHPEDT, OnEnChangeShpedt) 
	ON_EN_CHANGE(IDC_DZEDT, OnEnChangeDzedt) 
	ON_WM_TIMER() 
	ON_CBN_SELCHANGE(IDC_HPCMB, OnCbnSelchangeHpcmb) 
	ON_CBN_SELCHANGE(IDC_MPCMB, OnCbnSelchangeMpcmb) 
//	ON_BN_CLICKED(IDC_GETCHK, OnBnClickedGetchk) 
	ON_BN_CLICKED(IDC_StatCHK, OnBnClickedStatchk) 
END_MESSAGE_MAP() 
 
 
// CDialog2 消息处理程序 
BOOL CDialog2::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	m_hpspin.SetRange(0, 100); 
	m_mpspin.SetRange(0, 100); 
	m_shpspin.SetRange(0, 100); 
	m_dzspin.SetRange(0, 100); 
 
	for (int i = 0; i < 10; i++) 
	{ 
		m_hpcmb.InsertString(i, g_pwstrPlusHP[i]); 
		m_mpcmb.InsertString(i, g_pwstrPlusMP[i]); 
	} 
	m_hpcmb.InsertString(10, g_pwstrPlusHP[10]); 
	for (int i = 0; i < 8; i++) 
	{ 
//		m_hpcmb.InsertString(i, g_pwstrHotKey[i]); 
//		m_mpcmb.InsertString(i, g_pwstrHotKey[i]); 
		m_GetCmb.InsertString(i, g_pwstrHotKey[i]); 
		m_Jn1Cmb.InsertString(i, g_pwstrHotKey[i]); 
		m_Jn2Cmb.InsertString(i, g_pwstrHotKey[i]); 
		m_Jn3Cmb.InsertString(i, g_pwstrHotKey[i]); 
		m_Tm1Cmb.InsertString(i, g_pwstrHotKey[i]); 
		m_Tm2Cmb.InsertString(i, g_pwstrHotKey[i]); 
	} 
 
	m_hpcmb.SetCurSel(0); 
	m_mpcmb.SetCurSel(0); 
	for (int j = 0; j < 30; j++) 
	{ 
		m_Tm1In.InsertString(i,g_pwstrTimers[i]); 
		m_Tm2In.InsertString(i,g_pwstrTimers[i]); 
	} 
//	m_hpcmb.SetCurSel(0); 
//	m_mpcmb.SetCurSel(0); 
	m_GetCmb.SetCurSel(0); 
	m_Jn1Cmb.SetCurSel(0); 
	m_Jn2Cmb.SetCurSel(0); 
	m_Jn3Cmb.SetCurSel(0); 
	m_Tm1Cmb.SetCurSel(0); 
	m_Tm2Cmb.SetCurSel(0); 
	m_Tm1In.SetCurSel(9); 
	m_Tm2In.SetCurSel(9); 
 
	// 标识对话框已经初始化过了 
	m_bHasInit	= true; 
 
	UpdateData(FALSE); 
 
	SetTimer(2, 200, NULL); 
 
	return TRUE; 
} 
 
void CDialog2::OnEnChangeHpedt() 
{ 
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会 
	// 发送该通知,除非重写 CDialog::OnInitDialog() 
	// 函数并调用 CRichEditCtrl().SetEventMask(), 
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。 
 
	// TODO:  在此添加控件通知处理程序代码 
	if ( m_bHasInit ) 
		UpdateData(TRUE); 
} 
 
void CDialog2::OnEnChangeMpedt() 
{ 
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会 
	// 发送该通知,除非重写 CDialog::OnInitDialog() 
	// 函数并调用 CRichEditCtrl().SetEventMask(), 
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。 
 
	// TODO:  在此添加控件通知处理程序代码 
	if ( m_bHasInit ) 
		UpdateData(TRUE); 
} 
 
void CDialog2::OnEnChangeShpedt() 
{ 
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会 
	// 发送该通知,除非重写 CDialog::OnInitDialog() 
	// 函数并调用 CRichEditCtrl().SetEventMask(), 
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。 
 
	// TODO:  在此添加控件通知处理程序代码 
	if ( m_bHasInit ) 
		UpdateData(TRUE); 
} 
 
void CDialog2::OnEnChangeDzedt() 
{ 
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会 
	// 发送该通知,除非重写 CDialog::OnInitDialog() 
	// 函数并调用 CRichEditCtrl().SetEventMask(), 
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。 
 
	// TODO:  在此添加控件通知处理程序代码 
	if ( m_bHasInit ) 
		UpdateData(TRUE); 
} 
 
void CDialog2::OnTimer(UINT nIDEvent) 
{ 
	// TODO: 在此添加消息处理程序代码和/或调用默认值 
	switch ( nIDEvent ) 
	{ 
	case 2: 
		::EnterCriticalSection(&m_cs); 
		if ( g_bOK ) 
		{ 
			float	f; 
			int		nSelect; 
			int		nPos; 
			DWORD	dwAddr	= GetPoint(); 
			if ( dwAddr ) 
			{ 
				DWORD	dwAddr1	= *(PDWORD)ULongToPtr(dwAddr + 0x83C); 
				if ( dwAddr1 ) 
				{ 
					g_ci.dwResIDBaseAddr	= *(PDWORD)ULongToPtr(dwAddr1 + 0xC); 
					g_ci.iEquipmentSize		= *(PDWORD)ULongToPtr(dwAddr1 + 0x10); 
				} 
				if ( m_hpchk.GetCheck() ) 
				{ 
					f	= (float)m_iHPPoint / (float)100.0; 
					if ( g_ci.iCurHP <= (int)((float)g_ci.iMaxHP * f) ) 
					{ 
						nSelect	= m_hpcmb.GetCurSel(); 
						if ( ::GetTickCount() - m_dwHPCount >= 3000 ) 
						{ 
							m_dwHPCount	= ::GetTickCount(); 
							if ( nSelect < 10 ) 
							{ 
								if ( (nPos = GetResPos(nSelect + 0x6BD)) != -1 ) 
									PlusMedicine(nSelect + 0x6BD, nPos); 
							} 
							else if ( nSelect == 10 ) 
							{ 
								if ( (nPos = GetResPos(0x731)) != -1 ) 
									PlusMedicine(0x731, nPos); 
							} 
						} 
					} 
				} 
				if ( m_mpchk.GetCheck() ) 
				{ 
					f	= (float)m_iMPPoint / (float)100.0; 
					if ( g_ci.iCurMP <= (int)((float)g_ci.iMaxMP * f) ) 
					{ 
						nSelect	= m_mpcmb.GetCurSel(); 
						if ( (nPos = GetResPos(nSelect + 0x6C8)) != -1 ) 
						{ 
							if ( ::GetTickCount() - m_dwMPCount >= 2000 ) 
							{ 
								m_dwMPCount	= ::GetTickCount(); 
								PlusMedicine(nSelect + 0x6C8, nPos); 
							} 
						} 
					} 
				} 
			} 
		} 
		::LeaveCriticalSection(&m_cs); 
		break; 
	} 
	CDialog::OnTimer(nIDEvent); 
} 
/* 
void CDialog2::OnTimer(UINT nIDEvent) 
{ 
	// TODO: 在此添加消息处理程序代码和/或调用默认值 
	switch ( nIDEvent ) 
	{ 
	case 2: 
		::EnterCriticalSection(&m_cs); 
		if ( g_bOK ) 
		{ 
			HpCount++; 
			MpCount++; 
			AttCount++; 
			iTmrSkill1++; 
			iTmrSkill2++; 
			if ( HpCount > 10 ) HpCount = 10; 
			if ( MpCount > 10 ) MpCount = 10; 
			if ( AttCount > 10 ) AttCount = 10; 
			if ( m_StatChk.GetCheck() ) 
			{ 
				//是否在挂机 
				float	f; 
				int		nSelect; 
				//int		nPos; 
				DWORD	dwAddr	= GetPoint(); 
				if ( dwAddr ) 
				{ 
					DWORD	dwAddr1	= *(PDWORD)ULongToPtr(dwAddr + 0x838); 
					if ( dwAddr1 ) 
					{ 
						g_ci.dwResIDBaseAddr	= *(PDWORD)ULongToPtr(dwAddr1 + 0xC); 
						g_ci.iEquipmentSize		= *(PDWORD)ULongToPtr(dwAddr1 + 0x10); 
					} 
				} 
				if ( m_hpchk.GetCheck() ) 
				{ 
					//  红保护 
					f	= (float)m_iHPPoint / (float)100.0; 
					if ( g_ci.iCurHP <= (int)((float)g_ci.iMaxHP * f) ) 
					{ 
						if ( HpCount >= 3 ) 
						{ 
							HpCount = 0; 
							nSelect	= m_hpcmb.GetCurSel(); 
							::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
							::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
						} 
						//if ( (nPos = GetPos(nSelect + 0x6BD)) != -1 ) 
						//{ 
						//	Plus(nSelect + 0x6BD, nPos); 
						//	Sleep(2000); 
						//} 
					} 
				} 
				if ( m_mpchk.GetCheck() ) 
				{ 
					//  蓝保护 
					f	= (float)m_iMPPoint / (float)100.0; 
					if ( g_ci.iCurMP <= (int)((float)g_ci.iMaxMP * f) ) 
					{ 
						if ( MpCount >= 3 ) 
						{ 
							MpCount = 0; 
							nSelect	= m_mpcmb.GetCurSel(); 
							::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
							::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
						} 
 
//						if ( (nPos = GetPos(nSelect + 0x6C8)) != -1 ) 
//						{ 
//							Plus(nSelect + 0x6C8, nPos); 
//							Sleep(2000); 
//						} 
 
					} 
				} 
				if ( m_GetChk.GetCheck() ) 
				{ 
					//  自动拾取 
					nSelect	= m_GetCmb.GetCurSel(); 
					::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
					::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
				} 
				 
				if ( m_Tm1Chk.GetCheck() ) 
				{ 
					//  定时技能1启动。 
					nSelect	= m_Tm1In.GetCurSel(); 
					if ( (( nSelect + 1 ) * 5 * 60) <= iTmrSkill1 ) 
					{ 
						iTmrSkill1 = 0; 
						nSelect	= m_Tm1Cmb.GetCurSel(); 
						::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
						::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
					} 
				} 
 
				if ( m_Tm2Chk.GetCheck() ) 
				{ 
					//  定时技能2启动。 
					nSelect	= m_Tm2In.GetCurSel(); 
					if ( (( nSelect + 1 ) * 5 * 60) <= iTmrSkill2 ) 
					{ 
						iTmrSkill2 = 0; 
						nSelect	= m_Tm2Cmb.GetCurSel(); 
						::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
						::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
					} 
				} 
 
				if ( m_Jn1Chk.GetCheck() | m_Jn2Chk.GetCheck() | m_Jn3Chk.GetCheck() ) 
				{ 
					//  自动攻击 
					if ( AttCount > 5 ) 
					{ 
						AttCount = 0; 
						iAttackCount++; 
						if ( !IsMon() ) 
						{ 
							//  没有怪物,需要TAB切换 
							::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)VK_TAB, 0); 
							::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)VK_TAB, 0); 
						} 
						else 
						{ 
 
							if ( iAttackCount == 1) 
							{ 
								if ( m_Jn1Chk.GetCheck() ) 
								{ 
									nSelect	= m_Jn1Cmb.GetCurSel(); 
									::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
									::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
								} 
								else 
								{ 
									iAttackCount++; 
								} 
							} 
							if ( iAttackCount == 2) 
							{ 
								if ( m_Jn2Chk.GetCheck() ) 
								{ 
									nSelect	= m_Jn2Cmb.GetCurSel(); 
									::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
									::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
								} 
								else 
								{ 
									iAttackCount++; 
								} 
							} 
							if ( iAttackCount == 3) 
							{ 
								if ( m_Jn3Chk.GetCheck() ) 
								{ 
									nSelect	= m_Jn3Cmb.GetCurSel(); 
									::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
									::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
								} 
								else 
								{ 
									iAttackCount++; 
								} 
							} 
							if ( iAttackCount >= 3 ) iAttackCount = 0; 
						} 
					} 
				} 
 
			} 
		} 
		::LeaveCriticalSection(&m_cs); 
		break; 
	} 
	CDialog::OnTimer(nIDEvent); 
}*/ 
 
void CDialog2::OnCbnSelchangeHpcmb() 
{ 
	// TODO: 在此添加控件通知处理程序代码 
} 
 
void CDialog2::OnCbnSelchangeMpcmb() 
{ 
	// TODO: 在此添加控件通知处理程序代码 
} 
 
void CDialog2::OnBnClickedStatchk() 
{ 
	// TODO: 在此添加控件通知处理程序代码 
	int		nSelect; 
	if ( m_StatChk.GetCheck() ) 
	{ 
		//  外挂启动时	 
		if ( m_Tm1Chk.GetCheck() ) 
		{ 
			//  定时技能1启动。 
			nSelect	= m_Tm1Cmb.GetCurSel(); 
			::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
			::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
		} 
		if ( m_Tm2Chk.GetCheck() ) 
		{ 
			//  定时技能2启动。 
			nSelect	= m_Tm2Cmb.GetCurSel(); 
			::SendMessage(g_hGameWindow, WM_KEYDOWN, (WPARAM)(VK_F1 + nSelect), 0); 
			::SendMessage(g_hGameWindow, WM_KEYUP, (WPARAM)(VK_F1 + nSelect), 0); 
		} 
	} 
}