Add ThirdEye door toggle and decoy ring config

This commit is contained in:
Juzlus 2026-08-10 04:18:16 +02:00
parent 38a7cb8c5c
commit 5c65f4ac71
8 changed files with 47 additions and 4 deletions

View file

@ -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;
}
}

View file

@ -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())

View file

@ -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
{

View file

@ -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();

View file

@ -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;