Merge remote-tracking branch 'upstream/main'

This commit is contained in:
Sachin 2025-02-19 17:46:22 +05:30
commit f1dfb75c93
57 changed files with 3594 additions and 68 deletions

3
.gitignore vendored
View file

@ -4,4 +4,5 @@ obj/
.git .git
.vscode/ .vscode/
.idea/ .idea/
*.sln CS2-SimpleAdmin.sln.DotSettings.user
Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln.DotSettings.user

View file

@ -27,6 +27,7 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi
public event Action<PlayerInfo, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltied; public event Action<PlayerInfo, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltied;
public event Action<SteamID, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltiedAdded; public event Action<SteamID, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltiedAdded;
public event Action<string, string?, bool, object>? OnAdminShowActivity;
public void OnPlayerPenaltiedEvent(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType, string reason, public void OnPlayerPenaltiedEvent(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType, string reason,
int duration, int? penaltyId) => OnPlayerPenaltied?.Invoke(player, admin, penaltyType, reason, duration, penaltyId, CS2_SimpleAdmin.ServerId); int duration, int? penaltyId) => OnPlayerPenaltied?.Invoke(player, admin, penaltyType, reason, duration, penaltyId, CS2_SimpleAdmin.ServerId);
@ -34,6 +35,8 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi
public void OnPlayerPenaltiedAddedEvent(SteamID player, PlayerInfo? admin, PenaltyType penaltyType, string reason, public void OnPlayerPenaltiedAddedEvent(SteamID player, PlayerInfo? admin, PenaltyType penaltyType, string reason,
int duration, int? penaltyId) => OnPlayerPenaltiedAdded?.Invoke(player, admin, penaltyType, reason, duration, penaltyId, CS2_SimpleAdmin.ServerId); int duration, int? penaltyId) => OnPlayerPenaltiedAdded?.Invoke(player, admin, penaltyType, reason, duration, penaltyId, CS2_SimpleAdmin.ServerId);
public void OnAdminShowActivityEvent(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs) => OnAdminShowActivity?.Invoke(messageKey, callerName, dontPublish, messageArgs);
public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1) public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1)
{ {
switch (penaltyType) switch (penaltyType)
@ -73,6 +76,40 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi
} }
} }
public void IssuePenalty(SteamID steamid, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1)
{
switch (penaltyType)
{
case PenaltyType.Ban:
{
CS2_SimpleAdmin.Instance.AddBan(admin, steamid, duration, reason);
break;
}
case PenaltyType.Gag:
{
CS2_SimpleAdmin.Instance.AddGag(admin, steamid, duration, reason);
break;
}
case PenaltyType.Mute:
{
CS2_SimpleAdmin.Instance.AddMute(admin, steamid, duration, reason);
break;
}
case PenaltyType.Silence:
{
CS2_SimpleAdmin.Instance.AddSilence(admin, steamid, duration, reason);
break;
}
case PenaltyType.Warn:
{
CS2_SimpleAdmin.Instance.AddWarn(admin, steamid, duration, reason);
break;
}
default:
throw new ArgumentOutOfRangeException(nameof(penaltyType), penaltyType, null);
}
}
public void LogCommand(CCSPlayerController? caller, string command) public void LogCommand(CCSPlayerController? caller, string command)
{ {
Helper.LogCommand(caller, command); Helper.LogCommand(caller, command);
@ -87,4 +124,9 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi
{ {
return CS2_SimpleAdmin.SilentPlayers.Contains(player.Slot); return CS2_SimpleAdmin.SilentPlayers.Contains(player.Slot);
} }
public void ShowAdminActivity(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs)
{
Helper.ShowAdminActivity(messageKey, callerName, dontPublish, messageArgs);
}
} }

View file

@ -19,7 +19,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
public override string ModuleAuthor => "daffyy & Dliix66"; public override string ModuleAuthor => "daffyy & Dliix66";
public override string ModuleVersion => "1.7.2c"; public override string ModuleVersion => "1.7.4b";
public override void Load(bool hotReload) public override void Load(bool hotReload)
{ {
@ -89,6 +89,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
UserID = config.DatabaseUser, UserID = config.DatabaseUser,
Password = config.DatabasePassword, Password = config.DatabasePassword,
Port = (uint)config.DatabasePort, Port = (uint)config.DatabasePort,
SslMode = Enum.TryParse(config.DatabaseSSlMode, true, out MySqlSslMode sslMode) ? sslMode : MySqlSslMode.Preferred,
Pooling = true, Pooling = true,
MinimumPoolSize = 0, MinimumPoolSize = 0,
MaximumPoolSize = 640, MaximumPoolSize = 640,

View file

@ -10,8 +10,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.303" /> <PackageReference Include="CounterStrikeSharp.API" Version="1.0.305" />
<PackageReference Include="Dapper" Version="2.1.35" /> <PackageReference Include="Dapper" Version="2.1.66" />
<PackageReference Include="MySqlConnector" Version="2.4.0" /> <PackageReference Include="MySqlConnector" Version="2.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="*" /> <PackageReference Include="Newtonsoft.Json" Version="*" />
</ItemGroup> </ItemGroup>

View file

@ -34,8 +34,6 @@ public partial class CS2_SimpleAdmin
: _localizer?["sa_unknown"] ?? "Unknown"; : _localizer?["sa_unknown"] ?? "Unknown";
reason = string.IsNullOrWhiteSpace(reason) ? _localizer?["sa_unknown"] ?? "Unknown" : reason; reason = string.IsNullOrWhiteSpace(reason) ? _localizer?["sa_unknown"] ?? "Unknown" : reason;
var time = Helper.ParsePenaltyTime(command.GetArg(2)); var time = Helper.ParsePenaltyTime(command.GetArg(2));
playersToTarget.ForEach(player => playersToTarget.ForEach(player =>
@ -96,7 +94,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message if necessary // Display admin activity message if necessary
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Schedule a kick timer // Schedule a kick timer
@ -122,6 +120,42 @@ public partial class CS2_SimpleAdmin
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Ban, _localizer); Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Ban, _localizer);
} }
internal void AddBan(CCSPlayerController? caller, SteamID steamid, int time, string reason, BanManager? banManager = null)
{
// Set default caller name if not provided
var callerName = !string.IsNullOrEmpty(caller?.PlayerName)
? caller.PlayerName
: (_localizer?["sa_console"] ?? "Console");
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
var matches = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString());
var player = matches.Count == 1 ? matches.FirstOrDefault() : null;
if (player != null && player.IsValid)
{
if (!caller.CanTarget(player))
return;
Ban(caller, player, time, reason, callerName, silent: true);
//command.ReplyToCommand($"Banned player {player.PlayerName}.");
}
else
{
if (!caller.CanTarget(steamid))
return;
// Asynchronous ban operation if player is not online or not found
Task.Run(async () =>
{
int? penaltyId = await BanManager.AddBanBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time);
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Ban, reason, time, penaltyId);
});
Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Ban, _localizer);
}
}
[RequiresPermissions("@css/ban")] [RequiresPermissions("@css/ban")]
[CommandHelper(minArgs: 1, usage: "<steamid> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [CommandHelper(minArgs: 1, usage: "<steamid> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnAddBanCommand(CCSPlayerController? caller, CommandInfo command) public void OnAddBanCommand(CCSPlayerController? caller, CommandInfo command)
@ -386,7 +420,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message if necessary // Display admin activity message if necessary
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Log the warning command // Log the warning command
@ -399,6 +433,63 @@ public partial class CS2_SimpleAdmin
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Warn, _localizer); Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Warn, _localizer);
} }
internal void AddWarn(CCSPlayerController? caller, SteamID steamid, int time, string reason, WarnManager? warnManager = null)
{
// Set default caller name if not provided
var callerName = !string.IsNullOrEmpty(caller?.PlayerName)
? caller.PlayerName
: (_localizer?["sa_console"] ?? "Console");
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
var matches = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString());
var player = matches.Count == 1 ? matches.FirstOrDefault() : null;
if (player != null && player.IsValid)
{
if (!caller.CanTarget(player))
return;
Warn(caller, player, time, reason, callerName);
//command.ReplyToCommand($"Banned player {player.PlayerName}.");
}
else
{
if (!caller.CanTarget(steamid))
return;
// Asynchronous ban operation if player is not online or not found
Task.Run(async () =>
{
int? penaltyId = await WarnManager.AddWarnBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time);
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Warn, reason, time, penaltyId);
// Check for warn thresholds and execute punish command if applicable
var totalWarns = await WarnManager.GetPlayerWarnsCount(steamid.SteamId64.ToString());
if (Config.WarnThreshold.Count > 0)
{
string? punishCommand = null;
var lastKey = Config.WarnThreshold.Keys.Max();
if (totalWarns >= lastKey)
punishCommand = Config.WarnThreshold[lastKey];
else if (Config.WarnThreshold.TryGetValue(totalWarns, out var value))
punishCommand = value;
if (!string.IsNullOrEmpty(punishCommand))
{
await Server.NextFrameAsync(() =>
{
Server.ExecuteCommand(punishCommand.Replace("STEAMID64", steamid.SteamId64.ToString()));
});
}
}
});
Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Warn, _localizer);
}
}
[RequiresPermissions("@css/kick")] [RequiresPermissions("@css/kick")]
[CommandHelper(minArgs: 1, usage: "<steamid or name or ip>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [CommandHelper(minArgs: 1, usage: "<steamid or name or ip>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnUnwarnCommand(CCSPlayerController? caller, CommandInfo command) public void OnUnwarnCommand(CCSPlayerController? caller, CommandInfo command)

View file

@ -560,7 +560,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message if necessary // Display admin activity message if necessary
if (!SilentPlayers.Contains(caller.Slot)) if (!SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false ,adminActivityArgs);
} }
MenuApi?.CloseMenu(caller); MenuApi?.CloseMenu(caller);
@ -585,7 +585,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (!SilentPlayers.Contains(caller.Slot)) if (!SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs);
} }
MenuApi?.CloseMenu(caller); MenuApi?.CloseMenu(caller);
@ -610,7 +610,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (!SilentPlayers.Contains(caller.Slot)) if (!SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs);
} }
MenuApi?.CloseMenu(caller); MenuApi?.CloseMenu(caller);
@ -635,7 +635,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (!SilentPlayers.Contains(caller.Slot)) if (!SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs);
} }
MenuApi?.CloseMenu(caller); MenuApi?.CloseMenu(caller);
@ -827,7 +827,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Schedule the kick for the player // Schedule the kick for the player
@ -905,7 +905,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
Helper.LogCommand(caller, command?.GetCommandString ?? $"css_map {map}"); Helper.LogCommand(caller, command?.GetCommandString ?? $"css_map {map}");
@ -935,7 +935,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, ["CALLER", map]); Helper.ShowAdminActivity(activityMessageKey, callerName, false, ["CALLER", map]);
} }
// Add timer to execute the map change command after a delay // Add timer to execute the map change command after a delay

