Got some spare time, so made this little userscript:
http://userscripts.org/scripts/show/153714

Intended to help casters to go spectator mode and choose some POV automatically. Also reconnects to server automatically on errors like infamous "Invalid .PK3 files referenced". Does not reconnect when you are disconnected manually or was kicked. Doesn't go spectator if you are already playing.

Made this because was annoyed by casters who forget to change POV and leave viewers to watch QuakeLive default menu while the game is on.

Workflow:
* set _qlspec_active to 1 to activate (helps to change between speccing and playing)
* when you are connecting to server, you become a spectator instantly
* one second later POV is changed to someone playing on the server (or in five seconds, depends on current situation)
* if you receive error on connecting to the server, which is not about you're kicked or manual disconnection, issues "reconnect" command immediately
* remembers if you are a spectator, so when the map changed, or game state goes from warmup to actual play, POV activated automatically
* if you enter the game, doesn't go to spectator mode on game state or level change (i.e. your player experience is not changed, only spectating affected)

Usage:

Install this user script via qlhm using number 153714, add following lines to your QuakeLive config and that's all.

Set _qlspec_nextpovtime to number of seconds until the next player pov is selected on beginning of a game. For example, seta _qlspec_nextpovtime 7 will result in 7 seconds delay to select second player after first was spectated. Set it to zero to disable this functionality.

If you don't add these commands to your config, automatic reconnection on errors works anyway.

seta _qlspec_vars "cg_compmode 1; cg_comphud 1;"
seta _qlspec_do "vstr _qlspec_vars; wait; team s;"
seta _qlspec_pov "vstr _qlspec_vars; wait; +attack; wait; -attack;"
seta _qlspec_nextpovtime "0"
seta _qlspec_active "1"


News / Changelog
2013-12-24
Standalone client compatibility.
Added _qlspec_active and _qlspec_nextpovtime variables.