Example #1
0
    GameObject GetUIGameObejct(Vector3 enpos)
    {
        if (uiList.Count > 0)
        {
            GameObject ui = uiList[0];
            uiList.RemoveAt(0);
            FarmState fs = ui.GetComponent <FarmState>();
            if (fs == null)
            {
                ui.AddComponent <FarmState>();
            }

            return(ui);
        }
        List <string> deplist = null;

        UnityEngine.Object farm = UIManager.GetResGameObj("panel/home/frampanel/framstatus.unity3d", "assets/ui/panel/home/frampanel/framstatus.prefab");
        if (farm != null)
        {
            GameObject go = GameObject.Instantiate(farm) as GameObject;
            if (go != null)
            {
                go.transform.parent        = this.transform;
                go.transform.position      = enpos;
                go.transform.localScale    = Vector3.one;
                go.transform.localRotation = Quaternion.identity;
                return(go);
            }
        }
        return(null);
    }
Example #2
0
        public async void LaunchInstance(bool startClient, bool mule)
        {
            Instance instance;

            if (mule)
            {
                instance = BogusData.Mules.Generate();
            }
            else
            {
                instance = BogusData.Bots.Generate();
            }

            var settings = new FarmSettings
            {
                ID             = 2,
                BotScriptName  = "BotScript",
                MuleScriptName = "MuleScrip",
                ApiKey         = "JFDKSLFDSJKL7u894312709jfdksl"
            };

            using (var context = NewContext)
            {
                context.FarmSettingsTable.Update(settings);
                await context.SaveChangesAsync();
            }

            var state = new FarmState
            {
                SocketAddress = Guid.NewGuid()
            };

            var dateTime = new Mock <IDateTime>();

            var stateService = new Mock <IStateService>();

            stateService.Setup(s => s.GetFarmState()).ReturnsAsync(state);

            var clientHandler = new Mock <IClientHandler>();

            clientHandler.Setup(c => c.StartClient(It.IsAny <Guid>(), It.IsAny <ClientStartArgs>(), It.IsAny <string>()))
            .ReturnsAsync(startClient);

            var instanceService = new FORFarm.Application.Farm.InstanceService(dateTime.Object, clientHandler.Object, stateService.Object, Mapper, NewContext);

            var result = await instanceService.LaunchInstance(instance);

            result.Should().Be(startClient);

            clientHandler.Verify(c => c.StartClient(
                                     It.Is <Guid>(s => s == state.SocketAddress),
                                     It.Is <ClientStartArgs>(
                                         args => args.Username == instance.Account.Username &&
                                         args.Password == instance.Account.Password &&
                                         args.ScriptName == (mule ? settings.MuleScriptName : settings.BotScriptName)
                                         ), It.Is <string>(s => s == settings.ApiKey)));
        }
Example #3
0
 public void SetFarmMobs(Zone zone, uint[] ids, uint[] UseSpecialItem)
 {
     bestMob = null;
     lock (farmMobsIds)
         farmMobsIds = new List <uint>(ids);
     lock (farmZone)
         farmZone = zone;
     specialItems = UseSpecialItem;
     farmState    = FarmState.Enabled;
 }
Example #4
0
 public void SetFarmDoodads(Zone zone, uint[] ids, double castDist = 0)
 {
     bestMob = null;
     lock (farmDoodadsIds)
         farmDoodadsIds = new List <uint>(ids);
     lock (farmZone)
         farmZone = zone;
     farmState      = FarmState.Doodads;
     doodadCastDist = castDist;
 }
Example #5
0
 public void SetFarmMobsFromDoodads(Zone zone, uint[] mobsIDs, uint[] doodadsIDs, double castDist = 0)
 {
     bestMob = null;
     lock (farmDoodadsIds)
         farmDoodadsIds = new List <uint>(doodadsIDs);
     lock (farmMobsIds)
         farmMobsIds = new List <uint>(mobsIDs);
     lock (farmZone)
         farmZone = zone;
     farmState      = FarmState.DoodadsAndMobs;
     doodadCastDist = castDist;
 }
Example #6
0
    public void Grow()
    {
        if (_state == FarmState.FullyGrown)
        {
            return;
        }

        var farmTemplate = farmTemplates[Random.Range(0, farmTemplates.Length)];
        var farm         = Instantiate(farmTemplate, transform, false);

        _smokeEffect.PlayOnNextHit();
        farm.transform.Rotate(new Vector3(0, Random.value * 360, 0));
        LaunchFromAbove();

        _state = FarmState.FullyGrown;
    }
Example #7
0
 public void SetFarmMobs(Zone zone, uint[] ids, uint UseSpecialItem = 0)
 {
     bestMob = null;
     lock (farmMobsIds)
         farmMobsIds = new List <uint>(ids);
     lock (farmZone)
         farmZone = zone;
     if (UseSpecialItem > 0)
     {
         specialItems = new uint[] { UseSpecialItem }
     }
     ;
     else
     {
         specialItems = null;
     }
     farmState = FarmState.Enabled;
 }
Example #8
0
    void RefreshFarmState(GameObject go, HomeDataManager.HomeEntityInfo ei)
    {
        FarmState fs = go.GetComponent <FarmState>();

        if (fs == null)
        {
            fs = go.AddComponent <FarmState>();
            go.SetActive(false);
        }
        if (fs != null)
        {
            fs.InitIndex(ei.index);
        }
        if (ei.state == (int)HomeDataManager.LandState.Idle)
        {
            fs.gameObject.SetActive(false);
            if (homeDM.CanGetLeftTime(ei.index))
            {
                fs.Init(homeDM.GetLeftTimeByIndex(ei.index), ei.index);
            }
            else
            {
                fs.ShowUIByState(HomeDataManager.CreatureSmallState.None);
            }
        }
        else if (ei.state == (int)HomeDataManager.LandState.LockCanBuy)
        {
            if (ei.index == homeDM.LandUnlockNum + 1)
            {
                fs.gameObject.SetActive(true);
                fs.ShowLandState();
            }
        }
        else if (ei.state == (int)HomeDataManager.LandState.CanGain)
        {
            fs.ShowUIByState(HomeDataManager.CreatureSmallState.CanGain);
        }
        else if (ei.state == (int)HomeDataManager.LandState.Growing)
        {
            fs.ShowUIByState(HomeDataManager.CreatureSmallState.Seeding);
        }
    }
Example #9
0
 public override void Start(Host host)
 {
     base.Start(host);
     farmState = FarmState.Disabled;
 }
Example #10
0
 public override void Start(Host host)
 {
     base.Start(host);
     farmState = FarmState.Disabled;
 }
Example #11
0
 public void SetFarmMobs(Zone zone, uint[] ids, uint UseSpecialItem = 0)
 {
     bestMob = null;
     lock(farmMobsIds)
         farmMobsIds = new List<uint>(ids);
     lock (farmZone)
         farmZone = zone;
     if (UseSpecialItem > 0)
         specialItems = new uint[] { UseSpecialItem };
     else
         specialItems = null;
     farmState = FarmState.Enabled;
 }
Example #12
0
 public void SetFarmDoodads(Zone zone, uint[] ids, double castDist = 0)
 {
     bestMob = null;
     lock (farmDoodadsIds)
         farmDoodadsIds = new List<uint>(ids);
     lock (farmZone)
         farmZone = zone;
     farmState = FarmState.Doodads;
     doodadCastDist = castDist;
 }
Example #13
0
 public void StopFarm()
 {
     bestMob   = null;
     farmState = Modules.FarmState.Disabled;
 }
Example #14
0
 public void SetFarmAggros()
 {
     bestMob   = null;
     farmState = FarmState.AttackOnlyAgro;
 }
