| | |
| | | using Emgu.CV.Structure; |
| | | using RichCreator.Dnf; |
| | | using RichCreator.Jobs.StateMachines; |
| | | using RichCreator.Models; |
| | | using RichCreator.Utility; |
| | | using RichCreator.Utility.Captures; |
| | | using RichCreator.Utility.CV; |
| | |
| | | /// NextIndex=-2,出错 |
| | | /// </summary> |
| | | private static readonly HouseInfo[] Houses = new HouseInfo[] { |
| | | 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) |
| | | new HouseInfo (0 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,-1), |
| | | new HouseInfo (1 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (2 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (3 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (4 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (5 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (6 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,1), |
| | | new HouseInfo (7 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,6), |
| | | new HouseInfo (8 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},new int[]{20,21,22,23 },7), |
| | | new HouseInfo (9 ,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (10,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (11,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (12,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,13), |
| | | new HouseInfo (13,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,8), |
| | | new HouseInfo (14,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (15,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (16,MapType.Kalete,true ,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,17), |
| | | new HouseInfo (17,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,12), |
| | | new HouseInfo (18,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0), |
| | | new HouseInfo (19,MapType.Kalete,false,new HIDCode[] { HIDCode.A,HIDCode.D,HIDCode.X},null,0) |
| | | }; |
| | | |
| | | private Int32 runningStep = RunningStep.None; |
| | | private DateTime startRoleTime = DateTime.Now; |
| | | |
| | | /// <summary> |
| | | /// 开始 |
| | |
| | | public override ZTResult Start(Int32 runningStep) |
| | | { |
| | | this.runningStep = runningStep; |
| | | |
| | | |
| | | WindowUtils.SetDnfToTop(); |
| | | |
| | | |
| | | |
| | | WindowUtils.SetDnfToTop(); |
| | | |
| | | if (runningStep < RunningStep.War) |
| | | { |
| | | if (!MoveToSunan()) |
| | |
| | | { |
| | | return ZTResult.Cancel; |
| | | } |
| | | |
| | | |
| | | DateTime startHouse = DateTime.Now; |
| | | ZTResult killResult = KillMonster(); |
| | | DateTime startMapTime = DateTime.Now; |
| | | ZTResult killResult = KillOfMap(); |
| | | StateProvider.Instance.RoleTimePassed = (Int32)(DateTime.Now - startRoleTime).TotalSeconds; |
| | | StateProvider.Instance.PreMapTime= (Int32)(DateTime.Now - startMapTime).TotalSeconds; |
| | | if (killResult == ZTResult.Success) |
| | | { |
| | | //捡东西 |
| | |
| | | G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.X); |
| | | Thread.Sleep(RandomUtils.KeyPressDuration * 3); |
| | | } |
| | | |
| | | |
| | | |
| | | //卖装备并关闭商店 |
| | | SaleEquipment(); |
| | | |
| | | Int32 houseTotalSecond = (Int32)(DateTime.Now - startHouse).TotalSeconds; |
| | | G.Instance.InfoWriter("单次刷图成功,用时:" + (houseTotalSecond / 60) + "分" + (houseTotalSecond % 60) + "秒"); |
| | | |
| | | G.Instance.InfoWriter("单次刷图完成"); |
| | | |
| | | //查询疲劳值 |
| | | Int32 pilaozhi = DnfCVHelper.GetPiLaoZhi(this.GameRect); |
| | | |
| | | G.Instance.InfoWriter("疲劳值:" + pilaozhi); |
| | | if (pilaozhi <= 0) |
| | | { |
| | |
| | | /// 刷房间 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private ZTResult KillMonster() |
| | | private ZTResult KillOfMap() |
| | | { |
| | | bool ret = false; |
| | | |
| | | DateTime startMapTime = DateTime.Now; |
| | | if (!IsEntryMap()) |
| | | { |
| | | G.Instance.InfoWriter("未找到进入凛冬"); |
| | | G.Instance.InfoWriter("未找到进入卡勒特"); |
| | | return ZTResult.Failed; |
| | | } |
| | | G.Instance.InfoWriter("进入卡勒特"); |
| | | |
| | | Int32 preHouseIndex = -1; |
| | | Int32 houseIndex = -1; |
| | | |
| | | |
| | | G.Instance.InfoWriter("进入卡勒特"); |
| | | Int32 houseIndex = -1; |
| | | |
| | | //技能加成 |
| | | G.Instance.InputControl.PressKey(RandomUtils.KeyPressDuration, HIDCode.Space); |
| | | |
| | | |
| | | //循环刷房间 |
| | | while (true) |
| | | { |
| | | preHouseIndex = houseIndex; |
| | | DateTime startHouseTime = DateTime.Now; |
| | | Int32 fromHouseIndex = houseIndex; |
| | | //看房间号 |
| | | ret = this.MiniMap.GetCurrentHouseIndexWaitTimeout(out houseIndex, null, this.CancelToken, 3 * 1000); |
| | | if (!ret) |
| | |
| | | return ZTResult.Failed; |
| | | } |
| | | |
| | | G.Instance.InfoWriter("进入房间->" + houseIndex.ToString()); |
| | | StateProvider.Instance.HouseIndex = houseIndex; |
| | | G.Instance.InfoWriter($"进入房间({houseIndex})"); |
| | | |
| | | |
| | | HouseInfo houseInfo = Houses[houseIndex]; |
| | | this.Role.SetHouse(houseInfo); |
| | | DateTime startTime = DateTime.Now; |
| | | |
| | | |
| | | 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) + "秒"); |
| | | ZTResult smresult = kmsm.Work(2 * 60 * 1000,fromHouseIndex,this.runningStep); |
| | | G.Instance.InfoWriter($"房间刷完({houseIndex})"); |
| | | StateProvider.Instance.RoleTimePassed = (Int32)(DateTime.Now - startRoleTime).TotalSeconds; |
| | | StateProvider.Instance.MapTimePassed= (Int32)(DateTime.Now - startMapTime).TotalSeconds; |
| | | StateProvider.Instance.PreHouseTime = (Int32)(DateTime.Now - startHouseTime).TotalSeconds; |
| | | |
| | | runningStep = RunningStep.None; |
| | | if (smresult == ZTResult.Success) |