From 77abaa367c1cd942cb6b380529c8fefb57b88bca Mon Sep 17 00:00:00 2001 From: Terminator_97 <50580453+francesco132@users.noreply.github.com> Date: Thu, 22 Oct 2020 14:58:18 +0200 Subject: [PATCH] 2.3.5 --- SCPUtils/Commands/SetBadge.cs | 7 ++++++- SCPUtils/Functions/EventHandlers.cs | 7 +++---- SCPUtils/Functions/Functions.cs | 7 +++++-- SCPUtils/Plugin.cs | 8 +++++--- SCPUtils/Properties/AssemblyInfo.cs | 6 +++--- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/SCPUtils/Commands/SetBadge.cs b/SCPUtils/Commands/SetBadge.cs index 33c2e0d..0c3f1c0 100644 --- a/SCPUtils/Commands/SetBadge.cs +++ b/SCPUtils/Commands/SetBadge.cs @@ -54,8 +54,13 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s databasePlayer.BadgeExpire = DateTime.Now.AddMinutes(duration); Database.LiteDatabase.GetCollection().Update(databasePlayer); var group = ServerStatic.GetPermissionsHandler()._groups[badge]; + if(group.KickPower > ((CommandSender)sender).KickPower && !((CommandSender)sender).FullPermissions) + { + response = $"You need a higher administration level to use this command: The group you are trying to set has more kick power than yours. (Your kick power: {((CommandSender)sender).KickPower}, Required: {group.KickPower})"; + return false; + } if (player != null) player.ReferenceHub.serverRoles.SetGroup(group, false, true, true); - response = "Badge set!"; + response = $"Successfully setted {group.BadgeText} badge! Duration: {duration} minute(s)!"; } else response = "Arg3 must be integer!"; diff --git a/SCPUtils/Functions/EventHandlers.cs b/SCPUtils/Functions/EventHandlers.cs index 16c04e7..a414527 100644 --- a/SCPUtils/Functions/EventHandlers.cs +++ b/SCPUtils/Functions/EventHandlers.cs @@ -15,9 +15,10 @@ public class EventHandlers public DateTime lastTeslaEvent; - public static bool TemporarilyDisabledWarns; + public static bool TemporarilyDisabledWarns; public EventHandlers(ScpUtils pluginInstance) => this.pluginInstance = pluginInstance; + internal void OnPlayerDeath(DyingEventArgs ev) { @@ -25,7 +26,7 @@ internal void OnPlayerDeath(DyingEventArgs ev) { if ((DateTime.Now - lastTeslaEvent).Seconds >= pluginInstance.Config.Scp079TeslaEventWait) { - if (ev.HitInformation.GetDamageType() == DamageTypes.Tesla || (ev.HitInformation.GetDamageType() == DamageTypes.Wall && pluginInstance.Config.QuitEqualsSuicide)) pluginInstance.Functions.OnQuitOrSuicide(ev.Target); + if (ev.HitInformation.GetDamageType() == DamageTypes.Tesla || ( ev.HitInformation.GetDamageType() == DamageTypes.Wall && ev.HitInformation.Amount >= 50000 ) && pluginInstance.Config.QuitEqualsSuicide) pluginInstance.Functions.OnQuitOrSuicide(ev.Target); } } } @@ -69,8 +70,6 @@ internal void OnPlayerJoin(JoinedEventArgs ev) else pluginInstance.Functions.PostLoadPlayer(ev.Player); } - - internal void OnPlayerSpawn(SpawningEventArgs ev) { if (ev.Player.Team == Team.SCP || (pluginInstance.Config.AreTutorialsSCP && ev.Player.Team == Team.TUT)) ev.Player.GetDatabasePlayer().TotalScpGamesPlayed++; diff --git a/SCPUtils/Functions/Functions.cs b/SCPUtils/Functions/Functions.cs index 7c566bb..4169236 100644 --- a/SCPUtils/Functions/Functions.cs +++ b/SCPUtils/Functions/Functions.cs @@ -16,7 +16,7 @@ public class Functions private readonly ScpUtils pluginInstance; public Functions(ScpUtils pluginInstance) => this.pluginInstance = pluginInstance; - + public Dictionary LastWarn { get; private set; } = new Dictionary(); public void AutoBanPlayer(Exiled.API.Features.Player player) { int duration; @@ -44,10 +44,13 @@ public void AutoWarnPlayer(Exiled.API.Features.Player player) public void OnQuitOrSuicide(Exiled.API.Features.Player player) { + if (!LastWarn.ContainsKey(player.UserId)) LastWarn.Add(player.UserId, DateTime.MinValue); + else if (LastWarn[player.UserId] >= DateTime.Now) return; var suicidePercentage = player.GetDatabasePlayer().SuicidePercentage; AutoWarnPlayer(player); if (pluginInstance.Config.EnableSCPSuicideAutoBan && suicidePercentage >= pluginInstance.Config.AutoBanThreshold && player.GetDatabasePlayer().TotalScpGamesPlayed > pluginInstance.Config.ScpSuicideTollerance) AutoBanPlayer(player); else if (pluginInstance.Config.AutoKickOnSCPSuicide && suicidePercentage >= pluginInstance.Config.AutoKickThreshold && suicidePercentage < pluginInstance.Config.AutoBanThreshold && player.GetDatabasePlayer().TotalScpGamesPlayed > pluginInstance.Config.ScpSuicideTollerance) AutoKickPlayer(player); + LastWarn[player.UserId] = DateTime.Now.AddSeconds(5); } public void PostLoadPlayer(Exiled.API.Features.Player player) @@ -130,7 +133,7 @@ private void BroadcastSuicideQuitAction(string text) { if (pluginInstance.Config.BroadcastSanctions) { - if (admin.ReferenceHub.serverRoles.RemoteAdmin) Map.Broadcast(12, text, Broadcast.BroadcastFlags.AdminChat); + if (admin.ReferenceHub.serverRoles.RemoteAdmin) admin.Broadcast(12, text, Broadcast.BroadcastFlags.AdminChat); } } } diff --git a/SCPUtils/Plugin.cs b/SCPUtils/Plugin.cs index dd962d1..9c9099e 100644 --- a/SCPUtils/Plugin.cs +++ b/SCPUtils/Plugin.cs @@ -14,11 +14,11 @@ public class ScpUtils : Features.Plugin { private static readonly Lazy LazyInstance = new Lazy(() => new ScpUtils()); public static ScpUtils StaticInstance => LazyInstance.Value; - public static string pluginVersion = "2.3.3"; + public static string pluginVersion = "2.3.5"; public override string Author { get; } = "Terminator_9#0507"; public override string Name { get; } = "SCPUtils"; - public override Version Version { get; } = new Version(2, 3, 4); - public override Version RequiredExiledVersion { get; } = new Version(2, 1, 2); + public override Version Version { get; } = new Version(2, 3, 5); + public override Version RequiredExiledVersion { get; } = new Version(2, 1, 7); public EventHandlers EventHandlers { get; private set; } public Functions Functions { get; private set; } public Player Player { get; private set; } @@ -43,6 +43,7 @@ public void LoadEvents() Exiled.Events.Handlers.Scp079.InteractingTesla += EventHandlers.On079TeslaEvent; ServerEvents.WaitingForPlayers += EventHandlers.OnWaitingForPlayers; ServerEvents.RoundEnded += EventHandlers.OnRoundEnded; + } public override void OnEnabled() @@ -81,6 +82,7 @@ public override void OnDisabled() ServerEvents.RoundEnded -= EventHandlers.OnRoundEnded; EventHandlers = null; Functions = null; + Functions.LastWarn.Clear(); Database.LiteDatabase.Dispose(); Harmony.UnpatchAll(); } diff --git a/SCPUtils/Properties/AssemblyInfo.cs b/SCPUtils/Properties/AssemblyInfo.cs index 6cb0d89..b0d2892 100644 --- a/SCPUtils/Properties/AssemblyInfo.cs +++ b/SCPUtils/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("SCPUtils")] -[assembly: AssemblyDescription("SCPUtils 2.3.4")] +[assembly: AssemblyDescription("SCPUtils 2.3.5")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("SCPUtils")] @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.3.4.0")] -[assembly: AssemblyFileVersion("2.3.4.0")] \ No newline at end of file +[assembly: AssemblyVersion("2.3.5.0")] +[assembly: AssemblyFileVersion("2.3.5.0")] \ No newline at end of file