diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-04 16:01:36 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-04 16:01:36 +0100 |
| commit | 606a5ca110574974861d31d35a10a53419c0e8c1 (patch) | |
| tree | 20d1bde49f1ee4930bffc97e72ba6075199fe6b4 /CONTEXT.md | |
| parent | Items: fallen owned weapons count as ammo; fuse diagnostics (diff) | |
| download | hl2h-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 'CONTEXT.md')
| -rw-r--r-- | CONTEXT.md | 18 |
1 files changed, 14 insertions, 4 deletions
| @@ -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 |