View file

@ -87,7 +87,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Increment the player's total gags count // Increment the player's total gags count
@ -105,6 +105,41 @@ public partial class CS2_SimpleAdmin
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Gag, _localizer); Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Gag, _localizer);
} }
internal void AddGag(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null)
{
// Set default caller name if not provided
var callerName = !string.IsNullOrEmpty(caller?.PlayerName)
? caller.PlayerName
: (_localizer?["sa_console"] ?? "Console");
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
var matches = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString());
var player = matches.Count == 1 ? matches.FirstOrDefault() : null;
if (player != null && player.IsValid)
{
if (!caller.CanTarget(player))
return;
Gag(caller, player, time, reason, callerName, silent: true);
}
else
{
if (!caller.CanTarget(steamid))
return;
// Asynchronous ban operation if player is not online or not found
Task.Run(async () =>
{
int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 3);
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Gag, reason, time, penaltyId);
});
Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Gag, _localizer);
}
}
[RequiresPermissions("@css/chat")] [RequiresPermissions("@css/chat")]
[CommandHelper(minArgs: 1, usage: "<steamid> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [CommandHelper(minArgs: 1, usage: "<steamid> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnAddGagCommand(CCSPlayerController? caller, CommandInfo command) public void OnAddGagCommand(CCSPlayerController? caller, CommandInfo command)
@ -321,7 +356,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Increment the player's total mutes count // Increment the player's total mutes count
@ -404,6 +439,41 @@ public partial class CS2_SimpleAdmin
Helper.LogCommand(caller, command); Helper.LogCommand(caller, command);
} }
internal void AddMute(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null)
{
// Set default caller name if not provided
var callerName = !string.IsNullOrEmpty(caller?.PlayerName)
? caller.PlayerName
: (_localizer?["sa_console"] ?? "Console");
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
var matches = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString());
var player = matches.Count == 1 ? matches.FirstOrDefault() : null;
if (player != null && player.IsValid)
{
if (!caller.CanTarget(player))
return;
Mute(caller, player, time, reason, callerName, silent: true);
}
else
{
if (!caller.CanTarget(steamid))
return;
// Asynchronous ban operation if player is not online or not found
Task.Run(async () =>
{
int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 1);
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Mute, reason, time, penaltyId);
});
Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Mute, _localizer);
}
}
[RequiresPermissions("@css/chat")] [RequiresPermissions("@css/chat")]
[CommandHelper(minArgs: 1, usage: "<steamid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [CommandHelper(minArgs: 1, usage: "<steamid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command) public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command)
@ -560,7 +630,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Increment the player's total silences count // Increment the player's total silences count
@ -643,6 +713,41 @@ public partial class CS2_SimpleAdmin
Helper.LogCommand(caller, command); Helper.LogCommand(caller, command);
} }
internal void AddSilence(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null)
{
// Set default caller name if not provided
var callerName = !string.IsNullOrEmpty(caller?.PlayerName)
? caller.PlayerName
: (_localizer?["sa_console"] ?? "Console");
var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null;
var matches = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString());
var player = matches.Count == 1 ? matches.FirstOrDefault() : null;
if (player != null && player.IsValid)
{
if (!caller.CanTarget(player))
return;
Silence(caller, player, time, reason, callerName, silent: true);
}
else
{
if (!caller.CanTarget(steamid))
return;
// Asynchronous ban operation if player is not online or not found
Task.Run(async () =>
{
int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 2);
SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Silence, reason, time, penaltyId);
});
Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Silence, _localizer);
}
}
[RequiresPermissions("@css/chat")] [RequiresPermissions("@css/chat")]
[CommandHelper(minArgs: 1, usage: "<steamid or name> [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [CommandHelper(minArgs: 1, usage: "<steamid or name> [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command) public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command)

View file

@ -46,7 +46,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Log the command // Log the command
@ -109,7 +109,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -152,7 +152,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Schedule unfreeze for the player if time is specified // Schedule unfreeze for the player if time is specified
@ -203,7 +203,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Log the command and send Discord notification // Log the command and send Discord notification

View file

@ -49,7 +49,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Log the command and send Discord notification // Log the command and send Discord notification
@ -133,7 +133,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -161,7 +161,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -212,7 +212,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -261,7 +261,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -317,7 +317,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -373,7 +373,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -425,7 +425,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller == null || !SilentPlayers.Contains(caller.Slot)) if (caller == null || !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -483,7 +483,7 @@ public partial class CS2_SimpleAdmin
if (_localizer != null) if (_localizer != null)
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
} }
@ -580,7 +580,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller != null && SilentPlayers.Contains(caller.Slot)) return; if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
[CommandHelper(1, "<#userid or name> <new name>")] [CommandHelper(1, "<#userid or name> <new name>")]
@ -621,7 +621,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller != null && SilentPlayers.Contains(caller.Slot)) return; if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
// Rename the player // Rename the player
player.Rename(newName); player.Rename(newName);
@ -662,7 +662,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller != null && !SilentPlayers.Contains(caller.Slot)) if (caller != null && !SilentPlayers.Contains(caller.Slot))
{ {
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
// Determine if the new name is valid and update the renamed players list // Determine if the new name is valid and update the renamed players list
@ -732,7 +732,7 @@ public partial class CS2_SimpleAdmin
// Display admin activity message to other players // Display admin activity message to other players
if (caller != null && SilentPlayers.Contains(caller.Slot)) return; if (caller != null && SilentPlayers.Contains(caller.Slot)) return;
Helper.ShowAdminActivity(activityMessageKey, callerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs);
} }
[CommandHelper(1, "<#userid or name>")] [CommandHelper(1, "<#userid or name>")]
@ -801,7 +801,7 @@ public partial class CS2_SimpleAdmin
// Show admin activity // Show admin activity
if (!SilentPlayers.Contains(caller.Slot) && _localizer != null) if (!SilentPlayers.Contains(caller.Slot) && _localizer != null)
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs);
} }
} }
} }
@ -872,7 +872,7 @@ public partial class CS2_SimpleAdmin
// Show admin activity // Show admin activity
if (!SilentPlayers.Contains(caller.Slot) && _localizer != null) if (!SilentPlayers.Contains(caller.Slot) && _localizer != null)
{ {
Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, adminActivityArgs); Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs);
} }
} }
} }

View file

@ -269,6 +269,9 @@ public class CS2_SimpleAdminConfig : BasePluginConfig
[JsonPropertyName("DatabaseName")] [JsonPropertyName("DatabaseName")]
public string DatabaseName { get; set; } = ""; public string DatabaseName { get; set; } = "";
[JsonPropertyName("DatabaseSSlMode")]
public string DatabaseSSlMode { get; set; } = "preferred";
[JsonPropertyName("OtherSettings")] [JsonPropertyName("OtherSettings")]
public OtherSettings OtherSettings { get; set; } = new(); public OtherSettings OtherSettings { get; set; } = new();

View file

@ -12,6 +12,7 @@ using System.Text;
using CounterStrikeSharp.API.Core.Translations; using CounterStrikeSharp.API.Core.Translations;
using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Admin;
using CounterStrikeSharp.API.Modules.UserMessages; using CounterStrikeSharp.API.Modules.UserMessages;
using CounterStrikeSharp.API.ValveConstants.Protobuf;
namespace CS2_SimpleAdmin; namespace CS2_SimpleAdmin;
@ -104,6 +105,9 @@ public partial class CS2_SimpleAdmin
[GameEventHandler(HookMode.Pre)] [GameEventHandler(HookMode.Pre)]
public HookResult OnClientDisconnect(EventPlayerDisconnect @event, GameEventInfo info) public HookResult OnClientDisconnect(EventPlayerDisconnect @event, GameEventInfo info)
{ {
if (@event.Reason is 149 or 6)
info.DontBroadcast = true;
var player = @event.Userid; var player = @event.Userid;
#if DEBUG #if DEBUG
@ -111,9 +115,7 @@ public partial class CS2_SimpleAdmin
#endif #endif
if (player == null || !player.IsValid || player.IsBot) if (player == null || !player.IsValid || player.IsBot)
{
return HookResult.Continue; return HookResult.Continue;
}
#if DEBUG #if DEBUG
Logger.LogCritical("[OnClientDisconnect] After Check"); Logger.LogCritical("[OnClientDisconnect] After Check");
@ -146,12 +148,7 @@ public partial class CS2_SimpleAdmin
GravityPlayers.Remove(player); GravityPlayers.Remove(player);
if (player.UserId.HasValue) if (player.UserId.HasValue)
{
if (@event.Reason == 149)
info.DontBroadcast = true;
PlayersInfo.TryRemove(player.UserId.Value, out _); PlayersInfo.TryRemove(player.UserId.Value, out _);
}
var authorizedSteamId = player.AuthorizedSteamID; var authorizedSteamId = player.AuthorizedSteamID;
if (authorizedSteamId == null || !PermissionManager.AdminCache.TryGetValue(authorizedSteamId, if (authorizedSteamId == null || !PermissionManager.AdminCache.TryGetValue(authorizedSteamId,
@ -175,16 +172,27 @@ public partial class CS2_SimpleAdmin
#if DEBUG #if DEBUG
Logger.LogCritical("[OnClientConnect]"); Logger.LogCritical("[OnClientConnect]");
#endif #endif
if (!CS2_SimpleAdmin.BannedPlayers.Contains(ipaddress.Split(":")[0]))
return;
Server.NextFrame(() => Server.NextFrame((() =>
{ {
var player = Utilities.GetPlayerFromSlot(playerslot); var player = Utilities.GetPlayerFromSlot(playerslot);
if (player == null || !player.IsValid || player.IsBot) if (player == null || !player.IsValid || player.IsBot)
return; return;
new PlayerManager().LoadPlayerData(player); Helper.KickPlayer(player, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED);
}); }));
// Server.NextFrame(() =>
// {
// var player = Utilities.GetPlayerFromSlot(playerslot);
//
// if (player == null || !player.IsValid || player.IsBot)
// return;
//
// new PlayerManager().LoadPlayerData(player);
// });
} }
[GameEventHandler] [GameEventHandler]
@ -201,11 +209,11 @@ public partial class CS2_SimpleAdmin
CachedPlayers.Add(player); CachedPlayers.Add(player);
if (player.UserId.HasValue && PlayersInfo.TryGetValue(player.UserId.Value, out PlayerInfo? value) && // if (player.UserId.HasValue && PlayersInfo.TryGetValue(player.UserId.Value, out PlayerInfo? value) &&
value.WaitingForKick) // value.WaitingForKick)
return HookResult.Continue; // return HookResult.Continue;
new PlayerManager().LoadPlayerData(player, true); new PlayerManager().LoadPlayerData(player);
return HookResult.Continue; return HookResult.Continue;
} }
@ -254,6 +262,7 @@ value.WaitingForKick)
if (!PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Gag, out DateTime? endDateTime) && if (!PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Gag, out DateTime? endDateTime) &&
!PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Silence, out endDateTime)) !PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Silence, out endDateTime))
return HookResult.Continue; return HookResult.Continue;
if (_localizer != null && endDateTime is not null) if (_localizer != null && endDateTime is not null)
author.SendLocalizedMessage(_localizer, "sa_player_penalty_chat_active", endDateTime.Value.ToString("g", author.GetLanguage())); author.SendLocalizedMessage(_localizer, "sa_player_penalty_chat_active", endDateTime.Value.ToString("g", author.GetLanguage()));
return HookResult.Stop; return HookResult.Stop;

View file

@ -415,15 +415,23 @@ internal static class Helper
_ = CS2_SimpleAdmin.DiscordWebhookClientLog.SendMessageAsync(GenerateMessageDiscord(localizer["sa_discord_log_command", $"[{callerName}]({communityUrl})", command])); _ = CS2_SimpleAdmin.DiscordWebhookClientLog.SendMessageAsync(GenerateMessageDiscord(localizer["sa_discord_log_command", $"[{callerName}]({communityUrl})", command]));
} }
public static void ShowAdminActivity(string messageKey, string? callerName = null, params object[] messageArgs) public static void ShowAdminActivity(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs)
{ {
string[] publishActions = ["ban", "gag", "silence", "mute"];
if (CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType == 0) return; if (CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType == 0) return;
if (CS2_SimpleAdmin._localizer == null) return; if (CS2_SimpleAdmin._localizer == null) return;
// Determine the localized message key if (string.IsNullOrWhiteSpace(callerName))
var localizedMessageKey = $"{messageKey}"; callerName = CS2_SimpleAdmin._localizer["sa_console"];
var formattedMessageArgs = messageArgs.Select(arg => arg.ToString() ?? string.Empty).ToArray(); var formattedMessageArgs = messageArgs.Select(arg => arg.ToString() ?? string.Empty).ToArray();
if (dontPublish == false && publishActions.Any(messageKey.Contains))
{
CS2_SimpleAdmin.SimpleAdminApi?.OnAdminShowActivityEvent(messageKey, callerName, dontPublish, messageArgs);
}
// // Replace placeholder based on showActivityType // // Replace placeholder based on showActivityType
// for (var i = 0; i < formattedMessageArgs.Length; i++) // for (var i = 0; i < formattedMessageArgs.Length; i++)
// { // {
@ -436,8 +444,19 @@ internal static class Helper
// _ => arg // _ => arg
// }; // };
// } // }
var validPlayers = GetValidPlayers().Where(c => c is { IsValid: true, IsBot: false });
foreach (var controller in GetValidPlayers().Where(c => c is { IsValid: true, IsBot: false })) if (!validPlayers.Any())
return;
if (CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType == 3)
{
validPlayers = validPlayers.Where(c =>
AdminManager.PlayerHasPermissions(new SteamID(c.SteamID), "@css/kick") ||
AdminManager.PlayerHasPermissions(new SteamID(c.SteamID), "@css/ban"));
}
foreach (var controller in validPlayers.ToList())
{ {
var currentMessageArgs = (string[])formattedMessageArgs.Clone(); var currentMessageArgs = (string[])formattedMessageArgs.Clone();
@ -448,13 +467,12 @@ internal static class Helper
currentMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch currentMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch
{ {
1 => arg.Replace("CALLER", AdminManager.PlayerHasPermissions(new SteamID(controller.SteamID), "@css/kick") || AdminManager.PlayerHasPermissions(new SteamID(controller.SteamID), "@css/ban") ? callerName : CS2_SimpleAdmin._localizer["sa_admin"]), 1 => arg.Replace("CALLER", AdminManager.PlayerHasPermissions(new SteamID(controller.SteamID), "@css/kick") || AdminManager.PlayerHasPermissions(new SteamID(controller.SteamID), "@css/ban") ? callerName : CS2_SimpleAdmin._localizer["sa_admin"]),
2 => arg.Replace("CALLER", callerName ?? CS2_SimpleAdmin._localizer["sa_console"]), _ => arg.Replace("CALLER", callerName ?? CS2_SimpleAdmin._localizer["sa_console"]),
_ => arg
}; };
} }
// Send the localized message to each player // Send the localized message to each player
controller.SendLocalizedMessage(CS2_SimpleAdmin._localizer, localizedMessageKey, currentMessageArgs.Cast<object>().ToArray()); controller.SendLocalizedMessage(CS2_SimpleAdmin._localizer, messageKey, currentMessageArgs.Cast<object>().ToArray());
} }
} }
@ -479,7 +497,6 @@ internal static class Helper
formattedMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch formattedMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch
{ {
1 => arg.Replace("CALLER", CS2_SimpleAdmin._localizer["sa_admin"]), 1 => arg.Replace("CALLER", CS2_SimpleAdmin._localizer["sa_admin"]),
2 => arg.Replace("CALLER", callerName ?? CS2_SimpleAdmin._localizer["sa_console"]),
_ => arg _ => arg
}; };
} }

View file

@ -512,8 +512,19 @@ public class PermissionManager(Database.Database? database)
{ {
if (flag.StartsWith($"#")) if (flag.StartsWith($"#"))
{ {
const string sql = "SELECT id FROM `sa_groups` WHERE name = @groupName"; // const string sql = "SELECT id FROM `sa_groups` WHERE name = @groupName";
var groupId = await connection.QuerySingleOrDefaultAsync<int?>(sql, new { groupName = flag }); // var groupId = await connection.QuerySingleOrDefaultAsync<int?>(sql, new { groupName = flag });
const string sql = """
SELECT sgs.group_id
FROM sa_groups_servers sgs
JOIN sa_groups sg ON sgs.group_id = sg.id
WHERE sg.name = @groupName
ORDER BY (sgs.server_id = @serverId) DESC, sgs.server_id ASC
LIMIT 1
""";
var groupId = await connection.QuerySingleOrDefaultAsync<int?>(sql, new { groupName = flag, CS2_SimpleAdmin.ServerId });
if (groupId != null) if (groupId != null)
{ {

View file

@ -134,7 +134,7 @@ public class PlayerManager
return; return;
} }
if (fullConnect) if (fullConnect || !fullConnect) // Temp skip
{ {
var warns = await CS2_SimpleAdmin.Instance.WarnManager.GetPlayerWarns(CS2_SimpleAdmin.PlayersInfo[userId], false); var warns = await CS2_SimpleAdmin.Instance.WarnManager.GetPlayerWarns(CS2_SimpleAdmin.PlayersInfo[userId], false);
var (totalMutes, totalGags, totalSilences) = var (totalMutes, totalGags, totalSilences) =

View file

@ -1 +1 @@
1.7.2c 1.7.4b

View file

@ -62,7 +62,7 @@ public partial class CS2_SimpleAdmin
private static readonly PluginCapability<IMenuApi> MenuCapability = new("menu:nfcore"); private static readonly PluginCapability<IMenuApi> MenuCapability = new("menu:nfcore");
// Shared API // Shared API
private Api.CS2_SimpleAdminApi? SimpleAdminApi { get; set; } internal static Api.CS2_SimpleAdminApi? SimpleAdminApi { get; set; }
// Managers // Managers
internal PermissionManager PermissionManager = new(Database); internal PermissionManager PermissionManager = new(Database);

View file

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.303" /> <PackageReference Include="CounterStrikeSharp.API" Version="1.0.305" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View file

@ -19,10 +19,13 @@ public interface ICS2_SimpleAdminApi
public event Action<PlayerInfo, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltied; public event Action<PlayerInfo, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltied;
public event Action<SteamID, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltiedAdded; public event Action<SteamID, PlayerInfo?, PenaltyType, string, int, int?, int?>? OnPlayerPenaltiedAdded;
public event Action<string, string?, bool, object>? OnAdminShowActivity;
public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1); public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1);
public void IssuePenalty(SteamID steamid, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1);
public void LogCommand(CCSPlayerController? caller, string command); public void LogCommand(CCSPlayerController? caller, string command);
public void LogCommand(CCSPlayerController? caller, CommandInfo command); public void LogCommand(CCSPlayerController? caller, CommandInfo command);
public void ShowAdminActivity(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs);
public bool IsAdminSilent(CCSPlayerController player); public bool IsAdminSilent(CCSPlayerController player);
} }

View file

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>AntiDLL_CS2_SimpleAdmin</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.305" />
</ItemGroup>
<ItemGroup>
<Reference Include="AntiDLL.API">
<HintPath>AntiDLL.API.dll</HintPath>
</Reference>
<Reference Include="CS2-SimpleAdminApi">
<HintPath>CS2-SimpleAdminApi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View file

@ -0,0 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AntiDLL-CS2-SimpleAdmin", "AntiDLL-CS2-SimpleAdmin.csproj", "{21D8E512-1FA9-41DD-B955-709704CEC377}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{21D8E512-1FA9-41DD-B955-709704CEC377}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{21D8E512-1FA9-41DD-B955-709704CEC377}.Debug|Any CPU.Build.0 = Debug|Any CPU
{21D8E512-1FA9-41DD-B955-709704CEC377}.Release|Any CPU.ActiveCfg = Release|Any CPU
{21D8E512-1FA9-41DD-B955-709704CEC377}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,4 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=L_003A_005CGITHUB_005CAntiDLL_002DCS2_002DSimpleAdmin_005CAntiDLL_002EAPI_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=L_003A_005CGITHUB_005CAntiDLL_002DCS2_002DSimpleAdmin_005CCS2_002DSimpleAdminApi_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AListeners_002Eg_002Ecs_002Fl_003AC_0021_003FUsers_003Fxdaff_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F713af59e56bd198a6c433c53fdfff3391c38c47a55afbc2f8954ef61b3213c7a_003FListeners_002Eg_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

Binary file not shown.

View file

@ -0,0 +1,120 @@
using CounterStrikeSharp.API.ValveConstants.Protobuf;
namespace AntiDLL_CS2_SimpleAdmin;
using System.Text.Json.Serialization;
using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Modules.Entities;
using CS2_SimpleAdminApi;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Capabilities;
using Microsoft.Extensions.Logging;
using AntiDLL.API;
public class PluginConfig : IBasePluginConfig
{
[JsonPropertyName("ConfigVersion")] public int Version { get; set; } = 1;
[JsonPropertyName("Reason")] public string Reason { get; set; } = "Invalid event detected!";
[JsonPropertyName("Duration")] public int Duration { get; set; } = 0;
[JsonPropertyName("CommandToExecute")] public string CommandToExecute { get; set; } = "css_addban {steamid64} {duration} {reason}";
[JsonPropertyName("BanType")] public string BanType { get; set; } = "auto";
}
public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig<PluginConfig>
{
public PluginConfig Config { get; set; } = new();
private readonly HashSet<int> _bannedPlayers = [];
private static PluginCapability<IAntiDLL> AntiDll { get; } = new("AntiDLL");
private static PluginCapability<ICS2_SimpleAdminApi> SimpleAdminApi { get; } = new("simpleadmin:api");
private int _banType = 0;
private static ICS2_SimpleAdminApi? _simpleAdminApi;
public override string ModuleName => "AntiDLL [CS2-SimpleAdmin Module]";
public override string ModuleDescription => "AntiDLL module for CS2-SimpleAdmin integration";
public override string ModuleVersion => "1.0.0";
public override string ModuleAuthor => "daffyy";
public override void Load(bool hotReload)
{
RegisterListener<Listeners.OnClientDisconnect>(OnClientDisconnect);
}
public void OnConfigParsed(PluginConfig config)
{
Config = config;
}
public override void OnAllPluginsLoaded(bool hotReload)
{
try
{
var antidll = AntiDll.Get();
if (antidll == null)
{
Logger.LogError("Failed to get AntiDLL API");
Unload(false);
return;
}
antidll.OnDetection += OnDetection;
}
catch (Exception)
{
Logger.LogError("Failed to get AntiDLL API");
Unload(false);
}
try
{
_simpleAdminApi = SimpleAdminApi.Get();
if (_simpleAdminApi != null)
_banType = 1;
}
catch (Exception)
{
Logger.LogError("Failed to get CS2-SimpleAdmin API, using command as BanType");
}
}
private void OnClientDisconnect(int playerSlot)
{
var player = Utilities.GetPlayerFromSlot(playerSlot);
if (player == null || !player.IsValid || player.IsBot)
return;
_bannedPlayers.Remove(playerSlot);
}
private void OnDetection(CCSPlayerController player, string eventName)
{
if (!_bannedPlayers.Add(player.Slot))
return;
if (_banType == 1 && _simpleAdminApi != null)
{
_simpleAdminApi.IssuePenalty(new SteamID(player.SteamID), null, PenaltyType.Ban, Config.Reason, Config.Duration);
}
else if (Config.BanType == "kick")
{
player.Disconnect(NetworkDisconnectionReason.NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT);
}
else
{
Server.ExecuteCommand(Config.CommandToExecute.Replace("{steamid64}", player.SteamID.ToString())
.Replace("{duration}", Config.Duration.ToString()).Replace("{reason}", $"\"{Config.Reason}\"")
.Replace("{userid}", player.UserId.Value.ToString()));
}
}
public override void Unload(bool hotReload)
{
RemoveListener<Listeners.OnClientDisconnect>(OnClientDisconnect);
var antidll = AntiDll.Get();
if (antidll != null)
{
antidll.OnDetection -= OnDetection;
}
}
}

View file

@ -0,0 +1,900 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"AntiDLL-CS2-SimpleAdmin/1.0.0": {
"dependencies": {
"CounterStrikeSharp.API": "1.0.305",
"AntiDLL.API": "1.0.0.0",
"CS2-SimpleAdminApi": "1.0.0.0"
},
"runtime": {
"AntiDLL-CS2-SimpleAdmin.dll": {}
}
},
"CounterStrikeSharp.API/1.0.305": {
"dependencies": {
"McMaster.NETCore.Plugins": "1.4.0",
"Microsoft.CSharp": "4.7.0",
"Microsoft.DotNet.ApiCompat.Task": "8.0.203",
"Microsoft.Extensions.Hosting": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Localization.Abstractions": "8.0.3",
"Microsoft.Extensions.Logging": "8.0.0",
"Scrutor": "4.2.2",
"Serilog.Extensions.Logging": "8.0.0",
"Serilog.Sinks.Console": "5.0.0",
"Serilog.Sinks.File": "5.0.0",
"System.Data.DataSetExtensions": "4.5.0"
},
"runtime": {
"lib/net8.0/CounterStrikeSharp.API.dll": {
"assemblyVersion": "1.0.305.0",
"fileVersion": "1.0.305.0"
}
}
},
"McMaster.NETCore.Plugins/1.4.0": {
"dependencies": {
"Microsoft.DotNet.PlatformAbstractions": "3.1.6",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": {
"assemblyVersion": "1.4.0.0",
"fileVersion": "1.4.0.0"
}
}
},
"Microsoft.CSharp/4.7.0": {},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"runtime": {
"lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": {
"assemblyVersion": "3.1.6.0",
"fileVersion": "3.100.620.31604"
}
}
},
"Microsoft.Extensions.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"dependencies": {
"System.Buffers": "4.5.1",
"System.Memory": "4.5.4",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.DiagnosticSource": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "8.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Logging.Console": "8.0.0",
"Microsoft.Extensions.Logging.Debug": "8.0.0",
"Microsoft.Extensions.Logging.EventLog": "8.0.0",
"Microsoft.Extensions.Logging.EventSource": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.324.11615"
}
}
},
"Microsoft.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Console.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.EventLog": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Scrutor/4.2.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/net6.0/Scrutor.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.0.0.0"
}
}
},
"Serilog/3.1.1": {
"runtime": {
"lib/net7.0/Serilog.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "3.1.1.0"
}
}
},
"Serilog.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Logging": "8.0.0",
"Serilog": "3.1.1"
},
"runtime": {
"lib/net8.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "8.0.0.0"
}
}
},
"Serilog.Sinks.Console/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net7.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"Serilog.Sinks.File/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net5.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"System.Buffers/4.5.1": {},
"System.Data.DataSetExtensions/4.5.0": {},
"System.Diagnostics.DiagnosticSource/8.0.0": {},
"System.Diagnostics.EventLog/8.0.0": {
"runtime": {
"lib/net8.0/System.Diagnostics.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "0.0.0.0"
},
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.Memory/4.5.4": {},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encodings.Web/8.0.0": {},
"System.Text.Json/8.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"AntiDLL.API/1.0.0.0": {
"runtime": {
"AntiDLL.API.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"CS2-SimpleAdminApi/1.0.0.0": {
"runtime": {
"CS2-SimpleAdminApi.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"AntiDLL-CS2-SimpleAdmin/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"CounterStrikeSharp.API/1.0.305": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WoeI/sQ85HM2UG0ADvtfm7JaWNSETPn4gwTvKTKdX7uRoNPavVuemW1jB7dCKQQMW/7So96FVL0qbqYhE91Jpw==",
"path": "counterstrikesharp.api/1.0.305",
"hashPath": "counterstrikesharp.api.1.0.305.nupkg.sha512"
},
"McMaster.NETCore.Plugins/1.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==",
"path": "mcmaster.netcore.plugins/1.4.0",
"hashPath": "mcmaster.netcore.plugins.1.4.0.nupkg.sha512"
},
"Microsoft.CSharp/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
"path": "microsoft.csharp/4.7.0",
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nPEGMojf1mj1oVixe0aiBimSn6xUoZswSjpMPZFMkZ+znYm2GEM5tWGZEWb6OSNIo5gWKyDi1WcI4IL7YiL1Zw==",
"path": "microsoft.dotnet.apicompat.task/8.0.203",
"hashPath": "microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512"
},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==",
"path": "microsoft.dotnet.platformabstractions/3.1.6",
"hashPath": "microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"path": "microsoft.extensions.configuration/8.0.0",
"hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==",
"path": "microsoft.extensions.configuration.binder/8.0.0",
"hashPath": "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==",
"path": "microsoft.extensions.configuration.commandline/8.0.0",
"hashPath": "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==",
"path": "microsoft.extensions.configuration.environmentvariables/8.0.0",
"hashPath": "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
"path": "microsoft.extensions.configuration.fileextensions/8.0.0",
"hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
"path": "microsoft.extensions.configuration.json/8.0.0",
"hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==",
"path": "microsoft.extensions.configuration.usersecrets/8.0.0",
"hashPath": "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"path": "microsoft.extensions.dependencyinjection/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==",
"path": "microsoft.extensions.dependencymodel/6.0.0",
"hashPath": "microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==",
"path": "microsoft.extensions.diagnostics/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==",
"path": "microsoft.extensions.diagnostics.abstractions/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
"path": "microsoft.extensions.fileproviders.abstractions/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
"path": "microsoft.extensions.fileproviders.physical/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==",
"path": "microsoft.extensions.filesystemglobbing/8.0.0",
"hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==",
"path": "microsoft.extensions.hosting/8.0.0",
"hashPath": "microsoft.extensions.hosting.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==",
"path": "microsoft.extensions.hosting.abstractions/8.0.0",
"hashPath": "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k/kUPm1FQBxcs9/vsM1eF4qIOg2Sovqh/+KUGHur5Mc0Y3OFGuoz9ktBX7LA0gPz53SZhW3W3oaSaMFFcjgM6Q==",
"path": "microsoft.extensions.localization.abstractions/8.0.3",
"hashPath": "microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512"
},
"Microsoft.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==",
"path": "microsoft.extensions.logging/8.0.0",
"hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"path": "microsoft.extensions.logging.abstractions/8.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==",
"path": "microsoft.extensions.logging.configuration/8.0.0",
"hashPath": "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==",
"path": "microsoft.extensions.logging.console/8.0.0",
"hashPath": "microsoft.extensions.logging.console.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==",
"path": "microsoft.extensions.logging.debug/8.0.0",
"hashPath": "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==",
"path": "microsoft.extensions.logging.eventlog/8.0.0",
"hashPath": "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==",
"path": "microsoft.extensions.logging.eventsource/8.0.0",
"hashPath": "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==",
"path": "microsoft.extensions.options/8.0.0",
"hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"path": "microsoft.extensions.options.configurationextensions/8.0.0",
"hashPath": "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"path": "microsoft.extensions.primitives/8.0.0",
"hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
},
"Scrutor/4.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t5VIYA7WJXoJJo7s4DoHakMGwTu+MeEnZumMOhTCH7kz9xWha24G7dJNxWrHPlu0ZdZAS4jDZCxxAnyaBh7uYw==",
"path": "scrutor/4.2.2",
"hashPath": "scrutor.4.2.2.nupkg.sha512"
},
"Serilog/3.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P6G4/4Kt9bT635bhuwdXlJ2SCqqn2nhh4gqFqQueCOr9bK/e7W9ll/IoX1Ter948cV2Z/5+5v8pAfJYUISY03A==",
"path": "serilog/3.1.1",
"hashPath": "serilog.3.1.1.nupkg.sha512"
},
"Serilog.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==",
"path": "serilog.extensions.logging/8.0.0",
"hashPath": "serilog.extensions.logging.8.0.0.nupkg.sha512"
},
"Serilog.Sinks.Console/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IZ6bn79k+3SRXOBpwSOClUHikSkp2toGPCZ0teUkscv4dpDg9E2R2xVsNkLmwddE4OpNVO3N0xiYsAH556vN8Q==",
"path": "serilog.sinks.console/5.0.0",
"hashPath": "serilog.sinks.console.5.0.0.nupkg.sha512"
},
"Serilog.Sinks.File/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
"path": "serilog.sinks.file/5.0.0",
"hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512"
},
"System.Buffers/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
"path": "system.buffers/4.5.1",
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
},
"System.Data.DataSetExtensions/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==",
"path": "system.data.datasetextensions/4.5.0",
"hashPath": "system.data.datasetextensions.4.5.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==",
"path": "system.diagnostics.diagnosticsource/8.0.0",
"hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512"
},
"System.Diagnostics.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==",
"path": "system.diagnostics.eventlog/8.0.0",
"hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512"
},
"System.Memory/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
"path": "system.memory/4.5.4",
"hashPath": "system.memory.4.5.4.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
"path": "system.text.encodings.web/8.0.0",
"hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512"
},
"System.Text.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
"path": "system.text.json/8.0.0",
"hashPath": "system.text.json.8.0.0.nupkg.sha512"
},
"AntiDLL.API/1.0.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
},
"CS2-SimpleAdminApi/1.0.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

View file

@ -0,0 +1,7 @@
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMinor",
"allowPrerelease": false
}
}

View file

@ -0,0 +1,16 @@
"Config"
{
// Доступные переменные: {userid}, {steamid}, {name}
"punish_type" "1" // 0 - kick, 1 - command(punish_command)
"punish_command" "css_addban {steamid} 0 [AC] Cheats detected #5" // Command to execute when a player is detected with a DLL
// Команда для выполнения, когда игрок обнаружен с DLL
"chat_message" "" // Сообщение в чат при обнаружении DLL для всех игроков, пусто - не отправлять
// Chat message when a player is detected with a DLL for all players, empty - dont send
"logs" "1" // Логировать в файл наказания? 0 - нет, 1 - да
// Log punishments to file? 0 - no, 1 - yes
"interval" "120" // Интервал проверки игроков на наличие DLL в секундах
// Interval to check players for DLL in seconds
}

View file

@ -12,7 +12,7 @@ namespace CS2_SimpleAdmin_ExampleModule;
public class CS2_SimpleAdmin_ExampleModule: BasePlugin public class CS2_SimpleAdmin_ExampleModule: BasePlugin
{ {
public override string ModuleName => "[CS2-SimpleAdmin] Example module"; public override string ModuleName => "[CS2-SimpleAdmin] Example module";
public override string ModuleVersion => "v1.0.0"; public override string ModuleVersion => "v1.0.1";
public override string ModuleAuthor => "daffyy"; public override string ModuleAuthor => "daffyy";
private int? _serverId; private int? _serverId;
@ -69,6 +69,13 @@ public class CS2_SimpleAdmin_ExampleModule: BasePlugin
commandInfo.ReplyToCommand($"Your total silences: {playerInfo?.SteamId}"); commandInfo.ReplyToCommand($"Your total silences: {playerInfo?.SteamId}");
} }
[ConsoleCommand("css_testaddban")]
[CommandHelper(whoCanExecute: CommandUsage.SERVER_ONLY)]
public void OnAddBanCommand(CCSPlayerController? caller, CommandInfo commandInfo)
{
_sharedApi?.IssuePenalty(new SteamID(76561197960287930), null, PenaltyType.Ban, "My super reason", 10);
}
private void OnPlayerPenaltied(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType, private void OnPlayerPenaltied(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType,
string reason, int duration, int? penaltyId, int? serverId) string reason, int duration, int? penaltyId, int? serverId)
{ {

View file

@ -0,0 +1,955 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"CS2-SimpleAdmin_RedisInform/1.0.0": {
"dependencies": {
"CounterStrikeSharp.API": "1.0.305",
"Newtonsoft.Json": "13.0.3",
"StackExchange.Redis": "2.8.24",
"CS2-SimpleAdminApi": "1.0.0.0"
},
"runtime": {
"CS2-SimpleAdmin_RedisInform.dll": {}
}
},
"CounterStrikeSharp.API/1.0.305": {
"dependencies": {
"McMaster.NETCore.Plugins": "1.4.0",
"Microsoft.CSharp": "4.7.0",
"Microsoft.DotNet.ApiCompat.Task": "8.0.203",
"Microsoft.Extensions.Hosting": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Localization.Abstractions": "8.0.3",
"Microsoft.Extensions.Logging": "8.0.0",
"Scrutor": "4.2.2",
"Serilog.Extensions.Logging": "8.0.0",
"Serilog.Sinks.Console": "5.0.0",
"Serilog.Sinks.File": "5.0.0",
"System.Data.DataSetExtensions": "4.5.0"
},
"runtime": {
"lib/net8.0/CounterStrikeSharp.API.dll": {
"assemblyVersion": "1.0.305.0",
"fileVersion": "1.0.305.0"
}
}
},
"McMaster.NETCore.Plugins/1.4.0": {
"dependencies": {
"Microsoft.DotNet.PlatformAbstractions": "3.1.6",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": {
"assemblyVersion": "1.4.0.0",
"fileVersion": "1.4.0.0"
}
}
},
"Microsoft.CSharp/4.7.0": {},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"runtime": {
"lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": {
"assemblyVersion": "3.1.6.0",
"fileVersion": "3.100.620.31604"
}
}
},
"Microsoft.Extensions.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"dependencies": {
"System.Buffers": "4.5.1",
"System.Memory": "4.5.4",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.DiagnosticSource": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "8.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Logging.Console": "8.0.0",
"Microsoft.Extensions.Logging.Debug": "8.0.0",
"Microsoft.Extensions.Logging.EventLog": "8.0.0",
"Microsoft.Extensions.Logging.EventSource": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.324.11615"
}
}
},
"Microsoft.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Console.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.EventLog": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Newtonsoft.Json/13.0.3": {
"runtime": {
"lib/net6.0/Newtonsoft.Json.dll": {
"assemblyVersion": "13.0.0.0",
"fileVersion": "13.0.3.27908"
}
}
},
"Pipelines.Sockets.Unofficial/2.2.8": {
"dependencies": {
"System.IO.Pipelines": "5.0.1"
},
"runtime": {
"lib/net5.0/Pipelines.Sockets.Unofficial.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "2.2.8.1080"
}
}
},
"Scrutor/4.2.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/net6.0/Scrutor.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.0.0.0"
}
}
},
"Serilog/3.1.1": {
"runtime": {
"lib/net7.0/Serilog.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "3.1.1.0"
}
}
},
"Serilog.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Logging": "8.0.0",
"Serilog": "3.1.1"
},
"runtime": {
"lib/net8.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "8.0.0.0"
}
}
},
"Serilog.Sinks.Console/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net7.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"Serilog.Sinks.File/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net5.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"StackExchange.Redis/2.8.24": {
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Pipelines.Sockets.Unofficial": "2.2.8"
},
"runtime": {
"lib/net8.0/StackExchange.Redis.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.8.24.3255"
}
}
},
"System.Buffers/4.5.1": {},
"System.Data.DataSetExtensions/4.5.0": {},
"System.Diagnostics.DiagnosticSource/8.0.0": {},
"System.Diagnostics.EventLog/8.0.0": {
"runtime": {
"lib/net8.0/System.Diagnostics.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "0.0.0.0"
},
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.IO.Pipelines/5.0.1": {
"runtime": {
"lib/netcoreapp3.0/System.IO.Pipelines.dll": {
"assemblyVersion": "5.0.0.1",
"fileVersion": "5.0.120.57516"
}
}
},
"System.Memory/4.5.4": {},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encodings.Web/8.0.0": {},
"System.Text.Json/8.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"CS2-SimpleAdminApi/1.0.0.0": {
"runtime": {
"CS2-SimpleAdminApi.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"CS2-SimpleAdmin_RedisInform/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"CounterStrikeSharp.API/1.0.305": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WoeI/sQ85HM2UG0ADvtfm7JaWNSETPn4gwTvKTKdX7uRoNPavVuemW1jB7dCKQQMW/7So96FVL0qbqYhE91Jpw==",
"path": "counterstrikesharp.api/1.0.305",
"hashPath": "counterstrikesharp.api.1.0.305.nupkg.sha512"
},
"McMaster.NETCore.Plugins/1.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==",
"path": "mcmaster.netcore.plugins/1.4.0",
"hashPath": "mcmaster.netcore.plugins.1.4.0.nupkg.sha512"
},
"Microsoft.CSharp/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
"path": "microsoft.csharp/4.7.0",
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nPEGMojf1mj1oVixe0aiBimSn6xUoZswSjpMPZFMkZ+znYm2GEM5tWGZEWb6OSNIo5gWKyDi1WcI4IL7YiL1Zw==",
"path": "microsoft.dotnet.apicompat.task/8.0.203",
"hashPath": "microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512"
},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==",
"path": "microsoft.dotnet.platformabstractions/3.1.6",
"hashPath": "microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"path": "microsoft.extensions.configuration/8.0.0",
"hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==",
"path": "microsoft.extensions.configuration.binder/8.0.0",
"hashPath": "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==",
"path": "microsoft.extensions.configuration.commandline/8.0.0",
"hashPath": "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==",
"path": "microsoft.extensions.configuration.environmentvariables/8.0.0",
"hashPath": "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
"path": "microsoft.extensions.configuration.fileextensions/8.0.0",
"hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
"path": "microsoft.extensions.configuration.json/8.0.0",
"hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==",
"path": "microsoft.extensions.configuration.usersecrets/8.0.0",
"hashPath": "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"path": "microsoft.extensions.dependencyinjection/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==",
"path": "microsoft.extensions.dependencymodel/6.0.0",
"hashPath": "microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==",
"path": "microsoft.extensions.diagnostics/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==",
"path": "microsoft.extensions.diagnostics.abstractions/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
"path": "microsoft.extensions.fileproviders.abstractions/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
"path": "microsoft.extensions.fileproviders.physical/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==",
"path": "microsoft.extensions.filesystemglobbing/8.0.0",
"hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==",
"path": "microsoft.extensions.hosting/8.0.0",
"hashPath": "microsoft.extensions.hosting.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==",
"path": "microsoft.extensions.hosting.abstractions/8.0.0",
"hashPath": "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k/kUPm1FQBxcs9/vsM1eF4qIOg2Sovqh/+KUGHur5Mc0Y3OFGuoz9ktBX7LA0gPz53SZhW3W3oaSaMFFcjgM6Q==",
"path": "microsoft.extensions.localization.abstractions/8.0.3",
"hashPath": "microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512"
},
"Microsoft.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==",
"path": "microsoft.extensions.logging/8.0.0",
"hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"path": "microsoft.extensions.logging.abstractions/8.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==",
"path": "microsoft.extensions.logging.configuration/8.0.0",
"hashPath": "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==",
"path": "microsoft.extensions.logging.console/8.0.0",
"hashPath": "microsoft.extensions.logging.console.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==",
"path": "microsoft.extensions.logging.debug/8.0.0",
"hashPath": "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==",
"path": "microsoft.extensions.logging.eventlog/8.0.0",
"hashPath": "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==",
"path": "microsoft.extensions.logging.eventsource/8.0.0",
"hashPath": "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==",
"path": "microsoft.extensions.options/8.0.0",
"hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"path": "microsoft.extensions.options.configurationextensions/8.0.0",
"hashPath": "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"path": "microsoft.extensions.primitives/8.0.0",
"hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
},
"Newtonsoft.Json/13.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
"path": "newtonsoft.json/13.0.3",
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
},
"Pipelines.Sockets.Unofficial/2.2.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==",
"path": "pipelines.sockets.unofficial/2.2.8",
"hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512"
},
"Scrutor/4.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t5VIYA7WJXoJJo7s4DoHakMGwTu+MeEnZumMOhTCH7kz9xWha24G7dJNxWrHPlu0ZdZAS4jDZCxxAnyaBh7uYw==",
"path": "scrutor/4.2.2",
"hashPath": "scrutor.4.2.2.nupkg.sha512"
},
"Serilog/3.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P6G4/4Kt9bT635bhuwdXlJ2SCqqn2nhh4gqFqQueCOr9bK/e7W9ll/IoX1Ter948cV2Z/5+5v8pAfJYUISY03A==",
"path": "serilog/3.1.1",
"hashPath": "serilog.3.1.1.nupkg.sha512"
},
"Serilog.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==",
"path": "serilog.extensions.logging/8.0.0",
"hashPath": "serilog.extensions.logging.8.0.0.nupkg.sha512"
},
"Serilog.Sinks.Console/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IZ6bn79k+3SRXOBpwSOClUHikSkp2toGPCZ0teUkscv4dpDg9E2R2xVsNkLmwddE4OpNVO3N0xiYsAH556vN8Q==",
"path": "serilog.sinks.console/5.0.0",
"hashPath": "serilog.sinks.console.5.0.0.nupkg.sha512"
},
"Serilog.Sinks.File/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
"path": "serilog.sinks.file/5.0.0",
"hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512"
},
"StackExchange.Redis/2.8.24": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GWllmsFAtLyhm4C47cOCipGxyEi1NQWTFUHXnJ8hiHOsK/bH3T5eLkWPVW+LRL6jDiB3g3izW3YEHgLuPoJSyA==",
"path": "stackexchange.redis/2.8.24",
"hashPath": "stackexchange.redis.2.8.24.nupkg.sha512"
},
"System.Buffers/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
"path": "system.buffers/4.5.1",
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
},
"System.Data.DataSetExtensions/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==",
"path": "system.data.datasetextensions/4.5.0",
"hashPath": "system.data.datasetextensions.4.5.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==",
"path": "system.diagnostics.diagnosticsource/8.0.0",
"hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512"
},
"System.Diagnostics.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==",
"path": "system.diagnostics.eventlog/8.0.0",
"hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512"
},
"System.IO.Pipelines/5.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qEePWsaq9LoEEIqhbGe6D5J8c9IqQOUuTzzV6wn1POlfdLkJliZY3OlB0j0f17uMWlqZYjH7txj+2YbyrIA8Yg==",
"path": "system.io.pipelines/5.0.1",
"hashPath": "system.io.pipelines.5.0.1.nupkg.sha512"
},
"System.Memory/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
"path": "system.memory/4.5.4",
"hashPath": "system.memory.4.5.4.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
"path": "system.text.encodings.web/8.0.0",
"hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512"
},
"System.Text.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
"path": "system.text.json/8.0.0",
"hashPath": "system.text.json.8.0.0.nupkg.sha512"
},
"CS2-SimpleAdminApi/1.0.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
}
}
}

View file

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>CS2_SimpleAdmin_RedisInform</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.305" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
</ItemGroup>
<ItemGroup>
<Reference Include="CS2-SimpleAdminApi">
<HintPath>CS2-SimpleAdminApi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View file

@ -0,0 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2-SimpleAdmin_RedisInform", "CS2-SimpleAdmin_RedisInform.csproj", "{D04330AB-3B25-4A5C-8077-4ADD46A3FBF2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D04330AB-3B25-4A5C-8077-4ADD46A3FBF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D04330AB-3B25-4A5C-8077-4ADD46A3FBF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D04330AB-3B25-4A5C-8077-4ADD46A3FBF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D04330AB-3B25-4A5C-8077-4ADD46A3FBF2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=L_003A_005CGITHUB_005CCS2_002DSimpleAdmin_005FRedisInform_005CCS2_002DSimpleAdminApi_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConfigurationOptions_002Ecs_002Fl_003AC_0021_003FUsers_003Fxdaff_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F603936a1d27db45979368235fafad54e4b1899baa22fb9bff6dabd9eb1f31_003FConfigurationOptions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

View file

@ -0,0 +1,939 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"CS2-SimpleAdmin_RedisInform/1.0.0": {
"dependencies": {
"CounterStrikeSharp.API": "1.0.305",
"StackExchange.Redis": "2.8.24",
"CS2-SimpleAdminApi": "1.0.0.0"
},
"runtime": {
"CS2-SimpleAdmin_RedisInform.dll": {}
}
},
"CounterStrikeSharp.API/1.0.305": {
"dependencies": {
"McMaster.NETCore.Plugins": "1.4.0",
"Microsoft.CSharp": "4.7.0",
"Microsoft.DotNet.ApiCompat.Task": "8.0.203",
"Microsoft.Extensions.Hosting": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Localization.Abstractions": "8.0.3",
"Microsoft.Extensions.Logging": "8.0.0",
"Scrutor": "4.2.2",
"Serilog.Extensions.Logging": "8.0.0",
"Serilog.Sinks.Console": "5.0.0",
"Serilog.Sinks.File": "5.0.0",
"System.Data.DataSetExtensions": "4.5.0"
},
"runtime": {
"lib/net8.0/CounterStrikeSharp.API.dll": {
"assemblyVersion": "1.0.305.0",
"fileVersion": "1.0.305.0"
}
}
},
"McMaster.NETCore.Plugins/1.4.0": {
"dependencies": {
"Microsoft.DotNet.PlatformAbstractions": "3.1.6",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/netcoreapp3.1/McMaster.NETCore.Plugins.dll": {
"assemblyVersion": "1.4.0.0",
"fileVersion": "1.4.0.0"
}
}
},
"Microsoft.CSharp/4.7.0": {},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"runtime": {
"lib/netstandard2.0/Microsoft.DotNet.PlatformAbstractions.dll": {
"assemblyVersion": "3.1.6.0",
"fileVersion": "3.100.620.31604"
}
}
},
"Microsoft.Extensions.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"dependencies": {
"System.Buffers": "4.5.1",
"System.Memory": "4.5.4",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"System.Text.Encodings.Web": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.21.52210"
}
}
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.DiagnosticSource": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "8.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "8.0.0",
"Microsoft.Extensions.Configuration.Json": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Physical": "8.0.0",
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Logging.Console": "8.0.0",
"Microsoft.Extensions.Logging.Debug": "8.0.0",
"Microsoft.Extensions.Logging.EventLog": "8.0.0",
"Microsoft.Extensions.Logging.EventSource": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Diagnostics.Abstractions": "8.0.0",
"Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Localization.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.324.11615"
}
}
},
"Microsoft.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging.Configuration": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Console.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"System.Diagnostics.EventLog": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0",
"System.Text.Json": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options/8.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.Binder": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Options": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"Pipelines.Sockets.Unofficial/2.2.8": {
"dependencies": {
"System.IO.Pipelines": "5.0.1"
},
"runtime": {
"lib/net5.0/Pipelines.Sockets.Unofficial.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "2.2.8.1080"
}
}
},
"Scrutor/4.2.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyModel": "6.0.0"
},
"runtime": {
"lib/net6.0/Scrutor.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.0.0.0"
}
}
},
"Serilog/3.1.1": {
"runtime": {
"lib/net7.0/Serilog.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "3.1.1.0"
}
}
},
"Serilog.Extensions.Logging/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Logging": "8.0.0",
"Serilog": "3.1.1"
},
"runtime": {
"lib/net8.0/Serilog.Extensions.Logging.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "8.0.0.0"
}
}
},
"Serilog.Sinks.Console/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net7.0/Serilog.Sinks.Console.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"Serilog.Sinks.File/5.0.0": {
"dependencies": {
"Serilog": "3.1.1"
},
"runtime": {
"lib/net5.0/Serilog.Sinks.File.dll": {
"assemblyVersion": "5.0.0.0",
"fileVersion": "5.0.0.0"
}
}
},
"StackExchange.Redis/2.8.24": {
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.0",
"Pipelines.Sockets.Unofficial": "2.2.8"
},
"runtime": {
"lib/net8.0/StackExchange.Redis.dll": {
"assemblyVersion": "2.0.0.0",
"fileVersion": "2.8.24.3255"
}
}
},
"System.Buffers/4.5.1": {},
"System.Data.DataSetExtensions/4.5.0": {},
"System.Diagnostics.DiagnosticSource/8.0.0": {},
"System.Diagnostics.EventLog/8.0.0": {
"runtime": {
"lib/net8.0/System.Diagnostics.EventLog.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
},
"runtimeTargets": {
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "0.0.0.0"
},
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53103"
}
}
},
"System.IO.Pipelines/5.0.1": {
"runtime": {
"lib/netcoreapp3.0/System.IO.Pipelines.dll": {
"assemblyVersion": "5.0.0.1",
"fileVersion": "5.0.120.57516"
}
}
},
"System.Memory/4.5.4": {},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encodings.Web/8.0.0": {},
"System.Text.Json/8.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"CS2-SimpleAdminApi/1.0.0.0": {
"runtime": {
"CS2-SimpleAdminApi.dll": {
"assemblyVersion": "1.0.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"CS2-SimpleAdmin_RedisInform/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"CounterStrikeSharp.API/1.0.305": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WoeI/sQ85HM2UG0ADvtfm7JaWNSETPn4gwTvKTKdX7uRoNPavVuemW1jB7dCKQQMW/7So96FVL0qbqYhE91Jpw==",
"path": "counterstrikesharp.api/1.0.305",
"hashPath": "counterstrikesharp.api.1.0.305.nupkg.sha512"
},
"McMaster.NETCore.Plugins/1.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UKw5Z2/QHhkR7kiAJmqdCwVDMQV0lwsfj10+FG676r8DsJWIpxtachtEjE0qBs9WoK5GUQIqxgyFeYUSwuPszg==",
"path": "mcmaster.netcore.plugins/1.4.0",
"hashPath": "mcmaster.netcore.plugins.1.4.0.nupkg.sha512"
},
"Microsoft.CSharp/4.7.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
"path": "microsoft.csharp/4.7.0",
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
},
"Microsoft.DotNet.ApiCompat.Task/8.0.203": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nPEGMojf1mj1oVixe0aiBimSn6xUoZswSjpMPZFMkZ+znYm2GEM5tWGZEWb6OSNIo5gWKyDi1WcI4IL7YiL1Zw==",
"path": "microsoft.dotnet.apicompat.task/8.0.203",
"hashPath": "microsoft.dotnet.apicompat.task.8.0.203.nupkg.sha512"
},
"Microsoft.DotNet.PlatformAbstractions/3.1.6": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jek4XYaQ/PGUwDKKhwR8K47Uh1189PFzMeLqO83mXrXQVIpARZCcfuDedH50YDTepBkfijCZN5U/vZi++erxtg==",
"path": "microsoft.dotnet.platformabstractions/3.1.6",
"hashPath": "microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"path": "microsoft.extensions.configuration/8.0.0",
"hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mBMoXLsr5s1y2zOHWmKsE9veDcx8h1x/c3rz4baEdQKTeDcmQAPNbB54Pi/lhFO3K431eEq6PFbMgLaa6PHFfA==",
"path": "microsoft.extensions.configuration.binder/8.0.0",
"hashPath": "microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.CommandLine/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==",
"path": "microsoft.extensions.configuration.commandline/8.0.0",
"hashPath": "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==",
"path": "microsoft.extensions.configuration.environmentvariables/8.0.0",
"hashPath": "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-McP+Lz/EKwvtCv48z0YImw+L1gi1gy5rHhNaNIY2CrjloV+XY8gydT8DjMR6zWeL13AFK+DioVpppwAuO1Gi1w==",
"path": "microsoft.extensions.configuration.fileextensions/8.0.0",
"hashPath": "microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-C2wqUoh9OmRL1akaCcKSTmRU8z0kckfImG7zLNI8uyi47Lp+zd5LWAD17waPQEqCz3ioWOCrFUo+JJuoeZLOBw==",
"path": "microsoft.extensions.configuration.json/8.0.0",
"hashPath": "microsoft.extensions.configuration.json.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.UserSecrets/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ihDHu2dJYQird9pl2CbdwuNDfvCZdOS0S7SPlNfhPt0B81UTT+yyZKz2pimFZGUp3AfuBRnqUCxB2SjsZKHVUw==",
"path": "microsoft.extensions.configuration.usersecrets/8.0.0",
"hashPath": "microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"path": "microsoft.extensions.dependencyinjection/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TD5QHg98m3+QhgEV1YVoNMl5KtBw/4rjfxLHO0e/YV9bPUBDKntApP4xdrVtGgCeQZHVfC2EXIGsdpRNrr87Pg==",
"path": "microsoft.extensions.dependencymodel/6.0.0",
"hashPath": "microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3PZp/YSkIXrF7QK7PfC1bkyRYwqOHpWFad8Qx+4wkuumAeXo1NHaxpS9LboNA9OvNSAu+QOVlXbMyoY+pHSqcw==",
"path": "microsoft.extensions.diagnostics/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JHYCQG7HmugNYUhOl368g+NMxYE/N/AiclCYRNlgCY9eVyiBkOHMwK4x60RYMxv9EL3+rmj1mqHvdCiPpC+D4Q==",
"path": "microsoft.extensions.diagnostics.abstractions/8.0.0",
"hashPath": "microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
"path": "microsoft.extensions.fileproviders.abstractions/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
"path": "microsoft.extensions.fileproviders.physical/8.0.0",
"hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==",
"path": "microsoft.extensions.filesystemglobbing/8.0.0",
"hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ItYHpdqVp5/oFLT5QqbopnkKlyFG9EW/9nhM6/yfObeKt6Su0wkBio6AizgRHGNwhJuAtlE5VIjow5JOTrip6w==",
"path": "microsoft.extensions.hosting/8.0.0",
"hashPath": "microsoft.extensions.hosting.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AG7HWwVRdCHlaA++1oKDxLsXIBxmDpMPb3VoyOoAghEWnkUvEAdYQUwnV4jJbAaa/nMYNiEh5ByoLauZBEiovg==",
"path": "microsoft.extensions.hosting.abstractions/8.0.0",
"hashPath": "microsoft.extensions.hosting.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Localization.Abstractions/8.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k/kUPm1FQBxcs9/vsM1eF4qIOg2Sovqh/+KUGHur5Mc0Y3OFGuoz9ktBX7LA0gPz53SZhW3W3oaSaMFFcjgM6Q==",
"path": "microsoft.extensions.localization.abstractions/8.0.3",
"hashPath": "microsoft.extensions.localization.abstractions.8.0.3.nupkg.sha512"
},
"Microsoft.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==",
"path": "microsoft.extensions.logging/8.0.0",
"hashPath": "microsoft.extensions.logging.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==",
"path": "microsoft.extensions.logging.abstractions/8.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ixXXV0G/12g6MXK65TLngYN9V5hQQRuV+fZi882WIoVJT7h5JvoYoxTEwCgdqwLjSneqh1O+66gM8sMr9z/rsQ==",
"path": "microsoft.extensions.logging.configuration/8.0.0",
"hashPath": "microsoft.extensions.logging.configuration.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-e+48o7DztoYog+PY430lPxrM4mm3PbA6qucvQtUDDwVo4MO+ejMw7YGc/o2rnxbxj4isPxdfKFzTxvXMwAz83A==",
"path": "microsoft.extensions.logging.console/8.0.0",
"hashPath": "microsoft.extensions.logging.console.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Debug/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dt0x21qBdudHLW/bjMJpkixv858RRr8eSomgVbU8qljOyfrfDGi1JQvpF9w8S7ziRPtRKisuWaOwFxJM82GxeA==",
"path": "microsoft.extensions.logging.debug/8.0.0",
"hashPath": "microsoft.extensions.logging.debug.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3X9D3sl7EmOu7vQp5MJrmIJBl5XSdOhZPYXUeFfYa6Nnm9+tok8x3t3IVPLhm7UJtPOU61ohFchw8rNm9tIYOQ==",
"path": "microsoft.extensions.logging.eventlog/8.0.0",
"hashPath": "microsoft.extensions.logging.eventlog.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oKcPMrw+luz2DUAKhwFXrmFikZWnyc8l2RKoQwqU3KIZZjcfoJE0zRHAnqATfhRZhtcbjl/QkiY2Xjxp0xu+6w==",
"path": "microsoft.extensions.logging.eventsource/8.0.0",
"hashPath": "microsoft.extensions.logging.eventsource.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==",
"path": "microsoft.extensions.options/8.0.0",
"hashPath": "microsoft.extensions.options.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==",
"path": "microsoft.extensions.options.configurationextensions/8.0.0",
"hashPath": "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"path": "microsoft.extensions.primitives/8.0.0",
"hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
},
"Pipelines.Sockets.Unofficial/2.2.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==",
"path": "pipelines.sockets.unofficial/2.2.8",
"hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512"
},
"Scrutor/4.2.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t5VIYA7WJXoJJo7s4DoHakMGwTu+MeEnZumMOhTCH7kz9xWha24G7dJNxWrHPlu0ZdZAS4jDZCxxAnyaBh7uYw==",
"path": "scrutor/4.2.2",
"hashPath": "scrutor.4.2.2.nupkg.sha512"
},
"Serilog/3.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P6G4/4Kt9bT635bhuwdXlJ2SCqqn2nhh4gqFqQueCOr9bK/e7W9ll/IoX1Ter948cV2Z/5+5v8pAfJYUISY03A==",
"path": "serilog/3.1.1",
"hashPath": "serilog.3.1.1.nupkg.sha512"
},
"Serilog.Extensions.Logging/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==",
"path": "serilog.extensions.logging/8.0.0",
"hashPath": "serilog.extensions.logging.8.0.0.nupkg.sha512"
},
"Serilog.Sinks.Console/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IZ6bn79k+3SRXOBpwSOClUHikSkp2toGPCZ0teUkscv4dpDg9E2R2xVsNkLmwddE4OpNVO3N0xiYsAH556vN8Q==",
"path": "serilog.sinks.console/5.0.0",
"hashPath": "serilog.sinks.console.5.0.0.nupkg.sha512"
},
"Serilog.Sinks.File/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
"path": "serilog.sinks.file/5.0.0",
"hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512"
},
"StackExchange.Redis/2.8.24": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GWllmsFAtLyhm4C47cOCipGxyEi1NQWTFUHXnJ8hiHOsK/bH3T5eLkWPVW+LRL6jDiB3g3izW3YEHgLuPoJSyA==",
"path": "stackexchange.redis/2.8.24",
"hashPath": "stackexchange.redis.2.8.24.nupkg.sha512"
},
"System.Buffers/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
"path": "system.buffers/4.5.1",
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
},
"System.Data.DataSetExtensions/4.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==",
"path": "system.data.datasetextensions/4.5.0",
"hashPath": "system.data.datasetextensions.4.5.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==",
"path": "system.diagnostics.diagnosticsource/8.0.0",
"hashPath": "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512"
},
"System.Diagnostics.EventLog/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==",
"path": "system.diagnostics.eventlog/8.0.0",
"hashPath": "system.diagnostics.eventlog.8.0.0.nupkg.sha512"
},
"System.IO.Pipelines/5.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qEePWsaq9LoEEIqhbGe6D5J8c9IqQOUuTzzV6wn1POlfdLkJliZY3OlB0j0f17uMWlqZYjH7txj+2YbyrIA8Yg==",
"path": "system.io.pipelines/5.0.1",
"hashPath": "system.io.pipelines.5.0.1.nupkg.sha512"
},
"System.Memory/4.5.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
"path": "system.memory/4.5.4",
"hashPath": "system.memory.4.5.4.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==",
"path": "system.text.encodings.web/8.0.0",
"hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512"
},
"System.Text.Json/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
"path": "system.text.json/8.0.0",
"hashPath": "system.text.json.8.0.0.nupkg.sha512"
},
"CS2-SimpleAdminApi/1.0.0.0": {
"type": "reference",
"serviceable": false,
"sha512": ""
}
}
}

View file

@ -0,0 +1,96 @@
using System.Text.Json.Serialization;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Capabilities;
using CS2_SimpleAdminApi;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace CS2_SimpleAdmin_RedisInform;
public class PluginConfig : IBasePluginConfig
{
[JsonPropertyName("ConfigVersion")] public int Version { get; set; } = 1;
[JsonPropertyName("RedisConnectionString")] public string RedisConnectionString { get; set; } = "172.18.0.1";
[JsonPropertyName("RedisPassword")] public string RedisPassword { get; set; } = "";
}
public class CS2_SimpleAdmin_RedisInform: BasePlugin, IPluginConfig<PluginConfig>
{
public override string ModuleName => "[CS2-SimpleAdmin] Redis Inform";
public override string ModuleVersion => "v1.0.0";
public override string ModuleAuthor => "daffyy";
internal static CS2_SimpleAdmin_RedisInform Instance = new ();
public PluginConfig Config { get; set; } = new();
internal static ICS2_SimpleAdminApi? SharedApi;
private readonly PluginCapability<ICS2_SimpleAdminApi> _pluginCapability = new("simpleadmin:api");
private RedisSubscriber? _redisSubscriber;
public override void Load(bool hotReload)
{
Instance = this;
if (hotReload)
{
_ = _redisSubscriber?.DisposeAsync();
}
}
public void OnConfigParsed(PluginConfig config)
{
Config = config;
}
public override void Unload(bool hotReload)
{
_ = _redisSubscriber?.DisposeAsync();
}
public override void OnAllPluginsLoaded(bool hotReload)
{
SharedApi = _pluginCapability.Get();
if (SharedApi == null)
{
Logger.LogError("CS2-SimpleAdmin SharedApi not found");
Unload(false);
return;
}
SharedApi.OnAdminShowActivity += OnAdminShowActivity;
if (hotReload)
{
_ = _redisSubscriber?.DisposeAsync();
}
_redisSubscriber = new RedisSubscriber(Guid.NewGuid().ToString("N"));
if (!_redisSubscriber.IsRunning)
_redisSubscriber.Start();
}
private void OnAdminShowActivity(string messageKey, string? callerName, bool dontPublish, object messageArgs)
{
var message = new
{
MessageKey = messageKey,
CallerName = callerName,
MessageArgs = messageArgs
};
var jsonMessage = JsonConvert.SerializeObject(message);
_redisSubscriber?.PublishMessageAsync(jsonMessage);
}
// [ConsoleCommand("css_redistest")]
// public void RedisTestCommand(CCSPlayerController? caller, CommandInfo commandInfo)
// {
// SharedApi?.ShowAdminActivity("sa_admin_gag_message_time", "🦊 daffyy | UtopiaFPS.pl 🦊", [
// "CALLER",
// "🦊 daffyy | UtopiaFPS.pl 🦊",
// "test",
// 1
// ]);
// }
}

View file

@ -0,0 +1,112 @@
using CounterStrikeSharp.API;
using StackExchange.Redis;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace CS2_SimpleAdmin_RedisInform;
public class RedisSubscriber(string serverIdentifier)
{
private ConnectionMultiplexer? _connection;
private ISubscriber? _subscriber;
public bool IsRunning;
private async Task InitializeAsync()
{
var options = new ConfigurationOptions
{
EndPoints = { CS2_SimpleAdmin_RedisInform.Instance.Config.RedisConnectionString },
Password = CS2_SimpleAdmin_RedisInform.Instance.Config.RedisPassword,
AbortOnConnectFail = false,
ConnectRetry = 5,
ReconnectRetryPolicy = new LinearRetry(1000)
};
_connection = await ConnectionMultiplexer.ConnectAsync(options);
_subscriber = _connection.GetSubscriber();
}
private async Task StartSubscriberAsync()
{
if (_subscriber == null)
throw new InvalidOperationException("Failed to initialize redis subscriber.");
IsRunning = true;
try
{
await _subscriber.SubscribeAsync(RedisChannel.Literal("cs2-simpleadmin_events1"),
(_, message) =>
{
var parts = message.ToString().Split([':'], 2);
if (parts.Length < 2)
return;
var senderMachineId = parts[0];
if (senderMachineId == serverIdentifier)
return;
var deserializedMessage = JsonConvert.DeserializeObject<dynamic>(parts[1]);
if (deserializedMessage == null)
return;
Server.NextFrame(() => CS2_SimpleAdmin_RedisInform.SharedApi?.ShowAdminActivity(deserializedMessage.MessageKey.ToString(), deserializedMessage.CallerName.ToString(), true, GetMessageArgsAsStringArray(deserializedMessage.MessageArgs)));
});
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private async Task StopSubscriberAsync()
{
if (IsRunning && _subscriber != null)
{
await _subscriber.UnsubscribeAllAsync();
IsRunning = false;
}
}
public async Task PublishMessageAsync(string message)
{
if (_subscriber == null)
throw new InvalidOperationException("Subscriber not initialized.");
var messageWithId = $"{serverIdentifier}:{message}";
await _subscriber.PublishAsync(RedisChannel.Literal("cs2-simpleadmin_events"), messageWithId);
}
public async Task DisposeAsync()
{
if (_connection != null)
{
await StopSubscriberAsync();
await _connection.CloseAsync();
await _connection.DisposeAsync();
}
}
public void Start()
{
Task.Run(async () =>
{
await InitializeAsync();
await StartSubscriberAsync();
});
}
private static string[]? GetMessageArgsAsStringArray(dynamic messageArgs)
{
if (messageArgs == null)
return []; // Return empty array if null
return messageArgs switch
{
JArray jArray => jArray.ToObject<string[]>(),
IEnumerable<object> enumerable => enumerable.Select(arg => arg?.ToString() ?? string.Empty).ToArray(),
_ => [messageArgs.ToString()]
};
}
}

View file

@ -0,0 +1,7 @@
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMinor",
"allowPrerelease": false
}
}