diff options
| author | salmonik <salmonik@tuta.io> | 2026-10-27 15:22:19 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-10-27 15:22:19 +0100 |
| commit | 27c9ad766e1b1333922b4c14cbde9d9b77c8dab0 (patch) | |
| tree | 7c758c0d431a389cc3826495b4c6d20ca28c6530 /CONTEXT.md | |
| parent | Melee killbot: 360-degree crowbar silent aim (diff) | |
| download | hl2h-27c9ad766e1b1333922b4c14cbde9d9b77c8dab0.tar.gz hl2h-27c9ad766e1b1333922b4c14cbde9d9b77c8dab0.zip | |
Spread control: client-seed no-spread
HL2's CBaseEntity::FireBullets seeds its RNG from the usercmd random_seed
(m_bUseServerRandomSeed is false for HL2 weapons), so the client can select the
8-bit seed that puts CShotManipulator::ApplySpread closest to the center.
- New feature Spread control -> Active / No spread (both default on).
- Precompute the best seed for a single shot and for the shotgun's 8-shot
primary (first pellet accurate) and 12-shot secondary windows using the
engine's own RandomSeed/RandomFloat from libvstdlib.
- Set cmd->random_seed on attack commands; note_modified repairs the CRC.
- The random cone offset is neutralized, but the cone size, the pistol
accuracy penalty, server view punch and any damage falloff remain
server-side; stock HL2 has no distance damage falloff.
Diffstat (limited to 'CONTEXT.md')
| -rw-r--r-- | CONTEXT.md | 30 |
1 files changed, 28 insertions, 2 deletions
| @@ -111,6 +111,9 @@ HL2hake | |||
| 111 | Assist timing | 111 | Assist timing |
| 112 | Melee killbot | 112 | Melee killbot |
| 113 | Active | 113 | Active |
| 114 | Spread control | ||
| 115 | Active | ||
| 116 | No spread | ||
| 114 | ESP | 117 | ESP |
| 115 | Active | 118 | Active |
| 116 | Show neutral / healthbar / healthnum / name / skeleton / box / speed graph | 119 | Show neutral / healthbar / healthnum / name / skeleton / box / speed graph |
| @@ -186,6 +189,27 @@ Binds use SDL scancodes; mouse buttons are pseudo-scancodes 600..604. | |||
| 186 | - Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are | 189 | - Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are |
| 187 | ignored). | 190 | ignored). |
| 188 | 191 | ||
| 192 | ## Spread control | ||
| 193 | |||
| 194 | - HL2's `CBaseEntity::FireBullets` seeds its RNG from | ||
| 195 | `CBaseEntity::GetPredictionRandomSeed(info.m_bUseServerRandomSeed)`; HL2 | ||
| 196 | weapons leave `m_bUseServerRandomSeed` false, so the server uses the | ||
| 197 | client usercmd's `random_seed` (masked to 8 bits). This is the TF2-style | ||
| 198 | client-side seed hook. | ||
| 199 | - `Spread control -> No spread` precomputes, with the engine's own | ||
| 200 | `RandomSeed`/`RandomFloat`, the 8-bit seed whose | ||
| 201 | `CShotManipulator::ApplySpread` offset is smallest. It sets | ||
| 202 | `cmd->random_seed` on attack commands; `note_modified` repairs the CRC. | ||
| 203 | - Shotguns use consecutive seeds per pellet. The primary's first pellet is | ||
| 204 | `FIRE_BULLETS_FIRST_SHOT_ACCURATE`, so the table excludes it; the secondary | ||
| 205 | uses all 12. Separate best starting seeds are precomputed for 1, 8 and 12 | ||
| 206 | pellets. | ||
| 207 | - This attacks the random cone offset only. The cone size, the pistol's | ||
| 208 | `m_flAccuracyPenalty` growth, the server view punch added to | ||
| 209 | `GetAutoaimVector`, and any damage falloff are server-side state. In | ||
| 210 | single-player those can be written/hooked locally; stock HL2 has no | ||
| 211 | distance damage falloff. | ||
| 212 | |||
| 189 | ## Jumpbug | 213 | ## Jumpbug |
| 190 | 214 | ||
| 191 | - Automatic while falling when the predicted landing speed | 215 | - Automatic while falling when the predicted landing speed |
| @@ -237,6 +261,8 @@ Binds use SDL scancodes; mouse buttons are pseudo-scancodes 600..604. | |||
| 237 | 261 | ||
| 238 | - **GUI**: replace/augment the VGUI ISurface menu with an immediate-mode GUI | 262 | - **GUI**: replace/augment the VGUI ISurface menu with an immediate-mode GUI |
| 239 | (Dear ImGui or a custom implementation); needs a design grill first. | 263 | (Dear ImGui or a custom implementation); needs a design grill first. |
| 240 | - **Distance weapon spread thesis**: TBD — user will explain. Likely models | 264 | - **Server-side spread/recoil control**: optional single-player writes to the |
| 241 | weapon spread as a function of distance for aim/trigger decisions or visuals. | 265 | pistol accuracy penalty and view punch, and a true zero-cone hook if wanted. |
| 266 | - **Distance weapon spread thesis**: addressed by Spread control; stock HL2 | ||
| 267 | hitscan damage is range-independent, so distance efficiency is the cone. | ||
| 242 | 268 | ||
