Sfoglia il codice sorgente

如果找到目标后,在单击之前先移动位置一次,会更精确,因为能取消目标的高亮状态。

Wang Jeff 4 anni fa
parent
commit
1a36439d05

+ 28 - 25
GameAssist/GameAssist/GameAssist.rc

@@ -1,5 +1,7 @@
 // Microsoft Visual C++ generated resource script.
 //
+#pragma code_page(65001)
+
 #include "resource.h"
 
 #define APSTUDIO_READONLY_SYMBOLS
@@ -16,11 +18,10 @@
 #undef APSTUDIO_READONLY_SYMBOLS
 
 /////////////////////////////////////////////////////////////////////////////
-// ÖÐÎÄ(¼òÌ壬Öйú) resources
+// 中文(简体,中国) resources
 
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
-#pragma code_page(936)
 
 #ifdef APSTUDIO_INVOKED
 /////////////////////////////////////////////////////////////////////////////
@@ -52,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++ ±à¼­µÄ×ÊÔ´\r\n"
-    "#include ""l.CHS\\afxres.rc""      // ±ê×¼×é¼þ\r\n"
+    "#include ""res\\GameAssist.rc2""  // � Microsoft Visual C++ 编辑的资�\r\n"
+    "#include ""l.CHS\\afxres.rc""      // 标准组件\r\n"
     "#endif\r\n"
     "\0"
 END
@@ -78,28 +79,29 @@ IDR_MAINFRAME           ICON                    "res\\GameAssist.ico"
 
 IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "¹ØÓÚ GameAssist"
+CAPTION "关于 GameAssist"
 FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
     ICON            IDR_MAINFRAME,IDC_STATIC,14,14,21,20
-    LTEXT           "GameAssist£¬1.0 °æ",IDC_STATIC,42,14,114,8,SS_NOPREFIX
+    LTEXT           "GameAssist,1.0 版",IDC_STATIC,42,14,114,8,SS_NOPREFIX
     LTEXT           "Copyright (C) 2020",IDC_STATIC,42,26,114,8
-    DEFPUSHBUTTON   "È·¶¨",IDOK,113,41,50,14,WS_GROUP
+    DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
 END
 
-IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 111, 162
+IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 153, 198
 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,29,181,50,14
-    PUSHBUTTON      "È¡Ïû",IDCANCEL,80,181,50,14
-    PUSHBUTTON      "´ò¿ª",BTN_OPENGAME,7,7,50,14
-    PUSHBUTTON      "Button2",IDC_BUTTON2,8,28,50,14
-    PUSHBUTTON      "¾µÑý",IDC_BUTTON3,62,7,50,14
-    PUSHBUTTON      "Èý±¶",IDC_BUTTON4,61,29,50,14
-    PUSHBUTTON      "¿ª±¦Ïä",IDC_BUTTON5,5,60,50,14
+    DEFPUSHBUTTON   "确定",IDOK,33,176,50,14
+    PUSHBUTTON      "�消",IDCANCEL,96,176,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
 END
 
 
@@ -125,13 +127,13 @@ BEGIN
     BEGIN
         BLOCK "080403a8"
         BEGIN
-            VALUE "CompanyName", "TODO: <¹«Ë¾Ãû>"
-            VALUE "FileDescription", "TODO: <Îļþ˵Ã÷>"
+            VALUE "CompanyName", "TODO: <公��>"
+            VALUE "FileDescription", "TODO: <文件说明>"
             VALUE "FileVersion", "1.0.0.1"
             VALUE "InternalName", "GameAssist.exe"
-            VALUE "LegalCopyright", "TODO: (C) <¹«Ë¾Ãû>¡£±£ÁôËùÓÐȨÀû¡£"
+            VALUE "LegalCopyright", "TODO: (C) <公��>。�留所有�利。"
             VALUE "OriginalFilename", "GameAssist.exe"
-            VALUE "ProductName", "TODO: <²úÆ·Ãû>"
+            VALUE "ProductName", "TODO: <产��>"
             VALUE "ProductVersion", "1.0.0.1"
         END
     END
@@ -161,9 +163,10 @@ BEGIN
     IDD_GAMEASSIST_DIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 132
+        RIGHTMARGIN, 146
         TOPMARGIN, 7
-        BOTTOMMARGIN, 195
+        BOTTOMMARGIN, 190
+        HORZGUIDE, 190
     END
 END
 #endif    // APSTUDIO_INVOKED
