Some fixes

This commit is contained in:
Dawid Bepierszcz
2024-02-23 02:45:58 +01:00
parent c9a1fad496
commit 5465b982b7
3 changed files with 69 additions and 46 deletions

View File

@@ -32,13 +32,30 @@ namespace WeaponPaints
if (weaponSync != null) 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) if (Config.Additional.GloveEnabled)
Task.Run(async () => await weaponSync.GetGloveFromDatabase(playerInfo)); {
weaponTasks.Add(Task.Run(async () =>
{
await weaponSync.GetGloveFromDatabase(playerInfo);
}));
}
if (Config.Additional.KnifeEnabled) 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); RefreshGloves(player);
RefreshWeapons(player); RefreshWeapons(player);

View File

@@ -71,6 +71,7 @@ namespace WeaponPaints
Task.Run(async () => Task.Run(async () =>
{ {
await weaponSync.SyncWeaponPaintsToDatabase(playerInfo); await weaponSync.SyncWeaponPaintsToDatabase(playerInfo);
});
// Remove player data // Remove player data
if (Config.Additional.SkinEnabled) if (Config.Additional.SkinEnabled)
@@ -85,7 +86,6 @@ namespace WeaponPaints
{ {
g_playersGlove.TryRemove(player.Slot, out _); g_playersGlove.TryRemove(player.Slot, out _);
} }
});
} }
// Remove player's command cooldown // Remove player's command cooldown
@@ -187,12 +187,11 @@ namespace WeaponPaints
{ {
CCSPlayerController? player = @event.Userid; CCSPlayerController? player = @event.Userid;
if (player is null || !player.IsValid || player.PlayerPawn == null || if (player is null || !player.IsValid || !Config.Additional.KnifeEnabled && !Config.Additional.GloveEnabled)
!player.PlayerPawn.IsValid || player.IsHLTV
|| !Config.Additional.KnifeEnabled && !Config.Additional.GloveEnabled)
return HookResult.Continue; return HookResult.Continue;
g_knifePickupCount[player.Slot] = 0; g_knifePickupCount[player.Slot] = 0;
if (!PlayerHasKnife(player)) if (!PlayerHasKnife(player))
GiveKnifeToPlayer(player); GiveKnifeToPlayer(player);

View File

@@ -142,6 +142,8 @@ namespace WeaponPaints
{ {
if (!_config.Additional.KnifeEnabled || player == null || !player.IsValid) return; if (!_config.Additional.KnifeEnabled || player == null || !player.IsValid) return;
WeaponPaints.Instance.AddTimer(1.0f, () =>
{
string knifeToGive; string knifeToGive;
if (g_playersKnife.TryGetValue(player.Slot, out var knife)) if (g_playersKnife.TryGetValue(player.Slot, out var knife))
{ {
@@ -167,13 +169,14 @@ namespace WeaponPaints
} }
player.GiveNamedItem(knifeToGive); player.GiveNamedItem(knifeToGive);
});
} }
internal static bool PlayerHasKnife(CCSPlayerController? player) internal static bool PlayerHasKnife(CCSPlayerController? player)
{ {
if (!_config.Additional.KnifeEnabled) return false; 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; return false;
} }
@@ -273,6 +276,8 @@ namespace WeaponPaints
var weapon = player.PlayerPawn.Value.WeaponServices.ActiveWeapon.Value; var weapon = player.PlayerPawn.Value.WeaponServices.ActiveWeapon.Value;
CCSWeaponBaseGun? gun = weapon?.As<CCSWeaponBaseGun>(); 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; if (gun?.VData?.GearSlot == gear_slot_t.GEAR_SLOT_C4 || gun?.VData?.GearSlot == gear_slot_t.GEAR_SLOT_GRENADES) return;
player.DropActiveWeapon(); player.DropActiveWeapon();
@@ -318,10 +323,10 @@ namespace WeaponPaints
internal void RefreshKnife(CCSPlayerController? player) 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; return;
if (player.PlayerPawn.Value.WeaponServices == null || player.PlayerPawn.Value.ItemServices == null) if (player.PlayerPawn.Value.WeaponServices == null)
return; return;
var weapons = player.PlayerPawn.Value.WeaponServices.MyWeapons; var weapons = player.PlayerPawn.Value.WeaponServices.MyWeapons;
@@ -337,8 +342,10 @@ namespace WeaponPaints
if (weapon.Value.DesignerName.Contains("knife") || weaponData?.GearSlot == gear_slot_t.GEAR_SLOT_KNIFE) if (weapon.Value.DesignerName.Contains("knife") || weaponData?.GearSlot == gear_slot_t.GEAR_SLOT_KNIFE)
{ {
RefreshWeapons(player); player.ExecuteClientCommand("slot 3");
break;
weapon.Value.Remove();
GiveKnifeToPlayer(player);
} }
} }
catch (Exception ex) catch (Exception ex)