public static void CollectMaterials() { foreach (var data in Core.GlobalData.Buildings) { if (data.UpgStart == 0 && data.ProdStart != 0) { var def = Definitions.BuildingDef.Items.Item.First(n => n.DefId == data.DefId); if (def.Type != "factory") { continue; } var defs = def.Levels.Level.First(n => n.Id == data.Level); var started = TimeUtils.FromUnixTime(data.ProdStart); // var prodtime = defs.ProdOutputs.ProdOutput[data.ProdId - 1]; //todo add this! if ((TimeUtils.FixedUTCTime - started).TotalSeconds > defs.ProdOutputs.ProdOutput[0].Time) { Logger.Info( string.Format( Localization.BUILDINGS_COLLECTING, defs.ProdOutputs.ProdOutput[0].Amount, MaterialDB.GetLocalizedName(defs.ProdOutputs.ProdOutput[0].MaterialId))); Networking.AddTask(new Task.FinishBuildingProducingTask(data.InstId)); data.ProdStart = 0; } } } }
public static void FinishUpgrade() { foreach (var data in Core.GlobalData.Buildings) { if (data.UpgStart != 0 && data.ProdStart == 0) { var defined = Definitions.BuildingDef.Items.Item.FirstOrDefault(n => n.DefId == data.DefId); var upgrade = defined.Levels.Level.FirstOrDefault(n => n.Id == data.Level + 1); if (upgrade != null) { if ((TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(data.UpgStart)).TotalSeconds > upgrade.UpgradeTime) { Logger.Info( string.Format( Localization.BUILDINGS_FINISHED_UPG, LocalizationCache.GetNameFromLoc(defined.NameLoc, defined.Name))); Networking.AddTask(new Task.FinishBuildingUpgradeTask(data.InstId)); data.UpgStart = 0; data.Level++; } } } } }
public static void CollectFish() { var totalfish = 0; foreach (var boat in Core.GlobalData.Boats) { var started = TimeUtils.FromUnixTime(boat.ProdStart); var b = Definitions.BoatDef.Items.Item.FirstOrDefault(n => n.DefId == 1)?.Levels.Level .FirstOrDefault(n => n.Id == Core.GlobalData.BoatLevel); if (b == null) { continue; } var turns = Math.Round((TimeUtils.FixedUTCTime - started).TotalSeconds / b.TurnTime); if (turns > b.TurnCount / 2) { totalfish += (int)(b.OutputAmount * turns); Networking.AddTask(new Task.TakeFish(boat)); } } if (totalfish > 0) { Logger.Info(string.Format(Localization.FISH_COLLECTING, totalfish)); } }
public static void CollectMuseum() { // 12 = museum var museum = Core.GlobalData.Buildings.FirstOrDefault(n => n.DefId == 12); if (museum == null) { return; } var slot = Core.GlobalData.Slots.FirstOrDefault(n => n.Type == "museum_ship"); if (slot == null) { return; } if (slot.SlotUsed == 0) { return; } var started = TimeUtils.FromUnixTime(slot.LastUsed); var b = Definitions.MuseumLvlDef.Items.Item.First(n => n.DefId == slot.Level); var turns = Math.Round((TimeUtils.FixedUTCTime - started).TotalSeconds / b.TurnTime); if (turns >= b.TurnCount) { museum.ProdStart = TimeUtils.GetEpochTime(); Logger.Info(Localization.MUSEUM_COLLECT); Networking.AddTask(new Task.ConfirmMuseumTask(b.TurnCount)); } }
public static BindingList <Ship> GetShips() { var ret = new BindingList <Ship>(); if (Core.GlobalData == null) { return(ret); } if (Core.GlobalData.Buildings == null) { return(ret); } foreach (var ship in Core.GlobalData.Ships.Where(n => n.Activated != 0)) { var name = LocalizationCache.GetNameFromLoc( Definitions.ShipDef.Items.Item.Where(n => n.DefId == ship.DefId)?.FirstOrDefault()?.NameLoc, Definitions.ShipDef.Items.Item.FirstOrDefault(n => n.DefId == ship.DefId)?.Name); var Ship = new Ship(); Ship.ID = ship.InstId; Ship.Name = name; var willatportat = string.Empty; if (ship.Sent != 0) { try { Ship.Route = LocalizationCache.GetNameFromLoc(ship.GetTravelName(), string.Empty); if (ship.Type == "social_contract") { Ship.Route = PrivateLocal.SHIPS_SOCIAL_CONTRACT; } var willatportattime = ship.Sent + ship.GetTravelTime(); // lol xD if ((TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willatportattime)).TotalSeconds > 0) { willatportat = "--:--:--"; } else { willatportat = (TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willatportattime)).ToString( @"hh\:mm\:ss"); } } catch (Exception) { } } Ship.InPortAt = willatportat; ret.Add(Ship); } return(ret); }
/// <summary> /// Parse a line from ausearch output into an AuditEvent /// </summary> /// <param name="eventText">Line from ausearch</param> /// <returns>An AuditEvent</returns> public static AuditEvent ParseFromAusearchLine(string eventText) { var messageData = new Dictionary <AuditMessageProperty, string>(); foreach (AuditMessageProperty prop in Enum.GetValues(typeof(AuditMessageProperty))) { if (TryGetPropertyValue(eventText, prop, out string match)) { string expectedValue; if (prop == AuditMessageProperty.SocketAddress) { expectedValue = match; // In case of 'saddr', hex-encoded bytes are expected } else { expectedValue = EncodedAuditFieldsUtils.DecodeHexStringIfNeeded(match, Encoding.UTF8); } messageData[prop] = expectedValue; if (prop == AuditMessageProperty.ProcessArgCount && UInt32.TryParse(match, out uint argCount)) { string[] processCommandArgs = new string[argCount]; for (int i = 0; i < argCount; i++) { string parameter = Regex.Match(eventText, string.Format(QuotedPropertyRegexTemplate, $"a{i}")).Value; if (string.IsNullOrEmpty(parameter)) { var encodedString = Regex.Match(eventText, string.Format(PropertyRegexTemplate, $"a{i}")).Value; parameter = EncodedAuditFieldsUtils.DecodeHexStringIfNeeded(encodedString, Encoding.UTF8); } processCommandArgs[i] = parameter; } messageData[AuditMessageProperty.CommandLine] = String.Join(' ', processCommandArgs); } } } if (messageData.ContainsKey(AuditMessageProperty.FilePath)) { messageData[AuditMessageProperty.Executable] = messageData[AuditMessageProperty.FilePath]; } AuditEventType type = (AuditEventType)TypeRegex.Match(eventText).Value.ParseFromDisplayName <AuditEventType>(); string eventId = IdRegex.Match(eventText).Value; DateTime eventTimeUTC = TimeUtils.FromUnixTime(eventId.Split(':').First()); var ev = new AuditEvent ( type, eventTimeUTC, eventId, messageData, eventText ); return(ev); }
public DateTime RetrieveGuildBamDateTime() { var t = DownloadGuildBamTimestamp(); t.Wait(); var ts = t.Result; return(TimeUtils.FromUnixTime(ts)); }
public PlayerLevel(IDictionary data) { foreach (string x in data.Keys) { if (x == "date") { date = TimeUtils.FromUnixTime(data[x]); } else { this[x] = data[x]; } } }
public PlayerAward(Dictionary <string, object> data) { foreach (string x in data.Keys) { if (x == "date") { date = TimeUtils.FromUnixTime(data[x]); continue; } if (x == "awarded") { awarded = new PlayerAchievement((Dictionary <string, object>)data[x]); continue; } this[x] = data[x]; } }
public TakeFish(Boat boat) { this.Time = (uint)TimeUtils.GetEpochTime(); // calculate turns :thinking: var started = TimeUtils.FromUnixTime(boat.ProdStart); var b = Definitions.BoatDef.Items.Item.First(n => n.DefId == 1).Levels.Level .First(n => n.Id == Core.GlobalData.BoatLevel); var turns = Math.Round((TimeUtils.FixedUTCTime - started).TotalSeconds / b.TurnTime); this.CustomObjects.Add("inst_id", boat.InstId); if (turns > b.TurnCount) { this.CustomObjects.Add("turns", b.TurnCount); } else { this.CustomObjects.Add("turns", turns); } Core.GlobalData.Boats.First(n => n.InstId == boat.InstId).ProdStart = TimeUtils.GetEpochTime(); }
public static bool IsVoyageCompleted(this Ship ship, int offset = 0) { return((TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(ship.Sent)).TotalSeconds > ship.GetTravelTime() + offset); }
public static void Sleep() { if (Core.Config.sleepevery != 0) { if ((DateTime.Now - Core.lastsleep).TotalMinutes >= (Core.Config.sleepeveryhrs ? Core.Config.sleepevery * 60 : Core.Config.sleepevery)) { var sleeptimeinmin = 0; Core.lastsleep = DateTime.Now; if (Core.Config.smartsleepenabled) { // 10 min var thresholdinmin = 20; var DelayMinList = new List <int>(); foreach (var ship in Core.GlobalData.Ships.Where(n => n.Activated != 0)) { if (ship.Sent != 0) { try { var shipdef = Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId); if (shipdef == null) { continue; } if (Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId) ?.Levels == null) { continue; } if (Definitions.UpgrDef.Items.Item.FirstOrDefault(n => n.DefId == ship.TargetId) ?.Levels.Level.Count == 0) { continue; } var lvl = Definitions.UpgrDef.Items.Item .FirstOrDefault(n => n.DefId == ship.TargetId)?.Levels.Level .FirstOrDefault(n => n.Id == ship.TargetLevel); if (lvl == null) { continue; } var willatportattime = ship.Sent + lvl.TravelTime; // lol xD if (!((TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willatportattime)) .TotalSeconds > 0)) { DelayMinList.Add( (int)Math.Ceiling( (TimeUtils.FromUnixTime(willatportattime) - TimeUtils.FixedUTCTime) .TotalMinutes)); } } catch (Exception) { Logger.Debug( $"Again f*****g exception -> Ship def id = {ship.DefId} Destination = {ship.TargetId} Level = {ship.TargetLevel}"); } } } foreach (var building in Core.GlobalData.Buildings) { if (building.ProdStart != 0) { var willbeproducedat = building.ProdStart + Definitions.BuildingDef.Items.Item .First(n => n.DefId == building.DefId).Levels.Level .First(n => n.Id == building.Level).ProdOutputs.ProdOutput[0] .Time; // lol xD DelayMinList.Add( (int)Math.Ceiling( (TimeUtils.FromUnixTime(willbeproducedat) - TimeUtils.FixedUTCTime) .TotalMinutes)); } if (building.UpgStart != 0) { var willbeproducedat = building.UpgStart + Definitions.BuildingDef.Items.Item .Where(n => n.DefId == building.DefId).First().Levels.Level .Where(n => n.Id == building.Level + 1).First().UpgradeTime; DelayMinList.Add( (int)Math.Ceiling( (TimeUtils.FromUnixTime(willbeproducedat) - TimeUtils.FixedUTCTime) .TotalMinutes)); } } // Find center var a = DelayMinList.Where(n => n > thresholdinmin).GroupBy(i => i); var b = a.OrderByDescending(grp => grp.Count()); var mostlikely = b.Select(grp => grp.Key).FirstOrDefault(); var avg = (int)DelayMinList.Average(); if (mostlikely > avg * 1.5) { sleeptimeinmin = avg > thresholdinmin ? avg : thresholdinmin; } else { sleeptimeinmin = mostlikely > thresholdinmin ? mostlikely : thresholdinmin; } } else { sleeptimeinmin = Core.Config.sleepforhrs ? Core.Config.sleepfor * 60 : Core.Config.sleepfor; } new Task( () => { Core.StopBot(); Logger.Info(string.Format(Localization.SLEEP_STARTING, sleeptimeinmin)); Thread.Sleep(sleeptimeinmin * 60 * 1000); Core.StartBot(); }).Start(); // StartSleeping } } }
public async Task <DateTime> RetrieveGuildBamDateTime() { var t = await DownloadGuildBamTimestamp(); return(TimeUtils.FromUnixTime(t)); }
public static BindingList <Building> GetBuildings() { var ret = new BindingList <Building>(); if (Core.GlobalData == null) { return(ret); } if (Core.GlobalData.Buildings == null) { return(ret); } foreach (var building in Core.GlobalData.Buildings) { var Building = new Building(); Building.ID = building.InstId; Building.Name = LocalizationCache.GetNameFromLoc( Definitions.BuildingDef.Items.Item.Where(n => n.DefId == building.DefId).FirstOrDefault() ?.NameLoc, Definitions.BuildingDef.Items.Item.Where(n => n.DefId == building.DefId).FirstOrDefault() ?.Name); Building.Level = building.Level; var producing = string.Empty; if (building.ProdStart != 0) { var willbeproducedat = building.ProdStart + Definitions.BuildingDef.Items.Item .Where(n => n.DefId == building.DefId).FirstOrDefault()?.Levels.Level .Where(n => n.Id == building.Level).FirstOrDefault()?.ProdOutputs .ProdOutput[0].Time; if (willbeproducedat.HasValue) { producing = (TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willbeproducedat.Value)) .ToString(@"hh\:mm\:ss"); } // lol xD } var upgrade = string.Empty; if (building.UpgStart != 0) { var willbeproducedat = building.UpgStart + Definitions.BuildingDef.Items.Item .Where(n => n.DefId == building.DefId).FirstOrDefault()?.Levels.Level .Where(n => n.Id == building.Level + 1).FirstOrDefault() ?.UpgradeTime; if (willbeproducedat.HasValue) { upgrade = (TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime((long)willbeproducedat)) .ToString(@"hh\:mm\:ss"); } } if (building.DefId == 12) { if (building.UpgStart == 0) { var slot = Core.GlobalData.Slots.FirstOrDefault(n => n.Type == "museum_ship"); if (slot == null) { continue; } if (slot.SlotUsed == 0) { continue; } var started = TimeUtils.FromUnixTime(slot.LastUsed); var b = Definitions.MuseumLvlDef.Items.Item.First(n => n.DefId == building.Level); producing = (TimeUtils.FixedUTCTime - started.AddSeconds(b.TurnCount * b.TurnTime)) .ToString(@"hh\:mm\:ss"); } } Building.UpgradeIgnore = false; Building.Producing = producing; Building.Upgrade = upgrade; ret.Add(Building); } return(ret); }
private string GetShips() { var builder = new StringBuilder(); if (Core.GlobalData != null) { if (Core.GlobalData.Ships != null) { foreach (var ship in Core.GlobalData.Ships.Where(n => n.Activated != 0)) { var name = LocalizationCache.GetNameFromLoc( Definitions.ShipDef.Items.Item.Where(n => n.DefId == ship.DefId)?.FirstOrDefault()?.NameLoc, Definitions.ShipDef.Items.Item.FirstOrDefault(n => n.DefId == ship.DefId)?.Name); builder.Append(name + "|"); if (ship.Sent != 0) { try { if (ship.Type == "social_contract") { builder.Append(PrivateLocal.SHIPS_SOCIAL_CONTRACT); } else { builder.Append(LocalizationCache.GetNameFromLoc(ship.GetTravelName(), string.Empty)); } var willatportattime = ship.Sent + ship.GetTravelTime(); // lol xD if ((TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willatportattime)).TotalSeconds > 0) { builder.Append("|--:--:--"); } else { builder.Append("|" + (TimeUtils.FixedUTCTime - TimeUtils.FromUnixTime(willatportattime)).ToString( @"hh\:mm\:ss")); } } catch (Exception) { } } builder.AppendLine(); } } else { builder.Append(PrivateLocal.TELEGRAM_EXCEPTION_NULL); } } else { builder.Append(PrivateLocal.TELEGRAM_EXCEPTION_NULL); } return(builder.ToString()); }