Jeff пре 4 година
родитељ
комит
fa890ca2a3

+ 53 - 2
GameAssist/GameAssist/Assist.cpp

@@ -942,7 +942,7 @@ namespace GAssist
 		if (srcImg.data == NULL)
 			return FALSE;
 
-		if (thresholdImg.data)
+		if (thresholdImg.data && srcImg.data != thresholdImg.data)
 			thresholdImg.release();
 
 		switch (type)
@@ -981,7 +981,7 @@ namespace GAssist
 				break;
 		}
 
-		return 0;
+		return TRUE;
 	}
 
 	BOOL GetImgMatchtemplate(HWND hWnd, std::string strTempImg, RECT& rc, double lowestMatchValue)
@@ -1062,6 +1062,57 @@ namespace GAssist
 		// 是否大于最低匹配度;
 		return (lv_nMaxVal >= lowestMatchValue ? TRUE : FALSE);
 	}
+
+	BOOL IsMatchIcon(HWND hWnd, std::string strTempImg, RECT srcRect, RECT& matchRect, double lowestMatchValue)
+	{
+		GAssist::SaveHwndToBmpFile(hWnd, g_strAppdir + _T("Game.bmp"));
+		cv::Mat srcImg, tempImg, matchImg;
+		if (!OpenImage(g_strAppdir + _T("Game.bmp"), srcImg) || !OpenImage(strTempImg, tempImg))
+		{
+			if (srcImg.data) srcImg.release();
+			if (tempImg.data) tempImg.release();
+			return FALSE;
+		}
+
+		// 指定源图片区域来做模块比较,提高效率;
+		cv::Mat imgROI;
+		imgROI = srcImg(cv::Rect(srcRect.left, srcRect.top, srcRect.right - srcRect.left, srcRect.bottom - srcRect.top));
+		/*
+		m_ImgROI = srcImg([&]()-> cv::Rect {
+			// 注意是x,y,w=cols,h=rows
+			return cv::Rect(srcRect.left, srcRect.top, srcRect.right - srcRect.left, srcRect.bottom - srcRect.top);
+		}());
+		*/
+
+		cv::matchTemplate(imgROI, tempImg, matchImg, cv::TM_CCOEFF_NORMED);
+		// 归一化到0~1
+		//cv::normalize(matchImg, matchImg, 0, 1, cv::NORM_MINMAX, -1);
+
+		double lv_nMinVal = 0.0;
+		double lv_nMaxVal = 0.0;
+		cv::Point lv_nMinLoc = cv::Point(0, 0);
+		cv::Point lv_nMaxLoc = cv::Point(0, 0);
+		cv::Point lv_MatchLoc = cv::Point(0, 0);
+		cv::minMaxLoc(matchImg, &lv_nMinVal, &lv_nMaxVal, &lv_nMinLoc, &lv_nMaxLoc);
+
+		cv::Rect roi = cv::Rect(lv_nMaxLoc.x, lv_nMaxLoc.y, tempImg.cols, tempImg.rows);
+		cv::Mat roiImg = imgROI(roi);
+		cv::imwrite("match.bmp", roiImg);
+
+		matchRect.left = srcRect.left + lv_nMaxLoc.x - frameWidth;
+		matchRect.top = srcRect.top + lv_nMaxLoc.y - titleBarHeight;
+		matchRect.right = matchRect.left + tempImg.cols;
+		matchRect.bottom = matchRect.top + tempImg.rows;
+
+		imgROI.release();
+		srcImg.release();
+		tempImg.release();
+		matchImg.release();
+		roiImg.release();
+
+		// 是否大于最低匹配度;
+		return (lv_nMaxVal >= lowestMatchValue ? TRUE : FALSE);
+	}
 	
 	void ZhiYeDaTiaoZhan()
 	{

+ 1 - 0
GameAssist/GameAssist/Assist.h

@@ -176,6 +176,7 @@ namespace GAssist
 	BOOL SetImgThreshold(cv::Mat &srcImg, cv::Mat &thresholdImg, long nThresholdVal, long nMaxThresholdVal, int type = 0);
 	BOOL GetImgMatchtemplate(HWND hWnd, std::string strTempImg, RECT& rc, double lowestMatchValue = 0.900);
 	BOOL GetImgMatchtemplate(std::string strSrcImg, std::string strTempImg, RECT &rc, double lowestMatchValue = 0.900);
+	BOOL IsMatchIcon(HWND hWnd, std::string strTempImg, RECT srcRect, RECT& matchRect, double lowestMatchValue = 0.900);
 	
 	// Ö°Òµ´óÌôÕ½;
 	void ZhiYeDaTiaoZhan();

+ 10 - 9
GameAssist/GameAssist/GameAssist.rc

@@ -53,8 +53,8 @@ BEGIN
     "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"
     "LANGUAGE 4, 2\r\n"
     "#pragma code_page(936)\r\n"
-    "#include ""res\\GameAssist.rc2""  // 闈?Microsoft Visual C++ 缂栬緫鐨勮祫婧?\n"
-    "#include ""l.CHS\\afxres.rc""      // 鏍囧噯缁勪欢\r\n"
+    "#include ""res\\GameAssist.rc2""  // 闂?Microsoft Visual C++ 缂傛牞绶惃鍕カ濠?\n"
+    "#include ""l.CHS\\afxres.rc""      // 閺嶅洤鍣紒鍕\r\n"
     "#endif\r\n"
     "\0"
 END
@@ -88,20 +88,21 @@ BEGIN
     DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
 END
 
-IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 153, 198
+IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 195, 199
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "GameAssist"
 FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
-    DEFPUSHBUTTON   "确定",IDOK,33,176,50,14
-    PUSHBUTTON      "取消",IDCANCEL,96,176,50,14
+    DEFPUSHBUTTON   "确定",IDOK,33,177,50,14
+    PUSHBUTTON      "取消",IDCANCEL,138,177,50,14
     PUSHBUTTON      "打开",BTN_OPENGAME,12,11,50,14
     PUSHBUTTON      "Button2",IDC_BUTTON2,12,32,50,14
     PUSHBUTTON      "镜妖",IDC_BUTTON3,74,10,50,14
     PUSHBUTTON      "三倍",IDC_BUTTON4,74,31,50,14
     PUSHBUTTON      "开宝箱",IDC_BUTTON5,12,64,50,14
     PUSHBUTTON      "职业大挑战",IDC_BUTTON6,74,64,50,14
+    CONTROL         "召唤兽参战",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,13,50,10
 END
 
 
@@ -163,9 +164,9 @@ BEGIN
     IDD_GAMEASSIST_DIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 146
+        RIGHTMARGIN, 188
         TOPMARGIN, 7
-        BOTTOMMARGIN, 190
+        BOTTOMMARGIN, 191
         HORZGUIDE, 190
     END
 END
@@ -211,8 +212,8 @@ END
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
 LANGUAGE 4, 2
 #pragma code_page(936)
-#include "res\GameAssist.rc2"  // 闈?Microsoft Visual C++ 缂栬緫鐨勮祫婧?
-#include "l.CHS\afxres.rc"      // 鏍囧噯缁勪欢
+#include "res\GameAssist.rc2"  // 闂?Microsoft Visual C++ 缂傛牞绶惃鍕カ濠?
+#include "l.CHS\afxres.rc"      // 閺嶅洤鍣紒鍕
 #endif
 
 /////////////////////////////////////////////////////////////////////////////

+ 268 - 46
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -56,6 +56,33 @@ CRect FindNPC(HWND hWnd, LPCSTR lpszNPC)
 	return rc;
 }
 
