i think i got you covered hex
assuming that you can pass the url of a specific file with the ftp/http cod you have in your client (i'm assuming you lifted something from lynx or a mozilla or whatever)
you need to implemnt 1 additional cvar that gets changed in the server's config for each map
so in the server's config instead of having
now that you've got that cvar in, check out "void CG_ParseServerinfo( void )" in cg_servercmds.c this is where the client reads all the server's relavant cvars and is where you can send the g_currenmapUrl to the client without having them load the map. of course you'd need a client side struct to store the information in. i don't think it's really nessicary to store it clientside in a cvar
i don't think we can automatically being downloading in the client via your http/ftp module because it seems to be in the engine and outside the scope of the sdk
i could be wrong
but, if the server keeps automatic downloading off, and sends the map url to every client that tries to connect, then the clients can simpling run a command (when/if the map load fails) like /getmap (or something) that would pass the url from g_currentmapUrl (now stored in a clientside struct) to your http/ftp module and begin the tansfer and perhaps do /reconnect automatically when it's done?
or, check outvoid UI_DrawConnectScreen( qboolean overlay )
this function does the screen drawing for when the engine starts it's download, but since it's at the correct time, maaaaybe in
you could perform the key sequence to break out of the download (i think it's escape) and start your tranfer module? i guess it'd work.
now, care to share with us how you got http/ftp working? i've looked at serveral of the smaller command line ftp clients and i've got some ideas but it'd be really helpful if you'd share it with us