Add ettv protocol support to etlded - ettv client can connect to etlded server and players can join and view the game.
* ettv demo recording is possible
* add cvar sv_etltv_maxslaves "Number of ettv slaves allowed to connect." - ettv_sv_maxslaves equivalent
* add cvar sv_etltv_password "Password for ettv slaves. Must be set, or no slaves will be able to connect." - ettv_password equivalent
* add cvar g_etltv_flags "Bitflag 1 and 2. 1 = prevent slaves from being kicked. 2 = grant shoutcaster status to slaves."
* removed CVAR_SERVERINFO from g_fixedphysics, g_fixedphysicsfps, g_pronedelay, g_floodProtection, sv_floodProtect, sv_userInfoFloodProtect. Server info is too long and can crash ettv slave so until etltv is a thing it needs to get shorter.
Add possibility for etlded to act as a client (ettv)
* add possibility for etlded to act as a client
* add command tv connect <ip> <masterpassword> (sv_etltv_maxslaves and sv_etltv_password must be set on master server)
* add command tv disconnect
* add command record <name> (optional) for recording tv demos
* add command stoprecord for stopping recording
* add command demo <name> for demo playback
* add command ff <seconds> command - fastforwarding demo (works similiar to timescale) stops on map_restart or can stop it with ff 0
* add cvar sv_etltv_autorecord <0/1> automatically record tv demos
* add cvar sv_etltv_autoplay <0/1> automatically play demos (only on specifically named demos from autorecording, fe. demo0001->demo0002 etc.)
* add cvar sv_etltv_clientname etltv client name
* demos are recorded into tvdemos folder with extension tv_84
* etpro tv demos are playable, best is to use ettv tvgame and start etlded with +fs_game etpro (put etpro tvgame into etpro mod folder). Need 2.6b client in order to watch
* slave server will not download missing files from master server, so need to make sure it has every pk3 it needs
* add cvar sv_etltv_delay <seconds> - setable only on etlded init, delays feed from master server
* add cvar sv_etltv_shownet - for network debugging
* disabled /scores command in tvgame because it can easily lag the server
* add parseEntitiesNum check to etlded for snapshot generation - current check doesn't seem to work at all (svs.nextSnapshotEntities), server will send on its own uncompressed snapshot if it detects that client will go over MAX_PARSE_ENTITIES
* add optional privatepassword argument to tv connect command. tv connect server masterpassword privatepassword
* add cvar sv_etltv_queue_ms (read only) for storing the amount of time till the game will start (backward compatible with etpro)
* various other general improvments to etltv
* players can connect to delayed slave server even before the game starts just like on ettv
* legacy cgame doesn't support higher than 64 sv_maxclients, notably CG_ParseFireteams uses cgs.maxclients which will break the game if it goes over 64.
* legacy ui doesn't support showing higher than 64 sv_maxclients servers in the browser, unless ui_serverBrowserSettings 4 is set on game init.
NOTE: lua works only for sv_pure 0 slave server because otherwise lua scripts cannot be read (in short because of extension whitelist in file system, might be not possible to properly fix)
* Fixed incorrect mods type in tvcmd_reference_t
* Refactored some if statements
* Removeed `g_mdx.c` from build
* Removed not needed or "incompatible" code
* Init r.ownerNum to ENTITYNUM_NONE for player entities
* Fixed and added `SpectatorAttackFollow` trace
* Removed CVAR_SERVERINFO flag from g_fixedphysics, g_fixedphysicsfps and g_pronedelay cvars
*`G_ETTV` gameexport is now only kept for ETTV compatibility
* Added `tvgamecommands` help info (/commands, excludes commands that are not available for currently running mod)
* Added possibility to intercept master server commands in lua (et_ClientCommand clientnum == -2), with this addition not natively supported mods could add support for their game commands fully in lua: client requests stats->lua sends requests to master server->intercept response->save/send over to client, or even auto updates without interaction with clients)
* Added tv ff console command (client only) to fast-forward demo by. NOTE: still cannot connect listen server as tv server although a lot of the tv server code is now compiled into client (too lazy to add DEDICATED guards and splitting a lot of the places with them is not something I like). This is also very unlikely to ever change because by design the connected tv server should be a spectator and preferably never move too.
* Moved configstring initialization to `SV_InitGameVM`, this means that now it is possible to look up configstrings during `GAME_INIT`. (not possible in ettv, so anything that relies on it won't work there)
* Parsed `CS_WARMUP` and `CS_WOLFINFO` on `GAME_INIT` and `GAME_CLIENT_COMMAND`
* Added `tvg_autoAction` cvar, bit values `AA_DEMORECORD 1 AA_STATS 2`. Autorecord start demo recording the same way cg_autoaction does with client demos (with the same name schema too), only difference as of now is that demo will not be stopped during intermission (client demos are round seperated because of this). Autostats controls if tv server will periodically send commands requesting stats.
* Improved handling of spawn points, especially if game is delayed the spawnpoint can end up being very wrong (improvement over etpro tvgame)
* Fixed animation files breaking mod loading on different mods than legacy
* Extract pmove code from `bg_pmove` to `tvg_pmove`
* Fixed various pmove prediction issues on mods like ETJump or ETPro
* Overwrited master server `CS_SVCVAR` configstring
* Properly shutdown server on tv disconnect
NOTE: `sv_etltv_autorecord 1` is equal to `cl_autorecord 1` and `tvg_autoAction & 1` is equal to `cg_autoaction & 1`. So sv_etltv_autorecord records everything, while tvg_autoAction starts at the warmup countdown or GS_PLAYING (but doesn't end on itermission so whatever is after will keep being recorded. It's not impossible to change in the future if wanted.