v.1.1.7
This commit is contained in:
parent
a36fdbf92d
commit
04a4fdce0d
143 changed files with 3565 additions and 2344 deletions
|
|
@ -5,26 +5,26 @@ using CounterStrikeSharp.API.Core.Attributes;
|
|||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using jRandomSkills.src.player;
|
||||
using static jRandomSkills.jRandomSkills;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace jRandomSkills
|
||||
{
|
||||
public class Ninja : ISkill
|
||||
{
|
||||
private const Skills skillName = Skills.Ninja;
|
||||
private static readonly float idlePercentInvisibility = Config.GetValue<float>(skillName, "idlePercentInvisibility");
|
||||
private static readonly float duckPercentInvisibility = Config.GetValue<float>(skillName, "duckPercentInvisibility");
|
||||
private static readonly float knifePercentInvisibility = Config.GetValue<float>(skillName, "knifePercentInvisibility");
|
||||
private static readonly Dictionary<nint, float> invisibilityChanged = [];
|
||||
private static readonly Dictionary<ulong, List<uint>> invisibleEntities = [];
|
||||
private static readonly ConcurrentDictionary<nint, float> invisibilityChanged = [];
|
||||
private static readonly ConcurrentDictionary<ulong, List<uint>> invisibleEntities = [];
|
||||
private static readonly object setLock = new();
|
||||
|
||||
public static void LoadSkill()
|
||||
{
|
||||
SkillUtils.RegisterSkill(skillName, Config.GetValue<string>(skillName, "color"));
|
||||
SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue<string>(skillName, "color"));
|
||||
}
|
||||
|
||||
public static void NewRound()
|
||||
{
|
||||
invisibilityChanged.Clear();
|
||||
lock (setLock)
|
||||
invisibilityChanged.Clear();
|
||||
}
|
||||
|
||||
public static void WeaponEquip(EventItemEquip @event)
|
||||
|
|
@ -66,6 +66,9 @@ namespace jRandomSkills
|
|||
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
|
||||
if (playerInfo?.Skill == skillName)
|
||||
UpdateNinja(player);
|
||||
if (!player.PawnIsAlive)
|
||||
if (invisibleEntities.ContainsKey(player.SteamID))
|
||||
invisibleEntities.TryRemove(player.SteamID, out _);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -78,7 +81,7 @@ namespace jRandomSkills
|
|||
{
|
||||
SetPlayerVisibility(player, 0);
|
||||
SetWeaponVisibility(player, 0);
|
||||
invisibleEntities.Remove(player.SteamID);
|
||||
invisibleEntities.TryRemove(player.SteamID, out _);
|
||||
}
|
||||
|
||||
private static void UpdateNinja(CCSPlayerController? player)
|
||||
|
|
@ -97,18 +100,18 @@ namespace jRandomSkills
|
|||
float percentInvisibility = 0;
|
||||
|
||||
if (buttons.HasFlag(PlayerButtons.Duck))
|
||||
percentInvisibility += duckPercentInvisibility;
|
||||
percentInvisibility += SkillsInfo.GetValue<float>(skillName, "duckPercentInvisibility");
|
||||
if (activeWeapon != null && activeWeapon.DesignerName == "weapon_knife")
|
||||
percentInvisibility += knifePercentInvisibility;
|
||||
percentInvisibility += SkillsInfo.GetValue<float>(skillName, "knifePercentInvisibility");
|
||||
if (!buttons.HasFlag(PlayerButtons.Moveleft) && !buttons.HasFlag(PlayerButtons.Moveright) && !buttons.HasFlag(PlayerButtons.Forward) && !buttons.HasFlag(PlayerButtons.Back) && flags.HasFlag(PlayerFlags.FL_ONGROUND))
|
||||
percentInvisibility += idlePercentInvisibility;
|
||||
percentInvisibility += SkillsInfo.GetValue<float>(skillName, "idlePercentInvisibility");
|
||||
|
||||
SetWeaponVisibility(player, percentInvisibility);
|
||||
if (invisibilityChanged.TryGetValue(player.Handle, out float oldInvisibility))
|
||||
if (percentInvisibility == oldInvisibility)
|
||||
return;
|
||||
|
||||
invisibilityChanged[player.Handle] = percentInvisibility;
|
||||
invisibilityChanged.TryAdd(player.Handle, percentInvisibility);
|
||||
SetPlayerVisibility(player, percentInvisibility);
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +134,7 @@ namespace jRandomSkills
|
|||
|
||||
var color = Color.FromArgb(Math.Max(255 - (int)(255 * percentInvisibility * 2), 0), 255, 255, 255);
|
||||
|
||||
invisibleEntities.Remove(player.SteamID);
|
||||
invisibleEntities.TryRemove(player.SteamID, out _);
|
||||
if (color.A != 0) return;
|
||||
|
||||
foreach (var weapon in playerPawn.WeaponServices.MyWeapons)
|
||||
|
|
@ -144,12 +147,12 @@ namespace jRandomSkills
|
|||
items.Add(weapon.Index);
|
||||
}
|
||||
else
|
||||
invisibleEntities.Add(player.SteamID, [weapon.Index]);
|
||||
invisibleEntities.TryAdd(player.SteamID, [weapon.Index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#dedede", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, float idlePercentInvisibility = .3f, float duckPercentInvisibility = .3f, float knifePercentInvisibility = .3f) : Config.DefaultSkillInfo(skill, active, color, onlyTeam, needsTeammates)
|
||||
public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#dedede", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, float idlePercentInvisibility = .3f, float duckPercentInvisibility = .3f, float knifePercentInvisibility = .3f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates)
|
||||
{
|
||||
public float IdlePercentInvisibility { get; set; } = idlePercentInvisibility;
|
||||
public float DuckPercentInvisibility { get; set; } = duckPercentInvisibility;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue