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 /src/hl2h.h | |
| 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 '')
| -rw-r--r-- | src/hl2h.h | 7 |
1 files changed, 5 insertions, 2 deletions
| @@ -129,7 +129,7 @@ struct CUserCmd { | |||
| 129 | // engine constants | 129 | // engine constants |
| 130 | // --------------------------------------------------------------------------- | 130 | // --------------------------------------------------------------------------- |
| 131 | 131 | ||
| 132 | enum { IN_ATTACK = 1 << 0, IN_JUMP = 1 << 1, IN_DUCK = 1 << 2, IN_USE = 1 << 5 }; | 132 | enum { IN_ATTACK = 1 << 0, IN_JUMP = 1 << 1, IN_DUCK = 1 << 2, IN_USE = 1 << 5, IN_ATTACK2 = 1 << 11 }; |
| 133 | enum { FL_ONGROUND = 1 << 0, FL_DUCKING = 1 << 1, FL_INWATER = 1 << 9 }; | 133 | enum { FL_ONGROUND = 1 << 0, FL_DUCKING = 1 << 1, FL_INWATER = 1 << 9 }; |
| 134 | enum { MOVETYPE_WALK = 2, MOVETYPE_NOCLIP = 8, MOVETYPE_LADDER = 9 }; | 134 | enum { MOVETYPE_WALK = 2, MOVETYPE_NOCLIP = 8, MOVETYPE_LADDER = 9 }; |
| 135 | 135 | ||
| @@ -150,6 +150,7 @@ bool triggerbot_apply(CUserCmd *cmd); | |||
| 150 | bool silent_aim_apply(CUserCmd *cmd); | 150 | bool silent_aim_apply(CUserCmd *cmd); |
| 151 | bool melee_weapon_active(void *local_ent); | 151 | bool melee_weapon_active(void *local_ent); |
| 152 | bool melee_aimbot_apply(CUserCmd *cmd); | 152 | bool melee_aimbot_apply(CUserCmd *cmd); |
| 153 | bool spread_control_apply(CUserCmd *cmd, void *local_ent); | ||
| 153 | enum FeatureId { | 154 | enum FeatureId { |
| 154 | FEAT_BHOP = 0, | 155 | FEAT_BHOP = 0, |
| 155 | FEAT_ABH = 1, | 156 | FEAT_ABH = 1, |
| @@ -158,7 +159,8 @@ enum FeatureId { | |||
| 158 | FEAT_TRIGGERBOT = 4, | 159 | FEAT_TRIGGERBOT = 4, |
| 159 | FEAT_SILENTAIM = 5, | 160 | FEAT_SILENTAIM = 5, |
| 160 | FEAT_JUMPBUG = 6, | 161 | FEAT_JUMPBUG = 6, |
| 161 | FEAT_MELEE = 7 | 162 | FEAT_MELEE = 7, |
| 163 | FEAT_SPREAD = 8 | ||
| 162 | }; | 164 | }; |
| 163 | enum EspOption { | 165 | enum EspOption { |
| 164 | ESP_OPT_SHOW_NEUTRAL = 0, | 166 | ESP_OPT_SHOW_NEUTRAL = 0, |
| @@ -193,6 +195,7 @@ bool feature_bind_held(int feature); | |||
| 193 | bool esp_option(int opt); | 195 | bool esp_option(int opt); |
| 194 | bool bhop_autostrafe_enabled(); | 196 | bool bhop_autostrafe_enabled(); |
| 195 | bool jumpbug_assist_enabled(); | 197 | bool jumpbug_assist_enabled(); |
| 198 | bool spread_no_spread_enabled(); | ||
| 196 | unsigned aimbot_bone_mask(); | 199 | unsigned aimbot_bone_mask(); |
| 197 | int aimbot_smooth_step(); | 200 | int aimbot_smooth_step(); |
| 198 | bool aimbot_vischeck_enabled(); | 201 | bool aimbot_vischeck_enabled(); |
