diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-04 12:52:03 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-04 12:52:03 +0100 |
| commit | 669d6c37306ca728e64836b61e9e466020129f48 (patch) | |
| tree | 0061e6c9a289ff4912dbf44d2bc82b6d2244740a /CONTEXT.md | |
| parent | Props: forward DrawModel's modelOrigin argument (diff) | |
| download | hl2h-669d6c37306ca728e64836b61e9e466020129f48.tar.gz hl2h-669d6c37306ca728e64836b61e9e466020129f48.zip | |
ESP: render damage tags as small left-side labels
Draw ARM/VULN/IMM on the left edge of the box with a 10px font and a black
1px shadow, instead of full-size text above the name. The small font is a
second HFont created next to the 16px body font.
CONTEXT: document the DrawModel argument fix and the tag styling.
Diffstat (limited to '')
| -rw-r--r-- | CONTEXT.md | 14 |
1 files changed, 12 insertions, 2 deletions
| @@ -198,8 +198,10 @@ vocabulary / decisions. | |||
| 198 | - `VULNERABLE` — headcrab, antlion, manhack: punting them with the gravity | 198 | - `VULNERABLE` — headcrab, antlion, manhack: punting them with the gravity |
| 199 | gun / physics impact damage kills them. | 199 | gun / physics impact damage kills them. |
| 200 | - `NORMAL` — everything else. | 200 | - `NORMAL` — everything else. |
| 201 | - ESP draws `ARMORED` (orange), `VULN` (cyan) or `IMMUNE` (grey) above the | 201 | - ESP draws a small 10 px label on the left edge of the box with a black 1 px |
| 202 | name; toggle is `ESP → Damage tags` (`[esp] dmg=1`). | 202 | shadow: `ARM` (orange), `VULN` (cyan) or `IMM` (grey). Toggle is |
| 203 | `ESP → Damage tags` (`[esp] dmg=1`). The small font is a second `HFont` | ||
| 204 | created at glyph size 10 alongside the 16 px body font (`g_font_small`). | ||
| 203 | - Aimbot/silent aim/triggerbot/melee skip `IMMUNE` targets always and | 205 | - Aimbot/silent aim/triggerbot/melee skip `IMMUNE` targets always and |
| 204 | `ARMORED` targets unless the active weapon is the RPG | 206 | `ARMORED` targets unless the active weapon is the RPG |
| 205 | (`active_weapon_contains` for `rocket_launcher`/`rpg`). | 207 | (`active_weapon_contains` for `rocket_launcher`/`rpg`). |
| @@ -365,6 +367,14 @@ vocabulary / decisions. | |||
| 365 | `SetColorModulation(1,1,1)` *before* `DrawModel`. | 367 | `SetColorModulation(1,1,1)` *before* `DrawModel`. |
| 366 | Do not force `SetAlphaModulation` there: the earlier attempt produced | 368 | Do not force `SetAlphaModulation` there: the earlier attempt produced |
| 367 | error-material props and a material-system crash. | 369 | error-material props and a material-system crash. |
| 370 | - `DrawModel` takes seven arguments after `this`: results, info, boneToWorld, | ||
| 371 | flexWeights, flexDelayedWeights, `const Vector &modelOrigin` (arrives as a | ||
| 372 | pointer) and `flags`. The hook must forward all of them; omitting | ||
| 373 | `modelOrigin` shifts `flags` into its slot and leaves the real `flags` as | ||
| 374 | caller stack garbage, which corrupted roughly every other prop draw | ||
| 375 | (checkerboard / error-material props). Verified against `studiorender.so` | ||
| 376 | 0x83ad0: the callee reads `0x20(%ebp)` (modelOrigin) and `0x24(%ebp)` | ||
| 377 | (flags). `DrawModelStaticProp` takes info/modelToWorld/flags only. | ||
| 368 | - `prop_tint_update()` also writes `m_clrRender` on prop entities (dynamic | 378 | - `prop_tint_update()` also writes `m_clrRender` on prop entities (dynamic |
| 369 | props) as a secondary path; the netvar resolver rejects offset 0 (an | 379 | props) as a secondary path; the netvar resolver rejects offset 0 (an |
| 370 | embedded-table false positive) and only accepts 0x20..0x2000. | 380 | embedded-table false positive) and only accepts 0x20..0x2000. |
