mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-04-23 22:10:00 +08:00
the whole team is defeated
在 `PathExecutor.cs` 中,`RecoverWhenLowHp` 方法进行了修改: - 使用 `using` 语句来捕获区域。 - 如果当前角色血量过低,调用新的 `TpStatueOfTheSeven` 方法进行传送和恢复。 - 增加了一个新的分支,如果检测到复苏提示,点击复苏并等待主界面加载完成,然后再调用 `TpStatueOfTheSeven` 方法。 - 新增了 `TpStatueOfTheSeven` 方法,用于处理传送到七天神像并恢复血量的逻辑。 在 `BvStatus.cs` 中: - 增加了 `System.Threading.Tasks` 和 `System.Threading` 的引用。 - 在 `Bv` 类中新增了 `WaitForMainUi` 方法,用于等待主界面加载完成。 - 在 `Bv` 类中新增了 `ClickIfInReviveModal` 方法,用于检测并点击复苏提示。
This commit is contained in:
@@ -145,16 +145,29 @@ public class PathExecutor(CancellationToken ct)
|
||||
|
||||
private async Task RecoverWhenLowHp()
|
||||
{
|
||||
var region = CaptureToRectArea();
|
||||
using var region = CaptureToRectArea();
|
||||
if (Bv.CurrentAvatarIsLowHp(region))
|
||||
{
|
||||
Logger.LogInformation("当前角色血量过低,去须弥七天神像恢复");
|
||||
// tp 到七天神像回血
|
||||
var tpTask = new TpTask(ct);
|
||||
await tpTask.Tp(TpTask.ReviveStatueOfTheSevenPointX, TpTask.ReviveStatueOfTheSevenPointY, true);
|
||||
await Delay(2000, ct);
|
||||
Logger.LogInformation("HP恢复完成");
|
||||
await TpStatueOfTheSeven();
|
||||
}
|
||||
else if (Bv.ClickIfInReviveModal(region))
|
||||
{
|
||||
await Bv.WaitForMainUi(ct); // 等待主界面加载完成
|
||||
Logger.LogInformation("复苏完成");
|
||||
await Delay(3000, ct);
|
||||
// 血量肯定不满,直接去七天神像回血
|
||||
await TpStatueOfTheSeven();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task TpStatueOfTheSeven()
|
||||
{
|
||||
// tp 到七天神像回血
|
||||
var tpTask = new TpTask(ct);
|
||||
await tpTask.Tp(TpTask.ReviveStatueOfTheSevenPointX, TpTask.ReviveStatueOfTheSevenPointY, true);
|
||||
await Delay(3000, ct);
|
||||
Logger.LogInformation("HP恢复完成");
|
||||
}
|
||||
|
||||
private async Task HandleTeleportWaypoint(WaypointForTrack waypoint)
|
||||
|
||||
@@ -4,10 +4,12 @@ using BetterGenshinImpact.GameTask.QuickTeleport.Assets;
|
||||
using OpenCvSharp;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using BetterGenshinImpact.Core.Recognition;
|
||||
using BetterGenshinImpact.Core.Simulator;
|
||||
using BetterGenshinImpact.GameTask.AutoFight;
|
||||
using Vanara.PInvoke;
|
||||
using System.Threading;
|
||||
|
||||
namespace BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
|
||||
@@ -34,6 +36,26 @@ public static partial class Bv
|
||||
return captureRa.Find(ElementAssets.Instance.PaimonMenuRo).IsExist();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 等待主界面加载完成
|
||||
/// </summary>
|
||||
/// <param name="ct"></param>
|
||||
/// <param name="retryTimes"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<bool> WaitForMainUi(CancellationToken ct, int retryTimes = 25)
|
||||
{
|
||||
for (var i = 0; i < retryTimes; i++)
|
||||
{
|
||||
await TaskControl.Delay(1000, ct);
|
||||
using var ra3 = TaskControl.CaptureToRectArea();
|
||||
if (IsInMainUi(ra3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否在大地图界面
|
||||
/// </summary>
|
||||
@@ -89,6 +111,29 @@ public static partial class Bv
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否出现全队死亡和复苏提示
|
||||
/// </summary>
|
||||
/// <param name="region"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ClickIfInReviveModal(ImageRegion region)
|
||||
{
|
||||
var list = region.FindMulti(new RecognitionObject
|
||||
{
|
||||
RecognitionType = RecognitionTypes.Ocr,
|
||||
RegionOfInterest = new Rect(0, region.Height / 4 * 3, region.Width, region.Height / 4)
|
||||
});
|
||||
var r = list.FirstOrDefault(r => r.Text.Contains("复苏"));
|
||||
if (r != null)
|
||||
{
|
||||
r.Click();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user