コード例 #1
0
        private void TaskStart()
        {
            TaskRunState = TaskRunState.Started;
            DmPlugin dm = Window.Dm;

            if (Window.Width != 1152 || Window.Height != 864)
            {
                throw new Exception("请将游戏分辨率设为1152*864!");
            }
            bool flag = Delegater.WaitTrue(() => Window.BindFullBackground(),
                                           // dm.BindWindow(Window.Hwnd,DmBindDisplay.dx,DmBindMouse.windows,DmBindKeypad.normal,0)==1?true:false,
                                           () => dm.Delay(1000), 10);

            dm.Delay(500);
            if (!flag)
            {
                throw new Exception(string.Format("窗口“{0}”绑定失败.", Window.Title));
            }
            else
            {
                Logger.Debug("窗口绑定成功!");
                Window.IsBind = true;
            }
            TaskRunState = TaskRunState.Running;
            DoEventHandler(OnStateChanged, _taskEventArg);
            DoEventHandler(OnStarted, _taskEventArg);
            Logger.Debug("任务“{0}”启动成功.".FormatWith(_task.Name));
            TaskResult result = null;

            try
            {
                result = _task.Run();
            }
            catch (TaskRestartException ex)
            {
                Logger.Error("任务执行错误,正在重新启动:" + ex.Message);
                TaskStop();
                TaskStart();
            }
            catch (TaskInterruptException ex)
            {
                TaskStop();
                Window.FlashWindow();
                _workThread = null;
                SoftContext.MainWindow.ShowMessageAsync("任务中断", ex.Message);
            }
            if (result == null)
            {
                return;
            }

            if (result.ResultType == TaskResultType.Success)
            {
                SoftContext.MainWindow.ShowMessageAsync("任务完成", "任务“{0}”执行完毕:{1}".FormatWith(_task.Name, result.Message));
            }
            if (result.ResultType == TaskResultType.Finished)
            {
                SoftContext.MainWindow.ShowMessageAsync("任务完成", "任务“{0}”执行结束,{1}".FormatWith(_task.Name, result.Message));
            }
        }
コード例 #2
0
        private TaskResult RunStep6(TaskContext arg)
        {
            Role role = (Role)Role;

            if (Dm.GetColorNum(523, 379, 602, 450, "dc3146-303030", 0.9) > 50)
            {
                Delegater.WaitTrue(() => Dm.MoveToClick(30, 32),
                                   () => role.IsExistWindowMenu("设置"),
                                   () => Dm.Delay(1000));
                Delegater.WaitTrue(() => role.OpenWindowMenu("设置"),
                                   () => Dm.IsExistPic(507, 99, 583, 163, @"\bmp\礼包.bmp"),
                                   () => Dm.Delay(1000));
                Delegater.WaitTrue(() =>
                {
                    Dm.FindPicAndClick(507, 99, 583, 163, @"\bmp\礼包.bmp");
                    Dm.Delay(1000);
                    if (Dm.FindPicAndClick(678, 241, 811, 344, @"\bmp\宝箱.bmp"))
                    {
                        Dm.Delay(2000);
                    }
                    else
                    {
                        return(true);
                    }
                    return(false);
                }, () => Dm.Delay(1000), 10);
            }

            role.CloseWindow();
            return(TaskResult.Success);
        }
コード例 #3
0
        private TaskResult RunStep5(TaskContext arg)
        {
            Role role = (Role)Role;

            Delegater.WaitTrue(() => role.OpenTeshushijian(),
                               () => Dm.IsExistPic(370, 81, 595, 139, @"\bmp\特殊事件3.bmp"),
                               () => Dm.Delay(1000));
            if (Dm.FindPicAndClick(114, 142, 827, 489, @"\bmp\恭贺奖励.bmp", 30, 0))
            {
                Dm.Delay(1000);
                int count = 20;
                while (true)
                {
                    while (Dm.IsExistPic(339, 76, 577, 146, @"\bmp\恭贺.bmp") && count != 0)
                    {
                        Dm.MoveToClick(478, 477);
                        Dm.Delay(300);
                        count--;
                    }
                    Dm.Delay(1000);
                    if (!Dm.IsExistPic(339, 76, 577, 146, @"\bmp\恭贺.bmp"))
                    {
                        break;
                    }
                    if (count == 0)
                    {
                        break;
                    }
                }
            }
            role.CloseWindow();
            return(TaskResult.Success);
        }
コード例 #4
0
        private TaskResult RunStep4(TaskContext context)
        {
            Role role = (Role)context.Role;

            Delegater.WaitTrue(() => Dm.FindPicAndClick(856, 448, 958, 536, @"\bmp\菜单未打开.bmp"),
                               () => Dm.IsExistPic(856, 448, 958, 536, @"\bmp\菜单打开.bmp"), () => Dm.Delay(1000));
            Delegater.WaitTrue(() => role.OpenMenu("装备"),
                               () => role.OpenWindowMenu("商店"), () => Dm.Delay(1000));
            Delegater.WaitTrue(() =>
            {
                Dm.FindStrAndClick(718, 448, 857, 502, "刷新", "86.17.70-5.5.25");
                if (Dm.IsExistPic(283, 192, 668, 411, @"\bmp\金币秒CD.bmp"))
                {
                    Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店取消.bmp");
                    return(true);
                }
                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"))
                {
                    Dm.FindPicAndClick(283, 192, 668, 411, @"\bmp\商店确定.bmp");
                }
                return(Dm.IsExistStr(718, 448, 857, 502, "清除", "86.17.70-5.5.25"));
            }, () => Dm.Delay(500));
            role.CloseWindow();
            return(TaskResult.Finished);
        }
コード例 #5
0
        public bool CloseWindow()
        {
            OutSubMessage("开始关闭窗口...");
            int intX, intY;

            return(Delegater.WaitTrue(() =>
            {
                _dm.FindMultiColor(539, 0, 916, 298, "f4c792", "-11|4|be1a1c,-6|-7|fbd7c5,6|8|d9af79,-7|8|d6ab77,0|14|aa0305,-14|1|aa0305,13|-1|ac0507,1|-12|bb1719", 0.9, 0, out intX, out intY);
                if (intX > 0 && intY > 0)
                {
                    _dm.MoveToClick(intX, intY);
                    _dm.Delay(1000);
                    _dm.FindMultiColor(539, 0, 916, 298, "f4c792", "-11|4|be1a1c,-6|-7|fbd7c5,6|8|d9af79,-7|8|d6ab77,0|14|aa0305,-14|1|aa0305,13|-1|ac0507,1|-12|bb1719", 0.9, 0, out intX, out intY);
                    if (intX > 0 && intY > 0)
                    {
                        OutSubMessage("关闭窗口失败!");
                        return false;
                    }
                    OutSubMessage("关闭窗口成功!");
                    return true;
                }
                OutSubMessage("关闭窗口成功!");
                return true;
            }, () => _dm.Delay(1000), 5));
        }
コード例 #6
0
        public bool GoToFubenArea(string area)
        {
            List <string> areas = new List <string>()
            {
                "虎牢关", "下邳", "官渡", "西蜀"
            };
            string currentArea = "";
            int    intX, intY, i = 0;

            foreach (var a in areas)
            {
                _dm.FindPic(320, 453, 640, 534, @"\bmp\" + a + ".bmp", "303030", 0.7, 0, out intX, out intY);
                if (intX > 0 && intY > 0)
                {
                    _dm.DebugPrint("当前位于副本区域[" + a + "]");
                    currentArea = a;
                    break;
                }
            }
            if (currentArea == area)
            {
                _dm.DebugPrint("已经在副本区域[" + area + "]");
                return(true);
            }
            _dm.DebugPrint("正在移动到目标区域...");
            return(Delegater.WaitTrue(() =>
            {
                _dm.FindPic(320, 453, 640, 534, @"\bmp\" + area + ".bmp", "303030", 0.7, 0, out intX, out intY);
                if (intX > 0 && intY > 0)
                {
                    _dm.DebugPrint("已经在副本区域[" + area + "]");
                    return true;
                }
                else
                {
                    int index = areas.IndexOf(area);
                    foreach (var a in areas)
                    {
                        _dm.FindPic(320, 453, 640, 534, @"\bmp\" + a + ".bmp", "303030", 0.7, 0, out intX, out intY);
                        if (intX > 0 && intY > 0)
                        {
                            _dm.DebugPrint("当前位于副本区域[" + a + "]");
                            currentArea = a;
                            break;
                        }
                    }
                    int currentIndex = areas.IndexOf(currentArea);
                    if (index > currentIndex)
                    {
                        _dm.Swipe(670, 427, 93, 415);
                    }
                    if (index < currentIndex)
                    {
                        _dm.Swipe(93, 415, 670, 427);
                    }
                }
                return false;
            }, () => _dm.Delay(1000)));
        }
コード例 #7
0
        public bool OpenActivityBoard(string activity)
        {
            if (_dm.IsExistStr(75, 2, 909, 70, activity, "45.34.60-5.5.20|60.18.75-5.5.25"))
            {
                OutSubMessage("活动面板[" + activity + "]已经打开!");
                return(Delegater.WaitTrue(() =>
                {
                    _dm.FindStrAndClick(75, 2, 909, 70, activity, "45.34.60-5.5.20");
                    _dm.Delay(500);
                    if (_dm.IsExistStr(75, 2, 909, 70, activity, "60.18.75-5.5.25"))
                    {
                        return true;
                    }
                    return false;
                }, () => _dm.Delay(500), 10));
            }
            else
            {
                CloseWindow();
            }

            string points = _dm.FindPicEx(286, 37, 875, 284, @"\bmp\活动2.bmp", "202020", 0.8, 0);

            Debug.WriteLine(points);

            if (points == "")
            {
                CloseWindow();
                return(false);
            }
            string[] t = points.Split('|');

            foreach (var item in t)
            {
                string[] p = item.Split(',');
                _dm.MoveToClick(int.Parse(p[1]), int.Parse(p[2]));
                _dm.Delay(1000);
                if (_dm.IsExistStr(75, 2, 909, 70, activity, "45.34.60-5.5.20|60.18.75-5.5.25"))
                {
                    return(Delegater.WaitTrue(() =>
                    {
                        _dm.FindStrAndClick(75, 2, 909, 70, activity, "45.34.60-5.5.20");
                        _dm.Delay(500);
                        if (_dm.IsExistStr(75, 2, 909, 70, activity, "60.18.75-5.5.25"))
                        {
                            return true;
                        }
                        return false;
                    }, () => _dm.Delay(500), 10));
                }
                else
                {
                    CloseWindow();
                }
            }
            CloseWindow();
            return(false);
        }
コード例 #8
0
        /// <summary>
        /// Un-binds all behaviors from a group.
        /// </summary>
        /// <param name="delegater"></param>
        /// <param name="group"></param>
        public static void UnbindAll(this Delegater delegater, string group)
        {
            var boundBehaviors = delegater.Repository.GetAllBoundBehaviors(group);

            foreach (Behavior behavior in boundBehaviors)
            {
                delegater.Unbind(group, behavior);
            }
        }
コード例 #9
0
        int[] needs = new int[] { 0, 0, 0, 0, 0, 0 };//枪甲符马袍旗

        private void GetEquipmentProperty(int x, int y, int i)
        {
            Dm.Delay(1000);
            Dm.MoveToClick(x, y);
            Dm.Delay(1000);
            int count = Dm.GetColorNum(205, 448, 264, 499, "201a19-202020", 0.9);

            if (Dm.GetColorNum(584, 76, 633, 114, "edd1a9 -202020|a49074-202020", 0.9) > 100)
            {
                if (count > 2000)
                {
                    needs[i] += 1;
                    return;
                }
                else
                {
                    Dm.MoveToClick(234, 469);
                    Dm.Delay(1000);
                    Dm.MoveToClick(x, y);
                    Dm.Delay(1000);
                }
            }

            if (IsOptimalColor() == false)
            {
                if (count > 2000)
                {
                    needs[i] += 1;
                }
                else
                {
                    Dm.MoveToClick(234, 469);
                    Dm.Delay(1000);
                    if (IsOptimalColor() == false)
                    {
                        needs[i] += 1;
                    }
                    else
                    {
                        Delegater.WaitTrue(() =>
                        {
                            if (Dm.FindPicAndClick(658, 437, 782, 491, @"\bmp\穿上装备.bmp", 0, 0, 0.7))
                            {
                                Dm.Delay(1000);
                                if (Dm.IsExistPic(537, 194, 669, 277, @"\bmp\兵力损失.bmp"))
                                {
                                    Dm.MoveToClick(415, 359);
                                }
                                return(true);
                            }
                            return(false);
                        }, () => Dm.Delay(1000));
                    }
                }
            }
        }
コード例 #10
0
ファイル: AutoLevel.cs プロジェクト: ko9ma7/Gcld
 public bool ClickXiaoQian()
 {
     return(Delegater.WaitTrue(() => {
         if (!Dm.FindPicAndClick(56, 240, 276, 469, @"\bmp\小倩.bmp"))
         {
             return true;
         }
         Dm.Delay(1000);
         return false;
     }, () => Dm.Delay(1000)));
 }
コード例 #11
0
        /// <summary>
        /// Re-names a group, and binds all bound behaviors to the new group.
        /// </summary>
        /// <param name="delegater">The BehaviorDelegater that maintains the behaviors.</param>
        /// <param name="oldGroup">The name of the group to re-name.</param>
        /// <param name="newGroup">The new name of the group.</param>
        public static void Rename(this Delegater delegater, string oldGroup, string newGroup)
        {
            var boundBehaviors = delegater.Repository.Behaviors.Where
                                 (
                behavior => behavior.Group == oldGroup
                                 );

            for (int i = boundBehaviors.Count() - 1; i >= 0; i--)
            {
                delegater.Bind(newGroup, boundBehaviors.ElementAt(i));
            }
        }
コード例 #12
0
        private TaskResult RunStep4(TaskContext arg)
        {
            Role role = (Role)Role;

            role.OpenMenu("资源");
            Delegater.WaitTrue(() => role.OpenWindowMenu("祭祀"),
                               () => role.IsExistWindowMenu("祭祀"),
                               () => Dm.Delay(1000));

            Dm.FindPicAndClick(699, 63, 868, 118, @"\bmp\祭祀十次.bmp");
            Dm.Delay(1000);
            Delegater.WaitTrue(() =>
            {
                if (Dm.GetColorNum(738, 500, 761, 522, "79a03b-303030", 1.0) > 20)
                {
                    Dm.MoveToClick(783, 512);
                    Dm.Delay(1000);
                    return(false);
                }
                return(true);
            }, () => Dm.Delay(50), 10);
            Dm.UseDict(1);

            Delegater.WaitTrue(() =>
            {
                if (Dm.IsExistPic(197, 59, 288, 102, @"\bmp\祭祀0.bmp", 0.7))
                {
                    if (Dm.GetColorNum(204, 61, 278, 96, "C59E00-3A2E00", 0.9) < 75)
                    {
                        return(true);
                    }
                }
                bool result = Dm.IsChangeColorNumEx(204, 61, 278, 96, "C59E00-3A2E00", () =>
                {
                    Dm.MoveToClick(322, 451); //祭祀木材
                    //Dm.MoveToClick(162, 454);//祭祀银子
                    Dm.Delay(500);
                });
                if (!result)
                {
                    Dm.DebugPrint("操作完颜色结果不变,可能已经完成!~");
                    if (Dm.FindPicAndClick(475, 315, 628, 415, @"\bmp\取消.bmp"))
                    {
                        Dm.Delay(1000);
                    }
                    return(true);
                }
                return(false);
            }, () => Dm.Delay(50), 40);
            Dm.UseDict(0);
            role.CloseWindow();
            return(TaskResult.Success);
        }
コード例 #13
0
        private TaskResult RunStep8(TaskContext arg)
        {
            Role role = (Role)Role;

            Dm.UseDict(0);
            Delegater.WaitTrue(() => role.OpenMenu("武将"), () => role.IsExistWindowMenu("宴会"), () => Dm.Delay(1000));
            Delegater.WaitTrue(() => role.OpenWindowMenu("宴会"),
                               () => Dm.Delay(1000));


            return(TaskResult.Success);
        }
コード例 #14
0
 public bool OpenWindowMenu(string menu)
 {
     //未选中:45.34.60-5.5.20
     //选中:60.18.75-5.5.25
     return(Delegater.WaitTrue(() =>
     {
         _dm.FindStrAndClick(75, 2, 909, 70, menu, "45.34.60-5.5.20");
         _dm.Delay(500);
         if (_dm.IsExistStr(75, 2, 909, 70, menu, "60.18.75-5.5.25"))
         {
             return true;
         }
         return false;
     }));
 }
コード例 #15
0
 public bool OpenMenu()
 {
     return(Delegater.WaitTrue(() =>
     {
         if (_dm.IsExistPic(862, 454, 961, 537, @"\bmp\菜单打开.bmp", 0.8, false))
         {
             return true;
         }
         if (_dm.IsExistPic(862, 454, 961, 537, @"\bmp\菜单未打开.bmp", 0.8, false))
         {
             _dm.MoveToClick(918, 499);
         }
         return false;
     }, () => _dm.Delay(1000), 10));
 }
コード例 #16
0
 private void ClosePopup(int x, int y)
 {
     Delegater.WaitTrue(() =>
     {
         if (Dm.IsExistPic(379, 213, 475, 255, @"\bmp\隐藏技能.bmp", 0.8, false))
         {
             Dm.MoveToClick(x, y); //点确定取消
                                   // Dm.DebugPrint("点击坐标:" + x + " " + y);
             Dm.Delay(3000);
             if (!Dm.IsExistPic(379, 213, 475, 255, @"\bmp\隐藏技能.bmp", 0.8, false))
             {
                 return(true);
             }
         }
         return(false);
     });
     Dm.Delay(1000);
 }
コード例 #17
0
        public bool GoToMap(string map)
        {
            switch (map)
            {
            case "世界":
                if (_dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp"))
                {
                    OutSubMessage("已经在世界界面!");
                    break;
                }
                Delegater.WaitTrue(() => _dm.FindPicAndClick(818, 281, 953, 447, @"\bmp\世界.bmp", 0, 0, 0.7),
                                   () => _dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp"),
                                   () => _dm.Delay(1000));
                break;

            case "副本":
                if (_dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\世界.bmp"))
                {
                    OutSubMessage("已经在副本界面!");
                    break;
                }
                Delegater.WaitTrue(() => _dm.FindPicAndClick(818, 281, 953, 447, @"\bmp\副本.bmp", 0, 0, 0.7),
                                   () => _dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\世界.bmp"),
                                   () => _dm.Delay(1000));
                break;

            case "主城":
                if (_dm.IsExistPic(818, 281, 953, 447, @"\bmp\世界.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp"))
                {
                    OutSubMessage("已经在主城界面!");
                    break;
                }
                Delegater.WaitTrue(() => _dm.FindPicAndClick(818, 281, 953, 447, @"\bmp\主城.bmp", 0, 0, 0.7),
                                   () => _dm.IsExistPic(818, 281, 953, 447, @"\bmp\世界.bmp") && _dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp"),
                                   () => _dm.Delay(1000));
                break;

            default:
                OutSubMessage("输入地图错误,无法打开");
                break;
            }
            _dm.Delay(2000);
            return(true);
        }
コード例 #18
0
        private TaskResult RunStep1(TaskContext context)
        {
            Role     role = (Role)context.Role;
            DmPlugin dm   = role.Window.Dm;

            role.GoToMap("世界");
            role.CloseWindow();
            dm.Delay(1000);
            if (Dm.IsExistPic(862, 454, 961, 537, @"\bmp\菜单打开.bmp"))
            {
                Delegater.WaitTrue(() => Dm.FindPicAndClick(862, 454, 961, 537, @"\bmp\菜单打开.bmp"),
                                   () => Dm.IsExistPic(862, 454, 961, 537, @"\bmp\菜单未打开.bmp"),
                                   () => Dm.Delay(1000), 2000);
            }
            role.OpenMap();

            int intX, intY;

            while (true)
            {
                dm.FindStr(75, 246, 227, 296, "军资奖励", "44.34.64-10.10.25", 0.9, out intX, out intY);
                if (intX > 0 && intY > 0)
                {
                    role.OutSubMessage("领取军资...");
                    dm.MoveToClick(156, 420);
                    dm.Delay(50);
                    if (dm.GetColorNum(157, 242, 227, 293, "f60000-101010", 0.9) > 5)
                    {
                        role.OutSubMessage("军资已经领取完成,正在冷却!");
                        break;
                    }
                    dm.Delay(300);
                }
                else
                {
                    role.OutSubMessage("找不到军资奖励");
                    break;
                }
            }

            role.CloseMap();

            return(TaskResult.Success);
        }
コード例 #19
0
        private TaskResult RunStep2(TaskContext context)
        {
            Role     role = (Role)context.Role;
            DmPlugin dm   = role.Window.Dm;

            if (dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") &&
                dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") &&
                dm.IsExistPic(818, 281, 953, 447, @"\bmp\世界.bmp"))
            {
                role.OutSubMessage("在建筑中...");
            }
            else
            {
                role.GoToMap("主城");
                //dm.MoveToClick(317, 460);//点击兵营
                dm.MoveToClick(419, 245);//点击银币
                //dm.MoveToClick(200, 200);//点击木材
                dm.Delay(2000);
            }
            string a, b;

            dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
            dm.Delay(1000);
            Delegater.WaitTrue(() =>
            {
                a = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                if (!dm.FindPicAndClick(102, 48, 857, 468, @"\bmp\加速锤.bmp", 0, 0, 0.7))
                {
                    dm.DebugPrint("不存在加速锤!等待5s");
                    dm.MoveToClick(152, 429);
                    dm.Delay(5000);
                }
                dm.Delay(500);
                b = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                if (a != b)
                {
                    dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
                }
                return(false);
            });
            return(TaskResult.Finished);
        }
コード例 #20
0
        public bool GoToMap30(string map)
        {
            switch (map)
            {
            case "副本":
                if (_dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && !_dm.IsExistPic(811, 302, 956, 450, @"\bmp\副本2.bmp", 0.9))
                {
                    if (OpenMenu())
                    {
                        _dm.Delay(1000);
                        if (!_dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp", 0.9))
                        {
                            OutSubMessage("已经在副本界面!");
                            break;
                        }
                    }
                }
                Delegater.WaitTrue(() => _dm.FindPicAndClick(811, 302, 956, 450, @"\bmp\副本2.bmp", 0, 0, 0.9),
                                   () => _dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp") && !_dm.IsExistPic(811, 302, 956, 450, @"\bmp\副本2.bmp", 0.9),
                                   () => _dm.Delay(1000));
                break;

            case "主城":
                if (_dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") && !_dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"))
                {
                    OutSubMessage("已经在主城界面!");
                    break;
                }
                Delegater.WaitTrue(() => _dm.FindPicAndClick(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                   () => _dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本2.bmp") && !_dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                   () => _dm.Delay(1000));
                break;

            default:
                OutSubMessage("输入地图错误,无法打开");
                break;
            }
            _dm.Delay(2000);
            return(true);
        }
コード例 #21
0
        private TaskResult RunStep1(TaskContext context)
        {
            IRole    role = context.Role;
            DmPlugin dm   = role.Window.Dm;
            int      hwnd = role.Window.Hwnd;

            Delegater.WaitTrue(() =>
            {
                return(false);
            }, () =>
            {
                bool ret = role.FindControlTextAndClick(569, 685, "重新开启", true);
                if (ret == true)
                {
                    Delegater.WaitTrue(() =>
                    {
                        return(role.FindControlTextAndClick(566, 496, "确认", true) || role.FindControlTextAndClick(572, 649, "确认", true));
                    }, () => dm.Delay(500));
                }
                dm.Delay(1000);
            });
            return(TaskResult.Finished);
        }
コード例 #22
0
        private Tuple <bool, EquipmentAttrType> IsSameEequipmentType()
        {
            EquipmentAttrType type1 = EquipmentAttrType.未知类型, type2 = EquipmentAttrType.未知类型, type3 = EquipmentAttrType.未知类型;

            Delegater.WaitTrue(() =>
            {
                type1 = GetEquipmentType(566, 318, 637, 393);
                type2 = GetEquipmentType(634, 315, 703, 400);
                type3 = GetEquipmentType(701, 315, 776, 408);
                if (type1 != EquipmentAttrType.未知类型 && type2 != EquipmentAttrType.未知类型 && type3 != EquipmentAttrType.未知类型)
                {
                    Dm.DebugPrint("属性:" + type1.ToString() + " " + type2.ToString() + " " + type3.ToString());
                    return(true);
                }
                return(false);
            });
            if (type1 == type2 && type2 == type3)
            {
                Dm.DebugPrint("所有类型相同!" + type1.ToString());
                return(new Tuple <bool, EquipmentAttrType>(true, type1));
            }
            return(new Tuple <bool, EquipmentAttrType>(false, type1));
        }
コード例 #23
0
        static void Main()
        {
            Delegater del = new Delegater(SevenSeconds);

            del(DateTime.Now);
        }
コード例 #24
0
        private TaskResult RunStep7(TaskContext arg)
        {
            Role role = (Role)Role;

            Dm.UseDict(0);
            Delegater.WaitTrue(() => role.OpenMenu("资源"), () => role.IsExistWindowMenu("集市"), () => Dm.Delay(1000));
            Delegater.WaitTrue(() => role.OpenWindowMenu("集市"),
                               () => Dm.Delay(1000));

            Dm.UseDict(1);
            Dm.Delay(1000);
            Delegater.WaitTrue(() =>
            {
                bool result = Dm.IsChangeColorNumEx(170, 72, 237, 107, "49A031-152F0F", () =>
                {
                    Dm.StartWatch();
                    var rt1 = GetResourceType(160, 129, 346, 377);
                    var rc1 = GetColor(176, 119, 328, 178);
                    Dm.DebugPrint("第一个资源:" + rt1.ToString() + ",颜色:" + rc1.ToString());

                    var rt2 = GetResourceType(395, 132, 573, 373);
                    var rc2 = GetColor(409, 129, 566, 175);
                    Dm.DebugPrint("第二个资源:" + rt2.ToString() + ",颜色:" + rc2.ToString());

                    var rt3 = GetResourceType(630, 131, 810, 377);
                    var rc3 = GetColor(633, 124, 804, 180);
                    Dm.DebugPrint("第三个资源:" + rt3.ToString() + ",颜色:" + rc3.ToString());
                    Dm.StopWatch();
                    Dm.StartWatch();
                    List <Resource> list = new List <Resource>()
                    {
                        new Resource()
                        {
                            Pos = 1, Type = rt1, Color = rc1, Buypos = new Tuple <int, int>(253, 353)
                        },
                        new Resource()
                        {
                            Pos = 2, Type = rt2, Color = rc2, Buypos = new Tuple <int, int>(495, 353)
                        },
                        new Resource()
                        {
                            Pos = 3, Type = rt3, Color = rc3, Buypos = new Tuple <int, int>(727, 353)
                        }
                    };
                    var rlist = list.OrderByDescending(q => q.Type).ThenByDescending(x => x.Color).ToList();
                    Dm.DebugPrint(string.Format("购买位置:{0},资源类型:{1},资源颜色:{2}", rlist.First().Pos, rlist.First().Type.ToString(), rlist.First().Color.ToString()));
                    Dm.MoveToClick(rlist.First().Buypos.Item1, rlist.First().Buypos.Item2);
                    Dm.StopWatch();
                    Dm.Delay(1000);
                });
                if (!result)
                {
                    Dm.DebugPrint("操作完颜色结果不变,可能已经完成!~");
                    if (Dm.IsExistPic(171, 71, 247, 105, @"\bmp\集市0.bmp"))
                    {
                        return(true);
                    }
                }
                if (Dm.FindPicAndClick(475, 315, 628, 415, @"\bmp\取消.bmp"))
                {
                    Dm.Delay(1000);
                }
                return(false);
            }, () => Dm.Delay(50), 40);
            Dm.UseDict(0);
            role.CloseWindow();
            return(TaskResult.Success);
        }
コード例 #25
0
        void InitializeBehaviors()
        {
            Delegater delegater = repo.Delegater;

            /*
             * FPS
             */
            fps = new FrameRateCounter();
            delegater.Bind(Groups.FrameRate, fps);

            /*
             * Camera
             */
            DefaultCamera camera = new DefaultCamera(GraphicsDevice)
            {
                ClearColor = Color.CornflowerBlue
            };

            delegater.Bind(Groups.Camera, camera);

            /*
             * Background
             */
            // bug: spritebatch.Begin(AlphaBlend) makes sure that this quad gets drawn in the background
            // which means that some important renderstates are getting set, but not by me
            FullScreenQuad background = new FullScreenQuad()
            {
                Top       = new Color(25, 31, 32),
                Bottom    = new Color(71, 81, 90),
                DrawOrder = 0
            };

            delegater.Bind(Groups.Background, background);

            /*
             * Statue
             */
            StatueInformation statueInformation = new StatueInformation()
            {
                StatueSettings = StatueSettings[0]
            };

            delegater.Bind(Groups.Statue, statueInformation);

            Statue statue = new Statue()
            {
                DrawOrder = 2 // to fix some troubles with blobs getting viewed through the statue
            };

            delegater.Bind(Groups.Statue, statue);

            StatueMouseController statueController = new StatueMouseController();

            delegater.Bind(Groups.Statue, statueController);

            /*
             * Game Information
             */
            GameInformation gameInfo = new GameInformation()
            {
                GameMode = GameMode.Regular
            };

            delegater.Bind(Groups.GameInformation, gameInfo);

            GameInformationDisplay gameInfoDisplay = new GameInformationDisplay()
            {
                DrawOrder = 3
            };

            delegater.Bind(Groups.GameInformation, gameInfoDisplay);

            /*
             * Blob Production
             */
            DirtProducer blobProducer = new DirtProducer();

            delegater.Bind(Groups.DirtProduction, blobProducer);

            /*
             * Game State Control
             */
            GameStateController stateController = new GameStateController();

            delegater.Bind(Groups.GameStateControl, stateController);

            /*
             * Menu stuff
             */
            StatueInformation menuStatueInformation = new StatueInformation()
            {
                StatueSettings = StatueSettings[0]
            };

            delegater.Bind(Groups.MenuStatuePreview, menuStatueInformation);

            Statue menuStatue = new Statue()
            {
                DrawOrder = 2
            };

            delegater.Bind(Groups.MenuStatuePreview, menuStatue);

            StatuePreviewSpinner statueSpinner = new StatuePreviewSpinner();

            delegater.Bind(Groups.MenuStatuePreview, statueSpinner);

            MenuItemsDisplay menuItems = new MenuItemsDisplay()
            {
                DrawOrder = 3
            };

            delegater.Bind(Groups.MenuItemsDisplay, menuItems);

            /*
             * Intro
             */
            Intro intro = new Intro();

            delegater.Bind(Groups.Intro, intro);



            // omg, lousy hack.. these two lines makes sure we get to see the damn preview model in menu screen :P
            // im too tired to find the reason.. the code is such a mess already
            stateController.GameState = GameState.Playing;
            stateController.GameState = GameState.Menu;
            stateController.GameState = GameState.Intro;
        }
コード例 #26
0
ファイル: AutoLevel.cs プロジェクト: ko9ma7/Gcld
        private TaskResult RunStep1(TaskContext context)
        {
            Role     role = (Role)context.Role;
            DmPlugin dm   = role.Window.Dm;

            //int level = role.Level;
            while (true)
            {
                string taskName = dm.Ocr(0, 122, 114, 179, "60.19.85-5.5.40", 0.8);
                dm.DebugPrint("主线任务识别:" + taskName);
                for (int i = 0; i < 10; i++)
                {
                    dm.MoveToClick(21, 182);
                    dm.Delay(200);
                }
                switch (taskName)
                {
                case "欢迎":
                    ClickXiaoQian();
                    break;

                case "民居1":
                    dm.MoveToClick(481, 114);
                    dm.FindPicAndClick(389, 58, 687, 224, @"\bmp\升级.bmp");
                    dm.Delay(1000);
                    dm.FindPicAndClick(389, 58, 687, 224, @"\bmp\加速锤.bmp");
                    dm.Delay(1000);
                    break;

                case "民居2":
                    dm.MoveToClick(908, 119);
                    break;

                case "大名":
                    ClickXiaoQian();
                    if (dm.IsExistPic(379, 13, 567, 62, @"\bmp\创建.bmp"))
                    {
                        Debug.WriteLine("请输入角色名!");
                    }
                    break;

                case "虎牢关":
                    dm.FindPicAndClick(395, 311, 574, 393, @"\bmp\上阵.bmp");
                    role.CloseMenu();
                    if (dm.IsExistPic(130, 333, 279, 462, @"\bmp\EXP.bmp"))
                    {
                        dm.MoveToClick(192, 399);
                        dm.Delay(1000);
                        if (dm.IsExistPic(151, 480, 247, 535, @"\bmp\EXP2.bmp"))
                        {
                            while (dm.FindPicAndClick(204, 435, 759, 492, @"\bmp\5.bmp", 0, 0, 0.9))
                            {
                                dm.Delay(1000);
                            }
                            while (dm.FindPicAndClick(204, 435, 759, 492, @"\bmp\5.bmp", 0, 0, 0.9))
                            {
                                dm.Delay(1000);
                            }
                        }
                        break;
                    }

                    GoToFighting("虎牢关", true);
                    break;

                case "穿装备":
                    role.OpenMenu("武将");
                    dm.MoveToClick(234, 468);
                    dm.Delay(1000);
                    dm.MoveToClick(719, 464);
                    dm.Delay(200);
                    dm.MoveToClick(234, 468);
                    dm.Delay(1000);
                    dm.MoveToClick(719, 464);
                    dm.Delay(200);
                    dm.MoveToClick(234, 468);
                    dm.Delay(1000);
                    dm.MoveToClick(719, 464);
                    dm.Delay(200);
                    break;

                case "买装备":
                    role.OpenMenu("装备");
                    dm.MoveToClick(164, 370);
                    dm.Delay(800);
                    dm.MoveToClick(292, 368);
                    dm.Delay(800);
                    dm.MoveToClick(418, 367);
                    dm.Delay(800);
                    dm.MoveToClick(542, 370);
                    dm.Delay(800);
                    dm.MoveToClick(673, 368);
                    dm.Delay(800);
                    dm.MoveToClick(797, 372);
                    dm.Delay(800);
                    break;

                case "祭祀":
                    role.OpenMenu("资源");
                    if (dm.IsExistPic(0, 61, 106, 160, @"\bmp\祭祀银币.bmp"))
                    {
                        dm.MoveToClick(156, 455);
                    }
                    if (dm.IsExistPic(0, 61, 106, 160, @"\bmp\祭祀木材.bmp"))
                    {
                        dm.MoveToClick(328, 455);
                    }
                    break;

                case "产量600":
                    role.GoToMap30("主城");
                    dm.MoveToClick(419, 245);    //点击银币
                    //dm.MoveToClick(200, 200);//点击木材
                    dm.Delay(2000);
                    string a, b;
                    dm.MoveToClick(912, 114);    //点击自动升级
                    dm.Delay(1000);
                    Delegater.WaitTrue(() =>
                    {
                        a = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (!dm.FindPicAndClick(102, 48, 857, 468, @"\bmp\加速锤.bmp", 0, 0, 0.7))
                        {
                            dm.DebugPrint("不存在加速锤!等待5s");
                            dm.MoveToClick(152, 429);
                            dm.Delay(5000);
                        }
                        dm.Delay(500);
                        b = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (a != b)
                        {
                            dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
                        }
                        return(false);
                    }, () => dm.Delay(1000), 20);
                    break;

                case "刷装备":
                    dm.FindPicAndClick(395, 311, 574, 393, @"\bmp\上阵.bmp");
                    role.OpenMenu("装备");
                    dm.MoveToClick(784, 480);
                    dm.Delay(800);
                    break;

                case "卖装备":
                    role.OpenMenu("装备");
                    dm.MoveToClick(272, 28);
                    dm.Delay(800);
                    dm.MoveToClick(770, 479);
                    break;

                case "下邳":
                    role.CloseMenu();
                    GoToFighting("下邳", true);
                    break;

                case "木场":
                    role.GoToMap30("主城");
                    Delegater.WaitTrue(() => dm.MoveToClick(200, 200),
                                       () => dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") && dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                       () => dm.Delay(1000));
                    dm.Delay(2000);
                    dm.MoveToClick(912, 114);    //点击自动升级
                    dm.Delay(1000);
                    Delegater.WaitTrue(() =>
                    {
                        a = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (!dm.FindPicAndClick(102, 48, 857, 468, @"\bmp\加速锤.bmp", 0, 0, 0.7))
                        {
                            dm.DebugPrint("不存在加速锤!等待5s");
                            dm.MoveToClick(152, 429);
                            dm.Delay(5000);
                        }
                        dm.Delay(500);
                        b = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (a != b)
                        {
                            dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
                        }
                        return(false);
                    }, () => dm.Delay(1000), 10);
                    break;

                case "解雇":
                    role.OpenMenu("武将");
                    dm.MoveToClick(274, 32);     //点击酒馆
                    dm.Delay(800);
                    if (dm.IsExistPic(116, 215, 658, 275, @"\bmp\周仓.bmp") && !dm.IsExistPic(116, 215, 658, 275, @"\bmp\张梁.bmp"))
                    {
                        dm.MoveToClick(204, 144);     //点击第一个武将
                        dm.Delay(800);
                        dm.MoveToClick(410, 361);     //点击确定
                        dm.Delay(800);
                    }
                    role.CloseWindow();
                    break;

                case "招募":
                    role.OpenMenu("武将");
                    dm.MoveToClick(274, 32);     //点击酒馆
                    dm.Delay(800);
                    if (dm.IsExistPic(116, 215, 658, 275, @"\bmp\周仓.bmp", 0.7) && dm.IsExistPic(116, 215, 658, 275, @"\bmp\张梁.bmp", 0.7))
                    {
                        dm.FindPicAndClick(116, 215, 658, 275, @"\bmp\周仓.bmp", 31, 172, 0.7);
                    }
                    if (dm.IsExistPic(116, 215, 658, 275, @"\bmp\张辽.bmp", 0.7) && dm.IsExistPic(116, 215, 658, 275, @"\bmp\张梁.bmp", 0.7))
                    {
                        if (dm.IsExistPic(116, 215, 658, 275, @"\bmp\华雄.bmp", 0.7) || dm.IsExistPic(116, 215, 658, 275, @"\bmp\周仓.bmp", 0.7))
                        {
                            dm.FindPicAndClick(116, 215, 658, 275, @"\bmp\张辽.bmp", 31, 172, 0.7);
                            break;
                        }
                        role.CloseWindow();
                        role.OpenMenu("资源");
                        for (int i = 0; i < 20; i++)
                        {
                            dm.MoveToClick(156, 455);
                            dm.Delay(200);
                        }
                        role.CloseWindow();
                        role.OpenMenu("武将");
                        dm.MoveToClick(274, 32);     //点击酒馆
                        dm.Delay(800);
                        if (dm.FindPicAndClick(116, 215, 658, 275, @"\bmp\张辽.bmp", 31, 172, 0.7))
                        {
                            dm.Delay(2000);
                            if (dm.IsExistPic(116, 215, 658, 275, @"\bmp\张辽.bmp", 0.7))
                            {
                                dm.MoveToClick(204, 144);     //点击第一个武将
                                dm.Delay(800);
                                dm.MoveToClick(410, 361);     //点击确定
                                dm.Delay(2000);
                            }
                        }
                        dm.FindPicAndClick(116, 215, 658, 275, @"\bmp\张辽.bmp", 31, 172, 0.7);
                    }
                    break;

                case "科技":
                    role.OpenMenu("科技");
                    Delegater.WaitTrue(() =>
                    {
                        dm.FindPicAndClick(656, 208, 790, 269, @"\bmp\注资.bmp");
                        dm.Delay(2000);
                        if (dm.IsExistPic(774, 406, 956, 505, @"\bmp\木材不足.bmp"))
                        {
                            dm.MoveToClick(855, 478);
                            dm.Delay(2000);
                            for (int i = 0; i < 5; i++)
                            {
                                dm.MoveToClick(334, 458);
                                dm.Delay(500);
                            }
                            role.CloseWindow();
                            role.OpenMenu("科技");
                        }
                        if (dm.FindPicAndClick(656, 208, 790, 269, @"\bmp\研究.bmp", 0, 0, 0.7))
                        {
                            dm.Delay(1000);
                            return(true);
                        }

                        return(false);
                    }, () => dm.Delay(1000), 10);
                    break;

                case "农田":
                    role.GoToMap30("主城");
                    Delegater.WaitTrue(() => dm.MoveToClick(165, 348),
                                       () => dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") && dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                       () => dm.Delay(1000));
                    dm.Delay(2000);
                    dm.MoveToClick(912, 114);    //点击自动升级
                    dm.Delay(1000);
                    Delegater.WaitTrue(() =>
                    {
                        a = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (!dm.FindPicAndClick(102, 48, 857, 468, @"\bmp\加速锤.bmp", 0, 0, 0.7))
                        {
                            dm.DebugPrint("不存在加速锤!等待5s");
                            dm.MoveToClick(152, 429);
                            dm.Delay(2000);
                        }
                        dm.Delay(500);
                        b = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (a != b)
                        {
                            dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
                        }
                        return(false);
                    }, () => dm.Delay(1000), 10);
                    break;

                case "皇城":
                    role.GoToMap30("主城");
                    dm.Delay(2000);
                    Delegater.WaitTrue(() => dm.MoveToClick(667, 180),
                                       () => dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                       () => dm.Delay(1000));
                    Delegater.WaitTrue(() => dm.MoveToClick(337, 446),
                                       () => dm.IsExistPic(266, 356, 619, 486, @"\bmp\占领.bmp"),
                                       () => dm.Delay(1000));
                    dm.FindPicAndClick(266, 356, 619, 486, @"\bmp\占领.bmp");
                    dm.Delay(2000);
                    dm.MoveToClick(612, 122);
                    dm.Delay(1000);
                    dm.MoveToClick(749, 128);
                    dm.Delay(1000);
                    dm.MoveToClick(807, 259);     //点击战斗
                    Delegater.WaitTrue(() => {
                        if (dm.IsExistPic(330, 45, 639, 184, @"\bmp\胜利.bmp"))
                        {
                            dm.MoveToClick(916, 45);         //点击返回
                            dm.Delay(1000);
                            return(true);
                        }
                        return(false);
                    }, () => dm.Delay(1000));
                    break;

                case "俸禄":
                    role.OpenMenu("排行");
                    dm.Delay(1000);
                    dm.MoveToClick(630, 469);   //点击俸禄
                    dm.Delay(1000);
                    break;

                case "兵营":
                    role.GoToMap30("主城");
                    Delegater.WaitTrue(() => dm.MoveToClick(334, 443),
                                       () => dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") && dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                       () => dm.Delay(1000));
                    break;

                case "募兵700":

                    Delegater.WaitTrue(() =>
                    {
                        role.GoToMap30("主城");
                        return(dm.MoveToClick(334, 443));
                    }, () => dm.IsExistPic(818, 281, 953, 447, @"\bmp\副本.bmp") && dm.IsExistPic(818, 281, 953, 447, @"\bmp\主城.bmp"),
                                       () => dm.Delay(1000));
                    dm.Delay(2000);
                    dm.MoveToClick(912, 114);    //点击自动升级
                    dm.Delay(1000);
                    Delegater.WaitTrue(() =>
                    {
                        a = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (!dm.FindPicAndClick(102, 48, 857, 468, @"\bmp\加速锤.bmp", 0, 0, 0.7))
                        {
                            dm.DebugPrint("不存在加速锤!等待2s");
                            dm.MoveToClick(152, 429);
                            dm.Delay(2000);
                        }
                        dm.Delay(500);
                        b = dm.FetchWord(903, 103, 954, 145, "eaeaea-202020", "建筑队列数");
                        if (a != b)
                        {
                            dm.FindPicAndClick(852, 78, 952, 148, @"\bmp\自动升级.bmp");
                        }
                        return(false);
                    }, () => dm.Delay(1000), 15);
                    break;

                case "世界":
                    role.GoToMap("世界");
                    break;

                case "迷雾":
                    //role.GoToMap("世界");
                    return(TaskResult.Finished);

                    break;

                default:
                    ClickXiaoQian();
                    break;
                }
                dm.Delay(2000);
            }
            return(TaskResult.Finished);
        }
コード例 #27
0
ファイル: AutoLevel.cs プロジェクト: ko9ma7/Gcld
        private bool GoToFighting(string area, bool isSkip = false)
        {
            Role     role = (Role)Role;
            DmPlugin dm   = role.Window.Dm;

            role.GoToMap30("副本");
            // role.GoToFubenArea(area);
            if (area == "下邳")
            {
                dm.Swipe(670, 427, 93, 425);
                dm.Delay(1000);
            }
            Delegater.WaitTrue(() =>
            {
                dm.MoveToClick(21, 182);
                if (dm.IsExistPic(116, 72, 936, 351, @"\bmp\战斗.bmp"))
                {
                    return(true);
                }
                dm.FindPicAndClick(395, 311, 574, 393, @"\bmp\上阵.bmp");
                return(false);
            }, () => dm.Delay(500), 10);

            if (Delegater.WaitTrue(() =>
            {
                dm.FindPicAndClick(395, 311, 574, 393, @"\bmp\上阵.bmp");
                dm.FindPicAndClick(116, 72, 936, 351, @"\bmp\战斗.bmp");
                if (dm.IsExistPic(394, 216, 567, 307, @"\bmp\VS.bmp"))
                {
                    //补充兵力
                    dm.MoveToClick(612, 122);
                    dm.Delay(1000);

                    dm.MoveToClick(749, 128);
                    dm.Delay(1000);
                    dm.MoveToClick(807, 259); //点击战斗
                }
                if (!dm.IsExistPic(394, 216, 567, 307, @"\bmp\VS.bmp") && dm.IsExistPic(762, 4, 953, 87, @"\bmp\返回.bmp") && isSkip)
                {
                    dm.MoveToClick(840, 43); //点击跳过
                    dm.Delay(3000);
                }

                if (dm.IsExistPic(330, 45, 639, 184, @"\bmp\胜利.bmp"))
                {
                    dm.MoveToClick(916, 45); //点击返回
                    dm.Delay(1000);
                    return(true);
                }
                if (dm.IsExistPic(318, 36, 637, 195, @"\bmp\失败.bmp"))
                {
                    dm.MoveToClick(916, 45); //点击返回
                    dm.Delay(1000);
                    return(true);
                }
                return(false);
            }, () => dm.Delay(1000), 10))
            {
                return(true);
            }
            else
            {
                return(GoToFighting(area, true));
            }
        }
コード例 #28
0
        void InitializeBehaviors()
        {
            Delegater d = repo.Delegater;

            #region Camera 1

            d.Bind(
                Groups.DefaultCamera,
                new Transform()
            {
                Position = new Vector3(0, 35, 28)
            });

            d.Bind(
                Groups.DefaultCamera,
                new ActionContextCamera(GraphicsDevice)
            {
                ClearColor = Color.SteelBlue    //Color.Beige
            });

            #endregion

            d.Bind("Floor", new Transform()
            {
                Position = new Vector3(-25, -1, 0)
            });
            d.Bind("Floor", new Box(250, 1, 250)
            {
                Color = Color.LightGray
            });
            d.Bind("Floor", new BoxCollider(true));

            d.Bind(Groups.MainBuilding, new Transform());
            d.Bind(Groups.MainBuilding, new Box(20, 30, 15));

            repo.Get <Transform>(Groups.MainBuilding).Position.Y = repo.Get <Box>(Groups.MainBuilding).Height / 2;

            d.Bind(Groups.MainBuilding, new BoxCollider(true));

            Vector3 offset = new Vector3(-(repo.Get <Box>(Groups.MainBuilding).Width / 5), repo.Get <Box>(Groups.MainBuilding).Height / 2, 0);

            d.Bind(Groups.MainBuildingRoof, new Transform()
            {
                Position = repo.Get <Transform>(Groups.MainBuilding).Position + offset
            });

            d.Bind(Groups.Wind, new WindStroker());
            //d.Bind(Groups.Wind, new DebugWindStroke());
            d.Bind(Groups.Wind, new WindStrokerVisual()
            {
                DrawOrder = 2
            });

            // crates
            d.Bind("box placer", new BoxPlacer());

            Vector3 initialPosition = repo.Get <Transform>(Groups.MainBuildingRoof).Position;

            float size = 1.75f;

            d.Bind("Crate #1", new Transform()
            {
                Position = initialPosition + new Vector3(size / 2) + new Vector3(-3, 0, 4)
            });
            d.Bind("Crate #1", new Box(size, size, size)
            {
                Color = Color.Beige
            });

            d.Bind("Crate #1", new BoxCollider(false));
            d.Bind("Crate #1", new ReceiveWindGust());
            d.Bind("Crate #1", new ScaleToDistanceFromFloor());

            //////////

            d.Bind("Crate #2", new Transform()
            {
                Position = initialPosition + new Vector3(size / 2) + new Vector3(-1, 0, 4)
            });
            d.Bind("Crate #2", new Box(size, size, size)
            {
                Color = Color.Beige
            });

            d.Bind("Crate #2", new BoxCollider(false));
            d.Bind("Crate #2", new ReceiveWindGust());
            d.Bind("Crate #2", new ScaleToDistanceFromFloor());

            //////////

            d.Bind("Crate #3", new Transform()
            {
                Position = initialPosition + new Vector3(size / 2) + new Vector3(-2.25f, 1.8f, 4)
            });
            d.Bind("Crate #3", new Box(size, size, size)
            {
                Color = Color.Beige
            });

            d.Bind("Crate #3", new BoxCollider(false));
            d.Bind("Crate #3", new ReceiveWindGust());
            d.Bind("Crate #3", new ScaleToDistanceFromFloor());

            d.Bind("Death Counter", new DeathTollCounter()
            {
                DrawOrder = 4
            });

            d.Bind("people", new Transform()
            {
                Position = new Vector3(-35, 0.25f, 0)
            });
            d.Bind("people", new FolksRunningAround()
            {
                DrawOrder = 2
            });

            d.Bind("grassy field", new Transform()
            {
                Position = new Vector3(-35, -0.75f, 0)
            });
            d.Bind("grassy field", new Box(37, 1, 37)
            {
                Color = Color.Green
            });

            d.Bind("Another tower", new Transform()
            {
                Position = new Vector3(-100, 20, -10)
            });
            d.Bind("Another tower", new Box(35, 50, 30)
            {
                Color = Color.Bisque
            });
            d.Bind("Another tower", new BoxCollider(true));

            d.Bind("Another tower 2", new Transform()
            {
                Position = new Vector3(-100, 10, -45)
            });
            d.Bind("Another tower 2", new Box(35, 30, 30)
            {
                Color = Color.BlanchedAlmond
            });
            d.Bind("Another tower 2", new BoxCollider(true));

            d.Bind("road", new Transform()
            {
                Position = new Vector3(-65, -0.75f, 0)
            });
            d.Bind("road", new Box(20, 1, 250)
            {
                Color = Color.DarkGray
            });

            d.Bind("road separator", new Transform()
            {
                Position = new Vector3(-65, -0.5f, 0)
            });
            d.Bind("road separator", new Box(1, 1, 250)
            {
                Color = Color.DarkGray
            });

            d.Bind("another grassy field", new Transform()
            {
                Position = new Vector3(-98, -0.75f, 35)
            });
            d.Bind("another grassy field", new Box(37, 1, 37)
            {
                Color = Color.Green
            });

            d.Bind("people 2", new Transform()
            {
                Position = new Vector3(-98, 0.25f, 35)
            });
            d.Bind("people 2", new FolksRunningAround(50, 6)
            {
                DrawOrder = 2
            });                                                                  // hacky with hardcoding scale, but cba with making it based on cam distance or whatever

            d.Bind("small path", new Transform()
            {
                Position = new Vector3(-115, -0.75f, 10)
            });
            d.Bind("small path", new Box(80, 1, 5)
            {
                Color = Color.DarkGray
            });


            d.Bind("deactivator", new RemoveDeactivatedBoxes());

            d.Bind("How to play", new HowToOverlay()
            {
                DrawOrder = 3
            });
            d.Bind("How to play", new HelpOverlay()
            {
                DrawOrder = 3
            });

            d.Bind("Owl Dispenser :D", new OwlDispenser());

            repo.Get <ActionContextCamera>(Groups.DefaultCamera).Target =
                //repo.Get<Transform>("Owl LOL");
                repo.Get <Transform>(Groups.MainBuildingRoof);


            ///// achievements woo!
            d.Bind("Achievement Progress", new DisplayAchievementGain()
            {
                DrawOrder = 3
            });
            d.Bind("Achievement Progress", new AchievementProgress()
            {
                DrawOrder = 3
            });

            // trackers!
            d.Bind("Achievement Progress", new TrackTotalKillInOneSession());
            d.Bind("Achievement Progress", new TrackTotalKillInOneSessionSequel());
            d.Bind("Achievement Progress", new TrackHitAnOwl());
            d.Bind("Achievement Progress", new TrackAirTime());
        }
コード例 #29
0
 public Timing(Delegater delegater)
     : base(delegater)
 {
 }
コード例 #30
0
ファイル: Drawing.cs プロジェクト: jhauberg-archived/LD11
 public Drawing(Delegater delegater, bool traverseNow)
     : base(delegater, traverseNow)
 {
 }