+
+BOOL ClickSetup(HWND hWnd, LPCSTR lpszTemplateImage)
+{
+	CRect rc;
+	TCHAR szTemplateImage[MAX_PATH] = { 0 };
+	// 先截图;
+	DebugLog(_T("ClickSetup=%s"), lpszTemplateImage);
+	GAssist::SaveHwndToBmpFile(hWnd, GAssist::g_strAppdir + _T("Game.bmp")); SRAND(200, 500);
+	_stprintf_s(szTemplateImage, _T("%s%s"), GAssist::g_strAppdir.c_str(), lpszTemplateImage);
+	if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), szTemplateImage, rc)) {
+		// 找到匹配的模块;
+		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);	// 进入孤独洞要时间切换地图;
+		// 单击目标后,要往移走鼠标,防止下面匹配的时候被鼠标挡住;
+		GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(5, 12), rc.bottom + RAND(5, 10)));
+		SRAND(200, 500);	// 进入孤独洞要时间切换地图;
+		DebugLog(_T("找到目标并单击成功:%s"), lpszTemplateImage);
+		return TRUE;
+	}
+
+	DebugLog(_T("没有找到目标:%s"), lpszTemplateImage);
+	return FALSE;
+}
+
+
 BOOL IsOnMap(HWND hWnd, LPCSTR lpszTemplateImage)
 {
 	CRect rc;
@@ -76,15 +103,226 @@ BOOL IsOnMap(HWND hWnd, LPCSTR lpszTemplateImage)
 	return FALSE;
 }
 
