public void addVessel(MultiplayerVessel vessel) { mpVessel.Add(this.name + ":" + vessel.vessel.GetInstanceID(), vessel); allVessels.Add(this.name + ":" + vessel.vessel.GetInstanceID()); notMyVessel.Add(vessel.vessel.GetHashCode()); }
public static void HandleMessage(NetIncomingMessage im, bool hostMessage = false) { ClientVesselRegister cvr = new ClientVesselRegister(); cvr.Decode(im); if (KSPMPlayer.isHost && hostMessage) { KSPClient kspClient = KSPClient.getClient(im.SenderConnection); if (kspClient.name == cvr.playerName && !KSPClient.hostVesselExist(kspClient.name, cvr.vesselName)) { kspClient.addVessel(cvr.vesselName); // DO SOME SANITATION OF PATH HERE KSPMPlayer.HostSendToAll(new ClientVesselRegister(cvr.vesselName, cvr.vInfo, cvr.playerName, new Vector3(cvr.positionX, cvr.positionY, cvr.positionZ), new Quaternion(cvr.rotationX, cvr.rotationY, cvr.rotationZ, cvr.rotationW)), im.SenderConnection); } } else { KSPMultiplayer.print("CREATING SHIT" + cvr.playerName + ".." + cvr.vesselName + "_V2.craft"); KSPMultiplayer.print("Hmm DOES THIS FILE EXIST? I THINK: " + File.Exists("Plugins/KSPMulti/TempFiles/" + cvr.playerName + ".." + cvr.vesselName + cvr.GetHashCode() + "_V2.craft")); FileStream fs = new FileStream("Plugins/KSPMulti/TempFiles/" + cvr.playerName + ".." + cvr.vesselName + cvr.GetHashCode() + "_V2.craft", FileMode.CreateNew); byte[] text = new UTF8Encoding(true).GetBytes(cvr.vInfo); fs.Write(text, 0, text.Length); fs.Close(); // Only way to ensure I dont have to rewrite a ton of decompiled shit from KSP. :( MultiplayerVessel aNewVessel = new MultiplayerVessel("./Plugins/KSPMulti/TempFiles/" + cvr.playerName + ".." + cvr.vesselName + cvr.GetHashCode() + "_V2.craft"); aNewVessel.vessel.SetPosition(new Vector3(cvr.positionX, cvr.positionY, cvr.positionZ), true); aNewVessel.vessel.SetRotation(new Quaternion(cvr.rotationX, cvr.rotationY, cvr.rotationZ, cvr.rotationW)); KSPClient ksCli = KSPClient.getClient(cvr.playerName); ksCli.addVessel(aNewVessel); } }