diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-04 14:28:21 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-04 14:28:21 +0100 |
| commit | 714262bcf759a238daf906de16e7b204712a104f (patch) | |
| tree | d208ecfbbdb0f5f2f27aa888c806e38198ad1d52 /CONTEXT.md | |
| parent | Remove gamma slider; keep HDR brightness (diff) | |
| download | hl2h-714262bcf759a238daf906de16e7b204712a104f.tar.gz hl2h-714262bcf759a238daf906de16e7b204712a104f.zip | |
Add usable item filter, projectile ESP and gravity-gun melee
- Items: "Only if usable" hides health tags at full health and armor at full
suit. Health ceiling is the server player's m_iMaxHealth; armor uses the
server m_ArmorValue against HL2's 100 cap. Fails open when unreadable.
- Projectiles: new Visuals feature/card for thrown grenades, RPG rockets,
helicopter bombs and AR2 balls. Fuse from server m_flDetonateTime vs engine
time; radius from m_DmgRadius with per-type fallback; optional 24-segment
radius ring and FRAG timer label.
- Melee: the killbot now handles the gravity gun as well; only VULNERABLE
targets, 1200-unit range, primary attack to launch the held object, and no
aim-punch compensation because the launch uses EyeVectors.
- Server/netvars: m_ArmorValue, m_flDetonateTime, m_DmgRadius.
Diffstat (limited to 'CONTEXT.md')
| -rw-r--r-- | CONTEXT.md | 42 |
1 files changed, 35 insertions, 7 deletions
| @@ -310,10 +310,16 @@ vocabulary / decisions. | |||
| 310 | 310 | ||
| 311 | ## Melee killbot | 311 | ## Melee killbot |
| 312 | 312 | ||
| 313 | - Active only while the local player's active weapon is the crowbar. The | 313 | - Active only while the local player's active weapon is the crowbar or the |
| 314 | client `m_hActiveWeapon` handle is used first; if it is missing, the | 314 | gravity gun. The client `m_hActiveWeapon` handle is used first; if it is |
| 315 | authoritative server `m_hActiveWeapon` handle (0x824) is used to get the | 315 | missing, the authoritative server `m_hActiveWeapon` handle (0x824) is used |
| 316 | weapon entity index. | 316 | to get the weapon entity index. |
| 317 | - With the gravity gun, only `VULNERABLE` targets (headcrab, antlion, | ||
| 318 | manhack) are selected, the range is 1200 units, and the attack button is | ||
| 319 | `IN_ATTACK`: the primary attack launches a held object along | ||
| 320 | `EyeVectors()`. No aim-punch compensation is applied there (EyeVectors does | ||
| 321 | not add punch); the crowbar path keeps it. Without a held object the primary | ||
| 322 | is a short physics punch. | ||
| 317 | - Map transitions often switch the active weapon away from the crowbar. The | 323 | - Map transitions often switch the active weapon away from the crowbar. The |
| 318 | state change is logged as `melee: active ... crowbar=0/1` (normal log), and | 324 | state change is logged as `melee: active ... crowbar=0/1` (normal log), and |
| 319 | a one-time toast says to equip the crowbar. If the client weapon model is | 325 | a one-time toast says to equip the crowbar. If the client weapon model is |
| @@ -328,9 +334,9 @@ vocabulary / decisions. | |||
| 328 | movement keys are rotated with `preserve_movement`, and the rendered view is | 334 | movement keys are rotated with `preserve_movement`, and the rendered view is |
| 329 | restored immediately and at `FRAME_RENDER_START` (same silent-aim path). | 335 | restored immediately and at `FRAME_RENDER_START` (same silent-aim path). |
| 330 | This gives a 360-degree silent melee attack. | 336 | This gives a 360-degree silent melee attack. |
| 331 | - While the crowbar is active and the killbot feature is on, the gun aimbot, | 337 | - While either melee weapon is active and the killbot feature is on, the gun |
| 332 | triggerbot and silent aim are skipped to avoid fighting over the usercmd | 338 | aimbot, triggerbot and silent aim are skipped to avoid fighting over the |
| 333 | view. | 339 | usercmd view. |
| 334 | - Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are | 340 | - Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are |
| 335 | ignored). | 341 | ignored). |
| 336 | 342 | ||
| @@ -583,6 +589,11 @@ vocabulary / decisions. | |||
| 583 | ## Valuable items | 589 | ## Valuable items |
| 584 | 590 | ||
| 585 | - Visuals feature; Active is on by default and unbound (always-on). | 591 | - Visuals feature; Active is on by default and unbound (always-on). |
| 592 | - "Only if usable" (`[items] usable=1`) hides health pickups when the local | ||
| 593 | player is at full health and armor pickups at full suit. The health ceiling | ||
| 594 | is the server player's `m_iMaxHealth` (not a hardcoded 100); armor uses the | ||
| 595 | HL2 `MAX_NORMAL_BATTERY` cap of 100, read from the server | ||
| 596 | `m_ArmorValue`. If the values cannot be read the filter fails open. | ||
| 586 | - Scans the client entity list every 100 ms and tags health, ammo, armor/suit, | 597 | - Scans the client entity list every 100 ms and tags health, ammo, armor/suit, |
| 587 | world weapon pickups, the two supply-crate models and generic items. | 598 | world weapon pickups, the two supply-crate models and generic items. |
| 588 | - Each tag is a colored marker with a name and optional distance, filtered by | 599 | - Each tag is a colored marker with a name and optional distance, filtered by |
| @@ -601,6 +612,23 @@ vocabulary / decisions. | |||
| 601 | item crates. The item scan falls back to the server entity's model index | 612 | item crates. The item scan falls back to the server entity's model index |
| 602 | (`server_model_index`) to recover the model name. | 613 | (`server_model_index`) to recover the model name. |
| 603 | 614 | ||
| 615 | ## Projectile ESP | ||
| 616 | |||
| 617 | - Visuals feature `g_projectiles` (`[projectiles]`, Active on, unbound). | ||
| 618 | - Scans the client entity list every 100 ms for world-model `w_grenade`, | ||
| 619 | `w_missile*`, `helicopter_bomb` and `combineball`. Weapon entities are | ||
| 620 | excluded by class (`...weapon...`); thrown grenades are recognised by | ||
| 621 | `CGrenadeFrag`-style class names or by an owner handle. | ||
| 622 | - Fuse: `CBaseGrenade::m_flDetonateTime` is not networked, so it is read from | ||
| 623 | the server entity datamap (`FIELD_TIME`) and compared with | ||
| 624 | `IVEngineClient::Time()` (slot 14). RPG rockets have no fuse. | ||
| 625 | - Blast radius: networked client `m_DmgRadius` when available, server | ||
| 626 | `m_DmgRadius` (`FIELD_FLOAT`) as fallback, then 300/200/150/300 for | ||
| 627 | frag/RPG/AR2/bomb. | ||
| 628 | - Draws a small marker and a `FRAG 1.2s`-style label; the optional radius ring | ||
| 629 | is a 24-segment horizontal circle projected at the projectile height. | ||
| 630 | Toggles: Fuse timer, Blast radius. | ||
| 631 | |||
| 604 | ## Roadmap / TODO | 632 | ## Roadmap / TODO |
| 605 | 633 | ||
| 606 | - **Server-side spread/recoil control**: not planned; recoil and accuracy | 634 | - **Server-side spread/recoil control**: not planned; recoil and accuracy |
