mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-17 18:39:07 +00:00
1.4.5a
- 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:
@@ -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();
|
||||
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -98,11 +98,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 = 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,21 +536,20 @@ namespace CS2_SimpleAdmin
|
||||
|
||||
public void Kick(CCSPlayerController? caller, CCSPlayerController? player, string? reason = "Unknown", string? callerName = null, CommandInfo? command = null)
|
||||
{
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
if (player != null && player.PawnIsAlive)
|
||||
{
|
||||
player.Pawn.Value!.Freeze();
|
||||
}
|
||||
if (player == null || !player.IsValid) return;
|
||||
|
||||
callerName ??= caller == null ? "Console" : caller.PlayerName;
|
||||
reason ??= _localizer?["sa_unknown"] ?? "Unknown";
|
||||
|
||||
player.Pawn.Value!.Freeze();
|
||||
|
||||
if (command != null)
|
||||
Helper.SendDiscordLogMessage(caller, command, DiscordWebhookClientLog, _localizer);
|
||||
Helper.LogCommand(caller, $"css_kick {player?.PlayerName} {reason}");
|
||||
|
||||
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]);
|
||||
|
||||
@@ -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);
|
||||
@@ -266,9 +266,9 @@ 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();
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
@@ -51,7 +54,9 @@ namespace CS2_SimpleAdmin
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +130,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();
|
||||
|
||||
17
Events.cs
17
Events.cs
@@ -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"))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
15
Helper.cs
15
Helper.cs
@@ -76,6 +76,21 @@ namespace CS2_SimpleAdmin
|
||||
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)
|
||||
{
|
||||
const string pattern = @"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
continue;
|
||||
|
||||
var enabled = admin.CanTarget(player);
|
||||
|
||||
if (optionName != null)
|
||||
menu.AddMenuOption(optionName, (_, _) =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user