From 7810c6e30206688f4e5b8c21a8bb81ab5016dbc1 Mon Sep 17 00:00:00 2001 From: Astra Date: Thu, 24 Sep 2026 21:37:07 +0100 Subject: [PATCH] chore: version 1.2.4.b2-panorama1, drop WASDMenuAPI project - ModuleVersion 1.2.4.b2-panorama1; the startup version check and its download link now use git.zio.sh/cs2/jRandomSkills releases instead of upstream's GitHub - updater.json lists the release - Remove the unused WASDMenuAPI project from the solution and repo, and its README credit --- .github/en.md | 1 - .github/pl.md | 1 - README-PL.md | 1 - README.md | 1 - .../Classes/WasdManager.cs | 79 ----- WASDMenuAPI - SRC Files/Classes/WasdMenu.cs | 27 -- .../Classes/WasdMenuOption.cs | 13 - .../Classes/WasdMenuPlayer.cs | 300 ------------------ .../Interfaces/IWasdMenu.cs | 15 - .../Interfaces/IWasdMenuManager.cs | 22 -- .../Interfaces/IWasdMenuOption.cs | 11 - WASDMenuAPI - SRC Files/WASDMenuAPI.cs | 65 ---- WASDMenuAPI - SRC Files/WASDMenuAPI.csproj | 13 - WASDMenuAPI - SRC Files/WASDMenuAPI.sln | 25 -- jRandomSkills - SRC Files/jRandomSkills.sln | 6 - .../src/jRandomSkills.cs | 6 +- .../plugins/jRandomSkills/jRandomSkills.dll | Bin 787968 -> 787968 bytes updater.json | 8 +- 18 files changed, 10 insertions(+), 584 deletions(-) delete mode 100644 WASDMenuAPI - SRC Files/Classes/WasdManager.cs delete mode 100644 WASDMenuAPI - SRC Files/Classes/WasdMenu.cs delete mode 100644 WASDMenuAPI - SRC Files/Classes/WasdMenuOption.cs delete mode 100644 WASDMenuAPI - SRC Files/Classes/WasdMenuPlayer.cs delete mode 100644 WASDMenuAPI - SRC Files/Interfaces/IWasdMenu.cs delete mode 100644 WASDMenuAPI - SRC Files/Interfaces/IWasdMenuManager.cs delete mode 100644 WASDMenuAPI - SRC Files/Interfaces/IWasdMenuOption.cs delete mode 100644 WASDMenuAPI - SRC Files/WASDMenuAPI.cs delete mode 100644 WASDMenuAPI - SRC Files/WASDMenuAPI.csproj delete mode 100644 WASDMenuAPI - SRC Files/WASDMenuAPI.sln diff --git a/.github/en.md b/.github/en.md index 8255b85..2befcd0 100644 --- a/.github/en.md +++ b/.github/en.md @@ -411,7 +411,6 @@ This plugin uses content from the following projects: - [Ray-Trace](https://github.com/FUNPLAY-pro-CS2/Ray-Trace) by [SlynxCZ](https://github.com/SlynxCZ) - New Trace Ray system - [CS2FlashingHtmlHudFix](https://github.com/girlglock/CS2FlashingHtmlHudFix) by [girlglock](https://github.com/girlglock) - A fix for window flickering - [ChaseMod](https://github.com/ipsvn/ChaseMod/blob/master/Utils/Memory/CCSMatch.cs) by [ipsvn](https://github.com/ipsvn) - Round score management -- [WASDMenuAPI](https://github.com/Interesting-exe/WASDMenuAPI) by [Interesting-exe](https://github.com/Interesting-exe) - API to easily create WASD menus - [GeoLocationLanguageManagerPlugin](https://github.com/aprox2/GeoLocationLanguageManagerPlugin) by [aprox2](https://github.com/aprox2) - Geolocation language manager - [GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) by [MaxMind](https://www.maxmind.com/) - Geolocation data - [cs2-css-flashlight](https://github.com/creazy231/cs2-css-flashlight) by [creazy231](https://github.com/creazy231) - Lighting creation system diff --git a/.github/pl.md b/.github/pl.md index c7d5eaa..971c7c0 100644 --- a/.github/pl.md +++ b/.github/pl.md @@ -411,7 +411,6 @@ Plugin korzysta z zawartości następujących projektów: - [Ray-Trace](https://github.com/FUNPLAY-pro-CS2/Ray-Trace) autorstwa [SlynxCZ](https://github.com/SlynxCZ) - Nowy system śledzenia promieni (Trace Ray) - [CS2FlashingHtmlHudFix](https://github.com/girlglock/CS2FlashingHtmlHudFix) autorstwa [girlglock](https://github.com/girlglock) - Poprawka migotania okienka z supermocą - [ChaseMod](https://github.com/ipsvn/ChaseMod/blob/master/Utils/Memory/CCSMatch.cs) autorstwa [ipsvn](https://github.com/ipsvn) - Ustawianie wyniku rund -- [WASDMenuAPI](https://github.com/Interesting-exe/WASDMenuAPI) autorstwa [Interesting-exe](https://github.com/Interesting-exe) - API do łatwego tworzenia menu za pomocą klawiszy WASD - [GeoLocationLanguageManagerPlugin](https://github.com/aprox2/GeoLocationLanguageManagerPlugin) autorstwa [aprox2](https://github.com/aprox2) - Zarządzenie geolokalizacją - [GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) autorstwa [MaxMind](https://www.maxmind.com/) - Dane geolokalizacyjne - [cs2-css-flashlight](https://github.com/creazy231/cs2-css-flashlight) autorstwa [creazy231](https://github.com/creazy231) - System tworzenia oświetlenia diff --git a/README-PL.md b/README-PL.md index 1c9f058..ae42a84 100644 --- a/README-PL.md +++ b/README-PL.md @@ -411,7 +411,6 @@ Plugin korzysta z zawartości następujących projektów: - [Ray-Trace](https://github.com/FUNPLAY-pro-CS2/Ray-Trace) autorstwa [SlynxCZ](https://github.com/SlynxCZ) - Nowy system śledzenia promieni (Trace Ray) - [CS2FlashingHtmlHudFix](https://github.com/girlglock/CS2FlashingHtmlHudFix) autorstwa [girlglock](https://github.com/girlglock) - Poprawka migotania okienka z supermocą - [ChaseMod](https://github.com/ipsvn/ChaseMod/blob/master/Utils/Memory/CCSMatch.cs) autorstwa [ipsvn](https://github.com/ipsvn) - Ustawianie wyniku rund -- [WASDMenuAPI](https://github.com/Interesting-exe/WASDMenuAPI) autorstwa [Interesting-exe](https://github.com/Interesting-exe) - API do łatwego tworzenia menu za pomocą klawiszy WASD - [GeoLocationLanguageManagerPlugin](https://github.com/aprox2/GeoLocationLanguageManagerPlugin) autorstwa [aprox2](https://github.com/aprox2) - Zarządzenie geolokalizacją - [GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) autorstwa [MaxMind](https://www.maxmind.com/) - Dane geolokalizacyjne - [cs2-css-flashlight](https://github.com/creazy231/cs2-css-flashlight) autorstwa [creazy231](https://github.com/creazy231) - System tworzenia oświetlenia diff --git a/README.md b/README.md index 05b470a..308088d 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,6 @@ This plugin uses content from the following projects: - [Ray-Trace](https://github.com/FUNPLAY-pro-CS2/Ray-Trace) by [SlynxCZ](https://github.com/SlynxCZ) - New Trace Ray system - [CS2FlashingHtmlHudFix](https://github.com/girlglock/CS2FlashingHtmlHudFix) by [girlglock](https://github.com/girlglock) - A fix for window flickering - [ChaseMod](https://github.com/ipsvn/ChaseMod/blob/master/Utils/Memory/CCSMatch.cs) by [ipsvn](https://github.com/ipsvn) - Round score management -- [WASDMenuAPI](https://github.com/Interesting-exe/WASDMenuAPI) by [Interesting-exe](https://github.com/Interesting-exe) - API to easily create WASD menus - [GeoLocationLanguageManagerPlugin](https://github.com/aprox2/GeoLocationLanguageManagerPlugin) by [aprox2](https://github.com/aprox2) - Geolocation language manager - [GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) by [MaxMind](https://www.maxmind.com/) - Geolocation data - [cs2-css-flashlight](https://github.com/creazy231/cs2-css-flashlight) by [creazy231](https://github.com/creazy231) - Lighting creation system diff --git a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs b/WASDMenuAPI - SRC Files/Classes/WasdManager.cs deleted file mode 100644 index 760bf48..0000000 --- a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs +++ /dev/null @@ -1,79 +0,0 @@ -using CounterStrikeSharp.API.Core; -using WASDSharedAPI; - -namespace WASDMenuAPI.Classes; - -public class WasdManager : IWasdMenuManager -{ - public void OpenMainMenu(CCSPlayerController? player, IWasdMenu? menu) - { - if(!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.OpenMainMenu((WasdMenu?)menu); - } - - public void CloseMenu(CCSPlayerController? player) - { - if (!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.OpenMainMenu(null); - } - - public void CloseSubMenu(CCSPlayerController? player) - { - if (!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.CloseSubMenu(); - } - - public void CloseAllSubMenus(CCSPlayerController? player) - { - if (!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.CloseAllSubMenus(); - } - - public void OpenSubMenu(CCSPlayerController? player, IWasdMenu? menu) - { - if (!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.OpenSubMenu(menu); - } - - public IWasdMenu CreateMenu(string title, string itemText, string itemHoverText, string controlText) - { - WasdMenu menu = new() - { - Title = title, - ItemText = itemText, - ItemHoverText = itemHoverText, - ControlText = controlText - }; - return menu; - } - - public bool HasMenu(CCSPlayerController? player) - { - if (TryGetPlayer(player, out var menuPlayer) && menuPlayer != null) - return menuPlayer.MainMenu != null; - return false; - } - - public void UpdateActiveMenu(CCSPlayerController? player, Dictionary> list) - { - if (!TryGetPlayer(player, out var menuPlayer)) return; - menuPlayer?.UpdateActiveMenu(list); - } - - public bool SetMenuPaused(CCSPlayerController? player, bool pause) - { - if (TryGetPlayer(player, out var menuPlayer) && menuPlayer != null) - { - menuPlayer.Paused = pause; - return true; - } - return false; - } - - private static 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/WASDMenuAPI - SRC Files/Classes/WasdMenu.cs b/WASDMenuAPI - SRC Files/Classes/WasdMenu.cs deleted file mode 100644 index b7fae9c..0000000 --- a/WASDMenuAPI - SRC Files/Classes/WasdMenu.cs +++ /dev/null @@ -1,27 +0,0 @@ -using CounterStrikeSharp.API.Core; -using System.Diagnostics.CodeAnalysis; -using WASDSharedAPI; - -namespace WASDMenuAPI.Classes; - -public class WasdMenu : IWasdMenu -{ - [AllowNull] public string Title { get; set; } = ""; - [AllowNull] public string ItemText { get; set; } = ""; - [AllowNull] public string ItemHoverText { get; set; } = ""; - [AllowNull] public string ControlText { get; set; } = ""; - public LinkedList? Options { get; set; } = new(); - public LinkedListNode? Prev { get; set; } = null; - public LinkedListNode Add(string display, Action onChoice) - { - Options ??= new(); - WasdMenuOption newOption = new() - { - OptionDisplay = display, - OnChoose = onChoice, - Index = Options.Count, - Parent = this - }; - return Options.AddLast(newOption); - } -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/Classes/WasdMenuOption.cs b/WASDMenuAPI - SRC Files/Classes/WasdMenuOption.cs deleted file mode 100644 index fcc5daa..0000000 --- a/WASDMenuAPI - SRC Files/Classes/WasdMenuOption.cs +++ /dev/null @@ -1,13 +0,0 @@ -using CounterStrikeSharp.API.Core; -using WASDMenuAPI.Classes; -using WASDSharedAPI; - -namespace WASDMenuAPI; - -public class WasdMenuOption : IWasdMenuOption -{ - public IWasdMenu? Parent { get; set; } - public string? OptionDisplay { get; set; } - public Action? OnChoose { get; set; } - public int Index { get; set; } -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/Classes/WasdMenuPlayer.cs b/WASDMenuAPI - SRC Files/Classes/WasdMenuPlayer.cs deleted file mode 100644 index 69b5eac..0000000 --- a/WASDMenuAPI - SRC Files/Classes/WasdMenuPlayer.cs +++ /dev/null @@ -1,300 +0,0 @@ -using System.Text; -using CounterStrikeSharp.API; -using CounterStrikeSharp.API.Core; -using WASDMenuAPI.Classes; -using WASDSharedAPI; - -namespace WASDMenuAPI; - -public class WasdMenuPlayer -{ - public required CCSPlayerController Player { get; set; } - public WasdMenu? MainMenu = null; - public LinkedListNode? CurrentChoice = null; - public LinkedListNode? MenuStart = null; - public string CenterHtml = ""; - public static int DefaultVisibleOptions = 3; - public int VisibleOptions => DefaultVisibleOptions; - public PlayerButtons Buttons { get; set; } - public bool Paused = false; - - public int scrollIndex = 0; - public int maxLength = 21; - public int scrollJump = 3; - - public void OpenMainMenu(WasdMenu? menu) - { - if (menu == null) - { - MainMenu = null; - CurrentChoice = null; - CenterHtml = ""; - return; - } - MainMenu = menu; - CurrentChoice = MainMenu.Options?.First; - MenuStart = CurrentChoice; - UpdateCenterHtml(); - } - - public void OpenSubMenu(IWasdMenu? menu) - { - if (menu == null) - { - CurrentChoice = MainMenu?.Options?.First; - MenuStart = CurrentChoice; - UpdateCenterHtml(); - return; - } - - CurrentChoice = menu.Options?.First; - MenuStart = CurrentChoice; - UpdateCenterHtml(); - } - public void GoBackToPrev(LinkedListNode? menu) - { - if (menu == null) - { - CurrentChoice = MainMenu?.Options?.First; - MenuStart = CurrentChoice; - UpdateCenterHtml(); - return; - } - - CurrentChoice = menu; - if (CurrentChoice.Value.Index >= 5 ) - { - MenuStart = CurrentChoice; - for (int i = 0; i < VisibleOptions; i++) - { - MenuStart = MenuStart?.Previous; - } - } - else - MenuStart = CurrentChoice.List?.First; - UpdateCenterHtml(); - } - - public void CloseSubMenu() - { - if (CurrentChoice?.Value.Parent?.Prev == null) - return; - GoBackToPrev(CurrentChoice?.Value.Parent.Prev); - } - - public void CloseAllSubMenus() - { - OpenSubMenu(null); - } - - public void Choose() - { - CurrentChoice?.Value.OnChoose?.Invoke(Player, CurrentChoice.Value); - } - - public void ScrollDown() - { - if(CurrentChoice == null || MainMenu == null) - return; - scrollIndex = 0; - CurrentChoice = CurrentChoice.Next ?? CurrentChoice.List?.First; - MenuStart = CurrentChoice!.Value.Index >= VisibleOptions ? MenuStart!.Next : CurrentChoice.List?.First; - UpdateCenterHtml(); - } - - public void ScrollUp() - { - if(CurrentChoice == null || MainMenu == null) - return; - scrollIndex = 0; - CurrentChoice = CurrentChoice.Previous ?? CurrentChoice.List?.Last; - if (CurrentChoice == CurrentChoice?.List?.Last && CurrentChoice?.Value.Index >= VisibleOptions) - { - MenuStart = CurrentChoice; - for (int i = 0; i < VisibleOptions - 1; i++) - MenuStart = MenuStart?.Previous; - } - else - MenuStart = CurrentChoice!.Value.Index >= VisibleOptions ? MenuStart!.Previous : CurrentChoice.List?.First; - UpdateCenterHtml(); - } - - private void UpdateCenterHtml() - { - if (CurrentChoice == null || MainMenu == null || MenuStart == null) - return; - - StringBuilder builder = new(); - string itemText = ""; - string itemHoverText = ""; - string endControl = ""; - LinkedListNode? option = MenuStart; - - builder.AppendLine(""); - - if (!string.IsNullOrEmpty(option?.Value?.Parent?.Title)) - builder.AppendLine(option.Value.Parent?.Title ?? ""); - - if (!string.IsNullOrEmpty(option?.Value?.Parent?.ItemText)) - itemText = option?.Value?.Parent?.ItemText ?? ""; - - if (!string.IsNullOrEmpty(option?.Value?.Parent?.ItemHoverText)) - itemHoverText = option?.Value?.Parent?.ItemHoverText ?? ""; - - if (!string.IsNullOrEmpty(option?.Value?.Parent?.ControlText)) - endControl = option?.Value?.Parent?.ControlText ?? ""; - - int shown = 0; - int maxOptions = VisibleOptions; - - while (shown < maxOptions && option != null && option.Value != null) - { - /* if (shown == maxOptions - 1 && option.Next != null) - { - builder.AppendLine( - $"
"); - break; - }*/ - - string input = option.Value.OptionDisplay ?? string.Empty; - string color = string.Empty; - string text = input; - - if (input.Contains('|')) - { - string[] parts = input.Split("|", 2); - color = parts[0].StartsWith("#") && parts[0].Length == 7 ? parts[0] : string.Empty; - text = parts.Length > 1 ? parts[1] : ""; - } - - string cleanText = text.Replace("\u200B", "") - .Replace("\u200C", "") - .Replace("\u202A", "") - .Replace("\u202C", ""); - - int sepIndex = cleanText.IndexOf(" : "); - string namePart = sepIndex != -1 ? cleanText.Substring(0, sepIndex) : cleanText; - string statsPart = sepIndex != -1 ? cleanText.Substring(sepIndex) : ""; - - int start = 0; - int length = cleanText.Length; - - if (option == CurrentChoice) - { - if (cleanText.Length > maxLength) - { - int remaining = cleanText.Length - scrollIndex; - if (remaining <= maxLength) - { - start = scrollIndex; - length = remaining; - if (Server.TickCount % 32 == 0) scrollIndex = 0; - } - else - { - start = scrollIndex; - length = maxLength; - if (Server.TickCount % 32 == 0) scrollIndex += scrollJump; - } - } - else - { - start = 0; - length = Math.Min(cleanText.Length, maxLength); - } - } - else - { - start = 0; - length = Math.Min(cleanText.Length, maxLength); - } - - int nameLength = namePart.Length; - - int nameSliceStart = Math.Max(start, 0); - int nameSliceEnd = Math.Min(start + length, nameLength); - int nameSliceLength = Math.Max(0, nameSliceEnd - nameSliceStart); - string visibleName = nameSliceLength > 0 ? cleanText.Substring(nameSliceStart, nameSliceLength) : ""; - - int statsSliceStart = Math.Max(start, nameLength); - int statsSliceEnd = Math.Min(start + length, cleanText.Length); - int statsSliceLength = Math.Max(0, statsSliceEnd - statsSliceStart); - - string visibleStats = statsSliceLength > 0 ? cleanText.Substring(statsSliceStart, statsSliceLength) : ""; - string finalOptionText = (visibleName.Length > 0 ? $"\u202A{visibleName}\u202C" : "") + visibleStats; - - if (option == CurrentChoice) - builder.AppendLine(string.Format(itemHoverText, finalOptionText)); - else - builder.AppendLine(string.Format(itemText, string.IsNullOrEmpty(color) ? finalOptionText : $"{finalOptionText}")); - - option = option.Next; - shown++; - } - - if (!string.IsNullOrEmpty(endControl)) - builder.AppendLine(endControl); - - CenterHtml = builder.ToString(); - } - - public void UpdateActiveMenu(Dictionary> list) - { - if (list.Count == 0) - { - OpenMainMenu(null); - return; - } - - var options = MainMenu?.Options; - if (MainMenu == null || options == null) - return; - - options.Clear(); - bool choiceExists = false; - - foreach (var item in list) - { - WasdMenuOption newOption = new() - { - OptionDisplay = item.Key, - OnChoose = item.Value, - Index = options.Count, - Parent = MainMenu - }; - options.AddLast(newOption); - - if (CurrentChoice?.Value?.OptionDisplay == item.Key) - { - CurrentChoice = options.Last; - choiceExists = true; - } - } - if (!choiceExists) - CurrentChoice = options.First; - - if (CurrentChoice != null) - { - if (CurrentChoice.Value.Index >= VisibleOptions) - { - MenuStart = CurrentChoice; - for (int i = 0; i < VisibleOptions - 1; i++) - MenuStart = MenuStart?.Previous; - } - else - MenuStart = MainMenu.Options?.First; - } - - UpdateCenterHtml(); - } - - private static string SafeSubstring(string text, int start, int length) - { - if (string.IsNullOrEmpty(text)) return ""; - if (start < 0) start = 0; - if (start >= text.Length) return ""; - if (start + length > text.Length) - length = text.Length - start; - return text.Substring(start, length); - } -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenu.cs b/WASDMenuAPI - SRC Files/Interfaces/IWasdMenu.cs deleted file mode 100644 index ce04798..0000000 --- a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenu.cs +++ /dev/null @@ -1,15 +0,0 @@ -using CounterStrikeSharp.API.Core; - -namespace WASDSharedAPI; - -public interface IWasdMenu -{ - public string? Title { get; set; } - public string? ItemText { get; set; } - public string? ItemHoverText { get; set; } - public string? ControlText { get; set; } - public LinkedList? Options { get; set; } - // previous option node - public LinkedListNode? Prev { get; set; } - public LinkedListNode Add(string display, Action onChoice); -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuManager.cs b/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuManager.cs deleted file mode 100644 index ab8121b..0000000 --- a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuManager.cs +++ /dev/null @@ -1,22 +0,0 @@ -using CounterStrikeSharp.API.Core; - -namespace WASDSharedAPI; - -public interface IWasdMenuManager -{ - //open the menu as main menu - public void OpenMainMenu(CCSPlayerController? player, IWasdMenu? menu); - //close all menus - public void CloseMenu(CCSPlayerController? player); - //close current submenu and go to previous menu/submenu - public void CloseSubMenu(CCSPlayerController? player); - //close all submenus and go to main menu - public void CloseAllSubMenus(CCSPlayerController? player); - //open menu as submenu - public void OpenSubMenu(CCSPlayerController? player, IWasdMenu? menu); - //create new menu object - public IWasdMenu CreateMenu(string title, string itemText, string itemHoverText, string ControlText); - public bool HasMenu(CCSPlayerController? player); - public void UpdateActiveMenu(CCSPlayerController? player, Dictionary> list); - public bool SetMenuPaused(CCSPlayerController? player, bool pause); -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuOption.cs b/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuOption.cs deleted file mode 100644 index be5bedb..0000000 --- a/WASDMenuAPI - SRC Files/Interfaces/IWasdMenuOption.cs +++ /dev/null @@ -1,11 +0,0 @@ -using CounterStrikeSharp.API.Core; - -namespace WASDSharedAPI; - -public interface IWasdMenuOption -{ - public IWasdMenu? Parent { get; set; } - public string? OptionDisplay { get; set; } - public Action? OnChoose { get; set; } - public int Index { get; set; } -} \ No newline at end of file diff --git a/WASDMenuAPI - SRC Files/WASDMenuAPI.cs b/WASDMenuAPI - SRC Files/WASDMenuAPI.cs deleted file mode 100644 index 0448001..0000000 --- a/WASDMenuAPI - SRC Files/WASDMenuAPI.cs +++ /dev/null @@ -1,65 +0,0 @@ -using CounterStrikeSharp.API; -using CounterStrikeSharp.API.Core; -using WASDMenuAPI.Classes; - -namespace WASDMenuAPI; - -public class WASDMenuAPI -{ - public static string ModuleName => "WASDMenuAPI"; - public static string ModuleVersion => "1.0.2"; - public static string ModuleAuthor => "Interesting"; - - public static readonly Dictionary Players = []; - - public static void LoadPlugin(BasePlugin basePlugin, bool hotReload) - { - basePlugin.RegisterEventHandler((@event, info) => - { - if (@event.Userid != null) - Players[@event.Userid.SteamID] = new WasdMenuPlayer - { - Player = @event.Userid, - Buttons = 0 - }; - return HookResult.Continue; - }); - basePlugin.RegisterEventHandler((@event, info) => - { - if (@event.Userid != null) Players.Remove(@event.Userid.SteamID); - return HookResult.Continue; - }); - - basePlugin.RegisterListener(OnTick); - - if(hotReload) - foreach (var pl in Utilities.GetPlayers()) - { - Players[pl.SteamID] = new WasdMenuPlayer - { - Player = pl, - Buttons = pl.Buttons - }; - } - } - - public static void OnTick() - { - foreach (var player in Players.Values.Where(p => p.MainMenu != null && p.Player?.IsValid == true)) - { - if (player.Paused) - return; - - if ((player.Buttons & PlayerButtons.Forward) == 0 && (player.Player.Buttons & PlayerButtons.Forward) != 0) - player.ScrollUp(); - else if((player.Buttons & PlayerButtons.Back) == 0 && (player.Player.Buttons & PlayerButtons.Back) != 0) - player.ScrollDown(); - else if((player.Buttons & PlayerButtons.Use) == 0 && (player.Player.Buttons & PlayerButtons.Use) != 0) - player.Choose(); - - player.Buttons = player.Player.Buttons; - if (!string.IsNullOrEmpty(player.CenterHtml)) - player.Player.PrintToCenterHtml(player.CenterHtml); - } - } -} diff --git a/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj b/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj deleted file mode 100644 index 564cd1d..0000000 --- a/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - net10.0 - enable - enable - - - - - - - diff --git a/WASDMenuAPI - SRC Files/WASDMenuAPI.sln b/WASDMenuAPI - SRC Files/WASDMenuAPI.sln deleted file mode 100644 index 0d39d89..0000000 --- a/WASDMenuAPI - SRC Files/WASDMenuAPI.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.9.34728.123 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WASDMenuAPI", "WASDMenuAPI.csproj", "{0119D01B-2F71-4918-B638-795C423E143F}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0119D01B-2F71-4918-B638-795C423E143F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0119D01B-2F71-4918-B638-795C423E143F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0119D01B-2F71-4918-B638-795C423E143F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0119D01B-2F71-4918-B638-795C423E143F}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {33517EB0-9056-4518-864C-37D0AFF4124B} - EndGlobalSection -EndGlobal diff --git a/jRandomSkills - SRC Files/jRandomSkills.sln b/jRandomSkills - SRC Files/jRandomSkills.sln index 728cb8a..ee66e2c 100644 --- a/jRandomSkills - SRC Files/jRandomSkills.sln +++ b/jRandomSkills - SRC Files/jRandomSkills.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.9.34728.123 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jRandomSkills", "jRandomSkills.csproj", "{1412DD25-558C-425A-A7F6-347C970136E5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WASDMenuAPI", "../WASDMenuAPI - SRC Files/WASDMenuAPI.csproj", "{E13A84FA-EAB5-CAC7-8143-DD55AB40EAB5}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,10 +15,6 @@ Global {1412DD25-558C-425A-A7F6-347C970136E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {1412DD25-558C-425A-A7F6-347C970136E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {1412DD25-558C-425A-A7F6-347C970136E5}.Release|Any CPU.Build.0 = Release|Any CPU - {E13A84FA-EAB5-CAC7-8143-DD55AB40EAB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E13A84FA-EAB5-CAC7-8143-DD55AB40EAB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E13A84FA-EAB5-CAC7-8143-DD55AB40EAB5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E13A84FA-EAB5-CAC7-8143-DD55AB40EAB5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index 3e21b2b..80ed317 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -44,7 +44,7 @@ namespace src public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleAuthor => "D3X (Original), Juzlus (Modifier), ByDexterTR (Contributor)"; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; - public override string ModuleVersion => "1.2.4.b2"; + public override string ModuleVersion => "1.2.4.b2-panorama1"; public override void Load(bool hotReload) { @@ -250,7 +250,7 @@ namespace src Console.ForegroundColor = (ConsoleColor)CS2ConsoleColors.Red; Console.WriteLine($"\n#########################################################"); Console.WriteLine($"# Download the new version from: #"); - Console.WriteLine($"# https://github.com/Juzlus/jRandomSkills/releases #"); + Console.WriteLine($"# https://git.zio.sh/cs2/jRandomSkills/releases #"); Console.WriteLine($"#########################################################"); } @@ -356,7 +356,7 @@ namespace src { using HttpClient client = new(); client.DefaultRequestHeaders.UserAgent.Add(new System.Net.Http.Headers.ProductInfoHeaderValue("jRandomSkills", "1.0")); - const string URL = "https://api.github.com/repos/Juzlus/jRandomSkills/releases/latest"; + const string URL = "https://git.zio.sh/api/v1/repos/cs2/jRandomSkills/releases/latest"; try { diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index 9f0f2dc2a6519eec0f0f240a7a7bef45effa63d7..54bc085302972582d098393537d8c13c1e11fdf1 100644 GIT binary patch delta 35341 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 H8n6QZeAgv- delta 35305 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