From a92e01b6aff54ab812506a16863770fbf1d49a80 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 12 Jun 2019 16:45:44 +0300 Subject: [PATCH] (1256d7edc) Fixed servers using a local campaign save path sent by the client setupping the campaign. Closes #1564 --- .../BarotraumaClient/Source/Networking/GameClient.cs | 6 ++++-- .../BarotraumaServer/Source/Networking/GameServer.cs | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs index 4b910e119..bcf031886 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs @@ -2047,13 +2047,15 @@ namespace Barotrauma.Networking client.SendMessage(msg, NetDeliveryMethod.ReliableUnordered); } - public void SetupNewCampaign(Submarine sub, string savePath, string mapSeed) + public void SetupNewCampaign(Submarine sub, string saveName, string mapSeed) { + saveName = Path.GetFileNameWithoutExtension(saveName); + NetOutgoingMessage msg = client.CreateMessage(); msg.Write((byte)ClientPacketHeader.CAMPAIGN_SETUP_INFO); msg.Write(true); msg.WritePadBits(); - msg.Write(savePath); + msg.Write(saveName); msg.Write(mapSeed); msg.Write(sub.Name); msg.Write(sub.MD5Hash.Hash); diff --git a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs index 586e28a2e..6dbaf7cb0 100644 --- a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs @@ -728,7 +728,7 @@ namespace Barotrauma.Networking bool isNew = inc.ReadBoolean(); inc.ReadPadBits(); if (isNew) { - string savePath = inc.ReadString(); + string saveName = inc.ReadString(); string seed = inc.ReadString(); string subName = inc.ReadString(); string subHash = inc.ReadString(); @@ -743,7 +743,11 @@ namespace Barotrauma.Networking } else { - if (connectedClient.HasPermission(ClientPermissions.SelectMode)) MultiPlayerCampaign.StartNewCampaign(savePath, matchingSub.FilePath, seed); + string localSavePath = SaveUtil.CreateSavePath(SaveUtil.SaveType.Multiplayer, saveName); + if (connectedClient.HasPermission(ClientPermissions.SelectMode)) + { + MultiPlayerCampaign.StartNewCampaign(localSavePath, matchingSub.FilePath, seed); + } } } else