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);
}
}
}