This commit is contained in:
Juzlus 2025-09-12 02:24:04 +02:00
parent a7009be3e0
commit 898f86f888
137 changed files with 3553 additions and 3780 deletions

View file

@ -10,54 +10,38 @@ namespace jRandomSkills
public class Spectator : ISkill
{
private const Skills skillName = Skills.Spectator;
private static bool blocked = false;
private static readonly float distance = Config.GetValue<float>(skillName, "distance");
private static readonly Dictionary<ulong, (uint, CDynamicProp, CCSPlayerPawn)> cameras = [];
public static void LoadSkill()
{
SkillUtils.RegisterSkill(skillName, Config.GetValue<string>(skillName, "color"));
}
Instance.RegisterEventHandler<EventRoundEnd>((@event, info) =>
{
blocked = true;
foreach (var player in Utilities.GetPlayers())
if (cameras.TryGetValue(player.SteamID, out _))
DisableSkill(player);
public static void NewRound()
{
foreach (var camera in cameras)
camera.Value.Item2.Remove();
cameras.Clear();
}
foreach (var camera in cameras)
camera.Value.Item2.Remove();
cameras.Clear();
return HookResult.Continue;
});
public static void WeaponPickup(EventItemPickup @event)
{
var player = @event.Userid;
if (!Instance.IsPlayerValid(player)) return;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player?.SteamID);
if (playerInfo?.Skill != skillName) return;
Instance.RegisterEventHandler<EventRoundFreezeEnd>((@event, info) =>
{
blocked = false;
return HookResult.Continue;
});
Instance.RegisterEventHandler<EventItemPickup>((@event, info) =>
{
var player = @event.Userid;
if (!Instance.IsPlayerValid(player)) return HookResult.Continue;
var playerInfo = Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == player?.SteamID);
if (playerInfo?.Skill != skillName) return HookResult.Continue;
var pawn = player!.PlayerPawn.Value;
if (pawn == null || !pawn.IsValid || pawn.CameraServices == null) return HookResult.Continue;
if (cameras.TryGetValue(player.SteamID, out var cameraInfo) && cameraInfo.Item1 != pawn.CameraServices.ViewEntity.Raw)
BlockWeapon(player, true);
return HookResult.Continue;
});
Instance.RegisterListener<Listeners.OnTick>(OnTick);
var pawn = player!.PlayerPawn.Value;
if (pawn == null || !pawn.IsValid || pawn.CameraServices == null) return;
if (cameras.TryGetValue(player.SteamID, out var cameraInfo) && cameraInfo.Item1 != pawn.CameraServices.ViewEntity.Raw)
BlockWeapon(player, true);
}
public static void UseSkill(CCSPlayerController player)
{
var playerPawn = player.PlayerPawn.Value;
if (playerPawn?.CBodyComponent == null || blocked) return;
if (playerPawn?.CBodyComponent == null) return;
ChangeCamera(player);
}
@ -66,7 +50,7 @@ namespace jRandomSkills
ChangeCamera(player, true);
}
private static void OnTick()
public static void OnTick()
{
foreach (var player in Utilities.GetPlayers())
if (cameras.TryGetValue(player.SteamID, out var cameraInfo) && cameraInfo.Item2.IsValid)