|
@@ -15,6 +15,9 @@
|
|
|
#define RAND(a,b) (rand()%(b-a)+a)
|
|
|
#define SRAND(a,b) (Sleep(rand()%(b-a)+a))
|
|
|
|
|
|
+BOOL IsWalkStop(HWND hWnd);
|
|
|
+
|
|
|
+
|
|
|
VOID DebugLog(CHAR* pszStr, ...)
|
|
|
{
|
|
|
char szData[MAX_PATH] = { 0 };
|
|
@@ -272,7 +275,7 @@ void BattleOnece(HWND hWnd, BOOL bHasSummoner)
|
|
|
}
|
|
|
|
|
|
// 与镜妖战斗;
|
|
|
-void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
|
|
|
+void BattleJY(HWND hWnd, BOOL bHasSummoner, int nZJType)
|
|
|
{
|
|
|
BOOL bFirstAttack = TRUE;
|
|
|
while (IsBattle(hWnd)) { // 是否在战斗中;
|
|
@@ -297,10 +300,10 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
|
|
|
DebugLog(_T("BattleJY:召唤兽技能选择"));
|
|
|
|
|
|
// 选择重击;
|
|
|
- if (bZJ) {
|
|
|
+ if (!nZJType ) {
|
|
|
SRAND(150, 350);
|
|
|
GAssist::SendKey(hWnd, VK_S, FALSE, TRUE);
|
|
|
- if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击.bmp"), rc))
|
|
|
+ if (GAssist::GetImgMatchtemplate(hWnd, nZJType == 1 ? GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击.bmp") : GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击2.bmp"), rc))
|
|
|
{
|
|
|
SRAND(100, 300);
|
|
|
GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
|
|
@@ -373,7 +376,7 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
|
|
|
// 找到镜妖;
|
|
|
CRect rc;
|
|
|
POINT spt[4] = { { 250, 335 }, { 310,360}, { 385, 315}, { 280,295 } };
|
|
|
- for (int i = 0; !GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\镜妖3.bmp"), rc); i++)
|
|
|
+ for (int i = 0; !GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\镜妖1.bmp"), rc); i++)
|
|
|
{
|
|
|
// 打开世界地图;
|
|
|
GAssist::SendKey(hWnd, VK_TAB); SRAND(200, 300);
|
|
@@ -382,7 +385,8 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
|
|
|
// 退出世界地图;
|
|
|
GAssist::SendKey(hWnd, VK_TAB); SRAND(500, 900);
|
|
|
// 等待跑完成;
|
|
|
- SRAND(600, 800);
|
|
|
+ //SRAND(600, 800);
|
|
|
+ IsWalkStop(hWnd);
|
|
|
|
|
|
if (i > 10) {
|
|
|
DebugLog(_T("未找到镜妖+10"));
|
|
@@ -394,16 +398,16 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
|
|
|
GAssist::MouseMove(hWnd, CPoint(rc.left + rand() % 10, rc.top + rand() % 10));
|
|
|
DebugLog(_T("移动鼠标"));
|
|
|
GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
|
|
|
- SRAND(300, 600);
|
|
|
+ SRAND(390, 600);
|
|
|
// 单击目标后,要往移走鼠标,防止下面匹配的时候被鼠标挡住;
|
|
|
- GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(5, 12), rc.bottom + RAND(5, 10)));
|
|
|
- SRAND(200, 500);
|
|
|
+ GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(10, 20), rc.bottom + RAND(10, 20)));
|
|
|
+ SRAND(300, 500);
|
|
|
DebugLog(_T("找到目标并单击成功:%s"));
|
|
|
|
|
|
// 我来抓你;
|
|
|
if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\我来抓您的.bmp"), rc)) {
|
|
|
// 找到匹配的模块;
|
|
|
- GAssist::MouseMove(hWnd, CPoint(rc.left + rand() % 10, rc.top + rand() % 10));
|
|
|
+ //GAssist::MouseMove(hWnd, CPoint(rc.left + rand() % 10, rc.top + rand() % 10));
|
|
|
DebugLog(_T("我来抓你:移动鼠标"));
|
|
|
GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
|
|
|
SRAND(800, 1500);
|
|
@@ -569,7 +573,7 @@ BOOL IsWalkStop(HWND hWnd)
|
|
|
for (int i = 0; i < 100; i++)
|
|
|
{
|
|
|
GAssist::CropPicture(hWnd, rc, _T("walk1.bmp"));
|
|
|
- Sleep(800);
|
|
|
+ Sleep(600);
|
|
|
GAssist::CropPicture(hWnd, rc2, _T("walk2.bmp"));
|
|
|
// 判断2张图片是否一样;
|
|
|
if (GAssist::IsSimilarPicture(_T("walk1.bmp"), _T("walk2.bmp")))
|
|
@@ -897,6 +901,7 @@ void CGameAssistDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
DDX_Control(pDX, IDC_CHECK1, m_cbSummoner);
|
|
|
DDX_Control(pDX, IDC_CHECK2, m_cbZJ);
|
|
|
+ DDX_Control(pDX, IDC_CHECK3, m_cbZJ2);
|
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
|
|
@@ -1340,11 +1345,20 @@ void CGameAssistDlg::OnBnClickedButton3() //
|
|
|
*/
|
|
|
CRect rc;
|
|
|
HWND hProWnd = GAssist::GetProcessMainWnd();
|
|
|
+ int nZJType = 0;
|
|
|
+ if (m_cbZJ.GetCheck())
|
|
|
+ nZJType = 1;
|
|
|
+ else if (m_cbZJ2.GetCheck())
|
|
|
+ nZJType = 2;
|
|
|
+ else
|
|
|
+ nZJType = 0;
|
|
|
+
|
|
|
+
|
|
|
for (int i = 0; i < 100; i++)
|
|
|
{
|
|
|
UpdateData(FALSE);
|
|
|
DebugLog(_T("start.打镜妖 %d----------------------------"), i);
|
|
|
- BattleJY(hProWnd, m_cbSummoner.GetCheck(), m_cbZJ.GetCheck());
|
|
|
+ BattleJY(hProWnd, m_cbSummoner.GetCheck(), nZJType);
|
|
|
DebugLog(_T("end.打镜妖 %d----------------------------\n"), i);
|
|
|
}
|
|
|
}
|
|
@@ -1353,6 +1367,189 @@ void CGameAssistDlg::OnBnClickedButton3() //
|
|
|
void CGameAssistDlg::OnBnClickedButton4() // 周六领礼物
|
|
|
{
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
+ // 星秀村:送礼协会会长丙
|
|
|
+ // 【星】铜钱怪
|
|
|
+ HWND hWnd = GAssist::GetProcessMainWnd();
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长丙"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\我来领取礼物.bmp")))
|
|
|
+ {
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\好的.bmp")))
|
|
|
+ {
|
|
|
+ FindNPC(hWnd, _T("【星】铜钱怪"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+
|
|
|
+ CRect rc;
|
|
|
+ //铜钱怪:好的,要问些什么问题呢?
|
|
|
+ struct MyStruct
|
|
|
+ {
|
|
|
+ BOOL bDone = FALSE;
|
|
|
+ TCHAR szQuestion[MAX_PATH] = {0};
|
|
|
+ };
|
|
|
+
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\铜钱怪:好的,要问些什么问题呢?.bmp")))
|
|
|
+ {
|
|
|
+ // 第一次回答;
|
|
|
+ std::vector<MyStruct> vtMyst1 = { {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:帮派就象个大家庭.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:交流的场所.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:能够认识很多.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:我希望能够.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:由系统定时发布.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:好的,快点问吧.bmp")}
|
|
|
+ };
|
|
|
+
|
|
|
+ for (; vtMyst1.size();)
|
|
|
+ {
|
|
|
+ for (std::vector<MyStruct>::iterator it = vtMyst1.begin(); it != vtMyst1.end(); it++ )
|
|
|
+ {
|
|
|
+ rc = FindMatchIcon(hWnd, it->szQuestion);
|
|
|
+ if (!rc.IsRectEmpty() && !rc.IsRectNull())
|
|
|
+ {
|
|
|
+ // 单击目标回答;
|
|
|
+ GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 5));
|
|
|
+ // 再移动下鼠标,防止高亮影响下次的判断;
|
|
|
+ GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(6, 20), rc.bottom + RAND(6, 20)));
|
|
|
+ // 等待下一个问题出现;
|
|
|
+ SRAND(200, 300);
|
|
|
+ it = vtMyst1.erase(it);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第二次回答;
|
|
|
+ std::vector<MyStruct> vtMyst2 = { {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:帮派就象个大家庭.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:交流的场所.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:能够认识很多.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:我希望能够.bmp")},
|
|
|
+ {FALSE, _T("img\\活动\\周六礼物\\铜钱怪:由系统定时发布.bmp")}
|
|
|
+ };
|
|
|
+ for (; vtMyst2.size();)
|
|
|
+ {
|
|
|
+ for (std::vector<MyStruct>::iterator it = vtMyst2.begin(); it != vtMyst2.end(); it++)
|
|
|
+ {
|
|
|
+ rc = FindMatchIcon(hWnd, it->szQuestion);
|
|
|
+ if (!rc.IsRectEmpty() && !rc.IsRectNull())
|
|
|
+ {
|
|
|
+ // 单击目标回答;
|
|
|
+ GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 5));
|
|
|
+ // 再移动下鼠标,防止高亮影响下次的判断;
|
|
|
+ GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(6, 20), rc.bottom + RAND(6, 20)));
|
|
|
+ // 等待下一个问题出现;
|
|
|
+ SRAND(200, 300);
|
|
|
+ it = vtMyst2.erase(it);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 回答完所有问题,右键退出;
|
|
|
+ SRAND(200, 300);
|
|
|
+ GAssist::MouseRClick(hWnd);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 再次回到送礼协会会长;
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长丙"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ // 再右键一次;
|
|
|
+ SRAND(200,300);
|
|
|
+ GAssist::MouseRClick(hWnd);
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长丙"));
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\好,现在就去.bmp")))
|
|
|
+ {
|
|
|
+ // 等待切换地图;
|
|
|
+ SRAND(800, 900);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (IsOnMap(hWnd, _T("img\\地图\\汴京城.bmp")) )
|
|
|
+ {
|
|
|
+ // 找送礼协会会长丁
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长丁"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ SRAND(300, 500); // 等对话框出现;
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\我来领取礼物.bmp")))
|
|
|
+ {
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\好的.bmp")))
|
|
|
+ {
|
|
|
+ // 找铜钱怪;
|
|
|
+ FindNPC(hWnd, _T("【汴】铜钱怪"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ SRAND(300, 500);
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\铜钱怪:进入战斗.bmp")))
|
|
|
+ {
|
|
|
+ // 将鼠标移动到指定位置;
|
|
|
+ POINT ptDest = { 625, 28 }; // 左上角;
|
|
|
+ GAssist::MouseMove(hWnd, ptDest);
|
|
|
+ while (IsBattle(hWnd))
|
|
|
+ {
|
|
|
+ // 判断是否我方攻击;
|
|
|
+ if (IsWattingAttack(hWnd, 1))
|
|
|
+ {
|
|
|
+ GAssist::SendKey(hWnd, VK_A, FALSE, TRUE);
|
|
|
+ }
|
|
|
+
|
|
|
+ SRAND(500, 750);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 送礼协会会长乙;
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长乙"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ // 再右键一次;
|
|
|
+ SRAND(200, 300);
|
|
|
+ GAssist::MouseRClick(hWnd);
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长丙")); SRAND(200, 300);
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\好,现在就去.bmp")))
|
|
|
+ {
|
|
|
+ // 等待切换地图;
|
|
|
+ SRAND(800, 900);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (IsOnMap(hWnd, _T("img\\地图\\应天府.bmp")))
|
|
|
+ {
|
|
|
+ // 找送礼协会会长丁
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长甲"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ SRAND(300, 500); // 等对话框出现;
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\我来领取礼物.bmp")))
|
|
|
+ {
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\好的.bmp")))
|
|
|
+ {
|
|
|
+ // 找铜钱怪;
|
|
|
+ FindNPC(hWnd, _T("【应】铜钱怪"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ SRAND(300, 500);
|
|
|
+ if (ClickDlgSetup(hWnd, _T("img\\活动\\周六礼物\\铜钱怪:进入战斗.bmp")))
|
|
|
+ {
|
|
|
+ // 将鼠标移动到指定位置;
|
|
|
+ POINT ptDest = { 625, 28 }; // 左上角;
|
|
|
+ GAssist::MouseMove(hWnd, ptDest);
|
|
|
+ while (IsBattle(hWnd))
|
|
|
+ {
|
|
|
+ // 判断是否我方攻击;
|
|
|
+ if (IsWattingAttack(hWnd, 1))
|
|
|
+ {
|
|
|
+ GAssist::SendKey(hWnd, VK_A, FALSE, TRUE);
|
|
|
+ }
|
|
|
+
|
|
|
+ SRAND(500, 750);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 送礼协会会长乙;
|
|
|
+ FindNPC(hWnd, _T("送礼协会会长甲"));
|
|
|
+ IsWalkStop(hWnd);
|
|
|
+ SRAND(1000, 2000);
|
|
|
+ GAssist::MouseRClick(hWnd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|