v1.2.4.b1

This commit is contained in:
ByDexter 2026-09-02 01:44:59 +03:00
parent dcf4020981
commit 12d04191f3
8 changed files with 48 additions and 7 deletions

View file

@ -782,6 +782,7 @@ namespace src.player
if (pawn.AbsOrigin == null || pawn.AbsRotation == null) return;
if (pawn.IsDefusing) return;
if (IsAimingAtPlantedBomb(player, pawn)) return;
Vector eyePos = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + pawn.ViewOffset.Z);
Vector endPos = eyePos + SkillUtils.GetForwardVector(pawn.EyeAngles) * 80;
@ -815,6 +816,35 @@ namespace src.player
}
}
private const float BombBlockRange = 100f;
private const float BombBlockCos = 0.7071f;
private static bool IsAimingAtPlantedBomb(CCSPlayerController player, CCSPlayerPawn pawn)
{
if (player.Team != CsTeam.CounterTerrorist) return false;
if (pawn.AbsOrigin == null) return false;
foreach (var bomb in Utilities.FindAllEntitiesByDesignerName<CPlantedC4>("planted_c4"))
{
if (bomb == null || !bomb.IsValid || bomb.AbsOrigin == null) continue;
if (!bomb.BombTicking || bomb.BombDefused) continue;
float dx = bomb.AbsOrigin.X - pawn.AbsOrigin.X;
float dy = bomb.AbsOrigin.Y - pawn.AbsOrigin.Y;
float dz = bomb.AbsOrigin.Z - (pawn.AbsOrigin.Z + pawn.ViewOffset.Z);
float distance = MathF.Sqrt(dx * dx + dy * dy + dz * dz);
if (distance > BombBlockRange || distance <= 0.01f) continue;
var forward = SkillUtils.GetForwardVector(pawn.EyeAngles);
float dot = (forward.X * dx + forward.Y * dy + forward.Z * dz) / distance;
if (dot >= BombBlockCos) return true;
}
return false;
}
private static HookResult BulletImpact(EventBulletImpact @event, GameEventInfo info)
{
lock (setLock)

View file

@ -183,8 +183,8 @@ namespace src.player.skills
Vector newPos = new(playerPawn.AbsOrigin.X, playerPawn.AbsOrigin.Y, playerPawn.AbsOrigin.Z + 30);
QAngle newAngle = new(playerPawn.AbsRotation.X, playerPawn.AbsRotation.Y, playerPawn.AbsRotation.Z);
emptyProp.Teleport(newPos, newAngle);
emptyProp.DispatchSpawn();
emptyProp.Teleport(newPos, newAngle);
Utilities.SetStateChanged(emptyProp, "CBaseEntity", "m_CBodyComponent");

View file

@ -127,8 +127,8 @@ namespace src.player.skills
Vector newPos = new(playerPawn.AbsOrigin.X, playerPawn.AbsOrigin.Y, playerPawn.AbsOrigin.Z + 30);
QAngle newAngle = new(playerPawn.AbsRotation.X, playerPawn.AbsRotation.Y, playerPawn.AbsRotation.Z);
emptyProp.Teleport(newPos, newAngle);
emptyProp.DispatchSpawn();
emptyProp.Teleport(newPos, newAngle);
Utilities.SetStateChanged(emptyProp, "CBaseEntity", "m_CBodyComponent");

View file

@ -156,8 +156,8 @@ namespace src.player.skills
Vector newPos = new(playerPawn.AbsOrigin.X, playerPawn.AbsOrigin.Y, playerPawn.AbsOrigin.Z + 30);
QAngle newAngle = new(playerPawn.AbsRotation.X, playerPawn.AbsRotation.Y, playerPawn.AbsRotation.Z);
emptyProp.Teleport(newPos, newAngle);
emptyProp.DispatchSpawn();
emptyProp.Teleport(newPos, newAngle);
Utilities.SetStateChanged(emptyProp, "CBaseEntity", "m_CBodyComponent");

View file

@ -114,7 +114,8 @@ namespace src.player.skills
(WeaponInfo[]? playerWeapon, bool playerC4) = GetWeapons(player);
(WeaponInfo[]? enemyWeapon, bool enemyC4) = GetWeapons(enemy);
if (playerWeapon == null || !playerWeapon.Any(w => weapons.Contains(w.Name)))
if (playerWeapon == null || !playerWeapon.Any(w => weapons.Contains(w.Name))
|| enemyWeapon == null || !enemyWeapon.Any(w => weapons.Contains(w.Name)))
{
skillInfo.FindedEnemy = true;
skillInfo.HaveWeapon = false;
@ -268,7 +269,12 @@ namespace src.player.skills
private static CCSPlayerController? GetRandomEnemy(CCSPlayerController player)
{
CCSPlayerController[] enemies = [.. PlayerManager.GetTickPlayers().FindAll(e => e.Team != player.Team && e.PlayerPawn?.Value?.Health > 0)];
CCSPlayerController[] enemies = [.. PlayerManager.GetTickPlayers().FindAll(e =>
e != null && e.IsValid
&& e.Team != player.Team && e.Team != CsTeam.Spectator && e.Team != CsTeam.None
&& e.LifeState == (byte)LifeState_t.LIFE_ALIVE
&& e.PlayerPawn?.Value != null && e.PlayerPawn.Value.IsValid
&& e.PlayerPawn.Value.Health > 0)];
if (enemies.Length == 0) return null;
return enemies[Instance.Random.Next(enemies.Length)];
}

View file

@ -148,10 +148,15 @@ namespace src.utils
if (ammo == 1) return;
uint weaponIndex = weapon.Value.Index;
jRandomSkills.Instance.AddTimer(.1f, () =>
{
if (weapon == null || !weapon.IsValid || weapon.Value == null || !weapon.Value.IsValid) return;
weapon.Value.Clip1 = 1;
var tracked = Utilities.GetEntityFromIndex<CBasePlayerWeapon>((int)weaponIndex);
if (tracked == null || !tracked.IsValid || tracked.DesignerName != itemString) return;
tracked.Clip1 = 1;
Utilities.SetStateChanged(tracked, "CBasePlayerWeapon", "m_iClip1");
}, TimerFlags.STOP_ON_MAPCHANGE);
}