void HandleShipSelectionChanged(ShipNames newShipName) { if (gameCore.ColonyShips.TryGetValue(newShipName, out ColonyShip chosenShip)) { FocusShip = chosenShip; } }
public static void Main(string[] args) { var bot = new Bot(); Console.WriteLine(@" ██████╗ ██████╗ ██████╗ ╚════██╗ ╚════██╗██╔═████╗ █████╔╝ █████╔╝██║██╔██║ ██╔═══╝ ██╔═══╝ ████╔╝██║ ███████╗██╗███████╗╚██████╔╝ ╚══════╝╚═╝╚══════╝ ╚═════╝ "); //Font Name: ANSI Shadow CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("ru-RU"); CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("ru-RU"); ReloadSettings(); // Загрузим настройки InviterList.ReadFromXML(BotSettings.InviterXML); UsersLeftList.ReadFromXML(BotSettings.UsersLeftXML); PriceList.ReadFromXML(BotSettings.PriceListXML); Vote.Read(BotSettings.VotesXML); Note.Read(BotSettings.NotesXML); Subscriber.Read(BotSettings.SubscriberXML); ShipNames.Read(BotSettings.ShipNamesCSV); bot.RunBotAsync().GetAwaiter().GetResult(); }
bool Control(object[] Params) { if ((!Session.InSpace && !Session.InStation) || !Session.Safe) { return(false); } Name = Me.Name; CharID = Me.CharID; if (Bookmarks == null || BookmarkUpdate < DateTime.Now) { Bookmarks = Bookmark.All.Select(a => a.Title).ToArray(); BookmarkUpdate = DateTime.Now.AddMinutes(1); } if (Session.InFleet) { FleetMembers = Fleet.Members.Select(a => a.Name).ToArray(); } if (MyShip.CargoBay != null) { if (MyShip.CargoBay.IsPrimed) { if (MyShip.CargoBay.Items != null && MyShip.CargoBay.Items.Any()) { MyShip.CargoBay.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); }); } } else { MyShip.CargoBay.Prime(); return(false); } } if (MyShip.DroneBay != null) { if (MyShip.DroneBay.IsPrimed) { if (MyShip.DroneBay.Items != null && MyShip.DroneBay.Items.Any()) { MyShip.DroneBay.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); }); } } else { MyShip.DroneBay.Prime(); return(false); } } AgentMission.All.ForEach(a => { CachedMissions.AddOrUpdate(Agent.Get(a.AgentID).Name, new CachedMission(a.ContentID, a.Name, Agent.Get(a.AgentID).Level, a.State, a.Type)); }); AvailableAgents = Agent.MyAgents.Select(a => a.Name).ToList(); if (Session.InStation) { if (Station.ItemHangar != null) { if (Station.ItemHangar.IsPrimed) { if (Station.ItemHangar.Items != null && Station.ItemHangar.Items.Any()) { Station.ItemHangar.Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); }); } } else { Station.ItemHangar.Prime(); return(false); } } if (Station.ShipHangar != null) { if (Station.ShipHangar.IsPrimed) { if (Station.ShipHangar.Items != null && Station.ShipHangar.Items.Any()) { foreach (Item ship in Station.ShipHangar.Items.Where(ship => ship != null && ship.isUnpacked)) { ShipVolume.AddOrUpdate(ship.Type, ship.Volume); if (ship.Name != null) { ShipNames.Add(ship.Name); } } } } else { Station.ShipHangar.Prime(); return(false); } } if (FittingManager.Ready) { if (FittingManager.Fittings != null && FittingManager.Fittings.Any()) { Fittings = FittingManager.Fittings.Select(fit => fit.Name).ToList(); } } else { FittingManager.Prime(); } //for (int i = 0; i <= 6; i++) //{ // if (Session.InStation && Station.CorpHangar(i) != null) // { // if (Station.CorpHangar(i).IsPrimed) // { // Station.CorpHangar(i).Items.ForEach(a => { ItemVolume.AddOrUpdate(a.Type, a.Volume); }); // } // else // { // Station.CorpHangar(i).Prime(); // return false; // } // } //} } if (Session.InSpace) { ArmorPercent = MyShip.Armor / MyShip.MaxArmor; HullPercent = MyShip.Hull / MyShip.MaxHull; if (Drone.AllInSpace.Any(a => a.ToEntity.ArmorPct < 100 || a.ToEntity.HullPct < 100)) { DamagedDrones = true; } } return(false); }
public Ship(ShipNames name) { ShipCells = new List <Cell>(); Name = name; IsSunk = false; }
public static async Task CreateOnVoiceStateUpdated(DiscordClient client, VoiceStateUpdateEventArgs e) { try { if (e.Channel != null) { if (e.Channel.Id == Bot.BotSettings.AutocreateGalleon || e.Channel.Id == Bot.BotSettings.AutocreateBrigantine || e.Channel.Id == Bot.BotSettings.AutocreateSloop ) // мы создаем канал, если пользователь зашел в один из каналов автосоздания { if (ShipCooldowns.ContainsKey(e.User)) // проверка на кулдаун { if ((ShipCooldowns[e.User] - DateTime.Now).Seconds > 0) { var m = await e.Guild.GetMemberAsync(e.User.Id); await m.PlaceInAsync(e.Guild.GetChannel(Bot.BotSettings.WaitingRoom)); await m.SendMessageAsync($"{Bot.BotSettings.ErrorEmoji} Вам нужно подождать " + $"**{(ShipCooldowns[e.User] - DateTime.Now).Seconds}** секунд прежде чем " + "создавать новый корабль!"); client.Logger.LogInformation(BotLoggerEvents.Event, $"Участник {e.User.Username}#{e.User.Discriminator} ({e.User.Discriminator}) был перемещён в комнату ожидания."); return; } } // если проверка успешно пройдена, добавим пользователя // в словарь кулдаунов ShipCooldowns[e.User] = DateTime.Now.AddSeconds(Bot.BotSettings.FastCooldown); //Проверка на эмиссарство var channelSymbol = Bot.BotSettings.AutocreateSymbol; var member = await e.Guild.GetMemberAsync(e.User.Id); member.Roles.ToList().ForEach(x => { if (x.Id == Bot.BotSettings.EmissaryGoldhoadersRole) { channelSymbol = DiscordEmoji.FromName(client, ":moneybag:"); } else if (x.Id == Bot.BotSettings.EmissaryTradingCompanyRole) { channelSymbol = DiscordEmoji.FromName(client, ":pig:"); } else if (x.Id == Bot.BotSettings.EmissaryOrderOfSoulsRole) { channelSymbol = DiscordEmoji.FromName(client, ":skull:"); } else if (x.Id == Bot.BotSettings.EmissaryAthenaRole) { channelSymbol = DiscordEmoji.FromName(client, ":gem:"); } else if (x.Id == Bot.BotSettings.EmissaryReaperBonesRole) { channelSymbol = DiscordEmoji.FromName(client, ":skull_crossbones:"); } else if (x.Id == Bot.BotSettings.HuntersRole) { channelSymbol = DiscordEmoji.FromName(client, ":fish:"); } }); var autoCreateSloopCategory = e.Guild.GetChannel(Bot.BotSettings.AutocreateSloopCategory); var autoCreateBrigantineCategory = e.Guild.GetChannel(Bot.BotSettings.AutocreateBrigantineCategory); var autoCreateGalleongCategory = e.Guild.GetChannel(Bot.BotSettings.AutocreateGalleonCategory); //Генерируем создание канала var used_names = autoCreateSloopCategory.Children.Select(x => x.Name).ToArray(); used_names.Concat(autoCreateBrigantineCategory.Children.Select(x => x.Name).ToArray()); used_names.Concat(autoCreateGalleongCategory.Children.Select(x => x.Name).ToArray()); var generatedName = ShipNames.GenerateChannelName(used_names); var channelName = $"{channelSymbol} {generatedName}"; DiscordChannel created = null; if (!Bot.ShipNamesStats.ContainsKey(generatedName)) // create a key-value pair for a new ship name { Bot.ShipNamesStats[generatedName] = new[] { 0, 0, 0 } } ; if (e.Channel.Id == Bot.BotSettings.AutocreateSloop) { Bot.ShipNamesStats[generatedName][0]++; created = await e.Guild.CreateVoiceChannelAsync( channelName, autoCreateSloopCategory, bitrate : Bot.BotSettings.Bitrate, user_limit : 2); } else if (e.Channel.Id == Bot.BotSettings.AutocreateBrigantine) { Bot.ShipNamesStats[generatedName][1]++; created = await e.Guild.CreateVoiceChannelAsync( channelName, autoCreateBrigantineCategory, bitrate : Bot.BotSettings.Bitrate, user_limit : 3); } else { Bot.ShipNamesStats[generatedName][2]++; created = await e.Guild.CreateVoiceChannelAsync( channelName, autoCreateGalleongCategory, bitrate : Bot.BotSettings.Bitrate, user_limit : 4); } FastShipStats.WriteToFile(Bot.ShipNamesStats, "generated/stats/ship_names.csv"); await member.PlaceInAsync(created); client.Logger.LogInformation(BotLoggerEvents.Event, $"Участник {e.User.Username}#{e.User.Discriminator} ({e.User.Id}) создал канал через автосоздание." + $" Каналов в категории: {created.Parent.Children.Count()}"); } } } catch (NullReferenceException) // исключение выбрасывается если пользователь покинул канал { // нам здесь ничего не надо делать, просто пропускаем } }