diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 8610e084..074eee28 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -33,26 +33,33 @@ void changemapserv(char *name, int mode, int download, int revision) // f bool loaded = load_world(name); if(download > 0) { - if(securemapcheck(name, false)) return; bool revmatch = hdr.maprevision == revision || revision == 0; - bool sizematch = maploaded == download || download < 10; - if(loaded && sizematch && revmatch) return; - bool getnewrev = autogetnewmaprevisions && revision > hdr.maprevision; - if(autogetmap || getnewrev) + if(watchingdemo) { - if(!loaded || getnewrev) getmap(); // no need to ask - else - { - s_sprintfd(msg)("map '%s' revision: local %d, provided by server %d", name, hdr.maprevision, revision); - alias("__getmaprevisions", msg); - showmenu("getmap"); - } + if(!revmatch) conoutf("\f3demo was played on map revision %d, you have map revision %d", revision, hdr.maprevision); } else { - if(!loaded || download < 10) conoutf("\"getmap\" to download the current map from the server"); - else conoutf("\"getmap\" to download a %s version of the current map from the server", - revision == 0 ? "different" : (revision > hdr.maprevision ? "newer" : "older")); + if(securemapcheck(name, false)) return; + bool sizematch = maploaded == download || download < 10; + if(loaded && sizematch && revmatch) return; + bool getnewrev = autogetnewmaprevisions && revision > hdr.maprevision; + if(autogetmap || getnewrev) + { + if(!loaded || getnewrev) getmap(); // no need to ask + else + { + s_sprintfd(msg)("map '%s' revision: local %d, provided by server %d", name, hdr.maprevision, revision); + alias("__getmaprevisions", msg); + showmenu("getmap"); + } + } + else + { + if(!loaded || download < 10) conoutf("\"getmap\" to download the current map from the server"); + else conoutf("\"getmap\" to download a %s version of the current map from the server", + revision == 0 ? "different" : (revision > hdr.maprevision ? "newer" : "older")); + } } } } diff --git a/source/src/server.cpp b/source/src/server.cpp index c804ce0e..7ab3e06e 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -2210,7 +2210,7 @@ void resetmap(const char *newname, int newmode, int newtime, bool notify) } copyrevision = copymapsize == smapstats.cgzsize ? smapstats.hdr.maprevision : 0; } - else sendservmsg("\f3server error: map not found - please start another map"); + else if(isdedicated) sendservmsg("\f3server error: map not found - please start another map"); if(notify) { // change map @@ -3064,7 +3064,11 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1 int gzs = getint(p); int rev = getint(p); if(!isdedicated || (smapstats.cgzsize == gzs && copyrevision == rev)) cl->isonrightmap = true; - else forcedeath(cl); + else + { + forcedeath(cl); + logger->writeline(log::info, "[%s] %s is on the wrong map: revision %d/%d", cl->hostname, cl->name, rev, gzs); + } QUEUE_MSG; break; }