Firstly, just to make everyone aware of the feature in KTX which moves selection of best weapon to the server:
https://github.com/deurk/ktx/wiki/Reliable-Weapon-Switching-(KTPRO)
This dates back to KTPRO days, and is especially useful for high-ping games. If the client selects best weapon to fire then when you pick up a new weapon, you have to wait a full round trip before it will fire (1/2 ping for the server to tell the client that you now have the weapon, 1/2 ping for your +attack to reach the server). Example given (time and time again) by BLooD_DoG is jumping on to LG on dm4, and having to wait to be able to fire it. Proxies helped with this in the past as if the last proxy (closest to the server) made the weapon selection then this reduced the delay.
The implementation above uses the reliable segment of the packet, which means the command will eventually get there but it might be delayed (you might see this if you are using mm2 and send a message just before firing). I've added a protocol extension to mvdsv & ezquake so that this data is sent with each movement packet instead. The advantages are that this then replaces standard scripts in ezquake ("weapon", "fire" etc), with no other changes to the config required. The downside is that (as with all protocol extensions), it won't work through qizmo, and will only work on upgraded servers (it will automatically switch back to client-side.
To try it out, get the latest ezQuake 3.6 and set "cl_pext_serversideweapon 1" before connecting to london.badplace.eu. To debug, you can "setinfo dev 1" and the server will send back info about what adjustments were made to your packets. It's also in the 3.6 internal server so if you prefer to play vs bots, it should work there too. Once connected you can set "cl_pext_serversideweapon 0" to turn it off and ezQuake should fall back to selecting the best weapon client-side.
This needs a bit of tidying up and with the 101 different ways people have to write their personal weaponscripts I'm expecting quite a few issues, but hopefully it's a step forward for playing on high-ping, with so many international matches happening these days.
https://github.com/deurk/ktx/wiki/Reliable-Weapon-Switching-(KTPRO)
This dates back to KTPRO days, and is especially useful for high-ping games. If the client selects best weapon to fire then when you pick up a new weapon, you have to wait a full round trip before it will fire (1/2 ping for the server to tell the client that you now have the weapon, 1/2 ping for your +attack to reach the server). Example given (time and time again) by BLooD_DoG is jumping on to LG on dm4, and having to wait to be able to fire it. Proxies helped with this in the past as if the last proxy (closest to the server) made the weapon selection then this reduced the delay.
The implementation above uses the reliable segment of the packet, which means the command will eventually get there but it might be delayed (you might see this if you are using mm2 and send a message just before firing). I've added a protocol extension to mvdsv & ezquake so that this data is sent with each movement packet instead. The advantages are that this then replaces standard scripts in ezquake ("weapon", "fire" etc), with no other changes to the config required. The downside is that (as with all protocol extensions), it won't work through qizmo, and will only work on upgraded servers (it will automatically switch back to client-side.
To try it out, get the latest ezQuake 3.6 and set "cl_pext_serversideweapon 1" before connecting to london.badplace.eu. To debug, you can "setinfo dev 1" and the server will send back info about what adjustments were made to your packets. It's also in the 3.6 internal server so if you prefer to play vs bots, it should work there too. Once connected you can set "cl_pext_serversideweapon 0" to turn it off and ezQuake should fall back to selecting the best weapon client-side.
This needs a bit of tidying up and with the 101 different ways people have to write their personal weaponscripts I'm expecting quite a few issues, but hopefully it's a step forward for playing on high-ping, with so many international matches happening these days.