Пример #1
0
        private TaskResult RunStep6(TaskContext arg)
        {
            Role role = (Role)Role;

            taozhuangList.Clear();
            role.CloseWindow();
            #region 数字识别等级
            //Dm.UseDict(1);
            // int level = Dm.GetOcrNumber(101, 31, 159, 59, "40.30.88-20.30.30");
            //  Dm.UseDict(0);
            int level = role.Level;
            Dm.DebugPrint("人物等级:" + level);
            if (level >= 16 && level < 28) //蓝
            {
                MaxColor = Color.蓝;
            }
            else if (level >= 28 && level < 36) //绿
            {
                MaxColor = Color.绿;
            }
            else if (level >= 36 && level < 53)//黄
            {
                MaxColor = Color.黄;
            }
            else if (level >= 53 && level < 70)//红
            {
                MaxColor = Color.红;
            }
            else if (level >= 70)//紫
            {
                MaxColor = Color.紫;
            }
            else
            {
                Dm.DebugPrint("人物等级无法识别!" + level);
                MaxColor = Color.无法识别;
                role.CloseWindow();
                return(TaskResult.Finished);
            }
            #endregion
            for (int i = 0; i < 6; i++)
            {
                needs[i] = 0;
            }
            int count = 0;
            //获取所需装备件数
            if (MaxColor == Color.紫)
            {
                Delegater.WaitTrue(() => role.OpenMenu("武将"), () => role.IsExistWindowMenu("将领"), () => Dm.Delay(1000));
                Delegater.WaitTrue(() => role.OpenWindowMenu("将领"),
                                   () => Dm.Delay(1000));
                GetSelectedGeneralEquipment(86, 68, 177, 149, 152, 107);
                GetSelectedGeneralEquipment(86, 156, 173, 241, 154, 194);
                GetSelectedGeneralEquipment(84, 244, 176, 326, 153, 286);
                GetSelectedGeneralEquipment(83, 332, 174, 417, 153, 375);

                GetSelectedGeneralEquipment(86, 68, 177, 149, 152, 107);
                GetSelectedGeneralEquipment(86, 156, 173, 241, 154, 194);
                GetSelectedGeneralEquipment(84, 244, 176, 326, 153, 286);
                GetSelectedGeneralEquipment(83, 332, 174, 417, 153, 375);
                Dm.DebugPrint("需要装备:" + needs[0] + " " + needs[1] + " " + needs[2] + " " + needs[3] + " " + needs[4] + " " + needs[5]);
                string temp = "";

                foreach (var item in taozhuangList)
                {
                    temp = temp + item + " ";
                    if (item.Contains("极"))
                    {
                        role.CloseWindow();
                        return(TaskResult.Finished);
                    }
                    if (item.Contains("真"))
                    {
                        count = count + 2;
                        continue;
                    }
                    if (item.Contains("套装"))
                    {
                        count = count + 1;
                    }
                }
                if (count >= 10)
                {
                    role.CloseWindow();
                    return(TaskResult.Finished);
                }
                Debug.WriteLine("已经拥有套装:" + temp);
                role.CloseWindow();
            }
            Delegater.WaitTrue(() => role.OpenMenu("装备"), () => role.IsExistWindowMenu("商店"), () => Dm.Delay(1000));
            Delegater.WaitTrue(() => role.OpenWindowMenu("商店"),
                               () => Dm.Delay(1000));

            Dictionary <int, int[]> dict = new Dictionary <int, int[]>();
            dict.Add(1, new int[] { 115, 134, 217, 174, 104, 272, 212, 312, 165, 369, 0, 0 });
            dict.Add(2, new int[] { 235, 135, 350, 173, 233, 271, 344, 311, 296, 369, 0, 0 });
            dict.Add(3, new int[] { 365, 135, 475, 174, 361, 273, 464, 313, 418, 369, 0, 0 });
            dict.Add(4, new int[] { 488, 133, 604, 176, 486, 276, 581, 311, 551, 374, 0, 0 });
            dict.Add(5, new int[] { 614, 131, 732, 175, 614, 270, 721, 314, 675, 369, 0, 0 });
            dict.Add(6, new int[] { 740, 129, 857, 178, 744, 272, 843, 312, 802, 372, 0, 0 });
            Delegater.WaitTrue(() =>
            {
                Dm.FindStrAndClick(718, 448, 857, 502, "刷新", "86.17.70-5.5.25");
                if (Dm.IsExistPic(283, 192, 668, 411, @"\bmp\金币秒CD.bmp", 0.8, false))
                {
                    Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店取消.bmp");
                    return(true);
                }
                //出现适合装备
                if (Dm.IsExistPic(283, 192, 668, 411, @"\bmp\适合您的装备.bmp", 0.8, false))
                {
                    Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店取消.bmp");
                    List <Goods> list = new List <Goods>();
                    // Dm.StartWatch();
                    for (int i = 1; i <= 6; i++)
                    {
                        var color     = GetColor(dict[i][0], dict[i][1], dict[i][2], dict[i][3]);
                        var starLevel = Dm.GetPicCount(dict[i][4], dict[i][5], dict[i][6], dict[i][7], @"\bmp\星星1.bmp");
                        list.Add(new Goods()
                        {
                            Pos = i, StarLevel = starLevel, Color = color, Buypos = new Tuple <int, int>(dict[i][8], dict[i][9])
                        });
                        //Dm.DebugPrint(string.Format("位置{0}:星级【{1}】,颜色【{2}】", i, starLevel, color));
                    }
                    // Dm.StopWatch();
                    List <Goods> buyList = null;
                    if (list.Max(x => x.Color) != MaxColor)
                    {
                        Dm.DebugPrint("最大颜色错误,应是:" + list.Max(x => x.Color) + ",等级识别的maxcolor:" + MaxColor.ToString());
                        MaxColor = list.Max(x => x.Color);

                        if (MaxColor == Color.紫)
                        {
                            role.CloseWindow();
                            Delegater.WaitTrue(() => role.OpenMenu("武将"), () => role.IsExistWindowMenu("将领"), () => Dm.Delay(1000));
                            Delegater.WaitTrue(() => role.OpenWindowMenu("将领"),
                                               () => Dm.Delay(1000));
                            GetSelectedGeneralEquipment(86, 68, 177, 149, 152, 107);
                            GetSelectedGeneralEquipment(86, 156, 173, 241, 154, 194);
                            GetSelectedGeneralEquipment(84, 244, 176, 326, 153, 286);
                            GetSelectedGeneralEquipment(83, 332, 174, 417, 153, 375);

                            role.CloseWindow();
                            Delegater.WaitTrue(() => role.OpenMenu("装备"), () => role.IsExistWindowMenu("商店"), () => Dm.Delay(1000));
                            Delegater.WaitTrue(() => role.OpenWindowMenu("商店"),
                                               () => Dm.Delay(1000));
                        }
                    }
                    if (MaxColor == Color.白 || MaxColor == Color.蓝 || MaxColor == Color.绿)
                    {
                        buyList = list.Where(x => x.Color == MaxColor).ToList();
                    }
                    else if (MaxColor == Color.黄)//黄
                    {
                        buyList = list.Where(x => x.Color == Color.黄 && x.StarLevel == 1).ToList();
                    }
                    else if (MaxColor == Color.红)//红
                    {
                        buyList = list.Where(x => x.Color == Color.红 && x.StarLevel == 2).ToList();
                    }
                    else if (MaxColor == Color.紫)//紫
                    {
                        buyList = list.Where(x => x.Color == Color.紫 && x.StarLevel == 3).ToList();
                    }
                    else
                    {
                        Dm.DebugPrint("人物等级无法识别!" + level);
                        return(true);
                    }
                    if (buyList != null)
                    {
                        Dm.Delay(500);
                        foreach (var goods in buyList)
                        {
                            try
                            {
                                StoreItem items = role.GameHelper.GetStoreItem();
                                if (items == null)
                                {
                                    Dm.DebugPrint("Error:获取商店数据错误。");
                                    role.CloseWindow();
                                    return(true);
                                }
                                if (int.Parse(items.nowItemNum) >= int.Parse(items.maxItemNum))
                                {
                                    Dm.DebugPrint("Error:仓库数量达到上限。");
                                    role.CloseWindow();
                                    return(true);
                                }
                                if (items.items[goods.Pos - 1].curItemNum == null)
                                {
                                    Dm.DebugPrint("获取的商品跟识别不一致。");

                                    Dm.Delay(500);
                                    continue;
                                }


                                if (MaxColor >= Color.紫)
                                {
                                    if (int.Parse(items.items[goods.Pos - 1].curItemNum) < (10 - count))
                                    {
                                        Dm.MoveToClick(goods.Buypos.Item1, goods.Buypos.Item2);
                                        Dm.Delay(1000);
                                    }
                                }
                                else
                                {
                                    Dm.MoveToClick(goods.Buypos.Item1, goods.Buypos.Item2);
                                    Dm.Delay(1000);
                                }
                            }
                            catch (Exception ex)
                            { Debug.WriteLine(ex.Message); }
                        }
                    }
                    Dm.FindStrAndClick(718, 448, 857, 502, "刷新", "86.17.70-5.5.25");
                    Dm.Delay(1000);
                    if (Dm.IsExistPic(283, 192, 668, 411, @"\bmp\适合您的装备.bmp"))
                    {
                        Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店确定.bmp");
                    }
                }
                //出现稀有物品
                if (Dm.IsExistPic(283, 192, 668, 411, @"\bmp\稀有物品.bmp", 0.8, false))
                {
                    Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店取消.bmp");
                    Dm.Delay(500);
                    Dm.MoveToClick(168, 370);
                }
                return(Dm.IsExistStr(718, 448, 857, 502, "清除", "86.17.70-5.5.25"));
            }, () => Dm.Delay(200));
            // Dm.DebugPrint("需要装备:" + needs[0] + " " + needs[1] + " " + needs[2] + " " + needs[3] + " " + needs[4] + " " + needs[5]);
            role.CloseWindow();
            return(TaskResult.Finished);
        }