From edd53009f6d815ec2f9ee4dc3018d0fc7bf23ddf Mon Sep 17 00:00:00 2001 From: MedveMarci Date: Mon, 10 Nov 2025 18:36:30 +0100 Subject: [PATCH] Added support to get other's stats. --- .../Commands/{GetMyStat.cs => GetStat.cs} | 22 +++++++++++++++---- StatsSystem/StatsSystem.csproj | 2 +- StatsSystem/StatsSystemPlugin.cs | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) rename StatsSystem/Commands/{GetMyStat.cs => GetStat.cs} (82%) diff --git a/StatsSystem/Commands/GetMyStat.cs b/StatsSystem/Commands/GetStat.cs similarity index 82% rename from StatsSystem/Commands/GetMyStat.cs rename to StatsSystem/Commands/GetStat.cs index 61129d4..0001468 100644 --- a/StatsSystem/Commands/GetMyStat.cs +++ b/StatsSystem/Commands/GetStat.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using CommandSystem; +using CommandSystem.Commands.RemoteAdmin; using LabApi.Features.Wrappers; using StatsSystem.Extensions; using EventHandler = StatsSystem.Events.EventHandler; @@ -9,13 +10,14 @@ namespace StatsSystem.Commands; [CommandHandler(typeof(ClientCommandHandler))] +[CommandHandler(typeof(RemoteAdminCommandHandler))] public class GetStat : ICommand { public string Command => "getstat"; public string[] Aliases { get; } = ["gs"]; - public string Description => "Prints your stats."; + public string Description => "Prints a player's statistics."; public bool Execute(ArraySegment arguments, ICommandSender sender, out string response) { @@ -26,7 +28,19 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s } var player = Player.Get(sender); - + + if (arguments.Count > 0) + { + var arg = arguments.At(0); + var targetPlayer = Player.Get(arg) ?? Player.GetByDisplayName(arg) ?? Player.GetByNickname(arg); + if (targetPlayer == null) + { + response = $"Target player '{arg}' not found."; + return false; + } + player = targetPlayer; + } + if (player == null) { response = "Player not found."; @@ -36,7 +50,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s var stats = player.GetOrCreatePlayerStats(); if (stats == null) { - response = "Your stats could not be found or created."; + response = "The player's stats could not be found or created."; return false; } @@ -47,7 +61,7 @@ public bool Execute(ArraySegment arguments, ICommandSender sender, out s EventHandler.PlayerJoinTimes[player.UserId] = DateTime.Now; } - var statLines = new List { "Basic stats:" }; + var statLines = new List { $"{player.Nickname}'s Stats:\nBasic stats:" }; statLines.AddRange(stats.Counters.OrderBy(k => k.Key).Select(kvp => $"- {kvp.Key}: {kvp.Value}")); statLines.AddRange(stats.Durations.OrderBy(k => k.Key).Select(kvp => $"- {kvp.Key}: {FormatTime(kvp.Value)}")); diff --git a/StatsSystem/StatsSystem.csproj b/StatsSystem/StatsSystem.csproj index e0f85e5..025d027 100644 --- a/StatsSystem/StatsSystem.csproj +++ b/StatsSystem/StatsSystem.csproj @@ -60,7 +60,7 @@ - + diff --git a/StatsSystem/StatsSystemPlugin.cs b/StatsSystem/StatsSystemPlugin.cs index 17ca3a4..361c657 100644 --- a/StatsSystem/StatsSystemPlugin.cs +++ b/StatsSystem/StatsSystemPlugin.cs @@ -25,7 +25,7 @@ internal class StatsSystemPlugin : Plugin public override string Name => "StatsSystem"; public override string Description => "StatSystem"; public override string Author => "MedveMarci"; - public override Version Version { get; } = new(1, 1, 3); + public override Version Version { get; } = new(1, 1, 4); public override Version RequiredApiVersion => new(LabApiProperties.CompiledVersion); public override bool IsTransparent => true; public string githubRepo = "MedveMarci/StatsSystem";