From e272449f3c92b6cc7c0fa7d8e24ac33e7f85d3a1 Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:24:29 +0200 Subject: [PATCH] Added example module --- .../CS2-SimpleAdminApi.dll | Bin 0 -> 7680 bytes .../CS2-SimpleAdmin_ExampleModule.cs | 165 ++++++++++++++++++ .../CS2-SimpleAdmin_ExampleModule.csproj | 20 +++ .../CS2-SimpleAdmin_ExampleModule.sln | 16 ++ 4 files changed, 201 insertions(+) create mode 100644 Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdminApi.dll create mode 100644 Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.cs create mode 100644 Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.csproj create mode 100644 Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln diff --git a/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdminApi.dll b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdminApi.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2dbdee66b66088a8c5ff7fa730a18f884167f3c GIT binary patch literal 7680 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

i^a9UX?DZmO{qp0h}BKL z4O%Uiw>iJfqTC}1jfMEyo8f??xe7&aT;mKeaq9+V9WHC|Cm&?GF!&uNKHv+DJy8G< zVC{e?=)?=BDk@lbi#w}w`C8%RpGoQH%2yxD|@FJywk7I57}tMK&W4zHi@N-GNA z{Zy8&Ol#)My4GJEJN4Gid$Suiy!e~Y*V#tP=3f3pa(j@9)_vbKH)Bl z0N;Aa{onZ12FY4NZcmf59^W0`(u}*u(nS*Zt3terJ(Qt7U>kLTYR66cZt(5EZT_u0 z{aE|k`~I&T&PFbNeWTC#J0ze>RjX+A;N*2+$C4Ad9cS?n6-4DK>D7%^15y|526@mc zfb+{^+5|S10-ro+@i{&`gQb4aX~ew!zYR3NF@PrjzH5O!ejo4{qnMEa4o3k>3+%3^ zYk=i9Mtbs%k)C{C>=rwv8MLCeiyH#=r#Qvm4{NUx2ct4Mj~>`_V6i;!b(Dhtr3XI~ z<@YE@&J$gHb|F^fnS7XWQ<#^HKQ60r%qg@BwuZ$LN2rL{@Qj9WXX8O9iKj=#-4n<; z`aEta4$S$H{HWvm>(U9k1$Z@rSb7z+`S9z~h+6^NxK6Qic{Izh#J#%2J&jnqn0pRc lVq?}x%ya4rl>6`+d`t=);k%XBD-Pg~iD#d<@qdWG{{ZdmF9iSq literal 0 HcmV?d00001 diff --git a/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.cs b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.cs new file mode 100644 index 0000000..dc34a35 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.cs @@ -0,0 +1,165 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes.Registration; +using CounterStrikeSharp.API.Core.Capabilities; +using CounterStrikeSharp.API.Modules.Commands; +using CounterStrikeSharp.API.Modules.Entities; +using CS2_SimpleAdminApi; +using Microsoft.Extensions.Logging; + +namespace CS2_SimpleAdmin_ExampleModule; + +public class CS2_SimpleAdmin_ExampleModule: BasePlugin +{ + public override string ModuleName => "[CS2-SimpleAdmin] Example module"; + public override string ModuleVersion => "v1.0.0"; + public override string ModuleAuthor => "daffyy"; + + private int? _serverId; + private string _dbConnectionString = string.Empty; + + private static ICS2_SimpleAdminApi? _sharedApi; + private readonly PluginCapability _pluginCapability = new("simpleadmin:api"); + + public override void OnAllPluginsLoaded(bool hotReload) + { + _sharedApi = _pluginCapability.Get(); + + if (_sharedApi == null) + { + Logger.LogError("CS2-SimpleAdmin SharedApi not found"); + Unload(false); + return; + } + + _serverId = _sharedApi.GetServerId(); + _dbConnectionString = _sharedApi.GetConnectionString(); + Logger.LogInformation($"{ModuleName} started with serverId {_serverId}"); + + _sharedApi.OnPlayerPenaltied += OnPlayerPenaltied; + _sharedApi.OnPlayerPenaltiedAdded += OnPlayerPenaltiedAdded; + } + + [ConsoleCommand("css_kickme")] + [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] + public void KickMeCommand(CCSPlayerController? caller, CommandInfo commandInfo) + { + if (caller == null) return; + + _sharedApi?.IssuePenalty(caller, null, PenaltyType.Kick, "test"); + } + + [ConsoleCommand("css_serverAddress")] + [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] + public void ServerAddressCommand(CCSPlayerController? caller, CommandInfo commandInfo) + { + commandInfo.ReplyToCommand($"Our server IP: {_sharedApi?.GetServerAddress()}"); + } + + [ConsoleCommand("css_getMyInfo")] + [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] + public void GetMyInfoCommand(CCSPlayerController? caller, CommandInfo commandInfo) + { + if (caller == null) return; + + var playerInfo = _sharedApi?.GetPlayerInfo(caller); + commandInfo.ReplyToCommand($"Your total bans: {playerInfo?.TotalBans}"); + commandInfo.ReplyToCommand($"Your total gags: {playerInfo?.TotalGags}"); + commandInfo.ReplyToCommand($"Your total mutes: {playerInfo?.TotalMutes}"); + commandInfo.ReplyToCommand($"Your total silences: {playerInfo?.SteamId}"); + } + + private void OnPlayerPenaltied(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType, + string reason, int duration, int? serverId) + { + if (penaltyType == PenaltyType.Ban) + { + Server.PrintToChatAll($"{player.Name} is a dog"); + } + + switch (penaltyType) + { + case PenaltyType.Ban: + { + Logger.LogInformation("Ban issued"); + break; + } + case PenaltyType.Kick: + { + Logger.LogInformation("Kick issued"); + break; + } + case PenaltyType.Gag: + { + Logger.LogInformation("Gag issued"); + break; + } + case PenaltyType.Mute: + { + Logger.LogInformation("Mute issued"); + break; + } + case PenaltyType.Silence: + { + Logger.LogInformation("Silence issued"); + break; + } + case PenaltyType.Warn: + { + Logger.LogInformation("Warn issued"); + break; + } + default: + throw new ArgumentOutOfRangeException(nameof(penaltyType), penaltyType, null); + } + + Console.WriteLine(player.Name); + Console.WriteLine(admin?.Name ?? "Console"); + Console.WriteLine(player.SteamId.ToString()); + Console.WriteLine(reason); + } + + private void OnPlayerPenaltiedAdded(SteamID steamId, PlayerInfo? admin, PenaltyType penaltyType, + string reason, int duration, int? serverId) + { + switch (penaltyType) + { + case PenaltyType.Ban: + { + Logger.LogInformation("Ban added"); + break; + } + case PenaltyType.Kick: + { + Logger.LogInformation("Kick added"); + break; + } + case PenaltyType.Gag: + { + Logger.LogInformation("Gag added"); + break; + } + case PenaltyType.Mute: + { + Logger.LogInformation("Mute added"); + break; + } + case PenaltyType.Silence: + { + Logger.LogInformation("Silence added"); + break; + } + case PenaltyType.Warn: + { + Logger.LogInformation("Warn added"); + break; + } + default: + throw new ArgumentOutOfRangeException(nameof(penaltyType), penaltyType, null); + } + + Console.WriteLine(admin?.Name ?? "Console"); + Console.WriteLine(steamId.ToString()); + Console.WriteLine(reason); + } +} \ No newline at end of file diff --git a/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.csproj b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.csproj new file mode 100644 index 0000000..e3f9fc3 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.csproj @@ -0,0 +1,20 @@ + + + + net8.0 + CS2_SimpleAdmin_ExampleModule + enable + enable + + + + + + + + + CS2-SimpleAdminApi.dll + + + + diff --git a/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln new file mode 100644 index 0000000..34bbc15 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2-SimpleAdmin_ExampleModule", "CS2-SimpleAdmin_ExampleModule.csproj", "{D940F3E9-0E3F-467A-B336-149E3A624FB6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal