diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs index ddfab0f..769fd51 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs @@ -22,7 +22,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleAuthor => "daffyy & Dliix66"; - public override string ModuleVersion => "1.7.8-beta-4"; + public override string ModuleVersion => "1.7.8-beta-5"; public override void Load(bool hotReload) { diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj index 12d7886..af5fd82 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj @@ -19,16 +19,16 @@ - + none runtime compile; build; native; contentfiles; analyzers; buildtransitive - + - - + + diff --git a/CS2-SimpleAdmin/Helper.cs b/CS2-SimpleAdmin/Helper.cs index 3b9ff2a..b7573d4 100644 --- a/CS2-SimpleAdmin/Helper.cs +++ b/CS2-SimpleAdmin/Helper.cs @@ -64,7 +64,7 @@ internal static class Helper public static List GetValidPlayers() { - return CS2_SimpleAdmin.CachedPlayers.AsValueEnumerable().ToList(); + return CS2_SimpleAdmin.CachedPlayers.AsValueEnumerable().Where(p => p.Connected == PlayerConnectedState.PlayerConnected).ToList(); } public static List GetValidPlayersWithBots() @@ -583,27 +583,32 @@ internal static class Helper } public static void DisplayCenterMessage( - CCSPlayerController player, - string messageKey, - string? callerName = null, + CCSPlayerController player, + string messageKey, + string? callerName = null, params object[] messageArgs) { if (CS2_SimpleAdmin._localizer == null) return; + // Determine the localized message key var localizedMessageKey = $"{messageKey}"; var formattedMessageArgs = messageArgs.Select(arg => arg?.ToString() ?? string.Empty).ToArray(); + // Replace placeholder based on showActivityType for (var i = 0; i < formattedMessageArgs.Length; i++) { - var arg = formattedMessageArgs[i]; + var arg = formattedMessageArgs[i]; // Convert argument to string if not null + // Replace "CALLER" placeholder in the argument string formattedMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch { 1 => arg.Replace("CALLER", CS2_SimpleAdmin._localizer["sa_admin"]), + 2 => arg.Replace("CALLER", callerName ?? "Console"), _ => arg }; } + // Print the localized message to the center of the screen for the player using (new WithTemporaryCulture(player.GetLanguage())) { player.PrintToCenter(CS2_SimpleAdmin._localizer[localizedMessageKey, formattedMessageArgs.Cast().ToArray()]); diff --git a/CS2-SimpleAdmin/Managers/PlayerManager.cs b/CS2-SimpleAdmin/Managers/PlayerManager.cs index cd28d1c..1378962 100644 --- a/CS2-SimpleAdmin/Managers/PlayerManager.cs +++ b/CS2-SimpleAdmin/Managers/PlayerManager.cs @@ -364,7 +364,12 @@ internal class PlayerManager foreach (var player in bannedPlayers) { if (!player.UserId.HasValue) continue; - await Server.NextWorldUpdateAsync(() => Helper.KickPlayer((int)player.UserId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED)); + await Server.NextWorldUpdateAsync(() => + { + if (Helper.GetPlayerFromSteamid64(player.SteamID) != null) + Helper.KickPlayer((int)player.UserId, + NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED); + }); } } diff --git a/CS2-SimpleAdmin/Menus/BasicMenu.cs b/CS2-SimpleAdmin/Menus/BasicMenu.cs index ec2fb6b..1234079 100644 --- a/CS2-SimpleAdmin/Menus/BasicMenu.cs +++ b/CS2-SimpleAdmin/Menus/BasicMenu.cs @@ -57,8 +57,9 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - slapMenu.AddSubMenu(playerName, () => CreateSlapDamageMenu(admin, player)); + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + slapMenu.AddSubMenu(playerName, () => CreateSlapDamageMenu(admin, capturedPlayer)); } return slapMenu.WithBackButton(); @@ -112,12 +113,13 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; slayMenu.AddOption(playerName, _ => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Slay(admin, player); + CS2_SimpleAdmin.Slay(admin, capturedPlayer); } }); } @@ -139,13 +141,14 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - kickMenu.AddSubMenu(playerName, () => CreateReasonMenu(admin, player, "Kick", PenaltyType.Kick, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + kickMenu.AddSubMenu(playerName, () => CreateReasonMenu(admin, capturedPlayer, "Kick", PenaltyType.Kick, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Kick(admin, player, reason, admin.PlayerName); + CS2_SimpleAdmin.Instance.Kick(admin, capturedPlayer, reason, admin.PlayerName); } })); } @@ -167,14 +170,15 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - warnMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, player, "Warn", - (_, _, duration) => CreateReasonMenu(admin, player, "Warn", PenaltyType.Warn, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + warnMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, capturedPlayer, "Warn", + (_, _, duration) => CreateReasonMenu(admin, capturedPlayer, "Warn", PenaltyType.Warn, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Warn(admin, player, duration, reason, admin.PlayerName); + CS2_SimpleAdmin.Instance.Warn(admin, capturedPlayer, duration, reason, admin.PlayerName); } }))); } @@ -196,14 +200,15 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - banMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, player, "Ban", - (_, _, duration) => CreateReasonMenu(admin, player, "Ban", PenaltyType.Ban, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + banMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, capturedPlayer, "Ban", + (_, _, duration) => CreateReasonMenu(admin, capturedPlayer, "Ban", PenaltyType.Ban, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Ban(admin, player, duration, reason, admin.PlayerName); + CS2_SimpleAdmin.Instance.Ban(admin, capturedPlayer, duration, reason, admin.PlayerName); } }))); } @@ -225,14 +230,15 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - gagMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, player, "Gag", - (_, _, duration) => CreateReasonMenu(admin, player, "Gag", PenaltyType.Gag, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + gagMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, capturedPlayer, "Gag", + (_, _, duration) => CreateReasonMenu(admin, capturedPlayer, "Gag", PenaltyType.Gag, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Gag(admin, player, duration, reason); + CS2_SimpleAdmin.Instance.Gag(admin, capturedPlayer, duration, reason); } }))); } @@ -254,14 +260,15 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - muteMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, player, "Mute", - (_, _, duration) => CreateReasonMenu(admin, player, "Mute", PenaltyType.Mute, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + muteMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, capturedPlayer, "Mute", + (_, _, duration) => CreateReasonMenu(admin, capturedPlayer, "Mute", PenaltyType.Mute, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Mute(admin, player, duration, reason); + CS2_SimpleAdmin.Instance.Mute(admin, capturedPlayer, duration, reason); } }))); } @@ -283,14 +290,15 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - silenceMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, player, "Silence", - (_, _, duration) => CreateReasonMenu(admin, player, "Silence", PenaltyType.Silence, + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + silenceMenu.AddSubMenu(playerName, () => CreateDurationMenu(admin, capturedPlayer, "Silence", + (_, _, duration) => CreateReasonMenu(admin, capturedPlayer, "Silence", PenaltyType.Silence, (_, _, reason) => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.Silence(admin, player, duration, reason); + CS2_SimpleAdmin.Instance.Silence(admin, capturedPlayer, duration, reason); } }))); } @@ -312,8 +320,9 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - teamMenu.AddSubMenu(playerName, () => CreateTeamSelectionMenu(admin, player)); + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + teamMenu.AddSubMenu(playerName, () => CreateTeamSelectionMenu(admin, capturedPlayer)); } return teamMenu.WithBackButton(); @@ -488,8 +497,9 @@ public abstract class BasicMenu foreach (var player in players) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; - addAdminMenu.AddSubMenu(playerName, () => CreateAdminFlagsMenu(admin, player)); + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; + addAdminMenu.AddSubMenu(playerName, () => CreateAdminFlagsMenu(admin, capturedPlayer)); } return addAdminMenu.WithBackButton(); @@ -539,19 +549,20 @@ public abstract class BasicMenu var localizer = CS2_SimpleAdmin._localizer; var removeAdminMenu = new MenuBuilder("sa_admin_remove", admin, localizer); - var adminPlayers = Helper.GetValidPlayers().Where(p => - AdminManager.GetPlayerAdminData(p)?.Flags.Count > 0 && - p != admin && + var adminPlayers = Helper.GetValidPlayers().Where(p => + AdminManager.GetPlayerAdminData(p)?.Flags.Count > 0 && + p != admin && admin.CanTarget(p)); - + foreach (var player in adminPlayers) { - var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName; + var capturedPlayer = player; // Capture to local variable to avoid closure issue + var playerName = capturedPlayer.PlayerName.Length > 26 ? capturedPlayer.PlayerName[..26] : capturedPlayer.PlayerName; removeAdminMenu.AddOption(playerName, _ => { - if (player.IsValid) + if (capturedPlayer.IsValid) { - CS2_SimpleAdmin.Instance.RemoveAdmin(admin, player.SteamID.ToString()); + CS2_SimpleAdmin.Instance.RemoveAdmin(admin, capturedPlayer.SteamID.ToString()); } }); } @@ -583,10 +594,10 @@ public abstract class BasicMenu /// The admin player selecting duration. /// The target player for the penalty. /// The name of the penalty action (e.g., "Kick", "Ban"). - /// Callback action executed when duration is selected. + /// Callback function that returns the next menu when duration is selected. /// A MenuBuilder instance for the duration menu. private static MenuBuilder CreateDurationMenu(CCSPlayerController admin, CCSPlayerController player, string actionName, - Action onSelectAction) + Func onSelectAction) { var localizer = CS2_SimpleAdmin._localizer; @@ -614,10 +625,8 @@ public abstract class BasicMenu foreach (var durationItem in CS2_SimpleAdmin.Instance.Config.MenuConfigs.Durations) { - durationMenu.AddOption(durationItem.Name, _ => - { - onSelectAction(admin, player, durationItem.Duration); - }); + var capturedDuration = durationItem.Duration; // Capture to avoid closure issue + durationMenu.AddSubMenu(durationItem.Name, () => onSelectAction(admin, player, capturedDuration)); } return durationMenu.WithBackButton(); diff --git a/CS2-SimpleAdmin/Menus/DurationMenu.cs b/CS2-SimpleAdmin/Menus/DurationMenu.cs index 20a0acc..cfe8ea6 100644 --- a/CS2-SimpleAdmin/Menus/DurationMenu.cs +++ b/CS2-SimpleAdmin/Menus/DurationMenu.cs @@ -8,12 +8,28 @@ public static class DurationMenu public static void OpenMenu(CCSPlayerController admin, string menuName, CCSPlayerController player, Action onSelectAction) { var menu = AdminMenu.CreateMenu(menuName); - foreach (var durationItem in CS2_SimpleAdmin.Instance.Config.MenuConfigs.Durations) + if (menu == null) + return; + + var durations = CS2_SimpleAdmin.Instance.Config.MenuConfigs.Durations; + + // Capture admin and player to avoid closure issues + var capturedAdmin = admin; + var capturedPlayer = player; + var capturedAction = onSelectAction; + + foreach (var durationItem in durations) { - menu?.AddMenuOption(durationItem.Name, (_, _) => { onSelectAction(admin, player, durationItem.Duration); }); + var duration = durationItem.Duration; // Capture in local variable + var name = durationItem.Name; + + menu.AddMenuOption(name, (controller, option) => + { + capturedAction(capturedAdmin, capturedPlayer, duration); + }); } - if (menu != null) AdminMenu.OpenMenu(admin, menu); + AdminMenu.OpenMenu(admin, menu); } public static void OpenMenu(CCSPlayerController admin, string menuName, DisconnectedPlayer player, Action onSelectAction) diff --git a/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs b/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs index e31186a..c045ddb 100644 --- a/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs +++ b/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs @@ -49,25 +49,27 @@ public static class ManagePlayersMenu if (AdminManager.CommandIsOverriden("css_warn") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_warn")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/kick")) - options.Add(new ChatMenuOptionData(localizer?["sa_warn"] ?? "Warn", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_warn"] ?? "Warn", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_warn"] ?? "Warn"}: {player.PlayerName}", player, WarnMenu)))); + options.Add(new ChatMenuOptionData(localizer?["sa_warn"] ?? "Warn", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_warn"] ?? "Warn", (a, p) => DurationMenu.OpenMenu(a, $"{localizer?["sa_warn"] ?? "Warn"}: {p.PlayerName}", p, WarnMenu)))); if (hasBan) - options.Add(new ChatMenuOptionData(localizer?["sa_ban"] ?? "Ban", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_ban"] ?? "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_ban"] ?? "Ban"}: {player.PlayerName}", player, BanMenu)))); + options.Add(new ChatMenuOptionData(localizer?["sa_ban"] ?? "Ban", () => + PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_ban"] ?? "Ban", (a, p) => + DurationMenu.OpenMenu(a, $"{localizer?["sa_ban"] ?? "Ban"}: {p.PlayerName}", p, BanMenu)))); if (hasChat) { if (AdminManager.CommandIsOverriden("css_gag") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_gag")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/chat")) - options.Add(new ChatMenuOptionData(localizer?["sa_gag"] ?? "Gag", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_gag"] ?? "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_gag"] ?? "Gag"}: {player.PlayerName}", player, GagMenu)))); + options.Add(new ChatMenuOptionData(localizer?["sa_gag"] ?? "Gag", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_gag"] ?? "Gag", (a, p) => DurationMenu.OpenMenu(a, $"{localizer?["sa_gag"] ?? "Gag"}: {p.PlayerName}", p, GagMenu)))); if (AdminManager.CommandIsOverriden("css_mute") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_mute")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/chat")) - options.Add(new ChatMenuOptionData(localizer?["sa_mute"] ?? "Mute", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_mute"] ?? "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_mute"] ?? "Mute"}: {player.PlayerName}", player, MuteMenu)))); + options.Add(new ChatMenuOptionData(localizer?["sa_mute"] ?? "Mute", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_mute"] ?? "Mute", (a, p) => DurationMenu.OpenMenu(a, $"{localizer?["sa_mute"] ?? "Mute"}: {p.PlayerName}", p, MuteMenu)))); if (AdminManager.CommandIsOverriden("css_silence") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_silence")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/chat")) - options.Add(new ChatMenuOptionData(localizer?["sa_silence"] ?? "Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_silence"] ?? "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_silence"] ?? "Silence"}: {player.PlayerName}", player, SilenceMenu)))); + options.Add(new ChatMenuOptionData(localizer?["sa_silence"] ?? "Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_silence"] ?? "Silence", (a, p) => DurationMenu.OpenMenu(a, $"{localizer?["sa_silence"] ?? "Silence"}: {p.PlayerName}", p, SilenceMenu)))); } if (AdminManager.CommandIsOverriden("css_team") @@ -159,22 +161,9 @@ public static class ManagePlayersMenu { if (player is { IsValid: true }) Ban(admin, player, duration, reason); - + CS2_SimpleAdmin.MenuApi?.CloseMenu(admin); }); - - // var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_ban"] ?? "Ban"}: {player?.PlayerName}"); - // - // foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons) - // { - // menu?.AddMenuOption(option, (_, _) => - // { - // if (player is { IsValid: true }) - // Ban(admin, player, duration, option); - // }); - // } - // - // if (menu != null) AdminMenu.OpenMenu(admin, menu); } private static void Ban(CCSPlayerController admin, CCSPlayerController player, int duration, string reason) diff --git a/CS2-SimpleAdmin/Menus/PlayersMenu.cs b/CS2-SimpleAdmin/Menus/PlayersMenu.cs index e14270a..6d43a20 100644 --- a/CS2-SimpleAdmin/Menus/PlayersMenu.cs +++ b/CS2-SimpleAdmin/Menus/PlayersMenu.cs @@ -41,11 +41,12 @@ public static class PlayersMenu continue; var enabled = admin.CanTarget(player); + var capturedPlayer = player; // Capture in local variable to avoid closure issues if (optionName != null) - menu?.AddMenuOption(optionName, (_, _) => + menu?.AddMenuOption(optionName, (controller, option) => { - if (player != null) onSelectAction.Invoke(admin, player); + if (capturedPlayer != null) onSelectAction.Invoke(admin, capturedPlayer); }, !enabled); } diff --git a/CS2-SimpleAdmin/VERSION b/CS2-SimpleAdmin/VERSION index 66084e8..9403fa9 100644 --- a/CS2-SimpleAdmin/VERSION +++ b/CS2-SimpleAdmin/VERSION @@ -1 +1 @@ -1.7.8-beta-4 \ No newline at end of file +1.7.8-beta-5 \ No newline at end of file diff --git a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj index d1d66f0..d12aa88 100644 --- a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj +++ b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj @@ -9,7 +9,7 @@ - +