www.pudn.com > 2007071212243513681.rar > Dialog3.cpp
// Dialog3.cpp : 实现文件
//
#include "stdafx.h"
#include "fun.h"
#include "Dialog3.h"
#include "CallFun.h"
extern SKILL g_Skill[20];
UINT AutoAttack(LPVOID pParam);
// CDialog3 对话框
IMPLEMENT_DYNAMIC(CDialog3, CDialog)
CDialog3::CDialog3(CWnd* pParent /*=NULL*/)
: CDialog(CDialog3::IDD, pParent)
, m_iGetResCount(0)
, m_iUserSkillCount(0)
, m_iYUserSkillCount(0)
, m_dwYSkillTime(0)
, m_OpenMutex()
{
::InitializeCriticalSection(&m_cs);
for (int i = 0; i < 20; i++)
m_dwSkillCode[i] = 0;
for (int i = 0; i < 10; i++)
m_dwYSkillCode[i] = 0;
m_pAutoWorkThread = NULL;
}
CDialog3::~CDialog3()
{
::DeleteCriticalSection(&m_cs);
}
void CDialog3::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SKILL_LIST, m_skill_list);
DDX_Control(pDX, IDC_USERSKILL_LIST, m_userskill_list);
DDX_Control(pDX, IDC_BDATT_CHK, m_bdatt_chk);
DDX_Control(pDX, IDC_YSKILL_LIST, m_yskill_list);
DDX_Control(pDX, IDC_YUSERSKILL_LIST, m_yuserskill_list);
DDX_Control(pDX, IDC_ZYTIME_CMB, m_zytime_cmb);
}
BEGIN_MESSAGE_MAP(CDialog3, CDialog)
ON_BN_CLICKED(IDC_GETSKILL_BTN, OnBnClickedGetskillBtn)
ON_BN_CLICKED(IDC_SETSKILL_BTN, OnBnClickedSetskillBtn)
ON_BN_CLICKED(IDC_JOINSKILL_BTN, OnBnClickedJoinskillBtn)
ON_BN_CLICKED(IDC_DELSKILL_BTN, OnBnClickedDelskillBtn)
ON_BN_CLICKED(IDC_YJOINSKILL_BTN, OnBnClickedYjoinskillBtn)
ON_BN_CLICKED(IDC_YDELSKILL_BTN, OnBnClickedYdelskillBtn)
ON_LBN_SELCHANGE(IDC_SKILL_LIST, OnLbnSelchangeSkillList)
ON_BN_CLICKED(IDC_STARTATT_BTN, OnBnClickedStartattBtn)
ON_BN_CLICKED(IDC_STOPATT_BTN, OnBnClickedStopattBtn)
END_MESSAGE_MAP()
// CDialog3 消息处理程序
BOOL CDialog3::OnInitDialog()
{
CDialog::OnInitDialog();
wchar_t *pwstrTime[] = { L"10", L"20", L"30", L"40", L"50", L"60", L"70", L"80", L"90" };
for (int i = 0; i < 9; i++)
m_zytime_cmb.InsertString(i, pwstrTime[i]);
m_zytime_cmb.SetCurSel(2);
UpdateData(FALSE);
return TRUE;
}
void CDialog3::OnBnClickedGetskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
m_dwYSkillTime = 0;
if ( GetSkillInfo() )
{
m_skill_list.ResetContent();
m_userskill_list.ResetContent();
m_yskill_list.ResetContent();
m_yuserskill_list.ResetContent();
for (DWORD i = 0; i < g_ci.dwMSkillCount; i++)
{
if ( g_Skill[i].dwType == 1 )
m_skill_list.AddString(g_Skill[i].wstrName);
else if ( g_Skill[i].dwType == 2 )
m_yskill_list.AddString(g_Skill[i].wstrName);
}
}
}
void CDialog3::OnBnClickedSetskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
if ( (m_iUserSkillCount = m_userskill_list.GetCount()) > 0 )
{
for(int i = 0; i < m_iUserSkillCount; i++)
{
m_dwSkillCode[i] = 0;
m_userskill_list.GetText(i, str);
for (int k = 0; k < (int)g_ci.dwMSkillCount; k++)
if ( str.Compare(g_Skill[k].wstrName) == 0 )
m_dwSkillCode[i] = g_Skill[k].dwCode;
}
}
if ( (m_iYUserSkillCount = m_yuserskill_list.GetCount()) > 0 )
{
for (int i = 0; i < m_iYUserSkillCount; i++)
{
m_dwYSkillCode[i] = 0;
m_yuserskill_list.GetText(i, str);
for (int k = 0; k < (int)g_ci.dwMSkillCount; k++)
if ( str.Compare(g_Skill[k].wstrName) == 0 )
m_dwYSkillCode[i] = g_Skill[k].dwCode;
}
}
}
void CDialog3::OnBnClickedJoinskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
if ( m_skill_list.GetCount() )
{
CString str;
int nSelect = m_skill_list.GetCurSel();
m_skill_list.GetText(nSelect, str);
m_userskill_list.AddString(str);
m_skill_list.DeleteString(nSelect);
}
}
void CDialog3::OnBnClickedDelskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
if ( m_userskill_list.GetCount() )
{
CString str;
int nSelect = m_userskill_list.GetCurSel();
m_userskill_list.GetText(nSelect, str);
m_skill_list.AddString(str);
m_userskill_list.DeleteString(nSelect);
}
}
void CDialog3::OnBnClickedYjoinskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
if ( m_yskill_list.GetCount() )
{
CString str;
int nSelect = m_yskill_list.GetCurSel();
m_yskill_list.GetText(nSelect, str);
m_yuserskill_list.AddString(str);
m_yskill_list.DeleteString(nSelect);
}
}
void CDialog3::OnBnClickedYdelskillBtn()
{
// TODO: 在此添加控件通知处理程序代码
if ( m_yuserskill_list.GetCount() )
{
CString str;
int nSelect = m_yuserskill_list.GetCurSel();
m_yuserskill_list.GetText(nSelect, str);
m_yskill_list.AddString(str);
m_yuserskill_list.DeleteString(nSelect);
}
}
void CDialog3::OnLbnSelchangeSkillList()
{
// TODO: 在此添加控件通知处理程序代码
}
void CDialog3::OnBnClickedStartattBtn()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_STOPATT_BTN)->EnableWindow(TRUE);
GetDlgItem(IDC_STARTATT_BTN)->EnableWindow(FALSE);
m_pAutoWorkThread = AfxBeginThread((AFX_THREADPROC)AutoAttack, this);
m_OpenMutex.Lock();
m_bOpen = TRUE;
m_OpenMutex.Unlock();
}
void CDialog3::OnBnClickedStopattBtn()
{
// TODO: 在此添加控件通知处理程序代码
m_OpenMutex.Lock();
m_bOpen = FALSE;
m_OpenMutex.Unlock();
DWORD dwCode;
if ( m_pAutoWorkThread && GetExitCodeThread(m_pAutoWorkThread->m_hThread, &dwCode) )
{
if ( dwCode == STILL_ACTIVE )
{
TerminateThread(m_pAutoWorkThread->m_hThread, 0);
CloseHandle(m_pAutoWorkThread->m_hThread);
m_pAutoWorkThread = NULL;
}
}
GetDlgItem(IDC_STARTATT_BTN)->EnableWindow(TRUE);
GetDlgItem(IDC_STOPATT_BTN)->EnableWindow(FALSE);
}
UINT AutoAttack(LPVOID pParam)
{
CDialog3 *pDlg3 = (CDialog3*)pParam;
while ( pDlg3->m_bOpen )
{
if ( IsMon() )
{
NormalAttack();
Sleep(1000);
if ( !IsMon() )
{
GetRes();
Sleep(500);
if ( !pDlg3->m_bdatt_chk.GetCheck() )
Tab_Key();
Sleep(500);
}
else
{
for (int i = 0; i < pDlg3->m_iUserSkillCount; i++)
{
if ( g_ci.iCurMP >= 20 )
{
SkillAttack(pDlg3->m_dwSkillCode[i]);
Sleep(1000);
}
if ( !IsMon() )
{
GetRes();
Sleep(500);
if ( !pDlg3->m_bdatt_chk.GetCheck() )
Tab_Key();
Sleep(500);
break;
}
}
}
}
else
{
if ( !pDlg3->m_bdatt_chk.GetCheck() )
Tab_Key();
Sleep(500);
}
if ( pDlg3->m_yuserskill_list.GetCount() > 0 )
{
if ( (::GetTickCount() - pDlg3->m_dwYSkillTime) >= (DWORD)(((pDlg3->m_zytime_cmb.GetCurSel() * 10) + 10) * 60000) )
{
pDlg3->m_dwYSkillTime = ::GetTickCount();
for (int i = 0; i < pDlg3->m_yuserskill_list.GetCount(); i++)
{
SkillAttack(pDlg3->m_dwYSkillCode[i]);
Sleep(1000);
}
}
}
}
return 0;
}