diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index 9e966c9..f1eaad9 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -10,6 +10,8 @@ using RayTraceAPI; using src.player.skills; using src.utils; using System.Collections.Concurrent; +using System.ComponentModel.Design; +using System.Security.Principal; using System.Text.RegularExpressions; using static CounterStrikeSharp.API.Core.Listeners; using static src.jRandomSkills; @@ -738,7 +740,15 @@ namespace src.player if (entity == null || !entity.IsValid) return; string designer = entity.DesignerName; - if (designer.Contains("door") || designer.Contains("button") || designer.Contains("weapon") || designer.Contains("blocker")) return; + + if (designer.Contains("door")) + { + if (playerInfo.Skill == Skills.ThirdEye && !ThirdEye.IsOrginalCamera(player)) + SkillUtils.ToogleDoor(entity, pawn); + return; + } + + if (designer.Contains("button") || designer.Contains("weapon") || designer.Contains("blocker")) return; } } diff --git a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs index 8f649af..74a0c02 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs @@ -1,9 +1,10 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Utils; -using System.Drawing; -using System.Collections.Concurrent; using src.utils; +using System.Collections.Concurrent; +using System.Drawing; namespace src.player.skills { @@ -44,6 +45,19 @@ namespace src.player.skills cameras.TryRemove(player.Index, out _); } + public static bool IsOrginalCamera(CCSPlayerController player) + { + if (player == null || !player.IsValid) return true; + + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) return true; + + if (cameras.TryGetValue(player.Index, out var cameraInfo) && cameraInfo.Item1 != 0) + return pawn?.CameraServices?.ViewEntity.Raw == cameraInfo.Item1; + + return true; + } + public static void OnTick() { foreach (var player in PlayerManager.GetTickPlayers()) diff --git a/jRandomSkills - SRC Files/src/utils/Config.cs b/jRandomSkills - SRC Files/src/utils/Config.cs index b523cf5..cf08970 100644 --- a/jRandomSkills - SRC Files/src/utils/Config.cs +++ b/jRandomSkills - SRC Files/src/utils/Config.cs @@ -107,6 +107,7 @@ namespace src.utils public string DisableHUDOnDeathPermission { get; set; } public bool DisableSkillsOnRoundEnd { get; set; } public int? CurseSkillPerPlayer { get; set; } + public bool ShowDecoyRing { get; set; } public WeaponPools Weapons { get; set; } public LanguageSystem LanguageSystem { get; set; } public HtmlHudCustomisation HtmlHudCustomisation { get; set; } @@ -139,6 +140,7 @@ namespace src.utils DisableHUDOnDeathPermission = "@jRandomSkills/death"; DisableSkillsOnRoundEnd = false; CurseSkillPerPlayer = null; + ShowDecoyRing = true; Weapons = new WeaponPools { diff --git a/jRandomSkills - SRC Files/src/utils/DecoyRing.cs b/jRandomSkills - SRC Files/src/utils/DecoyRing.cs index 5e33782..ee431bf 100644 --- a/jRandomSkills - SRC Files/src/utils/DecoyRing.cs +++ b/jRandomSkills - SRC Files/src/utils/DecoyRing.cs @@ -38,7 +38,7 @@ namespace src.utils public static void Show(Skills skill, uint id, Vector center, float radius) { - if (radius <= 0) return; + if (radius <= 0 || !Config.LoadedConfig.ShowDecoyRing) return; string key = MakeKey(skill, id); var ring = new Ring(); diff --git a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs index 295acc6..745e233 100644 --- a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs +++ b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs @@ -1099,6 +1099,22 @@ namespace src.utils manager.OpenMainMenu(player, menu); } + public static void ToogleDoor(CBaseEntity entity, CBasePlayerPawn pawn) + { + if (pawn == null || !pawn.IsValid) return; + if (entity == null || !entity.IsValid) return; + if (!entity.DesignerName.Contains("door")) return; + + var door = new CPropDoorRotating(entity.Handle); + if (door == null || !door.IsValid) return; + + if (door.DoorState == DoorState_t.DOOR_STATE_CLOSED || door.DoorState == DoorState_t.DOOR_STATE_CLOSING) + door.AcceptInput("use", pawn, door, "!activator"); + + else if (door.DoorState == DoorState_t.DOOR_STATE_OPEN || door.DoorState == DoorState_t.DOOR_STATE_OPENING) + door.AcceptInput("close"); + } + public static void SetTeamScores(short ctScore, short tScore, RoundEndReason roundEndReason) { if (jRandomSkills.Instance == null || jRandomSkills.Instance.GameRules == null) return; diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll index 8e95270..897e766 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll differ diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/configs/config.json b/jRandomSkills - Server Files/plugins/jRandomSkills/configs/config.json index 75e957a..debdac1 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/configs/config.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/configs/config.json @@ -22,6 +22,7 @@ "DisableHUDOnDeathPermission": "@jRandomSkills/death", "DisableSkillsOnRoundEnd": false, "CurseSkillPerPlayer": null, + "ShowDecoyRing": true, "Weapons": { "Rifle": [ "weapon_ak47", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index fa6d86b..124e82b 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll differ