Pārlūkot izejas kodu

职业挑战:技能选择未完成。

Wang Jeff 4 gadi atpakaļ
vecāks
revīzija
b15b62a037

+ 244 - 287
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -56,13 +56,15 @@ CRect FindNPC(HWND hWnd, LPCSTR lpszNPC)
 	return rc;
 }
 
-
-BOOL ClickSetup(HWND hWnd, LPCSTR lpszTemplateImage)
+// 单击对话框里的步骤;
+BOOL ClickDlgSetup(HWND hWnd, LPCSTR lpszTemplateImage)
 {
 	CRect rc;
 	TCHAR szTemplateImage[MAX_PATH] = { 0 };
 	// 先截图;
-	DebugLog(_T("ClickSetup=%s"), lpszTemplateImage);
+	::ShowWindow(hWnd, SW_SHOWNORMAL);
+	::SetForegroundWindow(hWnd);
+	DebugLog(_T("ClickDlgSetup=%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)) {
@@ -98,6 +100,7 @@ CRect FindMatchIcon(HWND hWnd, LPCSTR lpszTemplateImage)
 		return rc;
 	}
 
+	rc.SetRectEmpty();
 	DebugLog(_T("没找到匹配目标:%s"), lpszTemplateImage);
 	return rc;
 }
@@ -208,10 +211,10 @@ BOOL IsWattingAttack(HWND hWnd, int nAttackNPCType)
 		case 1:
 		{
 			// 将鼠标移动到指定位置;
-			DebugLog(_T("IsWattingAttack:职业挑战中……"));
+			DebugLog(_T("IsWattingAttack:职业挑战中……"));// 要求角色:自定全黑头像;
 			POINT ptDest = { 625, 28 }; // 左上角;
 			GAssist::MouseMove(hWnd, ptDest);
-			if (!GAssist::IsMatchIcon(hWnd, GAssist::g_strAppdir + _T("img\\战斗中2.bmp"), { 0, 0, 30, 60 }, rc)) {
+			if (!GAssist::IsMatchIcon(hWnd, GAssist::g_strAppdir + _T("img\\战斗中.bmp"), { 600, 25, 655, 80 }, rc)) {
 				DebugLog(_T("IsWattingAttack:我方攻击"));
 				bIsAttack = TRUE;
 			}
@@ -257,7 +260,7 @@ void BattleOnece(HWND hWnd, BOOL bHasSummoner)
 			BOOL bMatch = FALSE;
 			int trySize = 20;
 			// 我要挑战他们;
-			while (!(bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
+			while (!(bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
 				SRAND(800, 1200);
 				if (!trySize--) break;
 			}
@@ -273,13 +276,13 @@ void BattleOnece(HWND hWnd, BOOL bHasSummoner)
 				::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
 
 				// 是否第一次进入地图;
-				if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+				if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
 				{
 					SRAND(600, 1200);
-					if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+					if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
 					{
 						SRAND(600, 1800);
-						if ((bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+						if ((bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
 						{
 							SRAND(800, 1800);
 						}
@@ -397,7 +400,7 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
 		BOOL bMatch = FALSE;
 		int trySize = 15;
 		// 我要挑战他们;
-		while (!(bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
+		while (!(bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
 			SRAND(800, 1200);
 			if (!trySize--) break;
 		}
@@ -413,13 +416,13 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
 			::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
 
 			// 是否第一次进入地图;
-			if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+			if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
 			{
 				SRAND(600, 1200);
-				if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+				if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
 				{
 					SRAND(600, 1800);
-					if ((bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+					if ((bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
 					{
 						SRAND(800, 1800);
 					}
@@ -481,7 +484,7 @@ void BattleJY2(HWND hWnd, BOOL bSummoner)
 		BOOL bMatch = FALSE;
 		int trySize = 20;
 		// 我要挑战他们;
-		while (!(bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
+		while (!(bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp")))) {
 			SRAND(800, 1200);
 			if (!trySize--) break;
 		}
@@ -497,13 +500,13 @@ void BattleJY2(HWND hWnd, BOOL bSummoner)
 			::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
 
 			// 是否第一次进入地图;
-			if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+			if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
 			{
 				SRAND(600, 1200);
-				if (ClickSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+				if (ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
 				{
 					SRAND(600, 1800);
-					if ((bMatch = ClickSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+					if ((bMatch = ClickDlgSetup(hWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
 					{
 						SRAND(800, 1800);
 					}
@@ -615,6 +618,214 @@ void BattleJY2(HWND hWnd, BOOL bSummoner)
 }
 
 
+void AttachGDD(HWND hWnd)
+{
+	// 人物技能:Alt+S,双击选中,单击敌人;
+}
+
+// 挑战医师;
+void BattleYS(HWND hWnd, const char* lpszJN)
+{
+	CRect rc;
+	BOOL bBattle = FALSE;
+	FindNPC(hWnd, "医师独侠");
+
+	do
+	{
+		rc = FindMatchIcon(hWnd, "img\\对话框关闭按钮.bmp");
+		Sleep(900);
+	} while (rc.IsRectEmpty() || rc.IsRectNull());
+
+	// 废话少说:表示这个没打过;
+	rc = FindMatchIcon(hWnd, _T("img\\gdd\\废话少说.bmp"));
+	if (!rc.IsRectEmpty() && !rc.IsRectNull())
+	{
+		// 确定
+		bBattle = TRUE;
+		GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+		SRAND(230, 350);
+		GAssist::MouseMoveEx(hWnd, { rc.left, rc.top }, { rc.right + rand() % 10, rc.bottom + rand() % 10 });
+		SRAND(20, 60);
+		ClickDlgSetup(hWnd, _T("img\\确定.bmp"));
+	}
+	else
+	{
+		rc = FindMatchIcon(hWnd, _T("img\\gdd\\离开这里.bmp"));
+		if (!rc.IsRectEmpty() && !rc.IsRectNull())
+		{
+			// 只有离开这里:已经打过,右键并退出 ;
+			GAssist::MouseRClick(hWnd);
+		}
+		else
+		{
+			// 找下一页的技能:没有下一页返回-1,找到返回0,没找到返回1;
+			auto FindNextPageJZ = [&](TCHAR* pJN)->int {
+				// 没有在当前页找到目标,看看是否在下一页;
+				rc = FindMatchIcon(hWnd, _T("img\\jn-jk\\gdd\\xyy.bmp"));
+				if (rc.IsRectEmpty() || rc.IsRectNull())
+				{
+					// 没有下一页,右键退出;
+					GAssist::MouseRClick(hWnd);
+					return -1;
+				}
+
+				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+				SRAND(230, 350);
+				// 下一页中查看;
+				rc = FindMatchIcon(hWnd, pJN);
+				if (!rc.IsRectEmpty() && !rc.IsRectNull())
+				{
+					// 找到目标,单击;
+					GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+					SRAND(300, 500);
+					GAssist::MouseMoveEx(hWnd, {rc.left, rc.top}, {rc.right+rand()%10, rc.bottom + rand()%10});
+					SRAND(150, 200);
+					ClickDlgSetup(hWnd, _T("img\\确定.bmp"));
+					SRAND(150, 200);
+					ClickDlgSetup(hWnd, _T("img\\确定.bmp"));
+					SRAND(150, 200);
+					// 战斗;
+					return 0;
+				}
+
+				return 1;
+			};
+
+			TCHAR szJN[MAX_PATH] = { 0 };
+			_stprintf_s(szJN, _T("img\\jn-jk\\gdd\\%s.bmp"), lpszJN);
+			rc = FindMatchIcon(hWnd, szJN);
+			if (rc.IsRectEmpty() || rc.IsRectNull())
+			{
+				// 最多只有三页;
+				for (int i = 0; i < 3; i++)
+				{
+					// 没有在当前页找到目标,看看是否在下一页;
+					int nRet = FindNextPageJZ(szJN);
+					if (nRet == 1)
+					{
+						// 没有找到技能;
+						continue;
+					}
+
+					if (nRet == 0)
+					{
+						// 找到了;
+						bBattle = TRUE;
+					}
+
+					break; // 没有下一页也直接break;
+				}
+			}
+			else
+			{
+				bBattle = TRUE;
+				// 找到目标,单击;
+				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+				SRAND(300, 500);
+				// 战斗;
+				ClickDlgSetup(hWnd, _T("img\\确定.bmp"));
+			}
+		}
+	}
+
+	// 进入战斗;
+	if (bBattle)
+	{
+		// 人物:Alt+S显示技能,双击选择技能,单击怪物发动技能;
+		// 注:有的人物技能太多,导致会有滚动条:这是有难点;
+		// 使用快捷键来处理:读取配置文件
+		auto FindJNShortCut = [&]()->int {
+			// 读取文件:jnmap.bin
+			// 格式:技能=快捷键的键值;
+			std::string line;
+			std::ifstream ifJN("img\\jnmap.bin");
+			if (ifJN)
+			{
+				TCHAR szJNValue[MAX_PATH] = { 0 };
+				TCHAR szJN[MAX_PATH] = { 0 };
+				while (std::getline(ifJN, line))
+				{
+					int nRet = _stscanf_s(line.c_str(), _T("%s=%s"), szJN, MAX_PATH, szJNValue, MAX_PATH);
+					if (nRet == 2 && _tcsicmp(lpszJN, szJN) == 0) {
+						// 将快捷键值
+						return atol(szJNValue);
+					}
+				}
+			}
+
+			// 没有找到jnmap.bin文件;
+			return -1;
+		};
+
+		int KeyValue = FindJNShortCut();
+		if (KeyValue != -1)
+		{
+			// 快捷键;
+			GAssist::SendKey(hWnd, KeyValue);
+			SRAND(200, 300);
+			// 单击指定位置;
+			GAssist::MouseClick(hWnd, 300, 160);
+			for (int i = 0; i < 5; i++)
+			{
+				// 判断是否我方攻击;
+				while (!IsWattingAttack(hWnd, 1))
+				{
+					Sleep(RAND(9600, 1500));
+				}
+
+				GAssist::SendKey(hWnd, VK_A, FALSE, TRUE);
+				Sleep(RAND(600, 1200));
+			}
+		}
+	}
+
+	// 右键退出;
+	GAssist::MouseRClick(hWnd);
+}
+
+void BattleOthers(HWND hWnd, const char* lpszName)
+{
+	CRect rc;
+	BOOL bBattle = FALSE;
+	FindNPC(hWnd, lpszName);
+
+	do
+	{
+		rc = FindMatchIcon(hWnd, "img\\对话框关闭按钮.bmp");
+		Sleep(900);
+	} while (!rc.IsRectEmpty() && !rc.IsRectNull());
+
+	// 废话少说:表示这个没打过;
+	rc = FindMatchIcon(hWnd, _T("img\\gdd\\废话少说.bmp"));
+	if (!rc.IsRectEmpty() && !rc.IsRectNull())
+	{
+		// 确定
+		bBattle = TRUE;
+		ClickDlgSetup(hWnd, _T("img\\确定.bmp"));
+	}
+	else
+	{
+		rc = FindMatchIcon(hWnd, _T("img\\gdd\\离开这里.bmp"));
+	}
+
+	if (bBattle) {
+		for (int i = 0; i < 6; i++)
+		{
+			// 判断是否我方攻击;
+			while (!IsWattingAttack(hWnd, 1))
+			{
+				Sleep(RAND(9600, 1500));
+			}
+
+			GAssist::SendKey(hWnd, VK_A, FALSE, TRUE);
+			Sleep(RAND(600, 1200));
+		}
+	}
+
+	// 右键退出;
+	GAssist::MouseRClick(hWnd);
+}
+
 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 
 class CAboutDlg : public CDialog
@@ -972,7 +1183,7 @@ void CGameAssistDlg::OnBnClickedButton2()  // 
 // 		vdx.CaptureImage(pData, len);
 // 		vdx.Deinit();
 // 	}
-#if 1
+#if 0
 	DWORD dwPid = GAssist::GetProcessId();
 	HWND hProWnd = GAssist::GetProMainHwnd(dwPid);
 	// 截图;
@@ -982,6 +1193,12 @@ void CGameAssistDlg::OnBnClickedButton2()  // 
 	GAssist::SaveHwndToBmpFile(hProWnd, strImg.GetString());
 #endif
 
+#if 1
+	HWND hProWnd = GAssist::GetProcessMainWnd();
+	//IsWattingAttack(hProWnd, 1);
+	BattleYS(hProWnd, "缚神诀");
+#endif
+
 #if 0
 	CRect rc;
 	HWND hProWnd = GAssist::GetProcessMainWnd();
@@ -1066,7 +1283,7 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 	BOOL bMatch = FALSE;
 	int trySize = 20;
 	// 我要挑战他们;
-	while ( !(bMatch = ClickSetup(hProWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp"))) ) {
+	while ( !(bMatch = ClickDlgSetup(hProWnd, _T("img\\活动\\镜妖\\1-我帮您抓.bmp"))) ) {
 		SRAND(800, 1200);
 		if (!trySize--) break;
 	}
@@ -1082,13 +1299,13 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 		::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
 
 		// 是否第一次进入地图;
-		if ( ClickSetup(hProWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
+		if ( ClickDlgSetup(hProWnd, _T("img\\活动\\镜妖\\2-我这就去.bmp")))
 		{
 			SRAND(600,1200);
-			if ( ClickSetup(hProWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
+			if ( ClickDlgSetup(hProWnd, _T("img\\活动\\镜妖\\3-战意镜妖.bmp")))
 			{
 				SRAND(600, 1800);
-				if ((bMatch = ClickSetup(hProWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
+				if ((bMatch = ClickDlgSetup(hProWnd, _T("img\\活动\\镜妖\\4-我就选择它.bmp"))))
 				{
 					SRAND(800, 1800);
 				}
@@ -1162,81 +1379,6 @@ void CGameAssistDlg::OnBnClickedButton5() // 
 }
 
 
-void AttachGDD(HWND hWnd)
-{
-	// 人物技能:Alt+S,双击选中,单击敌人;
-}
-
-// 挑战医师;
-void BattleYS(HWND hWnd, const char* lpszJN)
-{
-	CRect rc;
-	FindNPC(hWnd, "医师独侠");
-
-	do
-	{
-		rc = FindMatchIcon(hWnd, "img\\对话框关闭按钮.bmp");
-		Sleep(900);
-	} while (!rc.IsRectEmpty() && !rc.IsRectNull());
-	
-	// 离开这里;
-	rc = FindMatchIcon(hWnd, _T("img\\gdd\\废话少说.bmp"));
-	if (!rc.IsRectEmpty() && !rc.IsRectNull())
-	{
-		// 确定
-	}
-	else
-	{
-		rc = FindMatchIcon(hWnd, _T("img\\gdd\\离开这里.bmp"));
-		if (!rc.IsRectEmpty() && !rc.IsRectNull())
-		{
-			// 只有离开这里:已经打过,右键并退出 ;
-			GAssist::MouseRClick(hWnd);
-		}
-		else 
-		{
-			TCHAR szJN[MAX_PATH] = { 0 };
-			_stprintf_s(szJN, _T("img\\jn-jk\\gdd\\%s.bmp"), lpszJN);
-			rc = FindMatchIcon(hWnd, szJN);
-			if (rc.IsRectEmpty() || rc.IsRectNull())
-			{
-				// 没有在当前页找到目标,看看是否在下一页;
-				rc = FindMatchIcon(hWnd, _T("img\\jn-jk\\gdd\\xyy.bmp"));
-				if (rc.IsRectEmpty() || rc.IsRectNull())
-				{
-					// 没有下一页,右键退出;
-					GAssist::MouseRClick(hWnd);
-					return;
-				}
-
-				// 下一页中查看;
-				rc = FindMatchIcon(hWnd, szJN);
-				if (!rc.IsRectEmpty() && !rc.IsRectNull())
-				{
-					// 找到目标,单击;
-					GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
-					SRAND(300, 500);
-					// 战斗;
-				}
-				else
-				{
-					GAssist::MouseRClick(hWnd);
-				}
-			}
-			else
-			{
-				// 找到目标,单击;
-				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
-				SRAND(300, 500);
-				// 战斗;
-			}
-		}
-	}
-
-	// 右键退出;
-	GAssist::MouseRClick(hWnd);
-}
-
 void CGameAssistDlg::OnBnClickedButton6() // 职业挑战;
 {
 	CRect rc;
@@ -1249,209 +1391,24 @@ void CGameAssistDlg::OnBnClickedButton6() // 职业
 	int trySize = 20;
 
 	// 我要挑战他们;
-	while (!(bMatch = ClickSetup(hProWnd, _T("img\\zyxdds-wytztm.bmp")))) {
+	while (!(bMatch = ClickDlgSetup(hProWnd, _T("img\\zyxdds-wytztm.bmp")))) {
 		SRAND(1200, 2200);
 		if (!trySize--) break;
 	}
 
 	// 准备好了
-	if (ClickSetup(hProWnd, _T("img\\zyxdds-zbhl.bmp")))
+	if (ClickDlgSetup(hProWnd, _T("img\\zyxdds-zbhl.bmp")))
 	{
 		// 地图切换,等出图;
 		SRAND(2000, 2500);
 		if (IsOnMap(hProWnd, _T("img\\gdd\\name.bmp")))
 		{
 			DebugLog(_T("进入孤独洞"));
-			char szName[11][32] = { "医师独侠","术士独侠","道士独侠","武师独侠","浪子独侠","剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
+			char szName[10][32] = { "术士独侠","道士独侠","武师独侠","浪子独侠","剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
+			BattleYS(hProWnd, "缚神诀");
 			for (int i = 0; i < 10; i++)
 			{
-				if (FindNPC(hProWnd, szName[i]))
-				{
-					if (_tcscmp(szName[i], _T("医师独侠")) == 0)
-					{
-						Sleep(RAND(5500, 6300)); // 等你走到她面前(步行、初骑、中骑、高骑,坐骑加速等级有关);
-						if (ClickSetup(hProWnd, "img\\jn-jk\\gdd\\xyy.bmp"))
-						{
-							// 选择技能:缚神诀;
-							if (ClickSetup(hProWnd, "img\\jn-jk\\gdd\\fsj.bmp"))
-							{
-								if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-									break;
-								Sleep(RAND(500, 600));
-								if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-									break;
-								Sleep(RAND(600, 1300));
-								// 打6下;
-								for (size_t i = 0; i < 5; i++)
-								{
-									// 缚神诀的快捷键是:F6
-									GAssist::SendKey(hProWnd, VK_F6);
-									Sleep(RAND(2000, 3500));
-								}
-							}
-						}
-						else
-						{
-							if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-							{
-								Sleep(RAND(600, 1300));
-								if (!ClickSetup(hProWnd, "\\img\\gdd\\废话少说.bmp"))
-								{
-									// 打6下;
-									for (size_t i = 0; i < 5; i++)
-									{
-										// 缚神诀的快捷键是:F6
-										GAssist::SendKey(hProWnd, VK_F6);
-										Sleep(RAND(2000, 3500));
-									}
-								}
-							}
-							else if (!ClickSetup(hProWnd, "\\img\\gdd\\废话少说.bmp"))
-							{
-								Sleep(RAND(600, 1300));
-								// 打6下;
-								for (size_t i = 0; i < 5; i++)
-								{
-									// 缚神诀的快捷键是:F6
-									GAssist::SendKey(hProWnd, VK_F6);
-									Sleep(RAND(2000, 3500));
-								}
-							}
-							else if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\gdd\\离开这里.bmp"), rc))
-							{// 右键;
-								GAssist::MouseRClick(hProWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
-								continue;
-							}
-						}
-
-						break;
-					}
-					else
-					{
-						// 我要挑战 || 我要离开;
-
-						if (_tcscmp(szName[i], _T("魂武独侠")) == 0)
-						{
-						}
-
-					}
-				}
-				Sleep(RAND(200, 300));
-				DebugLog(_T("进入孤独洞2:%s"), szName[i]);
-			}
-		}
-	}
-
-	return;
-
-	if (bMatch) {
-
-		ClickSetup(hProWnd, _T("img\\zyxdds-zbhl.bmp"));
-		GAssist::MouseMove(hProWnd, CPoint(rc.left, rc.top));
-		// 单击:我要挑战他们;
-		GAssist::MouseClick(hProWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
-		Sleep(RAND(2000, 2500));// 等出图;
-
-		// 移动一下;
-		GAssist::MouseMove(hProWnd, CPoint(rc.left, rc.top));
-		::SetCursorPos(rc.left + rand() % 6, rc.top + rand() % 8);
-
-		trySize = 5;
-		bMatch = FALSE;
-		// 再单击:我准备好了;
-		GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
-		while (!(bMatch = GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\zyxdds-zbhl.bmp"), rc))) {
-			GAssist::MouseMove(hProWnd, CPoint(rc.left + rand() % 20, rc.top + rand() % 20));
-			Sleep(RAND(200,500));//等进入地图;
-			if (!trySize--) break;
-		}
-
-		if (bMatch) {
-			GAssist::MouseMove(hProWnd, CPoint(rc.left + rand() % 10, rc.top + rand() % 10));
-			GAssist::MouseClick(hProWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
-			Sleep(RAND(1500,2000));// 进入孤独洞要时间切换地图;
-			DebugLog(_T("进入孤独洞1"));
-			// 判断是否在孤独洞;
-			GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
-			if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\gdd\\name.bmp"), rc)) {
-				DebugLog(_T("进入孤独洞2"));
-				char szName[11][32] = { "医师独侠","术士独侠","道士独侠","武师独侠","浪子独侠","剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
-				for (int i = 0; i < 10; i++)
-				{
-					if (FindNPC(hProWnd, szName[i]))
-					{
-						if (_tcscmp(szName[i], _T("医师独侠")) == 0)
-						{
-							Sleep(RAND(5500, 6300)); // 等你走到她面前(步行、初骑、中骑、高骑,坐骑加速等级有关);
-							if (ClickSetup(hProWnd, "img\\jn-jk\\gdd\\xyy.bmp"))
-							{
-								// 选择技能:缚神诀;
-								if (ClickSetup(hProWnd, "img\\jn-jk\\gdd\\fsj.bmp"))
-								{
-									if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-										break;
-									Sleep(RAND(500, 600));
-									if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-										break;
-									Sleep(RAND(600, 1300));
-									// 打6下;
-									for (size_t i = 0; i < 5; i++)
-									{
-										// 缚神诀的快捷键是:F6
-										GAssist::SendKey(hProWnd, VK_F6);
-										Sleep(RAND(2000, 3500));
-									}
-								}
-							}
-							else 
-							{
-								if (!ClickSetup(hProWnd, "\\img\\jn-jk\\gdd\\qd.bmp"))
-								{
-									Sleep(RAND(600, 1300));
-									if (!ClickSetup(hProWnd, "\\img\\gdd\\废话少说.bmp"))
-									{
-										// 打6下;
-										for (size_t i = 0; i < 5; i++)
-										{
-											// 缚神诀的快捷键是:F6
-											GAssist::SendKey(hProWnd, VK_F6);
-											Sleep(RAND(2000, 3500));
-										}
-									}
-								}
-								else if (!ClickSetup(hProWnd, "\\img\\gdd\\废话少说.bmp"))
-								{
-									Sleep(RAND(600, 1300));
-									// 打6下;
-									for (size_t i = 0; i < 5; i++)
-									{
-										// 缚神诀的快捷键是:F6
-										GAssist::SendKey(hProWnd, VK_F6);
-										Sleep(RAND(2000, 3500));
-									}
-								}
-								else if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\gdd\\离开这里.bmp"), rc))
-								{// 右键;
-									GAssist::MouseRClick(hProWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
-									continue;
-								}
-							}
-
-							break;
-						}
-						else
-						{
-							// 我要挑战 || 我要离开;
-
-							if ( _tcscmp(szName[i], _T("魂武独侠")) == 0 )
-							{
-							}
-
-						}
-					}
-					Sleep(RAND(200, 300));
-					DebugLog(_T("进入孤独洞2:%s"), szName[i]);
-				}
+				BattleOthers(hProWnd, szName[i]);
 			}
 		}
 	}

+ 2 - 0
GameAssist/GameAssist/stdafx.h

@@ -52,6 +52,8 @@
 #include "opencv2/cvconfig.h"
 
 
+#include <fstream>//ifstream读文件,ofstream写文件,fstream读写文件
+#include <iostream>
 
 
 #ifdef _UNICODE

+ 1 - 0
GameAssist/img/jnmap.bin

@@ -0,0 +1 @@
+缚神诀=118

BIN
GameAssist/img/qd.bmp


BIN
GameAssist/img/确定.bmp