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); }
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))); }
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; }
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; }
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; }
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; }
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; }
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); } }
public override void Start(Host host) { base.Start(host); farmState = FarmState.Disabled; }
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; }
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; }
public void StopFarm() { bestMob = null; farmState = Modules.FarmState.Disabled; }
public void SetFarmAggros() { bestMob = null; farmState = FarmState.AttackOnlyAgro; }
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); } }
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; }
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"; } } }
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; }
public FarmTarget(Celestial target, FarmState farmState = FarmState.Idle, EspionageReport report = null) { Celestial = target; State = farmState; Report = report; }
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; }); }
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("Запуск осуществлен"); }
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); } }
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); } }