diff --git a/Database.cs b/Database.cs index acbd95a8..456d9af2 100644 --- a/Database.cs +++ b/Database.cs @@ -1,15 +1,11 @@ -using MySqlConnector; +using Microsoft.Extensions.Logging; +using MySqlConnector; namespace WeaponPaints { - public class Database + public class Database(string dbConnectionString) { - private readonly string _dbConnectionString; - - public Database(string dbConnectionString) - { - _dbConnectionString = dbConnectionString; - } + private readonly string _dbConnectionString = dbConnectionString; public async Task GetConnectionAsync() { @@ -19,8 +15,9 @@ namespace WeaponPaints await connection.OpenAsync(); return connection; } - catch (Exception) + catch (Exception ex) { + WeaponPaints.Instance.Logger.LogError($"Unable to connect to database: {ex.Message}"); throw; } } diff --git a/Events.cs b/Events.cs index a1a24824..ef557af8 100644 --- a/Events.cs +++ b/Events.cs @@ -2,6 +2,8 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes.Registration; using CounterStrikeSharp.API.Modules.Entities; +using CounterStrikeSharp.API.Modules.Memory; +using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; namespace WeaponPaints { @@ -105,7 +107,7 @@ namespace WeaponPaints private void GivePlayerWeaponSkin(CCSPlayerController player, CBasePlayerWeapon weapon) { if (!Config.Additional.SkinEnabled) return; - if (!gPlayerWeaponsInfo.ContainsKey(player.Slot)) return; + if (!gPlayerWeaponsInfo.TryGetValue(player.Slot, out System.Collections.Concurrent.ConcurrentDictionary? _value)) return; bool isKnife = weapon.DesignerName.Contains("knife") || weapon.DesignerName.Contains("bayonet"); @@ -244,23 +246,27 @@ namespace WeaponPaints return HookResult.Continue; } - /* + public HookResult OnGiveNamedItemPost(DynamicHook hook) { - var itemServices = hook.GetParam(0); - var weapon = hook.GetReturn(0); - if (!weapon.DesignerName.Contains("weapon")) - return HookResult.Continue; + try + { + var itemServices = hook.GetParam(0); + var weapon = hook.GetReturn(); + if (!weapon.DesignerName.Contains("weapon")) + return HookResult.Continue; - var player = GetPlayerFromItemServices(itemServices); - if (player != null) - GivePlayerWeaponSkin(player, weapon); + var player = GetPlayerFromItemServices(itemServices); + if (player != null) + GivePlayerWeaponSkin(player, weapon); + } + catch { } return HookResult.Continue; } - */ - public void OnEntitySpawned(CEntityInstance entity) + + public void OnEntityCreated(CEntityInstance entity) { var designerName = entity.DesignerName; @@ -331,12 +337,12 @@ namespace WeaponPaints RegisterEventHandler(OnPlayerSpawn); RegisterEventHandler(OnRoundStart); RegisterEventHandler(OnRoundEnd); - RegisterListener(OnEntitySpawned); + RegisterListener(OnEntityCreated); if (Config.Additional.ShowSkinImage) RegisterListener(OnTick); - //VirtualFunctions.GiveNamedItemFunc.Hook(OnGiveNamedItemPost, HookMode.Post); + VirtualFunctions.GiveNamedItemFunc.Hook(OnGiveNamedItemPost, HookMode.Post); } } } \ No newline at end of file diff --git a/VERSION b/VERSION index 3861d0ae..91ce528b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4a \ No newline at end of file +2.4b \ No newline at end of file diff --git a/WeaponPaints.cs b/WeaponPaints.cs index b94aab07..745a75dc 100644 --- a/WeaponPaints.cs +++ b/WeaponPaints.cs @@ -160,7 +160,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig "Nereziel & daffyy"; public override string ModuleDescription => "Skin, gloves, agents and knife selector, standalone and web-based"; public override string ModuleName => "WeaponPaints"; - public override string ModuleVersion => "2.4a"; + public override string ModuleVersion => "2.4b"; public static WeaponPaintsConfig GetWeaponPaintsConfig() {