@@ -187,10 +190,10 @@ END
 
 STRINGTABLE
 BEGIN
-    IDS_ABOUTBOX            "¹ØÓÚ GameAssist(&A)..."
+    IDS_ABOUTBOX            "关于 GameAssist(&A)..."
 END
 
-#endif    // ÖÐÎÄ(¼òÌ壬Öйú) resources
+#endif    // 中文(简体,中国) resources
 /////////////////////////////////////////////////////////////////////////////
 
 
@@ -208,8 +211,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
 
 /////////////////////////////////////////////////////////////////////////////

+ 85 - 6
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -77,6 +77,7 @@ BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
 	ON_BN_CLICKED(IDC_BUTTON3, &CGameAssistDlg::OnBnClickedButton3)
 	ON_BN_CLICKED(IDC_BUTTON4, &CGameAssistDlg::OnBnClickedButton4)
 	ON_BN_CLICKED(IDC_BUTTON5, &CGameAssistDlg::OnBnClickedButton5)
+	ON_BN_CLICKED(IDC_BUTTON6, &CGameAssistDlg::OnBnClickedButton6)
 END_MESSAGE_MAP()
 
 
@@ -591,22 +592,26 @@ void CGameAssistDlg::OnBnClickedButton5()
 		{
 			if (!GAssist::GetImgMatchtemplate(hProcessMainWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\应天府铁匠.bmp"), rc))
 			{
-				mouseAssist.GetCursorPos();
-				mouseAssist.MoveTo(rc.top - rand() % 10, rc.left - rand() % 10);
+				// 没找到,要将鼠标从目标中移走;并且要右击一次将目标的高亮状态取消;
+				mouseAssist.SetCursorPos(rc.top + rand() % 5, rc.left + rand() % 5);
+				mouseAssist.MoveTo(rc.top - rand() % 5, rc.left - rand() % 5);
 				mouseAssist.RightClick();
 			}
 			else
 			{
-				GAssist::MouseClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2));
-				Sleep(600);
+				GAssist::MouseClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 5));
+				Sleep(600 + rand() % 30);
+				// 再移动下,会更高精度;
+				// moveto();
 				// 判断是否还有对话,如果没有的话表明不是第一次进入;
 				if (GAssist::GetImgMatchtemplate(hProcessMainWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\开宝箱.bmp"), rc)) {
 
-					GAssist::MouseDbClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2));
+					GAssist::MouseClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2 + rand() % 2, (rc.top + rc.bottom) / 2 + rand() % 2));
 					Sleep(rand() % 200 + 190);
 					// 然后移动出去;
 					//GAssist::MouseMove(hProcessMainWnd, CPoint(rc.top - 50 - rand()%20, rc.left - 50 - rand() % 20));
-					mouseAssist.GetCursorPos();
+					mouseAssist.SetCursorPos(rc.top + rand() % 5, rc.left + rand() % 5);
+					//mouseAssist.GetCursorPos();
 					mouseAssist.MoveToEx(rc.top, rc.left, rc.Width(), rc.Height());
 				}
 			}
@@ -614,6 +619,80 @@ void CGameAssistDlg::OnBnClickedButton5()
 			Sleep(600 + rand() % 300);
 		}
 	}
+}
+
+
+void CGameAssistDlg::OnBnClickedButton6()
+{
+	CRect rc;
+	HWND hProWnd = GAssist::GetProcessMainWnd();
+	//// 打开世界地图;
+	GAssist::SendKey(hProWnd, VK_TAB); Sleep(300);
+	if (GAssist::GetImgMatchtemplate(hProWnd, GAssist::g_strAppdir + _T("img\\寻路窗口.bmp"), rc)) {
+		//// Click
+		GAssist::MouseClick(hProWnd, CPoint((rc.right + rc.left) / 2 + rand() % 2, (rc.top + rc.bottom) / 2 + rand() % 2)); Sleep(200);
+		//// 设置剪切板:职业大挑战;
+		GAssist::SetClipboardString("职业训导大师"); Sleep(200);
+		//// Ctrl+V
+		GAssist::SendKey(hProWnd, 0x56, TRUE); Sleep(300);
+		//// DbClick
+		GAssist::MouseDbClick(hProWnd, CPoint(CPoint((rc.right + rc.left) / 2 + 5 + rand() % 2, (rc.top + rc.bottom) / 2 + 50 + rand() % 2))); Sleep(200);
+	}
+	else
+	{
+		return;
+	}
+
+	//// 退出世界地址;
+	GAssist::SendKey(hProWnd, VK_TAB); Sleep(200);
+	FIND_NPC(hProWnd, _T("职业训导大师"));
+
+	// 截图;
+	GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
+
+	// 选择进入;
+	BOOL bMatch = FALSE;
+	int trySize = 20;
+	while (!(bMatch = GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\zyxdds-wytztm.bmp"), rc))) {
+		Sleep(3000);
+		// 截图;
+		GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
+		if (!trySize--) break;
+	}
+
+	if (bMatch) {
+		TRACE2("坐标 x=%d,y=%d\n", rc.left, rc.top);
+		TRACE2("坐标2 x=%d,y=%d\n", (rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2);
+		GAssist::MouseMove(hProWnd, CPoint(rc.left, rc.top));
+		// 单击:我要挑战他们;
+		GAssist::MouseClick(hProWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
+		Sleep(2300);// 等出图;
+
+		// 再单击:我准备好了;
+		GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
+		if (GAssist::GetImgMatchtemplate(GAssist::g_strAppdir + _T("Game.bmp"), GAssist::g_strAppdir + _T("img\\zyxdds-zbhl.bmp"), rc)) {
+			GAssist::MouseMove(hProWnd, CPoint(rc.left, rc.top));
+			GAssist::MouseClick(hProWnd, CPoint((rc.right + rc.left) / 2, (rc.top + rc.bottom) / 2), TRUE);
 
+			Sleep(1000);//等进入地图;
+			if (1) {// 挑战医师;
+				// 打开世界地图;
+// 					GAssist::SendKey(hProWnd, VK_TAB); Sleep(200);
+// 					// Click
+// 					GAssist::MouseClick(hProWnd, CPoint(600, 100)); Sleep(200);
+// 					// 设置剪切板:职业大挑战;
+// 					GAssist::SetClipboardString("医师独侠"); Sleep(200);
+// 					// Ctrl+V
+// 					GAssist::SendKey(hProWnd, 0x56, TRUE); Sleep(200);
+// 					// DbClick
+// 					GAssist::MouseDbClick(hProWnd, CPoint(485, 162)); Sleep(200);
+// 					// 退出世界地址;
+// 					GAssist::SendKey(hProWnd, VK_TAB); Sleep(200);
+				FIND_NPC(hProWnd, _T("医师独侠"));
 
+				// 截图;
+				GAssist::SaveHwndToBmpFile(hProWnd, GAssist::g_strAppdir + _T("Game.bmp"));
+			}
+		}
+	}
 }

+ 1 - 0
GameAssist/GameAssist/GameAssistDlg.h

@@ -37,4 +37,5 @@ public:
 	afx_msg void OnBnClickedButton3();
 	afx_msg void OnBnClickedButton4();
 	afx_msg void OnBnClickedButton5();
+	afx_msg void OnBnClickedButton6();
 };

+ 2 - 2
GameAssist/GameAssist/MouseAssist.cpp

@@ -52,13 +52,13 @@ BOOL MouseAssist::GetCursorPos(long& x, long& y)
 	return bRet;
 }
 
-inline BOOL MouseAssist::SetCursorPos(int x, int y)
+BOOL MouseAssist::SetCursorPos(long x, long y)
 {
 	_curpt = {x, y};
 	return ::SetCursorPos(x, y);
 }
 
-inline BOOL MouseAssist::MoveTo(int x, int y)
+BOOL MouseAssist::MoveTo(int x, int y)
 {
 	_curpt = {x, y};
 	BOOL bRet = FALSE;

+ 2 - 2
GameAssist/GameAssist/MouseAssist.h

@@ -29,10 +29,10 @@ public:
 	// 获取当前鼠标位置;
 	BOOL GetCursorPos();
 	BOOL GetCursorPos(long &x, long &y);
-	BOOL SetCursorPos(int x, int y);
+	BOOL SetCursorPos(long x, long y);
 
 	// 移动到指定点;注意:点坐标是窗口;
-	BOOL MoveTo(int x, int y);
+	inline BOOL MoveTo(int x, int y);
 	// 在指定范围内随机移动;
 	BOOL MoveToEx(int x, int y, int w, int h);
 

+ 2 - 1
GameAssist/GameAssist/resource.h

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

BIN
GameAssist/img/寻路窗口.bmp