summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 16:01:36 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 16:01:36 +0100
commit606a5ca110574974861d31d35a10a53419c0e8c1 (patch)
tree20d1bde49f1ee4930bffc97e72ba6075199fe6b4 /CONTEXT.md
parentItems: fallen owned weapons count as ammo; fuse diagnostics (diff)
downloadhl2h-606a5ca110574974861d31d35a10a53419c0e8c1.tar.gz
hl2h-606a5ca110574974861d31d35a10a53419c0e8c1.zip
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.
Diffstat (limited to '')
-rw-r--r--CONTEXT.md18
1 files changed, 14 insertions, 4 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index d8fdb97..2cec0ad 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -228,6 +228,14 @@ vocabulary / decisions.
228 a chevron clamped to a 26 px margin; behind-the-camera targets use the 228 a chevron clamped to a 26 px margin; behind-the-camera targets use the
229 dot product with the view right vector. Toggle `ESP -> Off-screen arrows` 229 dot product with the view right vector. Toggle `ESP -> Off-screen arrows`
230 (`arrows=1`). 230 (`arrows=1`).
231- `world_to_screen` rejects non-finite projections and absurd magnitudes
232 (>1e7). A point on the view axis (e.g. directly below the player's feet)
233 can make `IVDebugOverlay::ScreenPosition` return NaN/huge values; casting
234 those to int corrupted the ISurface clip state and made the whole overlay
235 disappear for that frame.
236- Projectile radius rings are drawn independently of the centre marker, so a
237 grenade behind the camera/off-screen still shows its blast circle when any
238 part of the ring projects.
231- Map transitions: see below. 239- Map transitions: see below.
232 240
233## Camera / display 241## Camera / display
@@ -595,10 +603,12 @@ vocabulary / decisions.
595 HL2 `MAX_NORMAL_BATTERY` cap of 100, read from the server 603 HL2 `MAX_NORMAL_BATTERY` cap of 100, read from the server
596 `m_ArmorValue`. If the values cannot be read the filter fails open. 604 `m_ArmorValue`. If the values cannot be read the filter fails open.
597- A world weapon whose type is already in the local player's inventory is 605- A world weapon whose type is already in the local player's inventory is
598 reclassified as ammo (`SMG ammo`, `AR2 ammo`, ...). Inventory types come 606 reclassified as ammo (`SMG ammo`, `AR2 ammo`, ...). Owner handles are
599 from client weapon entities whose owner handle resolves to the local player 607 unreliable on this client (`m_hOwnerEntity`/`m_hOwner` resolve to -1), so
600 index; NPC-held weapons are ignored. Weapons the player does not own stay 608 the inventory mask is accumulated from every weapon type the player has
601 under the Weapons category. 609 held (client `m_hActiveWeapon`, with the server handle as fallback) since
610 the current local entity appeared. NPC-held weapons are therefore ignored.
611 Weapons the player does not own stay under the Weapons category.
602- Scans the client entity list every 100 ms and tags health, ammo, armor/suit, 612- Scans the client entity list every 100 ms and tags health, ammo, armor/suit,
603 world weapon pickups, the two supply-crate models and generic items. 613 world weapon pickups, the two supply-crate models and generic items.
604- Each tag is a colored marker with a name and optional distance, filtered by 614- Each tag is a colored marker with a name and optional distance, filtered by