Explorar o código

初步完成SP HP低安全值判断

Jeff %!s(int64=3) %!d(string=hai) anos
pai
achega
a7835e0d31

+ 13 - 1
GameAssist/GameAssist/Assist.cpp

@@ -11,6 +11,14 @@
 
 namespace GameAssist
 {
+	RECT g_rcRoleIdleHP = { 58, 34, 119, 40 };
+	RECT g_rcRoleIdleSP = { 58, 46, 119, 52 };
+	RECT g_rcSummonerIdleHP = { 168, 34, 202, 40 };
+	RECT g_rcSummonerIdleSP = { 168, 46, 202, 52 };
+	RECT g_rcRoleFightingHP = { 656, 34, 717, 40 };
+	RECT g_rcRoleFightingSP = { 656, 46, 717, 52 };
+	RECT g_rcSummonerFightingHP = { 766, 34, 800, 40 };
+	RECT g_rcSummonerFightingSP = { 766, 46, 800, 52 };
 	std::vector<CtrlInfo> g_vtCtrlInfo;
 	std::vector<GameWndInfo> g_vtGameWndInfo;
 	void ClearGameInfo(std::vector<GameWndInfo>& vtGWnd)
@@ -958,10 +966,14 @@ namespace ImgAssist
 			{
 				continue;
 			}
+
+			break;
 		}
 		src.release();
 
-		return i/width;
+		TRACE3("[GameAssist] ÑÕɫռ±È=%d,%d,%d\n", i, width, i * 100 / width);
+
+		return i * 100 / width ;
 	}
 
 };

+ 9 - 0
GameAssist/GameAssist/Assist.h

@@ -70,6 +70,15 @@ namespace GameAssist{
 	extern std::vector<GameWndInfo> g_vtGameWndInfo;
 	void ClearGameInfo(std::vector<GameWndInfo> &vtGWnd);
 
+	extern RECT g_rcRoleIdleHP ;
+	extern RECT g_rcRoleIdleSP ;
+	extern RECT g_rcSummonerIdleHP;
+	extern RECT g_rcSummonerIdleSP;
+	extern RECT g_rcRoleFightingHP;
+	extern RECT g_rcRoleFightingSP;
+	extern RECT g_rcSummonerFightingHP;
+	extern RECT g_rcSummonerFightingSP;
+
 	// 设置游戏窗口前置;
 	void SetGameForeground(HWND hWnd);
 	// 判断游戏窗口是否前置;

+ 8 - 8
GameAssist/GameAssist/CAction.cpp

@@ -480,16 +480,16 @@ SRAND(80,120);
 		return false;
 	}
 
-	bool CAction::IsSPBelowSafeValue(BOOL IsRole, int nSafeValue /*= 30*/)
+	bool CAction::IsSPBelowSafeValue(BOOL IsRole, BOOL IsIdle, int nSafeValue /*= 30*/)
 	{
 		RECT rect = { 0,0,0,0 };
-		if (IsFighting())
+		if (IsIdle)
 		{
-			rect = IsRole ? RECT{ 656, 46, 717, 52 } : RECT{ 766, 46, 800, 52 };
+			rect = IsRole ? GameAssist::g_rcRoleIdleSP : GameAssist::g_rcSummonerIdleSP;		
 		}
 		else
 		{
-			rect = IsRole ? RECT{ 58, 46, 119, 52 } : RECT{ 168, 46, 202, 52 };
+			rect = IsRole ? GameAssist::g_rcRoleFightingSP : GameAssist::g_rcSummonerFightingSP;
 		}
 
 		// ½ØÍ¼;
@@ -500,16 +500,16 @@ SRAND(80,120);
 		return ImgAssist::GetColorOccupiedLength(szSPImg, 8, 96, 248) < nSafeValue;
 	}
 
