diff --git a/jRandomSkills - SRC Files/!jRandomSkills.csproj b/jRandomSkills - SRC Files/!jRandomSkills.csproj index f46d9e5..33a6d61 100644 --- a/jRandomSkills - SRC Files/!jRandomSkills.csproj +++ b/jRandomSkills - SRC Files/!jRandomSkills.csproj @@ -14,10 +14,10 @@ - + - + diff --git a/jRandomSkills - SRC Files/src/command/Command.cs b/jRandomSkills - SRC Files/src/command/Command.cs index f008354..2001af9 100644 --- a/jRandomSkills - SRC Files/src/command/Command.cs +++ b/jRandomSkills - SRC Files/src/command/Command.cs @@ -89,7 +89,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_SetSkill(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setskill {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_setskill {command.ArgString} command."); if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.SetSkillCommand.Permissions)) return; var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => !p.IsBot && (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) @@ -176,7 +176,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] private static void Command_SkillsListMenu(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_skills {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_skills {command.ArgString} command."); if (player == null || !AdminManager.PlayerHasPermissions(player, config.NormalCommands.SkillsListCommand.Permissions)) return; Menu.DisplaySkillsList(player); } @@ -184,7 +184,7 @@ namespace src.command [CommandHelper(minArgs: 1, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_ChangeMap(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_map {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_map {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.ChangeMapCommand.Permissions)) { if (!config.VotingCommands.ChangeMapCommand.EnableVoting) return; @@ -196,7 +196,7 @@ namespace src.command private static void ChangeMap(CommandInfo command) { - string map = command.GetArg(1); + string map = command.GetArg(1).ToLower(); if (string.IsNullOrEmpty(map)) { @@ -217,7 +217,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_StartGame(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_start {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_start {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.StartGameCommand.Permissions)) { if (!config.VotingCommands.StartGameCommand.EnableVoting) return; @@ -251,7 +251,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Swap(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_swap {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_swap {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.SwapCommand.Permissions)) { if (!config.VotingCommands.SwapCommand.EnableVoting) return; @@ -272,7 +272,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Shuffle(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_shuffle {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_shuffle {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.ShuffleCommand.Permissions)) { if (!config.VotingCommands.ShuffleCommand.EnableVoting) return; @@ -298,7 +298,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Pause(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_pause {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_pause {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.PauseCommand.Permissions)) { if (!config.VotingCommands.PauseCommand.EnableVoting) return; @@ -318,7 +318,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Heal(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_heal {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_heal {command.ArgString} command."); if (player == null || !player.IsValid || player.PlayerPawn.Value == null || !player.PlayerPawn.Value.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.HealCommand.Permissions)) return; SkillUtils.AddHealth(player.PlayerPawn.Value, 100); @@ -328,7 +328,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_ONLY)] private static void Command_HUD(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_hud {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_hud {command.ArgString} command."); if (player == null || !player.IsValid || player.PlayerPawn.Value == null || !player.PlayerPawn.Value.IsValid) return; if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.HudCommand.Permissions)) return; @@ -343,7 +343,7 @@ namespace src.command [CommandHelper(minArgs: 2, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_SetScore(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setscore {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_setscore {command.ArgString} command."); if (player != null && player.IsValid && !AdminManager.PlayerHasPermissions(player, config.VotingCommands.SetScoreCommand.Permissions)) { if (!config.VotingCommands.SetScoreCommand.EnableVoting) return; @@ -368,7 +368,7 @@ namespace src.command [CommandHelper(minArgs: 1, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_CustomCommand(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_console {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_console {command.ArgString} command."); if (player == null || !AdminManager.PlayerHasPermissions(player, config.NormalCommands.ConsoleCommand.Permissions)) return; string param = command.ArgString; Server.ExecuteCommand(param); @@ -377,7 +377,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_SetStaticSkill(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_setstaticskill {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_setstaticskill {command.ArgString} command."); if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.SetStaticSkillCommand.Permissions)) return; var targetPlayer = Utilities.GetPlayers().FirstOrDefault(p => !p.IsBot && (p.SteamID.ToString().Equals(command.GetArg(1), StringComparison.CurrentCultureIgnoreCase) @@ -472,7 +472,7 @@ namespace src.command [CommandHelper(minArgs: 1, whoCanExecute: CommandUsage.CLIENT_ONLY)] private static void Command_ChangeLanguage(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_lang {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_lang {command.ArgString} command."); if (player == null || !player.IsValid) return; if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.ChangeLanguageCommand.Permissions)) return; @@ -491,7 +491,7 @@ namespace src.command [CommandHelper(minArgs: 0, whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] private static void Command_Reload(CCSPlayerController? player, CommandInfo command) { - Debug.WriteToDebug($"Player {player?.PlayerPawn} used the css_lang {command.ArgString} command."); + Debug.WriteToDebug($"Player {player?.PlayerName} used the css_lang {command.ArgString} command."); if (!AdminManager.PlayerHasPermissions(player, config.NormalCommands.ReloadCommand.Permissions)) return; lock (setLock) diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index 7a0f18c..63d659f 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -2,12 +2,14 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Commands; using CounterStrikeSharp.API.Modules.Commands; +using CounterStrikeSharp.API.Modules.Utils; using src.command; using src.player; using src.utils; using System.Collections.Concurrent; using System.Reflection; using WASDSharedAPI; +using static CounterStrikeSharp.API.Core.Listeners; namespace src { @@ -25,7 +27,7 @@ namespace src public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleAuthor => "D3X, Juzlus"; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; - public override string ModuleVersion => "1.1.8"; + public override string ModuleVersion => "1.1.9 BETA"; public override void Load(bool hotReload) { @@ -40,6 +42,8 @@ namespace src Command.Load(); WASDMenuAPI.WASDMenuAPI.LoadPlugin(Instance, hotReload); LoadAllSkills(); + + Instance.RegisterListener((ResourceManifest manifest) => manifest.AddResource("models/actors/ghost_speaker.vmdl")); } internal void LoadAllSkills() @@ -105,6 +109,7 @@ namespace src public DateTime SkillDescriptionHudExpired { get; set; } public string? PrintHTML { get; set; } public bool DisplayHUD { get; set; } + public bool SkillUsed = false; } public class jSkill_SkillInfo(Skills skill, string color, bool display) diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index 41fbe5f..b5d95b3 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -285,6 +285,7 @@ namespace src.player SkillChance = 1, PrintHTML = null, DisplayHUD = true, + SkillUsed = false, }); string welcomeMsg = player.GetTranslation("welcome_message", "welcome"); @@ -342,16 +343,38 @@ namespace src.player { lock (setLock) { - foreach (var player in Utilities.GetPlayers().Where(p => !p.IsBot)) + foreach (var player in Utilities.GetPlayers().Where(p => p != null && !p.IsBot && p.IsValid)) { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); - if (playerInfo == null) return; + if (playerInfo == null) continue; + Instance.SkillAction(playerInfo.Skill.ToString(), "DisableSkill", [player]); Instance.SkillAction(playerInfo.Skill.ToString(), "NewRound"); + + playerInfo.Skill = noneSkill.Skill; + playerInfo.SpecialSkill = noneSkill.Skill; + playerInfo.PrintHTML = null; + playerInfo.SkillChance = 1; + playerInfo.SkillUsed = false; } } } + public static void OnMapChange() + { + lock (setLock) + { + isTransmitRegistered = false; + Instance.AddTimer(.1f, () => DisableAll()); + Instance.RemoveListener(CheckTransmit); + playersSkills.Clear(); + staticSkills.Clear(); + ctSkill = noneSkill; + tSkill = noneSkill; + allSkill = noneSkill; + } + } + private static HookResult RoundEnd(EventRoundEnd @event, GameEventInfo info) { lock (setLock) @@ -391,18 +414,7 @@ namespace src.player if (Config.LoadedConfig.DisableSkillsOnRoundEnd) { isTransmitRegistered = false; - Instance.AddTimer(1f, () => - { - DisableAll(); - foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist)) - { - var skillPlayer = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); - if (skillPlayer == null) continue; - skillPlayer.Skill = noneSkill.Skill; - skillPlayer.SpecialSkill = noneSkill.Skill; - skillPlayer.PrintHTML = null; - } - }); + Instance.AddTimer(1f, () => DisableAll()); Instance.RemoveListener(CheckTransmit); } return HookResult.Continue; @@ -426,7 +438,7 @@ namespace src.player Instance.SkillAction(playerInfo.Skill.ToString(), "DisableSkill", [victim]); if (victim == attacker) return HookResult.Continue; - if (Config.LoadedConfig.KillerSkillInfo) + if (Config.LoadedConfig.KillerSkillChatInfo) { var attackerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == attacker.SteamID); if (attackerInfo != null) @@ -517,13 +529,13 @@ namespace src.player var skillPlayer = Instance?.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (skillPlayer == null) continue; + skillPlayer.IsDrawing = false; if (player.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) { skillPlayer.Skill = Skills.None; continue; } - skillPlayer.IsDrawing = false; jSkill_SkillInfo randomSkill = noneSkill; if (Instance?.GameRules != null && Instance?.GameRules.WarmupPeriod == false) @@ -595,7 +607,7 @@ namespace src.player Debug.WriteToDebug($"Player {skillPlayer.PlayerName} has got the skill \"{player.GetSkillName(randomSkill.Skill)}\"."); skillPlayer.SkillDescriptionHudExpired = DateTime.Now.AddSeconds(Config.LoadedConfig.SkillDescriptionDuration); - if (Config.LoadedConfig.TeamMateSkillInfo) + if (Config.LoadedConfig.TeamMateSkillChatInfo) { Instance?.AddTimer(.5f, () => { @@ -692,7 +704,7 @@ namespace src.player return; } - if (randomSkill.Display) + if (randomSkill.Display && Config.LoadedConfig.YourSkillChatInfo) SkillUtils.PrintToChat(player, $"{ChatColors.DarkRed}{player.GetSkillName(randomSkill.Skill)}{ChatColors.Lime}: {player.GetSkillDescription(randomSkill.Skill)}", false); skillPlayer.Skill = randomSkill.Skill; diff --git a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs index 418ff40..7a110fd 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs @@ -26,7 +26,7 @@ namespace src.player private static void OnMapStart(string mapName) { Instance.GameRules = null; - Event.staticSkills.Clear(); + Event.OnMapChange(); } private static void InitializeGameRules() @@ -41,7 +41,7 @@ namespace src.player { if (Instance?.GameRules == null || Instance?.GameRules?.Handle == IntPtr.Zero) InitializeGameRules(); - else if (Instance != null && Config.LoadedConfig.FlashingHtmlHudFix) + else if (Instance != null && Config.LoadedConfig.FlashingHtmlHudFix && !Instance.GameRules.WarmupPeriod) Instance.GameRules.GameRestart = Instance.GameRules?.RestartRoundTime < Server.CurrentTime; } diff --git a/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs b/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs index 01ae376..6abc359 100644 --- a/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs +++ b/jRandomSkills - SRC Files/src/player/skills/AreaReaper.cs @@ -29,7 +29,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -45,7 +45,7 @@ namespace src.player.skills if (bombTargets.Length == 2) { bombTargets[site].AcceptInput("Disable"); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}{player.GetTranslation("areareaper_site_disabled", (site == 0 ? 'A' : 'B'))}"); } else @@ -56,7 +56,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; SkillUtils.CreateMenu(player, [(player.GetTranslation("bombsite_a"), "a")], (player.GetTranslation("bombsite_b"), "b")); } diff --git a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs index 1126498..29541ec 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs @@ -44,7 +44,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -60,7 +60,7 @@ namespace src.player.skills } ResetMoney(enemy); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("bankrupt_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("bankrupt_enemy_info")); } @@ -69,7 +69,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs index 05f814a..8606e49 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs @@ -63,7 +63,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -79,7 +79,7 @@ namespace src.player.skills } SetUpPostProcessing(enemy); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("darkness_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("darkness_enemy_info")); } @@ -88,7 +88,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs index 65cc5f4..8fbd079 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs @@ -55,7 +55,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -71,7 +71,7 @@ namespace src.player.skills } deafPlayers.TryAdd(enemy, 0); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("deaf_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("deaf_enemy_info")); } @@ -80,7 +80,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Distancer.cs b/jRandomSkills - SRC Files/src/player/skills/Distancer.cs index 1e8965b..fbf9a42 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Distancer.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Distancer.cs @@ -29,11 +29,11 @@ namespace src.player.skills foreach (var player in distancerPlayers.Keys) { var playerInfo = jRandomSkills.Instance.SkillPlayer.FirstOrDefault(s => s.SteamID == player?.SteamID); - if (playerInfo == null) return; + if (playerInfo == null) continue; var playerPawn = player.PlayerPawn.Value; - if (playerPawn == null || !playerPawn.IsValid) return; - if (playerPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + if (playerPawn == null || !playerPawn.IsValid) continue; + if (playerPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) continue; string closetEnemy = "Bot"; double closetDistance = double.MaxValue; diff --git a/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs b/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs index 1ae6f58..74229f9 100644 --- a/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs +++ b/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs @@ -106,9 +106,14 @@ namespace src.player.skills if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return 0; Vector pos = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + SkillsInfo.GetValue(skillName, "distance")); - camera.Render = Color.FromArgb(0, 255, 255, 255); - camera.Teleport(pos, new QAngle(90, 0, 0)); - camera.DispatchSpawn(); + Server.NextFrame(() => + { + camera.SetModel("models/actors/ghost_speaker.vmdl"); + camera.Render = Color.FromArgb(0, 255, 255, 255); + camera.Teleport(pos, new QAngle(90, 0, 0)); + camera.DispatchSpawn(); + }); + cameras.AddOrUpdate(player.SteamID, (pawn.CameraServices!.ViewEntity.Raw, camera), (k, v) => (pawn.CameraServices!.ViewEntity.Raw, camera)); return camera.EntityHandle.Raw; } diff --git a/jRandomSkills - SRC Files/src/player/skills/Gambler.cs b/jRandomSkills - SRC Files/src/player/skills/Gambler.cs index 177d49a..51db253 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Gambler.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Gambler.cs @@ -28,7 +28,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -48,7 +48,7 @@ namespace src.player.skills playerInfo.Skill = skill.Skill; if (skill.Skill != skillName) playerInfo.SpecialSkill = skillName; - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; if (SkillsInfo.GetValue(skill.Skill, "disableOnFreezeTime") && SkillUtils.IsFreezeTime()) Instance?.AddTimer(Math.Max((float)(Event.GetFreezeTimeEnd() - DateTime.Now).TotalSeconds, 0), () => { @@ -72,7 +72,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var skills = GetSkills(player); var firstSkill = skills[Instance.Random.Next(skills.Count)]; diff --git a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs index 31b2b71..d37ef7a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs @@ -57,7 +57,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -74,7 +74,7 @@ namespace src.player.skills glitchedPlayers.TryAdd(enemy, 0); enemy.ReplicateConVar("sv_disable_radar", "1"); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("glitch_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("glitch_enemy_info")); } @@ -83,7 +83,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs index f5bc9b0..ade14c5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jackal.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jackal.cs @@ -2,7 +2,6 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Modules.Utils; -using System.Drawing; using static src.jRandomSkills; using System.Collections.Concurrent; using src.utils; @@ -14,10 +13,12 @@ namespace src.player.skills private const Skills skillName = Skills.Jackal; private static readonly ConcurrentDictionary playersInAction = []; private static readonly ConcurrentDictionary> stepBeams = []; + private static readonly string particleName = "particles/ui/hud/ui_map_def_utility_trail.vpcf"; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + Instance.RegisterListener((ResourceManifest manifest) => manifest.AddResource(particleName)); } public static void NewRound() @@ -30,38 +31,6 @@ namespace src.player.skills playersInAction.Clear(); } - public static void OnTick() - { - if (Server.TickCount % 8 != 0) return; - foreach (var step in stepBeams.ToList()) - { - var player = step.Key; - if (!player.IsValid) - { - stepBeams.TryRemove(player, out _); - continue; - } - - var pawn = player.PlayerPawn.Value; - if (pawn == null || !pawn.IsValid || pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE || pawn.AbsOrigin == null) continue; - - var beams = step.Value; - Vector lastBeamVector = (beams != null && beams.Count > 0 && beams.Last() != null) - ? beams.Last().EndPos : pawn.AbsOrigin; - - var newBeam = CreateBeamStep(step.Key.Team, lastBeamVector, pawn.AbsOrigin); - if (newBeam != null) - step.Value.Enqueue(newBeam); - - if (beams?.Count >= SkillsInfo.GetValue(skillName, "maxStepBeam")) - { - if (beams.TryPeek(out var beam)) - beam.AcceptInput("Kill"); - step.Value.TryDequeue(out _); - } - } - } - public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) { foreach( var (info, player) in infoList) @@ -85,23 +54,27 @@ namespace src.player.skills } } - public static CBeam? CreateBeamStep(CsTeam team, Vector start, Vector stop) + public static void CreatePlayerTrail(CCSPlayerPawn playerPawn) { - CBeam beam = Utilities.CreateEntityByName("beam")!; - if (beam == null) return null; + if (playerPawn == null || !playerPawn.IsValid || playerPawn.AbsOrigin == null) return; - beam.DispatchSpawn(); - if (!beam.IsValid) return null; + CParticleSystem particle = Utilities.CreateEntityByName("info_particle_system")!; + if (particle == null) return; - beam.Render = team == CsTeam.Terrorist ? Color.FromArgb(100, 255, 165, 0) : Color.FromArgb(100, 173, 216, 230); - beam.Width = 2.0f; - beam.EndWidth = 2.0f; - beam.Teleport(start); + particle.EffectName = particleName; + particle.StartActive = true; - beam.EndPos.X = stop.X; - beam.EndPos.Y = stop.Y; - beam.EndPos.Z = stop.Z; - return beam; + particle.Teleport(playerPawn.AbsOrigin); + particle.DispatchSpawn(); + + particle.AcceptInput("SetParent", playerPawn, particle, "!activator"); + particle.AcceptInput("Start"); + + Instance.AddTimer(3f, () => { + if (particle != null && particle.IsValid) + particle.AcceptInput("Kill"); + CreatePlayerTrail(playerPawn); + }); } public static void EnableSkill(CCSPlayerController player) @@ -110,7 +83,10 @@ namespace src.player.skills playersInAction.TryAdd(player.SteamID, 0); foreach (var _player in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot && !p.IsHLTV && p.PawnIsAlive && p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist)) if (!stepBeams.ContainsKey(_player)) + { stepBeams.TryAdd(_player, []); + CreatePlayerTrail(player.PlayerPawn.Value); + } } public static void DisableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs index 313d1b6..49c8589 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs @@ -52,7 +52,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -69,7 +69,7 @@ namespace src.player.skills jammedPlayers.TryAdd(enemy, 0); SetCrosshair(enemy, false); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("jammer_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("jammer_enemy_info")); } @@ -88,7 +88,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs index f40f4bb..56eaefd 100644 --- a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs @@ -63,7 +63,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -79,7 +79,7 @@ namespace src.player.skills } bannedPlayers.AddOrUpdate(enemy.PlayerPawn.Value, 0, (k, v) => 0); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("jumpban_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("jumpban_enemy_info")); } @@ -88,7 +88,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs index cb2b935..f00adfb 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs @@ -44,7 +44,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -60,7 +60,7 @@ namespace src.player.skills } SwapHealth(player, enemy); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("lifeswap_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("lifeswap_enemy_info")); } @@ -69,7 +69,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs index e09ab61..0fca573 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs @@ -55,7 +55,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -75,7 +75,7 @@ namespace src.player.skills enemy.DesiredFOV = SkillsInfo.GetValue(skillName, "customFOV"); Utilities.SetStateChanged(enemy, "CBasePlayerController", "m_iDesiredFOV"); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("magnifier_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("magnifier_enemy_info")); } @@ -84,7 +84,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs index ccaed58..a084538 100644 --- a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs @@ -44,7 +44,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -60,7 +60,7 @@ namespace src.player.skills } SwapMoney(player, enemy); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("moneyswap_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("moneyswap_enemy_info")); } @@ -69,7 +69,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/Poison.cs b/jRandomSkills - SRC Files/src/player/skills/Poison.cs index 775ca85..3f70751 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Poison.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Poison.cs @@ -56,7 +56,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -72,7 +72,7 @@ namespace src.player.skills } poisonedPlayers.TryAdd(enemy, 0); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("poison_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("poison_enemy_info")); } @@ -81,7 +81,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs index 92bb244..ee75d11 100644 --- a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs @@ -64,7 +64,7 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) return; - if (playerInfo.SkillChance == 1) + if (playerInfo.SkillUsed) { player.PrintToChat($" {ChatColors.Red}{player.GetTranslation("areareaper_used_info")}"); return; @@ -81,7 +81,7 @@ namespace src.player.skills bannedPlayers.TryAdd(enemy.SteamID, 0); CheckWeapon(enemy); - playerInfo.SkillChance = 1; + playerInfo.SkillUsed = true; player.PrintToChat($" {ChatColors.Green}" + player.GetTranslation("primaryban_player_info", enemy.PlayerName)); enemy.PrintToChat($" {ChatColors.Red}" + player.GetTranslation("primaryban_enemy_info")); } @@ -100,7 +100,7 @@ namespace src.player.skills { var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; - playerInfo.SkillChance = 0; + playerInfo.SkillUsed = false; var enemies = Utilities.GetPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && !p.IsBot && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); if (enemies.Length > 0) diff --git a/jRandomSkills - SRC Files/src/player/skills/RichBoy.cs b/jRandomSkills - SRC Files/src/player/skills/RichBoy.cs index bbad6db..25116c4 100644 --- a/jRandomSkills - SRC Files/src/player/skills/RichBoy.cs +++ b/jRandomSkills - SRC Files/src/player/skills/RichBoy.cs @@ -29,7 +29,6 @@ namespace src.player.skills var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo == null) return; AddMoney(player, -(int)(playerInfo.SkillChance ?? 0)); - playerInfo.SkillChance = 0; } private static void AddMoney(CCSPlayerController player, int money) diff --git a/jRandomSkills - SRC Files/src/player/skills/Spectator.cs b/jRandomSkills - SRC Files/src/player/skills/Spectator.cs index 3940508..83c31a5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Spectator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Spectator.cs @@ -104,10 +104,14 @@ namespace src.player.skills var pos = pawn.AbsOrigin - SkillUtils.GetForwardVector(pawn.EyeAngles) * SkillsInfo.GetValue(skillName, "distance"); pos.Z += pawn.ViewOffset.Z; - camera.Render = Color.FromArgb(0, 255, 255, 255); - camera.Teleport(pos, new QAngle(0, pawn.EyeAngles.Y, 0)); - camera.DispatchSpawn(); - camera.AcceptInput("SetParent", pawn, pawn, "!activator"); + Server.NextFrame(() => + { + camera.SetModel("models/actors/ghost_speaker.vmdl"); + camera.Render = Color.FromArgb(0, 255, 255, 255); + camera.Teleport(pos, new QAngle(0, pawn.EyeAngles.Y, 0)); + camera.DispatchSpawn(); + camera.AcceptInput("SetParent", pawn, pawn, "!activator"); + }); if (cameras.TryGetValue(player.SteamID, out var cameraInfo)) cameras.AddOrUpdate(player.SteamID, (cameraInfo.Item1, camera, pawn), (k, v) => (cameraInfo.Item1, camera, pawn)); diff --git a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs index 05bcfb6..f89d630 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs @@ -70,7 +70,8 @@ namespace src.player.skills { orginalCameraRaw = cameraInfo.Item1; newCameraRaw = cameraInfo.Item2.EntityHandle.Raw; - } else + } + else { orginalCameraRaw = pawn!.CameraServices!.ViewEntity.Raw; newCameraRaw = CreateCamera(player); @@ -95,11 +96,15 @@ namespace src.player.skills if (camera == null || !camera.IsValid) return 0; var pawn = player.PlayerPawn.Value; - camera.Render = Color.FromArgb(0, 255, 255, 255); - camera.Teleport(pawn!.AbsOrigin, pawn.EyeAngles); - camera.DispatchSpawn(); + Server.NextFrame(() => + { + camera.SetModel("models/actors/ghost_speaker.vmdl"); + camera.Render = Color.FromArgb(0, 255, 255, 255); + camera.Teleport(pawn!.AbsOrigin, pawn.EyeAngles); + camera.DispatchSpawn(); + }); - cameras.AddOrUpdate(player.SteamID, (pawn.CameraServices!.ViewEntity.Raw, camera), (v,k) => (pawn.CameraServices!.ViewEntity.Raw, camera)); + cameras.AddOrUpdate(player.SteamID, (pawn.CameraServices!.ViewEntity.Raw, camera), (v, k) => (pawn.CameraServices!.ViewEntity.Raw, camera)); return camera.EntityHandle.Raw; } diff --git a/jRandomSkills - SRC Files/src/utils/Config.cs b/jRandomSkills - SRC Files/src/utils/Config.cs index 5649ced..ea4d5f5 100644 --- a/jRandomSkills - SRC Files/src/utils/Config.cs +++ b/jRandomSkills - SRC Files/src/utils/Config.cs @@ -70,8 +70,9 @@ namespace src.utils public class SettingsModel { public int GameMode { get; set; } - public bool KillerSkillInfo { get; set; } - public bool TeamMateSkillInfo { get; set; } + public bool YourSkillChatInfo { get; set; } + public bool KillerSkillChatInfo { get; set; } + public bool TeamMateSkillChatInfo { get; set; } public bool SummaryAfterTheRound { get; set; } public bool DebugMode { get; set; } public string? AlternativeSkillButton { get; set; } @@ -91,8 +92,9 @@ namespace src.utils public SettingsModel() { GameMode = (int)GameModes.NoRepeat; - KillerSkillInfo = true; - TeamMateSkillInfo = true; + YourSkillChatInfo = true; + KillerSkillChatInfo = true; + TeamMateSkillChatInfo = true; SummaryAfterTheRound = true; DebugMode = true; AlternativeSkillButton = null; diff --git a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs index 4da1dc6..52690c8 100644 --- a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs +++ b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs @@ -81,10 +81,11 @@ namespace src.utils if (player == null || !player.IsValid) return; var playerPawn = player.PlayerPawn.Value; if (playerPawn == null || !playerPawn.IsValid || playerPawn.CBodyComponent == null || playerPawn.CBodyComponent.SceneNode == null) return; + if (scale <= 0) return; playerPawn.CBodyComponent.SceneNode.GetSkeletonInstance().Scale = scale; Utilities.SetStateChanged(playerPawn, "CBaseEntity", "m_CBodyComponent"); - Server.NextFrame(() => playerPawn.AcceptInput("SetScale", playerPawn, playerPawn, scale.ToString())); + Server.NextFrame(() => playerPawn.AcceptInput("SetScale", null, null, scale.ToString())); } public static void CreateHEGrenadeProjectile(Vector pos, QAngle angle, Vector vel, int teamNum) diff --git a/jRandomSkills - Server Files/gamedata/jRandomSkills.gamedata.json b/jRandomSkills - Server Files/gamedata/jRandomSkills.gamedata.json index d5325b2..1386717 100644 --- a/jRandomSkills - Server Files/gamedata/jRandomSkills.gamedata.json +++ b/jRandomSkills - Server Files/gamedata/jRandomSkills.gamedata.json @@ -2,8 +2,8 @@ "HEGrenadeProjectile_CreateFunc": { "signatures": { "library": "server", - "windows": "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 40 48 8B 6C 24", - "linux": "55 4C 89 C1 48 89 E5 41 57 49 89 FF 41 56 49 89" + "windows": "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B AC 24 ? ? ? ? 49 8B F8", + "linux": "55 4C 89 C1 48 89 E5 41 57 49 89 D7" } }, "Shoot_Secondary": { diff --git a/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll b/jRandomSkills - Server Files/plugins/!jRandomSkills/!jRandomSkills.dll index 7f06bff..09f8333 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/configs/config.json b/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/config.json index c301d81..5b216fe 100644 --- a/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/config.json +++ b/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/config.json @@ -1,7 +1,8 @@ { "GameMode": 3, - "KillerSkillInfo": true, - "TeamMateSkillInfo": true, + "YourSkillChatInfo": true, + "KillerSkillChatInfo": true, + "TeamMateSkillChatInfo": true, "SummaryAfterTheRound": true, "DebugMode": true, "AlternativeSkillButton": null, diff --git a/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/skillsInfo.json b/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/skillsInfo.json index fe549e8..c3ec575 100644 --- a/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/skillsInfo.json +++ b/jRandomSkills - Server Files/plugins/!jRandomSkills/configs/skillsInfo.json @@ -558,7 +558,7 @@ "DisableOnFreezeTime": false, "OnlyTeam": 0, "Color": "#f542ef", - "Active": true, + "Active": false, "Name": "Jackal" }, { diff --git a/readme.md b/readme.md index 449d57c..12e3ac2 100644 --- a/readme.md +++ b/readme.md @@ -316,6 +316,29 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.1.9 BETA + +- #### General: + - ###### Update the dependency to the latest version. + - ###### Signature update (jRandomSkills.gamedata.json). + - ###### FlashingHtmlHudFix is disabled during warm-up. + - ###### Fixed incorrect debug text display when using the command. + - ###### Improved the functionality of the !map command. + - ###### Added the `YourSkillChatInfo` option to the configuration to disable the description of your skill in chat. + - ###### Disabling player skill when changing maps. + - ###### More coming soon +- #### Skill improvements: + - ##### Third Eye: + - ###### Model added to camera. + - ##### Spectator: + - ###### Model added to camera. + - ##### Falcon Eye: + - ###### Model added to camera. + - ##### Jackal: + - ###### Temporarily disabled for rewrite. +
+
v1.1.8