From 589ed88a5924a7494e21b95b6bbff5e46ff49ddd Mon Sep 17 00:00:00 2001
From: asmrobot <asmrobot@hotmail.com>
Date: Thu, 21 Nov 2019 01:08:42 +0000
Subject: [PATCH] kalete map
---
src/RichCreator/Maps/Kalete/KaleteMap.cs | 337 ++++++++-----------------------------------------------
1 files changed, 53 insertions(+), 284 deletions(-)
diff --git a/src/RichCreator/Maps/Kalete/KaleteMap.cs b/src/RichCreator/Maps/Kalete/KaleteMap.cs
index 6d2df1e..be2b081 100644
--- a/src/RichCreator/Maps/Kalete/KaleteMap.cs
+++ b/src/RichCreator/Maps/Kalete/KaleteMap.cs
@@ -9,6 +9,7 @@
using RichCreator.Utility.Maps;
using RichCreator.Utility.Structs;
using RichCreator.Utility.Utilitys;
+using RichCreator.Utilitys;
using System;
using System.Collections.Generic;
using System.Threading;
@@ -18,12 +19,11 @@
/// <summary>
/// 卡勒特地图
/// </summary>
- public class KaleteMap : MapInfo
+ public class KaleteMap : ShikongzhimenMapBase
{
public KaleteMap(ZTRectangle gameRect, CancellationToken cancelToken) : base(MapType.Lingdong, gameRect, cancelToken)
{
this.MiniMap = new KaleteMiniMap(gameRect);
- this.Role = new DnfRole(gameRect);
}
/// <summary>
@@ -32,36 +32,28 @@
/// NextIndex=-2,出错
/// </summary>
private static readonly HouseInfo[] Houses = new HouseInfo[] {
- new HouseInfo (0 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (1 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (2 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
- new HouseInfo (3 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (4 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (5 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
- new HouseInfo (6 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (7 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (8 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-148,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (9 ,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-300,DoorDirection=new[]{Direction.Left} },
- new HouseInfo (10,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (11,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (12,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-220,DoorDirection=new[]{Direction.Bottom } },
- new HouseInfo (13,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Left } },
- new HouseInfo (14,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-320,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (15,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Right } },
- new HouseInfo (16,MapType.Lingdong,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
- new HouseInfo (17,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Left } },
- new HouseInfo (18,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } },
- new HouseInfo (19,MapType.Lingdong,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X}){ HouseCenterMoveLine=-250,DoorDirection=new[]{Direction.Up } }
+ new HouseInfo (0 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (1 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (2 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (3 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (4 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (5 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (6 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (7 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (8 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},new int[]{20,21,22,23 }),
+ new HouseInfo (9 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (10,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (11,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (12,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (13,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (14,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (15,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (16,MapType.Kalete,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (17,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (18,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null),
+ new HouseInfo (19,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null)
};
-
-
-
- /// <summary>
- /// 角色
- /// </summary>
- public DnfRole Role { get; set; }
-
-
+
private Int32 runningStep = RunningStep.None;
/// <summary>
@@ -184,70 +176,49 @@
switch (houseIndex)
{
case 0:
- this.Role.SyncMove(new ZTPoint(550, 0));
- this.Role.ReleaseSkill(HIDCode.R, 1000);
- this.Role.ReleaseSkill(HIDCode.E, 1000);
+ this.Role.SyncMove(new ZTPoint(297, 0));
+ this.Role.ReleaseSkill(HIDCode.R);
+ this.Role.ReleaseSkill(HIDCode.E);
+
break;
case 1:
- this.Role.SyncMove(new ZTPoint(300, 0));
- this.Role.ReleaseSkill(HIDCode.Q, 1300);
- this.Role.ReleaseSkill(HIDCode.W, 1000);
+ this.Role.SyncMove(new ZTPoint(241, 0));
+ this.Role.ReleaseSkill(HIDCode.Q);
+ this.Role.ReleaseSkill(HIDCode.W);
break;
case 6:
- this.Role.SyncMove(new ZTPoint(448, 94));
- this.Role.ReleaseSkill(HIDCode.G, 0);
+ this.Role.SyncMove(new ZTPoint(139, 90));
+ this.Role.ReleaseSkill(HIDCode.G);
break;
case 7:
- this.Role.SyncMove(new ZTPoint(530, 0));
- this.Role.ReleaseSkill(HIDCode.R, 0);
+ this.Role.SyncMove(new ZTPoint(330, 90));
+ this.Role.ReleaseSkill(HIDCode.R);
break;
case 8:
- this.Role.SyncMove(new ZTPoint(453, 0));
- this.Role.ReleaseSkill(HIDCode.H, 0);
+ this.Role.SyncMove(new ZTPoint(305, 0));
+ this.Role.ReleaseSkill(HIDCode.H);
break;
case 13:
- this.Role.SyncMove(new ZTPoint(-100, 203));
- this.Role.ReleaseSkill(HIDCode.Q, 1300);
- this.Role.ReleaseSkill(HIDCode.E, 0);
+ this.Role.SyncMove(new ZTPoint(-104, 82));
+ this.Role.ReleaseSkill(HIDCode.Q);
+ this.Role.ReleaseSkill(HIDCode.E);
break;
case 12:
- this.Role.SyncMove(new ZTPoint(-851, 120));
- this.Role.ReleaseSkill(HIDCode.T, 0);
+ this.Role.SyncMove(new ZTPoint(-550, 90));
+ this.Role.ReleaseSkill(HIDCode.T);
break;
case 17:
- this.Role.SyncMove(new ZTPoint(-306, 130));
- this.Role.ReleaseSkill(HIDCode.Q, 1300);
- this.Role.ReleaseSkill(HIDCode.F, 0);//用w代替
+ this.Role.SyncMove(new ZTPoint(-200, 60));
+ this.Role.ReleaseSkill(HIDCode.Q);
+ this.Role.ReleaseSkill(HIDCode.F);//用w代替
break;
case 16:
- this.Role.SyncMove(new ZTPoint(-385, 0));
- this.Role.ReleaseSkill(HIDCode.Y, 0);
+ this.Role.SyncMove(new ZTPoint(-174, 0));
+ this.Role.ReleaseSkill(HIDCode.Y);
break;
}
}
-
- /// <summary>
- /// esc退到城镇
- /// </summary>
- private void ExitToTown()
- {
- G.Instance.DebugWriter("返回城镇");
- Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 124, this.GameRect.Start.Y + 146);
- G.Instance.InputControl.MoveToAndClick(point);
- Thread.Sleep(5000);
- }
-
- /// <summary>
- /// 点击再次挑战
- /// </summary>
- private void ReplayGame()
- {
- G.Instance.DebugWriter("重新挑战");
- Utility.Structs.ZTPoint point = new Utility.Structs.ZTPoint(this.GameRect.End.X - 132, this.GameRect.Start.Y + 90);
- G.Instance.InputControl.MoveToAndClick(point);
- }
-
-
+
/// <summary>
/// 刷房间
/// </summary>
@@ -261,7 +232,7 @@
G.Instance.InfoWriter("未找到进入凛冬");
return ZTResult.Failed;
}
- G.Instance.InfoWriter("进入凛冬");
+ G.Instance.InfoWriter("进入卡勒特");
Int32 preHouseIndex = -1;
Int32 houseIndex = -1;
@@ -287,8 +258,8 @@
HouseInfo houseInfo = Houses[houseIndex];
this.Role.SetHouse(houseInfo);
DateTime startTime = DateTime.Now;
- KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role, preHouseIndex, this.runningStep);
- ZTResult smresult = kmsm.Work(5 * 60 * 1000);
+ KillMonsterStateMachine kmsm = new KillMonsterStateMachine(this, houseInfo,this.Role);
+ ZTResult smresult = kmsm.Work(2 * 60 * 1000,preHouseIndex,this.runningStep);
Int32 roomTotalSecond = (Int32)(DateTime.Now - startTime).TotalSeconds;
G.Instance.InfoWriter("房间刷完,用时:" + (roomTotalSecond / 60) + "分" + (roomTotalSecond % 60) + "秒");
@@ -310,113 +281,7 @@
}
}
}
-
- /// <summary>
- /// 步行到素喃
- /// </summary>
- /// <returns></returns>
- private bool MoveToSunan()
- {
- bool result = FuncUtils.NoChangeRetryCallWrap(
- () =>
- {
- WindowUtils.SetDnfToTop();
- CloseAllAlertWindow(this.CancelToken, this.GameRect);
- //向下走出赛丽亚的房间 ,走向素喃
- G.Instance.InputControl.PressKey(2000, HIDCode.DownArrow);
- },
- () =>
- {
- G.Instance.InfoWriter("检测是否进入素喃");
- result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () =>
- {
- return LindongCVHelper.IsInSunan(this.GameRect);
- });
- if (!result)
- {
- G.Instance.InfoWriter("进入素喃失败");
- return false;
- }
-
- G.Instance.InfoWriter("进入素喃成功");
- return true;
- },
- () =>
- {
- return DnfCVHelper.IsInSaiLiYaHouse(this.GameRect);
- });
- return result;
- }
-
- /// <summary>
- /// 步行至时空之门
- /// </summary>
- /// <returns></returns>
- private bool MoveToShikongzhimen()
- {
- bool result = FuncUtils.NoChangeRetryCallWrap(() =>
- {
- //打开地图
- ZTPoint mapButtonPosition = new ZTPoint(this.GameRect.End.X - 14, this.GameRect.Start.Y + 16);
- G.Instance.InputControl.MoveToAndClick(mapButtonPosition);
- Thread.Sleep(1000);
-
- //点到副本之前的地图
- ZTPoint mapPrePosition = new ZTPoint(this.GameRect.Start.X + 382, this.GameRect.Start.Y + 252);
- G.Instance.InputControl.MoveToAndClick(mapPrePosition);
-
- //关闭地图框
- CloseAllAlertWindow(this.CancelToken, this.GameRect);
- },
- () =>
- {
- //检测是否进入时空之门
- return FuncUtils.TimeoutCancelableWrap(15000, this.CancelToken, () =>
- {
- CloseAllAlertWindow(this.CancelToken, this.GameRect);
- return LindongCVHelper.IsInShikongzhimen(this.GameRect);
- });
- },
- () =>
- {
- //检测是否还在素喃
- return FuncUtils.TimeoutCancelableWrap(3000, this.CancelToken, () =>
- {
- CloseAllAlertWindow(this.CancelToken, this.GameRect);
- return LindongCVHelper.IsInSunan(this.GameRect);
- });
- });
-
- Thread.Sleep(5000);
- return result;
- }
-
- /// <summary>
- /// 步行到任务选择和正式开打页面
- /// </summary>
- /// <returns></returns>
- private bool MoveToChoiceTaskPage()
- {
- bool result = false;
- //右走进选择副本界面
- G.Instance.InputControl.PressKey(1500, HIDCode.LeftArrow);
-
-
- G.Instance.InfoWriter("检测是否打开选择副本界面");
- result = FuncUtils.TimeoutCancelableWrap(10000, this.CancelToken, () =>
- {
- Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
- return LindongCVHelper.IsInChoiceTaskPage(image, this.GameRect);
- });
- if (!result)
- {
- G.Instance.InfoWriter("进入打开选择副本界面失败");
- return false;
- }
- G.Instance.InfoWriter("打开选择副本界面成功");
- return true;
- }
-
+
/// <summary>
/// 进入指定房间
/// </summary>
@@ -424,7 +289,7 @@
private bool IntoHouse()
{
bool result = false;
- //选择凛冬
+ //选择卡勒特之初
G.Instance.InfoWriter("开始选择卡勒特之初");
Int32 nandu = 0;
@@ -456,32 +321,6 @@
}
/// <summary>
- /// 关闭所有弹出窗
- /// </summary>
- /// <param name="cancelToken"></param>
- /// <param name="gameRect"></param>
- /// <returns></returns>
- private void CloseAllAlertWindow(CancellationToken cancelToken, ZTRectangle gameRect)
- {
- while (!cancelToken.IsCancellationRequested)
- {
- //G.Instance.InputControl.MoveTo(gameRect.Start.X,gameRect.Start.Y, false, false, false);
- //Thread.Sleep(10);
- //截图
- Image<Rgb, byte> image = ScreenCapture.Instance.CaptureScreenReturnImage();
-
- ZTRectangle closeButtonRect = ZTRectangle.Empty;
- if (!DnfCVHelper.GetAlertWindow(out closeButtonRect, image, gameRect))
- {
- return;
- }
-
- G.Instance.InputControl.MoveToAndClick(closeButtonRect.GetCenterPoint());
- Thread.Sleep(500);
- }
- }
-
- /// <summary>
/// 选择凛冬
/// </summary>
/// <returns></returns>
@@ -494,7 +333,7 @@
return true;
}
- G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 819, this.GameRect.Start.Y + 181));
+ G.Instance.InputControl.MoveToAndClick(new ZTPoint(this.GameRect.Start.X + 568, this.GameRect.Start.Y + 141));
Thread.Sleep(5000);
image = ScreenCapture.Instance.CaptureScreenReturnImage();
if (KaleteCVHelper.GetChoiceKaleteNandu(out nandu, image, this.GameRect))
@@ -542,75 +381,5 @@
return false;
}
- /// <summary>
- /// 出售装备
- /// </summary>
- /// <param name="saleButtonRect"></param>
- private bool SaleEquipment()
- {
- //卖装备并关闭商店
- ZTRectangle closeButtonRect = ZTRectangle.Empty;
- ZTRectangle saleButtonRect = ZTRectangle.Empty;
- if (!DnfCVHelper.HasSaleButton(out saleButtonRect, out closeButtonRect, this.GameRect))
- {
- return false;
- }
-
- //卖装备
- G.Instance.InfoWriter("出售装备");
- G.Instance.InputControl.MoveToAndClick(saleButtonRect.GetCenterPoint());
-
- //得到装备文字位置
- ZTRectangle equipmentTextRect = ZTRectangle.Empty;
- bool result = FuncUtils.TimeoutCancelableWrap(5000, this.CancelToken, () =>
- {
- Int32 status = 0;
- if (DnfCVHelper.GetEquipmentSelectStatus(out equipmentTextRect, out status, this.GameRect))
- {
- if (status == 1)
- {
- return true;
- }
-
- G.Instance.InputControl.MoveToAndClick(equipmentTextRect.GetCenterPoint());
- }
- return false;
- });
-
- if (!result)
- {
- G.Instance.InfoWriter("装备文字未取到");
- return false;
- }
-
-
-
- //开始点,每格步进30
- ZTPoint startPoint = new Utility.Structs.ZTPoint(equipmentTextRect.End.X - 30, equipmentTextRect.End.Y + 9);
- List<Int32> points = DnfCVHelper.GetEquipmentIndexs(startPoint);
-
- for (int i = 0; i < points.Count; i++)
- {
- Int32 index = points[i];
-
- int row = index / 8;
- int col = index % 8;
- int x = col * 30 + 15;
- int y = row * 30 + 15;
-
- //点窗格
- G.Instance.InputControl.MoveToAndClick(new Utility.Structs.ZTPoint(startPoint.X + x, startPoint.Y + y));
- Thread.Sleep(500);
- //点确定
- G.Instance.InputControl.Move(0, 0, true, false, false);
- Thread.Sleep(RandomUtils.MouseClickDuration);
- G.Instance.InputControl.Move(0, 0, false, false, false);
- Thread.Sleep(RandomUtils.MouseClickDuration);
- }
- G.Instance.DebugWriter("equipment:" + ZTImage.Utils.ConcatString(points.ToArray(), ","));
- Thread.Sleep(RandomUtils.KeyPressDuration);
- G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Escape);
- return true;
- }
}
}
--
Gitblit v1.9.3