//public static void testConnection() //{ // MySqlConnection conn = new MySqlConnection(connStr); // try // { // AlliancePlugin.Log.Info("Connecting to MySQL..."); // conn.Open(); // string sql = "CREATE DATABASE IF NOT EXISTS AllianceBank"; // MySqlCommand cmd = new MySqlCommand(sql, conn); // cmd.ExecuteNonQuery(); // sql = "CREATE TABLE IF NOT EXISTS AllianceBank.BankBalances(allianceId CHAR(36) PRIMARY KEY, balance BIGINT)"; // cmd = new MySqlCommand(sql, conn); // cmd.ExecuteNonQuery(); // AlliancePlugin.Log.Info("Created the tables if it needed to"); // } // catch (Exception ex) // { // ReadyToSave = false; // conn.Close(); // AlliancePlugin.Log.Error("Error connecting to database, disabling bank features."); // AlliancePlugin.Log.Error(ex); // } // conn.Close(); // AlliancePlugin.Log.Info("Successfully connected to database!"); //} public static void DoUpkeepForOne(Alliance alliance) { try { using (var db = new LiteDatabase(connectionString)) { var collection = db.GetCollection <BankData>("BankData"); FileUtils jsonStuff = new FileUtils(); jsonStuff.WriteToJsonFile <Alliance>(AlliancePlugin.path + "//UpkeepBackups//" + alliance.AllianceId + ".json", alliance); var bank = collection.FindById(alliance.AllianceId); if (bank == null) { bank = new BankData { Id = alliance.AllianceId, balance = 1 }; collection.Insert(bank); alliance.failedUpkeep++; if (alliance.failedUpkeep >= AlliancePlugin.config.UpkeepFailBeforeDelete) { AllianceChat.SendChatMessage(alliance.AllianceId, "Upkeep", "Upkeep failed, met the threshold for delete. Deleting Alliance.", true, 0); AlliancePlugin.AllAlliances.Remove(alliance.name); File.Delete(AlliancePlugin.path + "//AllianceData//" + alliance.AllianceId + ".json"); foreach (long id in alliance.AllianceMembers) { AlliancePlugin.FactionsInAlliances.Remove(id); } } else { AllianceChat.SendChatMessage(alliance.AllianceId, "Upkeep", "Upkeep failed, Upgrades disabled.", true, 0); } } else { if (bank.balance >= alliance.GetUpkeep()) { bank.balance -= alliance.GetUpkeep(); collection.Update(bank); AllianceChat.SendChatMessage(alliance.AllianceId, "Upkeep", "Paying upkeep of " + String.Format("{0:n0}", alliance.GetUpkeep()) + " SC.", true, 0); alliance.Upkeep(alliance.GetUpkeep(), 1); alliance.bankBalance -= alliance.GetUpkeep(); alliance.failedUpkeep = 0; AlliancePlugin.SaveAllianceData(alliance); } else { alliance.failedUpkeep++; if (alliance.failedUpkeep >= AlliancePlugin.config.UpkeepFailBeforeDelete) { AllianceChat.SendChatMessage(alliance.AllianceId, "Upkeep", "Upkeep failed, met the threshold for delete. Deleting Alliance.", true, 0); AlliancePlugin.AllAlliances.Remove(alliance.name); File.Delete(AlliancePlugin.path + "//AllianceData//" + alliance.AllianceId + ".json"); foreach (long id in alliance.AllianceMembers) { AlliancePlugin.FactionsInAlliances.Remove(id); } } else { AllianceChat.SendChatMessage(alliance.AllianceId, "Upkeep", "Upkeep failed, Upgrades disabled.", true, 0); } } } } } catch (Exception ex) { AlliancePlugin.Log.Error("Error for all upkeep"); AlliancePlugin.Log.Error(ex); return; } }
public static void SendChatMessage(Guid allianceId, string prefix, string message, bool toDiscord, long playerId) { prefix = prefix.Replace(":", ""); Alliance alliance = AlliancePlugin.GetAllianceNoLoading(allianceId); List <ulong> OtherMembers = new List <ulong>(); message = message.Replace("@", ""); log.Info(allianceId.ToString() + " : " + alliance.name + " : " + prefix + " " + message); if (toDiscord && DiscordStuff.AllianceHasBot(allianceId)) { try { DiscordStuff.SendAllianceMessage(alliance, prefix, message); } catch (Exception ex) { AlliancePlugin.Log.Error(ex); if (DiscordStuff.debugMode) { if (MySession.Static.Players.GetPlayerByName("Crunch") != null) { MyPlayer player = MySession.Static.Players.GetPlayerByName("Crunch"); ShipyardCommands.SendMessage("Discord", "Bot not connected 1", Color.Blue, (long)player.Id.SteamId); } } } } else { if (DiscordStuff.debugMode) { if (MySession.Static.Players.GetPlayerByName("Crunch") != null) { MyPlayer player = MySession.Static.Players.GetPlayerByName("Crunch"); ShipyardCommands.SendMessage("Discord", "Bot not connected 2", Color.Blue, (long)player.Id.SteamId); } } } foreach (MyPlayer player in MySession.Static.Players.GetOnlinePlayers()) { if (player.Identity.IdentityId == playerId) { ShipyardCommands.SendMessage("Alliance chat", "You are in alliance chat.", new Color(alliance.r, alliance.g, alliance.b), (long)player.Id.SteamId); continue; } MyFaction fac = MySession.Static.Factions.TryGetPlayerFaction(player.Identity.IdentityId) as MyFaction; if (fac != null) { if (alliance.AllianceMembers.Contains(fac.FactionId)) { OtherMembers.Add(player.Id.SteamId); } } } foreach (ulong id in OtherMembers) { ShipyardCommands.SendMessage(prefix, message, new Color(alliance.r, alliance.g, alliance.b), (long)id); MyGpsCollection gpscol = (MyGpsCollection)MyAPIGateway.Session?.GPS; if (ScanChat(message, null) != null) { MyGps gpsRef = ScanChat(message, null); gpsRef.GPSColor = Color.Yellow; gpsRef.AlwaysVisible = true; gpsRef.ShowOnHud = true; long idenId = MySession.Static.Players.TryGetIdentityId(id); gpscol.SendAddGps(idenId, ref gpsRef); } } }
public static void DoChatMessage(TorchChatMessage msg, ref bool consumed) { if (msg.AuthorSteamId == null) { return; } if (msg.Channel == Sandbox.Game.Gui.ChatChannel.Private || msg.Channel == Sandbox.Game.Gui.ChatChannel.Faction) { return; } if (msg.Message.StartsWith("!")) { return; } if (PeopleInAllianceChat.ContainsKey((ulong)msg.AuthorSteamId)) { MyIdentity identity; if (IdentityIds.ContainsKey((ulong)msg.AuthorSteamId)) { identity = MySession.Static.Players.TryGetIdentity(IdentityIds[(ulong)msg.AuthorSteamId]); } else { identity = AlliancePlugin.GetIdentityByNameOrId(msg.AuthorSteamId.ToString()); } if (identity == null) { return; } MyFaction fac = MySession.Static.Factions.GetPlayerFaction(identity.IdentityId); if (fac == null) { bool noFac = true; if (AlliancePlugin.GetIdentityByNameOrId(msg.Author) != null) { if (MySession.Static.Factions.GetPlayerFaction(AlliancePlugin.GetIdentityByNameOrId(msg.Author).IdentityId) != null) { noFac = false; fac = MySession.Static.Factions.GetPlayerFaction(AlliancePlugin.GetIdentityByNameOrId(msg.Author).IdentityId); } } if (noFac) { PeopleInAllianceChat.Remove((ulong)msg.AuthorSteamId); AlliancePlugin.SendChatMessage("Failsafe", "Faction null"); } return; } if (AlliancePlugin.GetAllianceNoLoading(fac) == null) { PeopleInAllianceChat.Remove((ulong)msg.AuthorSteamId); AlliancePlugin.SendChatMessage("Failsafe", "Alliance null"); return; } consumed = true; Guid allianceId = PeopleInAllianceChat[(ulong)msg.AuthorSteamId]; List <ulong> OtherMembers = new List <ulong>(); Alliance alliance = AlliancePlugin.GetAllianceNoLoading(allianceId); // ShipyardCommands.SendMessage(msg.Author, "You are in alliance chat", Color.BlueViolet, (long)msg.AuthorSteamId); if (alliance.GetTitle((ulong)msg.AuthorSteamId).Equals("")) { SendChatMessage(allianceId, msg.Author, msg.Message, true, identity.IdentityId); } else { SendChatMessage(allianceId, alliance.GetTitle((ulong)msg.AuthorSteamId) + " | " + msg.Author, msg.Message, true, identity.IdentityId); } } else { // PeopleInAllianceChat.Remove((ulong)msg.AuthorSteamId); } }
public static void SendAllianceMessage(Alliance alliance, string prefix, string message) { if (AllianceHasBot(alliance.AllianceId) && alliance.DiscordChannelId > 0) { DiscordClient bot = allianceBots[alliance.AllianceId]; DiscordChannel chann = bot.GetChannelAsync(alliance.DiscordChannelId).Result; if (bot == null) { return; } if (WorldName.Equals("") && MyMultiplayer.Static.HostName != null) { if (MyMultiplayer.Static.HostName.Contains("SENDS")) { WorldName = MyMultiplayer.Static.HostName.Replace("SENDS", ""); } else { if (MyMultiplayer.Static.HostName.Equals("Sigma Draconis Lobby")) { WorldName = "01"; } else { WorldName = MyMultiplayer.Static.HostName; } } } try { botId = bot.SendMessageAsync(chann, "**[" + WorldName + "] " + prefix + "**: " + message.Replace(" /n", "\n")).Result.Author.Id; } catch (DSharpPlus.Exceptions.RateLimitException) { if (attempt <= 5) { attempt++; SendAllianceMessage(alliance, prefix, message); attempt = 0; } else { attempt = 0; } } catch (System.Net.Http.HttpRequestException) { AllianceChat.SendChatMessageFromDiscord(alliance.AllianceId, "Bot", "Failed to send message.", 0); } catch (Exception ex) { if (debugMode) { if (MySession.Static.Players.GetPlayerByName("Crunch") != null) { MyPlayer player = MySession.Static.Players.GetPlayerByName("Crunch"); ShipyardCommands.SendMessage("Discord", "" + ex.ToString(), Color.Blue, (long)player.Id.SteamId); } } } } else { if (debugMode) { if (MySession.Static.Players.GetPlayerByName("Crunch") != null) { MyPlayer player = MySession.Static.Players.GetPlayerByName("Crunch"); ShipyardCommands.SendMessage("Discord", "doesnt have bot or channel id is 0", Color.Blue, (long)player.Id.SteamId); } } } }