From 9c4a0b687b0602c647b84f3f19e5676d76218f62 Mon Sep 17 00:00:00 2001 From: Juzlus Date: Tue, 27 Jan 2026 12:09:47 +0100 Subject: [PATCH] v1.1.9f --- .../Classes/WasdManager.cs | 4 +- WASDMenuAPI - SRC Files/WASDMenuAPI.cs | 8 +-- WASDMenuAPI - SRC Files/WASDMenuAPI.csproj | 2 +- .../!jRandomSkills.csproj | 6 +-- .../src/jRandomSkills.cs | 2 +- .../src/player/PlayerEvents.cs | 1 - .../src/player/PlayerOnTick.cs | 5 +- .../src/player/skills/Cypher.cs | 15 ++++-- .../src/player/skills/Earthquake.cs | 2 +- .../src/player/skills/Grenadier.cs | 1 + .../src/player/skills/Iana.cs | 51 ++++++++++++++++++- .../src/player/skills/RCMelon.cs | 4 +- .../src/player/skills/ToxicSmoke.cs | 8 +-- 13 files changed, 80 insertions(+), 29 deletions(-) diff --git a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs b/WASDMenuAPI - SRC Files/Classes/WasdManager.cs index 0055097..697a892 100644 --- a/WASDMenuAPI - SRC Files/Classes/WasdManager.cs +++ b/WASDMenuAPI - SRC Files/Classes/WasdManager.cs @@ -49,7 +49,9 @@ public class WasdManager : IWasdMenuManager public bool HasMenu(CCSPlayerController? player) { - return TryGetPlayer(player, out _); + if (TryGetPlayer(player, out var menuPlayer) && menuPlayer != null) + return menuPlayer.MainMenu != null; + return false; } public void UpdateActiveMenu(CCSPlayerController? player, Dictionary> list) diff --git a/WASDMenuAPI - SRC Files/WASDMenuAPI.cs b/WASDMenuAPI - SRC Files/WASDMenuAPI.cs index 74cf980..b1b1529 100644 --- a/WASDMenuAPI - SRC Files/WASDMenuAPI.cs +++ b/WASDMenuAPI - SRC Files/WASDMenuAPI.cs @@ -62,12 +62,8 @@ public class WASDMenuAPI } player.Buttons = player.Player.Buttons; - if(player.CenterHtml != "") - Server.NextFrame(() => - player.Player.PrintToCenterHtml(player.CenterHtml) - ); + if (!string.IsNullOrEmpty(player.CenterHtml)) + player.Player.PrintToCenterHtml(player.CenterHtml); } } - - } diff --git a/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj b/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj index 31757ff..d9c058f 100644 --- a/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj +++ b/WASDMenuAPI - SRC Files/WASDMenuAPI.csproj @@ -7,7 +7,7 @@ - + diff --git a/jRandomSkills - SRC Files/!jRandomSkills.csproj b/jRandomSkills - SRC Files/!jRandomSkills.csproj index d5dd289..2b2ff28 100644 --- a/jRandomSkills - SRC Files/!jRandomSkills.csproj +++ b/jRandomSkills - SRC Files/!jRandomSkills.csproj @@ -14,9 +14,9 @@ - - - + + + diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index 99636b7..1ad7ed5 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -27,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.9 BETA"; + public override string ModuleVersion => "1.1.9f"; public override void Load(bool hotReload) { diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index be5f5e5..b0e3b4b 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -3,7 +3,6 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Cvars; -using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.UserMessages; diff --git a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs index 515caaf..94099ae 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs @@ -27,10 +27,6 @@ namespace src.player { Instance.GameRules = null; Event.OnMapChange(); - - foreach (var entity in Utilities.GetAllEntities()) - if (entity.DesignerName == "post_processing_volume") - entity.AcceptInput("Kill"); } private static void InitializeGameRules() @@ -124,6 +120,7 @@ namespace src.player if (string.IsNullOrEmpty(skillLine)) return; if (player == null || !player.IsValid) return; + if (SkillUtils.HasMenu(player)) return; Event.UpdateSkillHUD(player, infoLine, skillLine, remainingLine, isDescription); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/Cypher.cs b/jRandomSkills - SRC Files/src/player/skills/Cypher.cs index 07625bc..3afc1fb 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Cypher.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Cypher.cs @@ -1,5 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Entities.Constants; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Utils; @@ -24,7 +25,7 @@ namespace src.player.skills public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + // SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); jRandomSkills.Instance.AddToManifest(cameraPropModel); jRandomSkills.Instance.AddToManifest(cameraViewModel); } @@ -124,6 +125,11 @@ namespace src.player.skills BlockWeapon(player.Player, player.CameraActive); pawn!.CameraServices!.ViewEntity.Raw = player.CameraActive && player.CameraView != null ? player.CameraView.EntityHandle.Raw : player.PlayerCameraRaw; Utilities.SetStateChanged(pawn, "CBasePlayerPawn", "m_pCameraServices"); + + if (player.CameraActive && player.CameraView != null) + { + SkillUtils.ApplyScreenColor(player.Player, 0, 0, 255, 20, 100, 1020); + } } private static CDynamicProp? CreateCameraProp(CCSPlayerController player) @@ -233,13 +239,14 @@ namespace src.player.skills CTraceFilter filter = new(playerPawn.Index, playerPawn.Index) { m_nObjectSetMask = 0xf, - m_nCollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER_MOVEMENT, - m_nInteractsWith = playerPawn.GetInteractsWith(), + m_nCollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PROJECTILE, + m_nInteractsWith = 8589946881, m_nInteractsExclude = 0, m_nBits = 11, m_bIterateEntities = true, m_bHitTriggers = false, - m_nInteractsAs = 0x40000 + m_nInteractsAs = 0x40000, + m_bOnlyHitIfHasPhysics = true }; filter.m_nHierarchyIds[0] = playerPawn.GetHierarchyId(); diff --git a/jRandomSkills - SRC Files/src/player/skills/Earthquake.cs b/jRandomSkills - SRC Files/src/player/skills/Earthquake.cs index 984a5ad..b14f758 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Earthquake.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Earthquake.cs @@ -15,7 +15,7 @@ namespace src.player.skills public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + // SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } public static void NewRound() diff --git a/jRandomSkills - SRC Files/src/player/skills/Grenadier.cs b/jRandomSkills - SRC Files/src/player/skills/Grenadier.cs index 8bb93e2..df4ce50 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Grenadier.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Grenadier.cs @@ -1,3 +1,4 @@ +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Entities.Constants; using CounterStrikeSharp.API.Modules.Utils; diff --git a/jRandomSkills - SRC Files/src/player/skills/Iana.cs b/jRandomSkills - SRC Files/src/player/skills/Iana.cs index 0108441..17f18b7 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Iana.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Iana.cs @@ -1,6 +1,7 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Entities.Constants; +using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Timers; using CounterStrikeSharp.API.Modules.Utils; @@ -21,7 +22,7 @@ namespace src.player.skills public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + // SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } public static void NewRound() @@ -200,6 +201,31 @@ namespace src.player.skills return !trace.DidHit(); } + private static float CalculateDamage(CCSPlayerController player, string weaponName, float damage, bool isHeadshot) + { + float calculatedDamage = damage; + + var weapon = Utilities.FindAllEntitiesByDesignerName(weaponName).FirstOrDefault(); + if (weapon == null) return calculatedDamage; + + var vdata = weapon.GetVData(); + if (vdata == null) return calculatedDamage; + + float penetration = vdata.ArmorRatio * .5f; + + if (isHeadshot) + { + calculatedDamage *= vdata.HeadshotMultiplier; + if (player.PawnHasHelmet) + calculatedDamage *= penetration; + } + else + if (player.PawnArmor > 0) + calculatedDamage *= penetration; + + return calculatedDamage; + } + public static void OnTakeDamage(DynamicHook h) { CEntityInstance param = h.GetParam(0); @@ -218,12 +244,33 @@ namespace src.player.skills var player = Utilities.GetPlayerFromSteamId(steamID); if (player == null) return; + float dealDamage = param2.Damage; + if (playersInfo.TryGetValue(player, out var playerSkill)) { + if (playerSkill.CloneProp != null && playerSkill.CloneProp.IsValid && playerSkill.CloneProp.AbsOrigin != null) + { + Vector pos = param2.DamagePosition; + Vector posCl = playerSkill.CloneProp.AbsOrigin; + + bool isHead = false; + float viewOffset = 63.27f; + float diff = 2f; + + if (pos.Z >= posCl.Z + viewOffset - diff) + isHead = true; + + float damage = param2.Damage; + string? weapon = param2.Ability?.Value?.DesignerName; + if (weapon != null) + dealDamage = CalculateDamage(player, weapon, damage, isHead); + } + KillClone(playerSkill); + var playerPawn = player.PlayerPawn.Value; if (playerPawn != null) - SkillUtils.TakeHealth(playerPawn, (int)param2.Damage); + SkillUtils.TakeHealth(playerPawn, (int)dealDamage); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/RCMelon.cs b/jRandomSkills - SRC Files/src/player/skills/RCMelon.cs index 7b1109b..98e17b2 100644 --- a/jRandomSkills - SRC Files/src/player/skills/RCMelon.cs +++ b/jRandomSkills - SRC Files/src/player/skills/RCMelon.cs @@ -23,7 +23,7 @@ namespace src.player.skills public static void LoadSkill() { - SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + // SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); Instance.AddToManifest(melonProp); } @@ -283,7 +283,7 @@ namespace src.player.skills public string PlayerModel { get; set; } } - public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#d0d930", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = true, bool needsTeammates = false, string requiredPermission = "", float cooldown = 30, float duration = 10) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission) + public class SkillConfig(Skills skill = skillName, bool active = false, string color = "#d0d930", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = true, bool needsTeammates = false, string requiredPermission = "", float cooldown = 30, float duration = 10) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission) { public float Cooldown { get; set; } = cooldown; public float Duration { get; set; } = duration; diff --git a/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs b/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs index 5add6c4..23a9df1 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs @@ -43,16 +43,18 @@ namespace src.player.skills if (player == null) return; players.TryAdd(player, 0); - Server.PrintToChatAll($"Enter: {player?.PlayerName}"); } public static void OnTriggerExit(CBaseTrigger trigger, CBaseEntity entity) { if (!trigger.Globalname.StartsWith(triggerName) || entity.DesignerName != "player") return; - var player = entity.As(); + + CCSPlayerPawn playerPawn = new(entity.Handle); + if (playerPawn == null || playerPawn.Controller?.Value == null) return; + CCSPlayerController player = playerPawn.Controller.Value.As(); if (player == null) return; + players.TryRemove(player, out _); - Server.PrintToChatAll($"Exit: {player?.PlayerName}"); } public static void OnEntitySpawned(CEntityInstance entity)