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
map mp/ctf_ns_streets
you'd need
map mp/ctf_ns_streets ; g_currentmapUrl
www.whatever.com/ctf_ns_streets.pk3)
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
case CA_CONNECTED
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
:)
-stu