Ejemplo n.º 1
0
 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());
 }
Ejemplo n.º 2
0
        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);
            }
        }