-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Description
Details
Description:
On the x86-64 branch (Chromium), there is a networking desync when a weapon is given via ply:Give(). If the weapon is automatically selected by the engine, the SWEP:Deploy method and the PlayerSwitchWeapon hook are NOT triggered on the CLIENT side.
Environment:
- OS: Windows (both Client and Listen Server).
- Mode: Multiplayer (Listen Server or Dedicated) with 2+ players.
- Manually switching to another weapon and back "fixes" it and triggers the Client call.Critical Impact on Prediction:
This bug breaks movement prediction for high-latency players (tested with 750ms+ fakelag). Since the client doesn't runDeploy, it fails to initialize prediction tables (e.g., forSetupMove). This results in severe rubberbanding as the server moves the player but the client doesn't "predict" the movement locally.
Expected behavior:
The client should always fire Deploy and PlayerSwitchWeapon when a weapon becomes active, regardless of whether it was a manual switch or a server-side ply:Give().
Steps to reproduce
- Create a SWEP that prints "Deploy called" in
SWEP:Deployon both Server and Client. - Force give the weapon to a player via server-side script:
player:Give("weapon_class"). - Observe that the console message only appears on the Server.
Version of the game
2026.01.08
Beta
x86-64 beta
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels