From 606a5ca110574974861d31d35a10a53419c0e8c1 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 4 Nov 2026 16:01:36 +0100 Subject: Fix overlay-vanishing projections; ammo rule via held weapons - world_to_screen now rejects NaN/inf and absurd projections. A point on the view axis (directly below the feet) could produce NaN and corrupt the ISurface clip state, hiding the whole ESP for that frame. - Draw projectile radius rings even when the projectile centre is off-screen or behind the camera. - Owner netvars are -1 on this client, so the "owned weapon -> ammo" rule now accumulates the weapon types the player has actually held (active weapon, server fallback), reset when the local entity changes. --- CONTEXT.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'CONTEXT.md') diff --git a/CONTEXT.md b/CONTEXT.md index d8fdb97..2cec0ad 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -228,6 +228,14 @@ vocabulary / decisions. a chevron clamped to a 26 px margin; behind-the-camera targets use the dot product with the view right vector. Toggle `ESP -> Off-screen arrows` (`arrows=1`). +- `world_to_screen` rejects non-finite projections and absurd magnitudes + (>1e7). A point on the view axis (e.g. directly below the player's feet) + can make `IVDebugOverlay::ScreenPosition` return NaN/huge values; casting + those to int corrupted the ISurface clip state and made the whole overlay + disappear for that frame. +- Projectile radius rings are drawn independently of the centre marker, so a + grenade behind the camera/off-screen still shows its blast circle when any + part of the ring projects. - Map transitions: see below. ## Camera / display @@ -595,10 +603,12 @@ vocabulary / decisions. HL2 `MAX_NORMAL_BATTERY` cap of 100, read from the server `m_ArmorValue`. If the values cannot be read the filter fails open. - A world weapon whose type is already in the local player's inventory is - reclassified as ammo (`SMG ammo`, `AR2 ammo`, ...). Inventory types come - from client weapon entities whose owner handle resolves to the local player - index; NPC-held weapons are ignored. Weapons the player does not own stay - under the Weapons category. + reclassified as ammo (`SMG ammo`, `AR2 ammo`, ...). Owner handles are + unreliable on this client (`m_hOwnerEntity`/`m_hOwner` resolve to -1), so + the inventory mask is accumulated from every weapon type the player has + held (client `m_hActiveWeapon`, with the server handle as fallback) since + the current local entity appeared. NPC-held weapons are therefore ignored. + Weapons the player does not own stay under the Weapons category. - Scans the client entity list every 100 ms and tags health, ammo, armor/suit, world weapon pickups, the two supply-crate models and generic items. - Each tag is a colored marker with a name and optional distance, filtered by -- cgit v1.2.3