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