- Added `ReloadAdminsEveryMapChange` - Reloading sql admins on map start
- Ability to use any valid steamid instead of steamid64
- Fixed chat commands when gagged
- Votes now respect `UseChatMenu` config setting
This commit is contained in:
Dawid Bepierszcz
2024-06-09 17:55:33 +02:00
parent 962529e445
commit 00facafdcb
13 changed files with 105 additions and 62 deletions

View File

@@ -37,7 +37,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "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.4.4b";
public override string ModuleVersion => "1.4.5a";
public CS2_SimpleAdminConfig Config { get; set; } = new();

View File

@@ -10,7 +10,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.228" />
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.239" />
<PackageReference Include="Dapper" Version="2.1.35" />
<PackageReference Include="Discord.Net.Webhook" Version="3.14.1" />
<PackageReference Include="MySqlConnector" Version="2.3.7" />

View File

@@ -151,14 +151,15 @@ namespace CS2_SimpleAdmin
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamId64(steamid))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = steamId.SteamId64.ToString();
var reason = _localizer?["sa_unknown"] ?? "Unknown";
int.TryParse(command.GetArg(2), out var time);

View File

@@ -97,12 +97,16 @@ namespace CS2_SimpleAdmin
public void OnAddAdminCommand(CCSPlayerController? caller, CommandInfo command)
{
if (_database == null) return;
if (!Helper.IsValidSteamId64(command.GetArg(1)))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = steamId.SteamId64.ToString();
if (command.GetArg(2).Length <= 0)
{
command.ReplyToCommand($"Invalid player name.");
@@ -114,7 +118,6 @@ namespace CS2_SimpleAdmin
return;
}
var steamid = command.GetArg(1);
var name = command.GetArg(2);
var flags = command.GetArg(3);
var globalAdmin = command.GetArg(4).ToLower().Equals("-g") || command.GetArg(5).ToLower().Equals("-g") ||
@@ -153,16 +156,15 @@ namespace CS2_SimpleAdmin
{
if (_database == null) return;
if (!Helper.IsValidSteamId64(command.GetArg(1)))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = command.GetArg(1);
var globalDelete = command.GetArg(2).ToLower().Equals("-g");
RemoveAdmin(caller, steamid, globalDelete, command);
RemoveAdmin(caller, steamId.SteamId64.ToString(), globalDelete, command);
}
public void RemoveAdmin(CCSPlayerController? caller, string steamid, bool globalDelete = false, CommandInfo? command = null)
@@ -534,13 +536,12 @@ namespace CS2_SimpleAdmin
public void Kick(CCSPlayerController? caller, CCSPlayerController? player, string? reason = "Unknown", string? callerName = null, CommandInfo? command = null)
{
if (player == null || !player.IsValid) return;
callerName ??= caller == null ? "Console" : caller.PlayerName;
if (player != null && player.PawnIsAlive)
{
player.Pawn.Value!.Freeze();
}
reason ??= _localizer?["sa_unknown"] ?? "Unknown";
player.Pawn.Value!.Freeze();
if (command != null)
Helper.SendDiscordLogMessage(caller, command, DiscordWebhookClientLog, _localizer);
@@ -548,7 +549,7 @@ namespace CS2_SimpleAdmin
if (string.IsNullOrEmpty(reason) == false)
{
if (player != null && !player.IsBot && !player.IsHLTV)
if (player != null && !player.IsBot)
using (new WithTemporaryCulture(player.GetLanguage()))
{
player.PrintToCenter(_localizer!["sa_player_kick_message", reason, caller == null ? "Console" : caller.PlayerName]);

View File

@@ -141,14 +141,14 @@ namespace CS2_SimpleAdmin
if (string.IsNullOrEmpty(command.GetArg(1))) return;
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamId64(steamid))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = steamId.SteamId64.ToString();
var reason = _localizer?["sa_unknown"] ?? "Unknown";
MuteManager muteManager = new(_database);
@@ -265,10 +265,10 @@ namespace CS2_SimpleAdmin
var pattern = command.GetArg(1);
MuteManager muteManager = new(_database);
if (Helper.IsValidSteamId64(pattern))
if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null)
{
var matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString());
if (matches.Count == 1)
{
var player = matches.FirstOrDefault();
@@ -474,16 +474,17 @@ namespace CS2_SimpleAdmin
if (command.ArgCount < 2)
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamId64(steamid))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = steamId.SteamId64.ToString();
var reason = _localizer?["sa_unknown"] ?? "Unknown";
MuteManager muteManager = new(_database);
@@ -595,9 +596,9 @@ namespace CS2_SimpleAdmin
var found = false;
MuteManager muteManager = new(_database);
if (Helper.IsValidSteamId64(pattern))
if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null)
{
var matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString());
if (matches.Count == 1)
{
var player = matches.FirstOrDefault();
@@ -735,7 +736,7 @@ namespace CS2_SimpleAdmin
if (time == 0)
{
if (!player.IsBot && !player.IsHLTV)
if (!player.IsBot)
{
using (new WithTemporaryCulture(player.GetLanguage()))
{
@@ -780,12 +781,11 @@ namespace CS2_SimpleAdmin
}
}
if (command != null)
{
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Mute, DiscordWebhookClientPenalty, _localizer);
Helper.SendDiscordLogMessage(caller, command, DiscordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
if (command == null) return;
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Mute, DiscordWebhookClientPenalty, _localizer);
Helper.SendDiscordLogMessage(caller, command, DiscordWebhookClientLog, _localizer);
Helper.LogCommand(caller, command);
}
[ConsoleCommand("css_addsilence")]
@@ -800,14 +800,14 @@ namespace CS2_SimpleAdmin
return;
if (string.IsNullOrEmpty(command.GetArg(1))) return;
var steamid = command.GetArg(1);
if (!Helper.IsValidSteamId64(steamid))
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
{
command.ReplyToCommand($"Invalid SteamID64.");
return;
}
var steamid = steamId.SteamId64.ToString();
var reason = _localizer?["sa_unknown"] ?? "Unknown";
MuteManager muteManager = new(_database);
@@ -843,7 +843,7 @@ namespace CS2_SimpleAdmin
if (time == 0)
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player.PrintToCenter(_localizer!["sa_player_silence_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
@@ -863,7 +863,7 @@ namespace CS2_SimpleAdmin
}
else
{
if (!player.IsBot && !player.IsHLTV)
if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage()))
{
player.PrintToCenter(_localizer!["sa_player_silence_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
@@ -921,9 +921,9 @@ namespace CS2_SimpleAdmin
var found = false;
MuteManager muteManager = new(_database);
if (Helper.IsValidSteamId64(pattern))
if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null)
{
var matches = Helper.GetPlayerFromSteamid64(pattern);
var matches = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString());
if (matches.Count == 1)
{
var player = matches.FirstOrDefault();

View File

@@ -37,7 +37,10 @@ namespace CS2_SimpleAdmin
{
using (new WithTemporaryCulture(player.GetLanguage()))
{
ChatMenu voteMenu = new(_localizer!["sa_admin_vote_menu_title", question]);
BaseMenu voteMenu = Config.UseChatMenu
? new ChatMenu(_localizer!["sa_admin_vote_menu_title", question])
: new CenterHtmlMenu(_localizer!["sa_admin_vote_menu_title", question], Instance);
//ChatMenu voteMenu = new(_localizer!["sa_admin_vote_menu_title", question]);
for (var i = 2; i <= answersCount - 1; i++)
{
@@ -50,8 +53,10 @@ namespace CS2_SimpleAdmin
StringBuilder sb = new(_localizer["sa_prefix"]);
sb.Append(_localizer["sa_admin_vote_message", caller == null ? "Console" : caller.PlayerName, question]);
player.PrintToChat(sb.ToString());
MenuManager.OpenChatMenu(player, voteMenu);
voteMenu.OpenToAll();
//MenuManager.OpenChatMenu(player, voteMenu);
}
}

View File

@@ -129,6 +129,9 @@ namespace CS2_SimpleAdmin
[JsonPropertyName("EnableMetrics")]
public bool EnableMetrics { get; set; } = true;
[JsonPropertyName("ReloadAdminsEveryMapChange")]
public bool ReloadAdminsEveryMapChange { get; set; } = false;
[JsonPropertyName("UseChatMenu")]
public bool UseChatMenu { get; set; } = false;
@@ -160,10 +163,10 @@ namespace CS2_SimpleAdmin
public Discord Discord { get; set; } = new();
[JsonPropertyName("DefaultMaps")]
public List<string> DefaultMaps { get; set; } = [];
public List<string> DefaultMaps { get; set; } = new();
[JsonPropertyName("WorkshopMaps")]
public List<string> WorkshopMaps { get; set; } = [];
public List<string> WorkshopMaps { get; set; } = new();
[JsonPropertyName("CustomServerCommands")]
public List<CustomServerCommandData> CustomServerCommands { get; set; } = new();

View File

@@ -205,8 +205,11 @@ public partial class CS2_SimpleAdmin
public HookResult OnCommandSay(CCSPlayerController? player, CommandInfo info)
{
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV || info.GetArg(1).StartsWith($"/")
|| info.GetArg(1).StartsWith($"!") && info.GetArg(1).Length >= 12)
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV)
return HookResult.Continue;
if (info.GetArg(1).StartsWith($"/")
|| info.GetArg(1).StartsWith($"!"))
return HookResult.Continue;
if (info.GetArg(1).Length == 0)
@@ -220,8 +223,11 @@ public partial class CS2_SimpleAdmin
public HookResult OnCommandTeamSay(CCSPlayerController? player, CommandInfo info)
{
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV || info.GetArg(1).StartsWith($"/")
|| info.GetArg(1).StartsWith($"!") && info.GetArg(1).Length >= 12)
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV )
return HookResult.Continue;
if (info.GetArg(1).StartsWith($"/")
|| info.GetArg(1).StartsWith($"!"))
return HookResult.Continue;
if (info.GetArg(1).Length == 0)
@@ -257,6 +263,9 @@ public partial class CS2_SimpleAdmin
public void OnMapStart(string mapName)
{
if (Config.ReloadAdminsEveryMapChange)
AddTimer(3.0f, () => ReloadAdmins(null));
var path = Path.GetDirectoryName(ModuleDirectory);
if (Directory.Exists(path + "/CS2-Tags"))
{

View File

@@ -24,12 +24,12 @@ public static class PlayerExtensions
public static bool CanTarget(this CCSPlayerController? controller, CCSPlayerController? target)
{
if (target != null && target.IsBot) return true;
if (controller is null) return true;
if (controller is null || target is null) return true;
if (target.IsBot) return true;
return target != null && (AdminManager.CanPlayerTarget(controller, target) ||
return AdminManager.CanPlayerTarget(controller, target) ||
AdminManager.CanPlayerTarget(new SteamID(controller.SteamID),
new SteamID(target.SteamID)));
new SteamID(target.SteamID));
}
public static void SetSpeed(this CCSPlayerController? controller, float speed)

View File

@@ -75,6 +75,21 @@ namespace CS2_SimpleAdmin
const string pattern = @"^\d{17}$";
return Regex.IsMatch(input, pattern);
}
public static bool ValidateSteamId(string input, out SteamID? steamId)
{
steamId = null;
if (string.IsNullOrEmpty(input))
{
return false;
}
if (!SteamID.TryParse(input, out var parsedSteamId)) return false;
steamId = parsedSteamId;
return true;
}
public static bool IsValidIp(string input)
{

View File

@@ -5,6 +5,7 @@ using Microsoft.Extensions.Logging;
using MySqlConnector;
using Newtonsoft.Json;
using System.Collections.Concurrent;
using Serilog.Core;
namespace CS2_SimpleAdmin;
@@ -134,8 +135,9 @@ public class PermissionManager(Database.Database database)
return filteredFlagsWithImmunity;
}
catch (Exception)
catch (Exception ex)
{
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
return [];
}
}
@@ -249,7 +251,10 @@ public class PermissionManager(Database.Database database)
return groupInfoDictionary;
}
catch { }
catch (Exception ex)
{
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
}
return [];
}
@@ -388,7 +393,10 @@ public class PermissionManager(Database.Database database)
await connection.ExecuteAsync(sql, new { PlayerSteamID = playerSteamId, CS2_SimpleAdmin.ServerId });
}
catch { };
catch (Exception ex)
{
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
}
}
public async Task AddAdminBySteamId(string playerSteamId, string playerName, List<string> flagsList, int immunity = 0, int time = 0, bool globalAdmin = false)
@@ -457,7 +465,7 @@ public class PermissionManager(Database.Database database)
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
}
}
@@ -503,7 +511,7 @@ public class PermissionManager(Database.Database database)
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
}
}
@@ -519,7 +527,7 @@ public class PermissionManager(Database.Database database)
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
CS2_SimpleAdmin._logger?.LogError(ex.ToString());
}
}

View File

@@ -41,6 +41,7 @@ namespace CS2_SimpleAdmin.Menus
continue;
var enabled = admin.CanTarget(player);
if (optionName != null)
menu.AddMenuOption(optionName, (_, _) =>
{

View File

@@ -1 +1 @@
1.4.4b
1.4.5a