Compare commits

..

4 Commits

Author SHA1 Message Date
Junior
94648c0eb4 Merge da74b72e23 into 10a4691429 2025-10-18 01:02:01 +02:00
Junior
da74b72e23 Merge branch 'Nereziel:main' into main 2025-09-19 16:37:43 -03:00
prahzera
5b6216669b Removed the use of skin update using names due to vulnerability with the all command 2025-08-17 23:54:33 -03:00
prahzera
f3bb6abd81 Added new command to refresh skins using RCON 2025-08-17 23:24:54 -03:00
3 changed files with 98 additions and 19 deletions

View File

@@ -147,8 +147,101 @@ public partial class WeaponPaints
});
});
}
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;

View File

@@ -332,27 +332,13 @@ namespace WeaponPaints
if (!PlayerHasKnife(player) && hasKnife)
{
var newKnife = new CBasePlayerWeapon(player.GiveNamedItem(CsItem.Knife));
newKnife.AddEntityIOEvent("Kill", newKnife, null, "", 0.01f);
var newWeapon = new CBasePlayerWeapon(player.GiveNamedItem(CsItem.USP));
player.GiveNamedItem(CsItem.Knife);
player.ExecuteClientCommand("slot3");
Server.NextFrame(() =>
{
try
{
if (newKnife != null && newKnife.IsValid)
newKnife.AddEntityIOEvent("Kill", newKnife, null, "", 0.01f);
if (newWeapon != null && newWeapon.IsValid)
newWeapon.AddEntityIOEvent("Kill", newWeapon, null, "", 0.01f);
}
catch (Exception ex)
{
Logger.LogWarning("Error AddEntityIOEvent " + ex.Message);
}
});
newWeapon.AddEntityIOEvent("Kill", newWeapon, null, "", 0.01f);
}
foreach (var entry in weaponsWithAmmo)
{
foreach (var ammo in entry.Value)

View File

@@ -9,7 +9,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.358" />
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.342" />
<PackageReference Include="Dapper" Version="2.1.66" />
<PackageReference Include="MySqlConnector" Version="2.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
@@ -18,11 +18,11 @@
<ItemGroup>
<None Update="lang\**\*.*" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<None Update="gamedata\*.*" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<Reference Include="MenuManagerApi">
<HintPath>3rd_party\MenuManagerApi.dll</HintPath>