diff --git a/src/network/netconnect.cpp b/src/network/netconnect.cpp index 65760659c..2d5570ebf 100644 --- a/src/network/netconnect.cpp +++ b/src/network/netconnect.cpp @@ -1382,10 +1382,13 @@ local void NetworkParseMenuPacket(const InitMessage *msg, int size) case ccs_connected: switch(msg->SubType) { + int pathlen; case ICMMap: // Server has sent us new map info - memcpy(ScenSelectFullPath, msg->u.MapPath, 256); - ScenSelectFullPath[255] = 0; + sprintf(ScenSelectFullPath, "%s/", FreeCraftLibPath); + pathlen = strlen(ScenSelectFullPath); + memcpy(ScenSelectFullPath+pathlen, msg->u.MapPath, 256); + ScenSelectFullPath[pathlen+255] = 0; if (NetClientSelectScenario()) { NetLocalState = ccs_badmap; break; @@ -1710,6 +1713,7 @@ local void NetworkParseMenuPacket(const InitMessage *msg, int size) // look up the host for (h = 0; h < PlayerMax-1; ++h) { if (Hosts[h].Host == NetLastHost && Hosts[h].Port == NetLastPort && Hosts[h].PlyNr) { + int pathlen; ServerSetupState.LastFrame[h] = FrameCounter; NetConnectForceDisplayUpdate(); @@ -1723,8 +1727,8 @@ local void NetworkParseMenuPacket(const InitMessage *msg, int size) // this code path happens until client acknoledges the map message.Type = MessageInitReply; message.SubType = ICMMap; // Send Map info to the client - // FIXME: Transmit (and receive!) relative to FreeCraftLibPath - memcpy(message.u.MapPath, ScenSelectFullPath, 256); + pathlen = strlen(FreeCraftLibPath) + 1; + memcpy(message.u.MapPath, ScenSelectFullPath+pathlen, 256); message.MapUID = htonl(ScenSelectPudInfo->MapUID); n = NetworkSendICMessage(NetLastHost, NetLastPort, &message); DebugLevel0Fn("Sending InitReply Message Map: (%d) to %d.%d.%d.%d:%d\n" _C_