From 1dd3a4d504e98b8d18f236cb1df1fea366ddc36e Mon Sep 17 00:00:00 2001 From: salmonik Date: Tue, 27 Oct 2026 15:49:54 +0100 Subject: Spread control: override the server FireBullets seed for the local player The installed 2024 server ignores the client usercmd random_seed and uses its own shot seed. Force the server's CBaseEntity::FireBullets RandomSeed call for the local player only: - hook the server.so RandomSeed GOT slot (R_386_JUMP_SLOT at 0xce1348); - read the FireBullets `this` from the caller frame and compare it with the local server player base; - replace the seed with the precomputed best single/shotgun window and step it per pellet; NPC shots and everything else pass through. - client prediction still uses the same chosen usercmd seed, so both sides agree on the spread pattern. --- src/hl2h.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/hl2h.h') diff --git a/src/hl2h.h b/src/hl2h.h index ef8e8d6..285b591 100644 --- a/src/hl2h.h +++ b/src/hl2h.h @@ -151,6 +151,8 @@ bool silent_aim_apply(CUserCmd *cmd); bool melee_weapon_active(void *local_ent); bool melee_aimbot_apply(CUserCmd *cmd); bool spread_control_apply(CUserCmd *cmd, void *local_ent); +int spread_best_seed(int pellets); +extern int g_spread_pellets; enum FeatureId { FEAT_BHOP = 0, FEAT_ABH = 1, -- cgit v1.2.3