-	bool CAction::IsHPBelowSafeValue(BOOL IsRole, int nSafeValue /*= 30*/)
+	bool CAction::IsHPBelowSafeValue(BOOL IsRole, BOOL IsIdle, int nSafeValue /*= 30*/)
 	{
 		RECT rect = { 0,0,0,0 };
-		if (IsFighting())
+		if (IsIdle)
 		{
-			rect = IsRole ? RECT{ 656, 34, 717, 40 } : RECT{ 766, 34, 800, 40 };
+			rect = IsRole ? GameAssist::g_rcRoleIdleHP : GameAssist::g_rcSummonerIdleHP;		
 		}
 		else
 		{
-			rect = IsRole ? RECT{ 58, 34, 119, 40 } : RECT{ 168, 34, 202, 40 };
+			rect = IsRole ? GameAssist::g_rcRoleFightingHP : GameAssist::g_rcSummonerFightingHP;
 		}
 
 		// ½ØÍ¼;

+ 2 - 2
GameAssist/GameAssist/CAction.h

@@ -95,9 +95,9 @@ public:
 		// 查找NPC:查找map中的NPC;
 		bool FindNPCByMap(LPCTSTR lpszNPCName);
 		// 是否低于SP安全值
-		bool IsSPBelowSafeValue(BOOL IsRole, int nSafeValue = 30);
+		bool IsSPBelowSafeValue(BOOL IsRole, BOOL IsIdle, int nSafeValue = 30);
 		// 是否低于HP安全值
-		bool IsHPBelowSafeValue(BOOL IsRole, int nSafeValue = 30);
+		bool IsHPBelowSafeValue(BOOL IsRole, BOOL IsIdle, int nSafeValue = 30);
 
 	public:
 		// 与镜妖战斗;

+ 28 - 17
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -107,7 +107,7 @@ END_MESSAGE_MAP()
 BOOL CGameAssistDlg::OnInitDialog()
 {
 	CDialog::OnInitDialog();
-	
+
 	// 将“关于...”菜单项添加到系统菜单中。
 
 	// IDM_ABOUTBOX 必须在系统命令范围内。
@@ -205,7 +205,7 @@ HWND CGameAssistDlg::GetCurGameWnd()
 	if (nCurSel == CB_ERR)
 		return NULL;
 
-	GameAssist::GameWndInfo *pInfo = (GameAssist::GameWndInfo*)m_cbGameRole.GetItemDataPtr(nCurSel);
+	GameAssist::GameWndInfo* pInfo = (GameAssist::GameWndInfo*)m_cbGameRole.GetItemDataPtr(nCurSel);
 	return pInfo->hWnd;
 }
 
@@ -331,29 +331,29 @@ void CGameAssistDlg::OnBnClickedOpengame() // 
 					if (1)
 					{ // 800x600
 						// 发送按钮消息;进入游戏;
-						GameAssist::MouseClick({585, 116});
+						GameAssist::MouseClick({ 585, 116 });
 						// 发送按钮消息;下一步;
-						GameAssist::MouseClick({536, 481});
+						GameAssist::MouseClick({ 536, 481 });
 						// 发送按钮消息;电信一区;
-						GameAssist::MouseClick({229, 342});
+						GameAssist::MouseClick({ 229, 342 });
 						// 发送按钮消息;忘忧谷;
-						GameAssist::MouseClick({335, 244});
+						GameAssist::MouseClick({ 335, 244 });
 						// 发送按钮消息;下一步;
-						GameAssist::MouseClick({559, 516});
+						GameAssist::MouseClick({ 559, 516 });
 					}
 					else
 					{
 						// 640x480
 						// 发送按钮消息;进入游戏;
-						GameAssist::MouseClick({440, 75});
+						GameAssist::MouseClick({ 440, 75 });
 						// 发送按钮消息;下一步;
-						GameAssist::MouseClick({468, 454});
+						GameAssist::MouseClick({ 468, 454 });
 						// 发送按钮消息;电信一区;
-						GameAssist::MouseClick({165, 241});
+						GameAssist::MouseClick({ 165, 241 });
 						// 发送按钮消息;忘忧谷;
-						GameAssist::MouseClick({289, 195});
+						GameAssist::MouseClick({ 289, 195 });
 						// 发送按钮消息;下一步;
-						GameAssist::MouseClick({494, 469});
+						GameAssist::MouseClick({ 494, 469 });
 					}
 				}
 			}
@@ -419,7 +419,7 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 	}
 
 	GameAssist::GameWndInfo* pGameInfo = GetCurGameInfo();
-	if ( pGameInfo && pGameInfo->pAction )
+	if (pGameInfo && pGameInfo->pAction)
 	{
 		GameAssist::CAction* pAction = (GameAssist::CAction*)pGameInfo->pAction;
 		pAction->m_bHasSummoner = m_cbSummoner.GetCheck();
@@ -555,7 +555,7 @@ void CGameAssistDlg::OnBnClickedButton11() // 刷
 	m_cbGameRole.ResetContent();
 	for (std::vector<GameAssist::GameWndInfo>::iterator it = GameAssist::g_vtGameWndInfo.begin(); it != GameAssist::g_vtGameWndInfo.end(); it++)
 	{
-		if ( it->pAction == NULL )
+		if (it->pAction == NULL)
 			it->pAction = new GameAssist::CAction(it->hWnd);
 		nIndx = m_cbGameRole.AddString(it->strGameRoleName.c_str());
 		m_cbGameRole.SetItemDataPtr(nIndx, &*it);
@@ -564,7 +564,7 @@ void CGameAssistDlg::OnBnClickedButton11() // 刷
 }
 
 
-void CGameAssistDlg::OnBnClickedButton12()
+void CGameAssistDlg::OnBnClickedButton12() // 野练技能;
 {
 	std::map<std::string, int> SkillMap = {
 		{"F1",VK_F1},
@@ -609,15 +609,26 @@ void CGameAssistDlg::OnBnClickedButton12()
 					}
 					else
 					{
-						pAction->SendKey(VK_A, FALSE, TRUE);
+						if (bCheckAttack)
+							pAction->SendKey(VK_A, FALSE, TRUE);
+						else
+							pAction->SendKey(SkillMap[strSkill.GetBuffer()]);
 					}
 				}
 				Sleep(650);
 			}
 
+			if (pAction->IsSPBelowSafeValue(TRUE, TRUE, 10))
+			{
+				DebugLog(_T("低SP安全值"));
+				// 右键;
+				pAction->MouseMove({ (GameAssist::g_rcRoleIdleSP.right + GameAssist::g_rcRoleIdleSP.left) / 2 - 3, (GameAssist::g_rcRoleIdleSP.bottom + GameAssist::g_rcRoleIdleSP.top) / 2 - 20 });
+				pAction->MouseRClick({ (GameAssist::g_rcRoleIdleSP.right + GameAssist::g_rcRoleIdleSP.left) / 2 - 3, (GameAssist::g_rcRoleIdleSP.bottom + GameAssist::g_rcRoleIdleSP.top) / 2 - 20 });
+			}
+
 			Sleep(800);
 		}
-	}	
+	}
 }
 
 void CGameAssistDlg::OnBnClickedButton13() // 地图找挑战NPC;