+BOOL IsBattle(HWND hWnd)
+{
+	CRect rc;
+	BOOL bBattle = FALSE;
+	SRAND(100, 200);
+	if (GAssist::IsMatchIcon(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\非战斗中.bmp"), { 630, 25, 805, 45 }, rc)) {
+		DebugLog(_T("Battle:非战斗中"));
+		return FALSE;
+	}
+
+	DebugLog(_T("Battle:战斗中"));
+	return TRUE;
+}
+
+BOOL IsWattingAttack(HWND hWnd)
+{
+	// 先截图
+	BOOL bIsAttack = FALSE;
+	GAssist::SaveHwndToBmpFile(hWnd, GAssist::g_strAppdir + _T("IsWattingAttack.bmp"));
+	cv::Mat srcImg, tempImg, matchImg;
+	if (!GAssist::OpenImage(GAssist::g_strAppdir + _T("IsWattingAttack.bmp"), srcImg)) {
+		if (srcImg.data) srcImg.release();
+		if (tempImg.data) tempImg.release();
+		return bIsAttack;
+	}
+
+	// 指定区域进行二值化;
+	cv::Mat imgThreshold;
+	cv::Mat imgROI = srcImg(cv::Rect(300, 50, 100, 70));
+	cv::imwrite("IsWattingAttack-match.bmp", imgROI);
+	if (GAssist::SetImgThreshold(imgROI, imgThreshold, 80, 255))
+	{
+		if (imgThreshold.data) {
+			// 轮廓;
+			std::vector<std::vector<cv::Point>> contours;
+			// 轮廓关系;
+			std::vector<cv::Vec4i> hierarchy;
+			// 查找轮廓;
+			contours.clear();
+			hierarchy.clear();
+
+			// 所有轮廓,内外轮廓分等级;
+			//findContours(imgROI, m_contours, m_hierarchy, cv::RETR_CCOMP, cv::CHAIN_APPROX_SIMPLE);
+			// 所有轮廓,内外轮廓不分等级,独立;
+			//findContours(m_ImgThreshold, m_contours, m_hierarchy, cv::RETR_LIST, cv::CHAIN_APPROX_SIMPLE);
+			// RETR_EXTERNAL=只检索最外面的轮廓;
+			findContours(imgThreshold, contours, hierarchy, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
+
+#if 0
+			// 找出白色区域的面积或周长;
+			std::vector<std::vector<cv::Point>>::iterator it = contours.begin();
+			for (; it != contours.end(); it++)
+			{
+				// arcLength(*it, true) 面积;
+				// contourArea(*it);
+			}
+#else
+			// 只要白色区域个数>=2
+			if (contours.size() >= 2)
+				bIsAttack = TRUE;
+#endif
+		}
+	}
+
+	if (imgROI.data) imgROI.release();
+	if (srcImg.data) srcImg.release();
+	if (tempImg.data) tempImg.release();
+
+	return bIsAttack;
+}
+
+void BattleOnece(HWND hWnd)
+{
+	if ( IsBattle(hWnd) )
+	{
+		SRAND(300, 500);
+		// 是否我方攻击;
+		if (IsWattingAttack(hWnd))
+		{
+			// 人物固定F1
+			// 根据角色选择技能;
+			GAssist::SendKey(hWnd, VK_F1);
+			SRAND(200, 300);
+			// 打镜妖喽罗;
+			GAssist::MouseClick(hWnd, CPoint(290 - 3, 140 - 20));
+			//GAssist::MouseMove(hWnd, CPoint(220 - 5, 180 - 10));// 打主镜妖;
+			SRAND(100, 200);
+		}
+	}
+	else
+	{
+		// 非战斗中,是否在贫民房中;
+		if (!IsOnMap(hWnd, _T("img\\地图\\贫民房.bmp"))) 
+		{
+			// 找小米;
+			CRect rc = FindNPC(hWnd, "臭美的小米");
+
+			// 选择进入;
+			BOOL bMatch = FALSE;
+			int trySize = 20;
+			// 我要挑战他们;
+			while (!(bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
+				SRAND(800, 1200);
+				if (!trySize--) break;
+			}
+
+			if (bMatch) {
+				GAssist::MouseMove(hWnd, CPoint(rc.left, rc.top));
+				// 单击:我要挑战他们;
+				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+				SRAND(1000, 1500);// 等出图;
+
+				// 移动一下;
+				GAssist::MouseMove(hWnd, CPoint(rc.left, rc.top));
+				::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
+
+				// 是否第一次进入地图;
+				if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+				{
+					SRAND(600, 1200);
+					if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+					{
+						SRAND(600, 1800);
+						if ((bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+						{
+							SRAND(800, 1800);
+						}
+					}
+				}
+			}
+		}
+		else
+		{
+			// 找到镜妖;
+			CRect rc;
+			POINT spt[4] = { { 260, 360 }, { 300,390}, { 390, 350}, { 280,300 } };
+			for (int i = 0; !GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\镜妖3.bmp"), rc); i++)
+			{
+				// 打开世界地图;
+				GAssist::SendKey(hWnd, VK_TAB); SRAND(200, 300);
+				// 选择坐标点;
+				GAssist::MouseClick(hWnd, spt[i % 4]);
+				// 退出世界地图;
+				GAssist::SendKey(hWnd, VK_TAB); SRAND(500, 900);
+
+				if (i > 10) {
+					DebugLog(_T("未找到镜妖+10"));
+					break;
+				}
+			}
+
+			// 找到镜妖;
+			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);
+			// 单击目标后,要往移走鼠标,防止下面匹配的时候被鼠标挡住;
+			GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(5, 12), rc.bottom + RAND(5, 10)));
+			SRAND(200, 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));
+				DebugLog(_T("我来抓你:移动鼠标"));
+				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
+				SRAND(800, 1500);
+				DebugLog(_T("我来抓你:找到目标并单击成功:%s"));
+			}
+		}
+	}
+}
+
 // 与镜妖战斗;
-void BattleJY(HWND hWnd)
+void BattleJY(HWND hWnd, BOOL bSummoner)
 {
 	if (!IsOnMap(hWnd, _T("img\\地图\\贫民房.bmp"))) {
+		// 找小米;
+		CRect rc = FindNPC(hWnd, "臭美的小米");
+
+		// 选择进入;
+		BOOL bMatch = FALSE;
+		int trySize = 20;
+		// 我要挑战他们;
+		while (!(bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
+			SRAND(800, 1200);
+			if (!trySize--) break;
+		}
+
+		if (bMatch) {
+			GAssist::MouseMove(hWnd, CPoint(rc.left, rc.top));
+			// 单击:我要挑战他们;
+			GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+			SRAND(1000, 1500);// 等出图;
+
+			// 移动一下;
+			GAssist::MouseMove(hWnd, CPoint(rc.left, rc.top));
+			::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
+
+			// 是否第一次进入地图;
+			if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+			{
+				SRAND(600, 1200);
+				if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+				{
+					SRAND(600, 1800);
+					if ((bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+					{
+						SRAND(800, 1800);
+					}
+				}
+			}
+		}
 		return;
 	}
 
 	CRect rc;
-	POINT spt[4] = { { 175, 280 }, { 225,305 }, { 300, 266 }, { 225,305 } };
+	//POINT spt[4] = { { 175, 280 }, { 225,305 }, { 300, 266 }, { 225,305 } };
+	POINT spt[4] = { { 260, 360 }, { 300,390}, { 390, 350}, { 280,300 } };
 	for( int i =0; !GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\镜妖3.bmp"), rc); i++ )
 	{
 		// 打开世界地图;
@@ -120,12 +358,14 @@ void BattleJY(HWND hWnd)
 		DebugLog(_T("我来抓你:找到目标并单击成功:%s"));
 
 		BOOL bBattle = FALSE;
-		while (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\战斗中.bmp"), rc))
+		//while (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\战斗中.bmp"), rc))
+		while (IsBattle(hWnd) )
 		{
 			DebugLog(_T("BattleJY:战斗中"));
-			while (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\技能选择.bmp"), rc))
+			//while (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\技能选择.bmp"), rc))
+			while ( IsWattingAttack(hWnd) )
 			{
-				DebugLog(_T("BattleJY:技能选择"));
+				DebugLog(_T("BattleJY:我方攻击……"));
 				if (!bBattle)
 				{
 					// 根据角色选择技能;
@@ -136,25 +376,31 @@ void BattleJY(HWND hWnd)
 					//GAssist::MouseMove(hWnd, CPoint(220 - 5, 180 - 10));// 打主镜妖;
 					SRAND(100,200);
 
-					// 召唤兽技能;
-					if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\召唤兽技能选择.bmp"), rc))
-					{
-						SRAND(200, 500);
-						GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
-						DebugLog(_T("BattleJY:召唤兽技能选择"));
-						
-						// 选择重击;
-						SRAND(300, 800);
-						if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击.bmp"), rc))
+					if (bSummoner) {
+						// 召唤兽技能;
+						if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\召唤兽技能选择.bmp"), rc))
 						{
+							SRAND(200, 500);
 							GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
-						}
+							DebugLog(_T("BattleJY:召唤兽技能选择"));
 
-						SRAND(200, 500);
-						GAssist::MouseMove(hWnd, CPoint(290 - 3, 140 - 15));
-						GAssist::MouseClick(hWnd, CPoint(290 - 3, 140 - 20));
-					}
+							// 选择重击;
+							SRAND(300, 800);
+							if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击.bmp"), rc))
+							{
+								GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
+							}
 
+							SRAND(200, 500);
+							GAssist::MouseMove(hWnd, CPoint(290 - 3, 140 - 15));
+							GAssist::MouseClick(hWnd, CPoint(290 - 3, 140 - 20));
+						}
+					}
+					else
+					{
+						GAssist::SendKey(hWnd, VK_A, FALSE, TRUE);
+						SRAND(60, 100);
+					}
 					bBattle = TRUE;
 				}
 				else
@@ -172,31 +418,6 @@ void BattleJY(HWND hWnd)
 	}
 }
 
-BOOL ClickSetup(HWND hWnd, LPCSTR lpszTemplateImage)
-{
-	CRect rc;
-	TCHAR szTemplateImage[MAX_PATH] = { 0 };
-	// 先截图;
-	DebugLog(_T("ClickSetup=%s"), lpszTemplateImage);
-	GAssist::SaveHwndToBmpFile(hWnd, GAssist::g_strAppdir + _T("Game.bmp")); SRAND(200, 500);
-	_stprintf_s(szTemplateImage, _T("%s%s"), GAssist::g_strAppdir.c_str(), lpszTemplateImage);
-	if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), szTemplateImage, rc)) {
-		// 找到匹配的模块;
-		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);	// 进入孤独洞要时间切换地图;
-		// 单击目标后,要往移走鼠标,防止下面匹配的时候被鼠标挡住;
-		GAssist::MouseMove(hWnd, CPoint(rc.right + RAND(5, 12), rc.bottom + RAND(5, 10)));
-		SRAND(200, 500);	// 进入孤独洞要时间切换地图;
-		DebugLog(_T("找到目标并单击成功:%s"), lpszTemplateImage);
-		return TRUE;
-	}
-
-	DebugLog(_T("没有找到目标:%s"), lpszTemplateImage);
-	return FALSE;
-}
-
 
 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 
@@ -243,6 +464,7 @@ CGameAssistDlg::CGameAssistDlg(CWnd* pParent /*=NULL*/)
 void CGameAssistDlg::DoDataExchange(CDataExchange* pDX)
 {
 	CDialog::DoDataExchange(pDX);
+	DDX_Control(pDX, IDC_CHECK1, m_cbSummoner);
 }
 
 BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
@@ -635,7 +857,7 @@ battle:
 		// 找镜妖;
 		for (int i = 0; i < 100; i++)
 		{
-			BattleJY(hProWnd);
+			BattleJY(hProWnd, m_cbSummoner.GetCheck());
 		}
 	}
 #else

+ 1 - 0
GameAssist/GameAssist/GameAssistDlg.h

@@ -38,4 +38,5 @@ public:
 	afx_msg void OnBnClickedButton4();
 	afx_msg void OnBnClickedButton5();
 	afx_msg void OnBnClickedButton6();
+	CButton m_cbSummoner;
 };

+ 2 - 1
GameAssist/GameAssist/resource.h

@@ -14,6 +14,7 @@
 #define IDC_BUTTON4                     1003
 #define IDC_BUTTON5                     1004
 #define IDC_BUTTON6                     1005
+#define IDC_CHECK1                      1006
 
 // Next default values for new objects
 // 
@@ -21,7 +22,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        129
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1006
+#define _APS_NEXT_CONTROL_VALUE         1007
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif