using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes.Registration;
using CounterStrikeSharp.API.Modules.Commands;
using CounterStrikeSharp.API.Modules.Commands.Targeting;
using CounterStrikeSharp.API.Modules.Entities;
namespace SteamIdInfo;
public sealed class SteamIdInfo : BasePlugin
{
public override string ModuleName => "SteamID Info";
public override string ModuleVersion => "1.0.0";
public override string ModuleAuthor => "Xummuk97";
private const string Braces = "========";
private const string TableHeader = "id | name | steamid2 | steamid3 | steamid64";
private const string TableBodyEmpty = "----";
[ConsoleCommand("steamid_info", "Displays information about the client: SteamID2, SteamID3, SteamID64.")]
[CommandHelper(minArgs: 1, usage: "[target]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
public void OnCommand(CCSPlayerController? player, CommandInfo command)
{
if(player == null)
return;
var output = AggregateTargetsSteamIds(Utilities.ProcessTargetString(command.ArgByIndex(1), player));
if (output.Length == 0)
output = TableBodyEmpty;
player.PrintToConsole($"{Braces} \n{TableHeader} \n{output} \n{Braces} \n");
}
private static string AggregateTargetsSteamIds(TargetResult targets, string delimiter = "\n") => targets
.Aggregate("", (acc, target) =>
acc +
(acc.Length == 0 ? "" : delimiter) +
GetTargetSteamIdsAsString(target.UserId, target.PlayerName, target.AuthorizedSteamID));
private static string GetTargetSteamIdsAsString(int? userId, string name, SteamID? steamId) =>
$"{userId} | {name} | {steamId?.SteamId2} | {steamId?.SteamId3} | {steamId?.SteamId64}";
}