--- deliantra/server/socket/request.C 2007/03/14 15:44:47 1.77 +++ deliantra/server/socket/request.C 2007/03/18 03:05:41 1.82 @@ -134,6 +134,8 @@ { memset (&pl->ns->lastmap, 0, sizeof (pl->ns->lastmap)); + pl->ns->force_newmap = false; + if (pl->ns->newmapcmd == 1) pl->ns->send_packet ("newmap"); @@ -148,11 +150,17 @@ object *ob = pl->ob; char buf[MAX_BUF]; /* eauugggh */ - if (socket.current_map != ob->map) + if (socket.force_newmap) { + // force newmap is used for clients that do not redraw their map + // after image uploads. socket.current_map = ob->map; - clear_map (pl); + } + else if (socket.current_map != ob->map) + { + clear_map (pl); + socket.current_map = ob->map; if (socket.mapinfocmd) { @@ -578,11 +586,26 @@ "*** or it has been disabled. Face caching is mandatory\n" "*** so please enable it or use a newer client.\n" "***\n" - "*** I will proceed as if face caching were enabled.\n" - "\n" + "*** Look at your client preferences:\n" + "***\n" + "*** CFPlus: all known versions automatically enable the facecache.\n" + "*** cfclient: use the -cache commandline option.\n" + "*** cfclient: map will not redraw automatically (bug).\n" + "*** gcfclient: use -cache commandline option, or enable\n" + "*** gcfclient: Client=>Configure=>Map & Image=>Cache Images.\n" + "*** jcrossclient: your client is broken, use CFPlus or gcfclient.\n" + "***\n" "***\n", NDI_RED ); + + if (strstr (ns->version, "jcrossclient")) + /* let them, for now*/; + else + { + ns->flush (); + //ns->destroy (); + } //ns->facecache = true; } @@ -957,7 +980,7 @@ * it needs to send something back (vs just printing out a message) */ void -send_query (client *ns, uint8 flags, char *text) +send_query (client *ns, uint8 flags, const char *text) { ns->send_packet_printf ("query %d %s", flags, text ? text : ""); }