diff --git a/jRandomSkills - SRC Files/src/lang/en.json b/jRandomSkills - SRC Files/src/lang/en.json index 99ec3a8..54a88e7 100644 --- a/jRandomSkills - SRC Files/src/lang/en.json +++ b/jRandomSkills - SRC Files/src/lang/en.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "You receive infinite ammo for all your weapons", "jackal": "Tracker", - "jackal_desc": "Choose a player who will leave a trail behind them", - "jackal_player_info": "Player '{0}' will start leaving a trail.", - "jackal_select_info": "Choose the player who will leave a trail:", + "jackal_desc": "Every opponent leaves a trail behind them", "jammer": "Jammer", "jammer_desc": "Choose a player to disable their crosshair", diff --git a/jRandomSkills - SRC Files/src/lang/pl.json b/jRandomSkills - SRC Files/src/lang/pl.json index 6d461a8..62ec12e 100644 --- a/jRandomSkills - SRC Files/src/lang/pl.json +++ b/jRandomSkills - SRC Files/src/lang/pl.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "Otrzymujesz nieskończoną ilość amunicji do wszystkich broni", "jackal": "Stópkarz", - "jackal_desc": "Wybierasz gracza, który pozostawi za sobą ślad", - "jackal_player_info": "Gracz '{0}' zacznie zostawiać za sobą ślad.", - "jackal_select_info": "Wybierz gracza, który pozostawi za sobą ślad:", + "jackal_desc": "Każdy przeciwnik pozostawia za sobą ślad", "jammer": "Zakłócacz", "jammer_desc": "Wybierasz gracza, dla którego chcesz wyłączyć celownik", diff --git a/jRandomSkills - SRC Files/src/lang/pt-br.json b/jRandomSkills - SRC Files/src/lang/pt-br.json index af41fee..4800a5f 100644 --- a/jRandomSkills - SRC Files/src/lang/pt-br.json +++ b/jRandomSkills - SRC Files/src/lang/pt-br.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "Você recebe munição infinita para todas as suas armas", "jackal": "Rastreador", - "jackal_desc": "Escolha um jogador que deixará um rastro atrás dele", - "jackal_player_info": "O jogador '{0}' começará a deixar um rastro.", - "jackal_select_info": "Escolha o jogador que deixará um rastro:", + "jackal_desc": "Cada adversário deixa um rastro atrás de si", "jammer": "Jammer", "jammer_desc": "Escolha um jogador para desativar sua mira", diff --git a/jRandomSkills - SRC Files/src/lang/zh.json b/jRandomSkills - SRC Files/src/lang/zh.json index 6ed2da3..84855f6 100644 --- a/jRandomSkills - SRC Files/src/lang/zh.json +++ b/jRandomSkills - SRC Files/src/lang/zh.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "你为所有武器获得无限弹药", "jackal": "追踪者", - "jackal_desc": "选择一个玩家,其身后会留下痕迹", - "jackal_player_info": "玩家 '{0}' 将开始留下痕迹。", - "jackal_select_info": "选择将留下痕迹的玩家:", + "jackal_desc": "每个对手都会留下痕迹", "jammer": "干扰器", "jammer_desc": "选择一个玩家以禁用其准星", diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index 0fe19b8..425529c 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -169,7 +169,7 @@ namespace jRandomSkills List skillList = new(SkillData.Skills); skillList.RemoveAll(s => s?.Skill == skillPlayer?.Skill || s?.Skill == skillPlayer?.SpecialSkill || s?.Skill == Skills.None); - if (Utilities.GetPlayers().FindAll(p => p.Team == player.Team && p.IsValid && !p.IsBot).Count == 1) + if (Utilities.GetPlayers().FindAll(p => p.Team == player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).Count == 1) { Config.DefaultSkillInfo[] skillsNeedsTeammates = Config.LoadedConfig.SkillsInfo.Where(s => s.NeedsTeammates).ToArray(); skillList.RemoveAll(s => skillsNeedsTeammates.Any(s2 => s2.Name == s.Skill.ToString())); @@ -270,6 +270,28 @@ namespace jRandomSkills return HookResult.Continue; }); + + Instance.RegisterListener((CCSPlayerController player, PlayerButtons pressed, PlayerButtons released) => + { + string? button = Config.LoadedConfig.Settings.AlternativeSkillButton; + if (string.IsNullOrEmpty(button)) return; + + if (Enum.TryParse(button, out var skillButton)) + { + if (pressed != skillButton) return; + } else return; + + if (player == null) return; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); + if (playerInfo == null) return; + + var playerPawn = player.PlayerPawn.Value; + if (playerPawn?.CBodyComponent == null) return; + if (!player.IsValid || !player.PawnIsAlive) return; + + Debug.WriteToDebug($"Player {player.PlayerName} used the skill: {playerInfo.Skill} by PlayerButtons: {pressed}"); + Instance.SkillAction(playerInfo.Skill.ToString(), "UseSkill", [player]); + }); } [GeneratedRegex(@"\{AUTHOR1\}", RegexOptions.IgnoreCase, "pl-PL")] diff --git a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs index 82a4ec1..8a3b907 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs @@ -3,6 +3,7 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.player; using jRandomSkills.src.utils; +using System.Collections.Generic; using static jRandomSkills.jRandomSkills; namespace jRandomSkills @@ -11,7 +12,7 @@ namespace jRandomSkills { private const Skills skillName = Skills.Darkness; private static readonly float brightness = Config.GetValue(skillName, "brightness"); - private static readonly Dictionary deafultPostProcessing = []; + private static readonly Dictionary> defaultPostProcessings = []; private static readonly List newPostProcessing = []; public static void LoadSkill() @@ -36,7 +37,7 @@ namespace jRandomSkills Instance.RegisterEventHandler((@event, info) => { - foreach (var player in deafultPostProcessing.Keys) + foreach (var player in defaultPostProcessings.Keys) DisableSkill(player); foreach (var postProcessing in newPostProcessing) postProcessing.Remove(); @@ -89,7 +90,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("darkness") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("darkness_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) @@ -111,29 +112,40 @@ namespace jRandomSkills var pawn = player.PlayerPawn.Value; if (pawn == null || !pawn.IsValid || pawn.CameraServices == null) return; - var postProcessingVolumes = pawn.CameraServices.PostProcessingVolumes.FirstOrDefault(); - if (postProcessingVolumes == null || postProcessingVolumes.Value == null) return; + if (!defaultPostProcessings.TryGetValue(player, out _)) + defaultPostProcessings[player] = []; - if (deafultPostProcessing.TryGetValue(player, out var oldPostProcessing)) + int i = 0; + foreach (var postProcessingVolume in pawn.CameraServices.PostProcessingVolumes) { - postProcessingVolumes.Raw = oldPostProcessing.EntityHandle.Raw; - deafultPostProcessing.Remove(player); - Utilities.SetStateChanged(pawn, "CBasePlayerPawn", "m_pCameraServices"); - return; + if (postProcessingVolume == null || postProcessingVolume.Value == null) + return; + + if (dontCreateNew) + { + if (i < defaultPostProcessings[player].Count) + postProcessingVolume.Raw = defaultPostProcessings[player][i].EntityHandle.Raw; + } + else + { + defaultPostProcessings[player].Add(postProcessingVolume.Value); + + var postProcessing = Utilities.CreateEntityByName("post_processing_volume"); + if (postProcessing == null) return; + + postProcessing.ExposureControl = true; + postProcessing.MaxExposure = brightness; + postProcessing.MinExposure = brightness; + + newPostProcessing.Add(postProcessing); + postProcessingVolume.Raw = postProcessing.EntityHandle.Raw; + } + i++; } - if (dontCreateNew) - return; - - var postProcessing = Utilities.CreateEntityByName("post_processing_volume"); - if (postProcessing == null) return; - - postProcessing.ExposureControl = true; - postProcessing.MaxExposure = brightness; - postProcessing.MinExposure = brightness; - deafultPostProcessing.TryAdd(player, postProcessingVolumes.Value); - postProcessingVolumes.Raw = postProcessing.EntityHandle.Raw; Utilities.SetStateChanged(pawn, "CBasePlayerPawn", "m_pCameraServices"); + if (dontCreateNew) + defaultPostProcessings.Remove(player); } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#383838", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, float brightness = .01f) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) diff --git a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs index 1be27ab..d06ad3c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs @@ -71,7 +71,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("deactivator") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("deactivator_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs index 4a0fd4d..421e58a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs @@ -96,7 +96,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("deaf") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("deaf_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs index 78171e8..9cc1211 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs @@ -60,7 +60,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("duplicator") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("duplicator_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p != player && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p != player && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs index d719cca..a8fa430 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs @@ -77,7 +77,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("glitch") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("glitch_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs index b1fd3f6..a56247f 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs @@ -3,7 +3,6 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Modules.Utils; using jRandomSkills.src.player; -using jRandomSkills.src.utils; using System.Drawing; using static jRandomSkills.jRandomSkills; @@ -14,13 +13,11 @@ namespace jRandomSkills private const Skills skillName = Skills.Jackal; private static readonly int maxStepBeam = Config.GetValue(skillName, "maxStepBeam"); private static bool exists = false; - - private static readonly Dictionary authorBeams = []; private static readonly Dictionary> stepBeams = []; public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, Config.GetValue(skillName, "color"), false); + SkillUtils.RegisterSkill(skillName, Config.GetValue(skillName, "color")); Instance.RegisterEventHandler((@event, info) => { @@ -44,11 +41,7 @@ namespace jRandomSkills foreach (var beam in beams) if (beam != null && beam.IsValid) beam.Remove(); - foreach (var player in stepBeams.Keys) - DisableSkill(player); - authorBeams.Clear(); stepBeams.Clear(); - Instance.RemoveListener(CheckTransmit); exists = false; return HookResult.Continue; @@ -100,12 +93,13 @@ namespace jRandomSkills var beams = step.Value; var observedPlayer = Utilities.GetPlayers().FirstOrDefault(p => p?.Pawn?.Value?.Handle == player?.Pawn?.Value?.ObserverServices?.ObserverTarget?.Value?.Handle); - - bool playerHasBeam = authorBeams.TryGetValue(player.Index, out uint pIndex) && pIndex == enemy.Index; - bool observerHasBeam = observedPlayer != null && authorBeams.TryGetValue(observedPlayer.Index, out uint oIndex) && oIndex == enemy.Index; + var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); + var observerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == observedPlayer?.SteamID); foreach (var beam in beams) - if (!playerHasBeam && !observerHasBeam) + if (playerInfo?.Skill != skillName && observerInfo?.Skill != skillName) + info.TransmitEntities.Remove(beam); + else if (enemy.Team == player.Team) info.TransmitEntities.Remove(beam); } } @@ -130,60 +124,16 @@ namespace jRandomSkills return beam; } - public static void TypeSkill(CCSPlayerController player, string[] commands) - { - if (player == null || !player.IsValid || !player.PawnIsAlive) return; - var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); - if (playerInfo?.Skill != skillName) return; - - if (playerInfo.SkillChance == 1) - { - player.PrintToChat($" {ChatColors.Red}{Localization.GetTranslation("areareaper_used_info")}"); - return; - } - - string enemyId = commands[0]; - var enemy = Utilities.GetPlayers().FirstOrDefault(p => p.Team != player.Team && p.Index.ToString() == enemyId); - - if (enemy == null) - { - player.PrintToChat($" {ChatColors.Red}" + Localization.GetTranslation("selectplayerskill_incorrect_enemy_index")); - return; - } - - authorBeams.Add(player.Index, enemy.Index); - stepBeams.Add(enemy, []); - playerInfo.SkillChance = 1; - player.PrintToChat($" {ChatColors.Green}" + Localization.GetTranslation("jackal_player_info", enemy.PlayerName)); - } - public static void EnableSkill(CCSPlayerController player) { if (!exists) - Instance.RegisterListener(CheckTransmit); - exists = true; - var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); - if (playerInfo == null) return; - playerInfo.SkillChance = 0; - - SkillUtils.PrintToChat(player, Localization.GetTranslation("jackal") + ":", false); - - player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("jackal_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); - if (enemies.Length > 0) { - foreach (var enemy in enemies) - player.PrintToChat($" {ChatColors.Green}⠀⠀⠀[{ChatColors.Red}{enemy.Index}{ChatColors.Green}] {enemy.PlayerName}"); - } - else - player.PrintToChat($" {ChatColors.Red}⠀⠀⠀{Localization.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); - player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("selectplayerskill_command")} {ChatColors.Red}index"); - } + Instance.RegisterListener(CheckTransmit); - public static void DisableSkill(CCSPlayerController player) - { - authorBeams.Remove(player.Index); - stepBeams.Remove(player); + foreach (var _player in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator)) + stepBeams.Add(_player, []); + } + exists = true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#f542ef", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, int maxStepBeam = 50) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates) diff --git a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs index 4d1c1d1..7c6cef3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs @@ -88,7 +88,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("jammer") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("jammer_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs index 9db54cd..6dbd7ae 100644 --- a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs @@ -97,7 +97,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("jumpban") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("jumpban_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs index 09c94ee..c7a8be6 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs @@ -68,7 +68,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("lifeswap") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("lifeswap_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs index f434d5d..4103a0a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs @@ -82,7 +82,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("magnifier") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("magnifier_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs index 2819b51..ec6f257 100644 --- a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs @@ -68,7 +68,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("moneyswap") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("moneyswap_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Poison.cs b/jRandomSkills - SRC Files/src/player/skills/Poison.cs index 19f7eb6..8643db5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Poison.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Poison.cs @@ -91,7 +91,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("poison") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("poison_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs index e3e37d8..68cbc38 100644 --- a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs @@ -101,7 +101,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("primaryban") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("primaryban_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/player/skills/Thief.cs b/jRandomSkills - SRC Files/src/player/skills/Thief.cs index 9d3dac5..0ab1717 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Thief.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Thief.cs @@ -60,7 +60,7 @@ namespace jRandomSkills SkillUtils.PrintToChat(player, Localization.GetTranslation("thief") + ":", false); player.PrintToChat($" {ChatColors.Green}{Localization.GetTranslation("thief_select_info")}"); - var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot).ToArray(); + var enemies = Utilities.GetPlayers().Where(p => p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator).ToArray(); if (enemies.Length > 0) { foreach (var enemy in enemies) diff --git a/jRandomSkills - SRC Files/src/utils/Config.cs b/jRandomSkills - SRC Files/src/utils/Config.cs index b7f1ca7..d10de69 100644 --- a/jRandomSkills - SRC Files/src/utils/Config.cs +++ b/jRandomSkills - SRC Files/src/utils/Config.cs @@ -140,6 +140,7 @@ namespace jRandomSkills public bool TeamMateSkillInfo { get; set; } public bool SummaryAfterTheRound { get; set; } public bool DebugMode { get; set; } + public string? AlternativeSkillButton { get; set; } public NormalCommand SetSkillCommands { get; set; } public NormalCommand SkillsListCommands { get; set; } public NormalCommand UseSkillCommands { get; set; } @@ -161,6 +162,7 @@ namespace jRandomSkills TeamMateSkillInfo = true; SummaryAfterTheRound = true; DebugMode = true; + AlternativeSkillButton = null; SetSkillCommands = new NormalCommand("ustawskill, ustaw_skill, setskill, set_skill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能", "@jRandmosSkills/admin"); SkillsListCommands = new NormalCommand("supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表", "@jRandmosSkills/admin"); diff --git a/jRandomSkills - SRC Files/src/utils/Localization.cs b/jRandomSkills - SRC Files/src/utils/Localization.cs index b7c32e3..54e764b 100644 --- a/jRandomSkills - SRC Files/src/utils/Localization.cs +++ b/jRandomSkills - SRC Files/src/utils/Localization.cs @@ -49,7 +49,12 @@ namespace jRandomSkills.src.utils if (args.Length != 0 && args[0].ToString() == "welcome") return translation; else - return string.Format(translation, args).Replace("CHATCOLORS.RED", ChatColors.Red.ToString()); + { + string output = string.Format(translation, args).Replace("CHATCOLORS.RED", ChatColors.Red.ToString()); + if (Config.LoadedConfig.Settings.AlternativeSkillButton != null) + output = output.Replace("css_useSkill", $"css_useSkill/{Config.LoadedConfig.Settings.AlternativeSkillButton}"); + return output; + } return key; } diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json b/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json index 3ba04af..3e4cf69 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/Config.json @@ -6,6 +6,7 @@ "TeamMateSkillInfo": true, "SummaryAfterTheRound": true, "DebugMode": true, + "AlternativeSkillButton": null, "SetSkillCommands": { "Alias": "ustawskill, ustaw_skill, setskill, set_skill, definirhabilidade, configurarhabilidade, 设置技能, 配置技能", "Permissions": "@jRandmosSkills/admin" diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index e54341a..bb72af0 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll differ diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/en.json b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/en.json index 99ec3a8..54a88e7 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/en.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/en.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "You receive infinite ammo for all your weapons", "jackal": "Tracker", - "jackal_desc": "Choose a player who will leave a trail behind them", - "jackal_player_info": "Player '{0}' will start leaving a trail.", - "jackal_select_info": "Choose the player who will leave a trail:", + "jackal_desc": "Every opponent leaves a trail behind them", "jammer": "Jammer", "jammer_desc": "Choose a player to disable their crosshair", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pl.json b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pl.json index 6d461a8..62ec12e 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pl.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pl.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "Otrzymujesz nieskończoną ilość amunicji do wszystkich broni", "jackal": "Stópkarz", - "jackal_desc": "Wybierasz gracza, który pozostawi za sobą ślad", - "jackal_player_info": "Gracz '{0}' zacznie zostawiać za sobą ślad.", - "jackal_select_info": "Wybierz gracza, który pozostawi za sobą ślad:", + "jackal_desc": "Każdy przeciwnik pozostawia za sobą ślad", "jammer": "Zakłócacz", "jammer_desc": "Wybierasz gracza, dla którego chcesz wyłączyć celownik", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pt-br.json b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pt-br.json index af41fee..4800a5f 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pt-br.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/pt-br.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "Você recebe munição infinita para todas as suas armas", "jackal": "Rastreador", - "jackal_desc": "Escolha um jogador que deixará um rastro atrás dele", - "jackal_player_info": "O jogador '{0}' começará a deixar um rastro.", - "jackal_select_info": "Escolha o jogador que deixará um rastro:", + "jackal_desc": "Cada adversário deixa um rastro atrás de si", "jammer": "Jammer", "jammer_desc": "Escolha um jogador para desativar sua mira", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/zh.json b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/zh.json index 6ed2da3..84855f6 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/lang/zh.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/lang/zh.json @@ -165,9 +165,7 @@ "infiniteammo_desc": "你为所有武器获得无限弹药", "jackal": "追踪者", - "jackal_desc": "选择一个玩家,其身后会留下痕迹", - "jackal_player_info": "玩家 '{0}' 将开始留下痕迹。", - "jackal_select_info": "选择将留下痕迹的玩家:", + "jackal_desc": "每个对手都会留下痕迹", "jammer": "干扰器", "jammer_desc": "选择一个玩家以禁用其准星", diff --git a/readme-pl.md b/readme-pl.md index 8b5fa03..d7e008a 100644 --- a/readme-pl.md +++ b/readme-pl.md @@ -233,6 +233,13 @@ Wszystkie sypermoce można dostosować w pliku **`Config.cfg`** znajdującym si "TeamMateSkillInfo": true, // Pokazuj supermoc sojuszników na czacie "SummaryAfterTheRound": true, // Pokazuj podsumowanie z ostatniej rundy "DebugMode": true, // Zapisuj aktywność do folderu 'Debug' + "AlternativeSkillButton": null, // Możliwe przyciski: + // "Attack", "Jump", "Duck", "Forward", "Back", + // "Use", "Cancel", "Left", "Right", "Moveleft", + // "Moveright", "Attack2", "Run", "Reload", "Alt1", + // "Alt2", "Speed", "Walk", "Zoom", "Weapon1", + // "Weapon2", "Bullrush", "Grenade1", "Grenade2", + // "Attack3", "Scoreboard", "Inspect" ... }, "SkillsInfo": [ @@ -259,6 +266,19 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.1.3 + +- #### Ogólne: + - ###### Dodano opcje `AlternativeSkillButton` do pliku konfiguracyjnego, aby przycisk gracza mógł być używany do aktywowania umiejętności. + - ###### Obserwatorzy nie są już uwzględniani przy wyborze konkretnego gracza podczas używania umiejętności. +- #### Poprawki mocy: + - ##### Stópkarz: + - ###### Teraz wszyscy przeciwnicy pozostawiają ślad, a nie tylko wybrany. + - ##### Mrok: + - ###### Wszystkie woluminy postprocessingu są zastępowane, a nie tylko pierwszy z nich. +
+
v1.1.2 diff --git a/readme.md b/readme.md index ebaa29d..ebcefe6 100644 --- a/readme.md +++ b/readme.md @@ -233,6 +233,13 @@ All skills can be customized in the **`Config.cfg`** file located in the **`game "TeamMateSkillInfo": true, // Show allies' skills in chat "SummaryAfterTheRound": true, // Show summary of the last round "DebugMode": true, // Write activity to the ‘Debug’ folder + "AlternativeSkillButton": null, // Possible buttons: + // "Attack", "Jump", "Duck", "Forward", "Back", + // "Use", "Cancel", "Left", "Right", "Moveleft", + // "Moveright", "Attack2", "Run", "Reload", "Alt1", + // "Alt2", "Speed", "Walk", "Zoom", "Weapon1", + // "Weapon2", "Bullrush", "Grenade1", "Grenade2", + // "Attack3", "Scoreboard", "Inspect" ... }, "SkillsInfo": [ @@ -259,6 +266,19 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.1.3 + +- #### General: + - ###### Added `AlternativeSkillButton` options to the config file so that the player button can be used to activate skills. + - ###### Spectators are no longer selected when choosing a specific player when using a skill. +- #### Skill improvements: + - ##### Jackal: + - ###### Now, all opponents are leaving a trail, not just the selected ones. + - ##### Darkness: + - ###### All postprocessing volumes are replaced instead of just the first one. +
+
v1.1.2