Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions Commands.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,101 @@ private void RegisterCommands()
});
});
}

AddCommand("wp_refresh", "Admin refresh player skins", (player, info) =>
{
OnCommandSkinRefresh(player, info);
});
}

private void OnCommandSkinRefresh(CCSPlayerController? player, CommandInfo command)
{
if (!Config.Additional.CommandWpEnabled || !Config.Additional.SkinEnabled || !_gBCommandsAllowed) return;

var args = command.GetArg(1);

if (string.IsNullOrEmpty(args))
{
Console.WriteLine("[WeaponPaints] Usage: wp_refresh <steamid64|all>");
Console.WriteLine("[WeaponPaints] Examples:");
Console.WriteLine("[WeaponPaints] wp_refresh all - Refresh skins for all players");
Console.WriteLine("[WeaponPaints] wp_refresh 76561198012345678 - Refresh skins by SteamID64");
return;
}

var targetPlayers = new List<CCSPlayerController>();

if (args.Equals("all", StringComparison.OrdinalIgnoreCase))
{
targetPlayers = Utilities.GetPlayers().Where(p =>
p != null && p.IsValid && !p.IsBot && p.UserId != null).ToList();

if (targetPlayers.Count == 0)
{
Console.WriteLine("[WeaponPaints] No players connected to refresh.");
return;
}

Console.WriteLine($"[WeaponPaints] Refreshing skins for {targetPlayers.Count} players...");
}
else
{
var foundPlayer = Utilities.GetPlayers().FirstOrDefault(p =>
p != null && p.IsValid && !p.IsBot && p.UserId != null &&
p.SteamID.ToString() == args);

if (foundPlayer == null)
{
Console.WriteLine($"[WeaponPaints] Player with SteamID64 '{args}' not found.");
return;
}

targetPlayers.Add(foundPlayer);
Console.WriteLine($"[WeaponPaints] Refreshing skins for {foundPlayer.PlayerName}...");
}

foreach (var targetPlayer in targetPlayers)
{
try
{
PlayerInfo? playerInfo = new PlayerInfo
{
UserId = targetPlayer.UserId,
Slot = targetPlayer.Slot,
Index = (int)targetPlayer.Index,
SteamId = targetPlayer.SteamID.ToString(),
Name = targetPlayer.PlayerName,
IpAddress = targetPlayer.IpAddress?.Split(":")[0]
};

if (WeaponSync != null)
{
_ = Task.Run(async () => await WeaponSync.GetPlayerData(playerInfo));
}

GivePlayerGloves(targetPlayer);
RefreshWeapons(targetPlayer);
GivePlayerAgent(targetPlayer);
GivePlayerMusicKit(targetPlayer);
AddTimer(0.15f, () => GivePlayerPin(targetPlayer));

if (!string.IsNullOrEmpty(Localizer["wp_command_refresh_done"]))
{
targetPlayer.Print(Localizer["wp_command_refresh_done"]);
}

Console.WriteLine($"[WeaponPaints] Skins refreshed for {targetPlayer.PlayerName}");
}
catch (Exception ex)
{
Console.WriteLine($"[WeaponPaints] Error refreshing skins for {targetPlayer.PlayerName}: {ex.Message}");
}
}

Console.WriteLine("[WeaponPaints] Refresh process completed.");
}


private void OnCommandStattrak(CCSPlayerController? player, CommandInfo commandInfo)
{
if (player == null || !player.IsValid) return;
Expand Down