From 1118939e62632a419f7132c6663694e8b104a3e5 Mon Sep 17 00:00:00 2001 From: Sachin Date: Tue, 15 Jul 2025 12:52:22 +0530 Subject: [PATCH] fix: query command cleaning up --- CS2-SimpleAdmin/Commands/panelcommands.cs | 139 ++++++++---------- .../Extensions/PlayerExtensions.cs | 6 +- 2 files changed, 63 insertions(+), 82 deletions(-) diff --git a/CS2-SimpleAdmin/Commands/panelcommands.cs b/CS2-SimpleAdmin/Commands/panelcommands.cs index 5194a83..fb8dce1 100644 --- a/CS2-SimpleAdmin/Commands/panelcommands.cs +++ b/CS2-SimpleAdmin/Commands/panelcommands.cs @@ -11,9 +11,8 @@ using CounterStrikeSharp.API.Modules.Utils; using CS2_SimpleAdmin.Managers; using CS2_SimpleAdmin.Menus; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using System.Globalization; using System.Text; +using System.Text.Json; namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin @@ -44,97 +43,79 @@ public partial class CS2_SimpleAdmin public void OnQueryCommand(CCSPlayerController? caller, CommandInfo command) { if (!Config.IsCSSPanel) return; - - List playersToTarget = Utilities.GetPlayers().Where(player => caller!.CanTarget(player) && !player.IsHLTV).ToList(); - string Map = Server.MapName; - int Players = playersToTarget.Count; - int MaxPlayers = Server.MaxPlayers; - string[] Maps; + var playersToTarget = Utilities.GetPlayers() + .Where(player => caller!.CanTarget(player) && !player.IsHLTV) + .ToList(); - MaxPlayers = ConVar.Find("sv_visiblemaxplayers")?.GetPrimitiveValue() ?? -1; - MaxPlayers = MaxPlayers <= -1 ? Server.MaxPlayers : MaxPlayers; + string mapName = Server.MapName; + int playersCount = playersToTarget.Count; + int maxPlayers = ConVar.Find("sv_visiblemaxplayers")?.GetPrimitiveValue() is int value and > 0 ? value : Server.MaxPlayers; - string ServerName = ConVar.Find("hostname")?.StringValue ?? "Unknown"; + string serverName = ConVar.Find("hostname")?.StringValue ?? "Unknown"; - try - { - Maps = Server.GetMapList(); - } - catch (Exception) - { - Maps = Array.Empty(); // return an empty array - } + // string[] maps; + // try + // { + // maps = Server.GetMapList(); + // } + // catch (Exception) + // { + // maps = Array.Empty(); + // } var server = new { - map = Map, - hN = ServerName, - p = Players, - mP = MaxPlayers, - // maps = Maps, + map = mapName, + hN = serverName, + p = playersCount, + mP = maxPlayers, + // maps = maps, pr = ModuleVersion }; - List> playerTasks = playersToTarget - .FindAll(player => !player.IsBot && !player.IsHLTV && player.PlayerName != "") - .Select(player => - { - string deaths = player.ActionTrackingServices!.MatchStats.Deaths.ToString(); - string headshots = player.ActionTrackingServices!.MatchStats.HeadShotKills.ToString(); - string assists = player.ActionTrackingServices!.MatchStats.Assists.ToString(); - string damage = player.ActionTrackingServices!.MatchStats.Damage.ToString(); - string kills = player.ActionTrackingServices!.MatchStats.Kills.ToString(); - string time = player.ActionTrackingServices!.MatchStats.LiveTime.ToString(); - var user = new - { - id = player.UserId, - // playerName = player.PlayerName, - // ipAddress = player.IpAddress?.Split(":")[0], - // accountId = player.AuthorizedSteamID?.AccountId.ToString(), - // steamId2 = player.AuthorizedSteamID?.SteamId2, - // steamId3 = player.AuthorizedSteamID?.SteamId3, - pn = player.PlayerName, - s64 = player.AuthorizedSteamID?.SteamId64.ToString(), - // ping = player.Ping, - t = player.Team, - // clanName = player.ClanName, - k = kills, - d = deaths, - // assists, - // headshots, - // damage, - s = player.Score, - // roundScore = player.RoundScore, - // roundsWon = player.RoundsWon, - // mvps = player.MVPs, - // time, // ? Fix this, it's not the time the player has been connected - // avatar = player.AuthorizedSteamID != null ? await GetProfilePictureAsync(player.AuthorizedSteamID.SteamId64.ToString(), true) : "" - }; - return Task.FromResult((object)user); - }).ToList(); - - List players = new List(); try { - players = Task.WhenAll(playerTasks).Result.ToList(); + var filteredPlayers = playersToTarget + .Where(player => !player.IsBot && !player.IsHLTV && !string.IsNullOrWhiteSpace(player.PlayerName)); + + var players = filteredPlayers.Select(player => + { + var stats = player.ActionTrackingServices!.MatchStats; + + return new + { + id = player.UserId, + // playerName = player.PlayerName, + // ipAddress = player.IpAddress?.Split(":")[0], + // accountId = player.AuthorizedSteamID?.AccountId.ToString() ?? "", + // steamId2 = player.AuthorizedSteamID?.SteamId2.ToString() ?? "", + // steamId3 = player.AuthorizedSteamID?.SteamId3.ToString() ?? "", + pn = player.PlayerName, + s64 = player.AuthorizedSteamID?.SteamId64.ToString() ?? "", + // ping = player.Ping, + t = player.Team, + // clanName = player.ClanName, + k = stats.Kills.ToString(), + d = stats.Deaths.ToString(), + // stats.Assists.ToString(), + // stats.HeadShotKills.ToString(), + // stats.Damage.ToString(), + s = player.Score, + // roundScore = player.RoundScore, + // roundsWon = player.RoundsWon, + // mvps = player.MVPs, + // stats.LiveTime.ToString(), // ? Fix this, it's not the time the player has been connected + // avatar = player.AuthorizedSteamID != null ? await GetProfilePictureAsync(player.AuthorizedSteamID.SteamId64.ToString(), true) : "" + }; + }).ToList(); + + string jsonString = JsonSerializer.Serialize(new { server, players }); + Server.PrintToConsole(jsonString); } - catch (AggregateException ex) + catch (Exception ex) { - foreach (var innerEx in ex.InnerExceptions) - { - Logger.LogError(innerEx, "Error while querying players"); - } + Logger.LogError(ex, "Unexpected error while query command"); } - - string jsonString = JsonConvert.SerializeObject( - new - { - server, - players - } - ); - - Server.PrintToConsole(jsonString); } } \ No newline at end of file diff --git a/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs b/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs index 853845d..99f1aa3 100644 --- a/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs +++ b/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs @@ -169,9 +169,9 @@ public static class PlayerExtensions ) { controller.PlayerPawn.Value.Teleport( - target.PlayerPawn.Value.AbsOrigin, - target.PlayerPawn.Value.AbsRotation, - target.PlayerPawn.Value.AbsVelocity + target.PlayerPawn.Value.AbsOrigin!.ToVector_t(), + target.PlayerPawn.Value.AbsRotation!.ToQAngle_t(), + target.PlayerPawn.Value.AbsVelocity.ToVector_t() ); } }