diff --git a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs b/WASDMenuAPI - SRC Files/Classes/WasdManager.cs index f6322ea..96d067a 100644 --- a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs +++ b/WASDMenuAPI - SRC Files/Classes/WasdManager.cs @@ -7,37 +7,32 @@ public class WasdManager : IWasdMenuManager { public void OpenMainMenu(CCSPlayerController? player, IWasdMenu? menu) { - if(player == null) - return; - WASDMenuAPI.Players[player.SteamID].OpenMainMenu((WasdMenu?)menu); + if(!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.OpenMainMenu((WasdMenu?)menu); } public void CloseMenu(CCSPlayerController? player) { - if(player == null) - return; - WASDMenuAPI.Players[player.SteamID].OpenMainMenu(null); + if (!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.OpenMainMenu(null); } public void CloseSubMenu(CCSPlayerController? player) { - if(player == null) - return; - WASDMenuAPI.Players[player.SteamID].CloseSubMenu(); + if (!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.CloseSubMenu(); } public void CloseAllSubMenus(CCSPlayerController? player) { - if(player == null) - return; - WASDMenuAPI.Players[player.SteamID].CloseAllSubMenus(); + if (!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.CloseAllSubMenus(); } public void OpenSubMenu(CCSPlayerController? player, IWasdMenu? menu) { - if (player == null) - return; - WASDMenuAPI.Players[player.SteamID].OpenSubMenu(menu); + if (!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.OpenSubMenu(menu); } public IWasdMenu CreateMenu(string title = "", string controlText = "") @@ -52,15 +47,19 @@ public class WasdManager : IWasdMenuManager public bool HasMenu(CCSPlayerController? player) { - if (player == null) - return false; - return WASDMenuAPI.Players.ContainsKey(player.SteamID); + return TryGetPlayer(player, out _); } public void UpdateActiveMenu(CCSPlayerController? player, Dictionary> list) { - if (player == null) - return; - WASDMenuAPI.Players[player.SteamID].UpdateActiveMenu(list); + if (!TryGetPlayer(player, out var menuPlayer)) return; + menuPlayer.UpdateActiveMenu(list); + } + + private bool TryGetPlayer(CCSPlayerController? player, out WasdMenuPlayer menuPlayer) + { + menuPlayer = null!; + if (player == null || !player.IsValid || player.IsBot || player.SteamID == 0) return false; + return WASDMenuAPI.Players.TryGetValue(player.SteamID, out menuPlayer); } } \ No newline at end of file diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll index 6004f57..b7744d5 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll differ