Seems like this is somewhat intended behaviour;
I've setup a local server which has the additional
baseoa/speedyctf.pk3 and connected with a client without that file.
WARNING: You are missing some files referenced by the server:
baseoa/speedyctf.pk3
You might not be able to join the game
Go to the setting menu to turn on autodownload, or get the file elsewhere
Now searching for this message we find the following code
if ( !(cl_allowDownload->integer & DLF_ENABLE) )
{
// autodownload is disabled on the client
// but it's possible that some referenced files on the server are missing
if (FS_ComparePaks( missingfiles, sizeof( missingfiles ), qfalse ) )
{
// NOTE TTimo I would rather have that printed as a modal message box
// but at this point while joining the game we don't know wether we will successfully join or not
Com_Printf( "\nWARNING: You are missing some files referenced by the server:\n%s"
"You might not be able to join the game\n"
"Go to the setting menu to turn on autodownload, or get the file elsewhere\n\n", missingfiles );
}
}
The problem here is that a player will almost never see that warning, since the console will be spammed with loads of other text while connecting.
A missing map bsp is of course a reason not to be able to play.
If I remember correctly, it should be sane to convert this into an error. Additional pk3 files on the server, labeled as "loaded pk3s", are not required for autodownload (and will in fact never be autodownloaded. They will only be used if already present on the client). But those that are required, labeled "referenced pk3s", need to be downloaded (by definition only - e.g. referenced playermodels are not really a requirement to be able to play) and cause above warning.
Index: code/client/cl_main.c
===================================================================
--- code/client/cl_main.c (revision 2318)
+++ code/client/cl_main.c (working copy)
@@ -2262,9 +2262,7 @@
{
// NOTE TTimo I would rather have that printed as a modal message box
// but at this point while joining the game we don't know wether we will successfully join or not
- Com_Printf( "\nWARNING: You are missing some files referenced by the server:\n%s"
- "You might not be able to join the game\n"
- "Go to the setting menu to turn on autodownload, or get the file elsewhere\n\n", missingfiles );
+ Com_Error( ERR_DROP, "You are missing files referenced by the server:\n%s\n", missingfiles );
}
}
else if ( FS_ComparePaks( clc.downloadList, sizeof( clc.downloadList ) , qtrue ) ) {
I did a quick test with one loaded pk3 and one referenced pk3 (both in baseoa/) and only the latter one was correctly being downloaded when downloads were enabled. With disabled downloads the client disconnected and displayed a proper error message.
Anything which is not in baseoa/ counts as being referenced and is thus required to join the server. This is the only real difference to the current behaviour. While you can currently have downloads disabled on the client and play on a server if you have the required map pk3s but not additional playermodels (which results in the warning being printed), with the patch the client would disconnect, since it now requires to have the playermodels as well (if they are referenced, i.e. in mymod/ or similar).
Due to this problem I do not recommend using this patch (it would require extending the sv_pure system to make it useful).
Instead players should be presented with an options dialog to enable or disable autodownloads on first launch of the game.