Example #15
0
        public override void Run(CancellationToken ct)
        {
            while (true)
            {
                base.Run(ct);
                try
                {
                    if (!host.isAlive())
                    {
                        readyToActions = false;
                        while (host.me.resurrectionWaitingTime > 0)
                            Thread.Sleep(100);
                        Thread.Sleep(3000);
                        host.movementModule.ResumeGpsMove();
                        host.CancelMoveTo();
                        host.ResToRespoint();
                        Thread.Sleep(10000);
                        host.RestoreExp();
                        Thread.Sleep(2000);
                        farmState = FarmState.Disabled;
                        readyToActions = true;
                    }
                    if (host.isAlive())
                    {
                        if (host.buffTime(95) == 0 && host.buffTime(426) == 0 && host.buffTime(427) == 0 && host.buffTime(428) == 0 && host.buffTime(429) == 0 && host.skillCooldown(10153) == 0)
                            UseSkillAndWait(10153, false, true);

                        //Лут дропа рядом
                        host.farmModule.PickUpNearMe();
                    }

                    if (farmState == FarmState.Enabled)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && ((host.mpp() > 40 && host.hpp() > 75) || aggroMobsCount() > 0))
                            bestMob = GetBestMob();
                        FarmRoute();
                    }
                    else if (farmState == FarmState.AttackOnlyAgro)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && host.mpp() > 10)
                            bestMob = GetBestAgroMob();
                        if (bestMob != null && host.isExists(bestMob) && host.isAlive(bestMob) && host.movementModule.gpsMoveEnabled && !host.movementModule.gpsMoveSuspended)
                            host.movementModule.SuspendGpsMove();
                        if (aggroMobsCount() == 0 && host.movementModule.gpsMoveEnabled && host.movementModule.gpsMoveSuspended)
                            host.movementModule.ResumeGpsMove();
                        FarmRoute();
                    }
                    else if (farmState == FarmState.Doodads)
                    {
                        if (aggroMobsCount() == 0)
                        {
                            CheckUnderWaterBreath();
                            for (int i = 0; i < farmDoodadsIds.Count; i++)
                            {
                                var doodad = getNearestDoodadInZone(farmDoodadsIds[i]);
                                if (doodad != null)
                                {
                                    var skills = doodad.getUseSkills();
                                    if (skills.Count > 0)
                                    {
                                        if (doodadCastDist == 0)
                                            host.UseDoodadSkill(skills[0].id, doodad, true);
                                        else
                                        {
                                            host.ComeTo(doodad, doodadCastDist, doodadCastDist);
                                            if (host.me.dist(doodad) <= doodadCastDist)
                                                host.UseDoodadSkill(skills[0].id, doodad, true);
                                        }
                                        Thread.Sleep(1000);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && host.mpp() > 10)
                                bestMob = GetBestAgroMob();
                            FarmRoute();
                        }
                    }
                    else if (farmState == FarmState.DoodadsAndMobs)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && ((host.mpp() > 40 && host.hpp() > 75) || aggroMobsCount() > 0))
                            bestMob = GetBestMob();
                        if (bestMob == null)
                        {
                            CheckUnderWaterBreath();
                            for (int i = 0; i < farmDoodadsIds.Count; i++)
                            {
                                var doodad = getNearestDoodadInZone(farmDoodadsIds[i]);
                                if (doodad != null)
                                {
                                    var skills = doodad.getUseSkills();
                                    if (skills.Count > 0)
                                    {
                                        if (doodadCastDist == 0)
                                            host.UseDoodadSkill(skills[0].id, doodad, true);
                                        else
                                        {
                                            host.ComeTo(doodad, doodadCastDist, doodadCastDist);
                                            if (host.me.dist(doodad) <= doodadCastDist)
                                                host.UseDoodadSkill(skills[0].id, doodad, true);
                                        }
                                        Thread.Sleep(1000);
                                    }
                                }
                            }
                        }
                        else
                            FarmRoute();
                    }
                }
                catch (Exception error)
                {
                    //host.Log(error.ToString());
                }
                Thread.Sleep(10);
            }
        }
Example #16
0
 public void SetFarmMobsFromDoodads(Zone zone, uint[] mobsIDs, uint[] doodadsIDs, double castDist = 0)
 {
     bestMob = null;
     lock (farmDoodadsIds)
         farmDoodadsIds = new List<uint>(doodadsIDs);
     lock (farmMobsIds)
         farmMobsIds = new List<uint>(mobsIDs);
     lock (farmZone)
         farmZone = zone;
     farmState = FarmState.DoodadsAndMobs;
     doodadCastDist = castDist;
 }
Example #17
0
    void SetFarmState(GameObject o, FarmState f, int j, int key)
    {
        Text[] t = o.GetComponentsInChildren <Text> ();
        Button b = o.GetComponentInChildren <Button> ();
        Plants p = LoadTxt.GetPlant(f.plantType);

        if (f.plantType == 0)
        {
            t[0].text = "Farm";
        }
        else
        {
            t[0].text = "Wine Cellar";
        }

        if (f.plantTime <= 0)
        {
            t [1].text  = "(Empty)";
            t [1].color = Color.grey;
            if (f.plantType == 0)
            {
                t [2].text = "Grow crops here.";
            }
            else if (f.plantType == 1)
            {
                t [2].text = "Make wine here.";
            }
            else if (f.plantType == 2)
            {
                t [2].text = "Make beer here.";
            }
            else if (f.plantType == 3)
            {
                t [2].text = "Make whiskey here.";
            }
            else
            {
                Debug.Log("wrong plantType!!");
            }
            b.interactable = true;
            b.name         = key.ToString() + "|Prepare";
            t [3].text     = "Prepare";
        }
        else
        {
            bool isMature = IsMature(f.plantTime, p);
            t [1].text  = isMature ? "(Collect)" : "(Wait)";
            t [1].color = isMature ? Color.green : Color.black;
            if (isMature)
            {
                if (f.plantType == 0)
                {
                    t [2].text = "Crops are ready.";
                }
                else if (f.plantType == 1)
                {
                    t [2].text = "Wine is ready.";
                }
                else if (f.plantType == 2)
                {
                    t [2].text = "Beer is ready.";
                }
                else if (f.plantType == 3)
                {
                    t [2].text = "Whiskey is ready.";
                }
                else
                {
                    Debug.Log("wrong plantType!!");
                }

                b.interactable = true;
                b.name         = key.ToString() + "|Charge";
                t [3].text     = "Collect";
            }
            else
            {
                t [2].text     = "Time: " + GetLeftTime(f.plantTime, p);
                b.interactable = false;
                b.name         = key.ToString() + "|Charge";
                t [3].text     = "Collect";
            }
        }
    }
Example #18
0
 public void SetFarmMobs(Zone zone, uint[] ids, uint[] UseSpecialItem)
 {
     bestMob = null;
     lock (farmMobsIds)
         farmMobsIds = new List<uint>(ids);
     lock (farmZone)
         farmZone = zone;
     specialItems = UseSpecialItem;
     farmState = FarmState.Enabled;
 }
Example #19
0
 public FarmTarget(Celestial target, FarmState farmState = FarmState.Idle, EspionageReport report = null)
 {
     Celestial = target;
     State     = farmState;
     Report    = report;
 }
Example #20
0
 public void SetFarmAggros()
 {
     bestMob = null;
     farmState = FarmState.AttackOnlyAgro;
 }
Example #21
0
        public void StopFarm()
        {
            // остановить роботов
            if (State != FarmState.Started) return;

            State = FarmState.Stopping;
            FarmScheduler.Instance.Stop();
            ThreadPool.QueueUserWorkItem(o =>
            {
                var acList = Accounts;
                foreach (var account in acList)
                {
                    try
                    {
                        account.StopProcessing();
                    }
                    catch (Exception ex)
                    {
                        AppendLogMessage("Ошибка останова счета " + account.AccountId + " " + ex);
                    }
                }
                State = FarmState.Stopped;
            });
        }
Example #22
0
 public void StopFarm()
 {
     bestMob = null;
     farmState = Modules.FarmState.Disabled;
 }
Example #23
0
        private void ActualizeQuotesAndStartCyborgs(object quotesObj)
        {
            var quotes = (Dictionary<string, DateTime?>)quotesObj;
            Dictionary<string, List<CandleDataBidAsk>> dicQuote = null;

            if (quotes.Count > 0)
            {
                // создать директорию котировок, если не существует
                var quotesFolder = ExecutablePath.ExecPath + QuoteFolder;
                try
                {
                    if (!Directory.Exists(quotesFolder))
                        Directory.CreateDirectory(quotesFolder);
                }
                catch (Exception ex)
                {
                    AppendLogMessage("Ошибка создания директории \"" + quotesFolder + "\": " + ex);
                    State = FarmState.Stopped;
                    return;
                }

                // освежить котировки в директории за указанный период
                dicQuote = TickerStorage.Instance.GetQuotes(quotes).Where(p => p.Value.Count > 0).ToDictionary(
                    p => p.Key, p => p.Value);
                AppendLogMessage("Завершена актуализация " + quotes.Count + " котировок");
            }

            // подготовить контекст
            var accountList = Accounts;
            var countOk = accountList.Count;
            foreach (var account in accountList)
            {
                if (!account.SetupLiveContext())
                    countOk--;
            }

            if (countOk == 0)
            {
                State = FarmState.Stopped;
                return;
            }
            AppendLogMessage("Контекст роботов инициализирован");

            // собрать статистику по времени обработки истории котировок
            // дать роботам переварить историю котировок, заботливо подкачанную заранее
            if (quotes.Count > 0)
            {
                var stream = new HistoryTickerStream(dicQuote);
                using (new TimeLogger("Ферма роботов стартовала, обработка истории заняла"))
                    while (true)
                    {
                        string[] names;
                        CandleDataBidAsk[] histQuotes;
                        if (!stream.Step(out names, out histQuotes)) break;
                        foreach (var account in accountList)
                        {
                            try
                            {
                                account.OnQuotesReceived(names, histQuotes, true);
                            }
                            catch (Exception ex)
                            {
                                Logger.Error("Ошибка обработки котировок по счету " + account.AccountId + ": " + ex);
                            }
                        }
                    }
            }

            // запланировать обновления портфелей
            try
            {
                FarmScheduler.Instance.ScheduleTopPortfolioUpdates(accounts);
                FarmScheduler.Instance.Start();
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка старта обновления портфелей", ex);
                throw;
            }

            State = FarmState.Started;

            // запустить поток, по-расписанию выполняющий процедуры
            timerThread.Start();

            AppendLogMessage("Запуск осуществлен");
        }
Example #24
0
        private void StartFarm()
        {
            if (State != FarmState.Stopped) return;

            // есть ли счета, разрешенные для торговли?
            if (Accounts.Count == 0 || !Accounts.Any(a => a.TradeEnabled)) return;
            var enabledAccounts = Accounts.Where(a => a.TradeEnabled).ToList();
            var robotsTotal = enabledAccounts.Sum(a => a.Robots.Count);

            // определить интервал истории, необходимый для загрузки
            // сменить состояние - ферма стартует
            State = FarmState.Starting;
            AppendLogMessage("Старт работы в " + DateTime.Now.ToStringUniform());
            var historyByTicker = BuildHistoryByTicker(robotsTotal, enabledAccounts);

            try
            {
                // актуализировать историю и запустить роботов
                ThreadPool.QueueUserWorkItem(ActualizeQuotesAndStartCyborgs,
                    historyByTicker.ToDictionary(h => h.Key, h => (DateTime?)h.Value));
            }
            catch (Exception ex)
            {
                AppendLogMessage("Ошибка запуска фермы роботов: " + ex);
            }
        }
