Movement In Listen Servers

Simple vs Complex
If you’re only changing speed on input then the simple approach is a good route.

Otherwise having a function that checks movement states and actions and derives at a speed is the better approach.

e.g. Is crouched & ADS & Sprinting, or Is standing & ADS & Sprinting, or is prone etc.

Overall you want to set the speed on the client, then tell the server to set it. This will help ensure pings don’t factor into movement speed change delays.