浏览代码

优化部分逻辑

Jeff 4 年之前
父节点
当前提交
1fcefe6cf9
共有 2 个文件被更改,包括 21 次插入12 次删除
  1. 20 11
      GameAssist/GameAssist/CAction.cpp
  2. 1 1
      GameAssist/GameAssist/CAction.h

+ 20 - 11
GameAssist/GameAssist/CAction.cpp

@@ -277,8 +277,11 @@ if (!::IsWindow(m_hGameWnd)) return;\
 
 		//// 单击寻路窗口;
 		MouseClick(ptMap); SRAND(300, 600);
-		//// 退出世界地址;
-		GameAssist::SendKey(VK_TAB); SRAND(200, 300);
+		
+		while (ImgAssist::GetImgMatchtemplate(m_hGameWnd, GAssist::g_strAppdir + _T("img\\世界地图.bmp"), rc)) {
+			// 退出世界地址;
+			GameAssist::SendKey(VK_TAB); SRAND(200, 300);
+		}
 
 		IsWalkStop();
 	}
@@ -306,6 +309,7 @@ if (!::IsWindow(m_hGameWnd)) return;\
 		SRAND(50, 80);
 		// 再找目标;
 		rc = FindMatchIcon(lpszTemplateImage);
+		SRAND(50, 80);
 		// 单击目标;
 		MouseClick(CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2 + rand() % 3));
 		// 单击后,系统切图可能要的时间会比较长;
@@ -335,8 +339,10 @@ if (!::IsWindow(m_hGameWnd)) return;\
 		MouseMove(CPoint((rc.right + rc.left) / 2 + 5 + rand() % 2, (rc.top + rc.bottom) / 2 + 60 + rand() % 2)); SRAND(200, 300);
 		//// 寻路窗口往下50就是目标;
 		MouseDbClick(CPoint((rc.right + rc.left) / 2 + 5 + rand() % 2, (rc.top + rc.bottom) / 2 + 60 + rand() % 2)); SRAND(200, 300);
-		//// 退出世界地址;
-		SendKey(VK_TAB); SRAND(200, 300);
+		while (ImgAssist::GetImgMatchtemplate(m_hGameWnd, GAssist::g_strAppdir + _T("img\\世界地图.bmp"), rc)) {
+			// 退出世界地址;
+			GameAssist::SendKey(VK_TAB); SRAND(200, 300);
+		}
 
 		// 直到停止走动为止;
 		IsWalkStop();
@@ -383,7 +389,7 @@ if (!::IsWindow(m_hGameWnd)) return;\
 		MouseMove(CPoint(rc.left, rc.top));
 		// 单击:我要挑战他们;
 		MouseClick({ (rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2 });
-		SRAND(900, 1300);// 等对话框出现;
+		SRAND(500, 1300);// 等对话框出现;
 		// 移动鼠标:不要停留在人物身上;
 		MouseMove({ rc.left - rand() % 10, rc.top - rand() % 10 });
 
@@ -453,8 +459,9 @@ if (!::IsWindow(m_hGameWnd)) return;\
 	void CAction::BattleJY(BOOL bHasSummoner, int nZJType, BOOL bAggressiveSkill)
 	{
 		BOOL bFirstAttack = TRUE;
-		while (IsBattle()) { // 是否在战斗中;
-			// 是否我方攻击;
+		// 1.是否在战斗中;
+		while (IsBattle()) { 
+			// 2.是否我方攻击;
 			while (IsWattingAttack(0)) { // Bug:如果被镜妖打死了,无法中断;
 				DebugLog(_T("BattleJY:我方攻击……"));
 				if (bFirstAttack)
@@ -562,12 +569,14 @@ if (!::IsWindow(m_hGameWnd)) return;\
 				SendKey(VK_TAB); SRAND(200, 300);
 				// 选择坐标点;
 				MouseClick(spt[i % 4]);
-				// 退出世界地图;
-				SendKey(VK_TAB); SRAND(500, 900);
+				while (ImgAssist::GetImgMatchtemplate(m_hGameWnd, GAssist::g_strAppdir + _T("img\\世界地图.bmp"), rc)) {
+					// 退出世界地址;
+					GameAssist::SendKey(VK_TAB); SRAND(500, 900);
+				}
 				// 等待跑完成;
-				//SRAND(600, 800);
 				IsWalkStop();
-
+				// 移动下鼠标;
+				MouseMove(spt[(i+1)%4]);
 				if (i > 10) {
 					DebugLog(_T("未找到镜妖+10"));
 					break;

+ 1 - 1
GameAssist/GameAssist/CAction.h

@@ -77,7 +77,7 @@ public:
 		CRect FindMatchIcon(LPCTSTR lpszTemplateImage);
 		// 是否在指定的地图上;
 		bool IsOnMap(LPCTSTR lpszTemplateImage);
-		// 世界地图位;
+		// 世界地图位;
 		void WorldMapPositioning(POINT ptMap);
 		// 是否等待攻击中;nAttackNPCType 0=镜妖; 1=职业挑战
 		bool IsWattingAttack(int nAttackNPCType);