📄 齐卡卡dlg.cpp
字号:
::SetKeyData(false,NULL);
break;
}
if(InfoMyRole.nCurrentMp>(::GetDlgItemInt(this->m_hWnd,IDC_SKILLEDIT2,NULL,NULL)))
{
nSelect=m_SkillCombo1.GetCurSel();
::SetKeyData(true,0x70+nSelect);
::SendMessage(hWndZT,WM_KEYDOWN,0x70+nSelect,::MapVirtualKey(0x70+nSelect,NULL));
::SetKeyData(false,NULL);
break;
}
if(InfoMyRole.nCurrentMp>(::GetDlgItemInt(this->m_hWnd,IDC_SKILLEDIT3,NULL,NULL)))
{
nSelect=m_SkillCombo1.GetCurSel();
::SetKeyData(true,0x70+nSelect);
::SendMessage(hWndZT,WM_KEYDOWN,0x70+nSelect,::MapVirtualKey(0x70+nSelect,NULL));
::SetKeyData(false,NULL);
break;
}
break;
default:
break;
}
CDialog::OnTimer(nIDEvent);
}
void CMyDlg::OnStart()
{
// TODO: Add your control notification handler code here
if(NULL==bStart)
{
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK1))
{
SetTimer(STATETIMER1,(::GetDlgItemInt(this->m_hWnd,IDC_STATEEDIT1,NULL,NULL))*1000+150,NULL);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK2))
{
SetTimer(STATETIMER2,(::GetDlgItemInt(this->m_hWnd,IDC_STATEEDIT2,NULL,NULL))*1000+350,NULL);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK3))
{
SetTimer(STATETIMER3,(::GetDlgItemInt(this->m_hWnd,IDC_STATEEDIT3,NULL,NULL))*1000+550,NULL);
}
SetTimer(SKILLTIMER,2000,NULL);
bStart=true;
::SetDlgItemText(this->m_hWnd,IDC_START,"停止");
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_AUTOWORKCHECK) || BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_AUTOPICKUPCHECK))
{
bControlAuto=true;
//如果设置了定点打怪,给全局变量赋值
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_CENTERCHECK))
{
AutoSetPoint.x=InfoMyRole.InfoRole.nCoorPointX;
AutoSetPoint.y=InfoMyRole.InfoRole.nCoorPointY;
nRange=::GetDlgItemInt(this->m_hWnd,IDC_RANGEEDIT,NULL,NULL);
bFixPoint=true;
}
::CloseHandle(::CreateThread(NULL,NULL,SetAuto,this->m_hWnd,NULL,NULL));
}
//初始化过滤物品名称
InfoPickUp.n=m_GoodsList.GetCount();
for(int i=0;i<InfoPickUp.n;i++)
{
m_GoodsList.GetText(i,InfoPickUp.PickUpName[i]);
}
}
else
{
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK1))
{
KillTimer(STATETIMER1);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK2))
{
KillTimer(STATETIMER2);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK3))
{
KillTimer(STATETIMER3);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_AUTOWORKCHECK) || BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_AUTOPICKUPCHECK))
{
bControlAuto=NULL;
bFixPoint=NULL;
}
KillTimer(SKILLTIMER);
bStart=NULL;
::SetDlgItemText(this->m_hWnd,IDC_START,"开始");
}
}
void CMyDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK1))
{
KillTimer(STATETIMER1);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK2))
{
KillTimer(STATETIMER2);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_STATECHECK3))
{
KillTimer(STATETIMER3);
}
if(BST_CHECKED==::IsDlgButtonChecked(this->m_hWnd,IDC_AUTOWORKCHECK))
{
KillTimer(AUTOWORKTIMER);
}
KillTimer(SKILLTIMER);
::InitHook(false,dwThreadIDZT,hProcessZT);
CDialog::OnClose();
}
//负责自动捡物和打怪的线程
DWORD WINAPI SetAuto(LPVOID lpParameter)
{//1
//bControlAuto起到线程控制的作用
HWND hDlgWnd=(HWND)lpParameter;
POINT PMove ;
POINT PSend ;
int nSend =0;
int n,i,j;//计数用
int nSel;
int tempCmpX1,tempCmpX2;
int tempCmpY1,tempCmpY2;
bool bHaveCanANpc=NULL;
bool bHaveCanProp=NULL;
while(bControlAuto)
{//2
//如果当前选中的怪为NULL
if(NULL==InfoSelObject.dwStartAddress)
{//3
bHaveCanANpc=NULL;
bHaveCanProp=NULL;
//判别地上是否有符合条件的道具
for(n=0;n<(int)InfoByProp.nByPropCount;n++)
{
if(BST_CHECKED==::IsDlgButtonChecked(hDlgWnd,IDC_FILTERCHECK))
{
for(i=0;i<InfoPickUp.n;i++)
{
if(NULL==::strcmp(InfoPickUp.PickUpName[i],InfoByProp.nProp[n].szName))
{
bHaveCanProp=true;
nSel=n;
break;
}
}
}
else
{
bHaveCanProp=true;
}
if(bHaveCanProp)
break;
}//判别地上是否有符合条件的道具
if(BST_CHECKED==::IsDlgButtonChecked(hDlgWnd,IDC_AUTOPICKUPCHECK)
&&
true==bHaveCanProp)
{//4
//选中符合条件,具离玩家最近的道具
for(n=0;n<(int)InfoByProp.nByPropCount;n++)
{//5
if(BST_CHECKED==::IsDlgButtonChecked(hDlgWnd,IDC_FILTERCHECK))
{//6
for(i=0;i<InfoPickUp.n;i++)
{//7
if(NULL==::strcmp(InfoPickUp.PickUpName[i],InfoByProp.nProp[n].szName))
{//8
tempCmpX1=abs(InfoByProp.nProp[nSel].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpX2=abs(InfoByProp.nProp[n].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpY1=abs(InfoByProp.nProp[nSel].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
tempCmpY2=abs(InfoByProp.nProp[n].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
if((tempCmpX1*tempCmpX1+tempCmpY1*tempCmpY1)
>
(tempCmpX2*tempCmpX2+tempCmpY2*tempCmpY2))
{//9
nSel=n;
}//-9
}//-8
}//-7
}//-6
else
{//6
tempCmpX1=abs(InfoByProp.nProp[nSel].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpX2=abs(InfoByProp.nProp[n].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpY1=abs(InfoByProp.nProp[nSel].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
tempCmpY2=abs(InfoByProp.nProp[n].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
if((tempCmpX1*tempCmpX1+tempCmpY1*tempCmpY1)
>
(tempCmpX2*tempCmpX2+tempCmpY2*tempCmpY2))
{//7
nSel=n;
}//-7
}//-6
}//-5
PMove.x=InfoByProp.nProp[nSel].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX;
PMove.y=InfoByProp.nProp[nSel].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY;
if(PMove.x<-3)
{//5
PMove.x=0-3;
}//-5
else if(PMove.x>3)
{//5
PMove.x=3;
}//-5
if(PMove.y<-3)
{//5
PMove.y=0-3;
}//-5
else if(PMove.y>3)
{//5
PMove.y=3;
}//-5
PSend.x=PMove.x*64+485;
PSend.y=PMove.y*32+395;
::SetCursorData(true,&PSend);
nSend=(PSend.y<<16) | PSend.x;
::SendMessage(hWndZT,WM_MOUSEMOVE,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONDOWN,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONUP,NULL,nSend);
::SetCursorData(false,NULL);
if(2>abs(PMove.x) && 2>abs(PMove.y))
{//5
::SetKeyData(true,0xc0);
::SendMessage(hWndZT,WM_KEYDOWN,0xc0,::MapVirtualKey(0xc0,NULL));
::SetKeyData(false,NULL);
}//-5
}//-4
else
{//4
//如果傍边有怪,则进行判断哪个怪符合条件
if(InfoActiveNpc.nANpcCount)
{//5
bHaveCanANpc=NULL;
nSel=NULL;
for(n=0;n<(int)InfoActiveNpc.nANpcCount;n++)
{//6
tempCmpX1=abs(InfoActiveNpc.stANpc[nSel].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpX2=abs(InfoActiveNpc.stANpc[n].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX);
tempCmpY1=abs(InfoActiveNpc.stANpc[nSel].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
tempCmpY2=abs(InfoActiveNpc.stANpc[n].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY);
if(bFixPoint)//如果选中了定点打怪
{//7
if( (InfoActiveNpc.stANpc[n].nCoorPointX >= (AutoSetPoint.x-nRange))
&&
(InfoActiveNpc.stANpc[n].nCoorPointX <= (AutoSetPoint.x+nRange))
&&
(InfoActiveNpc.stANpc[n].nCoorPointY >= (AutoSetPoint.y-nRange))
&&
(InfoActiveNpc.stANpc[n].nCoorPointY <= (AutoSetPoint.y+nRange)))
{//8
if((tempCmpX1*tempCmpX1+tempCmpY1*tempCmpY1)
>
(tempCmpX2*tempCmpX2+tempCmpY2*tempCmpY2))
{//9
if(InfoActiveNpc.stANpc[n].nAllHp==1
&&
NULL != ::strcmp(InfoActiveNpc.stANpc[n].szName,"野果")
&&
InfoActiveNpc.stANpc[n].nGrade>0x01000000
&&
InfoActiveNpc.lpANpc[n] != hPre
)
{//10
nSel=n;
bHaveCanANpc=true;
}//-10
else
{//10
if(InfoActiveNpc.stANpc[n].nCurrentHp != NULL
&&
InfoActiveNpc.stANpc[n].nGrade>0x01000000
&&
InfoActiveNpc.lpANpc[n] != hPre)
{//11
nSel=n;
bHaveCanANpc=true;
}//-11
}//-10
}//-9
else
{//9
if(NULL==nSel)
{//10
if(InfoActiveNpc.stANpc[n].nGrade>0x01000000
&&
InfoActiveNpc.lpANpc[n] != hPre)
{//11
nSel=n;
bHaveCanANpc=true;
}//-11
}//-10
}//-9
}//-8
}//-7
else//如果没有选定点打怪
{//7
if((tempCmpX1*tempCmpX1+tempCmpY1*tempCmpY1)
>
(tempCmpX2*tempCmpX2+tempCmpY2*tempCmpY2))
{//8
if(InfoActiveNpc.stANpc[n].nAllHp==1
&&
NULL != ::strcmp(InfoActiveNpc.stANpc[n].szName,"野果")
&&
InfoActiveNpc.stANpc[n].nGrade>0x01000000
&&
InfoActiveNpc.lpANpc[n] != hPre)
{//9
nSel=n;
bHaveCanANpc=true;
}//-9
else
{//9
if( InfoActiveNpc.lpANpc[n] != hPre
&&
InfoActiveNpc.stANpc[n].nCurrentHp != NULL
&&
InfoActiveNpc.stANpc[n].nGrade>0x01000000)
{//10
nSel=n;
bHaveCanANpc=true;
}//-10
}//-9
}//-8
}//-7
}//-6
}//-5
//如果有怪符合条件的怪,则去杀
if(bHaveCanANpc)
{//5
PMove.x=InfoActiveNpc.stANpc[nSel].nCoorPointX-InfoMyRole.InfoRole.nCoorPointX;
PMove.y=InfoActiveNpc.stANpc[nSel].nCoorPointY-InfoMyRole.InfoRole.nCoorPointY;
if(PMove.x<-3)
{//6
PMove.x=0-3;
}//-6
else if(PMove.x>3)
{//6
PMove.x=3;
}//-6
if(PMove.y<-3)
{//6
PMove.y=0-3;
}//-6
else if(PMove.y>3)
{//6
PMove.y=3;
}//-6
PSend.x=PMove.x*64+510;
PSend.y=PMove.y*32+374;
::SetCursorData(true,&PSend);
nSend=(PSend.y<<16) | PSend.x;
::SendMessage(hWndZT,WM_MOUSEMOVE,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONDOWN,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONUP,NULL,nSend);
::SetCursorData(false,NULL);
}//-5
//如果没有怪被选中,则判断自已的坐标是否在打怪区内
else
{//5
if(bFixPoint)
{//6
PMove.x=InfoMyRole.InfoRole.nCoorPointX-AutoSetPoint.x;
PMove.y=InfoMyRole.InfoRole.nCoorPointY-AutoSetPoint.y;
}//-6
else
{//6
PMove.x=3;
PMove.y=3;
}//-6
if(PMove.x<-3)
{//6
PMove.x=0-3;
}//-6
else if(PMove.x>3)
{//6
PMove.x=3;
}//-6
if(PMove.y<-3)
{//6
PMove.y=0-3;
}//-6
else if(PMove.y>3)
{//6
PMove.y=3;
}//-6
PSend.x=512-PMove.x*64;
PSend.y=384-PMove.y*32;
::SetCursorData(true,&PSend);
nSend=(PSend.y<<16) | PSend.x;
::SendMessage(hWndZT,WM_MOUSEMOVE,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONDOWN,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONUP,NULL,nSend);
::SetCursorData(false,NULL);
}//-5
//如果没有怪被选中,则判断自已的坐标是否在打怪区内
}//-4
}//-3
//如果有怪被选中
else
{//3
PMove.x=InfoSelObject.SelInfo.nCoorPointX-InfoMyRole.InfoRole.nCoorPointX;
PMove.y=InfoSelObject.SelInfo.nCoorPointY-InfoMyRole.InfoRole.nCoorPointY;
PSend.x=PMove.x*64+512;
PSend.y=PMove.y*32+374;
::SetCursorData(true,&PSend);
nSend=(PSend.y<<16) | PSend.x;
::SendMessage(hWndZT,WM_MOUSEMOVE,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONDOWN,NULL,nSend);
::SendMessage(hWndZT,WM_LBUTTONUP,NULL,nSend);
::SetCursorData(false,NULL);
hPre=InfoSelObject.dwStartAddress;
::Sleep(1000);
}//-3
::Sleep(1000);
}//-2
return true;
}//-1
void CMyDlg::OnGoodsbutton()
{
// TODO: Add your control notification handler code here
char szTemp[30];
if(::GetDlgItemText(this->m_hWnd,IDC_GOODSEDIT,szTemp,30))
{
m_GoodsList.AddString(szTemp);
}
}
void CMyDlg::OnGoodsbutton2()
{
// TODO: Add your control notification handler code here
int i=0;
i=m_GoodsList.GetCurSel();
m_GoodsList.DeleteString(i);
}
void CMyDlg::OnSelchangeGoodslist()
{
// TODO: Add your control notification handler code here
char szTemp[30];
int i=0;
i=m_GoodsList.GetCurSel();
m_GoodsList.GetText(i,szTemp);
::SetDlgItemText(this->m_hWnd,IDC_GOODSEDIT,szTemp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -