示例#1
0
 public int CompareTo(TimeInfo other)
 {
     if (this._hour - other._hour > 0)
         return 1;
     else if (this._hour - other._hour == 0)
     {
         if (this._minute - other._minute > 0)
             return 1;
         else if (this._minute - other._minute == 0)
             return 0;
         else
             return -1;
     }
     else
         return -1;
 }
示例#2
0
        public void TaskStart()
        {
            try
            {
                _module = Constants.MSG_TASK;

                int num = 0;

                if (Task.RunMode == EnumRunMode.MultiLoop || Task.RunMode == EnumRunMode.SingleLoop)
                {
                    SetMessageLn("开始执行循环任务...");

                    if (Task.RunMode == EnumRunMode.SingleLoop)
                    {
                        _singleloopfirst = true;
                    }

                    if (Task.Forbidden)
                    {
                        num = DurationMinute(new TimeInfo(DateTime.Now.Hour, DateTime.Now.Minute));
                        if (num > 0)
                        {
                            while (num > 0)
                            {
                                _module = Constants.MSG_TASK;
                                TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(Task.ForbiddenEnd.Hour) + ":" + AddZero(Task.ForbiddenEnd.Minute), num--));
                                Thread.Sleep(0xea60);
                            }
                        }
                        TaskRun();

                        while (Task.RoundTime > 0)
                        {
                            int dur = DurationMinute(GetNextRunTime());
                            num = Task.RoundTime + dur;

                            while (num > 0)
                            {
                                _module = Constants.MSG_TASK;
                                if (dur > 0)
                                {
                                    TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(Task.ForbiddenEnd.Hour) + ":" + AddZero(Task.ForbiddenEnd.Minute), num--));
                                }
                                else
                                {
                                    TaskWait(string.Format("{0}分钟后重新启动任务...", new object[] { num-- }));
                                }
                                Thread.Sleep(0xea60);
                            }
                            TaskRun();
                        }
                    }
                    else
                    {
                        _module = Constants.MSG_TASK;
                        TaskRun();
                        while (Task.RoundTime > 0)
                        {
                            num = Task.RoundTime;
                            while (num > 0)
                            {
                                TaskWait(string.Format("{0}分钟后重新启动任务...", new object[] { num-- }));
                                Thread.Sleep(0xea60);
                            }
                            TaskRun();
                        }
                    }
                }
                else if (Task.RunMode == EnumRunMode.Timing)
                {
                    TimeInfo lastrun = null;
                    SetMessageLn("开始执行定时任务...");
                    while (true)
                    {
                        TimeInfo runtime = GetLatestRunTime(lastrun);
                        if (runtime.CompareTo(new TimeInfo(99, 99)) == 0)
                        {
                            return;
                        }

                        num = runtime.LeftMinutes(DateTime.Now);
                        if (num == 0)
                        {
                            lastrun = runtime;
                            TaskRun();
                        }
                        else
                        {
                            while (num > 0)
                            {
                                _module = Constants.MSG_TASK;
                                TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(runtime.Hour) + ":" + AddZero(runtime.Minute), num--));
                                Thread.Sleep(0xea60);
                            }
                            lastrun = runtime;
                            TaskRun();
                        }
                    }
                }
            }
            catch (ThreadAbortException)
            {
                //LogHelper.Write("TaskManager.TaskStart", "ThreadAbortException", LogSeverity.Info);
                SetMessageLn("中止执行!");
                if (Task.WriteLogToFile)
                {
                    TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString());
                }
            }
            catch (ThreadInterruptedException)
            {
                //LogHelper.Write("TaskManager.TaskStart", "ThreadInterruptedException", LogSeverity.Info);
                SetMessageLn("中止执行!");
                if (Task.WriteLogToFile)
                {
                    TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString());
                }
            }
            catch (Exception ex)
            {
                LogHelper.Write("TaskManager.TaskStart", ex);
                SetMessageLn("发生异常,任务已中止!错误:" + ex.Message);
                if (Task.WriteLogToFile)
                {
                    TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString());
                }
            }
        }
示例#3
0
        public TaskInfo()
        {
            _runmode = EnumRunMode.MultiLoop;
            _roundtime = 60;
            _forbidden = true;
            _forbiddenstart = new TimeInfo(0, 0);
            _forbiddenend = new TimeInfo(8, 0);
            _starttimes = new Collection<TimeInfo>();
            _executepark = true;
            _executebite = true;
            _executeslave = true;
            _executehouse = true;
            _executegarden = true;
            _executeranch = true;
            _executefish = true;
            _executerich = true;
            _sendlog = false;
            _receiveremail = "";
            _writelogtofile = false;
            _skipvalidation = false;

            _accounts = new Collection<AccountInfo>();
            _parkmycars = true;
            _postotherscars = false;
            _joinmatch = true;
            _originatematch = true;
            _originatematchid = 1;
            _originateteamnum = 2;
            _startcar = false;
            _cheerup = true;
            _startcartime = new TimeInfo(8, 30);

            _approverecovery = true;
            _biteothers = true;
            _autorecover = true;
            _protectfriend = false;

            _buyslave = true;
            _buylowpriceslave = false;
            _fawnmaster = true;
            _propitiateslave = true;
            _afflictslave = true;
            _releaseslave = false;
            _maxSlaves = 9;
            _nickname = "阿桂,挖煤啦!";

            _dojob = true;
            _stayhouse = true;
            _robfriends = false;
            _robfreefriends = true;
            _drivefriends = false;

            _farmself = true;
            _expensivefarmself = true;
            _customfarmself = 1;
            _farmshared = false;
            _expensivefarmshared = true;
            _customfarmshared = 1;
            _harvestfruit = true;
            _buyseed = true;
            _buyseedcount = 1;
            _helpothers = true;
            _stealfruit = false;
            _presentfruit = false;
            _presentfruitbyprice = true;
            _presentfruitcheckvalue = true;
            _presentfruitvalue = 100;
            _presentfruitid = 11;
            _presentfruitchecknum = true;
            _presentfruitnum = 1000;
            _sellfruit = false;
            _lowcash = true;
            _lowcashlimit = 100;
            _sellallfruit = false;
            _maxselllimit = 300;
            _sellforbiddennfruitslist = new Collection<int>();
            _sowmyseedsfirst = false;
            _stealunknowfruit = true;
            _stealforbiddenfruitslist = new Collection<int>();

            _harvestproduct = true;
            _harvestanimal = true;
            _addwater = true;
            _helpaddwater = false;
            _addgrass = true;
            _helpaddgrass = false;
            _buycalf = true;
            _buycalfbyprice = true;
            _buycalfcustom = 1;
            _stealproduct = false;
            _makeproduct = true;
            _helpmakeproduct = false;
            _breedanimal = false;
            _foodnum = 200;
            _presentproduct = false;
            _presentproductbyprice = true;
            _presentproductcheckvalue = true;
            _presentproductvalue = 100;
            _presentproductaid = 1;
            _presentproducttype = 0;
            _presentproductchecknum = true;
            _presentproductnum = 100;
            _sellproduct = false;
            _sellproductlowcash = true;
            _sellproductlowcashlimit = 100;
            _sellallproducts = false;
            _sellproductmaxlimit = 300;
            _sellproductforbiddenlist = new Collection<ProductInfo>();
            _addcarrot = true;
            _helpaddcarrot = false;
            _carrotnum = 200;
            _addbamboo = true;
            _helpaddbamboo = false;
            _bamboonum = 200;

            _shake = true;
            _treatfish = true;
            _updatefishpond = true;
            _bangkejing = true;
            _buyfish = true;
            _maxfishes = 20;
            _buyfishbyrank = true;
            _buyfishfishid = 1;
            _fishing = true;
            _buyupdatetackle = false;
            _maxtackles = 5;
            _harvestfish = true;
            _netselffish = false;
            _netselffishcheap = false;
            _netselffishmature = 80;
            _helpfish = true;
            _presentfish = false;
            _presentfishcheap = false;
            _presentfishcheckvalue = true;
            _presentfishvalue = 10000;
            _presentfishforbiddenlist = new Collection<int>();
            _sellfish = false;
            _sellfishlowcash = false;
            _sellfishlowcashlimit = 10;
            _sellallfish = false;
            _sellfishcheckvalue = false;
            _sellfishvalue = 10000;
            _sellfishmaxlimit = 20;
            _sellfishforbiddenlist = new Collection<int>();

            _sellasset = true;
            _buyasset = true;
            _buyassetcheap = false;
            _giveupifratio = true;
            _giveupratio = 50;
            _giveupifminimum = true;
            _giveupminimum = 5;
            _giveupifmyasset = false;
            _giveupassetcount = 3;
            _advancedpurchase = false;
            _buyassetslist = new Collection<int>();

            _boxclean = true;
            _cook = true;
            _cooktomatofirst = true;
            _cookmedlarfirst = false;
            _cookcrabfirst = false;
            _cookpineapplefirst = false;
            _cooklowcash = true;
            _cooklowcashlimit = 2000;
            _hire = true;
            _maxemployees = 12;
            _helpfriend = true;
            _presentfood = false;
            _presentforbiddenfoodlist = new Collection<int>();
            _presentfoodbycount = true;
            _presentfooddishid = 4;
            _presentfoodmessage = "送你食物啦!";
            _presentfoodratio = 50;
            _presentlowcash = true;
            _presentlowcashlimit = 2000;
            _presentfoodlowcount = true;
            _presentfoodlowcountlimit = 2;
            _purchasefood = false;
            _purchasefoodbyrefprice = true;
            _sellfood = false;
            _sellfoodbyrefprice = true;
        }
示例#4
0
 private int CompareTo(TimeInfo time1, TimeInfo time2)
 {
     if (time1.Hour - time2.Hour > 0)
         return 1;
     else if (time1.Hour - time2.Hour == 0)
     {
         if (time1.Minute - time2.Minute > 0)
             return 1;
         else if (time1.Minute - time2.Minute == 0)
             return 0;
         else
             return -1;
     }
     else
         return -1;
 }
示例#5
0
 private int CompareTo(TimeInfo time, DateTime now)
 {
     if (time.Hour - now.Hour > 0)
         return 1;
     else if (time.Hour - now.Hour == 0)
     {
         if (time.Minute - now.Minute > 0)
             return 1;
         else if (time.Minute - now.Minute == 0)
             return 0;
         else
             return -1;
     }
     else
         return -1;
 }
示例#6
0
 private int LeftMinutes(TimeInfo time, TimeInfo dt)
 {
     int cmpmin = CompareTo(time, new TimeInfo(dt.Hour, dt.Minute));
     if (cmpmin < 0)
         return (24 - dt.Hour) * 60 - dt.Minute + time.Hour * 60 + time.Minute;
     else if (cmpmin == 0)
         return 0;
     else
         return (time.Hour - dt.Hour) * 60 - dt.Minute + time.Minute;
 }
示例#7
0
        private TimeInfo GetLatestRunTime(TimeInfo last)
        {
            if (Task.StartTimes == null || Task.StartTimes.Count == 0)
                return new TimeInfo(99, 99);

            TimeInfo min = null;
            int num = 0;

            foreach (TimeInfo time in Task.StartTimes)
            {
                if (last == null)
                {
                    if (CompareTo(time, DateTime.Now) >= 0)
                    {
                        if (min == null)
                        {
                            min = time;
                            num = min.LeftMinutes(DateTime.Now);
                        }
                        else
                        {
                            if (num > time.LeftMinutes(DateTime.Now))
                            {
                                min = time;
                                num = time.LeftMinutes(DateTime.Now);
                            }
                        }
                    }
                }
                else
                {
                    if (CompareTo(time, DateTime.Now) >= 0 && time.Minute > last.Minute)
                        if (min == null)
                        {
                            min = time;
                            num = min.LeftMinutes(DateTime.Now);
                        }
                        else
                        {
                            if (num > time.LeftMinutes(DateTime.Now))
                            {
                                min = time;
                                num = time.LeftMinutes(DateTime.Now);
                            }
                        }
                }
            }

            if (min == null)
                min = Task.StartTimes[0];

            return min;
        }
示例#8
0
        private int DurationMinute(TimeInfo time)
        {
            int num = 0;

            if (CompareTo(Task.ForbiddenStart, Task.ForbiddenEnd) < 0)
            {
                if (CompareTo(Task.ForbiddenStart, time) <= 0 && CompareTo(Task.ForbiddenEnd, time) >= 0)
                {
                    num = LeftMinutes(Task.ForbiddenEnd, time);
                }
            }
            else
            {
                if (CompareTo(Task.ForbiddenStart, time) <= 0 || CompareTo(Task.ForbiddenEnd, time) >= 0)
                {
                    num = LeftMinutes(Task.ForbiddenEnd, time);
                }
            }

            return num;
        }