| | |
| | | this.MapType = mapType; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 选角色时的角色选择偏移 |
| | | /// </summary> |
| | | private static ZTPoint[] RoleOffset = new Utility.Structs.ZTPoint[] { |
| | | new ZTPoint (154,225), |
| | | new ZTPoint (300,225), |
| | | new ZTPoint (443,225), |
| | | new ZTPoint (593,225), |
| | | new ZTPoint (726,225), |
| | | new ZTPoint (883,225), |
| | | |
| | | new ZTPoint (154,455), |
| | | new ZTPoint (300,455), |
| | | new ZTPoint (443,455), |
| | | new ZTPoint (593,455), |
| | | new ZTPoint (726,455), |
| | | new ZTPoint (883,455) |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// 游戏窗口 |
| | | /// </summary> |
| | |
| | | () => |
| | | { |
| | | WindowUtils.SetDnfToTop(); |
| | | //选角色 |
| | | G.Instance.InputControl.MoveToAndClick(this.GameRect.Start.Add(RoleOffset[roleIndex])); |
| | | Thread.Sleep(500); |
| | | |
| | | if (SelectRoleIndex(roleIndex)) |
| | | { |
| | | //点进入游戏 |
| | | G.Instance.InputControl.MoveToAndClick(startGameButtonRect.GetCenterPoint()); |
| | | return true; |
| | | } |
| | | Thread.Sleep(1000); |
| | | return false; |
| | | |
| | | }, |
| | | () => |
| | | { |
| | |
| | | return true; |
| | | } |
| | | return false; |
| | | }); |
| | | },3); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 关闭所有弹出窗 |
| | | /// </summary> |
| | | /// <param name="cancelToken"></param> |
| | | /// <param name="gameRect"></param> |
| | | /// <returns></returns> |
| | | private bool CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect) |
| | | { |
| | | while (!cancelToken.IsCancellationRequested) |
| | | { |
| | | G.Instance.InputControl.MoveTo(0, 0, false, false, false); |
| | | Thread.Sleep(10); |
| | | //截图 |
| | | System.Drawing.Bitmap bitmap = ScreenCapture.Instance.CaptureScreen(); |
| | | Image<Rgb, byte> image = new Image<Rgb, byte>(bitmap); |
| | | |
| | | ZTRectangle closeButtonRect = ZTRectangle.Empty; |
| | | if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect)) |
| | | |
| | | /// <summary> |
| | | /// 选角色时的角色选择偏移 |
| | | /// </summary> |
| | | private static ZTPoint[] RoleOffset = new Utility.Structs.ZTPoint[] { |
| | | new ZTPoint (133,191), |
| | | new ZTPoint (249,191), |
| | | new ZTPoint (371,191), |
| | | new ZTPoint (499,191), |
| | | |
| | | |
| | | new ZTPoint (133,398), |
| | | new ZTPoint (249,398), |
| | | new ZTPoint (371,398), |
| | | new ZTPoint (499,398), |
| | | |
| | | new ZTPoint (133,398), |
| | | new ZTPoint (249,398) |
| | | }; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 选择角色 |
| | | /// </summary> |
| | | /// <param name="roleIndex"></param> |
| | | /// <returns></returns> |
| | | private bool SelectRoleIndex(Int32 roleIndex) |
| | | { |
| | | if (roleIndex < 8) |
| | | { |
| | | //移到顶端 |
| | | if (!ScrollMoveToTop()) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //移到顶端,向下一格 |
| | | if (!ScrollMoveToDownOne()) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | Thread.Sleep(1000); |
| | | //选角色 |
| | | G.Instance.InputControl.MoveToAndClick(this.GameRect.Start.Add(RoleOffset[roleIndex])); |
| | | Thread.Sleep(500); |
| | | return true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 滚动条移动到顶端 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private bool ScrollMoveToTop() |
| | | { |
| | | ZTRectangle upButton = ZTRectangle.Empty; |
| | | ZTRectangle downButton = ZTRectangle.Empty; |
| | | ZTRectangle scrollButton = ZTRectangle.Empty; |
| | | |
| | | |
| | | //查找滚动条位置 |
| | | if (DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect)) |
| | | { |
| | | //是在顶部 |
| | | if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 3) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | Int32 counter = 4; |
| | | while(counter>0) |
| | | { |
| | | counter--; |
| | | //查找滚动条位置 |
| | | if (!DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect)) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | //是在顶部 |
| | | if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 3) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint()); |
| | | Thread.Sleep(500); |
| | | ZTPoint targetPoint = scrollButton.GetCenterPoint(); |
| | | G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, false, false, false); |
| | | G.Instance.InputControl.Move(0, 0, true, false, false); |
| | | targetPoint = upButton.GetCenterPoint(); |
| | | G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, true, false, false); |
| | | G.Instance.InputControl.Move(0, 0, false, false, false); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration); |
| | | G.Instance.InputControl.MoveTo(this.GameRect.End.X, this.GameRect.Start.Y, false, false, false); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration); |
| | | } |
| | | |
| | | |
| | | return false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 滚动条移动到下一格 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private bool ScrollMoveToDownOne() |
| | | { |
| | | ZTRectangle upButton = ZTRectangle.Empty; |
| | | ZTRectangle downButton = ZTRectangle.Empty; |
| | | ZTRectangle scrollButton = ZTRectangle.Empty; |
| | | |
| | | |
| | | //查找滚动条位置 |
| | | if (DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect)) |
| | | { |
| | | //是在下一格 |
| | | if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) > 3&& Math.Abs(upButton.End.Y - scrollButton.Start.Y)<30) |
| | | { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | Int32 counter = 4; |
| | | while (counter > 0) |
| | | { |
| | | counter--; |
| | | //查找滚动条位置 |
| | | if (!DnfCVHelper.FindSelectRoleScroll(out upButton, out downButton, out scrollButton, this.GameRect)) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | //是在第一格 |
| | | if (Math.Abs(upButton.End.Y - scrollButton.Start.Y) > 3 && Math.Abs(upButton.End.Y - scrollButton.Start.Y) < 30) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | ZTPoint targetPoint = scrollButton.GetCenterPoint(); |
| | | G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, false, false, false); |
| | | G.Instance.InputControl.Move(0, 0, true, false, false); |
| | | targetPoint = upButton.GetCenterPoint(); |
| | | G.Instance.InputControl.MoveTo(targetPoint.X, targetPoint.Y, true, false, false); |
| | | G.Instance.InputControl.Move(0, 0, false, false, false); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration); |
| | | |
| | | |
| | | G.Instance.InputControl.MoveToAndClick(downButton.GetCenterPoint()); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration); |
| | | G.Instance.InputControl.MoveTo(this.GameRect.End.X, this.GameRect.Start.Y, false, false, false); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration); |
| | | } |
| | | |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 返回选择角色界面 |
| | |
| | | |
| | | if (result) |
| | | { |
| | | //点击切换角色按钮624,502 |
| | | G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 624, this.GameRect.Start.Y + 502)); |
| | | //点击切换角色按钮388,445 |
| | | G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(this.GameRect.Start.X + 388, this.GameRect.Start.Y + 445)); |
| | | return true; |
| | | } |
| | | G.Instance.InfoWriter("退回选择角色界面失败"); |
| | | return false; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 根据当前选择的地图实例化DNF地图 |