mirror of
https://github.com/Nereziel/cs2-WeaponPaints.git
synced 2026-02-24 20:26:50 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad73e0a85d | ||
|
|
25c205e53d | ||
|
|
1366e141a7 | ||
|
|
5465b982b7 | ||
|
|
ead5ae23a3 | ||
|
|
ff2e7ffd6b | ||
|
|
c9a1fad496 | ||
|
|
0d4d01800d | ||
|
|
19d004c21d |
37
Commands.cs
37
Commands.cs
@@ -32,13 +32,30 @@ namespace WeaponPaints
|
||||
|
||||
if (weaponSync != null)
|
||||
{
|
||||
Task.Run(async () => await weaponSync.GetWeaponPaintsFromDatabase(playerInfo));
|
||||
var weaponTasks = new List<Task>();
|
||||
|
||||
weaponTasks.Add(Task.Run(async () =>
|
||||
{
|
||||
await weaponSync.GetWeaponPaintsFromDatabase(playerInfo);
|
||||
}));
|
||||
|
||||
if (Config.Additional.GloveEnabled)
|
||||
Task.Run(async () => await weaponSync.GetGloveFromDatabase(playerInfo));
|
||||
{
|
||||
weaponTasks.Add(Task.Run(async () =>
|
||||
{
|
||||
await weaponSync.GetGloveFromDatabase(playerInfo);
|
||||
}));
|
||||
}
|
||||
|
||||
if (Config.Additional.KnifeEnabled)
|
||||
Task.Run(async () => await weaponSync.GetKnifeFromDatabase(playerInfo));
|
||||
{
|
||||
weaponTasks.Add(Task.Run(async () =>
|
||||
{
|
||||
await weaponSync.GetKnifeFromDatabase(playerInfo);
|
||||
}));
|
||||
}
|
||||
|
||||
Task.WaitAll(weaponTasks.ToArray());
|
||||
|
||||
RefreshGloves(player);
|
||||
RefreshWeapons(player);
|
||||
@@ -248,7 +265,7 @@ namespace WeaponPaints
|
||||
}
|
||||
|
||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Paint = paintID;
|
||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Wear = 0.01f;
|
||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Wear = 0.00f;
|
||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Seed = 0;
|
||||
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
@@ -381,7 +398,17 @@ namespace WeaponPaints
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await weaponSync.SyncGloveToDatabase(playerInfo, (ushort)weaponDefindex);
|
||||
await weaponSync.SyncGloveToDatabase(playerInfo, weaponDefindex);
|
||||
|
||||
if (!gPlayerWeaponsInfo[playerInfo.Slot].ContainsKey(weaponDefindex))
|
||||
{
|
||||
gPlayerWeaponsInfo[playerInfo.Slot][weaponDefindex] = new WeaponInfo();
|
||||
}
|
||||
|
||||
gPlayerWeaponsInfo[playerInfo.Slot][weaponDefindex].Paint = paint;
|
||||
gPlayerWeaponsInfo[playerInfo.Slot][weaponDefindex].Wear = 0.00f;
|
||||
gPlayerWeaponsInfo[playerInfo.Slot][weaponDefindex].Seed = 0;
|
||||
|
||||
});
|
||||
}
|
||||
RefreshGloves(player);
|
||||
|
||||
37
Events.cs
37
Events.cs
@@ -52,7 +52,7 @@ namespace WeaponPaints
|
||||
{
|
||||
CCSPlayerController player = @event.Userid;
|
||||
|
||||
if (player is null || !player.IsValid || !player.UserId.HasValue || player.IsBot ||
|
||||
if (player is null || !player.IsValid || player.IsBot ||
|
||||
player.IsHLTV || player.SteamID.ToString().Length != 17) return HookResult.Continue;
|
||||
|
||||
PlayerInfo playerInfo = new PlayerInfo
|
||||
@@ -72,24 +72,24 @@ namespace WeaponPaints
|
||||
{
|
||||
await weaponSync.SyncWeaponPaintsToDatabase(playerInfo);
|
||||
});
|
||||
|
||||
// Remove player data
|
||||
if (Config.Additional.SkinEnabled)
|
||||
{
|
||||
gPlayerWeaponsInfo.TryRemove(player.Slot, out _);
|
||||
}
|
||||
if (Config.Additional.KnifeEnabled)
|
||||
{
|
||||
g_playersKnife.TryRemove(player.Slot, out _);
|
||||
}
|
||||
if (Config.Additional.GloveEnabled)
|
||||
{
|
||||
g_playersGlove.TryRemove(player.Slot, out _);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove player's command cooldown
|
||||
commandsCooldown.Remove(player.Slot);
|
||||
// Remove player data
|
||||
if (Config.Additional.SkinEnabled)
|
||||
{
|
||||
gPlayerWeaponsInfo.TryRemove(player.Slot, out _);
|
||||
}
|
||||
if (Config.Additional.KnifeEnabled)
|
||||
{
|
||||
g_playersKnife.TryRemove(player.Slot, out _);
|
||||
}
|
||||
if (Config.Additional.GloveEnabled)
|
||||
{
|
||||
g_playersGlove.TryRemove(player.Slot, out _);
|
||||
}
|
||||
|
||||
|
||||
return HookResult.Continue;
|
||||
}
|
||||
@@ -160,7 +160,7 @@ namespace WeaponPaints
|
||||
pickupCount++;
|
||||
g_knifePickupCount[player.Slot] = pickupCount;
|
||||
|
||||
RefreshWeapons(player);
|
||||
AddTimer(0.2f, () => RefreshWeapons(player));
|
||||
}
|
||||
|
||||
return HookResult.Continue;
|
||||
@@ -187,12 +187,11 @@ namespace WeaponPaints
|
||||
{
|
||||
CCSPlayerController? player = @event.Userid;
|
||||
|
||||
if (player is null || !player.IsValid || player.PlayerPawn == null ||
|
||||
!player.PlayerPawn.IsValid || player.IsHLTV
|
||||
|| !Config.Additional.KnifeEnabled && !Config.Additional.GloveEnabled)
|
||||
if (player is null || !player.IsValid || !Config.Additional.KnifeEnabled && !Config.Additional.GloveEnabled)
|
||||
return HookResult.Continue;
|
||||
|
||||
g_knifePickupCount[player.Slot] = 0;
|
||||
|
||||
if (!PlayerHasKnife(player))
|
||||
GiveKnifeToPlayer(player);
|
||||
|
||||
|
||||
@@ -142,38 +142,41 @@ namespace WeaponPaints
|
||||
{
|
||||
if (!_config.Additional.KnifeEnabled || player == null || !player.IsValid) return;
|
||||
|
||||
string knifeToGive;
|
||||
if (g_playersKnife.TryGetValue(player.Slot, out var knife))
|
||||
WeaponPaints.Instance.AddTimer(1.0f, () =>
|
||||
{
|
||||
knifeToGive = knife;
|
||||
}
|
||||
else if (_config.Additional.GiveRandomKnife)
|
||||
{
|
||||
var knifeTypes = weaponList.Where(pair => pair.Key.StartsWith("weapon_knife") || pair.Key.StartsWith("weapon_bayonet")).ToList();
|
||||
|
||||
if (knifeTypes.Count == 0)
|
||||
string knifeToGive;
|
||||
if (g_playersKnife.TryGetValue(player.Slot, out var knife))
|
||||
{
|
||||
Utility.Log("No valid knife types found.");
|
||||
return;
|
||||
knifeToGive = knife;
|
||||
}
|
||||
else if (_config.Additional.GiveRandomKnife)
|
||||
{
|
||||
var knifeTypes = weaponList.Where(pair => pair.Key.StartsWith("weapon_knife") || pair.Key.StartsWith("weapon_bayonet")).ToList();
|
||||
|
||||
if (knifeTypes.Count == 0)
|
||||
{
|
||||
Utility.Log("No valid knife types found.");
|
||||
return;
|
||||
}
|
||||
|
||||
Random random = new();
|
||||
int index = random.Next(knifeTypes.Count);
|
||||
knifeToGive = knifeTypes[index].Key;
|
||||
}
|
||||
else
|
||||
{
|
||||
knifeToGive = (CsTeam)player.TeamNum == CsTeam.Terrorist ? "weapon_knife_t" : "weapon_knife";
|
||||
}
|
||||
|
||||
Random random = new();
|
||||
int index = random.Next(knifeTypes.Count);
|
||||
knifeToGive = knifeTypes[index].Key;
|
||||
}
|
||||
else
|
||||
{
|
||||
knifeToGive = (CsTeam)player.TeamNum == CsTeam.Terrorist ? "weapon_knife_t" : "weapon_knife";
|
||||
}
|
||||
|
||||
player.GiveNamedItem(knifeToGive);
|
||||
player.GiveNamedItem(knifeToGive);
|
||||
});
|
||||
}
|
||||
|
||||
internal static bool PlayerHasKnife(CCSPlayerController? player)
|
||||
{
|
||||
if (!_config.Additional.KnifeEnabled) return false;
|
||||
|
||||
if (player == null || !player.IsValid || player.PlayerPawn == null || !player.PlayerPawn.IsValid || !player.PawnIsAlive)
|
||||
if (player == null || !player.IsValid || player.PlayerPawn == null || !player.PlayerPawn.IsValid)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -263,7 +266,7 @@ namespace WeaponPaints
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (int i = 1; i <= 3; i++)
|
||||
{
|
||||
player.ExecuteClientCommand($"slot {i}");
|
||||
player.ExecuteClientCommand($"slot {i}");
|
||||
@@ -272,6 +275,11 @@ namespace WeaponPaints
|
||||
{
|
||||
var weapon = player.PlayerPawn.Value.WeaponServices.ActiveWeapon.Value;
|
||||
CCSWeaponBaseGun? gun = weapon?.As<CCSWeaponBaseGun>();
|
||||
|
||||
if (gun == null || gun.VData == null) return;
|
||||
|
||||
if (gun?.VData?.GearSlot == gear_slot_t.GEAR_SLOT_C4 || gun?.VData?.GearSlot == gear_slot_t.GEAR_SLOT_GRENADES) return;
|
||||
|
||||
player.DropActiveWeapon();
|
||||
|
||||
AddTimer(0.22f, () =>
|
||||
@@ -315,10 +323,10 @@ namespace WeaponPaints
|
||||
|
||||
internal void RefreshKnife(CCSPlayerController? player)
|
||||
{
|
||||
if (player == null || !player.IsValid || player.PlayerPawn?.Value == null || (LifeState_t)player.LifeState != LifeState_t.LIFE_ALIVE)
|
||||
if (player == null || !player.IsValid || player.PlayerPawn?.Value == null)
|
||||
return;
|
||||
|
||||
if (player.PlayerPawn.Value.WeaponServices == null || player.PlayerPawn.Value.ItemServices == null)
|
||||
if (player.PlayerPawn.Value.WeaponServices == null)
|
||||
return;
|
||||
|
||||
var weapons = player.PlayerPawn.Value.WeaponServices.MyWeapons;
|
||||
@@ -334,8 +342,10 @@ namespace WeaponPaints
|
||||
|
||||
if (weapon.Value.DesignerName.Contains("knife") || weaponData?.GearSlot == gear_slot_t.GEAR_SLOT_KNIFE)
|
||||
{
|
||||
RefreshWeapons(player);
|
||||
break;
|
||||
player.ExecuteClientCommand("slot 3");
|
||||
|
||||
weapon.Value.Remove();
|
||||
GiveKnifeToPlayer(player);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -362,7 +372,7 @@ namespace WeaponPaints
|
||||
pawn.SetModel(model);
|
||||
}
|
||||
|
||||
Instance.AddTimer(0.2f, () =>
|
||||
Instance.AddTimer(0.06f, () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -155,7 +155,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
|
||||
public override string ModuleAuthor => "Nereziel & daffyy";
|
||||
public override string ModuleDescription => "Skin, gloves and knife selector, standalone and web-based";
|
||||
public override string ModuleName => "WeaponPaints";
|
||||
public override string ModuleVersion => "1.9a";
|
||||
public override string ModuleVersion => "1.9b";
|
||||
|
||||
public static WeaponPaintsConfig GetWeaponPaintsConfig()
|
||||
{
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace WeaponPaints
|
||||
}
|
||||
|
||||
|
||||
internal async Task SyncGloveToDatabase(PlayerInfo player, ushort defindex)
|
||||
internal async Task SyncGloveToDatabase(PlayerInfo player, int defindex)
|
||||
{
|
||||
if (!_config.Additional.GloveEnabled || player == null || string.IsNullOrEmpty(player.SteamId)) return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user