|
@@ -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]);
|
|
|
}
|
|
|
}
|
|
|
}
|