Example #25
0
        public override void Run(CancellationToken ct)
        {
            while (true)
            {
                base.Run(ct);
                try
                {
                    if (!host.isAlive())
                    {
                        readyToActions = false;
                        while (host.me.resurrectionWaitingTime > 0)
                        {
                            Thread.Sleep(100);
                        }
                        Thread.Sleep(3000);
                        host.movementModule.ResumeGpsMove();
                        host.CancelMoveTo();
                        host.ResToRespoint();
                        Thread.Sleep(10000);
                        host.RestoreExp();
                        Thread.Sleep(2000);
                        farmState      = FarmState.Disabled;
                        readyToActions = true;
                    }
                    if (host.isAlive())
                    {
                        if (host.buffTime(95) == 0 && host.buffTime(426) == 0 && host.buffTime(427) == 0 && host.buffTime(428) == 0 && host.buffTime(429) == 0 && host.skillCooldown(10153) == 0)
                        {
                            UseSkillAndWait(10153, false, true);
                        }

                        //Лут дропа рядом
                        host.farmModule.PickUpNearMe();
                    }

                    if (farmState == FarmState.Enabled)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && ((host.mpp() > 40 && host.hpp() > 75) || aggroMobsCount() > 0))
                        {
                            bestMob = GetBestMob();
                        }
                        FarmRoute();
                    }
                    else if (farmState == FarmState.AttackOnlyAgro)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && host.mpp() > 10)
                        {
                            bestMob = GetBestAgroMob();
                        }
                        if (bestMob != null && host.isExists(bestMob) && host.isAlive(bestMob) && host.movementModule.gpsMoveEnabled && !host.movementModule.gpsMoveSuspended)
                        {
                            host.movementModule.SuspendGpsMove();
                        }
                        if (aggroMobsCount() == 0 && host.movementModule.gpsMoveEnabled && host.movementModule.gpsMoveSuspended)
                        {
                            host.movementModule.ResumeGpsMove();
                        }
                        FarmRoute();
                    }
                    else if (farmState == FarmState.Doodads)
                    {
                        if (aggroMobsCount() == 0)
                        {
                            CheckUnderWaterBreath();
                            for (int i = 0; i < farmDoodadsIds.Count; i++)
                            {
                                var doodad = getNearestDoodadInZone(farmDoodadsIds[i]);
                                if (doodad != null)
                                {
                                    var skills = doodad.getUseSkills();
                                    if (skills.Count > 0)
                                    {
                                        if (doodadCastDist == 0)
                                        {
                                            host.UseDoodadSkill(skills[0].id, doodad, true);
                                        }
                                        else
                                        {
                                            host.ComeTo(doodad, doodadCastDist, doodadCastDist);
                                            if (host.me.dist(doodad) <= doodadCastDist)
                                            {
                                                host.UseDoodadSkill(skills[0].id, doodad, true);
                                            }
                                        }
                                        Thread.Sleep(1000);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && host.mpp() > 10)
                            {
                                bestMob = GetBestAgroMob();
                            }
                            FarmRoute();
                        }
                    }
                    else if (farmState == FarmState.DoodadsAndMobs)
                    {
                        if ((bestMob == null || !host.isExists(bestMob) || (!host.isAlive(bestMob) && !((Npc)bestMob).dropAvailable)) && ((host.mpp() > 40 && host.hpp() > 75) || aggroMobsCount() > 0))
                        {
                            bestMob = GetBestMob();
                        }
                        if (bestMob == null)
                        {
                            CheckUnderWaterBreath();
                            for (int i = 0; i < farmDoodadsIds.Count; i++)
                            {
                                var doodad = getNearestDoodadInZone(farmDoodadsIds[i]);
                                if (doodad != null)
                                {
                                    var skills = doodad.getUseSkills();
                                    if (skills.Count > 0)
                                    {
                                        if (doodadCastDist == 0)
                                        {
                                            host.UseDoodadSkill(skills[0].id, doodad, true);
                                        }
                                        else
                                        {
                                            host.ComeTo(doodad, doodadCastDist, doodadCastDist);
                                            if (host.me.dist(doodad) <= doodadCastDist)
                                            {
                                                host.UseDoodadSkill(skills[0].id, doodad, true);
                                            }
                                        }
                                        Thread.Sleep(1000);
                                    }
                                }
                            }
                        }
                        else
                        {
                            FarmRoute();
                        }
                    }
                }
                catch (Exception error)
                {
                    //host.Log(error.ToString());
                }
                Thread.Sleep(10);
            }
        }